Commit Graph
100 Commits
Author SHA1 Message Date
earthjasonlin ca9b3cc8dc refactor(i18n): move translations to JSON files under app/locales, dynamic language switch 2026-07-07 09:46:50 +08:00
earthjasonlin 969d8a1b18 fix(api-docs): replace all hardcoded Chinese with i18n translation keys for English support 2026-07-07 09:33:01 +08:00
earthjasonlin 504eef819e fix(api-docs): remove inline-block override on settings link button for proper text centering 2026-07-07 09:28:58 +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 7e99ce9f08 feat(i18n): add English localization with per-user language preference 2026-07-06 22:41:09 +08:00
earthjasonlin 261d53b91f fix(dashboard): extract labels/data from tuple list for Chart.js 2026-07-06 22:13:46 +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 e178b93d69 fix(detail): prevent dt labels from wrapping, allow dd values to wrap 2026-07-06 21:13:37 +08:00
earthjasonlin 4cd2a2c38c fix(postcards): move notes to right side before action buttons in list, use dl grid format in detail page 2026-07-06 21:13:01 +08:00
earthjasonlin e875e90161 style: set CJK+English fonts, reduce base font size to 14px, lighten text colors 2026-07-06 21:10:59 +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 b3f1d07b7c revert(dashboard): restore Chart.js bar chart for country distribution 2026-07-06 20:35:43 +08:00
earthjasonlin 18da45240a feat(dashboard): replace Chart.js with pure HTML/CSS bar chart, flags render correctly 2026-07-06 20:34:52 +08:00
earthjasonlin 7620d453b7 feat(dashboard): add country distribution bar chart using Chart.js 2026-07-06 20:20:46 +08:00
earthjasonlin 0f01cc263d feat: auto-trim whitespace from text inputs on form submit globally 2026-07-06 20:10:54 +08:00
earthjasonlin 47a9c6a7ad fix(postcards): auto-fill today date on page load for new postcards 2026-07-06 20:09:28 +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 a62eb4cc58 fix(profiles): remove duplicate border, center-align textarea/button; notes read-only on postcards page 2026-07-06 19:41:21 +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 a19f6ccac9 chore: startup scripts one-click launch uvicorn server 2026-07-06 19:31:55 +08:00
earthjasonlin 58386e836a fix(admin-invites): badge default bg color, registered users as plain text list 2026-07-06 08:43:07 +08:00
earthjasonlin c6b5b68f25 chore: remove test_error.py 2026-07-06 08:39:38 +08:00
earthjasonlin ef06cd29dc fix(models): resolve ambiguous foreign keys between User and InviteCode 2026-07-06 08:39:33 +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 5fdd0d5ed2 fix(admin-invites): align create card conditional fields styling with edit card 2026-07-06 08:33:56 +08:00
earthjasonlin 5ba89eee4f fix(admin-invites): create form conditional fields inline with nowrap labels, match input styling 2026-07-06 08:32:36 +08:00
earthjasonlin 028a4d3a05 fix(admin-invites): create form label margin-top:0, edit form inline conditional fields 2026-07-06 08:27:34 +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 a34b46b4b1 fix(admin-invites): create card uses form-card style, align save/delete with select via align-self flex-end 2026-07-06 08:21:54 +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 7481af6e4d fix(admin-invites): add margin-top to create button, align save/delete buttons bottom with select via invisible label 2026-07-06 08:18:51 +08:00
earthjasonlin e710ce020e fix(admin-invites): increase create form gap, align edit buttons bottom with select 2026-07-06 08:17:00 +08:00
earthjasonlin 65a7c38ca5 fix(admin-invites): unify button height/size, fit-content width for create button 2026-07-06 08:15:08 +08:00
earthjasonlin 2e0f15def2 fix(admin-invites): left-align all fields on mobile 2026-07-06 08:13:42 +08:00
earthjasonlin 9fbe5ce85f fix(admin-invites): left-align create button 2026-07-06 08:12:57 +08:00
earthjasonlin e77319da50 fix(admin-invites): stack create form fields vertically, unify row height and spacing 2026-07-06 08:12:25 +08:00
earthjasonlin 3287dae370 fix(admin-invites): unify form field styles, fix mobile layout for create and edit forms 2026-07-06 08:10:36 +08:00
earthjasonlin 2c0725b242 feat(invite): add invite code registration system 2026-07-06 01:13:07 +08:00
earthjasonlin a769ce7546 chore: rename app to 星笺 (Mailova) 2026-07-06 00:41:24 +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 2f770a3185 feat(models): add showcase fields to User, Profile, Postcard 2026-07-05 23:35:45 +08:00
earthjasonlin 8df3b30f55 fix(auth): set session expires_at to non-nullable with 1 year max 2026-07-05 23:21:54 +08:00
earthjasonlin 606662f022 feat(ui): move detail page badge next to card number title 2026-07-05 23:16:11 +08:00
earthjasonlin 16b6e1cb75 fix(ui): shorten mark-delivered button text to 已送达 2026-07-05 23:15:38 +08:00
earthjasonlin ab4df2d14c fix(ui): improve detail page mobile layout - smaller title, compact back button, action buttons in one row 2026-07-05 23:15:10 +08:00
earthjasonlin 4597e739a5 fix(ui): remove duplicate back link from detail page, keep top-left back button 2026-07-05 23:12:59 +08:00
earthjasonlin 7380ed2de4 feat(ui): add back button left of card number on detail page 2026-07-05 23:11:05 +08:00
earthjasonlin 97ab5deafe fix(ui): vertically center all badges 2026-07-05 23:09:47 +08:00
earthjasonlin 078d09bfbf feat(ui): stack country and recipient/sender vertically in postcard list 2026-07-05 23:07:41 +08:00
earthjasonlin 370df969f8 feat(ui): show arrival date below send date for delivered postcards 2026-07-05 23:06:56 +08:00
earthjasonlin dde441ac2f feat(ui): show send/receive date in postcard list 2026-07-05 23:06:18 +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 f310a30d33 i18n: change all page titles and nav text to Chinese 2026-07-05 22:40:49 +08:00
earthjasonlin 4fa72aabf8 fix(ui): improve dashboard and global mobile responsiveness 2026-07-05 22:34:25 +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 ee8d9fa528 fix(ui): add missing id to profile nickname for rename toggle 2026-07-05 22:28:49 +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 98bcb4c306 fix(ui): align settings cards with heading, full width in container 2026-07-05 22:07:36 +08:00
earthjasonlin 2bba519c8a fix(ui): wider settings cards with more padding 2026-07-05 22:06:46 +08:00
earthjasonlin ec6cf30e94 fix(ui): center settings cards to fix uneven left-right spacing 2026-07-05 22:05:14 +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 a46d9621be fix(ui): explicitly set text color on .btn to prevent white text on mobile 2026-07-05 21:11:14 +08:00
earthjasonlin 59865a9007 fix(ui): stack upload form vertically on mobile to prevent button text cutoff 2026-07-05 21:09:11 +08:00
earthjasonlin b5a89c2683 fix(ui): upload button text cut off on mobile, use flex shrink for file input 2026-07-05 21:08:10 +08:00
earthjasonlin 8aad025a74 fix(ui): toggle required on hidden fields to prevent browser validation error 2026-07-05 20:21:57 +08:00
earthjasonlin e9e0533f5d feat(ui): arrival time only required when status is delivered, not sent 2026-07-05 20:19:47 +08:00
earthjasonlin 8b2d6c98a3 fix(ui): toggle required attr on hidden fields when switching postcard status 2026-07-05 20:12:13 +08:00
earthjasonlin 2cfdee180d fix(ui): remove required from date inputs to unblock form submit 2026-07-05 20:11:04 +08:00
earthjasonlin 2f220906b5 fix(ui): remove overly strict pattern validation on postcard form 2026-07-05 19:35:55 +08:00
earthjasonlin ea326d90c6 fix(ui): increase spacing between welcome heading and cards 2026-07-05 19:23:53 +08:00
earthjasonlin 66451fe05a feat(ui): rich dashboard cards with countries and recent postcards 2026-07-05 19:22:10 +08:00
earthjasonlin 6822de37c2 feat(ui): polished dashboard profile cards, remove manage button 2026-07-05 19:12:27 +08:00
earthjasonlin eac6f2f095 fix(ui): unify btn line-height for a and button elements 2026-07-05 19:10:32 +08:00
earthjasonlin 5b9e50fcb7 fix(ui): unify btn height a vs button, use --reload for dev server 2026-07-05 19:09:01 +08:00
earthjasonlin 9ba4ab1021 feat: inline rename for profiles, dashboard stats grid UI 2026-07-05 19:03:48 +08:00
earthjasonlin 5121fb1f8f feat: add profile rename, all postcard fields required 2026-07-05 19:00:25 +08:00
earthjasonlin 2054d13825 fix(ui): badge no longer stretches in flex container 2026-07-05 18:55:18 +08:00
earthjasonlin bea6be20b0 fix(ui): remove extra margin on form submit button, align save/cancel 2026-07-05 18:53:39 +08:00
earthjasonlin 22d16174a5 fix(ui): align form-action buttons vertically 2026-07-05 18:51:09 +08:00
earthjasonlin 2ebec81137 fix(ui): form-actions button alignment, cancel no longer wraps 2026-07-05 18:48:39 +08:00
earthjasonlin bd500db365 fix(ui): restore auth form button spacing 2026-07-05 18:45:52 +08:00
earthjasonlin 53c8d6cf01 fix(ui): badge sizing, button alignment, country XX format, date-only fields 2026-07-05 16:37:36 +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 a4cd3fb66d fix(ui): fix button text wrapping, upload layout, and image placeholders 2026-07-05 16:23:31 +08:00