---
title: Recent Updates
sidebar_position: 1
---

# Recent Updates

Every documented change from the last **14 days**, newest first — one row per update, so a guide edited several times shows each change separately.

Each line is the guide author's own **What's new** entry — what changed *for the
client*, not what the commit did. Open the guide for the detail. Regenerated on
every deploy.

| Date | Guide | What changed |
| --- | --- | --- |
| 2026-09-10 | [Deep Links & Share Links — Mobile Integration Guide](./deep-links/mobile-deep-links-guide.md) | Housekeeping only: the link site now runs on Firebase Hosting instead of |
| 2026-09-10 | [Mobile Posts — Integration Guide](./post/mobile-posts-guide.md) | No client impact: the share link's landing page moved from Cloudflare Pages to Firebase Hosting. Share URLs, the ?ref= code and everything in §18 are unchanged; only the "Domain + TLS" row in §18.7… |
| 2026-09-09 | [Mobile Chat — Integration Guide](./chat/mobile-chat-guide.md) | pendingPostRequest now carries selectedOptions — the options the requester ticked when they submitted. Show them on the chat request card the same way the author's Responses tray does; the array is… |
| 2026-09-09 | [Mobile Chat Sockets — Integration Guide](./chat/mobile-chat-socket-guide.md) | chat_list_update's pendingPostRequest now carries selectedOptions — the options the requester ticked on the post. Render them on the row's request card without a fetch; [] when nothing was ticked. |
| 2026-09-09 | [Deep Links & Share Links — Mobile Integration Guide](./deep-links/mobile-deep-links-guide.md) | First version. Share URLs now live at letsclustr.com/posts/:id |
| 2026-09-09 | [Mobile Post Interactions — Integration Guide](./post/mobile-post-interactions-guide.md) | The share URL in §3.1 was wrong: it is |
| 2026-09-09 | [Mobile Post Request ↔ DM Wiring — Integration Guide](./post/mobile-post-request-dm-guide.md) | The conversation's pendingPostRequest now includes selectedOptions, so the chat card can show the ticked options exactly like the author's Responses tray. No extra call. |
| 2026-09-09 | [Mobile Posts — Integration Guide](./post/mobile-posts-guide.md) | Share URLs changed shape: POST /api/posts/:id/share now returns https://letsclustr.com/posts/<id>?ref=<code>. The /p/<id> form documented here before was wrong — it was never served by anything and… |
| 2026-09-09 | [Mobile Profile — Edit Profile Integration Guide](./user-actions/mobile-profile-guide.md) | Deleting an account now gives the user 30 days to change their mind, not 14 — if your screen says 14 days anywhere, fix the copy. Logging in again inside that window still restores everything. Two… |
| 2026-09-08 | [Mobile Profile — Edit Profile Integration Guide](./user-actions/mobile-profile-guide.md) | Every education response now carries a nested school object (id, name, state, district) for entries saved with a schoolId — read the school's state/district from there, they were never stored on th… |
| 2026-09-08 | [Mobile Report & Block Guide](./user-actions/mobile-report-block-guide.md) | This guide was wrong and is now corrected. It said "nothing is auto-hidden by a report" and "the reported user is never told". Both are false as of today: the two new first-person reasons (SHOWS_ME… |
| 2026-09-07 | [Mobile Chat Moderation — Integration Guide](./chat/mobile-chat-moderation-guide.md) | Chat's behaviour is unchanged, but the same filter now covers the whole app — posts, comments, profiles, search and the rest — so build one shared 422 handler instead of a chat-only one. See [mobil… |
| 2026-09-07 | [Mobile Content Moderation — Integration Guide](./moderation/mobile-content-moderation-guide.md) | Blocked-word checking now covers every text field in the app, not just chat. Posts, comments, events, your profile, activities, achievements, school submissions, onboarding and the search box can a… |
| 2026-09-07 | [Mobile Posts — Integration Guide](./post/mobile-posts-guide.md) | The topic picker is now the 9 interest categories, not the ~1130 fine-grained topics. Nothing changes in the request: still topicSlugs, still 1–2, still slugs from GET /api/users/topics — that call… |
| 2026-09-07 | [Mobile Activities & Achievements — Integration Guide](./user-actions/mobile-activities-achievements-guide.md) | Interests are picked as categories again, but the field is topicSlugs, not topicCategories: send the category's slug ("sports-fitness"), 0–2 of them, from the inline topics options in form-schema.… |
| 2026-09-07 | [Mobile Profile — Edit Profile Integration Guide](./user-actions/mobile-profile-guide.md) | PATCH /api/users/me/profile now saves firstName and lastName too, so the whole Edit-profile form is one call (except the avatar and school info). Breaking: the same endpoint no longer accepts an av… |
| 2026-09-07 | [Mobile Report & Block Guide](./user-actions/mobile-report-block-guide.md) | The report box is never profanity-filtered, on purpose: a child reporting bullying has to be able to quote it. Don't pre-filter that input in the app either. Every other text field in the app did j… |
| 2026-09-07 | [Mobile Schools — Integration Guide](./user-actions/mobile-schools-guide.md) | POST /api/schools still rejects an inappropriate school name with 422 SCHOOL_NAME_BLOCKED — unchanged — but the same check now also covers state, district and the q on school search, and the 422 ca… |
| 2026-09-07 | [Mobile Topics & Interests — Integration Guide](./user-actions/mobile-topics-interests-guide.md) | Create screens (post / activity / achievement) now pick from the 9 categories, not the ~1130 fine-grained topics: same field and shape, you still submit topicSlugs (max 2), the values are just cate… |
| 2026-09-07 | [Mobile Onboarding — Integration Guide](./user-onboarding/mobile-onboarding-guide.md) | The interests screen must now call GET /api/users/topics?representative=1 (~86 curated topics). Plain GET /api/users/topics no longer returns the full taxonomy — it now returns the 9 interest categ… |
| 2026-09-04 | [Mobile Schools — Integration Guide](./user-actions/mobile-schools-guide.md) | All 36 states and union territories now appear in the state dropdown. Punjab, Haryana, Delhi, Uttarakhand, Sikkim, Arunachal Pradesh and five more were missing entirely. Eleven of them have no scho… |
| 2026-09-04 | [Mobile Schools — Integration Guide](./user-actions/mobile-schools-guide.md) | "Tamilnadu" now reads "Tamil Nadu" in every response. You can send either spelling back; both work. |
| 2026-09-04 | [Mobile Schools — Integration Guide](./user-actions/mobile-schools-guide.md) | The typeahead section was wrong and is now corrected. q is required with a 3-character minimum (not 2), a missing q returns 200 with meta.needsQuery (there is no MISSING_FILTER code), pinCode narro… |
| 2026-09-01 | [Mobile Chat Groups — Integration Guide](./chat/mobile-chat-groups-guide.md) | Group-settings copy now names the mechanism ("changed the group settings so only admins can send messages"), so a reader who didn't know the setting exists learns that it does. |
| 2026-09-01 | [Mobile Chat Groups — Integration Guide](./chat/mobile-chat-groups-guide.md) | A group you left or were removed from stays in your list, read-only. Section 8 has the full viewerLeft contract: what you still get, what returns 403, and how clearing dismisses the thread. |
| 2026-09-01 | [Mobile Chat — Integration Guide](./chat/mobile-chat-guide.md) | A group you left stays in your conversation list, read-only rather than disappearing (section 2.1a). Blocked DMs are the exception — they still vanish for both sides. |
| 2026-09-01 | [Mobile Chat System Messages — Integration Guide](./chat/mobile-chat-system-messages-guide.md) | Group-settings lines now name the setting: "Alice changed the group settings so only admins can send messages." The description-changed line carries a View description affordance — render it when c… |
| 2026-09-01 | [Mobile Chat System Messages — Integration Guide](./chat/mobile-chat-system-messages-guide.md) | A group you left or were removed from no longer disappears. It stays in the list, read-only, frozen at the moment you left, ending with the line that says what happened. Blocked DMs still vanish. |
| 2026-09-01 | [Mobile Chat System Messages — Integration Guide](./chat/mobile-chat-system-messages-guide.md) | Request lines now carry the post title — "You accepted Bob's request for "Debate Partner"." The title is snapshotted when the line is written and clipped to 40 characters for display. |
| 2026-09-01 | [Mobile Chat System Messages — Integration Guide](./chat/mobile-chat-system-messages-guide.md) | The request card's status chip was dropped. It was planned in the design review, then withdrawn: every state it would show is already a line in the same thread. Don't build it. |
| 2026-09-01 | [Mobile Chat System Messages — Integration Guide](./chat/mobile-chat-system-messages-guide.md) | post_request_opened is retired — 13 events remain. An old one arrives as system.unsupported, so keep that fallback. A rejected request is now worded "wasn't accepted", never "declined", in the bubb… |
| 2026-09-01 | [Mobile Post Request ↔ DM Wiring — Integration Guide](./post/mobile-post-request-dm-guide.md) | Request system messages now name the post — "Your request for "Debate Partner" was accepted." (section 7). The title is snapshotted, so it stays readable even if the post changes later. |
| 2026-09-01 | [Mobile Post Request ↔ DM Wiring — Integration Guide](./post/mobile-post-request-dm-guide.md) | The status chip on the request card is withdrawn. Build the card plus the thread's own lines; there is no postRequest: { id, status } field to render. |
| 2026-09-01 | [Mobile Post Request ↔ DM Wiring — Integration Guide](./post/mobile-post-request-dm-guide.md) | post_request_opened is gone — submitting a request now writes only the seed message. A rejected request reads "wasn't accepted". |
| 2026-09-01 | [Mobile Posts — Integration Guide](./post/mobile-posts-guide.md) | topicSlugs is now optional on ANYTHING posts — leave it out or send [], both work. The other four post kinds still need 1–2 topics. Also corrected here: the field table said 1–10 topics; the real l… |
| 2026-09-01 | [Mobile Report & Block Guide](./user-actions/mobile-report-block-guide.md) | Blocked DMs still disappear for both sides — deliberately. Groups you left became visible-and-read-only in the same release; blocks were carved out, because restoring a blocked thread would undo wh… |
| 2026-09-01 | [Mobile Verification & Password Reset Guide](./user-actions/mobile-verification-guide.md) | Forgot-password will never tell you whether an email is registered — this is deliberate. An unknown email still reaches the OTP screen and fails there with the same generic error a wrong code gives… |
| 2026-08-31 | [Mobile Chat Groups — Integration Guide](./chat/mobile-chat-groups-guide.md) | Some chat decisions are recorded but not built yet. The "decided, not yet shipped" section says what not to build against — check it before following the Figma screens. |
| 2026-08-31 | [Mobile Post Request ↔ DM Wiring — Integration Guide](./post/mobile-post-request-dm-guide.md) | Chat design-review decisions were recorded ahead of implementation — check the "decided, not yet shipped" note before building. |
| 2026-08-31 | [Mobile Report & Block Guide](./user-actions/mobile-report-block-guide.md) | Some chat decisions are recorded but not built yet — see the "decided, not yet shipped" note before building against them. |
