earthjasonlin
|
24532a4fc0
|
feat(showcase): add temporary language switcher for visitors with cookie persistence
|
2026-07-07 09:57:20 +08:00 |
|
earthjasonlin
|
ca9b3cc8dc
|
refactor(i18n): move translations to JSON files under app/locales, dynamic language switch
|
2026-07-07 09:46:50 +08:00 |
|
earthjasonlin
|
5c1e89290d
|
feat(api): add public RESTful API with API key auth and documentation page
|
2026-07-07 09:22:11 +08:00 |
|
earthjasonlin
|
69a2ab3e7e
|
fix(postcards): remove card number format restriction and forced uppercase
|
2026-07-06 23:14:12 +08:00 |
|
earthjasonlin
|
4c9c6f6e05
|
feat(i18n): add English localization with per-user language preference and navbar toggle
|
2026-07-06 22:07:05 +08:00 |
|
earthjasonlin
|
da7ebe45ed
|
feat(postcards): add notes field to postcards with edit, detail, and truncated list display
|
2026-07-06 21:07:28 +08:00 |
|
earthjasonlin
|
1a6424ebce
|
feat(dashboard): split country stats into sent/received bar charts side by side
|
2026-07-06 20:41:39 +08:00 |
|
earthjasonlin
|
7620d453b7
|
feat(dashboard): add country distribution bar chart using Chart.js
|
2026-07-06 20:20:46 +08:00 |
|
earthjasonlin
|
e1e8199375
|
feat(postcards): auto-fill today date on status change, card_number always uppercase
|
2026-07-06 20:06:42 +08:00 |
|
earthjasonlin
|
189c3718df
|
feat(profiles): notes shown on postcards page, save stays on current page
|
2026-07-06 19:39:54 +08:00 |
|
earthjasonlin
|
2989837b7d
|
feat(profiles): add private notes field per profile, visible only to owner
|
2026-07-06 19:36:29 +08:00 |
|
earthjasonlin
|
48da00c8e7
|
feat(admin-invites): show registered usernames per invite code, track invited_by_code_id on User
|
2026-07-06 08:37:49 +08:00 |
|
earthjasonlin
|
46753a7c48
|
fix(admin-invites): left-align create card conditional fields, convert local datetime to UTC on save
|
2026-07-06 08:35:55 +08:00 |
|
earthjasonlin
|
202c1804af
|
fix(invites): register strftime Jinja2 filter, fix 500 error on admin invites page
|
2026-07-06 08:24:20 +08:00 |
|
earthjasonlin
|
623549009e
|
fix(admin-invites): display times in Asia/Shanghai (CST) instead of UTC
|
2026-07-06 08:20:14 +08:00 |
|
earthjasonlin
|
2c0725b242
|
feat(invite): add invite code registration system
|
2026-07-06 01:13:07 +08:00 |
|
earthjasonlin
|
d8378e0acc
|
feat(showcase): sort postcards by time descending
|
2026-07-06 00:27:39 +08:00 |
|
earthjasonlin
|
630772ae4b
|
feat(showcase): lightbox, checkbox per-card toggle, lazyload, fix toggle Y-align, remove navbar on public page
|
2026-07-06 00:24:03 +08:00 |
|
earthjasonlin
|
185b743e05
|
fix(settings): use Query alias for tab param, fix showcase tab persistence
|
2026-07-06 00:10:30 +08:00 |
|
earthjasonlin
|
d082a4b421
|
fix(showcase): tab stay, Y-center toggle, group postcards by sent/received, hide navbar on public page, remove profiles/xx/showcase
|
2026-07-06 00:05:15 +08:00 |
|
earthjasonlin
|
a69c6c10c9
|
refactor(ui): merge showcase settings into settings page tab, fix profile showcase GET route, fix layout
|
2026-07-05 23:56:28 +08:00 |
|
earthjasonlin
|
9f4f57b80a
|
feat(showcase): add public showcase page with per-profile/per-postcard visibility controls
|
2026-07-05 23:45:23 +08:00 |
|
earthjasonlin
|
82b2442a1c
|
feat(dashboard): mobile 2-col stats, add relative time to recent activity
|
2026-07-05 23:03:35 +08:00 |
|
earthjasonlin
|
95bcc42b13
|
feat(ui): redesign dashboard as global overview with stats, progress bar, recent activity
|
2026-07-05 22:32:16 +08:00 |
|
earthjasonlin
|
b50691e624
|
feat(ui): redesign profiles page with card layout showing postcard stats
|
2026-07-05 22:27:13 +08:00 |
|
earthjasonlin
|
b56c3bc6c5
|
fix: clear arrival_time and disable field when status is sent
|
2026-07-05 22:15:40 +08:00 |
|
earthjasonlin
|
000f39779c
|
feat(ui): redesign postcards list with tabs, row layout, country dropdown filter
|
2026-07-05 22:12:33 +08:00 |
|
earthjasonlin
|
f4b1c96148
|
fix(ui): username change no longer requires password confirmation
|
2026-07-05 22:03:59 +08:00 |
|
earthjasonlin
|
c0130afe12
|
feat: add user settings page (change username/password) and remove public registration
|
2026-07-05 22:01:24 +08:00 |
|
earthjasonlin
|
fae5a05be1
|
feat(ui): add mark-delivered button on sent postcards with auto today date
|
2026-07-05 21:45:32 +08:00 |
|
earthjasonlin
|
146e424d6c
|
feat(ui): show country flag emoji next to country codes
|
2026-07-05 21:40:46 +08:00 |
|
earthjasonlin
|
b975227458
|
feat(auth): add remember me option with persistent DB sessions
|
2026-07-05 21:28:58 +08:00 |
|
earthjasonlin
|
83cea694a1
|
feat: always display country code in uppercase (model validates + oninput)
|
2026-07-05 21:22:57 +08:00 |
|
earthjasonlin
|
66451fe05a
|
feat(ui): rich dashboard cards with countries and recent postcards
|
2026-07-05 19:22:10 +08:00 |
|
earthjasonlin
|
5121fb1f8f
|
feat: add profile rename, all postcard fields required
|
2026-07-05 19:00:25 +08:00 |
|
earthjasonlin
|
2faa8d6012
|
fix(ui): shrink badges, card_number format XX-1234567, date-only fields
|
2026-07-05 16:26:22 +08:00 |
|
earthjasonlin
|
a03965796f
|
feat: initial postcard manager - FastAPI + Jinja2 + SQLite
|
2026-07-05 16:06:03 +08:00 |
|