Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9bc2bcb
docs: UI/UX improvement proposals + four interactive mockups
claude Aug 15, 2026
fde0ca1
docs: adopt mat3ra/agents conventions + plan/ folder with guided-desi…
claude Aug 16, 2026
dedd8cb
docs: anchor guided-designer plan to SOF-8023
claude Aug 16, 2026
2d7be9f
docs: elaborate SOF-8023 plan (cove design-language audit) + screensh…
claude Aug 16, 2026
790c7d2
docs: date-based plan filenames; tracker ticket moves into document text
claude Aug 16, 2026
797a6db
docs: plan review pass - lifecycle coverage, sequencing, metrics, sizes
claude Aug 16, 2026
98bf90d
feat: first-class Submit, visible error state, single Compute tab
claude Aug 16, 2026
a405bd4
build: regenerate dist for phase 1 changes
claude Aug 16, 2026
246a42e
docs: record the committed-dist convention in AGENTS.md
claude Aug 16, 2026
dfd2501
chore: arm the pre-commit hook so dist stays in sync
claude Aug 16, 2026
4769bb5
docs: split the plan per phase; move phase 1 to review/
claude Aug 16, 2026
aea238d
feat: materials tray and metadata panel (phase 2.5)
claude Aug 16, 2026
c030e99
refactor: extract nested ternaries flagged by lint
claude Aug 16, 2026
3e873b8
feat: say whether the job is saved, and guard leaving (phase 2.6)
claude Aug 16, 2026
f76414b
docs: record 2.5 and 2.6 as built, and what gates the rest of phase 2
claude Aug 16, 2026
0780ad0
feat: readiness rail and context strip (phase 2.1, 2.2)
claude Aug 16, 2026
7f828cc
fix: extract review-step state so the readiness selector lints clean
claude Aug 16, 2026
8cd48b0
feat: check the job before submitting it (phase 2.4)
claude Aug 16, 2026
b76d1a5
feat: pass cluster metadata, quota and run count to the compute step
claude Aug 17, 2026
63da4cb
docs: move phase 2 to review and record what shipped
claude Aug 17, 2026
ec584e7
feat: show the job's lifecycle in the header (phase 3.1)
claude Aug 17, 2026
96a79de
feat: thread the unit inspector and host theme to the workflow tab
claude Aug 17, 2026
6340b11
feat: land on the monitor after submit, and feed it (phase 3.2)
claude Aug 17, 2026
72f8075
docs: move phase 3 to review and record what shipped
claude Aug 17, 2026
afb50f6
feat: message catalogue and analytics seam
claude Aug 17, 2026
d0a54b7
test: e2e coverage for the guided flow, replacing a suite for an app …
claude Aug 17, 2026
acddec3
docs: record the cross-cutting items as built
claude Aug 17, 2026
2e884fd
fix: make the rail a creation path, and collapse it on narrow screens
claude Aug 17, 2026
57fd7ed
docs: record what auditing the acceptance criteria found
claude Aug 17, 2026
abfee51
build: deploy the standalone demo to Netlify on every branch
claude Aug 23, 2026
885d310
fix: put husky in the lockfile so `npm ci` can run
claude Aug 23, 2026
bd9701d
fix: resolve simpl-schema over https so builds without an SSH key can…
claude Aug 23, 2026
8997d87
Merge origin/main into claude/jd-ui-ux-improvements-99w9fg
claude Aug 23, 2026
8cbd58a
build: install cove from its WIP release tarball to unblock the preview
claude Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.png filter=lfs diff=lfs merge=lfs -text
339 changes: 339 additions & 0 deletions AGENTS.md

Large diffs are not rendered by default.

107 changes: 107 additions & 0 deletions UIUX_IMPROVEMENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Job Designer — UI/UX improvement proposals

Companion to the Materials Designer exercise: prioritized interface proposals for the Job
Designer, grounded in the current code, with interactive mockups in [`mockups/`](mockups/).

The designer today is a five-tab shell (`src/components/Job.jsx`) around three packages:
the workflow editor (`@mat3ra/workflow-designer`), the compute form (`Compute` from
`@mat3ra/ive`), and results/files views (`@mat3ra/jove`). Most of what a user must *do* to
create a job — pick materials, pick a workflow, configure compute, submit — hides behind
the "Select Job Actions" dropdown built in `Job.jsx#getDefaultActions`, and the numbered
tabs (`1. MATERIALS / 2. WORKFLOW / 3. COMPUTE` from `TAB_NAVIGATION_CONFIG` in
`@mat3ra/jode`) imply a sequence without tracking progress through it.

## Observations (current state)

1. **The path is hidden.** Select materials / workflow / parent / dataset and Submit all
live in one dropdown menu; nothing on screen says what a new job still needs before it
can run. Tabs are numbered like steps but carry no completion state.
2. **No cross-tab context.** On the Compute tab there is no trace of which material or
workflow is selected; on the Workflow tab, no trace of compute. Every check requires a
tab switch.
3. **Compute answers no questions.** The form opens with four red "The field is required"
errors before the user has touched anything, cluster/queue are bare selects, cluster
status is an external link, and nothing estimates core-hours, cost, or queue wait.
4. **Workflow tab noise.** A second "Compute" sub-tab inside the Workflow tab duplicates
the top-level tab; raw UUIDs are printed on every subworkflow card and flowchart node;
"idle" status chips decorate a job that was never submitted; the flowchart pane stays
light-themed inside the dark shell.
5. **Submit is a leap of faith.** No preflight: nothing validates compute against cluster
limits or shows the cost before the job leaves. After submit the user lands on the same
editing view; Results/Files tabs appear only later and are passive lists.
6. **Materials are a lone canvas.** The Materials tab is a full-bleed 3D viewer with no
metadata panel; for multi-material jobs the set switcher hides inside the Workflow tab,
and the "runs N times" consequence of a materials set is never stated.

## Proposals

### A — One glance, one path
- **A1 · Readiness rail.** Replace the numbered full-width tabs + actions dropdown with a
left rail of lifecycle steps — Material, Workflow, Compute, Review & Submit — each
showing its current selection summary and state (complete / needs attention / empty).
The three "Select …" dialogs become "Change" affordances on their steps.
- **A2 · Context strip.** A persistent strip under the header with chips for material,
workflow, compute and estimated cost — visible from every step, each chip a shortcut.
- **A3 · First-class Submit.** Submit is a primary header button with live preflight
state (disabled explains *what's missing*), replaced by Terminate while running.

### B — Compute that answers "what will this run, and what will it cost?"
- **B1 · Cluster cards.** Replace bare selects with selectable cards: hardware summary,
per-core-hour price, live queue-wait badge (inline; kills the "See cluster status" link).
- **B2 · Live estimate.** Side panel derives core-hours = nodes × cores × walltime, price,
queue ETA, and quota impact as the form changes; flags requests that exceed queue limits.
- **B3 · Presets.** Debug / Standard / Production (and "same as last job") one-click fills.
- **B4 · Progressive validation.** Validate on interaction and at preflight — never render
a screen of red required-field errors on first paint.

### C — Review & submit with confidence
- **C1 · Preflight checklist.** Submit opens a check run — material set, workflow
parameters render, compute within cluster/queue limits, cost within budget — with
pass / warn / fail rows; fails deep-link to the offending step, warns are acknowledgeable.
- **C2 · Post-submit hand-off.** Successful submit transitions the designer into monitor
mode (F1) instead of leaving a stale editor open.

### D — Workflow tab clarity
- **D1 · One Compute.** Drop the duplicated "Compute" sub-tab inside the Workflow tab.
- **D2 · Humane metadata.** UUIDs move behind a copy-id affordance; status chips appear
only once a job has been submitted.
- **D3 · Unit inspector.** Clicking a flowchart node opens a right drawer with that unit's
important settings, replacing the Overview / Important settings / Detailed view sub-tab
bounce.
- **D4 · Theme parity.** Token-driven theming for the flowchart pane so it follows the
shell's theme.

### E — Materials in context
- **E1 · Materials tray.** Chips for the materials set above the viewer with add / remove /
switch inline, and explicit "this job runs N times — once per material" copy.
- **E2 · Metadata panel.** Formula, lattice, atom count, source id beside the 3D viewer.

### F — The job lives after Submit
- **F1 · Run monitor.** The post-submit view becomes live: per-unit timeline with
statuses and durations, streaming log tail, convergence chart, files appearing as
produced, results summary on finish.
- **F2 · Lifecycle header.** Draft → Queued → Running → Finished timeline with timestamps
in the header, replacing the lone status-colored icon (`iconCls: text-${job.statusCls}`).

## Mockups

| # | File | Covers |
|---|------|--------|
| 01 | [`mockups/01-guided-designer.html`](mockups/01-guided-designer.html) | A1 A2 A3 · D2 · E1 E2 |
| 02 | [`mockups/02-compute-cost.html`](mockups/02-compute-cost.html) | B1 B2 B3 B4 |
| 03 | [`mockups/03-preflight-submit.html`](mockups/03-preflight-submit.html) | C1 C2 |
| 04 | [`mockups/04-run-monitor.html`](mockups/04-run-monitor.html) | F1 F2 · C2 |

Each mockup is a self-contained HTML file (no build step, no network) — open directly in a
browser.

## Rollout sketch

| Phase | Scope | Proposals | Mostly lands in |
|-------|-------|-----------|-----------------|
| 1 — de-noise | Low-risk cleanups inside current layout | B4 · D1 · D2 · A3 | job-designer, `@mat3ra/ive`, `@mat3ra/workflow-designer` |
| 2 — the guided designer | Layout change: rail + context strip + compute redesign + preflight | A1 · A2 · B1–B3 · C1 · E1 · E2 | job-designer (`Job.jsx`), `@mat3ra/ive`, `@mat3ra/cove` |
| 3 — the living job | Monitoring + inspector + theming | F1 · F2 · C2 · D3 · D4 | `@mat3ra/jove`, `@mat3ra/workflow-designer` |

Phase 1 is deliberately shippable without design sign-off on the new layout; Phase 2 is
where the designer stops being a filing cabinet; Phase 3 closes the loop after submission.
Loading
Loading