Skip to content

Show render and credits status in the Slopcamera menu bar on menu kit v2 - #259

Merged
0thernet merged 5 commits into
mainfrom
claude/ux-b-slopcamera-menu-20260926
Sep 27, 2026
Merged

0thernet merged 5 commits into
mainfrom
claude/ux-b-slopcamera-menu-20260926

Conversation

@0thernet

Copy link
Copy Markdown
Member

What

The menu bar stops being a plain outputs list and shows what Slopcamera is doing:

  • A status row for the render/generate command in progress or how the last job ended (a failed job gets a plain-language reason and a warning row), plus the last known credits balance with low credits flagged.
  • Newest outputs through desktop-foundation 0.8's OutputsSection (three newest, no duplicated reveal submenu), with "Open outputs folder" as the primary action.
  • The login item moves to the shared Rust LaunchAgent helper (slopcamera-menubar install|uninstall|status|start); slopcamera menubar ... copies the build into place and delegates. The old com.hraness.slopcamera.menubar plist is retired only when it is exactly the file earlier releases wrote.
  • Diagnostics sit behind Option on "Updates & support"; the tray mark is a template camera glyph with an attention tone when something needs you.
  • The menubar command stays documented under help menubar but leaves root help until released packages include the binary (audit S2: hide rather than ship assets in this pass).
  • The local .app identity is wired but stays off unless HRANESS_LOCAL_APP=1.

How the CLI reports status

apps/desktop/cli/menubar-status.ts writes cli/menubar-status.json under the CLI state root around each media command and after credits status -- fixed labels, times, error codes and the credits balance string only (never paths, tokens or account IDs). Writes are best-effort under a small lock file with atomic rename; reads on the Rust side are bounded and treat anything unreadable as absent.

Tests

  • Nine menu fixtures (first run, rendering, ready, error, low credits, stale job, empty, action error, login-changed-elsewhere) render to indented text trees and pass companion lint-menu --strict in CI (desktop/menubar/fixtures/).
  • menubar.test.ts covers install delegation, legacy-agent retirement, already-running launch, helper audience and the help menubar page.
  • menubar-status.test.ts covers the lock (held lock skips, stale lock is reclaimed), owner-only files and the fixed-vocabulary contract.
  • Rust unit tests pin the status parser, dollar formatting, stale-job detection and the <=10-row worst case.

Review fixes

The second commit addresses the Wave B review findings: credits amounts now render as $x.xx (the API sends bare 25.00; fixtures use the real format), a failed install throws only the helper's failure lines rather than the login-item notice, the legacy agent is removed only after a successful install, the Linux state root matches the CLI's, and status writes hold a lock.

Tracked as audit items S2 (hide-until-shipped) and S3 (status menu).

0thernet and others added 2 commits September 27, 2026 01:43
The menu bar now reads a small status file the CLI writes around each
rendering or generating command and after credits status, and shows what
is running, how the last job ended (a failed job gets a plain reason and
a ⚠︎ row) and the last known balance, with low credits flagged. Outputs
come from desktop-foundation 0.8's OutputsSection (three newest, no
duplicate submenu), the login item moves to the shared LaunchAgent
helper, and diagnostics sit behind ⌥ on Updates & support.

slopcamera menubar install now copies the build into place and hands
over to the menu bar's own install; the old launchctl code and its
com.hraness.slopcamera.menubar plist are retired. The command stays
documented under help menubar but leaves root help until released
packages include the binary.

Nine menu fixtures, one per state, pass companion lint-menu --strict in CI.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The credits API sends a bare amount (25.00), so the menu now formats
  it as dollars in one place and every fixture feeds the API's real
  format instead of a hand-written $4.20.
- A failed menubar install threw the whole login-item notice along with
  the failure; the error now starts at the helper's last x line.
- The legacy LaunchAgent plist is removed only after the new login item
  installs, so a failed install never leaves nothing to start at login.
- On Linux the menu bar and the CLI now share one state-root rule:
  XDG_STATE_HOME/slopcamera, with no extra cli/ level.
- Status-file writes hold a small lock file, so a render finishing while
  credits status runs can't overwrite the other slot.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
slopcamera Ready Ready Preview Sep 27, 2026 6:33am UTC
slopcamera-api Ready Ready Preview Sep 27, 2026 6:33am UTC

Request Review

Root help now carries the single support line from support-foundation
0.6.0 ("Optional support: slopcamera support · Turn off:
HRANESS_SUPPORT=off") in both the desktop CLI and the portable
src/cli.ts help. The agent protocol verbs live under
`slopcamera help advanced` via supportAdvancedHelp(); every
`slopcamera support` verb keeps working from any caller.

With 0.6.0 a PTY caller counts as human under the shared audience rule,
so the PTY test now expects the text invitation rather than discovery
JSON.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
apps/desktop/cli/menubar-status.ts is inventoried under native-film-studio
for its "Running a studio job" activity label; help.ts and the generated
cli bundle pick up the X-7 support-line copy, all verified by
bun run check:standalone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ned CI digest

The menu-kit v2 change added cargo test and companion lint-menu steps to
the menubar job, which shifted the additive prior-coverage fingerprint.
Every prior job, condition, command and deadline is unchanged; the
reviewed 2026-09-27 note records the additive update.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@0thernet
0thernet merged commit e2bfb06 into main Sep 27, 2026
23 checks passed
@0thernet
0thernet deleted the claude/ux-b-slopcamera-menu-20260926 branch September 27, 2026 06:40
0thernet added a commit that referenced this pull request Sep 27, 2026
Bumps the source-candidate version pins to 3.6.0, following the 3.5.0
pattern (#253), so the menu-kit v2 work from #259 (S3 render/credits
status, S2 hidden menubar command, shared LaunchAgent lifecycle) and the
X-7 support-help change ship.

## Changes
- package.json, src/version.ts, SLOPCAMERA_VERSION in the desktop CLI,
  SLOPCAMERA_APPLICATION_TOOL_VERSION and the tests and standalone check
  that pin them: 3.5.0 -> 3.6.0.
- CHANGELOG.md gains a `## 3.6.0 - 2026-09-27` section. The release
  workflow copies this section onto the release page.
- Rebuilt dist/ and apps/desktop/dist/cli/main.js, and the legacy
  identity inventory for the renamed chunk.
- apps/web/published-release.json and public copy stay on 3.5.0 until
  v3.6.0 is verified. #252 made that possible again.

Minor rather than patch: the menu bar gains product status rows, the
Option-alternate diagnostics view and a new shared login-item lifecycle.

## Checks
check:standalone, check:copy (230 claims), check:release-workflows
(30 pass), src/cli.test.ts + src/mcp/server.test.ts (15 pass),
registry.test.ts + html-overlay.test.ts (9 pass).

## After merge
Push tag v3.6.0 at the merge commit; the release workflow publishes
the archive from this changelog section. A follow-up PR then advertises
the verified release, as #228 and #234 did for 3.4.0 and #254 for 3.5.0.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: 0thernet <894119+0thernet@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
Preview – slopcamera-api — b46a6227 Deployed Sep 27, 2026 by vercel[bot]
Preview – slopcamera — b46a6227 Deployed Sep 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant