feat: live discovery, doctor fixes, harness lifecycle, and working surfaces - #26
Merged
Conversation
After running the Library surface in the actual Electron app, four rough edges showed up that didn't show in any screenshot or build artefact: 1. macOS native title bar (red/yellow/green traffic lights) was rendered above the topbar and ate the first 28px of vertical space. Switched to titleBarStyle: 'hiddenInset' with trafficLightPosition at (12, 16) so the OS lights render but our titlebar is the only chrome the user sees. The renderer's .hoist-topbar now reserves 84px on the left for the lights and is drag-region for the OS. 2. The right rail (DetailRail) was sharing the .hoist-rail class with the left 56px icon rail, which made the column render at 56px wide instead of 320px. Renamed to .hoist-rail-detail with bumped specificity (3 classes) so it always wins, and used grid-column: 3 / 4 + width: auto !important to force the column-3 placement. 3. The 2-letter avatar in the list row was being clipped because the title and version shared one row at 36px column-start. Restructured the row to a 36px avatar spanning both rows + body in the second column with title (with name truncation) and version on a separate line. Bumped row width to 380px so all 3 catalog rows fit on a single line including version. List is now visible end-to-end. 4. Model names (anthropic, opus-4, opus-4.1, sonnet-4) in the main pane were rendered as plain inline text. Now they are styled as chip pills in .hoist-library-main-model, with a new .hoist-library-main-models wrapper that wraps cleanly. Plus: - cleanVersion() strips "(<harness name>)" suffix from discover() output (e.g. "2.1.211 (Claude Code)" → "2.1.211"). - LibraryInspectionPanel now reads the IPC entry directly (INSTALL heading shows entry name; version / path / id / status / exec come from the live entry). - KV values use word-break: break-all so the long homebrew path no longer truncates. Verified: typecheck/lint/build all green. The running Electron app shows the real install (Claude Code 2.1.211, /opt/homebrew/bin/claude) in both the list row and the right rail, and the right rail scrolls to reveal the REINSTALL and HEALTH sections.
Discover harnesses, runtimes, and package managers from PATH (which -a), de-dupe by realpath, label Homebrew formula/cask/node vs asdf/bun/npm, and surface PATH/version conflicts on a Doctor page with copyable fixes. Also: resizable panes, collapsible nav, provider dropdown, contrast and radius tokens, and library list + detail rail layout cleanup. Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
…tor fixes - Live Harnesses/Keys/Gateway surfaces (vault, install, probe, apply wiring) - Watchtower donut/bar/spark charts from real discovery data - Library harness configure (model) + lifecycle (versions, changelog, install/uninstall) - Doctor one-click Fix/Reconfigure/Upgrade/Uninstall actions - PATH priority panel; softer doctor severities - OpenAI-compatible probe; unit tests + CI npm test Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
| homepage: string | null | ||
| } | null> { | ||
| try { | ||
| const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(pkg).replace('%40', '@')}`, { |
Keep feature-branch App/layout (full discovery, doctor, lifecycle). Main already contains titlebar/rail fix via #25. Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
npm test(doctor, versions, secrets, homebrew, extractor); CI runs full unit suiteConsequences
harness:configSet,harness:configReset,harness:versions,harness:uninstall; install accepts{ id, version?, prefer?, force? }secretId(preferred over plaintextapiKey)provider:<id>:api_keyTesting
npm run typechecknpm run lintnpm test(unit)npm run catalog:checknpm run build