feat(web): render structured report flags as coarse, localized chips#429
Merged
Conversation
Localize report-flag chips by canonical code (dashboard.reports_flag_<code>) in both en and ja, colour them by the four severity buckets (adds a neutral is-info), and move per-flag detail (adspot ids, yen, ctr) off the chip face into a click-to-expand drill-down built from the flag's params. Custom flags use their author-supplied label; legacy bare-string flags still humanize.
hyoshi
force-pushed
the
feat/report-flags-frontend
branch
from
July 15, 2026 08:18
ca666d4 to
71e6d18
Compare
This was referenced Jul 15, 2026
Merged
hyoshi
added a commit
that referenced
this pull request
Jul 15, 2026
Bump 0.10.26 -> 0.10.27 (pyproject, __init__, plugin.json, 51 SKILL.md frontmatters) and cut the CHANGELOG for the report-flag changes merged since 0.10.26 (#428 / #429 / #430 / #431). Added — structured, localizable report-flag chips on the Reports dashboard: flags persisted via mureo_state_report_set can be {code, severity, params} from an 18-code vocabulary; the dashboard renders coarse, localized (en / ja), severity-coloured chips with the detail on a click-to-expand drill-down. The daily-check / weekly-report / goal-review skills author flags in this shape. Changed — mureo_state_report_set validates report flags (unknown non-custom codes rejected, severities defaulted); legacy bare-string flags still pass through.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR (frontend + i18n) — stacked on #428
Renders the structured report flags introduced by the backend contract PR as
coarse, localizable chips with a drill-down, so the detail no longer sits
on the chip face and the Japanese UI reads in Japanese.
mureo/_data/web/dashboard.jshumanizeReportFlaglocalizes object flags bydashboard.reports_flag_<code>;a
customflag uses its author label viapickLocalizedLabel(
document.documentElement.lang).reportFlagKindmaps the four canonical severities to chip classes viaSEVERITY_CHIP, adding a neutralis-infoso info / positive flags arenot styled as alarms.
buildFlagDetail/formatFlagParamrenderparams(adspot ids, yen, ctr,booleans) as a localized detail string;
buildFlagChipElementmakes a chipwith detail an interactive
<button>that toggles a.report-flag-detailline (ARIA disclosure:
aria-expanded+aria-controls).REPORTS_FLAG_BASESaligned to the canonical vocabulary;is-infoadded tothe client-card severity sort order.
mureo/_data/web/i18n.json— newdashboard.reports_flag_*anddashboard.reports_param_*keys (incl. yes/no) in both en and ja.mureo/_data/web/app.css—.report-chip.is-info,.report-chip.is-interactive(caret),
.report-chip-wrap,.report-flag-detail.Also fixes a pre-existing latent bug: structured object flags previously rendered
[object Object]on the multi-client index cards.Tests
tests/test_web_assets_report_flags_vocab.py(i18n en/ja parity + presence of thelocalized labels, severity colouring incl. is-info, drill-down wiring, boolean
localization). All web-selected pytest pass;
node --checkon dashboard.jspasses; no
innerHTML(alltextContent— no XSS surface).Stack
Depends on #428 (uses its vocabulary/severity). Independent of PR B.
Legacy bare-string flags still humanize, so this is safe to ship before PR B.