Adds a trailing spacer to match the leading one, so Offscale + agents read
as their own group rather than running into the bluetooth/network/audio run.
Bar sections lay out with spacing: 0, so this can only come from slack the
widget reserves itself. Bluetooth already contributes ~11px of leading slot
slack; the spacer adds to that, taking the gap from ~13px to ~31px.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three separate contributors, only one of which was the obvious one:
- The glyph rendered at Style.bar.iconFont (26px at base-size 24), noticeably
smaller than the Offscale mark beside it. Now space(20) = 40px, with the
canvas sized to hold it.
- The label sat ~19px from the icon. Most of that was not the Row spacing but
WidgetButton's own horizontalMargin, which defaults to 8.5 and lands at
~17px per side at this scale. Trimming the slot and the spacing barely moved
it until that came down too.
- Trimming the slot flush to the glyph left nothing between this icon and the
Offscale mark to its left: bar sections lay out with spacing: 0, so
separation only ever comes from slack each widget reserves. Hence an
explicit leading spacer rather than relying on the section.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"Claude Code / MAX 20X" says nothing about which account the plan belongs
to, which matters when switching between a personal and a company login.
- Read oauthAccount.emailAddress from ~/.claude.json. Nothing in the shell's
own data carries account identity — the usage JSON under
~/.local/state/omarchy/agents/usage/claude.json has limits and token counts
but no email — so it comes from Claude Code's own config. The FileView is
watched, so switching accounts updates without restarting the shell.
- Append it to the hero meta line, after the tier: "MAX 20X · you@example.com".
- Put the local part in the bar beside the icon, so the account is visible
without opening the panel. A WidgetButton rather than a Text with a
MouseArea: WidgetButton registers itself in bar.clickTargets, and while a
panel is open KeyboardPanel's full-screen overlay forwards bar-strip clicks
only to registered targets — an unregistered handler opens the panel and
then dismisses it with the same click. Mirrors the icon's three buttons.
Only the Claude provider gets either; codex and fireworks store their auth
elsewhere and would need their own readers rather than showing a misleading
email.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Panel.qml, Main.qml, Agent.qml and the provider assets exactly as they ship
in omarchy-dev 4.0.0.r1744.gf002044 (shell/plugins/agents/), alongside the
manifest `omarchy plugin clone` generates.
Kept on its own branch so `git diff stock..master` shows precisely what
this fork changes.