18 Commits

Author SHA1 Message Date
Julien Calixte
bd7613e2d0 docs: document dual Coolify and Pages deploy in README
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 21s
Deploy to GitHub Pages / deploy (push) Has been skipped
2026-06-26 14:45:01 +01:00
Julien Calixte
01eece9796 docs: correct persistence backend to localStorage in README 2026-06-26 14:44:46 +01:00
Julien Calixte
9616ab749d docs: link DESIGN.md and ADRs from README
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 21s
Deploy to GitHub Pages / deploy (push) Has been skipped
2026-06-26 14:40:12 +01:00
Julien Calixte
9974d899c2 docs: add QFD design doc with House of Quality 2026-06-26 14:39:48 +01:00
Julien Calixte
8d46c0f98b docs: add ADR-0001 for self-contained share links 2026-06-26 14:39:41 +01:00
Julien Calixte
7a22e40268 feat: reorder criteria and profiles by dragging
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 1m8s
Deploy to GitHub Pages / deploy (push) Has been skipped
Add a drag handle to each criterion and profile row, backed by a
pointer-based composable that works with mouse and touch. Reordering
criteria changes the chart spoke order; reordering profiles changes
draw/legend order. Scores are keyed by id, so they follow their row.
2026-06-26 10:36:00 +01:00
Julien Calixte
a51da74cbb chore(ci): add GitHub Pages build and deploy workflow
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 21s
Deploy to GitHub Pages / deploy (push) Has been skipped
2026-06-19 18:23:16 +02:00
Julien Calixte
a371f11811 feat: share radars via self-contained URL links
The app has no backend, so a share link embeds the whole radar as
base64url in the query string. Opening /share?d=... validates and
imports a fresh copy into the recipient's radars, then opens it.
2026-06-19 15:43:43 +02:00
Julien Calixte
3f9dd514ce feat: add duplicate button to radar list cards 2026-06-19 15:43:33 +02:00
Julien Calixte
9ca2068b34 chore: add Zed format-on-save config using oxfmt 2026-06-19 11:34:54 +02:00
Julien Calixte
4eafda5dfb fix(chart): wrap long criterion labels to fit the canvas
Labels rendered as single-line SVG text and clipped at the canvas edge
(and in the PNG export). Word-wrap each label to the room available on
its side, stacking lines away from the chart.
2026-06-19 11:33:45 +02:00
Julien Calixte
f42744b409 feat: add product concept subtitle to radars
A Radar gains an optional Concept — a short subtitle naming the product
and its typical performances, rendered under the title and wrapping to a
balanced second line when long. Old radars default to an empty Concept
on load.
2026-06-19 10:03:34 +02:00
Julien Calixte
8e751e77b7 fix(chart): render title and profile legend by default
Vue casts an absent boolean prop to false, so withChrome was always
false and the v-if="withChrome !== false" guards hid the title and
legend everywhere — including the PNG export. Default withChrome to
true via withDefaults so the legend renders.
2026-06-17 09:41:42 +02:00
Julien Calixte
b203cd3ca4 feat: set DaisyUI primary to brand #7ed6df
Extend the built-in 'light' theme via DaisyUI 5's @plugin theme block.
All btn-primary / text-primary / selected-state utilities now use the
brand color across the app.
2026-06-16 22:12:43 +02:00
Julien Calixte
25ed5a1ae5 feat: use Tabler chart-radar as favicon (#7ed6df) 2026-06-16 22:08:50 +02:00
Julien Calixte
636fba170f feat: implement radar app — list, editor, chart, scoring, PNG export
- vue-router with list (/) and editor (/radar/:id) views
- localStorage persistence via useRadars() composable
- types.ts: Radar / Criterion / Profile / Score with cardinality constants
- RadarChart.vue: SVG renderer (rings, axes, profile polygons, labels, legend)
- CriteriaEditor / ProfilesEditor / ScoreGrid components
- PNG export: SVG → canvas → blob, download + clipboard copy
- Remove 'coming soon' placeholder from App.vue
2026-06-16 22:06:11 +02:00
Julien Calixte
a8b83b79ce feat: use Fredoka via api.fonts.coollabs.io as default sans 2026-06-16 21:52:27 +02:00
Julien Calixte
cd46575b05 chore: initial scaffold 2026-06-16 21:49:09 +02:00