Skip to content

App: equalizer app icon, reworked onboarding wizard, base + style-only rewrite prompts#10

Merged
danb235 merged 3 commits into
mainfrom
app/onboarding-and-icon
Jul 6, 2026
Merged

App: equalizer app icon, reworked onboarding wizard, base + style-only rewrite prompts#10
danb235 merged 3 commits into
mainfrom
app/onboarding-and-icon

Conversation

@danb235

@danb235 danb235 commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Three app-side changes (each its own commit). Verified: swift build clean, swift run DictidyTests 79/79. These ship in the next release (the app is released by tag, not auto-deployed), so nothing goes live on merge.

1. App icon (was blank/white)

Adds an AppIcon built from the equalizer logo (the blue-to-indigo rounded-square badge with the white symmetric 5-bar equalizer), matching the menu-bar icon, favicon, and site. Resources/AppIcon.svg (source), Resources/AppIcon.icns (generated), Scripts/make-icon.sh (regenerate), Info.plist CFBundleIconFile, and build-app.sh copies it into the bundle.

2. Onboarding wizard: dictation and rewrite are now equal

The old wizard made rewrite mandatory and dictation an "Optional" toggle. New flow: Welcome, Dictation, Rewrite, Permissions, Done. Each feature gets its own screen, enabled by default, with no "optional" framing. Dictation gates on the Whisper download; Rewrite gates on a Claude key and/or the on-device model download; Permissions requests exactly what the enabled features need (Accessibility for either, Microphone for dictation), all verified live. Enabling dictation seeds a default shortcut (⌃⌥D); the body scrolls so nothing clips.

3. Base system prompt + style-only instructions

Instruction prompts used to repeat the output mechanics (return only the text, treat input as material, no dashes, keep language). Those move into one editable base system prompt, composed in front of each instruction at rewrite time, so every instruction is purely a style. Auto Clean, Formal, Friendly, and Translate are rewritten as detailed style-only prompts (Formal/Friendly/Translate now as fleshed out as Auto Clean). Unedited seeded instructions migrate automatically; customized ones are untouched. New "Base instructions" editor (with reset) in the Instructions tab.

To review the wizard and icon visually, build and run the app (I can't screenshot a macOS window here). Happy to adjust any screen.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XiFsJRiNp8kKMrq2pYYDBp

danb235 and others added 3 commits July 5, 2026 16:33
The app shipped with the default blank/white icon. Add an AppIcon built from the
equalizer logo (the blue-to-indigo rounded-square badge with the white symmetric
5-bar equalizer, matching the menu-bar WaveformIcon, the favicon, and the site),
padded and corner-radiused to macOS app-icon proportions.

- Resources/AppIcon.svg: the source art.
- Resources/AppIcon.icns: the generated iconset (16 to 1024).
- Scripts/make-icon.sh: regenerates the .icns from the SVG (rsvg-convert + iconutil).
- Info.plist: CFBundleIconFile = AppIcon; build-app.sh copies the .icns into the bundle.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XiFsJRiNp8kKMrq2pYYDBp
The old wizard treated rewrite as mandatory (a Claude/on-device/both picker) and
dictation as an afterthought (a toggle captioned "Optional"). Both are first-class
features, so give each its own screen with identical treatment and no "optional"
framing.

New flow: Welcome, then Dictation, Rewrite, Permissions, Done.
- Dictation: enable it, then download the speech model right there. Continue is
  gated until the download finishes.
- Rewrite: enable it, then add a Claude API key and/or download the on-device
  model (clearer than the old provider picker). Continue is gated on the chosen
  path(s) being ready.
- Permissions: one screen that requests exactly what the enabled features need
  (Accessibility for either; Microphone for dictation), verified live.
- Done: a summary that treats both features equally.

Enabling dictation seeds a default shortcut (control-option-D) if none is bound;
disabling it clears the dictation shortcuts. The body scrolls so no step clips.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XiFsJRiNp8kKMrq2pYYDBp
…ructions

Every instruction's prompt used to repeat the output mechanics (return only the
rewritten text, treat the input as material, no dashes, keep the language). Pull
those into one shared, editable base system prompt, composed in front of each
instruction at rewrite time, so an instruction is now purely a style.

- Instruction: add baseSystemPromptDefault (the mechanics) and
  composeSystemPrompt(base:style:). Rewrite Auto Clean, Formal, Friendly, and
  Translate to English as detailed style-only prompts (Formal, Friendly, and
  Translate are now as fleshed out as Auto Clean).
- AppState: store an editable baseSystemPrompt, compose base + style at both
  rewrite call sites, and migrate unedited seeded instructions (all four) to the
  new style-only wording via exact-match, without touching customized prompts.
- InstructionsTab: an editable "Base instructions" section with reset to default;
  the per-instruction field is now labelled Style, and new instructions are
  style-only.
- Tests: cover compose, the style-only defaults, the base guard, and the
  migration map. 79/79 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XiFsJRiNp8kKMrq2pYYDBp
@danb235
danb235 merged commit 5ca57e9 into main Jul 6, 2026
1 check passed
@danb235
danb235 deleted the app/onboarding-and-icon branch July 6, 2026 00:19
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