Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Playwright and Puppeteer install an automation-only Chrome build that registers as an https handler, so it showed up next to real Google Chrome in rules, the picker, and Settings → Browsers. It has no profile support, and picking it by mistake looked like the Profile dropdown was broken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP
On recent macOS, reading another browser's Local State or profiles.ini is refused with EPERM unless Junction has Full Disk Access. There is no permission prompt for it, and the profile readers failed quietly to an empty list, so the rule editor's Profile dropdown and Settings → Browsers simply showed no profiles. BrowserDiscovery.isProfileAccessBlocked tells a denied read (EPERM) apart from a missing file (ENOENT). AppState refreshes it with the browser list, and a shared notice with an "Open System Settings…" button and a "Check Again" button now appears in Settings → Browsers, in the rule editor in place of the Profile picker, and on the onboarding default-browser step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP
First launch, Privacy, and the profile action now say that listing browser profiles needs Full Disk Access, what Junction reads with it, and what still works without it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP
…size The picker was one fixed shape, a vertical list of 22pt icons with names. With many browsers and profiles that's a tall column. A new optional `picker` config block (layout, labels, iconSize) sets it globally, edited under Settings → Browsers → Picker appearance. - Horizontal lays choices out in a grid sized to the screen: as many columns as fit, capped at 9 so the digit keys cover the first row. ←/→ step one choice and ↑/↓ jump a row. The vertical list keeps ↑/↓ only. - Icon-only drops the names. Grid cells and icon-only rows show the digit on the icon corner, and a line above the choices names the selected one, so same-icon Chrome profiles stay distinguishable. - iconSize is clamped to 16–64 on load rather than rejected, so a wild value can't take routing down with the config. An unknown layout or labels value fails to parse, and parse errors from bad values now name their location (e.g. "at picker.layout"). - The block is left out of the file until the user changes it, so existing configs don't grow a new key on their next save. Closes #13 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP
Vertical + icons-only kept the 340pt panel with empty space where the names were, which missed the point of the mode. The footer's text links now become icon buttons in that mode, and the panel narrows to the icon column. Also: - Choice buttons carry an accessibility label; icon-only cells read as just "button" to VoiceOver before. - The icon-size slider saves keyboard and VoiceOver adjustments directly; only a mouse drag is buffered until release. Before, a non-drag change sat in the draft unsaved. - The saved-file assertion parses JSON rather than matching pretty-print spacing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP
jnahian
force-pushed
the
feat/picker-appearance
branch
from
September 27, 2026 05:59
5c2de98 to
ed7f43c
Compare
Owner
Author
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #13. Stacked on #16. Merge that first, then retarget this to
main. Both PRs add to## UnreleasedinCHANGELOG.md, so expect a small conflict there.What
A new optional
pickerblock, global only (per-rule was left out, as the issue suggests):It's edited under Settings → Browsers → Picker appearance: a layout picker, a names/icons-only picker, and an icon-size slider. The slider saves once, when the drag ends, not on every tick.
How the issue's concerns are handled
PickerPanelController.movedSelection: ↑/↓ move by a row (one item in the vertical list), and ←/→ only move in the grid. In the vertical list they still fall through as before.1–9are unchanged. In a grid the digit sits as a badge on the icon's corner.resizePanelnow updates the max width as well as the max height. Cells have fixed sizes, so the scroll area's height is computed exactly, not estimated.iconSizeis clamped to 16–64 on load rather than rejected. An unknownlayoutorlabelsvalue fails to parse.describeDecodingError's.dataCorruptedbranch now includes the location, so the error readsCannot initialize Layout from invalid String value sideways at picker.layout. It previously had no location.pickeris optional and left out of the file until the user changes it, so existing configs don't gain a block on their next unrelated save. The Swift case for"none"is.iconOnly, because a case named.noneon an optional would silently compare againstOptional.none.Vertical + icons only
In this mode the panel narrows to the icon column (120pt at the default size). The footer's text links become icon buttons with tooltips and accessibility labels, and the keyboard-shortcut hint is dropped.
Testing
swift test: all passing. New tests:junction config validateon a bad and an oversized config: clear error for the bad value, clamped size for the oversized one.cd web && npm test && npm run buildpass. ChangelogAdded:entry and the docs' Settings summary are updated.🤖 Generated with Claude Code
https://claude.ai/code/session_019Y9gVVaoGd4dCz42XkXkpP