feat: Rigging Yard theme, usage panels, and macOS liquid glass - #40
Merged
Conversation
johnnyhuy
enabled auto-merge (squash)
August 18, 2026 12:40
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Adds the native macOS liquid glass addon used by the main window to apply system window vibrancy under the transparent pane. Declared in optionalDependencies because the package has "os": ["darwin"] and would otherwise fail `npm ci` on Linux/Windows CI runners. The runtime use is dynamic-imported (see src/main/index.ts) so the package is only loaded on macOS.
- Adds the Hoist hook + housing mark (SVG, icns, ico, PNGs at all sizes electron-builder needs for mac/win/linux bundle packaging) under build/. - Adds docs/brand/ — reference mark, design tokens, and a sandbox HTML page for visual review of the brand at rest. - Points src/renderer/public/icon.svg at the legacy rounded variant so the in-renderer chrome still resolves when no app icon is loaded. - Replaces the 1Password-inspired 'Knox' palette with 'Rigging Yard': warm cream on graphite, safety-orange signal accent, mint/sky/danger status colors. Swaps Inter for Manrope. - Adds a small dev-only theme picker that flips the accent through nine colorways (data-theme on <html>) so reviewers can compare variants without rebuilding. - Wires icon paths into electron-builder.yml for all three platforms.
Adds a usage layer that surfaces subscription-window burn and remaining credits directly in the app, so users can see at a glance whether their harnesses and provider keys still have headroom. Harness side (reads the existing OAuth credentials, never asks for new ones): - Claude Code: resolves credentials from env / Keychain / ~/.claude/.credentials.json; refreshes via Anthropic's token endpoint on expiry; calls /api/oauth/usage and maps the limits[] (and the legacy five_hour / seven_day_* buckets) to session and weekly windows; surfaces extra_usage credits when enabled. - Codex: reads ~/.codex/auth.json, calls chatgpt.com/backend-api/ wham/usage, maps primary_window / secondary_window to a 5h session and a weekly window, surfaces plan_type and credits. Provider side (BYOK keys already in the vault): - OpenRouter: GET /api/v1/auth/key → limit / limit_remaining / usage. - DeepSeek: GET /user/balance → balance_infos[0].total_balance. - Other providers return 'unavailable' cleanly rather than throwing. Wired end-to-end: - src/shared/channels.ts: usageRun channel. - src/main/ipc.ts: usageRun handler pulls API keys from the active secret backend when the source is a provider. - src/preload: typed UsageRequest/UsageResult on window.hoist.usage.run. - src/renderer/App.tsx: HarnessUsageOverview on the Watchtower rail (live, auto-refresh on open), and a UsagePanel on the harness and key detail rails. Each renders window-burn bars (turn red at 90%), reset times, plan badge, and credits line.
Makes the macOS window transparent and applies the system liquid glass
effect so the OS vibrancy reads through the renderer panes (top bar,
sidebar, detail rail).
- app.setName('Hoist') so the menu bar shows the brand, not the binary.
- BrowserWindow: transparent: true on darwin, dark background elsewhere.
backgroundColor is #00000000 on darwin so the glass is the surface.
- App icon loaded from build/icon.png; dock icon set in dev too.
- HOIST_DEV_URL env var lets the dev script target a non-default Vite
port without changing the binary.
- After did-finish-load, dynamically imports electron-liquid-glass and
calls addView with a 12px corner radius and a tinted overlay
(#12121459). The dynamic import + ambient type declaration in
src/main/types/electron-liquid-glass.d.ts keep the package optional
(it's darwin-only and not installed on Linux/Windows CI). If the
addon fails to attach (older macOS, dev sandbox, or non-darwin), the
window stays transparent and the CSS pane translucency still reads
correctly.
johnnyhuy
force-pushed
the
feat/brand-rigging-yard-and-usage
branch
from
August 18, 2026 12:53
17dd1b8 to
a39af76
Compare
Merged
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
.icns/.ico/.png/icons/), and a rebrand of the design tokens: warm graphite canvas (#121214), safety-orange accent (#f06a3c), Manrope typography, plus 9 swappable colorways via[data-theme](signal/amber/oxide/safety/cobalt/teal/plum/coral/lime). Brand gallery lives atdocs/brand/.src/main/usage/module wires harness subscription windows (Claude Code OAuth credentials via Keychain/file, refreshes expired tokens, parseslimits[]; Codex reads~/.codex/auth.jsonand querieschatgpt.com/backend-api/wham/usage) and provider credits (OpenRouter auth/key, DeepSeek user/balance). Surfaces in the right rail asHarnessUsageOverview+ per-requestUsagePanelwith usage bars and reset countdowns. Behind new IPC channelusage:run(preload type added).electron-liquid-glassenables native vibrancy on the transparent main window, with icon wiring (app.setName('Hoist'), dock icon,BrowserWindow.icon) and a graceful fallback on non-darwin platforms. Builder now emits platform-specific icons (icon.icon/,icon.icns,icon.ico,build/icons/)..hoist-usage-*CSS, transparent background underhtml[data-platform='darwin'], dev theme picker hook.Consequences
electron-liquid-glass@^1.1.1is a runtime dependency; macOS-only effect, no-op elsewhere.usage:runis additive; no existing channels changed.build/icon.icon/icon.jsonsource tree to be checked in (it is).Testing
npm run lint— cleannpm run typecheck— clean (bothtsconfig.node.jsonandtsconfig.json)npm run test:unit— all 36 unit tests pass (doctor, versions, secrets, homebrew detection, install methods)npm run dev, library surface mounts, usage meters render against a dev Claude Code credential.