Cockatrice/libcockatrice_settings/libcockatrice/settings
BruebachL 8ca749c07d
[DeckShare] Open shared decks via links with a gated preview flow (#7244)
* [DeckShare] Open shared decks via links with a gated preview flow

- Serialized url-chain dispatcher in IntentUrlParser; queue-drained
  urlChainFinished(bool) drives the startup auto-connect fallback
- Open-shared-deck intent with sequential download state machine,
  15s per-item timeout, partial-success offer, livable Cancel via
  ApplicationModal dlg_login_prompt interactive fallback
- Preview dialog: download progress label, share vocab sweep,
  palette-highlight selection frame, Space/Enter keyboard toggle,
  NoFocus checkbox, double-click tile opens immediately
- Confirm-before-server-migration with one-shot restore to the
  previous server on failed/cancelled chains (statusChanged settle
  deferral), hostname-only identity comparisons
- Skip credential link when already connected; arrow-key navigation
  in FlowWidget; card glows use palette highlight
- Address code-review M1-M4 and UI/UX QA blockers 1-2

* [DeckShare] End the open-shared-deck files with a trailing newline

* [DeckShare] Forward a dependency's cancellation as the owner's own

* [DeckShare] Let intent chains opt into the link sign-in dialog

* [DeckShare] Track link-intent chains per-run so each can restore its own session

* [Settings] Match a server on the exact host and port when adding it

* [DeckShare] Confirm the share link's target server before opening a deck

* [DeckShare] Reformat the link sign-in intent constructor

* [DeckShare] Time the share-list round trip and backstop silently-destroyed intent chains

* [Client] Drain a single-instance payload before its handlers read the socket again

* [Client] Treat a busy single-instance primary as alive instead of stealing its socket

* [DeckShare] Keep arrow-key navigation between flow items inside a scroll area

* [Client] Skip the startup connection when a macOS URL launch owns the connection

* [Client] Redact share secrets from activation URL logs

* [Client] Make the link-connection gates port-aware and keyboard-safe

Second-pass review notes for the shared-deck link flow (Cockatrice#7244):

- FlowWidget arrow-key navigation is opt-in via addNavigableWidget, so
  combo/spin controls on the analytics flows keep their own arrow keys
- isConnectedTo and the open-deck/join-game preconditions compare the
  configured server port alongside the host, so a same-host/different-port
  link cannot resolve its share token or game id on the wrong instance
- the link sign-in dialog reuses an existing server entry's saved name
  instead of renaming it to the raw hostname
- skipStartupAutoConnect is cleared once the launch chain connects, so a
  later mid-session declined link cannot fire the startup fallback
- the plain-launch path of SingleInstanceManager no longer blocks on the
  primary's ACK
- link- and server-supplied text is html-escaped in the confirm prompts and
  shared-deck preview so markup cannot spoof the shown messages

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-09-20 20:22:17 +02:00
..
appearance_settings.cpp [Themes] Add identity default palettes for the image themes (#7280) 2026-09-18 15:16:07 +02:00
appearance_settings.h [Themes] Add identity default palettes for the image themes (#7280) 2026-09-18 15:16:07 +02:00
cache_storage_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
cache_storage_settings.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
card_database_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
card_database_settings.h [Card Database] Improve loading times through binary cache (#7051) 2026-07-27 23:12:53 +02:00
card_override_settings.cpp [SettingsManager] Make setting getters const (#6748) 2026-03-27 18:13:25 +01:00
card_override_settings.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
cards_display_settings.cpp [Client] Show localized card names, texts and pictures (#7294) 2026-09-18 12:03:07 +02:00
cards_display_settings.h [Client] Show localized card names, texts and pictures (#7294) 2026-09-18 12:03:07 +02:00
chat_settings.cpp [Client] Add setting to ignore all private messages (#7260) 2026-09-07 08:20:46 +02:00
chat_settings.h [Client] Add setting to ignore all private messages (#7260) 2026-09-07 08:20:46 +02:00
commander_bracket_settings.cpp [DeckEditor] Use CommanderSpellbook.com to estimate bracket if format is 'commander' (#6415) 2026-08-09 00:46:17 +02:00
commander_bracket_settings.h [DeckEditor] Use CommanderSpellbook.com to estimate bracket if format is 'commander' (#6415) 2026-08-09 00:46:17 +02:00
debug_settings.cpp [SettingsManager] Make setting getters const (#6748) 2026-03-27 18:13:25 +01:00
debug_settings.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
deck_editor_settings.cpp [VDE] Add a new setting to determine initial tab (Context/Deck/Database) (#7122) 2026-08-15 21:55:39 +02:00
deck_editor_settings.h [VDE] Add a new setting to determine initial tab (Context/Deck/Database) (#7122) 2026-08-15 21:55:39 +02:00
download_settings.cpp [Client] Show localized card names, texts and pictures (#7294) 2026-09-18 12:03:07 +02:00
download_settings.h [Client] Show localized card names, texts and pictures (#7294) 2026-09-18 12:03:07 +02:00
game_filters_settings.cpp [GamesModel] Rename 'Creator' column to 'Host' (#7083) 2026-08-13 18:58:21 +02:00
game_filters_settings.h [GamesModel] Rename 'Creator' column to 'Host' (#7083) 2026-08-13 18:58:21 +02:00
game_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
game_settings.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
interface_settings.cpp [Game] Playmats (#7101) 2026-08-21 10:40:49 +02:00
interface_settings.h [Game] Playmats (#7101) 2026-08-21 10:40:49 +02:00
layouts_settings.cpp [SettingsManager] Make setting getters const (#6748) 2026-03-27 18:13:25 +01:00
layouts_settings.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
message_settings.cpp [SettingsManager] Make setting getters const (#6748) 2026-03-27 18:13:25 +01:00
message_settings.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
network_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
network_settings.h [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
paths_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
paths_settings.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
personal_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
personal_settings.h [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
recents_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
recents_settings.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
servers_settings.cpp [DeckShare] Open shared decks via links with a gated preview flow (#7244) 2026-09-20 20:22:17 +02:00
servers_settings.h [DeckShare] Open shared decks via links with a gated preview flow (#7244) 2026-09-20 20:22:17 +02:00
settings_manager.cpp [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
settings_manager.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
settings_migration.cpp [Themes] Add identity default palettes for the image themes (#7280) 2026-09-18 15:16:07 +02:00
settings_migration.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
sound_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
sound_settings.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
tabs_settings.cpp [Mods] Properly close card art rules tab on disconnect (#7227) 2026-09-01 11:31:49 +02:00
tabs_settings.h [Mods] Properly close card art rules tab on disconnect (#7227) 2026-09-01 11:31:49 +02:00
updates_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
updates_settings.h [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
visual_deck_storage_settings.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
visual_deck_storage_settings.h [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00