Mohan
f14003e1d0
fix(header): icon-only nav links and SVG brand
1 month ago
Mohan
763f1a1285
fix(component): pagination chevron icons
1 month ago
Mohan
c7a0fae0a5
fix(page): article meta on two lines, chat icon button
1 month ago
Mohan
7af79287f6
fix(page): keep search bar within viewport on mobile
1 month ago
Mohan
9508d96b4b
fix(page): show tag cloud above articles on mobile
1 month ago
Mohan
98533fe072
fix(style): responsive home layout and admin tables
1 month ago
Mohan
db72047447
fix(style): responsive header and admin sidebar
1 month ago
Mohan
b42d735870
feat(component): add SongScrim and message toast
1 month ago
Mohan
feab37f25c
feat(component): add SongLoading and SongSeal
1 month ago
Mohan
8e084a6f95
fix(theme): sync SongUI tokens and brighten dark
1 month ago
Mohan
0675efaeeb
fix(component): theme-aware comment divider color
1 month ago
Mohan
f945ad701f
docs: update README to match current project state
1 month ago
Mohan
3230aa4991
chore: remove obsolete checklist and prompt files
1 month ago
Mohan
7b16b89e72
feat(contract): bump openapi to v0.3.1 with comment endpoints
1 month ago
Mohan
7e8a713a89
fix(editor): load article by id for editing drafts
Use admin GET /api/admin/articles/{id} instead of public slug detail,
which only returns PUBLISHED articles, so drafts (and Chinese-title
articles with empty slugs) loaded blank in the editor.
1 month ago
Mohan
8d6fbaf059
chore(config): change dev proxy target port to 9480
1 month ago
Mohan
418a354a0d
feat(editor): add auto-save with 60s countdown and offline detection
- 60s countdown timer, auto-save every 60s
- Offline detection: pause countdown, show red warning
- Auto-save: edit mode via PUT, create mode via localStorage draft
- beforeunload + onBeforeRouteLeave double protection for unsaved changes
- Draft restore from localStorage on new article mount
1 month ago
Mohan
c4ddc961bb
fix(tag): fix URL encoding for CJK and mixed tags in tag cloud
SearchView.vue goTag: tag.slug || tag.name fallback (TagCloud.vue already fixed)
1 month ago
Mohan
425b7e3055
fix(tag): fallback to tag.name when slug is empty
1 month ago
Mohan
bb19a3ea05
fix(render): quill html articles bypass marked, fix dark code block, fix image path
- markdown.ts: renderArticle() with starts-with-< detection, Quill HTML → DOMPurify direct, old Markdown → marked
- ArticleDetailView: use useTheme to toggle markdown-body-dark class, renderArticle() replaces renderMarkdown
- markdown-override.css (new): dark mode code blocks (#151b23 bg), Quill .ql-code-block-container styling
- QuillEditor.vue: normalize image URL (prepend / if no scheme/leading slash)
1 month ago
Mohan
5eea29d043
fix(theme): wrap useTheme return with reactive() so toggle text updates immediately
useTheme returned a plain object, so template access to theme.isDark didn't track reactive dependencies. wrapping with reactive() ensures ref auto-unwrapping and proper change detection.
1 month ago
Mohan
f9e99d5faa
fix(theme): use '昼' instead of '日', improve disabled text contrast
- App.vue: change toggle label from '日' to '昼' (proper pairing with '夜')
- song-theme.css: light mode --song-text-disabled #9aa7ad → #7e8f98 for better visibility
1 month ago
Mohan
6bd1954a96
fix(ux): move page title next to brand, fix dark mode editor borders and icons
- App.vue: remove margin-right:auto from brand, add margin-left:auto to nav-links so page title sits right after Mach-CMS
- QuillEditor: use --ac-border (subtle) instead of --ac-border-strong; dark mode borders at 0.08 opacity
- QuillEditor: fix toolbar icon SVG stroke/fill colors to use theme vars instead of Quill default #444
1 month ago
Mohan
2379d220ce
fix(ux): improve comment spacing, merge admin titlebar into global header, fix dark mode editor
- CommentSection: add padding-top 8px to comment-item for spacing between author/time and top
- AdminLayout: remove sticky topbar (now merged into global App.vue header), clean up unused code
- App.vue: show page title for all routes with × separator after brand name, remove admin-route filter
- QuillEditor: use --ac-border-strong for toolbar/container borders, add toolbar button colors for dark mode
- ArticleEditorView: use --ac-border-strong for all borders, btn-cancel now light red with danger colors
1 month ago
Mohan
6210e03bd3
fix(layout): remove duplicate h1 page titles from admin views
- CommentReviewView, TagListView, UserListView: remove h1 titles now shown in sticky topbar
1 month ago
Mohan
2cab3995e4
fix(ui): improve admin layout, comment section, article list, and article detail
- CommentSection: auto-fill username/email when logged in, readonly fields, dashed dividers
- SongInput: add disabled/readonly props with visual styling
- AdminLayout: restore sticky topbar with page title, remove sidebar title/foot, full-height sidebar
- App.vue: sticky header, page title, wave decoration, fix dark mode toggle label (日/夜)
- ArticleListView: adjust column widths (status 80px, actions 160px), replace text buttons with SVG icons
- ArticleDetailView: import github-markdown-css, use markdown-body class, DOMPurify for HTML, Noto Serif SC headings
1 month ago
Mohan
abeb140e43
feat(editor): replace textarea with Quill.js WYSIWYG editor
- Install quill + @types/quill dependencies
- Add QuillEditor.vue component with snow theme, toolbar, image upload
- Rebuild ArticleEditorView with left/right split layout (editor + settings panel)
- Remove old markdown paste handler, Quill output is HTML directly
1 month ago
Mohan
fd769d1acc
feat(component): add star button to each comment with login prompt
1 month ago
Mohan
39852a0f8a
feat(component): add star button to article detail page with login prompt
1 month ago
Mohan
d9fecfdc3d
feat(page): enable live search and add popular articles section
1 month ago
Mohan
4b41723853
fix(ui): refresh home article list on tag query change
1 month ago
Mohan
60c23e7680
feat(page): add tag recommendations to search page
1 month ago
Mohan
ae01874385
feat(component): rebuild comment section with timeline and collapsible form
1 month ago
Mohan
7522a9f809
feat(component): add ArticleMetaBar with reading-time estimate and meta icons on article pages
1 month ago
Mohan
3e8a4c0e3e
feat(style): load Noto Serif SC via Google Fonts for article titles
1 month ago
Mohan
3d6783511c
fix(ui): raise tag/badge/link text contrast to WCAG AA via ink tokens
1 month ago
Mohan
eb9e31c5d1
feat(component): add SongUI Tag/Button/Input/Card in TypeScript
1 month ago
Mohan
a521061eb6
refactor(theme): tokenize admin editor and user/tag pages
1 month ago
Mohan
3c74ccfb1d
refactor(theme): tokenize admin layout and list pages
1 month ago
Mohan
07fab4c54a
refactor(theme): tokenize auth pages and shared widgets
1 month ago
Mohan
30706bd2d8
refactor(theme): tokenize public layout, header and content views
1 month ago
Mohan
3a2437369e
feat(theme): add SongUI token system with light/dark palette and LXGW WenKai font
1 month ago
Mohan
38a0dd4486
chore(checklist): fill phase3 acceptance results
1 month ago
Mohan
06a5cdd7b9
feat(page): add 404 not found view
1 month ago
Mohan
7ec03fd67a
feat(page): add dynamic OpenGraph meta and useApi states
1 month ago
Mohan
e7c86ae0ac
feat(router): add route-level meta and afterEach hook
1 month ago
Mohan
8dc954a423
feat(utils): add setPageMeta for SEO
1 month ago
Mohan
8dbd857445
feat(config): add manualChunks for vendor and markdown
1 month ago
Mohan
1108c48dcc
feat(admin): add article title in comment review and user pagination
1 month ago
Mohan
bfcbf4ab60
feat(admin): comment review page and user role/status management
1 month ago