Skip to content

Render reply tree on post detail screen#1046

Open
joelmuraguri wants to merge 3 commits intojoel/reply-tree-data-layerfrom
joel/reply-tree-ui
Open

Render reply tree on post detail screen#1046
joelmuraguri wants to merge 3 commits intojoel/reply-tree-data-layerfrom
joel/reply-tree-ui

Conversation

@joelmuraguri
Copy link
Collaborator

@joelmuraguri joelmuraguri commented Feb 26, 2026

Demo

XRecorder_20260226_01.mp4

@joelmuraguri joelmuraguri requested a review from tunjid February 26, 2026 14:30
@gemini-code-assist
Copy link

Summary of Changes

Hello @joelmuraguri, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the user experience on the post detail screen by introducing a structured and visually intuitive way to display threaded replies. By rendering replies as a tree with indentation and connecting lines, users can more easily follow complex conversations. The implementation includes mechanisms to limit the initial display of replies, ensuring a clean UI while providing options to expand and view the full discussion.

Highlights

  • Reply Tree Rendering: Introduced new composable functions, ReplyTreePost and ReplyTreeItem, to render nested reply trees on the post detail screen.
  • Visual Structure: Implemented visual indentation and branch lines for replies to clearly represent the conversational hierarchy.
  • Reply Expansion Logic: Added logic to manage the display of replies, including limits on the maximum depth and number of siblings, with 'Show More' functionality for expanding hidden replies.
  • Conditional Rendering: Modified the main TimelineItem composable to conditionally render the new ReplyTreePost when a TimelineItem.ReplyTree type is encountered.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • ui/timeline/src/commonMain/kotlin/com/tunjid/heron/timeline/ui/TimelineItem.kt
    • Imported ReplyNode and times extension for Dp to support reply tree functionality.
    • Added a conditional branch within the TimelineItem composable to render ReplyTreePost for TimelineItem.ReplyTree types.
    • Introduced ReplyTreePost composable to manage the rendering of a main post and its direct replies, including 'Show More' functionality.
    • Implemented ReplyTreeItem composable for recursively rendering individual reply nodes with indentation, branch lines, and child expansion logic.
    • Defined constants MaxReplyTreeDepth, MaxReplyTreeSiblings, and ReplyTreeIndent to control the visual presentation and depth of reply trees.
    • Updated the isThreadedAncestorOrAnchor extension property to correctly identify TimelineItem.ReplyTree instances.
Activity
  • No specific activity has been recorded for this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@joelmuraguri joelmuraguri changed the title Render reply tree with indentation and branch lines on post detail screen Render reply tree on post detail screen Feb 26, 2026
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the functionality to render a reply tree with proper indentation and branch lines on the post detail screen. It adds new composables ReplyTreePost and ReplyTreeItem to handle the recursive rendering of replies, including logic for depth limits and expanding hidden replies. New constants for reply tree depth, sibling limits, and indentation have been added, improving maintainability. The changes correctly integrate the new reply tree display into the existing timeline item rendering logic.

@tunjid
Copy link
Owner

tunjid commented Feb 27, 2026

I think the UI needs quite a bit of work. The gaps in the timeline lines in the UI can't be merged in this state. If there's any indentation in the reply node, there should be a curved arrow to the reply like in the bsky app.

Also I don't think this is shippable without a toggle between the old and new behavior

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Display reply tree with indentation and branch lines on the post detail screen

2 participants