Skip to content

fix(compact): banner-veto, pill opacity, mascot reactions, post-update expand#67

Merged
hiskudin merged 4 commits into
mainfrom
fix/compact-polish
Jun 2, 2026
Merged

fix(compact): banner-veto, pill opacity, mascot reactions, post-update expand#67
hiskudin merged 4 commits into
mainfrom
fix/compact-polish

Conversation

@hiskudin

@hiskudin hiskudin commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Banner-window veto: pill click/tap expansions now bail if a banner posted within the last 2s, fixing the bug where a click intended for a banner would leak through to the SwiftUI expand button and pop the panel open. applicationShouldHandleReopen also short-circuits in pill mode so unsolicited Dock/Spotlight/AppleEvent activations don't expand it.
  • Pill opacity (Settings → Widget → "Pill opacity"): user-configurable window alpha in pill mode (40/60/80/100%, default 100%). Expanded panel + full-mode stay fully opaque so content remains readable. Persists as STACKNUDGE_COMPACT_ALPHA.
  • Quota count-down toggle (Settings → Usage → "Show remaining"): flips the pill center readout and Usage tier rows from "30" → "70% left". Ring fill + color stay urgency-based so visual semantics are preserved.
  • Per-mascot hover reactions: robot antenna flicks + smile, cat ears lift + wink + tongue blep, eye pupil dilates and darts + eyebrow appears, ghost pops up + scales + sparkles + yawn.
  • Menu-bar hotkey label reads nav.hotkeyDisplay so newly recorded combos appear immediately (used to read raw config with a different default than Settings).
  • Post-update changelog: auto-expands out of the pill when post-update fires so notes render in the full panel rather than getting clipped.
  • Misc compact polish: blur backing corner radius matches the SwiftUI capsule in pill mode (no more dark squares in the corners), full panel is draggable from its background.

Test plan

  • Launch in pill mode → confirm no dark corner squares
  • Expand to full panel → drag from header/background → window follows freely, no snap
  • Esc to pill → banner fires → click in the banner region → pill stays as pill (no auto-expand)
  • Settings → Widget → "Pill opacity" → cycle 40/60/80/100 → pill alpha changes visibly at rest
  • Settings → Usage → "Show remaining" → toggle On → pill readout flips to "X% left", same for Usage tier rows
  • Cycle through all four mascots and hover the pill → each gets its hover reaction
  • Record a new hotkey in Settings → open menu-bar dropdown → label reflects new combo
  • Trigger post-update flow → changelog renders in full panel, not clipped into pill

🤖 Generated with Claude Code

hiskudin and others added 4 commits June 2, 2026 09:21
…t-update

- Match the NSVisualEffectView corner radius to the SwiftUI Capsule in
  pill mode (size.height / 2) so the rect corners don't poke past the
  capsule curve and show as dark squares.
- Allow dragging the expanded panel by its window background — the snap
  monitor stays gated on compact-not-expanded, so the full panel
  free-drags without corner snapping.
- When a post-update changelog fires while in the pill, auto-expand to
  the full panel so the release notes render in the proper frame
  instead of getting clipped into the 320x56 widget.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…tkey

- Reopen + button veto: pill click/tap expansions now bail if a banner
  posted within the last 2s. Banners share the pill's screen corner, so
  a click intended for the banner could leak through to the SwiftUI
  expand button or the double-tap gesture and pop the panel open.
  applicationShouldHandleReopen also short-circuits in pill mode so
  unsolicited Dock/Spotlight/AppleEvent activations don't expand it.
- Per-mascot hover reactions: robot antenna flicks up, cat ears + head
  lift with a left-eye wink, eye pupil dilates and darts faster, ghost
  pops up + scales + opens its mouth. Earlier hover-opacity dim was
  removed in favor of these.
- Quota count-down toggle (Settings → Usage → "Show remaining"). Pill
  center readout and Usage tier rows flip "30" → "70% left"; ring fill
  + color stay urgency-based so visual semantics are preserved.
- Menu-bar hotkey label reads nav.hotkeyDisplay so newly recorded
  combos appear immediately. Used to read raw config with a different
  default than Settings, which never reflected user changes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
User-configurable window alpha applied only in pill mode; expanded panel
+ full-mode stay fully opaque so content remains readable. Persists as
STACKNUDGE_COMPACT_ALPHA. Default 100% (no-op until opted in).

Earlier hover-driven alpha experiment was reverted — the perception of
"more transparent at rest, snap to solid on hover" didn't map cleanly to
what users were seeing visually, and the dual-blur stack (NSVisualEffect
+ SwiftUI .regularMaterial) muted the difference even at extreme values.
A plain user-set value is the cleaner contract.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Robot: cyan smile arc appears below the eyes when hovered
- Cat: pink tongue blep peeks out from below the mouth
- Eye: questioning eyebrow arc draws above the lens
- Ghost: three cyan sparkles fade in around the body

Each reaction is hover-only and additive — composes with the existing
reactions (antenna flick, ear lift + wink, pupil dilate-and-dart,
pop-and-yawn) without conflicting with state-driven visuals.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@hiskudin hiskudin changed the title fix(compact): pill corner radius, draggable full panel, post-update expand fix(compact): banner-veto, pill opacity, mascot reactions, post-update expand Jun 2, 2026
@hiskudin hiskudin merged commit f7c0262 into main Jun 2, 2026
1 check passed
@hiskudin hiskudin deleted the fix/compact-polish branch June 2, 2026 10:57
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