Repository navigation
refactor: resolve session settings through one module - #2387
Merged
Merged
Conversation
One table lists every session setting with its flag, effect class (launch or live), persistence class, secrecy and the rule that reads it from the resolved flags. Patch::from_flags builds the set of values an invocation set explicitly, with a wire encoding. Characterization tests check the patch carries every value DaemonOptions and the launch envelope helpers send. Nothing calls the module yet; parse_proxy moves into it unchanged.
DaemonState holds a Running value seeded once from AGENT_BROWSER_* at startup. The state initializers, auto launch, launch fallbacks, init script and enable lists, CDP headers, the extensions file and the policy and confirm-actions loaders read it through views instead of the environment. Behavior is unchanged: the seed applies each variable's existing parsing rules. The idle timeout resolution moves into the module so one definition serves the daemon and the view.
…lts from settings The idle timeout, the provider named in policy checks and the headed, engine, user agent and color scheme defaults handed to plugin providers come from Running instead of the environment. Plugin providers keep their looser headed rule, where any value except 0, false, no or empty counts, behind a dedicated view.
The running views and the env seed are used by the daemon, so the compiler checks them again. Only the patch, the option table and the settings error keep an allowance until the CLI sends the patch.
A separator-only allowed domains value seeds an empty list and the resulting filter allows every host. The daemon state test now loads a real action policy file and the plugin provider headed rule has its own tests.
Patch and Running print through a manual Debug that hides secret rows and strips credentials embedded in the proxy URL.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ctate
approved these changes
Nov 3, 2026
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.
Problem
openwithout a URL ignoresprofile/--profileandargs, launches a throwaway temp user-data-dir #1977,--headedwindow dies and Chrome is killed+relaunched on every CLI invocation (macOS 26 / Darwin 25.x) #1299, --ignore-https-errors ignored: daemon already running (regression of #372) #1359, Daemon spawned by --auto-connect keeps auto-connect forever; later plain open fails with "No running Chrome instance found" #1621, --allowed-domains containment disappears silently when the daemon restarts #1894.Changes
session_settings: one table with a row per option (effect, persistence, secret),Patch::from_flagscarrying only the values a command set explicitly, and typed views over the running settings.launch_options_from_envand the*_from_envhelpers are gone.Visual proof