- 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
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.
- 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
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.
- 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
- 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