Files
webnet/packages/tailshare/tsconfig.json
T
codingetandClaude aaec216f2a
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
fix(tailshare): keep Tailscale auth keys out of persisted preferences
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>
2026-08-27 10:16:38 +00:00

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"]
}