# @rj/admin-kit patterns catalogue (basic + advanced power-ups)

**Client:** brand-006-rj-laravel-admin (RJ Laravel Admin) · **Written:** 2026-10-18 · design only, no code. Generated by `phase-1/kit/src/patterns.py` from `patterns_data.py`; do not hand-edit.
**Decided by:** Frank, in chat 2026-10-18. Frank: "these should be logged in the admin kit, the basic ones and the advanced ones."
**Totals:** 24 basic (all adopted) · 29 advanced: **6 adopted**, **3 maybe**, **20 parked**. Front-door line: "24 basic + 6 advanced adopted, 3 maybe, rest parked".
**Live:** [patterns page](https://kit.pina-brand-006-rj-laravel-admin.pages.dev/patterns/) (phone: `/patterns/m/`) · demos: [basic](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/) and [advanced](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/) · components: [`CONTRACT.md`](CONTRACT.md) and the [families hub](https://kit.pina-brand-006-rj-laravel-admin.pages.dev/families/).
**Package home:** the kit lives in its own repo, `RJmtm/admin-kit` (decided by Frank, 2026-10-18; `phase-0/STACK-AND-PACKAGES.md` §5.2).

**Status words.** *Adopted*: build it. *Maybe*: Frank likes it, the use case is not confirmed; keep the design, do not build yet. *Parked*: kept on the list with no current use case; revisit when one appears.
**Backend helpers** are the `H` ids in [`BACKEND-HELPERS.md`](BACKEND-HELPERS.md). **Kit components** are exports in [`CONTRACT.md`](CONTRACT.md) (family hub: `families/<slug>/`).

## Basic power-ups (round 1): all 24 adopted

| # | Pattern | Status | What it does | Demo | Backend helper | Kit components |
|---|---|---|---|---|---|---|
| 01 | ⌘K command palette | Adopted | One box that jumps to any page, order or retailer, and runs actions. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-palette) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-palette) | H04 | CommandPalette · Combobox |
| 02 | Find order, always in the header | Adopted | Type an order number, customer or retailer from any page. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-findorder) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-findorder) | none | AppShell (header) · CommandPalette |
| 03 | Keyboard shortcuts + “?” cheat sheet | Adopted | j / k move rows, x selects, e edits, ? shows the list. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-keys) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-keys) | none | DataTable · AppShell |
| 04 | Recently viewed + pinned records | Adopted | A strip of the last records you opened; pin the ones you keep going back to. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-recent) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-recent) | H01 | CommandPalette (Recent) · AppShell |
| 05 | Saved views & column presets | Adopted | Save a filter + columns as your own tab. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-views) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-views) | H01 | SavedViews · FilterBar · ColumnChooser |
| 06 | Filter chips that live in the URL | Adopted | Every filter is a removable chip, and the link reproduces the list. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-filters) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-filters) | none | FilterBar · Pagination |
| 07 | Job tray in the corner | Adopted | Exports, imports, print runs and vision re-runs keep running while you work. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-tray) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-tray) | none | JobsButton · JobsDropdown · JobRow · JobsSheet · JobToast |
| 08 | Bulk action bar with batch progress | Adopted | Select many rows, act once; big selections go in batches of 100. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-bulkbar) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-bulkbar) | H16 (dry-run improves it) | BulkBar · DataTable |
| 09 | Prepare → open PDF, with cloud-print status | Adopted | Print buttons show “preparing…”, then open the PDF in a new tab. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-pdf) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-pdf) | none | DocumentLink · PrintJobStatus |
| 10 | Peek side-sheet (and pin to split view) | Adopted | Open a record in a panel over the list; pin it to keep list and record side by side. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-peek) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-peek) | none | SplitPane · RecordHeader |
| 11 | Hover cards | Adopted | Rest on a retailer or order name to see the key facts, no click. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-hover) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-hover) | none | ColumnTypes · RecordHeader |
| 12 | Copy any ID in one click | Adopted | Order numbers, fabric codes, batch IDs copy with one click. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-copy) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-copy) | none | ColumnTypes · RecordHeader |
| 13 | Activity side panel | Adopted | Who changed what and when, before → after, on every record. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-audit) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-audit) | H02 | Timeline · AuditRow · DiffViewer |
| 14 | Empty states that offer the next step | Adopted | An empty list says why, and gives the one button that fixes it. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-empty) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-empty) | none | EmptyState · ErrorState · NotAvailable |
| 15 | Density switch | Adopted | Compact (30px rows) for big tables, comfortable for reading. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-density) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-density) | H01 | AppShell (toolbar) · DataTable |
| 16 | Inline edit with an undo toast | Adopted | Change a value in place; it saves, and “Undo” stays on screen. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-inline) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-inline) | none | InlineEditCell · DataTable |
| 17 | “Someone else changed this” banner | Adopted | If a colleague saved first, you see what changed and choose. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-conflict) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-conflict) | H03 | SaveBar · Banner · MeasurementGrid · DiffViewer |
| 18 | Confirmation ladder (typed for the scary ones) | Adopted | Plain confirm, then confirm with consequences, then type the words. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-typed) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-typed) | none | ConfirmDialog · MoneyInput |
| 19 | Floating “unsaved changes” bar | Adopted | A dark bar slides up: how many changes, Save, Discard. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-savebar) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-savebar) | none | SaveBar · UnsavedGuard · FormSection |
| 20 | Live / stale / offline banner | Adopted | A quiet dot says the list is live; if the connection drops, it says so. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-stale) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-stale) | none | Banner · AppShell |
| 21 | Times in my timezone, both on hover | Adopted | “3 h ago” in the list; hover shows the exact time in your zone and UTC. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-time) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-time) | none | DateTime · ClockButton · TimezoneSelect |
| 22 | English / 中文 switch | Adopted | Each person picks their language; menu, labels and dates follow. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-locale) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-locale) | none | LocaleToggle · BilingualField |
| 23 | Motion set | Adopted | Page change, sheet open, row expand, toast, progress: each with one crisp timing. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-motion) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-motion) | none | tokens.css motion tokens (every overlay) |
| 24 | Skeleton loading | Adopted | The table's shape appears at once, then fills in; no blank screen. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/#p-skeleton) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/m/#p-skeleton) | none | DataTable (loading) · states |

Frank, in chat 2026-10-18: loved all 24. Their needs-backend items are H01 (saved views, density, recent / pinned across devices), H02 (activity panel) and H03 (conflict banner).

## Advanced power-ups (round 2): 6 adopted, 3 maybe, 20 parked

| # | Pattern | Status | What it does | Demo | Backend helper | Kit components |
|---|---|---|---|---|---|---|
| 01 | Who else is here (presence + soft edit lock) | Parked | Avatars on a record show who is viewing or editing it; a field someone is editing shows their name. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-presence) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-presence) | H07 (H03 hard guard) | RecordHeader · Banner · SaveBar |
| 02 | Comments and @mentions on any record | Parked | A thread on every order, retailer, design or fabric code; @name notifies. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-comments) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-comments) | H10, H08 | Thread · Combobox (@mention) |
| 03 | Watch a record → notification inbox | Parked | Follow an order, ticket or container; every status change lands in one inbox. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-watch) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-watch) | H11 | NotificationCentre · RecordHeader |
| 04 | While you were away (shift hand-over digest) | Parked | When London logs in, one card says what Shanghai changed on the orders they follow. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-digest) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-digest) | H12 (H11, H02) | NotificationCentre · Timeline |
| 05 | One search across everything | Adopted | Orders, retailers, fabric codes, tickets and designs from one box: the header search bar / ⌘K. **Frank's note:** Frank: "I thought you'd give me that in the search bar anyway, a really cool search bar." Delivered inside the header search bar / ⌘K, not as a separate page. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-search) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-search) | H04 | CommandPalette · Combobox · AppShell (header search) |
| 06 | Say it in ⌘K (“hold RJ-84213”, “stuck in QC > 5 days”) | Parked | Type a sentence; ⌘K turns it into a filter you can open or an action you confirm. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-nlk) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-nlk) | H05 (H04, H09) | CommandPalette |
| 07 | Do that again (⌘.) | Parked | After holding one order with a reason, ⌘. repeats the same action on the next. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-repeat) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-repeat) | none | CommandPalette · JobToast |
| 08 | My home: pinned numbers | Adopted | Pin the counts you care about (my on-hold orders, QC late) on your own home. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-home) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-home) | H01, H06 | KpiTile · SortableList · FilterBar |
| 09 | Stuck-in-phase timers | Parked | Every order row shows how long it has sat in its phase against the target. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-sla) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-sla) | H09 | DataTable · ColumnTypes · KpiTile |
| 10 | Why is this order here? | Parked | One plain-language timeline: what put the order in this state. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-explain) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-explain) | H13 (H09) | Timeline · RecordHeader |
| 11 | Time-travel a record (scrub, diff, restore one value) | Parked | Drag back through a record's history, see each change, restore one value. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-travel) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-travel) | H02, H14 | Timeline · DiffViewer |
| 12 | Do it later (scheduled actions) | Parked | “Release this hold at 09:00 Shanghai”: pick a time in any zone. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-schedule) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-schedule) | H15 | CronBuilder · DateTime |
| 13 | See the impact before a bulk write | Adopted | Every bulk action shows “288 will change, 24 already set, 3 skipped” before you confirm. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-dryrun) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-dryrun) | H16 | BulkBar · ConfirmDialog |
| 14 | Undo a whole bulk run (10-minute window) | Adopted | After a bulk change, one button puts every row back the way it was. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-undo) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-undo) | H17 (own before-values; H02 optional) | BulkBar · JobToast · JobRow · Timeline |
| 15 | Second approver for money (maker–checker) | Parked | Wallet credits over a limit, voids and revoke-all wait for a second person. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-checker) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-checker) | H18 | ConfirmDialog · MoneyInput · Timeline |
| 16 | See the admin as someone else's role | Parked | A super admin previews the menu and buttons exactly as a support user sees them. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-asrole) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-asrole) | H20 | AppShell · Banner |
| 17 | Paste from Excel into a grid | Adopted | Paste 50 rows straight from a sheet; every cell is checked before anything is saved. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-paste) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-paste) | H21 | ImportFlow · ReviewStep · MatrixEditor |
| 18 | Import remembers your column mapping | Maybe | The second time you import a sheet with the same headers, the mapping is already done. **Frank's note:** Cool, use case unconfirmed (Frank). | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-mapmem) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-mapmem) | H01 | ImportFlow |
| 19 | Trends inside the table | Maybe | A tiny 12-week line next to each retailer (orders) and factory (QC). **Frank's note:** Cool, use case unconfirmed (Frank). | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-spark) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-spark) | H22 | ColumnTypes (sparkline) · ChartFrame |
| 20 | Compare two records side by side | Maybe | Pick two designs, two retailers' pricing or two orders' measurements and see the differences. **Frank's note:** Cool, use case unconfirmed (Frank). | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-compare) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-compare) | none | DiffViewer · SplitPane |
| 21 | Totals for the filtered set | Adopted | A strip under the filters counts the whole filtered set by status, express, factory. **Frank's note:** Frank: "very useful". | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-totals) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-totals) | H06 | FilterBar · KpiTile · DataTable |
| 22 | Scan the QR to open it | Parked | Point the phone at an order or accessory QR label and the record opens. **Frank's note:** Frank: exciting tech, needs a clear use case: who and for what. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-scan) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-scan) | H23 | QrDisplay |
| 23 | Keeps working when Wi-Fi drops | Parked | QC ticks and verdicts made offline wait in a queue and send when the connection returns. **Frank's note:** Frank: "we don't need it". | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-offline) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-offline) | H24 (H03) | Banner · JobToast |
| 24 | Swipe photo verdicts | Parked | Flagged vision-check photos one at a time: swipe right PASS, left FAIL. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-swipe) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-swipe) | none | PhotoReview · VerdictButton |
| 25 | Ping me when it's done | Parked | Start an export or print run, close the tab; your device pings when it finishes. **Frank's note:** Frank: more for a consumer app. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-ping) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-ping) | H25 | JobToast · NotificationCentre |
| 26 | Ticket summary + suggested next step | Parked | Long tickets open with a 3-line summary and one suggested action. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-aisum) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-aisum) | H26 | Thread · AiSuggest |
| 27 | Anomaly flags on orders | Parked | Small flags where something looks off, such as a chest measurement far from the norm. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-flags) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-flags) | H19 (H09) | Banner · DataTable · ColumnTypes |
| 28 | Health strip for super admins | Parked | One thin line: jobs waiting, jobs failed, late scheduled tasks. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-health) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-health) | H27 | KpiTile · AppShell |
| 29 | Out of stock? Closest cloths in stock | Parked | When a cloth is out, show the three nearest in-stock cloths. | [desktop](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/#p-similar) · [phone](https://powerups.pina-brand-006-rj-laravel-admin.pages.dev/advanced/m/#p-similar) | H28 | ClothPicker · SwatchPicker |

## Backend helpers the picks need

| Helper | Needed by (adopted) | Request |
|---|---|---|
| H01 | R1 saved views, density, recent / pinned · adv #08 My home | **file now** |
| H02 | R1 activity side panel | **file now** |
| H03 | R1 conflict banner (verify the 409 on staging) | **file now** |
| H04 | adv #05 One search (header search bar / ⌘K) | **file now** |
| H06 | adv #08 My home, adv #21 Totals for the filtered set | **file now** |
| H16 | adv #13 Impact before a bulk write | **file now** |
| H17 | adv #14 Undo a whole bulk run | **file now** |
| H21 | adv #17 Paste from Excel | **file now** |
| H22 | adv #19 Trends inside the table (maybe) | decide later |

Backlog (nothing adopted needs them): H05, H07, H08, H09, H10, H11, H12, H13, H14, H15, H18, H19, H20, H23, H24, H25, H26, H27, H28.

## Dashboard power-ups (parked 2026-10-19)

Frank, 2026-10-19: dashboard round 2 is accepted ("I green light the dashboard, I accept it"); the 18 power-ups are "skip for now, save to our global RJ admin file for future reference by me if I need". Status of every row below: **`parked`**. ★ = flagged on the round-2 board as **recommended if revisited** (9 of 18).

- Live demos: https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/ (phone `/powerups/m/`); each row links its card.
- Source: `phase-3/flagships/dashboard/powerups/src/` (`dpu-data.js` specs, `dpu-demos.js` demos). Round brief: `phase-3/flagships/dashboard/DASHBOARD-R2.md` §4.
- Backend helper ids: **H01** per-staff prefs store (GET/PUT `/admin/me/prefs/dashboard`) · **H06** order counts · **H08** admin picker · **H29** role default layouts · **H30** share a layout · **H31** wall-screen display token (decision) · **H32** "chased today" log. H29 to H32 are tagged *backlog (parked with dashboard power-ups)* in `PROPOSALS.md` (PR-083 to PR-086). H01 and H06 are NOT parked: other adopted items still need them (saved views, My home tiles, totals strip).

| # | Pattern | ★ | Status | Backend | Components | Demo |
|---|---|---|---|---|---|---|
| 01 | Drag and drop widgets, resize them (snaps to 3·4·6·8·12 columns) | ★ | parked | H01 | SortableList (dnd-kit), widget grid, resize handle | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-dnd) |
| 02 | Rearrange with the keyboard (Space, arrows, Space, Esc, live region) | | parked | none (save via H01) | SortableList KeyboardSensor, live region | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-kbd) |
| 03 | Density per widget (compact or comfortable) | | parked | none (H01 field) | density switch, widget header | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-density) |
| 04 | Your own screens, in your order (reorderable tabs, rename, duplicate, delete) | ★ | parked | H01 | tabs, SortableList, row menu | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-screens) |
| 05 | Role default layouts (super admin publishes; reset to role default) | | parked | H29 (new) | layout editor, confirm, role picker | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-role) |
| 06 | Share a layout (preview, then Use or Dismiss) | | parked | H30 (new) + H08 picker + notifications | admin picker (combobox), notification item, layout preview | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-share) |
| 07 | Widget library: add and remove (Queue Health, Factory countdown, Factory load live here) | ★ | parked | H01 | drawer, widget card with live preview | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-library) |
| 08 | Collapsed by default, per widget | ★ | parked | H01 | widget header, disclosure | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-collapsed) |
| 09 | Only show what is meaningful (Always, Shrink when empty, Hide when empty) | ★ | parked | none (counts already in `admin.dashboard.index`; setting in H01) | widget header, empty state | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-meaningful) |
| 10 | Pinned numbers (#08, adopted in round 1; count tiles that open a filtered list) | | parked | H01 + H06 | KPI tile, filter-bar link | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-pinned) |
| 11 | Filter a widget: my factories, hide retired (C, WZ, W) | | parked | none (H01 field) | filter chips, countdown widget | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-filter) |
| 12 | Refresh indicator and last updated, stale state (60 s poll, paused when hidden) | ★ | parked | none (polls `admin.dashboard.index`) | widget header, status dot, toast | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-refresh) |
| 13 | Focus mode for a wall screen (one widget full screen, clock, F / Esc) | ★ | parked | none signed-in; unattended TV = H31 display token (decision) | full-screen widget, clock | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-focus) |
| 14 | New since you last looked (+N new overdue, Mark seen) | ★ | parked | H01 (`last_seen`) | countdown widget, count badge, row dot | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-since) |
| 15 | See the WeChat text before you copy (hover preview, 中文 switch, toast) | | parked | none (text built like the chase formatters, byte-identical) | popover preview, copy button, toast | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-copyprev) |
| 16 | "Chased today" stamp on a factory (who and when, resets each Shanghai business day) | | parked | H32 (new) | countdown widget, stamp, confirm | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-chased) |
| 17 | Agent activity · today (sends by type, in flight, failed, latest jobs) | ★ | parked | exists: `admin.orders.fabric-jobs.index` + `admin.orders.print-jobs.index` (`since=today`) | KPI tiles, job list, status badges | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-agent) |
| 18 | Parked widgets kept specified: Queue Health, Factory countdown, Factory load | | parked | exists (`admin.dashboard.index` queue_stats, `admin.orders.due`); live factory load needs per-piece start/end | countdown, heat grid (gantt r2 components) | [demo](https://dashboard.pina-brand-006-rj-laravel-admin.pages.dev/powerups/#p-parked) |

Revisit order if this is ever picked up: the 9 starred rows. Five of them (01, 04, 07, 08, 14) need only H01; 09, 12 and 13 need nothing new; 17 uses operations that already exist.
