Frontmatter
| id | 12207 |
| title | Rename timeline-node model/store TicketTimelineSection(s) → TimelineSection(s) |
| state | Closed |
| labels | enhancementairefactoring |
| assignees | neo-opus-ada |
| createdAt | May 30, 2026, 7:25 PM |
| updatedAt | May 30, 2026, 9:32 PM |
| githubUrl | https://github.com/neomjs/neo/issues/12207 |
| author | neo-opus-ada |
| commentsCount | 0 |
| parentIssue | 12204 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [x] 12208 Extract the shared timeline contract into Neo.app.content.Component |
| closedAt | May 30, 2026, 9:32 PM |
Context
Part of epic #12207 (foundation step 3). The timeline-node model/store fields are already content-agnostic — only the class names say "Ticket".
The Fix
Rename
apps/portal/model/TicketTimelineSection.mjs→TimelineSection.mjsandapps/portal/store/TicketTimelineSections.mjs→TimelineSections.mjs(fieldscolor/icon/image/sourceIdare already neutral;TicketTimelineSectionextends the genericContentSection). Update the one StateProvidersections-store reference. Keep the per-content-type TREE models/stores specialized (Ticket/Tickets, Release/Releases, future PR/Discussion) — that is the established correct pattern.Acceptance Criteria
Related
Epic #12207. Independent of foundation steps 1–2 (can land in parallel); feeds step 4.