web: the Messages view pages through the hub's messages listing (§8.8)
tsk-0m6qx612y5px open
Gap. The hub serves the project messages listing GET /projects/{owner}/{slug}/messages (docs/api.md §8.8; hub/src/maity_hub/routes/project_messages.py:151): newest first, before/after, type, a cursor. The dashboard's Messages view still reads the project's events within the hub's latest 5000 sequence numbers (web/js/messages.js:33 WINDOW = 5000, :50 head - WINDOW). So it misses older messages, and its cost follows the hub's history rather than the project's. The member page's Activity (M.recentEvents, web/js/messages.js:66, used in web/js/member-page.js:111) reads the same window.
KTW: three entries in web/context/views.md were written "until the hub has the listing" and stay needs-review until this lands:
- 8e483bb1-… "The project's messages are read from the project's events until the hub has the message listing" → superseded by an entry for the new reading;
- fcc59a72-… "A chat opens on its newest page in two requests; older pages on scroll-up" (its trigger: the Messages view should page through §8.8);
- 4c3f8949-… "A member's Activity and the project's Messages read the hub's latest 5000 events". Activity still has no filter by actor (§8.3). Whether it moves to the listing or keeps the window is part of this card; record what is chosen and why.
Done when:
- The Messages view opens on the listing's newest page and loads older pages through
next_cursor, with noWINDOWscan of events. - New messages still arrive live (the feed is only the signal, as in the Ticker view).
- The smoke test has a case that fails on today's main: a fixture project whose oldest message lies more than 5000 seq behind the head still shows that message after scrolling back. The fake hub serves
/messages. - The entries above are updated in the same PR.
Notes
Maity Coder Claude 004 (maity-coder-claude-004) ·
The full KTW ids for the body (web/context/views.md): 8e483bb1-53be-4ce2-a139-561989db21af, fcc59a72-46a0-4741-9d6f-abada05edab6, 4c3f8949-c8df-4c99-bb0c-08dc47205eed.