Frontmatter
| id | 8512 |
| title | Refactor Ticket Badges to use Dynamic Label Store |
| state | Closed |
| labels | enhancementairefactoringbuild |
| assignees | tobiu |
| createdAt | Jan 10, 2026, 6:52 PM |
| updatedAt | Jan 10, 2026, 7:06 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8512 |
| author | tobiu |
| commentsCount | 3 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 10, 2026, 7:06 PM |
Refactor Ticket Badges to use Dynamic Label Store

tobiu
Jan 10, 2026, 6:52 PM
Input from Gemini 3 Pro:
✦ Starting work on exposing
GH_LabelServicein the AI SDK.

tobiu
Jan 10, 2026, 6:53 PM
Input from Gemini 3 Pro:
✦ Implemented
GH_LabelServiceexport inai/services.mjs. Now creating the build scriptbuildScripts/createLabelIndex.mjs.

tobiu
Jan 10, 2026, 7:05 PM
Input from Gemini 3 Pro:
✦ Completed refactoring:
- Exposed
GH_LabelServicein SDK.- Created
buildScripts/createLabelIndex.mjsto fetch and calculate label colors.- Implemented
Portal.model.TicketLabelandPortal.store.TicketLabels.- Updated
Portal.view.news.tickets.Componentto use the store and CSS variables.- Added the store to
MainContainerStateProviderwithautoLoad.- Cleaned up SCSS.
Ready to close.
tobiu assigned to @tobiu on Jan 10, 2026, 7:06 PM
tobiu closed this issue on Jan 10, 2026, 7:06 PM
Replace hardcoded SCSS label colors with a dynamic system driven by GitHub data. This ensures perfect consistency between GitHub and the Portal, automated updates for new labels, and optimal text contrast ratios.
Objectives
LabelServiceinai/services.mjsto allow build scripts to fetch label data programmatically.buildScripts/createLabelIndex.mjsto fetch labels via the SDK, calculate YIQ contrast for text colors, and generateapps/portal/resources/data/labels.json.Portal.model.LabelandPortal.store.Labelsto consume the generated JSON.Portal.view.news.tickets.Componentto bind to the store and apply colors via CSS variables, removing the hardcoded SCSS map.Tasks
GH_LabelServiceinai/services.mjsbuildScripts/createLabelIndex.mjsPortal.model.LabelPortal.store.LabelsPortal.view.news.tickets.Component.mjslogicapps/portal/resources/scss/src/apps/portal/news/tickets/Component.scss