diff --git a/tasks/deep-linkable-urls.md b/tasks/deep-linkable-urls.md index 922c434..69dc686 100644 --- a/tasks/deep-linkable-urls.md +++ b/tasks/deep-linkable-urls.md @@ -87,6 +87,19 @@ issue would reintroduce URL-as-state, so we deliberately don't.) - State transitions inside the session are commands against the session resource, not navigations between resources — so the URL correctly stays still. +## Decisions / known behaviors +- **Refresh returns you to the shared issue (intended).** Because the URL is the + entry point, not a live mirror, refreshing `/i/1246` after navigating to 1217 + re-seeds `Selected=1246`. This is the correct mental model for a share link, not + a bug — the address bar means "the issue this link points to." +- **Redirect-to-`/` was considered and rejected** — it can't seed the per-tab + `sessionStorage` session (the server doesn't know the sid at `GET /i/N`), and the + cookie fallback connects a *different* session than the stream uses. Passing the + id via fragment/query would either lose the no-flash SSR or re-URL-ify session + state. Direct render of `/i/N` is the only design that works under the sid model. +- **The seed is JS-gated:** no-JS clients still get the SSR'd issue page (good for + sharing/crawlers); the live session is seeded by the `data-init` select POST. + ## Risks / open questions - Validate `{shortID}` and 404 cleanly (don't seed a non-existent selection). - Issue ids are the public `short_id` (already used in `/cmd/select`), not the