spreadlab/web
Justin Visser eb1f7427c4 web: panel management, slice 7 of M3
The kebab menu goes live: Edit and Rename open the PanelEditorPopover
(rename focuses the label in its header), Duplicate copies with a
' copy' suffix and the next accent, Remove deletes immediately and is
disabled on the last panel. Add scenario opens the new panel's editor
right away, still capped at six.

The editor offers the strategy select plus every Config field as a row
against the base value: a differing value becomes an override
(highlighted row, per-field reset, chips on the card), typing the base
value back clears it, and runs touch only that panel through the
debounce. Engine 400s appear inline in the popover with the offending
field marked.

Per-panel failures now leave a rose dot on the kebab while the panel
keeps its last good result; the store tracks failed panel ids and
clears them on the next successful run. Field and strategy labels moved
to lib/fieldLabels so controls, editor, and table share one vocabulary.
2026-06-10 17:51:21 +02:00
..
.vscode web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
public web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
src web: panel management, slice 7 of M3 2026-06-10 17:51:21 +02:00
.editorconfig web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
.gitattributes web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
.gitignore web: the dashboard page, slice 3 of M3 2026-06-10 16:55:14 +02:00
.oxlintrc.json web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
.prettierignore web: sim store, URL state scheme, debounced parallel runs (M3 slice 2) 2026-06-10 16:36:26 +02:00
.prettierrc.json web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
env.d.ts web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
eslint.config.ts web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
index.html web: the dashboard page, slice 3 of M3 2026-06-10 16:55:14 +02:00
package-lock.json web: regenerate package-lock so npm ci sees optional deps 2026-06-10 17:35:50 +02:00
package.json web: the dashboard page, slice 3 of M3 2026-06-10 16:55:14 +02:00
README.md web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
tsconfig.app.json web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
tsconfig.json web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
tsconfig.node.json web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00
tsconfig.vitest.json web: sim store, URL state scheme, debounced parallel runs (M3 slice 2) 2026-06-10 16:36:26 +02:00
vite.config.ts web: parity page renders the three-scenario comparison from live data 2026-06-10 13:47:01 +02:00
vitest.config.ts web: scaffold Vue 3 + Vite app (create-vue, lean options) 2026-06-10 12:55:43 +02:00

web

This template should help get you started developing with Vue 3 in Vite.

VS Code + Vue (Official) (and disable Vetur).

Type Support for .vue Imports in TS

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.

Customize configuration

See Vite Configuration Reference.

Project Setup

npm install

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Run Unit Tests with Vitest

npm run test:unit

Lint with ESLint

npm run lint