Appearance
Admin Panel MVP, round 3: the last copy and presentation fixes
Purpose. Round 2 (prompt) came back on 2026-09-29. It was pulled fresh, rendered and checked point by point against its 37 points (D1 to D3 and 1 to 34). Nothing is still open and nothing from round 1 regressed. Of the 37, 24 are fully resolved and 13 are partly resolved. The partly resolved points, and ten small new gaps, are all copy, presentation or counting. This round closes the ones that change what gets built. The rest live only in the prototype's own code and are recorded below as build notes, not sent.
- Status: drafted 2026-09-29, to be sent by the owner. Tracker: QRS-1451, programme QRS-1404.
- Paste-ready:
D:\DevCache\design-prompts\PROMPT-4-admin-round-3.txt(Block 1 and Block 2, well under 15 KB). Send it as one message in the same Claude Design chat. Do not re-send the PDPR. - Review surface:
http://localhost:8091/admin-review.html. All six pages render in both themes (12 of 12). The review page's 10 cases pass. The own-leads scope holds: Super Admin 1,840 leads, Sales Executive 313.
What round 2 delivered
Three independent reviews read the new files against the round-2 brief and rendered the pages, giving a file and line for every verdict. The claims with the most impact were re-checked by hand.
| Section | Resolved | Partly (carried into round 3) |
|---|---|---|
| Owner decisions | D1 (a Platform Administrator only views Access control), D2 (only sales roles own leads and appear on Team), D3 (a reset ends sessions when the link is sent) | |
| A · Sign-in, set password | 1 (dark mode on both pages), 3 (missing states), 4 (copy), 5 (an unknown email is refused) | 2 (the redirect names the right person, but a stale name survives "Sign in with a different account") |
| B · Access control | 6 (a revoked invite leaves the list), 8 (Extend and End now, with the date picker and an audit row), 11 (Users links to Access control), 12 ("Deactivated" in Users), 13 (the SCREENS.md row) | 7 (the existing-account refusal only shows beside the domain refusal); 9 (the handover works, but its copy says "Deactivation"); 10 (the list is emptied, but the reserved Access requests tile disappeared with it) |
| C · Leads | 14 (auto-assignment by "Assignment rules", owners read live), 17 (one list of fourteen industries), 18 (a read-only policies panel), 19 (one masking rule) | 15 (Export says it is recorded in the audit log; it is not); 16 (stage ids, see the build notes); 20 (a revival toast still says "save it as a segment") |
| D · Users | 26 (consumer timeline) | 21 (values shown, but no role per workspace); 22 (the saved-segment strip is still live); 23 (bulk "Both" runs as the person only); 24 ("Unconverted leads" is a number that appears nowhere on Leads); 25 (the Audit tab shows raw labels) |
| E · Overview | 27 (sign-in codes read on their own), 28 ("Active cards" reserved), 29 (no 0 badge), 30 (exact headline counts) | 31 (one note says "in a later round") |
| F · Copy | 32 (no em or en dash rendered on any page), 33 (handbook links use desk words), 34 (the dark-token line is gone, QRS-1439) |
New gaps found in round 2 (in the prompt below):
- The Overview shows two "registered people" numbers (965 as a vital, 1,097 on the Users tile).
- "Messages sent" on a Users record shows a Communications figure as live.
- A consumer record shows merchant facts ("Customers").
- The Team spread is computed against a rep with no leads.
- The Extend sheet lets the start date be edited.
- "Shared dependencies" says "four" over five rows, and "Already handled" says "today" over weeks of rows.
- The "All clear" demo hides the live sign-in figure.
- "1 days".
- SCREENS.md still describes round 1 in five places.
Build notes: prototype-only, not sent to Claude Design. These are real defects in the prototype's code. The build does not copy that code, and each of these points is already specified correctly elsewhere, so the build handles it:
- Stage labels are stored by the seed and by "Add a lead", and a few calculations compare labels (point 16). The build stores and compares stage ids only (round-2 point 16 is the rule).
- Dead code: the
accessPending()readers, the private export list, the unusedFEEDconstant with a non-roster name, dead masking helpers, the unusedsendSegtoast. None of it is built. - The Users audit sorts its demo rows in insertion order and stamps them with the local clock. The build sorts by server time.
desk-records.jsholds\u2014values in Billing subscription rows. Billing is not built in this release.- The sign-in delivery figure is a stand-in. The build reads the delivery status of sign-in-code messages from
communication_messages. - The Light theme prop cannot override a saved dark theme. The build reads the saved preference first, then the system preference.
The prompt
Paste Block 1 and Block 2 as one message.
Block 1: the product you are extending
text
YOU ARE EXTENDING AN EXISTING APPLICATION, NOT BUILDING A NEW ONE.
This is round 3 of the QR setu Admin Panel correction, in prototype/admin-panel/ and
prototype/platform/. Rounds 1 and 2 are APPROVED except the points in Block 2. Keep everything
else exactly as it is: do not restyle, rename or restructure anything Block 2 does not name.
THE FILES INVOLVED
prototype/admin-panel/SignIn.dc.html staff sign-in
prototype/admin-panel/RBAC.dc.html Access control
prototype/admin-panel/Users.dc.html the people and accounts desk
prototype/admin-panel/Leads.dc.html Leads & CRM
prototype/admin-panel/Overview.dc.html the command centre
prototype/platform/staff-core.js the one role model and staff lifecycle
prototype/platform/users-core.js the user ecosystem model
prototype/platform/leads-core.js the lead model
prototype/platform/ops-signals.js the only cross-desk aggregate
prototype/platform/capabilities.js the reserved-panel registry
SCREENS.md the registry; update every row you change
No new screens and no new patterns are expected. List any NEW pattern you need, with one sentence
of why, before changing anything; otherwise go straight to the changes.Block 2: this round
text
ADMIN PANEL, ROUND 3. EVERY POINT BELOW IS SETTLED. DESIGN TO IT.
A. SIGN-IN AND ACCESS CONTROL
1. "Sign in with a different account" clears the person carried in the redirect (?who=), so the
next stop screen names whoever signs in next.
2. The lead handover sheet, when opened from Change role or End now, says the role change (or the
ending) waits until the leads have an owner. It never says "Deactivation" there.
3. The Extend sheet edits the new end date only; the start date is shown read only. Remove the
empty "How long" heading.
4. The existing-account refusal can be previewed on its own: seed an address on qrsetu.com that
already belongs to a QR setu customer account, and read the preview prop on update as well as
on mount.
5. When a sales role lapses, "Who is carrying what" on Leads no longer lists that person; their
open leads are in the unassigned queue with the reason, as they already are.
6. "Waiting on you" keeps the reserved Access requests tile (role editing and approvals) whether or
not anything is waiting. A reserved tile never depends on a count.
B. LEADS
7. Export writes a row to the lead activity trail, and its toast and subtitle name that trail. The
copy must not claim a log the export is not written to.
8. Remove the revival card's toast "Save it as a segment, then pick it as the audience in
Communications" (segments and sending are reserved).
9. Team: a rep who holds no open leads shows "No leads yet" instead of "-100% under average", and is
left out of the busiest-to-quietest spread in the headline.
10. Singular units everywhere: "1 day", never "1 days".
C. USERS
11. The record names every workspace the person belongs to, with their role in each (Owner,
Manager, Staff), never "member of 1 more". Values stay live; only the door into the Workspaces
desk is reserved.
12. Remove what is left of the saved-segment strip: the "8 saved" chip, "Everyone PLATFORM",
"Duplicate to change" and "The whole library". Segments show the one reserved presentation.
No message names users.write or users.read; those permissions do not exist.
13. Bulk suspend and block apply the scope that was chosen (Both holds the person and the business),
and the toast says what was held, for example "Suspended 3 people and their businesses".
14. "Unconverted leads" on Pulse is the number of open leads: not Won, Lost or Unqualified. The Leads
desk shows the same "open leads" number on its Overview, and Pulse reads that one number for
the figure, its share and its link.
15. The Audit tab uses verb words (suspended, blocked, revealed contact details for), newest first.
16. "Messages sent" on the record's chain is a Communications figure. Reserve it like the other
Communications figures: no number.
17. A consumer's record shows consumer facts only, and no merchant facts such as Customers.
D. OVERVIEW AND COPY
18. The Users tile on the Operations map counts registered people exactly as the vital does
(unconverted leads excluded), so the page shows one number.
19. The Shared dependencies subtitle does not state a count the rows contradict ("four").
20. "Already handled" does not say "today" over rows that go back weeks: say "Recent activity
across the desks".
21. The "All clear" demo keeps the live sign-in code figure instead of replacing it with "Nominal".
22. capabilities.js, the view-as-user note: say it is not ready yet, not "in a later round".
23. SCREENS.md admin rows match the design:
- crm delete is reserved;
- lead owners are Sales Manager and Sales Executive;
- the SignIn persona prop only names the person in a forced preview state;
- SetPassword has the saving and network states and a theme prop;
- the Users statuses include Deactivated for staff.
DELIVERABLES: the files above revised in place, SCREENS.md rows updated, and one line per point
(1 to 23) saying where it now lives.After it comes back
The same loop. The owner says it was passed. Then pull fresh, run the mirror checks (node admin-materialise.mjs, admin-graph.mjs, admin-verify.mjs, admin-review-check.mjs), and give a verdict per point. If every point is resolved, the owner approves the Admin Panel design. After that come the parity contracts (QRS-1420), the design review pages and increment 1. The account-holds prompt (PROMPT-2-account-holds-round-1-SHORT.txt) is sent after approval.
Cross-references
- Admin Panel MVP, round 2, the brief this round corrects.
- Admin Panel MVP, round 1.
- Account holds, round 1.