ba448946c9
fix(assessment): clickable rules panel at top, print-layout word doc polish
root2026-10-17 17:48:04 +08:00
11cfeeb3a6
feat(assessment): unified GPA source, full evidence gallery, editable scoring rules, 3x3 info with phone
root2026-10-17 17:33:49 +08:00
c72474d123
test: integration asserts match new demo dataset (25 footprints / 10 awards)
root2026-10-17 17:05:52 +08:00
d534cae0e1
feat(admin): delete user wipes all remote/local data (blobs + sqlite + changes), invite holder_gone mark
root2026-10-17 17:04:38 +08:00
265edc9009
refactor(admin): drop duplicate users card, full-width panels, demo rebuild copy matches new dataset
root2026-10-17 17:04:38 +08:00
0fdba1944e
feat(assessment): evidence image gallery with lightbox, word export redesigned (A4/tables/annex grid), normGrade maps gold/silver/bronze medals
root2026-10-17 17:04:38 +08:00
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
root2026-10-17 17:04:37 +08:00
48aa5dc07f
feat(admin): account deletion wipes all remote/local data (blobs+sqlite+changes), invites mark holder_gone; UI: invite \u5df2\u9500\u6237 badge + filter
root2026-10-17 17:04:37 +08:00
3d2d064920
fix(assessment): academic year selector derived correct year from term (was breaking range filter)
root2026-10-17 16:13:41 +08:00
595be0d928
fix: DEMO_RESUME declared before use
root2026-10-17 16:08:55 +08:00
caa5cac7b7
test: demo seed now 18 footprints across two academic years
root2026-10-17 16:05:34 +08:00
952a07fe6e
chore: remove stray python runtime from repo, keep scoring rules as docs reference
root2026-10-17 15:41:04 +08:00
49d8400722
feat(assessment): auto comprehensive assessment - rules engine from college scoring standard, per-semester stats, manual overrides, word export
root2026-10-17 15:40:07 +08:00
a0e2ded426
feat(grades): gpa formula system - linear per-band gp (start~top), course category weights (editable), formula display, seed aligned to school standard
root2026-10-17 15:30:15 +08:00
f075f45b7c
test: move demo-rebuild assertion to end of phase A (reseed invalidates earlier fixture)
root2026-10-17 15:11:50 +08:00
216d18c843
fix: lazy DATA_DIR in sync db (multi-instance safe), demo never admin, first real user auto-promoted
root2026-10-17 14:59:23 +08:00
a0dc671006
feat(resume): initialize (reset to defaults with confirmation) and reload actions
root2026-10-17 14:39:12 +08:00
5f3482538f
feat(resume): v3 flexibility - custom list sections, item reorder, info field visibility, header toggles, config io, migration persistence fix
root2026-10-17 14:34:06 +08:00
40661aa685
feat: editable gpa formula via bands, resume edu format per template, dedupe sections, word photo size, text justify
root2026-10-17 14:17:43 +08:00
b48c36fdb3
feat(admin): demo account rebuild button + user asset registry (photo keys cascade-deleted with user)
root2026-10-17 13:59:18 +08:00
6a97590f90
fix(profile): photo upload no longer wipes saved info; mobile layout polish for profile and resume
root2026-10-17 13:43:09 +08:00
78bfe188b6
fix(admin): cascade delete user tokens; test invite cleanup
root2026-10-17 13:40:45 +08:00
5452611a63
feat(admin): user management - list + high-risk delete with full cascade (lsky, user db, attachments, auth)
root2026-10-17 13:37:15 +08:00
68043d309e
feat: fictional demo persona (profile seed), word export mirrors preview layout, print scrollbar fix
root2026-10-17 13:23:36 +08:00
0eef3724bb
fix: rewrite RecordsPage - mobile card list no longer nested in hidden desktop container (was invisible on phones)
root2026-10-17 11:38:07 +08:00
5ad9e8db64
ui: uniform badge sizing across record rows + fixed-width right-aligned label column in detail meta grid
root2026-10-17 11:25:49 +08:00
e0fcca75b1
ui: dialogs vertically centered (my-auto, no top-clipping), record title promoted as emphasized heading in detail
root2026-10-17 11:18:25 +08:00
a0aa77dfda
feat: filename-aware attachment download endpoint (Content-Disposition), preview download uses it (no popup flash)
root2026-10-17 11:07:00 +08:00
6d686c1d69
fix: attachment download - remote opens in new tab (sync, no CORS fetch), local downloads get toast feedback
root2026-10-17 11:02:53 +08:00
74884ce73a
feat: custom types can bind a field layout (profile) - layout select in type editor, respected in record form
root2026-10-17 10:45:04 +08:00
79dada4226
ui: type-aware editor form + detail reordered by importance
root2026-10-17 10:39:01 +08:00
4a73fddd0c
ui: portal-based dropdown (no clipping in scroll containers, viewport-aware flip/clamp, close on scroll)
root2026-10-17 10:18:42 +08:00
c39a4c80d5
feat: delete remote images from Lsky when record/attachment is deleted (keys stored at upload, legacy URLs resolved via pathname)
root2026-10-17 10:10:19 +08:00
fdf383a832
fix: trim LSKY env values and strip accidental Bearer prefix
root2026-10-17 10:02:35 +08:00
10fa64b5c8
test: fix raw upload assertions
root2026-10-17 09:57:43 +08:00
f24088f359
fix: add sync-lsky to admin route gate (404 on migrate call)
root2026-10-17 09:35:04 +08:00
102a55d010
fix: lsky gateway reads links.url + strategy_id support (COS strategy verified end-to-end: https cos url, public access ok)
root2026-10-17 09:26:06 +08:00