Repository navigation
v2026.0.0
变更记录
- fix(release): brace shell vars next to full-width punctuation (f00af2d)
- chore: add version bump and release scripts (04ce9c4)
- fix(desktop): keep dev setup page inside the webview (57a36ff)
- feat(web): track per-chapter views and derive book total (8531430)
- fix(web): reduce empty space in book detail hero (827790f)
- feat(web): show reading progress and read chapters on book detail (8756fb8)
- fix(web): count a view when opening the book detail page (27933a4)
- fix(api): return chapter_count on book listings (aaccc81)
- fix(web): client-load private book detail and fix info-row overflow (0e18009)
- fix(web): prevent nested anchor hydration error in BookCard (6fe4913)
- style(web): align book card date to the right of meta row (2f4e92c)
- feat(api): support sort param on book list endpoints (b5ca058)
- refactor(web): unify book cards into single BookCard component (e9e67e8)
- fix(web): use content-area loading on admin console lists (b1b4504)
- feat(web): show loading state on explore filters and tags (08dd4ce)
- fix(web): resolve explore hydration from nested avatar link (d39c969)
- fix(web): make route loading indicator unobtrusive (bf178ed)
- fix(web): show loading states while fetching page data (3e1e70f)
- feat(books): add watermarks and harden content access (42fffb3)
- feat(web): link console overview to system config manager (a0dcfb4)
- fix(web): capture config key before clearing input state (c605f19)
- test(api): cover admin user list sorting (3e548ec)
- feat(web): show recent activity on console overview (9d7cd1c)
- feat(api): add console activity timeline endpoint (6c587f4)
- fix(web): fill console content width and widen role select (3449c50)
- feat(web): add sort control to user management list (14be25b)
- feat(api): sort admin user list by created or last login (72cd07d)
- feat(web): show content stats on console overview (5c6b616)
- feat(api): include tag_count in site stats (fb47112)
- feat(web): add 系统配置 tab for key-value config management (1e0818b)
- feat(api): manage system config as key-value pairs (5f51382)
- fix(web): center toggle switch knob within its track (4606d35)
- feat(web): link book detail to its settings page (ce69a88)
- test(api): cover admin user management endpoints (3c9421f)
- fix(api): namespace user management routes under /admin (8e58004)
- feat(web): rebuild admin area as console with settings tabs (ce6a6c3)
- feat(api): add admin user management endpoints (ae5ae95)
- feat(deploy): ship web runtime in single server binary (bd25e62)
- fix(deploy): bundle Node 24 runtime for web SSR (2d469c0)
- fix(web): restore Node 18 compatibility for markdown SSR (128649b)
- fix(ci): ship web static under the isolated distDir path (9be4e12)
- chore: ignore stray next build verify directory (fdaf9d4)
- fix(ci): package web builds from the isolated dist dir (747d96d)
- feat(android): chapter editor for book authors (055670f)
- feat(android): favorites shelf and chapter comments (da3b55f)
- feat(web): notifications center page (88af9d0)
- fix(desktop): open external links in the system browser (9a5de03)
- test(app): guard previously uncovered security boundaries (5f7786d)
- docs: add 2026.0.0 changelog and complete the api overview (91c04ea)
- ci: gate deploy and release web builds with vitest (35613ea)
- test(web): vitest suite for the markdown pipeline in ci (217d674)
- feat(android): book detail page, markdown rendering and offline cache (ef4c574)
- feat(upload): pluggable storage drivers with local and qiniu backends (4ad074a)
- feat(android): book search, notifications and skeleton fixes (17b4621)
- feat(desktop): tray menu, startup reachability check and state memory (ef2fe46)
- feat(web): port remaining markdown extensions (image/table/issues/api) (880b132)
- feat(migrate): legacy node/mysql data migration command (d82a01b)
- feat(web): port legacy markdown extensions to the reader (81686ab)
- feat(books): zip export and import with lossless round-trip (a3db93c)
- fix(search): parse auth header so logged-in users see private content (2a307aa)
- feat(auth): email-based password reset with log and smtp drivers (1e35a3d)
- feat(books): book collaborators with editor and viewer roles (bc1f3c8)
- style(server): gofmt whitespace in comment and reaction handlers (21a1f2b)
- feat(notifications): in-app notifications with sse realtime push (2e78ce8)
- feat(auth): github oauth login and account binding (1971f3f)
- feat(search): global search api and results page (b0882b6)
- feat(web): favorites page and detail reaction buttons (b19937c)
- feat(api): book reactions (likes and favorites) (b9e0101)
- feat(web): mount comments in the reader (e44bcfc)
- feat(api): chapter comments module (m9 backend) (dfbcce2)
- refactor(web): shared explore book card with interactive links (ea08d08)
- build: isolate production builds from the dev server (73e672d)
- fix(books): real status counts for my-books tabs (5d408e5)
- fix(web): unify media url resolution for covers and avatars (eacb3d2)
- feat(web): rebuild security page per prototype (243860c)
- feat(web): rebuild account settings per prototype (a001e77)
- refactor(web): user home to /user/{username} and compact hero (2d79aa9)
- fix(web): user home list view actually renders row cards (f26c2a6)
- feat(web): tooltips on all icon-only actions (54fba33)
- feat(web): rebuild explore page per prototype (a81f5bd)
- fix(web): user home list view matches my-books row style (c2867d8)
- feat(web): loading states for list transitions (99c02b7)
- style(web): show public book cover arrow on hover only (425e0fe)
- feat(web): user home sort dropdown (92f1463)
- fix(web): every page sets a browser title (ae11d89)
- feat(web): rebuild user home page per prototype (e5fb09a)
- fix(web): use the shared select for my-books sorting (9083226)
- feat(web): chapter popover on my-books cards (f2d3655)
- feat(web): rebuild my-books page per prototype (db74d0f)
- style(web): polish book detail against the prototype (c9188a8)
- fix(web): write button opens the workbench, not a chapter (6faaab3)
- feat(reading): persist reading progress server-side (e5c08fd)
- fix(writer): open the workbench at /book/writer/{slug} without a doc (bfaea63)
- fix(web): reading progress hook placement and continue-reading ui (84c9bcd)
- fix(web): detail write button and card chip nesting (03d69f2)
- feat(web): rebuild book detail page per prototype (d522e2c)
- fix(reader): hidden chapters 404 instead of a login prompt (9046138)
- fix(writer): doc becomes a path segment, killing the 308 on edit (9847a30)
- style(writer): align settings tab fields with the book form design (11233f4)
- fix(writer): add gssp so path params reach the client (7adfcbe)
- fix(web): avatar links inside clickable cards break hydration (14c6880)
- fix(web): show book and chapter title in writer tab (bb59138)
- fix(web): match dynamic book routes as bare layout routes (69859de)
- refactor(web): action-first book routes (3970ad8)
- refactor(web): move book pages to path params (da12e90)
- feat(reader): edit entry in meta line with font awesome icon (90ba33b)
- feat(web): add shared tooltip component for avatar usernames (a944cc1)
- refactor(web): extract user avatar into shared component (9a587a2)
- style(web): nav auth awareness, badge nowrap and grid columns (0688398)
- feat(reader): author entries and fixed prev-next bar with avatars (564adaf)
- style(books): redesign my-books list as media card grid (524c2c6)
- style(books): polish cover preview and page spacing (edb4843)
- refactor(api): drop unused books summary endpoint (caeccf0)
- feat(reader): rebuild reading page as a three-pane reading workbench (002d1b5)
- feat(web): add stable heading anchors to rendered markdown (aaa6d8d)
- fix(editor): let chapter tree scroll horizontally instead of clipping titles (ab2d089)
- fix(editor): cap chapter tree indentation so deep titles stay visible (a71c3be)
- feat(books): rebuild book form as two-column layout with live preview (95a3718)
- fix(editor): create new chapters under the selected chapter and keep it highlighted (4ae896a)
- feat(editor): surface a visible saving state while persisting a chapter (1ce9939)
- style(web): refine global scrollbar to a thin rounded style (72b7adb)
- feat(editor): contextual new-chapter creation and blank-area deselect (f74224a)
- fix(web): restore container padding and stop nested anchors in cards (4d5547f)
- fix(editor): three-state parent_id parsing and pane polish (d38d0eb)
- fix(web): full-bleed layout overflow and login-state flash on refresh (876639a)
- chore(web): allow isolating dev build dir via NEXT_DIST_DIR (618cf85)
- fix(editor): fill editor pane and fix chapter tree interactions (7be01f6)
- style(web): replace native select with fully custom dropdown (4f7e56a)
- feat(editor): rebuild writer as full-screen three-pane workbench (114a982)
- chore(deploy): keep old next chunks across releases (20cfe5a)
- fix(web): return empty arrays for empty lists to stop client crash (5d6d143)
- feat(tags): add book tagging module per roadmap m8 (1d79fd5)
- chore: stop tracking local memory directory (c6a0792)
- feat(server): add resource:action permission system and api contract (30b744b)
- feat(web): redesign home page and chrome per new visual spec (d3a08e4)
- feat(web): restore original infosphere logo across clients (9581e03)
- style(web): pure tailwind ui primitives without custom css (665f7af)
- fix(install): resolve sqlite paths into data dir with clear errors (e76e3f7)
- fix(install): build redirect url from forwarded host headers (a874a32)
- fix(install): enforce install-only access via next middleware (396c474)
- fix(install): block every route until installation completes (5dcfa4a)
- docs(deploy): document certbot tls setup in nginx template (f8080d3)
- chore(web): simplify footer branding to powered by infosphere (d72aba5)
- refactor(web): extract reusable ui component library (ab83a5e)
- fix(web): include ts and tsx files in tailwind content scan (f3cec22)
- fix(ci): tolerate missing next cache dir in web service hardening (f94fa17)
- docs: update readme for 2026 architecture (be85ad4)
- ci: add quality checks, production deploy and release pipelines (26f3d17)
- feat(android): add android client skeleton (4888bf3)
- feat(desktop): add tauri 2 desktop client (4330b04)
- feat(web): rebuild frontend with next.js ssr and typescript (b6d5f61)
- feat(server): add go backend with multi-database and installer (b5abeee)
- refactor: remove legacy node.js backend and ejs frontend (e61b992)
- feat: 支持设置书籍章节前缀 (1d62deb)
- fix: 修复新建数据集列不对应问题 (2e5ae56)
- feat: 支持书籍配置排序规则 (3f377e5)
- feat: 支持树形菜单隐藏路径 (bc46fa1)
- feat: 增加首页注册用户统计 (ca8b7ed)
- fix: 修复无权限可以看到编辑,删除按钮 (3b86b08)
- feat: 支持未登录用户获取书籍列表 (187ee51)
- feat: 支持自动关闭 Alert (6bd7891)
- feat: 禁用 Modal 点击外部关闭 (9abe821)
- feat: 增加 footer (e1e5677)
- feat: 增加目录底部虚线 (43ad6f4)
- fix: 修复阅读书籍目录问题 (7bdaee5)
- fix: 修复代码片段语法高亮 (6207873)
- feat: 增加默认加载配置 (62ab395)
- feat: 增加 CI 部署工具 (4db7a7c)
- feat: 优化阅读模板 (d42306a)
- feat: 增加在线用户提示 (81593ac)
- fix: 修复阅读编写权限 (d7776d9)
- feat: 支持阅读书籍 (08e7eee)
- feat: 添加 Tree 组件 (d0db871)
- feat: 支持删除文档 (c6be2ed)
- feat: 添加 Radio 组件 (6edd12f)
- feat: 统一页面布局 (312d0a3)
- feat: 添加书籍目录 (47b0a5e)
- feat: 剥离新建文档弹出框 (78b6213)
- feat: 支持 markdown 渲染 (c5082d1)
- feat: 支持增加&修改文档 (31234c0)
- feat: 添加用户书籍跳转 (d60de55)
- feat: 添加最新书籍页面 (20a1f99)
- feat: 添加 hot 页面 (3cfd689)
- feat: 拆分为 explore (5ed4bf7)
- feat: 优化书籍链接地址 (e453edf)
- feat: 添加书籍列表 (cd3ca74)
- feat: 添加首页模板 (3ea4904)
- feat: 支持我的书籍 (08f4102)
- feat: 支持书籍浏览量 (ce2a478)
- feat: 支持书籍创建,修改,删除 (a4464da)
- feat: 支持解绑 github 账户 (cc6bce3)
- feat: 支持绑定 github 账户 (75923fa)
- feat: 支持修改密码 (086b1ec)
- feat: 增加个人资料页面 (ca30c6f)
- feat: 支持 GitHub 第三方登录 (8c8c08d)
- feat: 增加最后登录时间 (7820423)
- feat: 增加已登录页面 (c3619df)
- feat: 支持系统重启路由 (9efcd92)
- feat: 支持 passport local 登录 (3f78776)
- feat: 支持用户登录 (a10a3c0)