chore: redesign threads as a linear phpBB-style forum view #300

Open
userAdityaa wants to merge 1 commits from userAdityaa/flotilla:243-redesign-threads into dev
Collaborator

Summary

Implements the approved thread redesign from #243. The thread detail view replaces stacked cards with a flat, phpBB-style layout: each post shows profile info, OP badges, per-post replies, reactions/actions, and #post-N permalinks, with pagination for longer threads. The header keeps the title, reply count, and room visible while scrolling. The thread list groups topics by room as boards, with uncategorized threads under General.

Screenshots of the changes

Screenshot 2026-06-10 at 2.44.29 PM.pngScreenshot 2026-06-10 at 2.43.57 PM.png
localhost_1847_spaces_meta.spaces.coracle.social_threads(iPhone 14 Pro Max) (1).png
localhost_1847_spaces_meta.spaces.coracle.social_threads(iPhone 14 Pro Max) (2).png

### Summary Implements the approved thread redesign from #243. The thread detail view replaces stacked cards with a flat, phpBB-style layout: each post shows profile info, OP badges, per-post replies, reactions/actions, and #post-N permalinks, with pagination for longer threads. The header keeps the title, reply count, and room visible while scrolling. The thread list groups topics by room as boards, with uncategorized threads under General. ### Screenshots of the changes <img width="1440" alt="Screenshot 2026-06-10 at 2.44.29 PM.png" src="attachments/800a405e-0cac-4c58-9b33-7b68fc8aca3c"><img width="1440" alt="Screenshot 2026-06-10 at 2.43.57 PM.png" src="attachments/2142c19a-1fd0-4983-89c9-45772a386353"> ![localhost_1847_spaces_meta.spaces.coracle.social_threads(iPhone 14 Pro Max) (1).png](/attachments/7c47a9ed-23c9-4c39-9c55-70907ee9ea5f) ![localhost_1847_spaces_meta.spaces.coracle.social_threads(iPhone 14 Pro Max) (2).png](/attachments/fa3f5c40-e1a4-4f29-b312-6aee2f44368b)
userAdityaa force-pushed 243-redesign-threads from d74d07ab39 to fe9fef60b5 2026-06-10 09:19:31 +00:00 Compare
Author
Collaborator

@hodlbod, could you please take a look at the design for now? I'll clean up and refactor the code afterward 🙂

@hodlbod, could you please take a look at the design for now? I'll clean up and refactor the code afterward 🙂
Owner

I think the mockups look great, let me know when the code is ready to review.

I think the mockups look great, let me know when the code is ready to review.
userAdityaa force-pushed 243-redesign-threads from fe9fef60b5 to 71071b54c6 2026-06-10 21:42:52 +00:00 Compare
Author
Collaborator

@hodlbod, this should be ready for an initial review now.

@hodlbod, this should be ready for an initial review now.
hodlbod reviewed 2026-06-10 22:29:47 +00:00
@@ -23,0 +25,4 @@
leading,
title,
action,
hideRelay = false,
Owner

What's the reasoning behind this? I think having the relay visible is probably still important context

What's the reasoning behind this? I think having the relay visible is probably still important context
Author
Collaborator

hideRelay was only to avoid a cramped/tall mobile header after adding the two-line thread title (title + reply count/room).

but yes, we have to keep the relay context, I shall revert it back.

`hideRelay` was only to avoid a cramped/tall mobile header after adding the two-line thread title (title + reply count/room). but yes, we have to keep the relay context, I shall revert it back.
Author
Collaborator

Looks like this:
Screenshot 2026-06-12 at 9.04.42 PM.png

Looks like this: <img width="322" alt="Screenshot 2026-06-12 at 9.04.42 PM.png" src="attachments/c622ec6f-2d88-4f25-8d03-ca4b8a7be202">
Owner

Yeah, that is kind of cramped. What about meta.spaces.coracle.social * #Development * 4 replies? But that wouldn't work well on mobile. Hmmm. We can punt it for later, but let's align the space icon to the top.

Yeah, that is kind of cramped. What about `meta.spaces.coracle.social * #Development * 4 replies`? But that wouldn't work well on mobile. Hmmm. We can punt it for later, but let's align the space icon to the top.
@@ -0,0 +16,4 @@
lastActive: Map<string, number>
}
const {url, h, threads, replyCounts, lastActive}: Props = $props()
Owner

Instead of threading replyCounts and lastActive through, create a new ThreadBoardItem which calculates them locally. You can derive stuff from the repository using one of the deriveEvents utilities with an E tag. This shouldn't cause performance problems compared to iterating over all comments.

Instead of threading replyCounts and lastActive through, create a new ThreadBoardItem which calculates them locally. You can derive stuff from the repository using one of the `deriveEvents` utilities with an `E` tag. This shouldn't cause performance problems compared to iterating over all comments.
@@ -0,0 +28,4 @@
const {url, threadId, event, number, threadPubkey, onReply}: Props = $props()
const relays = removeUndefined([url])
Owner

url should never be undefined right?

url should never be undefined right?
@@ -0,0 +38,4 @@
const copyPermalink = () => {
const path = makeSpacePath(url, "threads", threadId)
const link = `${window.location.origin}${path}#post-${number}`
Owner

origin=localhost on android, use PLATFORM_URL

origin=localhost on android, use PLATFORM_URL
@@ -45,0 +75,4 @@
if (aOrder !== bOrder) return aOrder - bOrder
return a.localeCompare(b)
})
Owner

sortBy?

`sortBy`?
userAdityaa added 1 commit 2026-06-12 15:35:52 +00:00
userAdityaa force-pushed 243-redesign-threads from 71071b54c6 to ae209615d9 2026-06-12 15:35:52 +00:00 Compare
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u https://gitea.coracle.social/userAdityaa/flotilla 243-redesign-threads:userAdityaa-243-redesign-threads
git checkout userAdityaa-243-redesign-threads
Sign in to join this conversation.