Production hardening + frontend UI freeze remediation with verified burst performance#1
Production hardening + frontend UI freeze remediation with verified burst performance#1MatthewFrench wants to merge 325 commits into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c8e87331d8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 13f25cbd36
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2730a2ad3e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
2730a2a to
69e5e00
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b89bfac13
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 59d9007cec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b81abf6ebf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 04b8946884
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6156d0827e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 52aef2c1f4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0e3fac22db
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7ed015bf82
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1596326067
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
farfield/packages/codex-api/src/live-state.ts
Lines 115 to 116 in 1254005
In the object branch of applyStrictPatch, replace is handled the same as add, so a replace on a missing key creates that key instead of failing. When prior patches are missed, this masks stream divergence and produces a state that does not match the server’s patch semantics, preventing the reducer from raising an error and recovering cleanly.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f9f880ec32
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8e7ff7464c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7a8c760d68
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0f76b6c488
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d1006c116
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c821405756
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d535d72ea3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Using z.any() here disables schema validation for sandbox, so malformed adapter responses can silently pass protocol parsing and propagate invalid data to downstream callers that rely on typed contracts. This also conflicts with the strict typing rule in /workspace/farfield/AGENTS.md (“types must be absolutely precise”), so this field should use an explicit schema instead of accepting arbitrary values.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6456c9eb55
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4939a86776
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a1a723e9b3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c8f16159b0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc549f26b5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cc44941897
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0675dbb2b2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1ab3514934
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a13d4ecd74
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0a5f6bef8e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a6135acd22
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Reviewed the previously unresolved PR concerns and addressed the affected code paths locally in this branch. Covered fixes:
Focused verification completed:
As of March 11, 2026, GitHub reports |
Add a thread-scoped runtime-status route backed by live state and pending server requests so sidebar badges can hydrate without broad thread rereads. Wire a startup hydration effect through the shared ThreadServerClient and add focused web/server coverage for the new path. Fix supporting test and harness regressions uncovered while taking the repo green, including local file-download disconnect handling, stable real-app fixture API URL derivation, and updated web test fixtures/assertions for current thread-list contracts.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d04dba8cd6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c4aad3de4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the outstanding PR review comments across the server, web, protocol, and tooling owners. This tightens proxy trust decisions, stabilizes stable-dev and download streaming, normalizes auth gating, bounds query and sync inputs, fixes cursor/session edge cases, and hardens local image and push watermark behavior. It also adds focused regression tests for the reviewed paths and leaves unrelated docs changes out of the commit.
Restore the moved empty-runtime-status helper export/import after splitting UseEventStreamEffects support logic into dedicated modules so the web typecheck and push hooks pass cleanly.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b6d2a0f95
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 64481223aa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d78082ba55
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| @trusted_api { | ||
| path /api/* | ||
| header Origin {{SITE_ADDRESS}} |
There was a problem hiding this comment.
Allow same-origin API GETs without Origin header
The local Caddy trust matcher only treats /api/* as trusted when Origin exactly matches {{SITE_ADDRESS}}, and sends all other API requests to @untrusted_api (403). Same-origin browser GET/HEAD requests commonly omit the Origin header, so normal read flows (for example thread list loads) can be blocked when running through Caddyfile.local.template with token injection enabled. The domain template already has an originless GET/HEAD allowance for this case; local mode needs the same behavior (or an equivalent non-spoofable trust signal) to avoid breaking authenticated reads.
Useful? React with 👍 / 👎.
Align live thread-stream contracts with current Codex payloads by sharing structured input-part schemas and adding dynamicToolCall turn-item support. Render dynamic tool call items in the chat UI so accepted snapshots remain visible instead of tripping exhaustive item handling. Reduce codex-invalid-thread-stream-event-detail console noise by logging a compact summary while still persisting the full invalid payload to the NDJSON artifact for debugging.
Add server and web support for richer thread workflows, including fork-from-message routing, project-context persistence, first-turn hydration, and read-thread/materialization handling improvements. Expand web state-management and tests around chat, thread actions, and selected-thread refresh behavior so new thread and empty-thread flows stay deterministic. Update stable-dev and real end-to-end tooling, configuration, and docs to match the new runtime behavior and validation paths.
Extract secondary chat request and approval handlers into a dedicated hook so UseChatActionHandlers stays within the repository file and function size budgets. Keep the explicit handler contract intact, update dependent test fixtures, and restore clean lint/typecheck coverage without bypassing repository hooks.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 706b0f1630
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| clientWriteState.queuedFrames.push(frame); | ||
| this.flushQueuedFrames(client); |
There was a problem hiding this comment.
Bound queued SSE frames for backpressured clients
When a client hits backpressure (write returns false), flushQueuedFrames stops draining, but enqueueFrame keeps appending every broadcast and keepalive without any bound. A slow or stalled SSE connection can therefore accumulate an unbounded queuedFrames array and grow server memory until process instability; this path should cap buffered frames and evict or otherwise shed persistently backpressured clients.
Useful? React with 👍 / 👎.
|
|
||
| @trusted_api { | ||
| path /api/* | ||
| expression {header.Origin} == "https://{{DOMAIN_HOST}}" || ({header.Origin} == "" && ({method} == "GET" || {method} == "HEAD")) |
There was a problem hiding this comment.
Remove originless GET/HEAD trust from domain API matcher
Fresh evidence in this commit: the domain trusted matcher explicitly allows Origin to be empty for GET/HEAD, which means non-browser clients can omit Origin and still receive X-Farfield-Token injection on /api/*. In deployments reachable beyond localhost, that grants token-protected read API access without presenting the token and weakens the intended auth boundary.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 219efde986
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| env: { | ||
| ...process.env, | ||
| PORT: developmentApiPort, |
There was a problem hiding this comment.
Allowlist env vars before spawning dev child processes
This spawn path forwards the entire parent environment (...process.env) into the server/web child processes, which can expose unrelated secrets to downstream logs, debug surfaces, or subprocess artifacts whenever developers run bun run dev with sensitive shell variables set. The repository contract in AGENTS.md (rule 47) requires schema-owned allowlisted child environments; this should be restricted to the explicit keys these children actually need.
Useful? React with 👍 / 👎.
| const result = spawnSync(command, args, { | ||
| stdio: "inherit", | ||
| env: process.env | ||
| }); |
There was a problem hiding this comment.
Do not pass full parent env to end-to-end subprocesses
The safety runner executes bun/bunx playwright with env: process.env, so every CI/developer secret in the parent shell is inherited by the spawned test toolchain; those values can leak into traces, crash dumps, or child-command logging under failure conditions. This violates the same AGENTS.md rule 47 allowlist requirement and should be replaced with an explicit, minimal environment contract.
Useful? React with 👍 / 👎.
Update (2026-02-27): Project Ordering Parity (Portable, No Codex Local-State Coupling)
This branch now also includes the project-order parity fix that matches Codex behavior using only Farfield thread data.
Root cause
Crunchy-Watchlist) could rank differently until the archived section was opened.What changed
min(createdAt)asprojectCreatedAtso ordering semantics are stable and deterministic.loadCoreDataTrackednow preloads archived thread metadata, so first visible ordering is correct without requiring the archived section to be opened.~/.codexfile reads or Codex-specific local-state contracts.Validation
bun run --cwd apps/WebApplication test -- Tests/UseCoreDataLoaders.test.tsx Tests/ThreadListPresentationStateResolver.test.ts Tests/ThreadGroupSelectors.test.tsbun run --cwd apps/WebApplication typecheckbunx @biomejs/biome check --error-on-warningson touched filesnode scripts/tooling/with-env.mjs "bunx playwright test -c playwright.real.config.ts end-to-end/real/scenarios/project-ordering.spec.ts"(passes)Update (2026-02-27): Frontend UI Freeze Remediation Completed
This branch now also includes full frontend freeze-remediation closure, with all planned phases implemented and verified.
What was added
/api/threadsand/api/threads/:threadId/stream-eventsresponse contractsbun run stress:stream-burstBurst evidence (latest)
streamRequests=51919streamFailures=0healthProbes=30healthFailures=0healthNotReady=0healthP95=16mshealthMax=20msstreamRouteP95=2.667msstreamRouteP95QueueDelay=6msstreamRouteMaxQueueDelay=6mshealthRouteP95QueueDelay=15mshealthRouteMaxQueueDelay=24msFreeze-remediation verification run
bun run --cwd apps/WebApplication test -- Tests/FarfieldHttpTransport.test.ts Tests/ThreadApi.test.ts Tests/EventStreamRefreshDecisionEngine.test.ts Tests/EventStreamConnectionCoordinator.test.ts Tests/UseEventStreamEffects.test.tsx Tests/EventStreamRefreshDecisionWorkerOwner.test.ts Tests/ThreadListPresentationStateResolver.test.tsbun run test:ci:mocked:web:criticalbun run lintbun run typecheckbun run stress:stream-burstbun run verify:end-to-end:realWhy This PR Exists
Farfield needed to become trustworthy for real-device push workflows (especially iOS Home Screen usage): secure by default, privacy-correct in mixed subscriber setups, operationally diagnosable, and protected by real quality gates so regressions are caught before merge.
Most Important Outcomes
1) Push reliability and correctness on real devices
notificationId/createdAtper test run.2) Security and privacy hardening where it matters
/api/*and/eventsauth behavior is enforced more consistently./api/push/local-cano longer leaks host filesystem metadata (sourcePathremoved).3) Stronger engineering guardrails across the repo
premerge:check.lines/statements: 46branches: 72functions: 844) Data/cache and request efficiency improvements
5) Separation of concerns to prevent architectural sprawl
6) Architecture and maintainability improvements
DesktopIpcClientwas refactored to extract frame-buffer ownership into a dedicated module.Key Changes (By Area)
Server / Network / Push
Web Application
Protocol + Adapters
Review Thread Follow-Through
All previously unresolved review threads on this PR were addressed by implementing fixes, replying with concrete resolution notes, and resolving each thread via
gh.Validation
bun run premerge:check(lint + tests + coverage gate): ✅