Skip to content

Move Key Styles to the Styles pane - #270

Merged
alexkroman merged 1 commit into
fix/release-review-findingsfrom
feat/key-styles-on-styles-tab
Oct 29, 2026
Merged

alexkroman merged 1 commit into
fix/release-review-findingsfrom
feat/key-styles-on-styles-tab

Conversation

@alexkroman

Copy link
Copy Markdown
Collaborator

Summary

  • Key Styles moves out of Advanced › Experimental into its own section on the Styles pane, under Custom Styles.
  • Its own section (not a row of Custom Styles) because Custom Styles is disabled while enhanced transcripts are off, and turning a key on or off must still work then.
  • Footer says what it's for; the sheet's header now says how it works rather than repeating it. Row icon is keyboard.
  • ExperimentalSection drops the now-unused coordinator; Key Styles UI tests open the Styles pane; AGENTS.md updated.

Stacked on #269 (both touch KeyStylesRow.swift / SettingsWindowRoot.swift); retarget to main once that merges.

Test plan

  • scripts/check.sh green locally
  • CI UI suite: the three Key Styles tests on the Styles pane, and the pane still fits CI's screen (Settings doesn't scroll)
  • Manual: Styles pane with 4 custom styles and enhanced transcripts off — Key Styles row still enabled, Edit… works

🤖 Generated with Claude Code

…tyles pane

Key Styles gets its own section on the Styles pane, under Custom Styles —
the styles it picks from — rather than a row of Advanced's Experimental
section. Its own section, not a row of Custom Styles, because that one is
disabled while enhanced transcripts are off and turning a key on or off
still works then. The footer says what the feature is for; the sheet's
header now says how it works instead of repeating it. The row's icon is
the keyboard, like the sheet's per-key rows, not the style glyph.

ExperimentalSection no longer takes the coordinator it only needed for
the row. The Key Styles UI tests open the Styles pane.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@alexkroman
alexkroman force-pushed the feat/key-styles-on-styles-tab branch from d2ad41b to 91a1db4 Compare October 29, 2026 20:13
@alexkroman
alexkroman merged commit e89b6f7 into fix/release-review-findings Oct 29, 2026
1 check passed
@alexkroman
alexkroman deleted the feat/key-styles-on-styles-tab branch October 29, 2026 20:40
alexkroman added a commit that referenced this pull request Oct 29, 2026
* fix: address the review of the commits since v0.1.64, and simplify them

Review fixes:
- Paste on an unreadable focus only into the named custom-drawn editors
  (Sublime Text, Sublime Merge, Zed) again. A bare AXWindow or a
  cannotComplete query elsewhere left the user's words to a beep and a
  clipboard restore.
- SelectionCopy never restores over Blurt's own clipboard writes:
  SystemClipboard counts them, and the late-copy watcher (and the 100 ms
  copy wait) give up on one instead of undoing a paste.
- The token endpoint's 400/401 is a refusal only for invalid_grant or
  invalid_client; any other 400 no longer signs the user out.
- signOut() starts no renewal while it talks to the server, and keeps a
  sign-in that lands meanwhile; a rolled-back sign-in doesn't count as one.
- A sign-in whose key the Keychain refuses restores the earlier session
  and revokes the new grant; a renewal whose key it refuses stays due.
- An unreadable session item is rechecked every 5 minutes, and the
  renewal loop re-reads the status each pass.
- Turning another key on or off in Key Styles no longer resets the
  router, so a latched recording survives it.
- Rebinding the trigger swaps each key's style with a stash instead of
  erasing it (new TriggerKeyStyleStash defaults key).
- iPhone: delete-takes-back-the-dictation only in the same field with the
  text after the caret unchanged, and not after the keyboard left.

Cleanups (/simplify):
- OAuthClient logs refusals once in send(); one rotated-token refresh
  helper for renew and signOut; SignInStore.Load.session; one Keychain
  read per renewal pass; status written only when it changes.
- AccountRowView keeps one failure state; makeConfigData takes enhanced;
  TriggerKeyStyleStore.offChoice; the Mac reads StyleProfileStore.limit;
  pillText and HomeStatus.label derived; a shared unreachable message.
- iPhone: one mutex for the claimed press; Styles and Words decode once
  per redraw; the typing-test clock pauses before the first key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: reuse GatedTransport for the sign-out races (jscpd)

The new sign-out tests carried their own HoldingTransport, a copy of
SignInSessionTests' GatedTransport, and repeated the park-a-sign-out
steps three times. GatedTransport moves to the shared stubs, and one
signOutParkedOnTheNetwork helper sets up all three tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(settings): move Key Styles from Advanced › Experimental to the Styles pane (#270)

Key Styles gets its own section on the Styles pane, under Custom Styles —
the styles it picks from — rather than a row of Advanced's Experimental
section. Its own section, not a row of Custom Styles, because that one is
disabled while enhanced transcripts are off and turning a key on or off
still works then. The footer says what the feature is for; the sheet's
header now says how it works instead of repeating it. The row's icon is
the keyboard, like the sheet's per-key rows, not the style glyph.

ExperimentalSection no longer takes the coordinator it only needed for
the row. The Key Styles UI tests open the Styles pane.

Co-authored-by: Alex Kroman <alex@assemblyai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Alex Kroman <alex@assemblyai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants