You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cda1150
Browse filesBrowse the repository at this point in the historyBrowse files
fix(webapp): harden chat avatars, pasted nodes and new slugs
A live chat message now loads its author's public profile once per author. It no longer reads workspace presence, because any client can forge a presence payload. Your own messages still use the user_details on the optimistic row.
Pasted HTML can no longer create an upload placeholder node, because the node has no parseHTML now. An unknown file type falls back to the image icon. The heading unread sync escapes each channel id before it builds a selector. So a pasted node or a channel row cannot crash a document page. A Cypress paste case pins the regression.
randomDocumentSlug() now builds an 11-character 0-9a-z slug from crypto.getRandomValues, with no modulo bias. That covers /new, the new. host in src/proxy.ts, the home page and /receive. Root CLAUDE.md §Settled now protects only the Health and API routing parts of proxy.ts, and names #411 and #442 as approved edits.
Refs #428
Refs #436
Refs #442
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,7 +50,7 @@ Each was decided, and in most cases built and reverted. If you want to change on
50
50
-**Collab session helpers.** Auth and disconnect predicates live in `apps/webapp/src/hooks/collabSession.ts`. Do not rewrite `HocuspocusProvider` construction. Do not re-export those helpers from `@utils`.
51
51
-**Report route storage.** The Report action posts to the published contact address in `LEGAL_CONTACT_EMAIL` and keeps nothing. That was the deliberate scope, taken 2026-09-06 with the launch-legal review. Build storage or triage tooling only when real report volume shows it is needed, and bring the count rather than a design. One canonical home, `apps/webapp/src/utils/reportContent.ts` — do not add a second report path. Document report is a Settings row for signed-in users on a pad (`/[...slugs]`). Hide it on Home. Do not restore a pad-title control. The chat message Report row stays at `display: false`. Contract in [apps/webapp/CLAUDE.md](apps/webapp/CLAUDE.md) §Report Route.
52
52
-**Passkeys are off.** Removed 2026-09-07. No sign-in button, no Conditional UI, no Settings card, no `auth.experimental.passkey`. Local `[auth.passkey] enabled = false`. Sign-in is Google or an email link. Do not rebuild the client. A production dashboard toggle that is still on does not restore the UI.
53
-
-**Next product APIs.** Health stays on Next. Validate lives on the email router as `POST /api/email/validate`. Status does not become a Hono route. Confirm is deleted and stays deleted. Leave `apps/webapp/src/utils/supabase/api.ts`. Do not edit `src/proxy.ts`, Next health rewrites, Traefik, or Docker HEALTHCHECK. Names live in `CONTEXT.md` §Product HTTP.
53
+
-**Next product APIs.** Health stays on Next. Validate lives on the email router as `POST /api/email/validate`. Status does not become a Hono route. Confirm is deleted and stays deleted. Leave `apps/webapp/src/utils/supabase/api.ts`. Do not change the Health and API routing in `src/proxy.ts`, Next health rewrites, Traefik, or Docker HEALTHCHECK. Two other `src/proxy.ts` edits are approved: #411 forwards only `error_code` to `/auth/error`, and #442 makes the `new.` host mint its slug with `randomDocumentSlug()`. Any other `src/proxy.ts` edit needs a maintainer ruling. Names live in `CONTEXT.md` §Product HTTP.
54
54
-**History restore is signed-in only.** Visitors may read history. They never see Restore. Do not replace the hidden control with a sign-in toast on the same button. Server refusal is `unauthorized` / `read-only`. See webapp §Document Version History and `CONTEXT.md` §Document access.
55
55
-**Chat send animation.** An iMessage-style send flight was built and reverted at maintainer request on 2026-09-21, and #263 closed with motion rejected. Own sends show only the static pending clock. Do not rebuild any send motion unless the maintainer asks. See [apps/webapp/src/components/chatroom/CLAUDE.md](apps/webapp/src/components/chatroom/CLAUDE.md).
56
56
-**Phone mic is hold-only.** A tap shows a hint and never sends; release sends the note, alone, once its upload is ready. Maintainer ruling, 2026-09-22. Do not add tap-to-record on a phone. Rules and reasons in [apps/webapp/src/components/chatroom/CLAUDE.md](apps/webapp/src/components/chatroom/CLAUDE.md).
0 commit comments