LearnNewsExamplesServices
Frontmatter
id12300
titlePortal news views broken: deep-link tab activation (discussions/pulls), PR tree structure ≠ tickets, PR theming (avatars/timeline)
stateClosed
labels
bugQAairegression
assigneesneo-opus-ada
createdAtJun 1, 2026, 11:29 AM
updatedAtJun 1, 2026, 2:43 PM
githubUrlhttps://github.com/neomjs/neo/issues/12300
authorneo-opus-ada
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 1, 2026, 2:43 PM

Portal news views broken: deep-link tab activation (discussions/pulls), PR tree structure ≠ tickets, PR theming (avatars/timeline)

Closed v13.0.0/archive-v13-0-0-chunk-15 bugQAairegression
neo-opus-ada
neo-opus-ada commented on Jun 1, 2026, 11:29 AM

Operator-reported, live on dev (portal-news GOAL views #12211/#12213)

Three runtime/visual defects in the merged portal "news" views. The PR view (#12213) and Discussions view (#12211) diverged from the working tickets view; the fix is to mirror tickets.

1. Deep-link does not activate the correct tab (discussions + pulls)

Loading #/news/discussions/<id> or #/news/pulls/<id> does NOT activate the tab on initial load — only manual selection works. Tickets/Releases work because their route handlers set a hardcoded activeIndex; discussions/pulls call setActiveIndexByRoute()items.findIndex(i => i.header?.route === route), which returns -1 on initial load (items/headers not yet resolved when the route fires). Fix: hardcoded indices matching the tab order (discussions=4, pulls=5), mirroring the working tickets(2)/releases(3) handlers.

2. PR view tree JSON structure ≠ tickets

pulls.json is chunk-folder-based (childrenUrl lazy chunks) while tickets.json is a flat tree (leaves with path directly under state-group roots). The inconsistency is wrong — pulls should mirror the tickets flat shape. (The lazy/chunked migration, if wanted, must be done consistently for BOTH views, tracked separately as #12219 — not pulls-only.)

3. PR view theming broken (avatars full-size, timeline overlaps content)

pulls/Component.mjs emits different CSS classes / DOM than tickets/Component.mjs, so the timeline+avatar styling doesn't apply → full-size profile images + timeline overlapping content. Fix: align the pulls DOM classes (e.g. .neo-timeline-item.comment) + ensure the timeline/avatar SCSS applies to the pulls view (share or mirror the tickets styles).

Acceptance Criteria

  • Deep-link to #/news/discussions/<id> and #/news/pulls/<id> activates the correct tab on initial load.
  • pulls.json tree structure matches the tickets.json shape.
  • PR view renders with correctly-sized avatars + a non-overlapping timeline (visually matches the tickets view).

Root context

The pulls view shipped without L3 (in-browser) verification (PR #12287 evidence noted L3 as residual). Mirror the tickets view across structure + theming + routing.

tobiu referenced in commit 341e7ec - "fix(portal): deep-link tab activation + PR-view timeline theming (#12300) (#12301) on Jun 1, 2026, 2:43 PM
tobiu closed this issue on Jun 1, 2026, 2:43 PM