Skip to content

v2.2.0: design-system UI consistency refactor + AUR launcher fix#75

Merged
adibhanna merged 3 commits into
mainfrom
release/v2.2.0
Jun 9, 2026
Merged

v2.2.0: design-system UI consistency refactor + AUR launcher fix#75
adibhanna merged 3 commits into
mainfrom
release/v2.2.0

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

Prepares the v2.2.0 release. Two changes so far.

1. Systematic UI consistency refactor (Refactoring UI) — 12252d1

A design-system pass over the React UI — not a redesign. Shared primitives + codified token scales applied across the app, preserving all 29 themes (every change reuses existing color tokens).

  • Tokens (tailwind config ×3 + index.css): type scale with an 11px text-2xs floor, documented z-index scale, dialog-width scale, themed danger/success/warning colors, .form-label/.form-hint utilities.
  • Primitives (components/ui/): <Button> (variant × size + IconButton) and <Modal> shell (Header/Body/Footer + shared Esc/portal).
  • Migrations: all dialogs + 6 command palettes → Modal; buttons across views, list panes, and SettingsModal primary actions → Button.
  • Sweep: every arbitrary text-[Npx] / rounded-[Npx] → the scale (tiny text bumped up for readability; radii → lg/2xl/3xl).
  • Hierarchy/a11y: eyebrow labels → .form-label; read-only metadata contrast bumped (ink-400500); color-only tag pills gained a non-color cue.

Net +1,151 / −1,037 across 48 files — shared primitives removed more boilerplate than they added.

Deliberately left bespoke: SettingsModal grid shell + its custom toggle/segmented controls, WhichKeyOverlay, the diagram Preview viewer, accent/tinted chips.

2. AUR launcher permission fix — 9fde35f (closes #70, closes #74)

zennotes-bin installed /opt/zennotes-bin as 0700 (artifact of cp -a copying the extracted AppImage root's mode), so non-root users couldn't traverse in to reach AppRun → "command not found" / "not executable". Fixed by normalizing the tree (chmod -R a+rX, preserving exec/setuid bits, skipping symlinks); pkgrel → 2.

Verification

  • typecheck 7/7 · tests 116 pass · desktop + web build clean
  • New design tokens confirmed in the shipped CSS; zero arbitrary text-[Npx]/rounded-[Npx] remain
  • Confirmed rendering live (Gruvbox dark)
  • AUR fix: aur-check CI built the package in a real Arch container — passed (1m5s)

Follow-ups (not in this branch)

  • Version bump to 2.2.0 (package.json + AUR pkgver)
  • Push zennotes-bin 2.1.0-2 to the AUR repo so current users get the launcher fix
  • Dedupe the triplicated Tailwind config into one shared file

adibhanna added 3 commits June 9, 2026 08:45
Establish shared UI primitives and codified token scales, then migrate the
app onto them. Every change reuses existing color tokens, so all 29 themes
are preserved.

Tokens (tailwind.config.js x3 + index.css @layer):
- type scale with an 11px `text-2xs` floor + tuned line-heights
- documented z-index scale (palette/modal/nested/popover/toast)
- dialog-width scale (dialog-xs..3xl)
- themed danger/success/warning colors (follow --z-red/green/yellow)
- .form-label / .form-hint utilities (unify 3 prior label styles)

Primitives (packages/app-core/src/components/ui/):
- <Button variant x size> + <IconButton>
- <Modal> shell (Header/Body/Footer) with shared Esc + portal handling

Migrations & sweep:
- all dialogs + 6 command palettes now use the shared Modal shell
- buttons across views, list panes, and SettingsModal primary actions
  now use <Button>
- swept every arbitrary text-[Npx] / rounded-[Npx] onto the scale
  (tiny text bumped up for readability; radii -> lg/2xl/3xl)
- eyebrow labels -> .form-label; read-only metadata contrast bumped
  (ink-400 -> ink-500); color-only tag pills gained a non-color cue

Deliberately left bespoke: SettingsModal grid shell + custom controls,
WhichKeyOverlay, the diagram Preview viewer, accent/tinted chips.

Verified: typecheck 7/7, tests 116 pass, desktop + web build clean.
`cp -a squashfs-root/.` re-applies the extracted AppImage root's mode
(typically 0700) onto /opt/zennotes-bin, leaving the tree untraversable
for non-root users. Launching then fails with "Command not found:
zennotes" (#70) or "/usr/bin/zennotes ... is not executable" (#74),
since the symlink target under /opt can't be reached.

Normalize the installed tree to world-readable / traversable after the
copy with `chmod -R a+rX` (preserves AppRun + chrome-sandbox exec/setuid
bits; skips symlinks). Bump pkgrel to 2 so existing users get a rebuild.
…with a minimal GUI PATH (#73)

Apps launched from Finder/Dock inherit only a minimal PATH
(/usr/bin:/bin:/usr/sbin:/sbin). In `auto` mode `searchExecutable` returned
the bare `rg`/`fzf`, so both detection and execution failed whenever the
tools live in a non-standard dir — nix-darwin's
/etc/profiles/per-user/$USER/bin, Homebrew, cargo, etc.

Resolve the binary through the user's login shell
(`$SHELL -lc 'command -v <cmd>'`) to an absolute path — the same approach
the CLI-install and Raycast integrations already use — so the absolute path
flows into both detection and execution. Falls back to the bare command name
when resolution fails (Windows, or an already-correct PATH).

New apps/desktop/src/main/login-shell-path.ts (memoized 60s, injection-guarded,
null on Windows) + unit tests; vault.ts `auto` branch uses it.
@adibhanna adibhanna self-assigned this Jun 9, 2026
@adibhanna
adibhanna merged commit b6ce1b6 into main Jun 9, 2026
6 checks passed
@adibhanna
adibhanna deleted the release/v2.2.0 branch June 9, 2026 22:45
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.

Arch Aur Repository zennotes-bin installs /opt/zennotes-bin with restrictive permissions, breaking desktop launcher

1 participant