ITADN

left-panel: Show per-topic unread message count when stream is expanded

#1626OpenJai-76 创建于 2026-03-11
missing feature
J
Jai-76commented
Description of feature missing from another Zulip client The Zulip web client shows a numeric unread count next to each topic in the left sidebar when that topic has unread messages. In zulip-terminal, the left panel shows a total unread count at the stream level, but when you expand the stream to see its topics, all topics look identical regardless of how many unreads they contain — there's no per-topic count shown at all. This is a meaningful gap because Zulip's topic model is specifically designed to let you manage multiple conversations inside a single stream. Without per-topic counts, you can't glance at the left panel and decide which topic to open next — you either have to open them one by one, or keep the stream collapsed and lose the navigational benefit of topics entirely. In practice this means reaching for the web client whenever you're in a stream with several active topics. This is the whole-feature missing, not just a partial implementation — topic rows in the expanded stream list have no unread count display at all. (Related thread on chat.zulip.org — if anyone has discussed this in #zulip-terminal, feel free to link it here.) When was this feature first available in Zulip? Per-topic unread counts in the left sidebar have been a core part of the Zulip web client for a very long time — present since at least Zulip 2.x, well before the terminal client was built. This isn't a new web feature we're trying to catch up with — it's foundational behaviour that has always been there. Zulip version: Present since at least 2.1, confirmed present in current Zulip Cloud Zulip feature level: Not tied to a specific feature-level API addition — the unread data per topic is already available in the event system and is already consumed by zulip-terminal's model layer for the stream-level count Other details The unread count data per topic is already available in the model — zulipterminal/model.py tracks unread state and the unread_counts structure already breaks down counts by stream and topic. The stream-level count display in the left panel already uses this data. This is purely a rendering gap in the view layer: the topic row widget just doesn't currently read or display the per-topic count that the model already holds. The main implementation consideration is layout — topic rows need to fit within 80 columns (the minimum supported terminal width), so the count should be right-aligned and the topic name should truncate gracefully if the combined width is too tight. The pattern for right-aligned text in urwid rows using urwid.Columns with a fixed-width right cell already exists elsewhere in the codebase.
0 条评论