User Story
As a Pyrycode mobile user on the home screen, I want recent discussions surfaced inline below the channels — section header, divider, preview cards, and a "See all discussions" affordance — instead of a single bottom-of-screen pill, so I can glance at recent scratch work without navigating away.
Context
Phase 1's #46 shipped a RecentDiscussionsPill that renders the count at the bottom of ChannelListScreen and navigates to DiscussionListScreen. The canonical Figma treatment (node 15:8) replaces the pill with an inline "Recent discussions" section: divider (Figma 15:85), section header (Figma 15:87), three preview cards (Figma 15:88/15:92/15:96) showing title + 2-line body + workspace · time meta, and a tappable "See all discussions (N) →" affordance (Figma 15:102) that navigates onward.
Acceptance Criteria
Technical Notes
- Existing files:
app/src/main/java/de/pyryco/mobile/ui/conversations/list/ChannelListScreen.kt, app/src/main/java/de/pyryco/mobile/ui/conversations/list/ChannelListViewModel.kt, app/src/main/java/de/pyryco/mobile/ui/conversations/components/RecentDiscussionsPill.kt
- New file expected:
DiscussionPreviewRow.kt under ui/conversations/components/ — architect to finalise naming
- Depends on the channels-section/avatar slice landing first (sectioned
LazyColumn shape, "Channels" header above)
- The message-content previews shown in the Figma mock are aspirational: the
Conversation model carries no last-message field, and ConversationRepository.observeMessages is a paginated per-conversation stream that's expensive to call per row. Render placeholder body text (e.g. conversation name, or a synthesised string from the fake repo) and defer real message-content previews to a follow-up ticket once message access is wired
Size Estimate
S
Figma
https://www.figma.com/design/g2HIq2UyPhslEoHRokQmHG?node-id=15-8
Split from #63.
User Story
As a Pyrycode mobile user on the home screen, I want recent discussions surfaced inline below the channels — section header, divider, preview cards, and a "See all discussions" affordance — instead of a single bottom-of-screen pill, so I can glance at recent scratch work without navigating away.
Context
Phase 1's #46 shipped a
RecentDiscussionsPillthat renders the count at the bottom ofChannelListScreenand navigates toDiscussionListScreen. The canonical Figma treatment (node15:8) replaces the pill with an inline "Recent discussions" section: divider (Figma15:85), section header (Figma15:87), three preview cards (Figma15:88/15:92/15:96) showing title + 2-line body +workspace · timemeta, and a tappable "See all discussions (N) →" affordance (Figma15:102) that navigates onward.Acceptance Criteria
ChannelListScreenrenders, below the channels list, in order: a thin horizontal divider (Figma15:85), a "Recent discussions" section header (Figma15:87), up to three discussion preview rows for the most-recent discussions, and a "See all discussions (N)" link with a trailing forward-arrow icon (Figma15:102/15:103)<workspace> · <relative-time>meta line — typography/spacing/colours per Figma nodes15:89–15:99ChannelListEvent.RecentDiscussionsTapped— do not introduce a parallel eventChannelListUiState.LoadedandEmptyexpose the top-3 most-recent discussions alongside the existing count;ChannelListViewModelderives this list from the existingConversationFilter.DiscussionsflowRecentDiscussionsPillremoved fromChannelListScreen(file deleted if no call sites remain); zero hardcoded colour or dimension literals (everything viaMaterialThemetokens); light + dark previews forChannelListScreencover loaded-with-discussions and no-discussions states, and the new preview row composable ships with its own previewTechnical Notes
app/src/main/java/de/pyryco/mobile/ui/conversations/list/ChannelListScreen.kt,app/src/main/java/de/pyryco/mobile/ui/conversations/list/ChannelListViewModel.kt,app/src/main/java/de/pyryco/mobile/ui/conversations/components/RecentDiscussionsPill.ktDiscussionPreviewRow.ktunderui/conversations/components/— architect to finalise namingLazyColumnshape, "Channels" header above)Conversationmodel carries no last-message field, andConversationRepository.observeMessagesis a paginated per-conversation stream that's expensive to call per row. Render placeholder body text (e.g. conversation name, or a synthesised string from the fake repo) and defer real message-content previews to a follow-up ticket once message access is wiredSize Estimate
S
Figma
https://www.figma.com/design/g2HIq2UyPhslEoHRokQmHG?node-id=15-8
Split from #63.