Files
Kevin Codex 869ebb91dc fix(profiles): cap zalgo text, keep tags only in real flags, review leftovers
Deploy blockers (both from 658b50d's cleaning rewrite)
- Length: the grapheme cut alone let one letter carry thousands of combining
  marks ("a" + 3000 x U+0301 saved as a 3,000-character name; a bio kept
  4,001). Each character now keeps at most 4 combining marks and 16 code
  points (the longest emoji, a family with skin tones, is 11), and a field at
  most 4 code points per allowed character. Real diacritics and emoji are
  kept; an emoji at the limit is kept or dropped whole, never split.
- Tags: tag characters survive only inside the three subdivision flags emoji
  have (England, Scotland, Wales). Any other black flag + tags rendered as a
  plain flag while carrying hidden ASCII ("ignoreallprevinstruc" got
  through), the kind of text that steers an LLM reading names or bios.
- Pasted line breaks and tabs in a one-line field become a space instead of
  gluing words together.
- Tests: zalgo name and bio under their caps, fake flags stripped, the three
  real flags unchanged, 👨‍💻 / 🏳️‍🌈 / a skin-tone family at the exact limit,
  and the idempotency fuzz still holds.

Review leftovers
- migrate.mjs: a failed concurrent build names the index and the likely
  cause (55P03: an older transaction is still open, or another session holds
  the table; 57014: past the 20 min timeout). Still exits 1; retrying the
  deploy is safe.
- The availability check takes the form's X handle, so a verified owner's
  claim matches the save's rule (only while keeping that handle).
- The as-sent signature candidate counts only when the fields hold no C0/C1
  controls, bidi marks, overrides or isolates, or line / paragraph
  separators (the bio may keep line breaks); otherwise only the cleaned text
  is accepted.
- approve_x takes each released wallet's profile lock (in wallet order)
  before touching its rows, as that wallet's own verify does.
- deleteProfile's doc says when a name is held (kept a day or more).
2026-10-09 11:47:34 +08:00
..
2026-09-07 11:28:24 +08:00