Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I2484

majordomus ui ensures the shared server and opens the UI's dashboard

Where it stands

devtask.issue
Readiness
ready no dependency and no gate holds it; nobody has started it
Status
READY
Can start
startable
Milestone
Milestone status
ACTIVE
Wave
1
Waiting on
none
Holds back
none
Behind it in all
0
Evidence
0 of 2
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I2484

majordomus plan verify I2484

majordomus plan done I2484

What it is

Objective
Give the primary surface its command: `majordomus ui` ensures this checkout's shared server, the way `serve ensure` does, prints the address of /ui and opens it in a browser, so that a person reaches the UI in one step and never needs the lease, a port or the Cockpit to find it.
Why
ADR 0135, accepted by the owner on 2026-10-12, names `majordomus ui` the primary surface, and its first consequence says the command opens the UI's dashboard. The issue that was meant to carry it, I2231, lived only on PR #863, which was closed, so master has no command, docs/MAJORDOMUS_UI.md says to read the address off `serve status`, and `just open ui` is a recipe rather than a command of the executable.
Now
`majordomus ui` is an unknown command. A person opens /ui on the address `majordomus serve status` prints, or with `just open ui`.
Wanted
`majordomus ui` is one entry of the canonical command graph, a projection of `server.status` and `serve ensure` with no server of its own (ADR 0135: no second server, no mode): it ensures this checkout's shared server, waits until it is ready, prints the URL of /ui (or of /ui/<screen> when one is named and SCREENS holds it), and opens it unless --no-open is given or no browser can be launched, in which case it says so and still prints the URL. `ui status` and `ui stop` are not added: `serve status` and `serve stop` already answer them. The help text, the generated command reference and the just bridge derive from the declaration, and docs/MAJORDOMUS_UI.md drops its workaround.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • `majordomus ui --no-open` on a checkout with no running server starts one, prints a URL ending in /ui, and that URL answers 200
  • `majordomus ui --no-open` with a server already running prints that server's /ui URL and starts no second server
  • `majordomus ui --no-open <screen>` prints /ui/<screen> for a screen SCREENS holds and refuses an unknown screen by name, listing the known ones
  • The command appears in the generated command reference and the just bridge without a hand-written entry
Validation
bin/majordomus plan validatecargo test --lib commands::majordomus generate --check
Evidence required
ui_command_caseui_command_unit_tests
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
apps/majordomus-cli/src/commandsapps/majordomus-cli/src/cli.rsapps/majordomus-cli/src/uidocs/MAJORDOMUS_UI.mdtest/cases.ai/repo/project/issues/I2484.yaml
Not
A second server or a UI-only mode of the serverAny change to the screens themselves
Depends on
Priority
p1
Profile
implementation
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-10-12
Updated
2026-10-12
Started
unknown: the record declares no `started_at`
Verified
unknown: the record declares no `verified_at`
Completed
unknown: the record declares no `completed_at`

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

LevelCodeMessageReproduce
WARNscope_conflictshares test/cases with I2700; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/commands with I2701; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/commands with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2708; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2709; they may not run concurrentlymajordomus plan validate