Skip to content

v2026.0.3

Choose a tag to compare

@github-actions github-actions released this 19 Sep 03:27
· 287 commits to dev since this release

动态国际化

  • 新增站点语言管理:可配置语言、文字方向、默认语言、回退链及界面/内容启用状态。
  • 新增界面语言包草稿、发布、JSON 导入导出和 ICU 消息支持;Cookie/账号语言同步到服务端首屏。
  • 成就改为按启用语言动态填写名称、说明和提示,旧中英文数据自动迁移;逐语言版本校验避免覆盖其他翻译,草稿不泄露到公开响应。
  • 通用多语言字段组件支持复制及翻译空白字段,可供后续会员和等级模块复用。

成就模块

  • 管理员可默认关闭或启用成就模块,并配置公开陈列、解锁通知、用户隐藏权限和陈列数量。
  • 新增 18 项阅读、创作、社区和账号白名单指标,支持 all/any 多条件、阈值、时间窗口、对象过滤、系列等级、稀有度与中英文文案。
  • 成就图标支持 Font Awesome、栅格图片和安全净化 SVG;自动评估使用持久化去重事件与后台重算任务。
  • 新增“我的成就”、公开主页成就陈列、人工授予与撤销、展示偏好、通知偏好和完整审计记录。

完整提交记录(125 条)
  • chore: release 2026.0.3 (f965a92)
  • chore(release): promote unreleased changelog notes into new version (46f221b)
  • chore(release): verify version sources match the tag in release.sh (f019372)
  • style(detail): make the "you may also like" grid fit columns to width (4f08900)
  • feat(achievements): split the definition modal into basic and localization tabs (d2162ab)
  • feat(i18n): make the language switcher an icon dropdown (a0febee)
  • fix(home): drop invalid className on latest-list CoverImage (0f181ec)
  • feat(achievements): add reading-days, published-books and tags-used metrics (f0759c6)
  • feat(achievements): link category to rule metrics, add a date-time picker (5e9c4b6)
  • feat(home): rebuild the content area to the new prototype layout (6a7f5cc)
  • feat(detail): split contents and reviews into horizontal tabs (e9d50bd)
  • feat(explore): add a members-only books filter for signed-in users (f20a65f)
  • feat(books): auto-fit book grid columns to the viewport width (ab90836)
  • feat(books): let the copy dialog set the new book's access path (b43d79a)
  • feat(seo): serve /sitemap.xml with public books and published chapters (2be8095)
  • feat(import): web-collected chapters follow parent status when enabled (870e871)
  • fix(auth): only show the email-activation banner when activation is required (40f118e)
  • refactor(admin): move language management to its own left-nav menu (cebb95d)
  • fix(reader,writer): reset scroll to top on chapter switch; link writer title (3f8b9d6)
  • feat(books): allow book descriptions up to 1000 characters (3172af1)
  • feat(achievements): scope create button to definitions tab, i18n metric catalog (572f0bc)
  • fix(server): let long text columns exceed the MySQL 64KB text limit (21cb4b9)
  • chore: ignore the .rundata browser session directory (e0ecce9)
  • fix(ui): let achievement controls follow the theme control size (5fd1214)
  • fix(i18n): remove stray Chinese text from two English strings (67fd446)
  • feat(i18n): make site languages, UI messages and content translatable at runtime (050b345)
  • docs: add installation guide (e923a50)
  • fix(ui): let custom max-width classes override the Modal default (f29e01d)
  • ci: run checks on pushes to dev (3db0a5f)
  • ci: add i18n integrity check to web checks (a5cebdd)
  • fix(i18n): add missing common.settings fallback key (6c45d87)
  • fix(i18n): translate revision reason label in history list (cd5c823)
  • refactor(seo): generate sitemaps via Go background job and move site URL to site settings (9e25c65)
  • feat(seo): serve sitemaps from static files refreshed daily in background (377557a)
  • feat(seo): shard sitemap into an index for scale and faster builds (f757672)
  • feat(seo): include public chapter reader URLs in sitemap (79c7d03)
  • fix(seo): emit canonical /book/detail/{slug} URLs in sitemap (03ed207)
  • feat(book): split localization & versions into a dedicated settings tab (c0029eb)
  • fix(i18n): replace missing admin.nav.chapters references with admin.nav.documents (3401fb9)
  • fix(i18n): resolve tsc errors in web (a3da129)
  • fix(achievements): widen the achievement editor modal to fit its content (68c0326)
  • i18n: localize print TOC heading and editor component-snippet scaffolding (eeedc67)
  • i18n(admin): localize the achievements admin page (aaf69de)
  • i18n(admin): drop dead task label maps, localize oauth hints and translation placeholder (ffe9314)
  • i18n(install): localize the setup wizard (b88ebf2)
  • i18n(achievements): localize the my-achievements page (0509ae3)
  • i18n: localize site meta description fallback and admin system console strings (9d0095d)
  • i18n(writer): localize the book writer workbench (fb14886)
  • i18n(2fa): localize TwoFactorSettings (6f8432e)
  • i18n(book-settings): localize access-path, data and danger tabs (4293477)
  • feat(admin,books): dedicated footer-links tab, group localization fields (4227a8c)
  • feat(editor): metadata toolbar button with icon picker, add Accordion/Steps inserts (6353acf)
  • fix(writer): surface save/publish feedback, auto-scroll TOC to active chapter (565b6f8)
  • feat(editor): add Accordion and Steps blocks, verify recursive block parsing (f07315f)
  • feat(achievements): add configurable achievement system (474b31c)
  • fix(i18n): restore web quality gates (55b8057)
  • feat(i18n): wire books page, BookForm and book settings pages to i18n (a807298)
  • feat(i18n): wire base UI components and fill missing locale keys (b24b9ec)
  • i18n(global): localize _app.tsx loading messages (5440b31)
  • i18n(user/profile): localize public profile page (00c3096)
  • i18n(user/theme): localize theme page (f902d34)
  • i18n(user/reading): localize reading page (c57294b)
  • i18n(user/oauth): localize oauth page (d05e380)
  • i18n(user/export): localize export page (214f4f7)
  • i18n(user/trash): localize trash page (05353af)
  • i18n(user/security): localize security page (6820cb4)
  • i18n(user/notes): localize notes page (6fc88f9)
  • i18n(user/analytics): localize analytics page (c240651)
  • i18n(user/profile): localize profile page (5b099b2)
  • fix(markdown): handle indented migration content and unanchored tag matching (0c50253)
  • i18n(admin/settings): localize translation page (666c4d9)
  • i18n(admin/settings): localize captcha page (860117d)
  • i18n(admin/settings): localize registration page (a9d2939)
  • i18n(admin/settings): localize login security page (2405ecb)
  • i18n(admin/settings): localize content page (ef8e882)
  • i18n(admin/settings): localize oauth page (44b86e7)
  • i18n(admin/settings): localize mail and storage pages (97263ec)
  • i18n(admin/settings): localize index and site pages (c1abc1a)
  • fix(markdown): fence-aware and nesting-aware block scanning for extensions (0670c81)
  • i18n(admin): localize admin pages (b65345b)
  • i18n(admin): localize achievements management page (6229816)
  • feat(documents): promote draft book to in_progress when a chapter is published (0b52ee7)
  • i18n(components): localize shared layout and admin components (6963a45)
  • i18n(components): finish shared translations (8fb5c96)
  • i18n(components): localize shared user-facing components (5fa3578)
  • feat(translation): configurable translation with editor translate button (faa1b1b)
  • feat(reviews): add book ratings and reviews (d231cd3)
  • feat(editor): support Tabs/Note/Warning/Tip components and sub-chapter TOC (bb3a13c)
  • feat(docs): custom tree icons via metadata (51d9865)
  • feat(site): make footer links admin-configurable by group (c61f124)
  • feat(site): render release notes as markdown in the version modal (ba7c938)
  • fix(books): enter first chapter after copy, add reader TOC expand/collapse-all (7f8ea52)
  • fix(books): tidy slug editor layout, add save loading + child-status toggle to book settings (e29ccbf)
  • feat(writer): let authors set a custom document path (slug) (a9213e9)
  • i18n(user): localize danger zone and invite-code pages (c13878e)
  • fix(ui): smoother cover loading — fade in over gradient, no gray skeleton (2b3f07f)
  • i18n(user): localize favorites and notification settings pages (5ded150)
  • fix(home): show real meta under hero book cards instead of empty bars (3a4ec32)
  • i18n(reader): localize the chapter reader page (70ee408)
  • feat(ui): add a loading skeleton for book cover images (0fbca54)
  • fix(2fa): keep the step-up modal above other dialogs; test trash-delete step-up (62305f4)
  • i18n(detail): localize the book detail page (f0b8b85)
  • i18n(books,comments): localize create-book page and the comments section (0cac27c)
  • i18n(books): localize BookCard status/visibility/description (shared across lists) (fad1df0)
  • i18n(public): localize the explore and search pages (10797c9)
  • i18n(home): localize the home page (hero, stats, latest, popular sections) (f677683)
  • feat(books): one-time editable access path for copied books (12a1282)
  • fix(explore): stop the browse tabs and content overflowing on mobile (42fe1c1)
  • fix(books): copy all config on duplicate; reactive + in-reader variant switch (af121f9)
  • i18n(auth): localize forgot/reset password, verify-email, oauth callback, 404 (6ee8799)
  • i18n(auth): localize login, register and OAuth surfaces (7be568d)
  • fix(ui): show per-row loading for backend actions in lists (b67b6df)
  • i18n(nav): localize the app shell (header, nav, footer, user menu) (dc1bc1c)
  • feat(chapters): cascade publish status to children and follow-parent default (721538c)
  • feat(i18n): add internationalization with namespace.function.keyname keys (4274136)
  • feat(writer): support all heading levels H1-H6 in the toolbar (7bd941b)
  • feat(site): configurable help doc, user agreement and privacy policy (f778485)
  • feat(books): icon actions and more operations in chapter management (90766e6)
  • fix(notifications): use the themed content container (dda96dc)
  • fix(ui): make toasts compact and theme-size independent (6341bf0)
  • fix(notify): don't flash the admin-disabled banner while loading (f15a795)
  • fix(writer): guard document loader against out-of-order responses (76e7ae9)
  • fix(release): cross-compile Docker image and use complete release notes (1ff6888)
  • feat(writer): git-diff-style comparison in version history (4f49d3b)
  • chore(release): bump version to 2026.0.3 (d2bfa7e)

完整更新日志见 CHANGELOG.md。