Mohan
2b25352805
feat(component): show quote excerpt and unescape brackets
1 month ago
Mohan
45aa111d8e
fix(component): style ref tag injected via v-html
1 month ago
Mohan
2c9d8ba15a
feat(component): add comment quote with ref tag
1 month ago
Mohan
b6f514a4db
fix(component): balance word cloud layout and center it
1 month ago
Mohan
ca783bcfdc
style(component): shrink word cloud font scale
1 month ago
Mohan
c931f7c81c
feat(component): render homepage tag cloud as word cloud
1 month ago
Mohan
426d223800
docs: add frontend agent work discipline
1 month ago
Mohan
a2ecf5da74
feat(asset): replace brand logo
1 month ago
Mohan
aff1dd3acf
feat(component): add comment delete
1 month ago
Mohan
299b705990
style(page): reduce header height to 52px
1 month ago
Mohan
81fd72c27f
feat(component): show admin menu only for admins
1 month ago
Mohan
93a24877b0
fix(render): highlight quill code blocks and fix light-theme contrast
- highlightHtmlCode only queried pre, but Quill v2 code blocks are
div.ql-code-block-container > div.ql-code-block, so they never got
highlighted; convert them to pre > code.hljs like markdown blocks
- light theme inherited github-dark's near-white base color on a light
background; force a dark code block background in light mode
1 month ago
Mohan
34b48568ad
fix(component): contain quill editor within viewport
1 month ago
Mohan
c483ccdd01
fix(render): run code highlight on all article content
1 month ago
Mohan
680b84b1bb
fix(render): scroll code block as a whole in preview
1 month ago
Mohan
9ac640df17
chore(asset): replace brand logo with cyber arrow motif
1 month ago
Mohan
0afaed7e06
fix(page): mobile single-column editor with quick actions
1 month ago
Mohan
60fe06841e
feat(render): highlight quill code blocks with language
1 month ago
Mohan
9fb40814fe
feat(component): code language picker in editor
1 month ago
Mohan
02315cc291
feat(asset): extract brand logo to svg file
1 month ago
Mohan
a4e2b05352
fix(header): switch to icon-only nav below 823px
1 month ago
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