research: visualisation library for the SmartEM front end - comparative analysis and ADR
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- documentation, frontend
Direzione di ricerca
Leggi apps/smartem/package.json e i tredici componenti TSX elencati, iniziando da weights/WeightsTimeline.tsx. Confronta il candidato obbligatorio @diamondlightsource/davidia e il mantenimento di SVG scritto internamente con gli overlay spaziali esistenti, la timeline, il costo della migrazione, l’accessibilità e il lavoro correlato sulla visualizzazione delle immagini. Il lavoro è completato quando una decisione a livello DLS è registrata in docs/decision-records/decisions/0022-visualisation-library.md.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Updated. The analysis this issue calls for is still wanted, and the candidate list and
comparison axes below still stand. Three things have changed since it was written, and the
scope has widened as a result.
What changed
The blocking relationship no longer exists. This issue stated that implementation blocks on
the ADR landing. It did not: smartem-frontend#67 closed on 2026-06-15 with the model-weight
display shipped.
No library was chosen, and none was added. apps/smartem/package.json contains no charting
dependency of any kind. The weight display, and everything since, was hand-rolled in SVG.
The ADR number is taken. 0018 is now 0018-smartem-agent-keycloak-auth.md, and the
sequence has reached 0021-micrograph-preview-image-ingestion-and-serving.md. The next
available number is 0022.
The situation this issue warned about has arrived by a different route
The original rationale was that choosing a library casually creates a de-facto standard and
therefore lock-in. What happened instead is that not choosing became the de-facto standard.
Hand-written <svg> now appears in thirteen components:
weights/WeightsTimeline.tsx spatial/AtlasMap.tsx
spatial/SquareMap.tsx spatial/LatentSpacePanel.tsx
spatial/AcquisitionPathOverlay.tsx predictions/PredictionsView.tsx
foilhole/FoilholeDetail.tsx workspace/WorkspaceView.tsx
dashboard/MockDashboard.tsx session/ContextStrip.tsx
session/MockContextStrip.tsx shell/Header.tsx
widgets/CommandPalette/CommandPalette.tsx
WeightsTimeline.tsx is the component this ADR was intended to precede.
This is not automatically the wrong outcome - bespoke SVG has served the spatial views well, and
the overlays are genuinely bespoke. But it was arrived at by default rather than by decision,
and it is accumulating. That is precisely what an ADR exists to prevent, whichever way it lands.
Consequences for scope
The existing components are now requirements, not a blank slate. Any candidate must be
assessed against what already exists, not only against the original sparkline-and-drill-down
brief. Specifically:
- Can it subsume the spatial overlays - clickable foilhole and grid-square geometry drawn over
a raster image, with gradient sequence colouring and interaction - or would those stay bespoke
regardless? A library that cannot is not a full answer, and would mean maintaining two
visualisation approaches indefinitely. - Can it express the weight-evolution timeline that already exists, without regression?
- What is the migration cost of thirteen components, and is partial adoption acceptable? A
clear "charts use library X, spatial overlays stay bespoke" split is a legitimate and
probably likely conclusion - but it should be stated, not drifted into.
"Keep hand-rolling" is now a first-class candidate and must be evaluated on the same axes as
the libraries, rather than treated as the absence of a decision. It has real advantages already
demonstrated in this codebase - zero bundle cost, exact control, no theme-integration friction -
and real costs in maintenance and accessibility. Note the accessibility dimension is not
hypothetical: the hand-rolled spatial views are the subject of an open keyboard-access issue.
This overlaps with the image-visualisation work. Improving front-end image visualisation
involves choosing between bespoke SVG over raster images and a tiled viewer component. That is
the same decision seen from another angle. Deciding the two separately risks two incompatible
answers, and they should at minimum be cross-referenced.
Unchanged
The candidate list, the comparison axes, the constraints, and the process below all still apply.
In particular, @diamondlightsource/davidia remains a mandatory candidate, and choosing
otherwise still needs defending on concrete grounds rather than preference. The intended
audience is still DLS-wide rather than SmartEM-only.
Only the ADR filename changes: docs/decision-records/decisions/0022-visualisation-library.md.
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DiamondLightSource/smartem-devtools
-
security
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Dependency DashboardAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
-
research security
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
devops research smartem-agent
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Make Claude's project knowledge portable: private memory/transcripts, derived public AGENTS.mdApertaenhancement smartem-devtools:claude
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
Tutte le issue di DiamondLightSource/smartem-devtools
Issue simili
-
awaiting-response bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
wildcard/caro#1562 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
supadata-ai/mcp#27 ·
-
content
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cosimochellini/one-piece-zero-spoiler#516 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
capricorn86/happy-dom#2485 ·
I maintainer di solito rispondono entro 2 giorni
-
lane: fast
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
unicef/adt-studio#946 ·
I maintainer di solito rispondono entro 2 giorni