CI / format (pull_request) Successful in 1m50s
CI / lint (pull_request) Successful in 1m53s
CI / install (pull_request) Successful in 6m33s
CI / typetest (pull_request) Successful in 1m39s
CI / typecheck (pull_request) Successful in 2m15s
CI / node-tests (pull_request) Successful in 2m27s
CI / browser-tests (pull_request) Successful in 3m29s
An auth key enrolls a device on the tailnet, and serializing it into tailshare:config alongside the hostname and exit node left it readable by every same-origin script long after the registration flow needed it. Move it to a credential store that lives in the tab's memory and is discarded once the node reaches Running. Persisting it is now an explicit opt-in with its own storage key and a warning, and the presence of that stored copy is the flag, so there is no separate setting to drift out of sync. The raw key no longer reaches the prepare context: consumers see whether one is set, and the input is write-only. parseConfig no longer reads authKey, so a key left in an older tailshare:config is ignored and drops out on the next settings write. There is no migration. Splitting parseConfig and the failure redaction out of IpnContext gives tailshare its first unit tests, covering the storage rules, the opt-in, and that no failure path serializes the key. Reload, worker success, initialization failure, and fallback still need a browser harness. Closes #190 Co-Authored-By: claude-opus-5 <noreply@anthropic.com>
19 lines
429 B
JSON
19 lines
429 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ES2024",
|
|
"lib": ["DOM", "DOM.Iterable", "ES2024"],
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"jsx": "react-jsx",
|
|
"types": ["node"],
|
|
"strict": true,
|
|
"noEmit": true,
|
|
"isolatedModules": true,
|
|
"allowImportingTsExtensions": true,
|
|
"verbatimModuleSyntax": true,
|
|
"erasableSyntaxOnly": true,
|
|
"skipLibCheck": true
|
|
},
|
|
"include": ["src"]
|
|
}
|