docs(ui): cookie-rendered sidebar state, data-collapsed CSS, working overview links + link-checker gate

Three problems, one root cause each:

1. Sidebar jump: the server rendered its own default (current section
   open, rest collapsed) and restoreDocsNav corrected it after paint —
   open-then-close. Fix: persistence moved server-side. toggleCollapsible
   now writes a docs_nav cookie (strictly-necessary UI state, no
   identifiers, SameSite=Lax); ApplyNavOverrides merges it into the nav
   before render, so first paint IS the visitor's state. The post-paint
   restore is deleted.

2. Arrows out of sync / double-click: two visibility mechanisms
   disagreed. There was NO data-collapsed CSS at all — collapsed sections
   were only ever hidden by JS after paint, and the arrow rotation came
   from a different (server) state. Now: style.css hides on
   [data-collapsed=true] (single source of truth, server-rendered),
   applyCollapsed sets only the attribute, arrows rotate from the same
   merged value. Live check: 37/37 collapsibles arrow-consistent.

3. api-reference.md links: all 20+ quick links were directory-style
   (authentication/ etc.) that 404 on the docs site, plus stale targets
   (books/, ../collections-api.md, websocket 'coming soon'). Rewritten to
   real per-file links — all 9 unique targets return 200 live. Same rot
   fixed in admin/hash-conflicts.md, development.md, android-app.md,
   create_media_item.md, koreader-protocol.md; docs/index.md redirected
   from the deleted collections-api monolith (stale 530-line duplicate of
   the gated api/collections docs — deleted, per the WO2 doctrine).

New gate: TestDocsRelativeLinks walks docs/developer/** and fails make
test on any relative link that is directory-style or unresolvable —
overview links can never silently rot again.
This commit is contained in:
John O'Keefe committed 2026-10-24 20:20:07 -04:00
1 parent f1a6de7cd7
commit a8f8c4def9
17 files changed
+241 -674

No files matched your search

+17 -17
View File
@@ -6,7 +6,7 @@ Welcome to the Bookhoard developer documentation. This section contains API refe
### Complete API Reference
- **[API Reference](api-reference.md)** - Complete REST API reference
- **[API Reference](api/api-reference.md)** - Complete REST API reference
- Authentication
- User management
- Libraries
@@ -24,25 +24,25 @@ Welcome to the Bookhoard developer documentation. This section contains API refe
Browse individual endpoint documentation with interactive API Explorer:
- **[API Documentation](api/api-reference.md)** - Split endpoint docs
- [Authentication](api/authentication/) - Register, login, tokens
- [Users](api/users/) - Profile management
- [Libraries](api/libraries/) - Library operations
- [Media Items](api/media-items/) - Book/ebook management
- [Progress](api/progress/) - Reading progress tracking
- [Notes](api/notes/) - User notes
- [Highlights](api/highlights/) - Book highlights
- [Ratings](api/ratings/) - Book ratings
- [Devices](api/devices/) - Device management
- [Analytics](api/analytics/) - Usage statistics
- [Book Matching](api/book-matching/) - Search and link books
- [Collections](api/collections/) - Collection management
- [OPDS](api/opds/) - Open Publication Distribution
- [Sync Protocols](api/sync/) - KOReader and Kobo sync
- [WebSocket](api/websocket/) - Real-time events
- [Authentication](api/authentication/login.md) - Register, login, tokens
- [Users](api/users/get_profile.md) - Profile management
- [Libraries](api/libraries/list_libraries.md) - Library operations
- [Media Items](api/media-items/get_media_item.md) - Book/ebook management
- [Progress](api/progress/get_media_progress.md) - Reading progress tracking
- [Notes](api/notes/get_notes.md) - User notes
- [Highlights](api/highlights/get_highlights.md) - Book highlights
- [Ratings](api/ratings/get_ratings.md) - Book ratings
- [Devices](api/devices/get_devices.md) - Device management
- [Analytics](api/analytics/get_analytics.md) - Usage statistics
- [Book Matching](api/book-matching/search_books.md) - Search and link books
- [Collections](api/collections/list_collections.md) - Collection management
- [OPDS](api/opds/feeds.md) - Open Publication Distribution
- [Sync Protocols](api/sync/koreader-protocol.md) - KOReader and Kobo sync
- [WebSocket](api/websocket/protocol.md) - Real-time events
### Collections API
- **[Collections API](collections-api.md)** - Complete collections API reference
- **[Collections API](api/collections/list_collections.md)** - Complete collections API reference
- Create and manage collections
- Auto-assign rules
- Test rules