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

@@ -1,35 +0,0 @@
# Collections API
See [Collections API](../../collections-api.md) for complete collections documentation.
## Quick Links
- [List Collections](list_collections.md) - Get all collections
- [Get Collection](get_collection.md) - Get collection details
- [Create Collection](create_collection.md) - Create a new collection
- [Update Collection](update_collection.md) - Update collection metadata
- [Delete Collection](delete_collection.md) - Delete a collection
- [Add Auto-Assign Rule](add_auto_assign_rule.md) - Add automatic book assignment rule
- [Remove Auto-Assign Rule](remove_auto_assign_rule.md) - Remove assignment rule
- [Test Rule](test_rule.md) - Test assignment rule
- [Bulk Assign](bulk_assign.md) - Bulk assign books to collection
- [Create Shelf Mapping](create_shelf_mapping.md) - Map collection to device shelf
- [Delete Shelf Mapping](delete_shelf_mapping.md) - Remove shelf mapping
---
## Overview
Collections allow you to organize your books into custom groups with automatic assignment rules.
## Features
- **Manual Assignment**: Add specific books to collections
- **Auto-Assignment**: Define rules to automatically assign books based on metadata
- **Device Sync**: Collections sync as shelves on Kobo/KOReader devices
- **Flexible Rules**: Filter by genre, series, tags, and more
## See Also
- [Collections API](../../collections-api.md) - Complete API reference
- [Sync Guide](../../user/sync-guide.md) - How collections sync to devices