altitude-design 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  # AgentFleet
2
2
 
3
- Every agent working on one job, as a roster: grouped by what they need from you (needs you, working, done), each row saying the agent's state in words, what it's doing in one line, how long it has waited or run, where it is in its plan and what it has spent, with warnings for trouble that's coming (two agents changing one file, an agent making no progress). For supervising several agents at once; see [the research](https://github.com/richlaconte/altitude/blob/v0.4.2/docs/research/agent-orchestration/README.md).
3
+ Every agent working on one job, as a roster: grouped by what they need from you (needs you, working, done), each row saying the agent's state in words, what it's doing in one line, how long it has waited or run, where it is in its plan and what it has spent, with warnings for trouble that's coming (two agents changing one file, an agent making no progress). For supervising several agents at once; see [the research](https://github.com/richlaconte/altitude/blob/v0.5.0/docs/research/agent-orchestration/README.md).
4
4
 
5
5
  **Elevation: a record of agents, with live rows.**
6
6
  - **Rows** are the record: flush at rest, lifting one level when pointed at because selecting one opens it. The open agent is selected, as a table's row is: `accent-soft`, raised one level, `aria-current`.
@@ -130,7 +130,7 @@ Optional labels are `editLabel` (default `Edit ${label}`), `saveLabel` (“Save
130
130
 
131
131
  The canonical `InlineEdit` section in `build/previews.txt` renders a task title (in its heading font), a multiline description, the task's status (Select, on choose, with a rejected “Blocked”), assignee (Combobox, on choose) and estimate (a numeric Input), an independent filename table cell with this component, and “Ways to open”: a pencil and two fields on hover, with seams. A collapsed documentation harness selects deterministic fixtures before mounting, resets records and counters, delays validation, applies external updates, removes the filename consumer during work and opens a dialog comparison using the same validation and persistence adapter. Fixture controls and operation logs stay outside the product scene.
132
132
 
133
- Run `node checks/inline-edit.mjs` from `build/` after generating preview fixtures. `ALT_FIXTURE_ROOT=test/react19` selects the React 19 source fixtures. The checks cover editing in place (the value's text doesn't move, the control takes its font, the pencil and the field move nothing on hover, the caret lands where clicked, the seam, the announcement that clears itself), multiline (newline on Enter, Ctrl/Cmd+Enter, IME, Escape, caret at the end, growth to `maxRows`, line breaks in read mode), custom editors (focus, Escape layering, on-choose saves and rejections, unchanged choices, numeric validation), lifecycle races, retained input, uncertainty reconciliation, conflict latching, keyboard/IME, focus, disabled behavior and the four-scheme responsive/accessibility matrix. Automated checks do not replace the human screen-reader, touch, magnification or formative comparisons recorded in [Actions in place validation](https://github.com/richlaconte/altitude/blob/v0.4.2/project/ActionsInPlaceValidation.md).
133
+ Run `node checks/inline-edit.mjs` from `build/` after generating preview fixtures. `ALT_FIXTURE_ROOT=test/react19` selects the React 19 source fixtures. The checks cover editing in place (the value's text doesn't move, the control takes its font, the pencil and the field move nothing on hover, the caret lands where clicked, the seam, the announcement that clears itself), multiline (newline on Enter, Ctrl/Cmd+Enter, IME, Escape, caret at the end, growth to `maxRows`, line breaks in read mode), custom editors (focus, Escape layering, on-choose saves and rejections, unchanged choices, numeric validation), lifecycle races, retained input, uncertainty reconciliation, conflict latching, keyboard/IME, focus, disabled behavior and the four-scheme responsive/accessibility matrix. Automated checks do not replace the human screen-reader, touch, magnification or formative comparisons recorded in [Actions in place validation](https://github.com/richlaconte/altitude/blob/v0.5.0/project/ActionsInPlaceValidation.md).
134
134
 
135
135
  <!-- example: generated from build/previews.txt by build/previews.mjs. Edit the preview, not this section. -->
136
136
  ## Example
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "altitude-design",
4
- "version": "0.4.2",
4
+ "version": "0.5.0",
5
5
  "entry": "README.md",
6
6
  "design": "visual/README.md",
7
7
  "patterns": [
@@ -1,4 +1,4 @@
1
- # Altitude 0.4.2
1
+ # Altitude 0.5.0
2
2
 
3
3
  > Altitude's guidance for this installed version of altitude-design: the design rules, the task patterns and every component's guide. Height is the interface: settled content sits on the ground, anything live rises above it, anything waiting to receive sinks below it.
4
4
 
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "files": {
5
5
  "agent-setup.md": "57b4ba98719fce472e08226a5c784ed4b9eb20241904445825cb2287a84a0162",
6
6
  "app-skeleton.md": "bc70896a86f4c1dbd3467620562eec62ccf99a9356ff72a7eab8621f492554d9",
7
7
  "components/Accordion/README.md": "b166e499eb3604ef84a375818db3aec91c5459870b5d6cd3133ecbdf36e145d6",
8
- "components/AgentFleet/README.md": "d43cd4f622f4004eb97eb02db3c5575ccd230bb5c247539f0b36920626e306df",
8
+ "components/AgentFleet/README.md": "d6c2d1eb34fd6737b4e12c2e67102745ab04eb077b2b65c3efcc5710e3da6256",
9
9
  "components/AgentLanes/README.md": "247eb6e0ead0de5f15da920f083dbaa4150673723b081acf70e19026f982cd16",
10
10
  "components/AgentRequests/README.md": "e7ac986cef68b09b5a7df7d1c11cf44ef8d417a3d22f9436f7cea1d8b4190c18",
11
11
  "components/AILabel/README.md": "0002447d340029fe28652ed26c474c91edf89a0e23be300d24c198afb7086646",
@@ -57,7 +57,7 @@
57
57
  "components/HoldButton/README.md": "bb81a002a2d37701a84a04123fbabd8cb820c52befaacaaf881de48d12f733f5",
58
58
  "components/HoverCard/README.md": "23e6de1b79fa302b2ce168431fd15339b33132663911521594882f338c1ca366",
59
59
  "components/InlineCitation/README.md": "b3f66c18bdf054f818525fbcf5f5db36535d121289f6d0451413ac0803bf8edd",
60
- "components/InlineEdit/README.md": "d2f3d0d18894d4aa045a2db99934a1764a8abf1d66cd90c619e648f3e47f58fc",
60
+ "components/InlineEdit/README.md": "67f3100f86d388de9b24ed6afc7fb9f880d5cb2deaafddbed37e02ed4538d21e",
61
61
  "components/Input/README.md": "8b7df74399ce471bead1c81967e63ca1bb249aebd827abefd4fbf1a6a2a13e26",
62
62
  "components/InputOTP/README.md": "e1a17bca55de012b26f25dca299d7ffe01b21248efde19bea63ebeac4e2625aa",
63
63
  "components/ItemGroup/README.md": "87a1e6c3e124aec1012ef71dc69c3e5ab85feeb4735fa0b77db449a22692f6e8",
@@ -118,8 +118,8 @@
118
118
  "components/Trace/README.md": "62c571b2d96a83e5515988eacecd47de3e2c1a2452476d00645d1a26d3cbae3d",
119
119
  "components/Tree/README.md": "9fadf66c7d223653bd299362e997c814f06baf2a9c59f8ebc15ef9a0a24235e4",
120
120
  "evidence.json": "71e9602167286fb714419d0e89a80d4765b632c910d51875d1b167fd1ee499d9",
121
- "index.json": "9bf9dbe941aa6c26a25dc086845981256c5bc9f1c3d283c7ad5c396445a958dc",
122
- "llms.txt": "76bca13eb63ad1c2e48ae8633c7fcf675eb595ba763703728af0445da81c1cbd",
121
+ "index.json": "b962e470caf8d41b1e1027baeafa1cdd2db12325a31e5850aa59472bd7bfc8db",
122
+ "llms.txt": "086fee98bb1afb6b42808a887454aacd258d6bf917874ae258894e4e12cc582c",
123
123
  "pattern.schema.json": "abcb37bd5de4a74f27ac079e587e5d288b23e491569a73971f1a31131a37d309",
124
124
  "patterns/agent-action.json": "532915c25183d1a6093d9e14b929f3e49d29e400b116ef0612d933d70d49b09a",
125
125
  "patterns/agent-action.md": "a11e9d98a84d8a0fae755bae3e618e7daa2608f1f853cfe88e2e58ee74cc01e7",
@@ -199,15 +199,15 @@
199
199
  "references/project/components/src/settings.tsx": "957a04e37936746f2b6b4086d8e2f866ce71f7fb9dded8ba81fff56840206e01",
200
200
  "references/scripts/build-framework-fixture.mjs": "1b4a2d7ece0459d2c4df2ec067d8d3b9d00110f2af1cef3be6042ab8f9ea90c9",
201
201
  "rules.json": "552c8328f60adc9eef4aa9aeed098e3a5c617e993bd300781389da8ad0e402c9",
202
- "visual/ActionsInPlace.md": "f9d458aef8758eed83c11be10f5d166e6e60a6307bd14ae393d8c8bdd46e6dc2",
202
+ "visual/ActionsInPlace.md": "72f7437176c5a4618e31d4fb2cc8a82a8f0b759aa19d268b75ebcd9c8599b822",
203
203
  "visual/Charts.md": "9439a024d8123088f90bb49844f922ce50ba4f255d85e7e6324bb55eee07f287",
204
- "visual/Distinctiveness.md": "b97cec51b48b46205d25401cdea77dc3529f87bbd3f8745bdc0f0852ee6fccf9",
204
+ "visual/Distinctiveness.md": "31fa4f87316b24662a7fa3b3509c6aac32428a96866bc5b71ac6f9b743060723",
205
205
  "visual/Elevation.md": "50f2aeefd457e1a329cc80578b196c48cbf0c019a5f43d75901d92b4b4632c44",
206
206
  "visual/Fundamentals.md": "65120fd170ff8ea9f50b1498bfedc8c45dbe1a616bfccc32664213e5404d3a32",
207
207
  "visual/Mobile.md": "511db58119a1653c2c00e2ccb34c6cf943de93f2184dec0faf3228f563e0b1b7",
208
208
  "visual/Motion.md": "7fa4e7501b710a5599c7a8c99e531f2b9b1b4dfeba6a6a4d9716685d45f33d31",
209
209
  "visual/README.md": "08c3a9ef3ff53a0fb8f9f873240022edefc67739a16d1f50c3a47367f72fc9f9",
210
- "visual/Research.md": "24ed5d1c70232bfffad5b85ba9e69c1202bdb0665e978890737bfca1d5217e3c",
211
- "visual/Theming.md": "98836bf391626d5132a18040e2b57390c8167c258c097d15670bd6971046d98a"
210
+ "visual/Research.md": "295e573e45d8ca3753b8091d5ace15e868375aca34e697a01bebb6d85c2187ad",
211
+ "visual/Theming.md": "b8cfc8f9c8fa9d8b7179e25ca42caf15bc03ecd20a3d9a563c4872b95fe71f95"
212
212
  }
213
213
  }
@@ -6,12 +6,12 @@ The application chooses that policy from its domain. A danger button does not im
6
6
 
7
7
  ## Try the same example in two views
8
8
 
9
- - [Focused recovery preview](https://github.com/richlaconte/altitude/blob/v0.4.2/project/components/ActionsInPlace/preview.html) — archive, Undo, and restore later from Archived.
10
- - [Complete Files example](https://github.com/richlaconte/altitude/blob/v0.4.2/project/components/ActionsInPlace/preview.html#files) — rename with the exported InlineEdit, archive, recover, and permanently delete from Archived.
11
- - [InlineEdit comparison](https://github.com/richlaconte/altitude/blob/v0.4.2/project/components/InlineEdit/preview.html) and [Dialog presentation comparison](https://github.com/richlaconte/altitude/blob/v0.4.2/project/components/Dialog/preview.html).
9
+ - [Focused recovery preview](https://github.com/richlaconte/altitude/blob/v0.5.0/project/components/ActionsInPlace/preview.html) — archive, Undo, and restore later from Archived.
10
+ - [Complete Files example](https://github.com/richlaconte/altitude/blob/v0.5.0/project/components/ActionsInPlace/preview.html#files) — rename with the exported InlineEdit, archive, recover, and permanently delete from Archived.
11
+ - [InlineEdit comparison](https://github.com/richlaconte/altitude/blob/v0.5.0/project/components/InlineEdit/preview.html) and [Dialog presentation comparison](https://github.com/richlaconte/altitude/blob/v0.5.0/project/components/Dialog/preview.html).
12
12
  - Generated Storybook stories: `Patterns/ActionsInPlace`, `Inputs/InlineEdit`, and `Overlays/Dialog`.
13
13
 
14
- Both Files views use the same source and service in [`build/previews.txt`](https://github.com/richlaconte/altitude/blob/v0.4.2/build/previews.txt). The default has no fixture toolbar in the product. Expand “Example fixtures and source” below the scene to select the deterministic service behavior, reset records/counters, simulate an external change, or inspect accepted requests. “Connection interrupted after save” commits at 100 ms and loses its response at 1,200 ms; the UI must reconcile that result before offering recovery or retry.
14
+ Both Files views use the same source and service in [`build/previews.txt`](https://github.com/richlaconte/altitude/blob/v0.5.0/build/previews.txt). The default has no fixture toolbar in the product. Expand “Example fixtures and source” below the scene to select the deterministic service behavior, reset records/counters, simulate an external change, or inspect accepted requests. “Connection interrupted after save” commits at 100 ms and loses its response at 1,200 ms; the UI must reconcile that result before offering recovery or retry.
15
15
 
16
16
  ## Act and recover
17
17
 
@@ -458,6 +458,6 @@ Every state has text or an ARIA equivalent when motion and shadows are absent. N
458
458
 
459
459
  ## Verification and scope
460
460
 
461
- [`build/checks/actions-in-place.mjs`](https://github.com/richlaconte/altitude/blob/v0.4.2/build/checks/actions-in-place.mjs) exercises the canonical fixture model and browser interactions under React 18 and 19: duplicate requests, revision conflicts, uncertain outcomes, ordered feedback, dismissed/replaced recovery, targeted deletion, pending Close, old/new dialog sessions, focus recovery, reduced motion, increased contrast, forced colors, and narrow layouts. [The validation record](https://github.com/richlaconte/altitude/blob/v0.4.2/project/ActionsInPlaceValidation.md) distinguishes engineering evidence from remaining assistive-technology and participant gates.
461
+ [`build/checks/actions-in-place.mjs`](https://github.com/richlaconte/altitude/blob/v0.5.0/build/checks/actions-in-place.mjs) exercises the canonical fixture model and browser interactions under React 18 and 19: duplicate requests, revision conflicts, uncertain outcomes, ordered feedback, dismissed/replaced recovery, targeted deletion, pending Close, old/new dialog sessions, focus recovery, reduced motion, increased contrast, forced colors, and narrow layouts. [The validation record](https://github.com/richlaconte/altitude/blob/v0.5.0/project/ActionsInPlaceValidation.md) distinguishes engineering evidence from remaining assistive-technology and participant gates.
462
462
 
463
463
  [EditRegion](../components/EditRegion/README.md) now edits several fields of one record in place with this guide's session rules (issue #12 proposed ItemGroup, PropertyList, DataTable row expansion and Board card editing as its multi-field consumers). ConfirmAction and a shared action hook remain deferred. These demos do not establish two independent real application needs for those abstractions, and they do not establish a measured usability benefit. Structural activation counts and proposed design intent are not participant results.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Interfaces built by agents now have a look people recognise and distrust: purple gradients, Inter, a centred hero, three icon cards, a sidebar and a grid of equal cards on every screen. Altitude is made for apps that agents write, so it can fall into that look twice: through its own defaults, and through what agents compose from them. This chapter says how it stays out, and how we keep checking, because the look keeps moving.
4
4
 
5
- The evidence is in **Research** ("Generated interfaces converge"). Every tell, with its sources and where Altitude stands, is in [`tells.json`](https://github.com/richlaconte/altitude/blob/v0.4.2/project/tells.json). Looking generated is half the problem; the other half is breaking established rules (hierarchy, labelling, recovery, honesty), which [Fundamentals](Fundamentals.md) covers.
5
+ The evidence is in **Research** ("Generated interfaces converge"). Every tell, with its sources and where Altitude stands, is in [`tells.json`](https://github.com/richlaconte/altitude/blob/v0.5.0/project/tells.json). Looking generated is half the problem; the other half is breaking established rules (hierarchy, labelling, recovery, honesty), which [Fundamentals](Fundamentals.md) covers.
6
6
 
7
7
  ## Why it happens
8
8
 
@@ -622,7 +622,7 @@ A measurement, then a design review ([#97](https://github.com/richlaconte/altitu
622
622
  - **A pointer over the list holds the close.** A delayed close could move the next row under a pointer reaching for it. The close waits while a mouse is over the list, capped at `dur-settle`; touch has no hover, so it doesn't wait.
623
623
  - **`dur-linger` is 2000ms by judgement.** About four words read in roughly a second (Nielsen's 1s flow limit) plus a second to act; the top of the "second or two" asked for.
624
624
 
625
- Not yet tested with people: whether the close is noticeable enough at `dur-travel-3`, and whether waiting for the pointer to leave the list reads as lag. Both are open in [the validation record](https://github.com/richlaconte/altitude/blob/v0.4.2/project/ActionsInPlaceValidation.md).
625
+ Not yet tested with people: whether the close is noticeable enough at `dur-travel-3`, and whether waiting for the pointer to leave the list reads as lag. Both are open in [the validation record](https://github.com/richlaconte/altitude/blob/v0.5.0/project/ActionsInPlaceValidation.md).
626
626
 
627
627
  ### E47 · Can a chart Altitude doesn't draw keep its rules?
628
628
 
@@ -165,7 +165,7 @@ That gets shadcn's components onto Altitude's colors and shadows. The elevation
165
165
 
166
166
  ### Charts
167
167
 
168
- shadcn/ui's `Chart` is Recharts underneath (Tremor wraps Recharts too), so charts already built with it can take Altitude's colours and most of its chart rules without being rewritten. What they can't take is listed at the end. [`examples/shadcn-chart`](https://github.com/richlaconte/altitude/blob/v0.4.2/examples/shadcn-chart) is this setup, checked in both schemes by `build/checks/shadcn-chart.mjs`.
168
+ shadcn/ui's `Chart` is Recharts underneath (Tremor wraps Recharts too), so charts already built with it can take Altitude's colours and most of its chart rules without being rewritten. What they can't take is listed at the end. [`examples/shadcn-chart`](https://github.com/richlaconte/altitude/blob/v0.5.0/examples/shadcn-chart) is this setup, checked in both schemes by `build/checks/shadcn-chart.mjs`.
169
169
 
170
170
  **Map the palette.** Add the chart lines to the `@theme inline` block above, so Tailwind's `fill-chart-1` and the like are Altitude's slots:
171
171