Skip to content

release: v2.5.0 — upstream parity, device sharing, web dashboard - #25

Open
soumyadebroy3 wants to merge 2 commits into
mainfrom
release/v2.5.0
Open

release: v2.5.0 — upstream parity, device sharing, web dashboard#25
soumyadebroy3 wants to merge 2 commits into
mainfrom
release/v2.5.0

Conversation

@soumyadebroy3

Copy link
Copy Markdown
Owner

v2.5.0 — upstream parity, device sharing, web dashboard

Major upstream-parity release. Adds new providers + cost-accuracy fixes, the context/acting features, and two greenfield subsystems. Nothing network-facing is on by default.

Highlights

  • Device sharing (opt-in, LAN). codeburn share / codeburn devices / status --scope combined. Mutual-TLS with trust-on-first-use cert pinning, 6-digit PIN + approve-style matching-code pairing, bearer tokens bound to the peer cert. Only sanitized aggregates leave the machine — never project names, paths, or session detail (sanitized on send, re-sanitized on receipt).
  • Local web dashboard. codeburn web — loopback-only (127.0.0.1, Host/Origin-guarded) React SPA: granular usage timeline + By Tool / Top Projects / Model Efficiency / Skills / MCP / Subagents panels + context explorer.
  • Context breakdown (codeburn context), acting layer (optimize --apply, act list|undo|report), overview/audit/price-override, Codex credits (+ menubar credits hero), Lifetime period, and new providers (Grok, zcode, Hermes, Open Design, Zed, LingTai, Devin, ZeroStack).

Security

Device-sharing crypto surface reviewed adversarially. Pairing confirmation code widened 3 → 6 digits (collision-resistant); manual host+PIN pairing warns to verify the typed address. TLS pinning, token↔cert binding, and the egress boundary verified.

Verification

tsc clean · 1121 tests pass · Swift menubar builds · web SPA builds · web dashboard demoed live end-to-end.

Major upstream-parity release. Adds new providers and cost-accuracy fixes,
the context/acting features, and two greenfield subsystems — opt-in LAN
device sharing (mutual-TLS) and a loopback-only web dashboard. Nothing
network-facing is on by default.

- Device sharing: `codeburn share` / `codeburn devices`, mDNS discovery,
  mutual-TLS + trust-on-first-use cert pinning, 6-digit PIN and approve-style
  matching-code pairing, bearer tokens bound to the peer cert. Only sanitized
  aggregates leave the machine — never project names, paths, or session detail.
- Web dashboard: `codeburn web`, loopback-only (127.0.0.1, Host/Origin-guarded)
  React SPA with a granular usage timeline and By Tool / Top Projects / Model
  Efficiency / Skills / MCP / Subagents panels plus a context explorer.
- Context token breakdown, acting layer (optimize --apply, act list|undo|report),
  overview/audit/price-override commands, Codex credits + a menubar credits hero,
  Lifetime (all-time) period, and new providers (Grok, zcode, Hermes, Open
  Design, Zed, LingTai, Devin, ZeroStack). Cursor real composer-context tokens.
- Security: pairing confirmation code widened 3 -> 6 digits (collision-resistant);
  manual host+PIN pairing warns to verify the typed address.

tsc clean, 1121 tests pass, Swift menubar and web SPA build.
Comment thread src/sharing/client.ts
path,
key: ep.identity.key,
cert: ep.identity.cert,
rejectUnauthorized: false,

constructor(private readonly opts: ShareServerOptions) {
this.server = createServer(
{ key: opts.identity.key, cert: opts.identity.cert, requestCert: true, rejectUnauthorized: false },
const url = new URL(req.url ?? '/', 'https://localhost')
const json = (code: number, body: unknown): void => {
res.writeHead(code, { 'content-type': 'application/json' })
res.end(JSON.stringify(body))
Comment thread src/web-dashboard.ts
res.end(JSON.stringify({ ok: true, name: device.name }))
} catch (err) {
res.writeHead(409, { 'content-type': 'application/json; charset=utf-8' })
res.end(JSON.stringify({ ok: false, error: err instanceof Error ? err.message : String(err) }))
Comment thread src/web-dashboard.ts
startError = err instanceof Error ? err.message : String(err)
}
res.writeHead(200, { 'content-type': 'application/json; charset=utf-8' })
res.end(JSON.stringify({ ...(await share.status()), error: startError }))
Comment thread src/web-dashboard.ts
}
} catch (err) {
res.writeHead(500, { 'content-type': 'application/json' })
res.end(JSON.stringify({ error: err instanceof Error ? err.message : String(err) }))
Semver-safe lockfile bumps that resolve the high/medium Dependabot alerts
in build/test tooling only (none are runtime deps; the published package
ships compiled dist/ and is unaffected):
- vite: server.fs.deny bypass on Windows alternate paths (HIGH)
- vite: launch-editor NTLMv2 hash disclosure (MEDIUM)
- ws: memory-exhaustion DoS (HIGH)  [root, via vitest]
- vite (windows/ Tauri app): server.fs.deny bypass (HIGH)

Root now: 0 high/medium; 1 low residual (esbuild dev-server file-read on
Windows) left as-is — clearing it needs a major tsx/tsup bump for a
low-severity, dev-only, Windows-only issue. Full test suite still green.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants