← Commit history

1.19.0: ONE app, ONE dashboard: if your app has a real UI, that IS the dock target; never build a second page

John Lauer ·9eed392fb4 ·1mo ago ·parent 0682220
2 files changed +40−1
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-ui-design",-  "version": "1.18.1",+  "version": "1.19.0",   "type": "skill",   "description": "The Adom UI Design System plus a bundle of focused UI skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths, dark-default, input-feedback, settings-layout). One install drops the whole set of skill files onto your container, plus shared icon assets (the settings cog) so every Adom app draws the same glyph.",   "dependencies": {},
skills/dock-dashboard/SKILL.md+39
@@ -55,6 +55,45 @@ Newbie scaffolding in regions 2 and 3 fades as the user levels up - see There is no third species. A dashboard that is "mostly a launch page but with its own status idiom" is a launch page that has not adopted the contract yet. +## ⛔ ONE APP, ONE DASHBOARD. Never build a second one.++**The test, before you write a line: does your app already have a UI your users actually+use? If yes, THAT is the dock target.** You add the contract's regions to it. You do not+build a separate page for the dock and leave the real one to be found some other way.++John's ruling, 2026-08-24, after finding pup shipping two: a bare launch page on one port+(header, prompts panel, four status pills, and nothing else) while its genuinely+sophisticated live-windows dashboard sat on another port, never wired to the dock.++> "the problem here with these cards is this makes the dashboard seem like it has no purpose.+> now here's what's weird. the pup does have quite a sophisticated dashboard and for some+> reason it never used it as its dockbar dashboard... we can't have pup having 2 different+> dashboards."++Two failures come out of this, and both are fatal to the point of the dock:++1. **The dock card opens a page with nothing on it.** Status pills and a prompts panel are+   FRAME, not content. A user who clicks your icon and lands on four green pills has been+   shown a waiting room. The contract's regions exist to wrap your app, not to substitute+   for it.+2. **Your real UI becomes undiscoverable.** The dock is how a user finds your app; if the+   thing it opens is not your app, the app effectively is not in the dock.++So:++- **Merge, do not duplicate.** Take the header, the newbie panel and the status pill row and+  put them ON your existing UI. One port, one URL, one page.+- **Retire the launch page** once merged; do not leave it serving on another port, where it+  will confuse the next person who probes your app (and any instance-enumeration check).+- If your app's real UI genuinely needs a moment to become useful (a long index, an empty+  first-run state), that is what the launch console and the newbie panel are FOR: they cover+  the wait, on the same page, and then get out of the way.+- The only apps that legitimately have a launch page as their whole dashboard are bridges+  with no UI of their own to show (a control panel IS their app).++**Ralph-test:** list every HTTP surface your app serves. If more than one of them renders+something a user would call "the dashboard", you have this bug.+ ## The token stub (copy-paste, then never hardcode again)  ```css