Commit Graph
4755 Commits
Author SHA1 Message Date
jason.woltje 53e0f189a2 Merge quick setup review fixes (quick-setup-fix 653b3e2e7) 2026-11-07 22:37:13 -06:00
jason.woltje 009024ea45 Merge organization quick setup and delete (quick-setup 614559a94) 2026-11-07 22:37:13 -06:00
jason.woltje 614559a94c Fix organization deletion review findings 2026-11-07 22:36:33 -06:00
jason.woltje 047825460f Delete an organization after two confirmations
mosaic org delete ID --confirm ID --if-revision N, and POST /api/orgs/:id/delete,
mark the organization as deleting, stop its bus, move its files into
<dataRoot>/deleted/<ID>-<stamp>/ with a receipt, then drop it from the registry
and append deleted.log. A failure stops at its step and a rerun resumes. Bus
start refuses an organization that is being deleted. The settings page asks
twice: a panel that lists the effects, then typing the ID before Delete
permanently is enabled. Purge and remote revocation are follow-ups.
2026-11-07 22:22:05 -06:00
jason.woltje 3272fd9c6f Let the import scanner accept the plug-in loader's own module import
Quick Setup made organization code import the plug-in loader, which loads
packages/plugins/<kind>/<name>/index.mjs by a computed path. The scanner now
allows exactly that form in the loader file and still refuses it anywhere else.
2026-11-07 22:22:05 -06:00
jason.woltje 653b3e2e75 Stop quick setup on an unreadable reply and reset controls for a new draft
A 200 or 201 with a body that does not name the expected step as done now
stops at that step as an unknown outcome, with no further writes. Starting a
new draft re-enables the preset, thinking and run controls and clears the
risk checkbox. Browser regression covers both (Sol review P1, P2).
2026-11-07 22:03:45 -06:00
jason.woltje c09570d696 Add plugin-based organization quick setup 2026-11-07 21:43:03 -06:00
jason.woltje 632a4f16b9 Serve the dev fixture only to organizations that use it
The dev fixture guard was instance-wide: once a fixture record existed,
every organization's bus start refused when a provider credential was in
the environment. One instance could not hold a fixture organization and a
real-model organization side by side.

Bus start now reads the organization file. An organization that does not
route a launch to the fixture launches as configured. A fixture
organization's launch environment drops provider credentials before the
guard runs.
2026-11-07 21:22:13 -06:00
jason.woltje bc728e5927 Keep organization setup writable in organization mode
Settings marked every page except appearance and business read only when
send was off. Organization mode always turns send off, so the read-only
style hid New organization and Save organization. Organizations now stays
writable when the server allows org setup. The browser test asserts both
buttons are visible, not only clickable.
2026-11-07 20:47:48 -06:00
jason.woltje 2969d2a014 Preserve writer busy refusal on registry contention 2026-11-07 15:28:50 -06:00
jason.woltje f10562dba6 Lock legacy writers before registry initialization 2026-11-07 15:26:19 -06:00
jason.woltje 09c2e8f1f9 Record document digest when activating an organization 2026-11-07 15:22:40 -06:00
jason.woltje d759df57d2 Register organizations fix round session 2026-11-07 15:12:44 -06:00
jason.woltje 10516313e9 Open newly created organizations in their own context 2026-11-07 15:11:43 -06:00
jason.woltje a55310559b Honor broker document holds across service writes 2026-11-07 15:00:09 -06:00
jason.woltje cb79be0440 Populate scoped repository picker and exercise browser setup 2026-11-07 14:56:49 -06:00
jason.woltje c1f9220662 Verify scoped Console and concurrent broker writes 2026-11-07 14:56:16 -06:00
jason.woltje e342af7697 Coordinate organization document writers 2026-11-07 14:47:27 -06:00
jason.woltje fa2a61a0e7 Enable scoped chat project creation 2026-11-07 14:47:12 -06:00
jason.woltje 84a088cfec Preserve organization route and guard draft navigation 2026-11-07 14:43:19 -06:00
jason.woltje 381b7835f6 Keep organization admin requests global 2026-11-07 14:41:52 -06:00
jason.woltje f1ce9a98d3 Read notifier from selected organization root 2026-11-07 14:40:18 -06:00
jason.woltje 8f800c1361 Verify shared proxy and organization integration 2026-11-07 13:50:39 -06:00
jason.woltje 62261ca1fc Update tester fixtures for organization transport 2026-11-07 13:18:34 -06:00
jason.woltje ea46b21a5d Update pinned copy fixture for organization buses 2026-11-07 13:17:09 -06:00
jason.woltje 6feb8a68bb Update two-instance bus fixture for organizations 2026-11-07 13:15:52 -06:00
jason.woltje c40a8f0d6c Route owner decisions to selected organization 2026-11-07 13:14:39 -06:00
jason.woltje dce084f8eb Expose organization setup availability 2026-11-07 13:10:19 -06:00
jason.woltje 30d5372c0f Protect organization setup drafts on switch 2026-11-07 13:07:43 -06:00
jason.woltje 8dd9b37fe0 Expose organization boot status 2026-11-07 13:07:43 -06:00
jason.woltje f6259e02c9 Keep notifier reads outside CLI module graph 2026-11-07 13:07:43 -06:00
jason.woltje c5db52b6cc Read E2E notifier from organization root 2026-11-07 12:56:06 -06:00
jason.woltje d5d00e28df Use recorded fixture setup in organizations E2E 2026-11-07 12:54:54 -06:00
jason.woltje f819c55302 Use organization roots in channel proof fixtures 2026-11-07 12:49:24 -06:00
jason.woltje 43b911dd94 Show the recorded notifications choice during setup 2026-11-07 12:47:20 -06:00
jason.woltje 9750609f4c Restore scoped dev-owner launch checks 2026-11-07 12:45:13 -06:00
jason.woltje af9e367719 Keep fixture harness selection in its plugin and run pi offline 2026-11-07 12:39:33 -06:00
jason.woltje 934cc08e77 Register theme and organization setup routes 2026-11-07 12:37:47 -06:00
jason.woltje ed081626b5 Bind organization identity into bus boot 2026-11-07 12:36:27 -06:00
jason.woltje 0e0255de0d Prepare fixture organizations with explicit notifications choice 2026-11-07 12:35:31 -06:00
jason.woltje af6fad2fbd Merge commit '67c62de9b' into ui-org
# Conflicts:
#	packages/webui/src/public/bus.js
#	packages/webui/src/serve.mjs
2026-11-07 12:33:39 -06:00
jason.woltje be032405d1 S5 Console multi-org (round 3 candidate) 2026-11-07 12:33:02 -06:00
jason.woltje 7583e03a39 Merge commit '487a2e7fa' into ui-org
# Conflicts:
#	scripts/mosaic
2026-11-07 12:32:10 -06:00
jason.woltje 3ecdf4d75e Merge commit '7fdb48827' into ui-org 2026-11-07 12:31:52 -06:00
jason.woltje 12997c78c8 Merge commit 'b52adc841' into ui-org
# Conflicts:
#	packages/cli/src/cli.mjs
#	scripts/mosaic
2026-11-07 12:31:16 -06:00
jason.woltje 4b8bbc06a0 Merge commit '2d8522887' into ui-org 2026-11-07 12:29:14 -06:00
jason.woltje d9d1af2e0f Merge commit '24e240d44' into ui-org
# Conflicts:
#	scripts/mosaic
2026-11-07 12:28:36 -06:00
jason.woltje 7fdb488270 Themes as installed plugins, chosen per organization (S4, plan C5)
Add a reviewed `theme` plugin kind (interfaceVersion 1, export `theme`, switch
"list"). A module returns data only: a displayName and a flat map of colour
custom properties for light, dim and dark. checkTheme validates names and
#rrggbb colours strictly and checks each text/background pair for contrast; a
bad module is refused and logged, never served.

The ten shipped palettes become the first ten modules under
packages/plugins/theme/<name>/. Modules are found by directory scan
(loader.discoverModules, loader.loadInstalled), not by a list in the Console.
loadModule and createLoader are unchanged.

The organization file takes `appearance: { theme, mode }`, validated in
packages/business/src/appearance.mjs; a missing appearance is valid.
GET /api/themes (themes-http.mjs) serves the installed, valid themes.

Browser: the Settings picker lists /api/themes. Precedence is a per-organization
browser override, then the organization's saved theme, then the built-in default
(Harbor, dark). Clearing the override restores the organization's choice. An
uninstalled or invalid saved theme renders the default with a visible warning
and keeps the saved value. A legacy global browser preference is not copied to
every organization. The organization is named in text, so colour is never the
only cue. A plain load writes no appearance record. The default look is
unchanged: computed styles match the base commit element for element.
2026-11-07 12:18:43 -06:00
jason.woltje 67c62de9ba Register the S6 organizations WebUI session 2026-11-07 11:57:46 -06:00
jason.woltje 905cea7576 Show bus host refusals and keep setup choices across retries
A failed bus start now carries the host's own refusal line, read from host.log; repository paths in messages are shown relative and URLs are kept. Setup cards keep the chosen mode, remote and risk box across a re-render, and a client-side refusal is shown on the card.
2026-11-07 11:57:11 -06:00