白
|
dc271ff9f3
|
Merge branch 'maoyuanyang-main'
# Conflicts:
# hub/filelib-web/src/lib/GrantsPanel.svelte
# hub/filelib-web/src/lib/OverviewPanel.svelte
# hub/filelib-web/src/lib/types.ts
# hub/src/database/filelib/grantService.ts
|
2026-08-03 15:35:44 +08:00 |
|
ymy
|
3cfbe55070
|
Merge branch 'chore/sidebar-240'
|
2026-07-31 15:06:09 +08:00 |
|
ymy
|
53ef364af2
|
chore(filelib-web): 老师端左栏宽度对齐管理员后台(240px)
|
2026-07-31 15:06:08 +08:00 |
|
ymy
|
94dba4e672
|
Merge branch 'chore/sidebar-wider'
|
2026-07-31 15:03:00 +08:00 |
|
ymy
|
06aa6f0dfb
|
chore(filelib-web): 左栏加宽168->200px,标题与菜单间加横线
|
2026-07-31 15:02:59 +08:00 |
|
ymy
|
4fc72541be
|
Merge branch 'chore/app-sidebar-layout'
|
2026-07-31 14:57:01 +08:00 |
|
ymy
|
672f05c66a
|
chore(filelib-web): 左栏加「教研数据库」标题,用户身份+退出移至栏底,顶栏去掉身份区
|
2026-07-31 14:57:01 +08:00 |
|
ymy
|
e173aa18e0
|
Merge branch 'chore/grid-icon-size'
|
2026-07-31 14:51:56 +08:00 |
|
ymy
|
e9cecbf071
|
chore(filelib-web): 放大网格图标(文件夹54->72/项目50->66/文件46->60),列宽118->132
|
2026-07-31 14:51:55 +08:00 |
|
ymy
|
55f29523a0
|
Merge branch 'fix/restore-no-suffix'
|
2026-07-31 14:28:35 +08:00 |
|
ymy
|
d9cde19bdf
|
fix(filelib): 恢复保留原名,撞名报清晰错误而非自动加后缀(ADR-0035,supersede ADR-0033)
恢复不再改名;同名兄弟占位时抛 409 name_conflict_on_restore + 人话提示,
操作者自行重命名现有节点或彻底删除旧节点后再恢复。
|
2026-07-31 14:28:34 +08:00 |
|
ymy
|
a463ab48e6
|
Merge branch 'fix/grid-card-contextmenu'
|
2026-07-31 14:16:21 +08:00 |
|
ymy
|
d39ebed62e
|
fix(filelib-web): 卡片右键补 stopPropagation,不再被背景菜单覆盖(导致看不到删除等节点操作)
|
2026-07-31 14:16:20 +08:00 |
|
ymy
|
270275c367
|
Merge branch 'chore/detail-delete-button'
|
2026-07-31 14:11:27 +08:00 |
|
ymy
|
09338f355a
|
chore(filelib-web): 详情弹窗加删除按钮(MANAGE 专属,进回收站可恢复),删除入口不再只在右键菜单
|
2026-07-31 14:11:26 +08:00 |
|
ymy
|
8bc5dbf9e2
|
Merge branch 'feat/purge-follows-manage'
|
2026-07-31 14:01:47 +08:00 |
|
ymy
|
beaa92de2e
|
feat(filelib): 彻底删除改与条目可见性同权(ADR-0034,supersede ADR-0031 仅管理员条款)
能删进回收站(MANAGE)的人就能清空;无关者 404(D8)。二次确认与
node.purge 审计不变;BinView 彻底删除按钮对全部可见条目开放。
|
2026-07-31 14:01:46 +08:00 |
|
ymy
|
b1fd2e8f7b
|
Merge branch 'fix/bin-restore-dedup'
|
2026-07-31 13:52:24 +08:00 |
|
ymy
|
9e38d1e011
|
fix(filelib): 恢复撞名不再死锁,自动改名「(已恢复)」(ADR-0033)
- restore 前查活跃兄弟:撞名则恢复为「原名(已恢复[/ N])」(截断计入
128 长度预算),同事务落审计并记 renamedFrom;API 返回最终名
- BinView toast 提示改名;测试补撞名/二次恢复用例
|
2026-07-31 13:52:23 +08:00 |
|
ymy
|
f99c8ea4d8
|
Merge branch 'chore/remove-recent-module'
|
2026-07-31 13:39:19 +08:00 |
|
ymy
|
83a6b012b7
|
feat(filelib): 移除最近打开模块(ADR-0032,supersede ADR-0031 对应半部)
- FileLibRecentVisit 删表(手写迁移;表当日新建无生产数据)
- recentService/recentRoutes/RecentView 删除;GridLibraryView 埋点与
navTarget 跳转一并移除;types 清 RecentEntry
- 左栏保留 文件库/回收站(ADR-0031 回收站半部不受影响)
- breadcrumb 的 role 字段保留(独立可用的增量字段)
|
2026-07-31 13:39:18 +08:00 |
|
ymy
|
475b397ca8
|
Merge branch 'feat/filelib-nav-rail'
|
2026-07-31 13:27:04 +08:00 |
|
ymy
|
d072e9ec1e
|
feat(filelib): 老师端左栏导航:回收站 + 最近打开(ADR-0031)
- 回收站:listBin(祖先全活跃的已删顶点;管理员/直连 MANAGE 可见)、
restore(与 D15 对称只清本节点,落审计)、purge(仅管理员,pathIds 枚举
子树按深度降序分批硬删,绕过 self-FK RESTRICT)
- 最近打开:FileLibRecentVisit 表(filePath='' 兜底 PG 唯一索引),客户端
成功打开后上报(VIEW 门禁,upsert 刷新),列表 20 条,D8/D15 可见性过滤
- 前端:/app 左栏(文件库/最近打开/回收站);RecentView/BinView;
GridLibraryView 埋点 + navTarget 跳转(breadcrumb 建栈,role 已捎带)
- 测试:filelib-nav 集成 4 例;全套 79 例绿
|
2026-07-31 13:27:04 +08:00 |
|
ymy
|
04fa383286
|
Merge branch 'feat/filelib-grid-browser'
|
2026-07-31 12:02:24 +08:00 |
|
ymy
|
0fd21e51f7
|
feat(filelib-web): 老师端文件库改网盘式网格浏览(下钻导航+右键菜单)
- 新 GridLibraryView:双击下钻文件夹/项目,面包屑+返回跳级,项目内文件同网格,
双击进 FileEditor 预览;工具条按上下文出新建文件夹/项目/文件
- 右键菜单(ContextMenu):打开/新建子文件夹/重命名/授权管理/详情/删除,
按节点 role 动态显隐;文件菜单:打开预览/下载/删除;空白处右键出新建+刷新
- GridCard 大图标卡片(琥珀文件夹/立方体项目/文档文件);授权与详情复用
GrantsPanel/OverviewPanel(Modal 加 maxW prop);Icon 补 5 个图标
- 管理后台 /database 保留树状 LibraryView 不动;后端零改动
|
2026-07-31 12:02:23 +08:00 |
|
ymy
|
ab5e03823c
|
chore: 误提交 .omo 会话文件,移出跟踪
|
2026-07-30 22:32:07 +08:00 |
|
ymy
|
02b46e2dcf
|
Merge branch 'feat/filelib-always-independent'
|
2026-07-30 22:32:07 +08:00 |
|
ymy
|
834f4c380c
|
chore: 误提交 .omo 会话文件,移出跟踪并加入 .gitignore
|
2026-07-30 22:31:08 +08:00 |
|
ymy
|
4c68c7db0b
|
Merge branch 'feat/filelib-always-independent'
|
2026-07-30 22:27:46 +08:00 |
|
ymy
|
39a2be6347
|
feat(filelib): 项目级授权恒生效,移除独立权限开关(ADR-0030)
- permission.ts: effectiveRole 删除 D11 冻结分支,输入不再含开关字段
- treeService: 停止读 FileLibProjectSettings;建项目不再写默认行
- grantService/routes: 删 setIndependentPermission 与 PUT 路由;节点详情 DTO 去掉 independentPermission
- filelib-web: 概览 tab 移除开关;NodeDetail 类型同步
- 测试: 单测/集成改为断言恒生效语义;ADR-0030 废除契约 D11/P5
- FileLibProjectSettings 表保留(存量行忽略,不再读写),审计词表保留历史读取
|
2026-07-30 22:27:45 +08:00 |
|
白
|
87bbf0bd57
|
feat(filelib-web): 刷新页面时保持树展开、选中节点、tab 与文件夹位置
|
2026-07-27 21:27:09 +08:00 |
|
白
|
8eda04f1d9
|
fix(filelib-web): 文件内容无变化时不提交 commit
|
2026-07-27 21:21:15 +08:00 |
|
白
|
1dab83f9db
|
feat(filelib): 项目新增修改历史 tab 并隐藏 version hash id
|
2026-07-27 21:19:59 +08:00 |
|
白
|
8c26c42e0c
|
feat(filelib-web): 编辑器增加 Typst 语法高亮支持
|
2026-07-27 21:02:02 +08:00 |
|
白
|
fe38d0b8a9
|
feat(filelib-web): 文件编辑改为模态框并集成 CodeMirror 语法高亮
|
2026-07-27 20:53:16 +08:00 |
|
白
|
e194670d74
|
feat(filelib-web): 文件面板支持资源管理器式文件夹导航与图标视图切换
|
2026-07-27 20:48:23 +08:00 |
|
白
|
3b544d99f4
|
feat(filelib): 导出改为下载 cph 编译的真实 PDF
|
2026-07-27 20:25:29 +08:00 |
|
ymy
|
c72f8c7050
|
Merge branch 'chore/grants-panel-wider'
|
2026-07-27 17:00:42 +08:00 |
|
ymy
|
947f969967
|
chore(filelib-web): 详情容器加宽到 1400px,宽屏下授权表格全列无遮挡;仅文件预览挤压时出横向滚动条
|
2026-07-27 17:00:41 +08:00 |
|
ymy
|
60856d7cc1
|
Merge branch 'chore/grants-table-overflow'
|
2026-07-27 16:54:07 +08:00 |
|
ymy
|
2e08c0a734
|
chore(filelib-web): 授权表格外套横向滚动容器,修删除列贴边与文件预览打开时表格挤压
|
2026-07-27 16:54:07 +08:00 |
|
ymy
|
2225c6d43b
|
Merge branch 'chore/grants-table-width'
|
2026-07-27 16:47:05 +08:00 |
|
ymy
|
fc908eaf3b
|
chore(filelib-web): 拉宽授权表格:容器 880→1120px,单元格留白/禁换行,长 id 截断+悬停全文
|
2026-07-27 16:47:05 +08:00 |
|
ymy
|
2395671693
|
Merge branch 'chore/grant-id-columns'
|
2026-07-27 16:40:26 +08:00 |
|
ymy
|
cc4d9d907c
|
chore(filelib-web): 授权成员单元格只留头像+名称,userId 与飞书 ID 拆为独立两列
GrantDto 增加 principalOpenId(USER 主体的 feishuOpenId),GROUP 行两列显示 —;
搜索过滤同步覆盖 openId。
|
2026-07-27 16:40:25 +08:00 |
|
ymy
|
ef02428bb6
|
Merge branch 'chore/grant-avatar'
|
2026-07-27 16:22:03 +08:00 |
|
ymy
|
ad1a464f22
|
chore(filelib-web): 授权成员单元格改用首字母圆形头像(复用 Avatar 组件)
|
2026-07-27 16:22:01 +08:00 |
|
ymy
|
2dfe72cd5e
|
Merge branch 'chore/grant-modal-copy'
|
2026-07-27 16:16:17 +08:00 |
|
ymy
|
12a1246a7a
|
chore(filelib-web): 移除添加授权弹窗底部的 8.1 规则提示语
|
2026-07-27 16:16:16 +08:00 |
|
白
|
ce5fbfb9a6
|
fix(filelib): 上传上限抬到 50MiB,并把它与 body limit 的串联写清
7.8MB 文件上传报 413:那是 Fastify 在 body 解析阶段拒的,不是
HUB_FILELIB_MAX_FILE_BYTES。上传把内容放在 JSON body 里、二进制过 base64
体积涨 4/3,所以有效上限是 min(该值, HUB_HTTP_BODY_LIMIT_BYTES × 3/4)。
原先 body limit 是 1MiB,10MiB 的文件上限根本不可达。
.env.example:body limit 1MiB → 70MiB,新增 HUB_FILELIB_MAX_FILE_BYTES=50MiB。
注意 body limit 同时是 ADR-0022 requestBodySize 维度的平台 ceiling,抬高它
对所有端点生效。
resolveMaxFileBytes 拆成 parseMaxFileBytes(纯解析)+ resolveMaxFileBytes(读
env):原先带默认参数,显式传 undefined 会回落到读 env,"没传值"与"读环境变量"
分不开,vitest 加载 .env 后测试会读到真实配置。
|
2026-07-27 16:14:50 +08:00 |
|