feat: add qwen frontend UI#202
Conversation
NovakPAai
left a comment
There was a problem hiding this comment.
Code Review
getToolLabel(), getResumeCommand(), and getConvertTargets() are defined in app.js but called from analytics.js, detail.js, and heatmap.js. This works only if app.js is always loaded first. If the HTML script order ever changes, or if any of these files are loaded independently in tests, you'll get ReferenceError.
Suggestion: either export these as a shared module, or add a comment near the definitions noting the load-order dependency so future contributors don't accidentally break it.
TOOL_META is incomplete — kilo, droid, kimi, and copilot are not in the map. They'll fall back to raw tool name via || { label: tool || 'unknown', ... }, which is fine as a fallback, but the heatmap and card badges will show unstyled labels for these tools.
ℹ️ getEstimatedSessionCost returns 0 for Qwen — this is correct (Qwen doesn't store cost data locally). Just make sure this is also applied consistently once other no-cost agents (Kimi, Droid, Copilot) are merged in.
vakovalskii
left a comment
There was a problem hiding this comment.
LGTM — nice centralization via TOOL_META + getToolLabel/getResumeCommand/getConvertTargets helpers (mirrors backend refactor in #201). All scattered label maps and switches collapsed into one source of truth.
Adds Qwen Code UI support across the dashboard frontend.
What changed
getResumeCommandgetToolLabel, unavailable-pricing indicatorDepends on
This is PR 2 of 3.