← Commit history

Publish 1.6.0

John Lauer ·91b9f0b981 ·2mo ago ·parent 3fb4138
6 files changed +131−7
SKILL.md+1
@@ -421,6 +421,7 @@ This whole system ships as **one installable skill**. `adom-wiki pkg install ado | Skill | Governs | |---|---| | [**input-feedback**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/input-feedback/SKILL.md) | The acknowledgment doctrine: hover, mousedown/:active, and focus-visible states on EVERY interactive element - the UI answers 'yes, you just hovered me / pressed me' before the action even runs |+| [**settings-layout**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/settings-layout/SKILL.md) | The ah settings surface, reusable: sectioned teal-accent cards that EXPLAIN themselves in full sentences, inline live status, Install/Update/Uninstall rows with live consoles, and the portal-modal mechanics - every Adom app's settings dialog mimics this | | [**tooltips**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/tooltips/SKILL.md) | Great desktop tooltips: 600ms reveal, the fixed-div renderer, placement that never covers what you hover, edge-aware flipping, the z-index ladder | | [**floating-windows**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/floating-windows/SKILL.md) | Draggable floaty tool windows and HUDs that never get in the way | | [**toasts**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/toasts/SKILL.md) | Non-blocking confirmations, and the AI's live narration channel to the user |
install.sh+2
@@ -16,6 +16,8 @@ install_skill app-shell        skills/app-shell/SKILL.md install_skill ai-driven-apps   skills/ai-driven-apps/SKILL.md install_skill clickable-paths  skills/clickable-paths/SKILL.md install_skill dark-default     skills/dark-default/SKILL.md+install_skill input-feedback   skills/input-feedback/SKILL.md+install_skill settings-layout  skills/settings-layout/SKILL.md  echo "OK: Installed the Adom UI Design System plus 8 bundled skills to $DEST/." echo "Hint: Ask Claude 'what are the Adom color tokens', 'great tooltips', or 'make my app a joy to use'."
package.json+10−4
@@ -1,8 +1,8 @@ {   "slug": "adom-ui-design",-  "version": "1.5.1",+  "version": "1.6.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). One install drops the whole set of skill files onto your container.",+  "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.",   "dependencies": {},   "files": [     "SKILL.md",@@ -18,7 +18,9 @@     "skills/ai-driven-apps/SKILL.md",     "skills/clickable-paths/SKILL.md",     "skills/dark-default/SKILL.md",-    "screenshots/tokens.png"+    "screenshots/tokens.png",+    "skills/settings-layout/SKILL.md",+    "skills/input-feedback/SKILL.md"   ],   "scripts": {     "install": "./install.sh",@@ -84,5 +86,9 @@       "label": "make this UI responsive for mobile",       "prompt": "make this UI responsive for mobile"     }-  ]+  ],+  "hero": {+    "type": "image",+    "path": "screenshots/hero.png"+  } }\ No newline at end of file
page.json+5−3
@@ -1,8 +1,8 @@ {   "slug": "adom-ui-design",-  "version": "1.5.1",+  "version": "1.6.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). One install drops the whole set of skill files onto your container.",+  "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.",   "dependencies": {},   "files": [     "SKILL.md",@@ -18,7 +18,9 @@     "skills/ai-driven-apps/SKILL.md",     "skills/clickable-paths/SKILL.md",     "skills/dark-default/SKILL.md",-    "screenshots/tokens.png"+    "screenshots/tokens.png",+    "skills/settings-layout/SKILL.md",+    "skills/input-feedback/SKILL.md"   ],   "scripts": {     "install": "./install.sh",
skills/settings-layout/SKILL.mdadded+111
@@ -0,0 +1,111 @@+---+name: settings-layout+user-invocable: true+description: >-+  The Adom settings surface: how ah (Adom Hydrogen) lays out its Settings, and how every other+  Adom app's settings dialog should mimic it. Covers the two variants (full settings PAGE with+  sidebar outline, and compact settings MODAL for a panel), the settings-card anatomy (elevated+  card, 3px teal left accent, title with inline status, descriptive prose paragraph, control rows,+  dividers), the descriptive-copy doctrine (every section EXPLAINS itself in full sentences, e.g.+  naming the exact hooks it installs), Install/Update/Uninstall row patterns with live consoles,+  and the modal mechanics (portal to body, viewport clamp, draggable header, Escape/click-outside).+  Read BEFORE building any settings dialog, preferences pane, or config UI in an Adom app.+  Trigger words: settings dialog, settings modal, settings layout, preferences pane, config ui,+  settings card, options dialog, app settings, settings panel, mimic ah settings.+---++Parent skill: **adom-ui-design**++# Settings layout - the ah settings surface, reusable++**The doctrine (John, 2026-08-17, verbatim):** "can you make the settings dialog more+descriptive the way the settings is for ah? and make it look similar? in particular i want you+to explain which hooks you hook into." A settings surface in Adom is not a terse grid of+switches. Every section is a CARD that teaches: what this group of controls does, how it works+underneath, and exactly what pressing each button will change. If a section installs hooks, it+NAMES the hooks. If a toggle filters a view, it says what hides and what survives.++Reference implementations (both live in adom/hydrogen-desktop):+- FULL PAGE: `src/lib/components/editor/settings/SettingsPanel.svelte` (sidebar outline ++  sectioned cards + footer).+- COMPACT MODAL: the AI Threads panel settings in+  `src/lib/components/editor/panels/PanelAiThreads.svelte` (560px portal modal, three cards).++## Pick the variant++- **Full settings page** (an app's main Settings): left sidebar OUTLINE (section list, click+  scrolls; active section highlighted) + scrolling editor column of cards + a footer note+  ("Settings are stored on this machine...") with a Restore-defaults button.+- **Compact settings modal** (a panel or widget's own settings): a single centered modal,+  width ~560px, max-height 70vh with internal scroll, stacked cards. No sidebar.++## The settings-card (the atom both variants share)++```css+.settings-card {+  background: var(--elevated, #1c2128);+  border: 1px solid var(--border, #30363d);+  border-left: 3px solid color-mix(in srgb, var(--accent, #00b8b1) 45%, transparent);+  border-radius: 10px;+  padding: 0.9rem 1.1rem 1rem;+  margin-bottom: 1rem;+}+.card-title    { font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 10px; }+.card-status   { font-size: 11px; color: var(--text-2, #8b949e); font-weight: 400; }  /* inline in the title */+.card-status.ok{ color: #3fb950; }+.card-desc     { font-size: 12px; line-height: 1.55; color: var(--text-2, #8b949e); }+.card-desc code{ font-size: 11px; background: rgba(110,118,129,0.2); padding: 1px 4px; border-radius: 4px; }+.divider       { height: 1px; background: var(--border); margin: 0.55rem 0; }+```++Anatomy, in order, inside every card:+1. **Title row**: the section name, plus LIVE STATUS inline ("active", "not installed",+   "v0.147.0") in `.card-status` - green when good. Status is recomputed truth, never a cached+   claim.+2. **Descriptive paragraph(s)**: full sentences explaining what this section does and HOW.+   The ah hooks card names each hook it installs (SessionStart, UserPromptSubmit, Stop,+   Notification) with a one-line plain-language consequence for each, states the safety+   contract ("a 2-second-capped HTTP post that can never block or fail Claude itself"), and+   the honest caveat ("threads already running when the hook installs will not report until+   restarted"). That is the bar.+3. **Control rows**: label + control + inline status + action buttons, one row per control,+   dividers between them. Checkbox labels are the human name ("Claude Code"), not the key.+4. **Consequence honesty**: a control that does nothing yet says so; a destructive button is+   visually distinct (red text/border) and never offered on things that must not be removed.++## Rows with lifecycle actions (Install / Update / Uninstall)++The ah Monitored-AIs pattern: `[checkbox + name] [status: version or "not installed"]+[Install|Update] [Uninstall?] [Details toggle]`.+- The button LABEL reflects state: Install when absent, Update when present. Never show+  "installed" next to a button that says Install.+- Uninstall is a danger-styled secondary button, only where removal is legitimate.+- Long-running actions stream a LIVE CONSOLE under the row (dark monospace box, real command+  output line by line, exit code, then a verify line proving the result). Silent multi-minute+  buttons are forbidden.+- An expandable "Details" per row for deep diagnostics (paths, versions, folders, checks with+  green/red marks) keeps the header row compact.++## Modal mechanics (compact variant)++- **Portal the modal to document.body.** Panels live inside transformed ancestors;+  position:fixed resolves against the transform and the modal renders invisibly clipped+  (ah shipped this bug; the portal is the fix). Clamp within the viewport.+- Draggable by its header; close via the X, Escape, and click-outside; title row is+  "<Thing> Settings".+- Overlay dims the app behind; the modal owns scroll (max-height ~70vh).++## Copy rules++- Full sentences, present tense, second person where natural. No em-dashes ever (Adom rule).+- Explain the MECHANISM, not just the setting ("a cheap signature check on the interval below,+  and a full re-census only when the tab layout changes").+- State honest limitations inline, not in docs nobody reads.++## Input feedback + testing++Every button, checkbox, toggle and row follows the **input-feedback** sub-skill (hover+acknowledgment, instant :active press, :focus-visible ring). Ralph-test the surface per the+adom-ui-design loop: open it for real, screenshot, READ the pixels (a modal that "opened" but+rendered clipped passes APIs and fails humans), and verify every status string against ground+truth before shipping.
uninstall.sh+2
@@ -2,6 +2,8 @@ set -e DEST="$HOME/.claude/skills" for n in adom-ui-design tooltips floating-windows toasts responsive-ui app-shell ai-driven-apps clickable-paths dark-default skill-authoring; do+remove_skill input-feedback 2>/dev/null || true+remove_skill settings-layout 2>/dev/null || true   rm -rf "$DEST/$n" done echo "OK: Removed the Adom UI Design System and its 8 bundled skills."