master ← topic_list_title_badges
merged 07:01PM - 12 Mar 26 UTC
## Summary
- add unread and unseen badges to topic list titles
- preserve wide t… opic-list row theming when badges are shown
- keep compact topic-list rows within width on narrow terminals
- add regression tests for badge rendering and width handling
## Verification
- ruby -c lib/termcourse/ui.rb
- bin/test
master ← notifications
merged 08:12PM - 12 Mar 26 UTC
## Summary
- add a notifications screen on `n`, with filters and table-style row… s
- add unread notification count to the status bar and keep it updated via MessageBus
- fix notification unread-state edge cases and add regression tests
## Verification
- ruby -c lib/termcourse/live_updates.rb
- ruby -c lib/termcourse/ui.rb
- bin/test
@Canapin new = c (compose) now as n is for notifications.
I might tackle localisation next …
1 Like
localisation is in
currently support for es, fr, de & en.
happy to accept PRs for more, but pretty straightforward to do this so just tell me if you are using it and what language you’d like.
Also tell me if any are horribly wrong!
master ← localisation
merged 01:36PM - 13 Mar 26 UTC
## Summary
- add built-in UI localization for `en`, `fr`, `de`, and `es`
- add `… --lang` and `TERMCOURSE_LANG`, plus locale env detection and early help/usage localization
- update the README and add regression tests for locale selection and CLI help flows
## Verification
- ruby -c lib/termcourse/localization.rb
- ruby -c lib/termcourse/cli.rb
- ruby -c lib/termcourse/ui.rb
- bin/test
I pushed a caching update that reduces the number of calls made to the server and leverages updates from MessageBus.
This should both significantly improve performance and reduce the risk of hitting rate limits.
master ← cache_strat
merged 05:27PM - 15 Mar 26 UTC
## Summary
- cache topic lists and topics in-session to reduce repeated fetche… s
- apply incoming topic updates incrementally via MessageBus topic ids
- load missing topic post chunks on demand and reduce polling/refetch churn
## Verification
- ruby -c lib/termcourse/client.rb
- ruby -c lib/termcourse/live_updates.rb
- ruby -c lib/termcourse/ui.rb
- bin/test
let me know if you hit any issues.
I’ve reworked the MessageBus code and the subscription system - notification badges should now be updated on the fly more reliably.
Topics should get new posts in “realtime” now without having to refresh the view.
Note you have to login using username/password for this to work as requires a session cookie.
master ← fix/messagebus-reconnect-reliability
merged 01:44PM - 19 Mar 26 UTC
- Reworked live status updates to be MessageBus-first, with notification and PM … badges seeded from Discourse’s notification_channel_position instead of relying on steady-state HTTP polling.
- Replaced constant healthy-state badge polling with reconnect-triggered one-shot HTTP resync, while keeping HTTP fallback when live counts are still unseeded or MessageBus is unavailable.
- Added per-channel MessageBus cursor tracking for /latest, /new, /unread, /unread/:user_id, /notification/:user_id, and active /topic/:id subscriptions.
- Added a MessageBus watchdog that runs every 30s, detects stale clients after 240s without successful polls, and rebuilds the client cleanly.
- Added reconnect recovery that restores subscriptions from saved channel positions and requests list/topic refreshes when resume state is not trustworthy.
- Introduced a timeout-configured MessageBusHTTPClient wrapper with explicit open, read, and write timeouts.
- Fixed reconnect edge cases so badge seeding keeps retrying until live values are populated, and default -1 cursors are treated as non-resumable rather than trusted.
- Added live topic subscriptions for /topic/:id, so termcourse can react while you are inside a topic instead of only at the list level.
- Added live in-topic handling for new posts, including tail-follow behavior when you are already on the last loaded post.
- Added live in-topic handling for post edits, likes/unlikes, delete/recover-style updates via targeted single-post refreshes.
- Added topic refresh fallback for reload-style and stats-style topic events when incremental updates are not sufficient.
- Fixed topic reconnect behavior so revisiting a topic updates the stored topic cursor and failed topic refreshes stay pending until they succeed.
- Improved topic-view responsiveness by removing constant idle rerenders, rendering only the needed visible post blocks, caching rendered post blocks, and reducing debug I/O churn.
- Tightened temporary debug instrumentation so it is only active when TERMCOURSE_DEBUG=1.
- Clarified auth behavior in the README: realtime MessageBus features require login auth with a session cookie; API-key auth is HTTP-only and does not support live PM/topic updates.
- Added focused regression coverage for reconnect reliability, resumable cursors, topic refresh behavior, healthy-state no-poll behavior, and the custom MessageBus HTTP client wrapper.
You can still use API key access, but you will miss out on the “realtime” topic updates
1 Like
Canapin
(Coin-coin le Canapin)
March 19, 2026, 2:24pm
25
Nice, when will you start working on a web interface to improve usability? Oh, wait a minute.
1 Like
Termcourse now supports hi-res images on expansion where a terminal supports chafa, sixel and magick.
master ← add_full_window_high_quality_image
merged 03:03PM - 22 Apr 26 UTC
In short, if you have Windows terminal and have installed chafa and imagemagick, it’s got you covered:
unfortunately as with everything Apple, their support for open source projects is a bit slow, so you can’t use this feature with native MacOS terminal.app atm.
See: https://www.arewesixelyet.com/
You might find a better terminal for macos …
1 Like