root
|
b7ad7ef5dc
|
feat(demo): 25 footprints w/ 10 competition awards + real drawn certificate attachments, grade data aligned to gpa formula, seed.mjs reuses demo_seed command layer
|
2026-10-17 17:04:37 +08:00 |
|
root
|
48aa5dc07f
|
feat(admin): account deletion wipes all remote/local data (blobs+sqlite+changes), invites mark holder_gone; UI: invite \u5df2\u9500\u6237 badge + filter
|
2026-10-17 17:04:37 +08:00 |
|
root
|
3d2d064920
|
fix(assessment): academic year selector derived correct year from term (was breaking range filter)
|
2026-10-17 16:13:41 +08:00 |
|
root
|
595be0d928
|
fix: DEMO_RESUME declared before use
|
2026-10-17 16:08:55 +08:00 |
|
root
|
caa5cac7b7
|
test: demo seed now 18 footprints across two academic years
|
2026-10-17 16:05:34 +08:00 |
|
root
|
952a07fe6e
|
chore: remove stray python runtime from repo, keep scoring rules as docs reference
|
2026-10-17 15:41:04 +08:00 |
|
root
|
49d8400722
|
feat(assessment): auto comprehensive assessment - rules engine from college scoring standard, per-semester stats, manual overrides, word export
|
2026-10-17 15:40:07 +08:00 |
|
root
|
a0e2ded426
|
feat(grades): gpa formula system - linear per-band gp (start~top), course category weights (editable), formula display, seed aligned to school standard
|
2026-10-17 15:30:15 +08:00 |
|
root
|
f075f45b7c
|
test: move demo-rebuild assertion to end of phase A (reseed invalidates earlier fixture)
|
2026-10-17 15:11:50 +08:00 |
|
root
|
216d18c843
|
fix: lazy DATA_DIR in sync db (multi-instance safe), demo never admin, first real user auto-promoted
|
2026-10-17 14:59:23 +08:00 |
|
root
|
e5269a23ac
|
feat(resume): clear-all option in initialize dialog (structure kept, content emptied)
|
2026-10-17 14:44:03 +08:00 |
|
root
|
a0dc671006
|
feat(resume): initialize (reset to defaults with confirmation) and reload actions
|
2026-10-17 14:39:12 +08:00 |
|
root
|
5f3482538f
|
feat(resume): v3 flexibility - custom list sections, item reorder, info field visibility, header toggles, config io, migration persistence fix
|
2026-10-17 14:34:06 +08:00 |
|
root
|
40661aa685
|
feat: editable gpa formula via bands, resume edu format per template, dedupe sections, word photo size, text justify
|
2026-10-17 14:17:43 +08:00 |
|
root
|
b48c36fdb3
|
feat(admin): demo account rebuild button + user asset registry (photo keys cascade-deleted with user)
|
2026-10-17 13:59:18 +08:00 |
|
root
|
6a97590f90
|
fix(profile): photo upload no longer wipes saved info; mobile layout polish for profile and resume
|
2026-10-17 13:43:09 +08:00 |
|
root
|
78bfe188b6
|
fix(admin): cascade delete user tokens; test invite cleanup
|
2026-10-17 13:40:45 +08:00 |
|
root
|
5452611a63
|
feat(admin): user management - list + high-risk delete with full cascade (lsky, user db, attachments, auth)
|
2026-10-17 13:37:15 +08:00 |
|
root
|
68043d309e
|
feat: fictional demo persona (profile seed), word export mirrors preview layout, print scrollbar fix
|
2026-10-17 13:23:36 +08:00 |
|
root
|
603e39d2bd
|
feat(resume): editable dates (items + education), profile-field quick save, panel independent scroll
|
2026-10-17 13:15:13 +08:00 |
|
root
|
4f7978b129
|
feat(resume): education section from profile + click-to-edit inline editing + overrides
|
2026-10-17 13:01:54 +08:00 |
|
root
|
9d2e14b72a
|
fix(resume): remove shadowing local ResumeSectionCfg (use types.ts with edu kind)
|
2026-10-17 12:48:13 +08:00 |
|
root
|
f95efd481f
|
fix(resume): remove toast line from ListSectionEditor type
|
2026-10-17 12:31:33 +08:00 |
|
root
|
013c9fb929
|
feat: profile page + resume builder (section reorder/enable, word/pdf export)
|
2026-10-17 12:14:01 +08:00 |
|
root
|
500d59ba58
|
fix: profile_upsert payload binding
|
2026-10-17 12:05:56 +08:00 |
|
root
|
7331111379
|
fix(grades): semester card header wraps on mobile - badges and buttons no longer overflow card width
|
2026-10-17 11:58:37 +08:00 |
|
root
|
0905cebb02
|
ui(grades): mobile course cards + inline add/edit forms (table desktop-only), band row range-pill redesign
|
2026-10-17 11:55:24 +08:00 |
|
root
|
07b3a0490e
|
fix(mobile): timeline filter bar restructure (grid closes properly, responsive selects)
|
2026-10-17 11:42:23 +08:00 |
|
root
|
0eef3724bb
|
fix: rewrite RecordsPage - mobile card list no longer nested in hidden desktop container (was invisible on phones)
|
2026-10-17 11:38:07 +08:00 |
|
root
|
58db8652c8
|
ui: responsive proportions - implicit column overflow fixes, meta grid single-col on mobile, consistent page max-widths, admin rows wrap
|
2026-10-17 11:28:32 +08:00 |
|
root
|
5ad9e8db64
|
ui: uniform badge sizing across record rows + fixed-width right-aligned label column in detail meta grid
|
2026-10-17 11:25:49 +08:00 |
|
root
|
e0fcca75b1
|
ui: dialogs vertically centered (my-auto, no top-clipping), record title promoted as emphasized heading in detail
|
2026-10-17 11:18:25 +08:00 |
|
root
|
a0aa77dfda
|
feat: filename-aware attachment download endpoint (Content-Disposition), preview download uses it (no popup flash)
|
2026-10-17 11:07:00 +08:00 |
|
root
|
6d686c1d69
|
fix: attachment download - remote opens in new tab (sync, no CORS fetch), local downloads get toast feedback
|
2026-10-17 11:02:53 +08:00 |
|
root
|
cf4647f706
|
chore: remove dead code (lib/file.ts, unused attachmentAdd export)
|
2026-10-17 10:48:52 +08:00 |
|
root
|
74884ce73a
|
feat: custom types can bind a field layout (profile) - layout select in type editor, respected in record form
|
2026-10-17 10:45:04 +08:00 |
|
root
|
79dada4226
|
ui: type-aware editor form + detail reordered by importance
|
2026-10-17 10:39:01 +08:00 |
|
root
|
4a73fddd0c
|
ui: portal-based dropdown (no clipping in scroll containers, viewport-aware flip/clamp, close on scroll)
|
2026-10-17 10:18:42 +08:00 |
|
root
|
c39a4c80d5
|
feat: delete remote images from Lsky when record/attachment is deleted (keys stored at upload, legacy URLs resolved via pathname)
|
2026-10-17 10:10:19 +08:00 |
|
root
|
fdf383a832
|
fix: trim LSKY env values and strip accidental Bearer prefix
|
2026-10-17 10:02:35 +08:00 |
|
root
|
10fa64b5c8
|
test: fix raw upload assertions
|
2026-10-17 09:57:43 +08:00 |
|
root
|
f24088f359
|
fix: add sync-lsky to admin route gate (404 on migrate call)
|
2026-10-17 09:35:04 +08:00 |
|
root
|
102a55d010
|
fix: lsky gateway reads links.url + strategy_id support (COS strategy verified end-to-end: https cos url, public access ok)
|
2026-10-17 09:26:06 +08:00 |
|
root
|
785ef8fcc9
|
chore: untrack junk (%SystemDrive% caches, dbg env snapshot), restore ignore rules
|
2026-10-17 01:17:37 +08:00 |
|
root
|
2bba3be08e
|
feat: Lsky/COS gateway - attachments upload direct to object storage (remote_url/remote_thumb), preview loads from COS, graceful local fallback
|
2026-10-17 01:16:59 +08:00 |
|
root
|
a94c1f6e25
|
ui: mobile-first records card list, responsive filters/paddings across pages, grades table scroll guard
|
2026-10-16 23:52:58 +08:00 |
|
root
|
275a0313e1
|
perf+ui: gzip (api/static precompressed), immutable attachment cache, responsive dialogs/header, safe-area + dynamic theme-color, mobile tuning
|
2026-10-16 23:34:36 +08:00 |
|
root
|
3ba44aa2de
|
feat: unified in-app attachment preview (image/PDF/text/docx via mammoth/xlsx via SheetJS/audio/video) with lazy-loaded renderers
|
2026-10-16 23:23:08 +08:00 |
|
root
|
c25c39a0aa
|
test: adjust restart count after cascade delete
|
2026-10-16 23:15:02 +08:00 |
|
root
|
07f7cd51b2
|
feat: server-side attachment thumbnails (480px webp at upload) + session caches - detail grids no longer download full originals
|
2026-10-16 23:10:44 +08:00 |
|
root
|
76cee988c0
|
docs: fix project structure tree after workflow removal
|
2026-10-16 22:37:45 +08:00 |
|
root
|
afbcb7c55d
|
chore: remove Gitea Actions workflow (no runner; restore from history if ever needed)
|
2026-10-16 22:37:03 +08:00 |
|
root
|
cc32a3d362
|
chore: tidy repo - DESIGN.md & scoring rules into docs/, icon generators into tools/, drop one-off junk, refresh app README
ci / test (push) Canceled after 0s
|
2026-10-16 22:35:28 +08:00 |
|
root
|
f938870ac5
|
chore: remove CI badge until a runner is configured
ci / test (push) Canceled after 0s
|
2026-10-16 22:29:05 +08:00 |
|
root
|
d22f372989
|
ci: switch job container to 1ms mirror (daocloud 502)
ci / test (push) Canceled after 0s
|
2026-10-16 22:09:49 +08:00 |
|
root
|
6edea7c69f
|
ci: CN-friendly workflow (daocloud node24 container + npmmirror, no setup-node)
ci / test (push) Failing after 1s
|
2026-10-16 21:31:17 +08:00 |
|
root
|
0f92a3437d
|
docs: README + LICENSE + CONTRIBUTING + CHANGELOG + API reference + issue/PR templates + editorconfig
ci / test (push) Failing after 17m5s
|
2026-10-16 21:19:08 +08:00 |
|
root
|
9732942749
|
ci: pre-push hook + check suite + 35-assertion integration tests + deploy smoke script + Gitea Actions workflow
ci / test (push) Failing after 1m0s
|
2026-10-16 21:09:43 +08:00 |
|
root
|
4e342ee77c
|
fix: commit sw.js v3 source + invite_codes remark migration (both were missed by earlier pathspecs)
|
2026-10-16 20:03:22 +08:00 |
|
root
|
cc468027ca
|
fix: actually commit app/server/db.mjs with demo_seed + DEMO data (was never staged - root cause of 未知命令)
|
2026-10-16 20:02:57 +08:00 |
|
root
|
4b5ff5d840
|
fix: mount app/server as /app/app-server dir + smart loader (single-file shadow mount was unreliable)
|
2026-10-16 19:58:48 +08:00 |
|
root
|
c6087d49d7
|
feat: POST /admin/demo-seed — admin can trigger demo data seeding and see the raw error
|
2026-10-16 19:15:11 +08:00 |
|
root
|
a7de5e301a
|
fix: lazily seed demo data whenever demo user db first opens (self-heal if startup seeding failed)
|
2026-10-16 19:03:26 +08:00 |
|
root
|
1863e11a7a
|
feat: invite code full CRUD + demo account seeded with sample data + SW v3 (fix /auth/me cache poisoning)
|
2026-10-16 18:47:58 +08:00 |
|
root
|
4cb7ccbf15
|
fix: demo seed works with existing users (seed flag) + static INVITE_CODE registration path + mount backend src (zero-build updates)
|
2026-10-16 18:31:42 +08:00 |
|
root
|
03daa8acc4
|
build: tauri beforeBuildCommand builds frontend first (prevents stale embeds)
|
2026-10-16 18:23:01 +08:00 |
|
root
|
dd6b2ec030
|
deploy: rebuild cloud-first frontend into www + mount www volume (update via git pull, no docker build)
|
2026-10-16 18:20:06 +08:00 |
|
root
|
08d58b5df1
|
feat: 桌面安装包含演示账号种子
|
2026-10-16 18:00:18 +08:00 |
|
root
|
6129c42890
|
feat: 内置演示账号 demo/demo1234 + 登录页一键填充 + 服务器地址修复
|
2026-10-16 17:59:00 +08:00 |
|
root
|
08b1854169
|
fix: 登录持久化修复+缓存清零+跨浏览器一致性
|
2026-10-16 17:56:46 +08:00 |
|
root
|
13c3f19691
|
feat: 企业级设计系统 v3 — 高级侧边栏/排版/阴影/动效
|
2026-10-16 17:46:03 +08:00 |
|
root
|
aea94de9e5
|
feat: 云端优先架构 — 桌面/Web/PWA 全走服务器 API
|
2026-10-16 17:34:26 +08:00 |
|
root
|
629c7e4073
|
feat: 左下角账号区文案定稿为我的档案并同步 www
|
2026-10-16 16:09:17 +08:00 |
|
root
|
1156f97c66
|
feat: 登录持久化修复 + 左下角账号区 + 管理页面(管理员/邀请码)
|
2026-10-16 16:02:39 +08:00 |
|
root
|
1c78fa77a0
|
chore: 移除实体测试库文件
|
2026-10-16 15:49:42 +08:00 |
|
root
|
297da5b8d8
|
chore: 忽略 wire 与工厂化临时测试库
|
2026-10-16 15:48:16 +08:00 |
|
root
|
9d97384aaf
|
sync: 各端互通引擎就位 —— wire 应用/拉取(LWW+FK uuid 映射)接入 /sync/push|pull,桌面与网页同库
|
2026-10-16 15:46:51 +08:00 |
|
root
|
ae278379af
|
chore: 忽略 builtin 测试库与构建日志
|
2026-10-16 15:27:11 +08:00 |
|
root
|
dc520bfac0
|
feat: 管理员账号体系 + 动态邀请码管理; 各端内置数据固定 uuid 对齐
|
2026-10-16 15:24:49 +08:00 |
|
root
|
e0866aa690
|
chore: 忽略并移除工厂化测试数据库残留
|
2026-10-16 15:01:12 +08:00 |
|
root
|
547157aaa1
|
feat: Web 版上线 footpr.linyux.cn —— 登录页 + 按用户隔离的命令 API + 静态托管
|
2026-10-16 15:00:58 +08:00 |
|
root
|
99358b834a
|
build: 基础镜像支持 build-arg 切换镜像源(国内服务器拉取超时)
|
2026-10-16 14:14:29 +08:00 |
|
root
|
bc45ab14fa
|
chore: 清理误提交的测试数据库与系统缓存文件,补全忽略规则
|
2026-10-16 13:56:03 +08:00 |
|
root
|
42ca57abfd
|
feat: 足迹 Footprints 个人留痕系统
桌面应用(Tauri+React+SQLite):时间线/记录/学年学科成绩梯度/统计/类型与字段模板/附件内容寻址/详情视图/PWA
同步服务端(sync-server):多用户+邀请码/LWW推拉/seq游标/附件去重/Docker部署
多端同步地基:uuid v7/HLC混合逻辑时钟/软删除墓碑/sync_oplog,Node与Rust双端一致并通过自动化测试
|
2026-10-16 13:53:15 +08:00 |
|