Commit Graph
4755 Commits
Author SHA1 Message Date
jason.woltje b52adc8411 Add the organizations CLI E2E on a scratch instance with a fixture worker turn 2026-11-07 11:47:07 -06:00
jason.woltje 2d8522887c Protect shared proxy organization keys 2026-11-07 11:42:56 -06:00
jason.woltje 7b542a3f06 Merge branch 'org/s5' into org/s6 2026-11-07 11:36:05 -06:00
jason.woltje 9df88fb251 Add Settings > Organizations page
Form and live JSON preview over one document, field errors with their
JSON path, the save receipt, and setup cards that name the CLI verb each
step equals. serve.mjs mounts org-admin.mjs with the existing origin and
CSRF fencing.
2026-11-07 11:36:01 -06:00
jason.woltje 2259ac3dd8 Add organization create and setup handlers for the WebUI
org-admin.mjs serves the S6 routes over the C2 organization service:
template, validation with JSON paths, create, edit with if-revision, and
guided setup steps that read their receipt back before acting and never
reinitialize. Receipts reach the browser with host paths relative to the
data and config directories.
2026-11-07 11:36:01 -06:00
jason.woltje 487a2e7fa0 Merge branch 'org/s1' into org/s5
# Conflicts:
#	scripts/mosaic
2026-11-07 11:32:05 -06:00
jason.woltje 56de6fbfba Route mosaic dev and run evidence, and pass the fixture to a dev-owner bus 2026-11-07 11:30:44 -06:00
jason.woltje 5dcc5bf77c Add mosaic run evidence
Read-only: finds a thread's launch and end records in the organization launch log and checks each run's session.json, bundle manifest digests and turn stderr files.
2026-11-07 11:30:44 -06:00
jason.woltje 3723cc56ec Add mosaic dev fixture init, status and stop
Starts the fixture provider's loopback endpoint for a named dev instance and records it under the data root. Refuses the default instance, a configured proxy, provider credentials in the environment, a non-loopback bind and a second fixture. fixtureLauncherOptions hands the endpoint to the launcher as its session proxy context.
2026-11-07 11:30:44 -06:00
jason.woltje 24e240d44e Scope buses to organization roots 2026-11-07 11:29:13 -06:00
jason.woltje 9758c732cd Merge branch 'org/s0' into org/s3 2026-11-07 11:21:39 -06:00
jason.woltje 0d0a9fbdc9 Add deterministic fixture model provider and loopback endpoint 2026-11-07 11:21:35 -06:00
jason.woltje 3456d93af0 Implement organization setup commands 2026-11-07 11:17:31 -06:00
jason.woltje abaec7dcc5 Add standalone proxy lock prototype 2026-11-07 11:16:00 -06:00
jason.woltje ecc426819e Disable shared proxy usage drains by default 2026-11-07 11:15:55 -06:00
jason.woltje d4400050d0 Add organization registry and service interfaces 2026-11-07 11:08:29 -06:00
jason.woltje c8d6d12fe3 Restore Vars spacing and name the Business file card in Settings 2026-11-07 10:38:09 -06:00
jason.woltje fb190721bf Move Business into Settings 2026-11-07 10:24:36 -06:00
jason.woltje d00eb351e6 fix(webui): keep long breadcrumbs, tabs and speaker names inside narrow layouts
S15 review fixes on top of a584c08ad.

- Breadcrumb: from 700px the project name stops at 40% and a long current
  label ellipsizes after it, so a long Conversation title no longer pushes
  the page wider than the window. Under 700px the current label is hidden
  and the project name shrinks as before.
- Details keeps its size beside a long Conversation title instead of
  squeezing to a vertical label (also present on 7c664fac9).
- The active tab is brought fully into the strip after counts load, after
  a refresh repaint and when a tab receives keyboard focus.
- Long speaker names wrap between words at narrow zoom; the time stays
  whole.

Tests: three new S15 browser tests, red on a584c08ad sources and green
here. S10-S15 each alone 3 times green; webui 952/0/0.
2026-11-07 09:13:12 -06:00
jason.woltje a584c08ade fix(webui): polish room and conversation layouts 2026-11-07 07:54:28 -06:00
jason.woltje 7c664fac91 fix(webui): finish scroll classification when Tab lands mid-settle
A Tab outside the transcript while a stale matching scroll was still being
classified deleted the settling pin, which cancelled the classification.
Tab moves no transcript, so no later scroll event decided it, follow stayed
on and the next growth pulled the reader to the tail.

The classification now has its own mark. Reader input drops only the pin
provenance that a repaint reads; the two-frame check still runs.

Room and Conversation 700x700 cases: bf6e92232 fails 2/2 in 3 of 3 runs
(5017 to 5267, 5135 to 5385); this commit passes 4/4 in 3 of 3.
2026-11-07 07:27:10 -06:00
jason.woltje bf6e92232e Preserve transcript pin through room repaint 2026-11-07 06:57:26 -06:00
jason.woltje 94c9f04f5b fix(webui): keep Room details at the right edge in short windows
In the short desktop Room layout the section title sat in the first grid column, so Room details ended mid-row. The title now spans the row and the members line sits right-aligned before the button, capped so long names ellipsize.
2026-11-07 06:37:13 -06:00
jason.woltje 7f31368a1e fix(webui): stop truncating short member chips in the Room composer
The chip's percentage max-width resolved against a content-sized picker
column, so even a single short name was cut off. Cap chips at 16em and
test a one-member Room for whole chip names.
2026-11-07 05:53:03 -06:00
jason.woltje d13afaac3d fix(webui): give the Room message field its column in short windows
fit-content() is not valid inside minmax(), so the browser dropped the
composer column rule and the field fell into a narrow implicit column.
Use fit-content(50%) for the picker and test the field's share of the row.
2026-11-07 05:42:13 -06:00
jason.woltje 2960e8e9a9 fix(webui): place every Room row in the short layout and bound long member lists
Review fixes for S13: the closed-room notice and library line sit above the
messages, the members summary keeps one line (full names in Room details),
the recipient picker is bounded with truncated chips, and the icon-only Room
details button keeps a 44px target. Adds long-member and closed-room tests at
1440x700 and 700x541.
2026-11-07 05:28:44 -06:00
jason.woltje e27263f455 fix(webui): keep the Room message box in view in short desktop windows
At 100% zoom in windows 541-760px tall the Room page was 60px taller than
the window and the Send to room button started cut off (S10's 160px log
minimum). A short-window Room grid moves the members line beside the
section title and puts the composer on one row; under 650px the header
compacts. Keyed on the CSS viewport only, so 2x displays get the same
layout; page-flow layouts are unchanged.
2026-11-07 04:59:16 -06:00
jason.woltje 0e34b30770 fix(webui): keep a short scroll up off the tail in zoomed transcripts
An upward reader scroll that left the newest message's end at the
viewport bottom still read as at tail, so new content pulled the reader
down past the composer pin. The message-end tail position now counts
only on a downward scroll. A channel-disabled Conversation pins the
newest message instead of a composer that cannot send. S11 and S12
visibility checks require the whole newest message whenever it fits
above the composer.
2026-11-07 04:22:46 -06:00
jason.woltje bb4c176e20 fix(webui): keep the composer in view in zoomed transcripts
In page flow (200% zoom, short or narrow windows) the transcript now
follows with the composer's bottom at the viewport bottom and the newest
message above it. Absent or disabled composers keep the S11 pin. Narrow
Room composers stack in one column. S11's visibility check accepts the
newest message's end when it is taller than half the viewport.
2026-11-07 04:06:17 -06:00
jason.woltje 62ba124f2c fix(webui): keep keyboard focus and reveals on screen in zoomed transcripts
In page flow (200% zoom), the S11 follow logic re-pinned the document on
any scroll without wheel, touch, pointer or scroll-key input, so Tab,
Shift+Tab, focus(), find-style reveals and dialog return focus were pulled
back to the tail with focus thousands of pixels off screen.

Re-pin only a downward scroll with no reader input while following (scroll
anchoring as content grows). Count Tab as reader input, expire the reader
flag after two frames, and resume following when a transcript is opened.
2026-11-07 03:51:59 -06:00
jason.woltje 388fa5d0ca fix(webui): follow transcripts in page flow 2026-11-07 03:21:51 -06:00
jason.woltje 2f4470eed2 fix(webui): keep short 100% windows on the pinned transcript layout
S10 review P1: the max-height:700px page-flow rule moved the composer
off screen on 1440x700 and 1366x650 windows at 100%. Page flow now
applies only at max-height:540px (200% tab zoom on desktop screens) or
below 320px wide. S10 review P2: the moved Room details control keeps
its 44px target.
2026-11-07 03:02:02 -06:00
jason.woltje 66d14c00da fix(webui): keep zoomed transcripts and titles readable 2026-11-07 02:44:37 -06:00
jason.woltje 8832267574 fix(webui): wrap narrow conversation status and keep Overview geometry off Requirements
At 200% zoom on a 390px viewport the compact conversation row held a decision status on one line, so Needs your input pushed the page 12px sideways. The status now takes its own line under the icon and text and wraps. The Overview column margin and split were scoped to Overview, so Requirements keeps its base geometry. Tests cover a real decision status and the Requirements position.
2026-11-07 02:07:29 -06:00
jason.woltje 8aef086838 Fix narrow project reflow and overview action alignment 2026-11-07 01:47:35 -06:00
jason.woltje 5db88945d2 Add project header action icons 2026-11-07 01:08:19 -06:00
jason.woltje 5d2e96bbcd fix(webui): keep a followed transcript at the newest message when the log resizes
The conversation and room logs pinned to the bottom only on mutation, so a
log that settled shorter after paint stopped 23px short on every load.
Re-pin on resize too, and cover the room log.
2026-11-07 00:54:53 -06:00
jason.woltje d0b4a1b082 docs: drop the S7 builder's session line from the uidev integration 2026-11-06 23:56:06 -06:00
jason.woltje d9500b72cc Merge registry-keep (488431976) into ui-int-s6 2026-11-06 23:56:06 -06:00
jason.woltje 92beda28d5 Merge S7 fidelity and fix round (b74c8c88c) into ui-int-s6 2026-11-06 23:56:06 -06:00
jason.woltje b74c8c88c1 Fix S7 claim liveness and project layout fidelity 2026-11-06 23:55:17 -06:00
jason.woltje 31de69f2f6 Improve conversation fidelity and claim labels 2026-11-06 23:31:20 -06:00
jason.woltje 488431976e Keep launch recovery evidence when broker end is unconfirmed 2026-11-06 23:12:02 -06:00
jason.woltje 3081b587e9 Merge commit '9649c46ee' into ui-int-s6
# Conflicts:
#	docs/SESSIONS.md
#	packages/webui/src/public/shell.css
#	packages/webui/tests/dev-local-owner.test.mjs
2026-11-06 21:30:23 -06:00
jason.woltje e4e8cd232b Merge commit '617d7e4a7' into ui-int-s6
# Conflicts:
#	docs/SESSIONS.md
2026-11-06 21:30:16 -06:00
jason.woltje 56de15a405 Merge commit 'e1abcc9ed' into ui-int-s6 2026-11-06 21:30:12 -06:00
jason.woltje 9649c46ee0 Keep project read failures visible 2026-11-06 21:29:20 -06:00
jason.woltje 617d7e4a7a Keep Routing when a route edit lands during a harness save
A harness or catalogue save clears routesView. A route draft made while
the save was in flight kept routesSection from adopting the fresh read,
so the next render dereferenced a null view and Routing disappeared
until a page reload. Adopt the fresh view whenever none is held; the
draft keeps its cells.

S6a review P2 1.
2026-11-06 21:25:32 -06:00
jason.woltje 35f687f9bf fix(webui): distinguish empty project states 2026-11-06 21:08:56 -06:00
jason.woltje 8a6a641b42 Enable harness selection in routing 2026-11-06 21:08:13 -06:00