feat(settings): deep links into Settings panes (WW-53) - #469
Merged
Conversation
wolfwave://settings/<pane>[/<section>] opens Settings at a named pane, scrolls to the tagged card, and flashes it. Stable kebab-case slugs (never display titles), safe fallback to General for anything unknown. Replaces the Twitch-only selectedSettingsSection UserDefaults hint, which also fixes navigation when the window is already open. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
nathanialhenniges
force-pushed
the
claude/deep-links-settings-panes-9111ad
branch
from
September 1, 2026 17:32
0e1b9b4 to
52ff56f
Compare
nathanialhenniges
added a commit
that referenced
this pull request
Sep 2, 2026
wolfwave://settings/<pane>[/<section>] opens Settings at a named pane, scrolls to the tagged card, and flashes it. Stable kebab-case slugs (never display titles), safe fallback to General for anything unknown. Replaces the Twitch-only selectedSettingsSection UserDefaults hint, which also fixes navigation when the window is already open.
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 WW-53.
What
wolfwave://settings/<pane>[/<section>]opens Settings at a named pane, scrolls to the tagged card, and flashes it with an accent ring. Works whether Settings is closed or already open on another pane. Anything unknown falls back to the General pane; an unknown section on a known pane keeps the pane and skips the scroll.wolfwavescheme registered inInfo.plist(CFBundleURLTypes), received inAppDelegate.application(_:open:).Core/SettingsDeepLink.swift: pure nonisolated parser +urlStringinverse. Pane ids are new stable kebab-caseSettingsSection.slugvalues, never the visible titles. Section slugs restricted to[a-z0-9-]+.Core/SettingsNavigation.swift:@MainActor @Observablehand-off (pending/highlighted) consumed bySettingsView; oneScrollViewReaderreaches every pane, including ones that own their ownScrollView. Each new link cancels the previous in-flight scroll task, and highlight expiry lives inSettingsViewso a slug with no mounted anchor still clears.Views/Shared/DeepLinkAnchor.swift:.deepLinkSection("slug")scroll target + fading accent ring; 30+ anchors tagged across all panes. Catalog entry added.selectedSettingsSectionUserDefaults hint (key,Preferencesaccessors,AppConstants.Twitch/Discord.settingsSection); its two callers now route throughnavigateSettings(to:). This also fixes pane selection when the window is already open.Full pane/section table: Settings docs → Deep links (
settings.mdxin this PR).Testing
SettingsDeepLinkTests(new): slug stability/uniqueness, round-trips, case + trailing-slash tolerance, every fallback path.SkipVoteManagerTestsetc., all pass in isolation). Post-rebase: build +SettingsDeepLinkTests+AppConstantsTestsgreen.🤖 Generated with Claude Code