crabidy/plan
Test User a275d3bc77 Auth: anonymous callers inherit the highest unguarded role
Replace the "any hash configured => every RPC needs credentials" switch
with a top-down model: a request with no credentials is granted the most
privileged role whose password is not set, and each password lowers that
floor. Nothing guarded -> owner (the open default); guard owner ->
anonymous is queue-owner; guard owner+queue_owner -> queue-appender;
guard all three -> credentials required for everything. A credential
still elevates a caller to its role; a present-but-wrong credential is
denied, never silently downgraded to the anonymous role.

Because the anonymous role is always the highest unguarded one, guarding
a lower role while a higher one is open is meaningless. Valid guarded
sets are prefixes of [owner, queue_owner, queue_appender];
AuthSettings::validate rejects any other order, load aborts startup on
it (fail-closed), and `guard` refuses to write it.

Docs (architecture, quality, mdbook, README) updated to the new model.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 16:06:01 +02:00
..
bookmarks.md Capture library subtrees as bookmarks 2026-07-21 11:11:27 +02:00
captures.md Capture library subtrees with downloaded audio 2026-07-21 13:45:04 +02:00
cbd-bundle.md Bundle server and TUI into a single cbd binary 2026-07-21 14:15:47 +02:00
cli.md Implement the comprehensive CLI (stage 5) 2026-07-22 12:13:51 +02:00
crabidy-store.md Reconcile crabidy-store quality gates and plan with what shipped 2026-07-22 11:36:52 +02:00
fs-provider.md Add a filesystem provider for serialized track nodes 2026-07-21 01:58:55 +02:00
help-modal.md Add a help modal to cbd-tui behind a declarative binding table 2026-07-20 17:27:12 +02:00
incremental-captures.md Make download captures incremental with skipped tracks and progress 2026-07-21 15:45:04 +02:00
node-editing.md Add rename and delete for modifiable library nodes 2026-07-20 23:34:47 +02:00
orphans.md Add the /orphans provider: a store garbage-collection view 2026-07-22 22:47:23 +02:00
progressive-queueing.md Queue large collections progressively 2026-07-21 01:08:34 +02:00
queue-persistence.md Persist queues as fs-provider folders 2026-07-21 10:41:49 +02:00
roles-auth.md Auth: anonymous callers inherit the highest unguarded role 2026-07-23 16:06:01 +02:00
search.md Add Tidal search as creatable library nodes 2026-07-20 17:58:44 +02:00
summary.md Implement the comprehensive CLI (stage 5) 2026-07-22 12:13:51 +02:00
web-client.md Add a Leptos web client served by the server 2026-07-21 22:43:06 +02:00
youtube-provider.md Add a YouTube provider backed by yt-dlp 2026-07-21 14:01:58 +02:00
youtube-rustypipe.md Fetch streams in bounded windows and restore yt-dlp for stream URLs 2026-07-21 18:18:40 +02:00