feat(feedback-site): lane 7 — Admin (#659) #710

Closed
claude-bot wants to merge 0 commits from feat/lane7-admin into main
Collaborator

Lane 7 of the redesign mockups (#659) draws the instance's Admin pages, ADMIN-1 to ADMIN-14, at /prototype/lane7.

Design A drew none of these. Today they are ten tabs on one page. Four of the fourteen surfaces have a server behind them but no screen at all: Campaigns, Content notices, Instance health, and the summary-mode switch.

Dana runs this self-hosted server, so she is its admin. Tomás, who owns Hollow & Ash, is the other admin.

What's drawn

  • Admin, and getting there. Admin keeps its account-menu door, and becomes a place in Home's Contents that opens into its sections (D21's shape).
    • An index says how each section stands, so a failed backup or an open notice is the first thing you see.
    • The index is also drawn on a phone.
    • A non-admin who opens Admin is now told why (IS-377), instead of being redirected without a word.
  • Users (ADMIN-1). Every account, with a row that opens to show that person's campaigns. Also drawn:
    • that row loading, empty and failed;
    • making someone an admin (it asks, and says what they will be able to do);
    • taking admin away (it is undone rather than confirmed, per D12);
    • deleting an account with its typed name, while busy, and when it fails;
    • an account that owns campaigns, where each campaign gets a Hand it on… button;
    • D56's setting for who a GM can find by name.
  • Campaigns (ADMIN-2). Every campaign's owner, GMs, size, Discord link (with a delivery-failing warning), and anything it keeps longer than the instance does.
    • Metadata only (IS-248).
    • A campaign can be handed to a new owner without an offer when the owner has gone (API-015).
  • Recording & retention (ADMIN-5, ADMIN-6). D8 makes the two tabs one section, and D24 gives each kind of record a default and a cap. Also drawn:
    • the bin, next to the audio it holds;
    • capping a campaign's transcripts, which names what would go and offers an export first;
    • every recording on disk, with Retry and Put it back.
  • Backup (ADMIN-7).
    • The schedule, where backups go, and whether audio is included.
    • The last runs, with any failure said in words.
    • No rclone.
    • Back up now, which doesn't ask first.
    • It doesn't claim map images are backed up, because nobody has checked (IS-081).
  • Content packs (ADMIN-11). This is lane 2b's campaign-scope component, now at instance scope. It adds:
    • turning a pack off, with a required reason;
    • removing a pack, which offers "turn it off instead";
    • the starter packs, with their own affirmation;
    • every import and list state.
  • Content notices (ADMIN-13). None of this has had a screen before. Drawn:
    • where rightsholders write to;
    • the notice list;
    • a single notice with its history;
    • recording a notice;
    • acting on a notice: turn the pack off, remove the named records, or remove the pack. The action is all or nothing, and audited.
  • AI models, AI usage & speed, and Discord (ADMIN-4, ADMIN-8, ADMIN-3). Bot Settings' 49 fields are split three ways:
    • AI models: the capability panel first, then both models, then "How the work is done" (the summary mode and the wiki pipeline's mode), then campaigns' own models.
    • AI usage & speed: the hardware measurement in every state, and the usage report, which shows time taken rather than "$0.00" for self-hosted models.
    • Discord: the bot, its key and token, a test message, and the fallback webhook, which moves here from Notification Settings.
  • Email (ADMIN-3). The SMTP form. The test sends with whatever is typed.
  • Instance health (ADMIN-14).
    • The AI queue, which tells stuck from busy.
    • Which secrets the server can read, which catches a backup restored onto a server with a different SECRET_KEY.
  • Audit log (ADMIN-10).
    • Filtered by names and dates instead of ids.
    • A row's detail reads as labelled lines.
  • Import a campaign (ADMIN-9). The same form as New campaign → Import a file (D46).
  • Plans & entitlements (ADMIN-12). A placeholder only: it appears only on the hosted service, and nothing is catalogued for it yet.

Proposed while drawing, for the owner's review

These are listed on the page, and noted against each surface in headers.md:

  • Admin opens into sections in Home's Contents, and the ten tabs go.
  • Bot Settings splits into three sections. The fallback webhook moves beside the bot, and the wiki pipeline's mode joins the summary mode.
  • Every Test button works on what is typed, saved or not.
  • Deleting an account that owns a campaign sends you to hand the campaign on, from the new Campaigns section.
  • Making someone an admin asks first; taking it away is undone.
  • The audit log filters by name.
  • Back up now does not ask.
  • The default for audio is to bin it once the summary is approved. That is when audio stops being needed today; "once transcribed" would be too early.

Coverage

coverage/lane7.py checks 179 placements, and none are missing:

Result Placements
Drawn 154
Replaced by a decision or proposal 17
Belong to another surface 8

All ten coverage scripts pass against the rebuilt catalogue (1,652 rows).

Checks

  • Render-checked in headless Edge, in dark and light. The checks caught and fixed:
    • Admin's sub-list vanishing on section pages;
    • backup runs listed oldest first;
    • a broken still that collapsed the grid beneath it;
    • "Dungeons & Dragons", escaped twice;
    • import outcomes naming lane 2b's campaign packs;
    • Session 14 shown transcribing when it hasn't been played yet;
    • Amberwake audio shown in the bin, although that campaign keeps its audio for 90 days;
    • The Salt Crown's transcript retention disagreeing with the cap dialog.
  • The DOM probe finds 97 shots and no undefined or NaN.
  • Feedback-site tests pass (118).

🤖 Generated with Claude Code

Lane 7 of the redesign mockups (#659) draws the instance's Admin pages, ADMIN-1 to ADMIN-14, at `/prototype/lane7`. Design A drew none of these. Today they are ten tabs on one page. Four of the fourteen surfaces have a server behind them but no screen at all: Campaigns, Content notices, Instance health, and the summary-mode switch. Dana runs this self-hosted server, so she is its admin. Tomás, who owns *Hollow & Ash*, is the other admin. ## What's drawn - **Admin, and getting there.** Admin keeps its account-menu door, and becomes a place in Home's Contents that opens into its sections (D21's shape). - An index says how each section stands, so a failed backup or an open notice is the first thing you see. - The index is also drawn on a phone. - A non-admin who opens Admin is now told why (`IS-377`), instead of being redirected without a word. - **Users (ADMIN-1).** Every account, with a row that opens to show that person's campaigns. Also drawn: - that row loading, empty and failed; - making someone an admin (it asks, and says what they will be able to do); - taking admin away (it is undone rather than confirmed, per D12); - deleting an account with its typed name, while busy, and when it fails; - an account that owns campaigns, where each campaign gets a **Hand it on…** button; - D56's setting for who a GM can find by name. - **Campaigns (ADMIN-2).** Every campaign's owner, GMs, size, Discord link (with a delivery-failing warning), and anything it keeps longer than the instance does. - Metadata only (`IS-248`). - A campaign can be handed to a new owner without an offer when the owner has gone (`API-015`). - **Recording & retention (ADMIN-5, ADMIN-6).** D8 makes the two tabs one section, and D24 gives each kind of record a default and a cap. Also drawn: - the bin, next to the audio it holds; - capping a campaign's transcripts, which names what would go and offers an export first; - every recording on disk, with Retry and Put it back. - **Backup (ADMIN-7).** - The schedule, where backups go, and whether audio is included. - The last runs, with any failure said in words. - No rclone. - Back up now, which doesn't ask first. - It doesn't claim map images are backed up, because nobody has checked (`IS-081`). - **Content packs (ADMIN-11).** This is lane 2b's campaign-scope component, now at instance scope. It adds: - turning a pack off, with a required reason; - removing a pack, which offers "turn it off instead"; - the starter packs, with their own affirmation; - every import and list state. - **Content notices (ADMIN-13).** None of this has had a screen before. Drawn: - where rightsholders write to; - the notice list; - a single notice with its history; - recording a notice; - acting on a notice: turn the pack off, remove the named records, or remove the pack. The action is all or nothing, and audited. - **AI models, AI usage & speed, and Discord (ADMIN-4, ADMIN-8, ADMIN-3).** Bot Settings' 49 fields are split three ways: - **AI models:** the capability panel first, then both models, then "How the work is done" (the summary mode and the wiki pipeline's mode), then campaigns' own models. - **AI usage & speed:** the hardware measurement in every state, and the usage report, which shows time taken rather than "$0.00" for self-hosted models. - **Discord:** the bot, its key and token, a test message, and the fallback webhook, which moves here from Notification Settings. - **Email (ADMIN-3).** The SMTP form. The test sends with whatever is typed. - **Instance health (ADMIN-14).** - The AI queue, which tells stuck from busy. - Which secrets the server can read, which catches a backup restored onto a server with a different `SECRET_KEY`. - **Audit log (ADMIN-10).** - Filtered by names and dates instead of ids. - A row's detail reads as labelled lines. - **Import a campaign (ADMIN-9).** The same form as New campaign → Import a file (D46). - **Plans & entitlements (ADMIN-12).** A placeholder only: it appears only on the hosted service, and nothing is catalogued for it yet. ## Proposed while drawing, for the owner's review These are listed on the page, and noted against each surface in `headers.md`: - Admin opens into sections in Home's Contents, and the ten tabs go. - Bot Settings splits into three sections. The fallback webhook moves beside the bot, and the wiki pipeline's mode joins the summary mode. - Every Test button works on what is typed, saved or not. - Deleting an account that owns a campaign sends you to hand the campaign on, from the new Campaigns section. - Making someone an admin asks first; taking it away is undone. - The audit log filters by name. - Back up now does not ask. - The default for audio is to bin it once the summary is approved. That is when audio stops being needed today; "once transcribed" would be too early. ## Coverage `coverage/lane7.py` checks 179 placements, and none are missing: | Result | Placements | |---|---| | Drawn | 154 | | Replaced by a decision or proposal | 17 | | Belong to another surface | 8 | All ten coverage scripts pass against the rebuilt catalogue (1,652 rows). ## Checks - Render-checked in headless Edge, in dark and light. The checks caught and fixed: - Admin's sub-list vanishing on section pages; - backup runs listed oldest first; - a broken still that collapsed the grid beneath it; - "Dungeons & Dragons", escaped twice; - import outcomes naming lane 2b's campaign packs; - Session 14 shown transcribing when it hasn't been played yet; - Amberwake audio shown in the bin, although that campaign keeps its audio for 90 days; - The Salt Crown's transcript retention disagreeing with the cap dialog. - The DOM probe finds 97 shots and no `undefined` or `NaN`. - Feedback-site tests pass (118). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(feedback-site): lane 7 — Admin (#659)
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 53s
CI / Frontend tests, audit, and build (pull_request) Successful in 2m35s
CI / Bot tests and audit (pull_request) Successful in 1m53s
CI / Docker image build (pull_request) Successful in 15s
CI / Bot/backend version sync (pull_request) Successful in 36s
CI / Backend lint (ruff) (pull_request) Successful in 40s
CI / Feedback site tests (pull_request) Successful in 51s
CI / Backend migration, tests, and audit (pull_request) Successful in 8m32s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 17m17s
f614ee89e9
Draws ADMIN-1 to ADMIN-14 at /prototype/lane7: users, every campaign,
recording and retention (D8, D24), backup, content packs and rightsholder
notices, the AI models, AI usage and speed, Discord, email, instance
health, the audit log and importing a campaign. Plans & entitlements is a
placeholder: nothing is catalogued for it yet.

Proposed for the owner's review, and noted in headers.md: Admin opens
into its sections in Home's Contents (D21's shape); Bot Settings splits
into AI models, AI usage & speed and Discord; every Test works on what is
typed; an account that owns a campaign is sent to hand it on from a new
Campaigns section; the audit log filters by name.

coverage/lane7.py: 179 placements, none missing (154 drawn, 17 replaced,
8 elsewhere).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
Collaborator

CI green (run 10076). Merged to main as bc883f8.

CI green (run 10076). Merged to main as bc883f8.
claude-bot closed this pull request 2026-09-19 21:40:22 +00:00
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 53s
Required
Details
CI / Frontend tests, audit, and build (pull_request) Successful in 2m35s
Required
Details
CI / Bot tests and audit (pull_request) Successful in 1m53s
Required
Details
CI / Docker image build (pull_request) Successful in 15s
Required
Details
CI / Bot/backend version sync (pull_request) Successful in 36s
Required
Details
CI / Backend lint (ruff) (pull_request) Successful in 40s
Required
Details
CI / Feedback site tests (pull_request) Successful in 51s
Required
Details
CI / Backend migration, tests, and audit (pull_request) Successful in 8m32s
Required
Details
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 17m17s
Required
Details

Pull request closed

Sign in to join this conversation.
No description provided.