docs(teams): design of record for platform Teams & community integration #151
@@ -1112,6 +1112,32 @@ push, and Play (M6–M8) follow the designed app.
|
|||||||
|
|
||||||
### Deferred (not a milestone)
|
### Deferred (not a milestone)
|
||||||
|
|
||||||
|
- **Platform Teams in the app** — **deferred 2026-08-17, no app work scheduled.** The website is
|
||||||
|
building Teams as a core platform primitive (pages, roster, activity feed, forums, notifications —
|
||||||
|
[`../website/TEAMS.md`](../website/TEAMS.md)), and the app has no story for any of it. Deferred
|
||||||
|
deliberately rather than scheduled: this milestone list is already behind, and adding a large new
|
||||||
|
surface ahead of the outstanding work would make that worse.
|
||||||
|
|
||||||
|
**What lands anyway, with no app change**, when the website ships its Phase 6: the four Team
|
||||||
|
notification streams (`team.member.joined`, `team.leadership.changed`, `team.forum.post`,
|
||||||
|
`team.announcement`) appear in `GET /auth/me/notifications/streams`, so the existing Notifications
|
||||||
|
screen renders toggles for them automatically — the catalog is server-driven.
|
||||||
|
|
||||||
|
**The stated limitation, so it is not mistaken for a bug:** a Team tickle opens the app and no more.
|
||||||
|
There is no Team screen and no deep-link target, and the per-Team mute list
|
||||||
|
(`GET|PUT /auth/me/notifications/teams`) has no UI — a user who wants to mute one Team has to do it
|
||||||
|
on the website. Whether to ship the toggles in that state, or hide the four streams behind a
|
||||||
|
capability check until there is somewhere to land, is the first decision this milestone makes when
|
||||||
|
it is picked up.
|
||||||
|
|
||||||
|
**Revival trigger:** website Phases 3–5 landed (Team pages, roster and forums exist to link to) *and*
|
||||||
|
the current milestone backlog is clear. Scope when it comes back: a Teams tab reading
|
||||||
|
`/public/teams` + `/player/teams`, deep links for the four streams, and the mute list.
|
||||||
|
|
||||||
|
> **Note the PUT-the-whole-set trap below applies to `/auth/me/notifications/teams` too** — the mute
|
||||||
|
> list is a replace-the-set endpoint, so its request DTO field must have **no default** or kotlinx
|
||||||
|
> drops it when the set is empty.
|
||||||
|
|
||||||
- **`/api/mobile` facade migration + app-version floor** — briefly planned as its own milestone
|
- **`/api/mobile` facade migration + app-version floor** — briefly planned as its own milestone
|
||||||
(2026-07-22), now **deferred with no app work scheduled**. The website's router refactor is being done in place with
|
(2026-07-22), now **deferred with no app work scheduled**. The website's router refactor is being done in place with
|
||||||
every URL byte-identical and `/api/v1` is not being retired, so the app's ~70 hardcoded `api/v1/…`
|
every URL byte-identical and `/api/v1` is not being retired, so the app's ~70 hardcoded `api/v1/…`
|
||||||
|
|||||||
2061
website/TEAMS.md
Normal file
2061
website/TEAMS.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user