Mohan
b8a0e57324
feat(component): show stars on article card
1 month ago
Mohan
725dbd9478
fix(util): estimate reading time from plain text
1 month ago
Mohan
4b5314e00a
feat(component): grey out missing ref comment tag
1 month ago
Mohan
33f670c97f
fix(component): detect comment overflow after render
1 month ago
Mohan
372ab9d293
feat(component): collapse comments longer than 4 lines
1 month ago
Mohan
945be49410
fix(component): render comment line breaks and tag icon
1 month ago
Mohan
26c19e92f9
fix(component): strip nested ref in quote excerpt
1 month ago
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