Context
Operator input (2026-06-01) on the Portal news discussions view: the lazy-load tree should show, per discussion leaf, whether it is open vs closed/answered — so the tree communicates discussion status at a glance (like GitHub's open/answered markers).
The Problem
Portal.model.Discussion.treeNodeName renders a discussion leaf as <b>${id}</b> <span class="discussion-title">${title}</span> — no state affordance. The discussion state (open / closed / answered) is available in the synced markdown frontmatter but is not surfaced in the tree.
The Fix (direction)
Surface discussion open/closed (answered) state in the discussions tree leaf — e.g. a leading state icon or color class driven by a state field on Portal.model.Discussion, mirroring the 3-state badge pattern the tickets/pulls timeline views already use (getStateBadgeHtml). Requires:
- The discussions index generator (
buildScripts/docs/index/discussions.mjs) to carry the discussion state into the chunk leaf records.
Portal.model.Discussion to expose a state field and fold it into treeNodeName (icon/cls).
- Theme vars for the state colors (the shared
--gh-state-* palette already exists on the content base after #12312).
Acceptance Criteria
Out of Scope
- Chunk-folder naming scheme for discussions (the broader cross-view folder-UX brainstorm).
- tickets/pulls tree state (their timeline views already badge state; this is the discussions tree).
Related
- Epic #12204 (Portal news views & chunked tree).
- Shared
--gh-* palette now on the content base (#12312).
Context
Operator input (2026-06-01) on the Portal news discussions view: the lazy-load tree should show, per discussion leaf, whether it is open vs closed/answered — so the tree communicates discussion status at a glance (like GitHub's open/answered markers).
The Problem
Portal.model.Discussion.treeNodeNamerenders a discussion leaf as<b>${id}</b> <span class="discussion-title">${title}</span>— no state affordance. The discussion state (open / closed / answered) is available in the synced markdown frontmatter but is not surfaced in the tree.The Fix (direction)
Surface discussion open/closed (answered) state in the discussions tree leaf — e.g. a leading state icon or color class driven by a
statefield onPortal.model.Discussion, mirroring the 3-state badge pattern the tickets/pulls timeline views already use (getStateBadgeHtml). Requires:buildScripts/docs/index/discussions.mjs) to carry the discussionstateinto the chunk leaf records.Portal.model.Discussionto expose astatefield and fold it intotreeNodeName(icon/cls).--gh-state-*palette already exists on the content base after #12312).Acceptance Criteria
Out of Scope
Related
--gh-*palette now on the content base (#12312).