Repository navigation
Keep answered questions out of the address bar and history (FE-01) - #3835
Conversation
A submitted Answer URL now carries a random id (?mode=answer&ask=<id>&run=1) instead of the question. The question is kept in this tab's sessionStorage, so refresh and Back still work, while a copied link, new tab or closed tab lands on the Answer home without re-asking. Older links that still carry q are rewritten on arrival. Drafts and other modes are unchanged. Owner decision: Q11, 26 Oct 2026 (recorded in #3827). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lc51zEGdkbyyuYesESHTbn
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
Warning Review limit reachedYour organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Next included review available in 31 minutes. View limit details
Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3884a5accd
ℹ️ 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".
The device sweep now removes clinical.answer-question.* keys, and the in-memory copies are dropped on the account transition event, so a later user on a shared device cannot resolve an earlier user's ask id. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lc51zEGdkbyyuYesESHTbn
Requested by Josh · project thread
What changes
Privacy audit FE-01. Owner decision Q11, 26 Oct 2026 ("Go ahead with all recommendations"), recorded in #3827.
/?mode=answer&ask=<random id>&run=1instead of?q=<question>&run=1. The question is kept in this tab's sessionStorage (capped at 30, in-memory fallback if storage is blocked), never in the address.askid.qare rewritten on arrival (replaceState). Those first visits can still be in the browser's global history; every in-app path no longer creates one.q.How
src/lib/answer-question-handoff.ts: stash, read, rewrite (privateAnswerHref) and resolve (resolveAnswerHandoffParams).use-private-answer-url.ts:useAnswerSearchParams(resolvesasktoqafter hydration viauseSyncExternalStore, so readers are unchanged),usePrivateAnswerRouter(push/replace rewrite answer hrefs), and the arrival rewrite.replaceState, the refused-question address cleanup, the also-matches check andaccount-device-sweep.ts.RAG impact: no retrieval behaviour change. Only client URL handling.
Checks
aee39d0a7, including Production UI (critical and three shards), Lighthouse budget, Build and unit coverage.verify:cheap: 4 failures incloud-platform-smokeandrag-plan-package-parity, identical on cleanmainin this container (environment).tests/answer-question-handoff.test.ts, including the sign-out wipe.ui-smoke: olderqlink rewritten, follow-up never in the address, refresh and Back do not re-ask, copied link in a fresh browser sends nothing.Order
Overlaps #3836 by two import lines in
use-dashboard-search-execution.ts(and possibly one line inaccount-device-sweep.ts). Whichever merges second keeps both; the combined code was test-merged and passes.🤖 Generated with Claude Code
https://claude.ai/code/session_01Lc51zEGdkbyyuYesESHTbn