Release 0.13.11
Docker Images 🐳
ghcr.io/depictio/depictio:0.13.11
ghcr.io/depictio/depictio:latest
ghcr.io/depictio/depictio:stable
ghcr.io/depictio/depictio:edge
Click to expand the changelog for 0.13.11
Changes 📜
New Features ✨
- feat: add DC linking UI and MultiQC DC creation via UI [9ea497a]
- feat: add permission-based auth annotations and Serve-specific ingress values [778ca9d]
- feat: add dedicated ingress for MinIO and backend API [45d6d52]
Bug Fixes 🐛
- fix: cross-DC filter target_column=None + Add-link modal polish (#776) [d34b681]
- fix: handle aggregation_columns_specs as list of dicts in Cytoscape [02bf689]
- fix: extract DC columns from enriched aggregation specs for Cytoscape [e75b7d0]
- fix: resolve Cytoscape link edge referencing nonexistent column nodes [886984f]
- fix: skip scan step for MultiQC DC creation and fix file naming [f5f5001]
- fix: permission-guard logic + roll back workflow on upload failure [30cb692]
- fix: remove unused inheritDefaultAnnotations — dead code after annotation refactor [9876e82]
- fix: always render base nginx annotations on dedicated backend/minio ingresses [8121522]
Improvements 🚀
- style: ruff format db_init_reference_datasets [3600420]
- style: ruff format drift in 4 unrelated dash files [5909d6a]
- refactor: remove hardcoded Serve annotations from dedicated ingress templates [53811b8]
- refactor: simplify separate ingress config — drop redundant enabled flag [21163c9]
Chores 🧹
- ci: add repackage-helm-chart workflow to overwrite OCI tag contents (#772) [28064f6]
- chore: ruff format drift + remove unused var [7cb918a]
- chore: ignore node_modules, .vscode/, generated cli configs [40ce011]
- chore: gitignore root pnpm node_modules and depictio-react-core node_modules [15bfcce]
- chore: refresh uv.lock, CLAUDE.md stale section, regenerated screenshots [edaa0c4]
- chore: untrack depictio/dashboards_yaml/ (instance/runtime-only) [3bedc30]
- chore: untrack AI session handoff scratch in depictio/viewer/ [d7e0161]
- chore: untrack auto-generated CLAUDE.md context + superseded .claude-code/ skills [69b5e67]
- ci: add manual workflow to add additional OCI tag to Helm chart [05989ad]
- ci: fix pixi resolution + ruff format [ca1a896]
- ci: skip ghcr-dependent jobs on fork PRs [05c5bbf]
Documentation Updates 📚
- docs: design proposal for advanced visualisation component family [55eca3d]
- docs: sync claude-mem auto-generated activity logs [56068a6]
Other Changes 📝
- Bump version: 0.13.10 → 0.13.11 [25b826f]
- Update CHANGELOG.md for v0.13.10 [2ebf698]
- Bump version: 0.13.9 → 0.13.10 [a43e1e0]
- fix(builder): viz suggestion precision, text-step skip, screenshot regen on Save (#775) [592f918]
- Update CHANGELOG.md for v0.13.9 [315b707]
- Bump version: 0.13.8 → 0.13.9 [9e7e469]
- fix(auth): let admins bypass public/demo-mode write-action gates (#774) [c11a794]
- Update CHANGELOG.md for v0.13.8 [0241543]
- Bump version: 0.13.7 → 0.13.8 [b24c7bd]
- Fix React project import 404 and per-project creation timestamps (#773) [5bbe89a]
- fix(screenshots): honour dashboard-level owners after duplication (#771) [6fd87c6]
- Update CHANGELOG.md for v0.13.7 [7bd5527]
- Bump version: 0.13.6 → 0.13.7 [4996254]
- fix(deltatables): use positional indexing in precompute_columns_specs (#769) [c5f7af6]
- Update CHANGELOG.md for v0.13.6 [172f24f]
- Bump version: 0.13.5 → 0.13.6 [4b49216]
- fix(seeds): force format=tsv on recipe DC conversion (#768) [fccb100]
- Update CHANGELOG.md for v0.13.5 [1e2e29b]
- Bump version: 0.13.4 → 0.13.5 [aee046e]
- feat(viralrecon): bundle 15 canonical seed TSVs + missing recipes + CI check (#767) [9400824]
- Update CHANGELOG.md for v0.13.4 [f8b852a]
- Bump version: 0.13.3 → 0.13.4 [c00a1d2]
- feat(viralrecon): bundle minimal scan-target test data into image (#766) [e293e51]
- Update CHANGELOG.md for v0.13.3 [4cb1b2a]
- Bump version: 0.13.2 → 0.13.3 [eba8199]
- test(seeds): assert all reference-dashboard dc_ids match STATIC_IDS [98f63f4]
- fix(seeds): viralrecon dashboards use static DC IDs + invariant test (#765) [5110ca3]
- Update CHANGELOG.md for v0.13.2 [5facb5c]
- Bump version: 0.13.1 → 0.13.2 [691c108]
- fix(viewer): enable dashboard pinning in public/demo mode [a12461f]
- fix(ampliseq): add metadata→multiqc_data DCLink to 2.16.0 template [7429ddb]
- fix(cli): process materialised recipe DCs as file scans [61d23f1]
- fix(seeds): preserve resolved DATA_ROOT for viralrecon [089606d]
- fix(helm): set imagePullPolicy=Always on busybox/curl init containers [731cb33]
- Update CHANGELOG.md for v0.13.1 [f01a6d2]
- Bump version: 0.13.0 → 0.13.1 [73d83f0]
- feat(card-builder): live preview for top_n / coverage / concentration [78a31a8]
- fix(card-builder): Mantine 7 group format for Multi-metric select [58370a6]
- fix(seeds): preserve source=transformed on recipe DCs after materialisation [b6220e2]
- fix(card): persist multi-metric config + guard against missing outliers [90324f4]
- fix(dashboards): duplicate child tabs alongside the main tab [7b9d19d]
- fix(screenshot): honour configured capture timeout on element / page screenshot [317cd2d]
- feat(viewer): surface template-origin chip on /dashboards-beta + settings drawer [cc3e255]
- feat(auth): hand off session across Dash → React beta origin boundary [f7e6880]
- chore(screenshots): refresh ampliseq tab thumbnails [dcbf7b5]
- fix(ampliseq): wire alpha-diversity habitat filter to rarefaction viz [8b7db98]
- feat(admin-beta): include all seed projects in maintenance cleanup [e95a996]
- feat(admin-beta): list all seed dashboards under each project [dd2bc1f]
- fix(viewer): date picker range selection + interactive reset state [ae546e2]
- fix(multiqc): wire cross-DC filter resolution from metadata DC [b9f7d7f]
- feat(advanced-viz): producer fingerprints for nf-core column shapes [b9abfb4]
- chore(screenshots): refresh seed dashboard thumbnails + add viralrecon [10eed95]
- refactor(admin-beta): replace project badge cluster with bullet list [7c91aba]
- feat(viewer): make dashboard cards and sidebar tabs proper anchor links [a1471d2]
- feat(viewer): regroup /dashboards-beta into nf-core + demo sections [7727c4a]
- feat(viralrecon): register nf-core/viralrecon 3.0.0 as seeded reference dataset [b561ff8]
- refactor(advanced-viz): drop overview tab, rename to Advanced Visualisations [a6df9bf]
- feat(api): add DEPICTIO_DISABLE_EXAMPLE_DASHBOARDS env var to gate seeding [a6ec6ae]
- feat(walkthrough): add DEPICTIO_WALKTHROUGH_DISABLED kill switch [a118c5b]
- fix(walkthrough): gate on /auth, DEPICTIO_DEV_MODE, and screenshots [9524c6f]
- Update CHANGELOG.md for v0.13.0 [d6f3d15]
- Bump version: 0.12.2 → 0.13.0 [68e3029]
- ci(ampliseq): download phylogenetic tree + taxonomy + ASV table [f6dcdc0]
- fix(ci): align iris dashboard title with seed after polish commit [ff571c4]
- test(deltatables): mock collect_schema for filter-applied path [4d87e31]
- merge: resolve conflicts with main [d29572d]
- refactor(viewer,api): apply reviewer + simplifier feedback from PR review [bcd57b8]
- fix(ampliseq): propagate cross-DC filters to figures/tables/advanced viz [72f54e9]
- feat(viewer): move Reset to filters panel header [60f6cd1]
- chore(showcase): iris/penguins dashboard polish [d5a3b7b]
- chore(showcase): explicit layouts on iris/penguins YAML + regen script [e47396d]
- chore(screenshots): regenerate dashboard screenshots + auto-gen CLAUDE.md update [e81d5b8]
- feat(dev): nfcore-megatests showcase init project (advanced-viz testbed) [e41ed68]
- chore(dev): /import-template + /reseed slash commands, reseed script, fixtures docs [13e7bb2]
- chore(deps): bump viewer deps (mantine tiptap 7.17 + tiptap 2.27) [dfb61a7]
- feat(builder): viz suggestions in project detail + card builder + DC pre-filter [2d82dfc]
- feat(viralrecon): variant/coverage canonical recipes + dashboard restructure [cc82341]
- feat(ampliseq): funnel restructure (alpha-diversity/ordination/phylogeny tabs) + canonical recipes [7b7db7c]
- feat(coverage-track): genome annotation overlay (GFF) for SARS-CoV-2/HIV/HBV/RSV [6e45f03]
- feat(advanced-viz): palette overrides, Manhattan controls, col-annotation strips [69de760]
- feat(api): expose table DC append / replace / clear endpoints [4c40708]
- feat(advanced-viz): producer registry + viz-kind suggestion engine [e769d32]
- feat(components): text tiles + multi-metric card layouts (box_plot/top_n/coverage/concentration) [f80adcc]
- fix(advanced-viz): merge filter columns into projection before runtime filters [5032947]
- fix(io): R-emitted NA handling + MinIO single-part PUT + deltalake>=0.24 fallback [4fb0135]
- Update CHANGELOG.md for v0.12.2 [86921c8]
- Bump version: 0.12.1 → 0.12.2 [8fc8505]
- feat(viewer): gate figure Code Mode behind ownership + deployment mode [1f15d7c]
- fix(viewer): cast Plotly selection-clear payloads for strict types [1c44f78]
- fix(viewer): add @types/plotly.js so CI tsc finds plotly types [ae674ec]
- fix(viewer): declare 'plotly.js' module so tsc accepts the import [e2bd805]
- chore(screenshots): refresh dashboard light thumbnail [4165510]
- fix(figure): drop heatmap+scatter_matrix, filter unsupported px kwargs [464235e]
- fix(figure): advanced viz types no longer silently downgrade to scatter [8975a69]
- fix(viewer): cross-filtering only for scatter / scatter_3d visus [3392239]
- docs(viewer): drop the threat-model section from About Code Mode [52fea13]
- fix(viewer): single-line layout for pre-loaded modules [b1b3432]
- feat(viewer): code-mode help — module table, threat-model, columns-as-table [4130737]
- feat(viewer): code-mode polish — under-preview cross-filter, resizable editor, collapsible help [bb62bdf]
- feat(viewer): mark joined DCs in component-builder dropdown + info card [f6600f3]
- feat(viewer): order interactive options by availability, then natural sort [b646e27]
- fix(viewer): match read-pair suffixes when intersecting multiqc samples [3734d41]
- fix(viewer): always include filter source DC in available-values intersection [a6e8c4f]
- fix(api): multiqc sample-mappings falls back to canonical_samples [b115300]
- fix(viewer): derive project_id from stored_metadata, ignore empty available sets [7ae6a3d]
- feat(viewer): availableValues now intersects multiqc samples with table DCs [59dae5a]
- fix(viewer): reset actually clears Plotly lasso/box (use imported Plotly, gate on transition) [af649d0]
- fix(viewer): alias bare plotly.js to dist/plotly in vite config [76b120f]
- fix(viewer): use window.Plotly handle instead of importing plotly.js [5cb5baf]
- fix(viewer,cli): persistent reset icon, clear Plotly selection, join fan-out check [c8f3458]
- fix(viewer): reset-button styling, builder section parity, auth/data fixes [dedcd53]
- feat(viewer): filter source badge, cross-filter toggle parity, available-values greying [bb30c39]
- perf(screenshots): switch auto-screenshot to React SPA, ~2× faster than Dash [2e99e9d]
- feat(api,dev): React-beta screenshot endpoint + advanced-viz docs capture pipeline [1d09d0c]
- feat(advanced-viz): merge ancombc_differentials into da_barplot [e24fb12]
- fix(ci): register plotly-upset pixi source + reformat fixtures script [d524221]
- feat(advanced-viz): MA/Lollipop/Dot/QQ/Sunburst/Oncoplot renderers + Show-data filter fixes [2b6968f]
- feat(showcase): UpSet plot dashboard tab [e10c0fd]
- feat(advanced-viz): React UpsetRenderer + dispatch wiring [dc3eb62]
- feat(advanced-viz): dispatch/poll endpoints for UpSet + register dashboard [2007ed7]
- feat(advanced-viz): Celery compute_upset task [b7572ca]
- feat(advanced-viz): backend model for UpSet plot [bd1de48]
- chore(deps): vendor plotly-upset package + register editable source [0285f57]
- feat(showcase): ComplexHeatmap dashboard tab on the feature matrix [50f89f1]
- feat(advanced-viz): React ComplexHeatmapRenderer + dispatch wiring [980e2f5]
- feat(advanced-viz): Celery compute_complex_heatmap task [107727f]
- feat(advanced-viz): backend model + dispatch/poll endpoints for ComplexHeatmap [e3d72bf]
- feat(showcase): GSEA dot-plot fixture + dashboard tab [f572ced]
- feat(advanced-viz): React EnrichmentRenderer (dot plot) [0a40013]
- feat(advanced-viz): backend model for GSEA / GO / pathway enrichment [aa74cd9]
- feat(showcase): rarefaction + ancombc + DA barplot fixtures and dashboard tabs [d5073d7]
- feat(advanced-viz): React renderers for rarefaction + ancombc + DA barplot [baddfb2]
- feat(advanced-viz): backend models for rarefaction + ancombc_differentials + da_barplot [ea28733]
- feat(advanced-viz): expose cluster + color cols on feature DC so live UMAP gets Colour-by [d663e33]
- fix(advanced-viz): Show-data popover uses AG Grid Community [c0e7fc2]
- fix(chrome): wrap each extraActions child individually so vertical orientation works [3fe09b6]
- fix(advanced-viz): chrome-integrated Settings + Show-data ActionIcons [47ed061]
- fix(advanced-viz): visible frame, fullscreen, controls + show-data popovers [5b61b33]
- feat(advanced-viz): live Celery clustering (PCA/UMAP/t-SNE/PCoA) with cache [333f18e]
- fix(advanced-viz): titles + border, drop show-data drawer, scanpy styling, tree filter+branch-len [04d59e6]
- feat(advanced-viz): phylogenetic tree viz (Microreact-style) [82ae444]
- fix(clustering): stronger signal + paper-grade scatter styling [905fc96]
- fix(advanced-viz): show-data overlap + AG Grid drawer; wire density toggle [e2ab8e8]
- fix(showcase): main-tab _id must equal project_id so child tabs surface [4267f4a]
- feat(advanced-viz): fix Manhattan + StackedTaxonomy + add 4 clustering tabs + collapsible data table [87e6089]
- fix(advanced-viz): pass init_data to load_deltatable_lite to avoid 401 [e4fa510]
- fix(advanced-viz): re-export fetchAdvancedVizKinds/Data + fetchPolarsSchema from depictio-react-core [9b75d7a]
- feat(showcase): dedicated advanced-viz demo project with 5 dashboards [72756ec]
- feat(ampliseq): seed advanced-viz showcase dashboard + dc_ref-based recipes [0503fec]
- feat(advanced-viz): MVP component family — volcano, embedding, manhattan, stacked taxonomy [5f6f11b]
- docs(advanced-viz): add per-viz input schemas, compute class, Celery offload [5ffe703]
- Update CHANGELOG.md for v0.12.1 [a5b418b]
- Bump version: 0.12.0 → 0.12.1 [14b4bc8]
- fix(screenshots): restore correct dark variant for 646b0f3c1e4a2d7f8e5b8ca2 [4a2e0c9]
- chore(screenshots): refresh dashboard thumbnails [1f200cc]
- feat(docs): playwright-driven docs screenshot capture for React viewer [8930f8a]
- feat(viewer): NotesFooter read-only for non-owners [039baa9]
- fix(viewer): move notes footer toggle from bottom-left to bottom-right [8b9d58b]
- fix(viewer): import @mantine/tiptap/styles.css so RichTextEditor renders [cf9d46c]
- feat(viewer): hide Data Source step for text + fullscreen notes drawer [f96cd2d]
- fix(viewer): add tiptap deps to workspace pnpm-lock.yaml [a61e875]
- feat(viewer): add text component and notes footer drawer [103752b]
- viewer: gate edit affordances on dashboard ownership [c9cc578]
- viewer(walkthrough): guide visitor through actual duplicate flow [914cb5a]
- viewer(walkthrough): mention duplicate-to-temp-session upfront in welcome [a1a0ef9]
- viewer(walkthrough): add duplicate-to-temp-session step in public tour [761f68b]
- viewer(walkthrough): public tour rewrite for shared-instance framing [84e4d6c]
- viewer(walkthrough): tighten copy on resize + dashboard-save steps [2a9681a]
- viewer(walkthrough): render bold in step body strings [1af2751]
- viewer(walkthrough): expand component-build phase with configure + resize steps [e7728f2]
- viewer(walkthrough): unblock target-pending state + clickable component-type [426e10c]
- viewer(walkthrough): fix component-builder route + watch DOM with MutationObserver [c277a3c]
- viewer(walkthrough): builder copy revisions + open-editor step [864a6f5]
- viewer(walkthrough): projects-first flow, favicon hero, race-safe auto-advance [5ec7b33]
- viewer(walkthrough): drop route guard from builder welcome step [36b784b]
- viewer(walkthrough): mode-aware guided tour with spotlight backdrop [5a2b98d]
- Update CHANGELOG.md for v0.12.0 [23bb3d7]
- Bump version: 0.11.2 → 0.12.0 [70a09e1]
- chore(claude): add slash commands for bump/commit/worktree workflows [7bc3d9f]
- feat(viewer): inline coordinates detection in Create DC modal [a73373c]
- feat(viewer): dashboards + projects revamp (toolbar, table, pins, filters) [fdcd3ee]
- fix(viewer-dev): unbreak favicon under Vite's base prefix [62c077f]
- fix(dev): unblock side-by-side worktree dev stacks [03129fe]
- feat(viewer): map config rename + chrome polish + screenshot skip-on-unreachable [5137d1a]
- chore(api): bump MultiQC preview offload timeout + collapse multi-line log [118d406]
- feat(viewer): Coordinates tab in Create DC + inline DC previews + Map-aware builder [59ebecb]
- feat(sdk): fetchMultiQCBuilderOptions helper + latColumn/lonColumn upload input [9fcf8a5]
- feat(api): /create_from_upload accepts lat/lon hints with column validation [7f77fe3]
- feat(models): DCTableCoordinatesConfig — Map-capable table DC variant [57b2ccb]
- chore(dev): multi-run report generator — companion tables + bad-scenario fixtures [efe16dd]
- refactor(viewer): canonical selected_* keys + SPA route polish [c26fc02]
- feat(multiqc): disk-persistent prerender store + Celery worker rebuild [e496a6b]
- feat(viewer): polish cross-DC Link create/edit modal [7b428ae]
- feat(viewer,api): unified Manage Data Collection modal + Table append/replace/clear [71a2372]
- feat(multiqc): uniformity validator + dry-run check endpoint + Check now button [5e9edf2]
- chore(devcontainer): wire viewer-dev Vite port through allocator [092d662]
- feat(viewer): Create DC modal polish + MultiQC uniformity checklist [f965039]
- feat(multiqc): run uniformity checks on the create flow [c452168]
- fix(api): cascade-delete cross-DC links when a DC is removed [6d6b1e6]
- fix(viewer): let Vite rewrite favicon path via base [1ad68ee]
- fix(screenshots): regenerate clean example dashboard previews [d897c7e]
- fix(viewer): hide demo banner + tour in React routes [35df5cf]
- feat(viewer): cross-DC link CRUD + MultiQC create/manage in React [d54916b]
- feat(multiqc): HTTP endpoints for create + append + replace from React [1ab41b0]
- fix(multiqc): cache key correctness + safer append + helper tests [295743e]
- fix(multiqc): authorize destructive endpoints + tighten suffix regex [9bc52d6]
- feat(multiqc): DC manage flow + folder uploads + live cache + prewarm [46233d6]
- Add sample metadata TSV generation to multi-run report script [b68228c]
- Add multi-run MultiQC parquet report generator [6a4a929]
- ci(docker): pin pnpm@10 in viewer-builder + dev-viewer stages [57d098d]
- helm: roll Pods on ConfigMap/Secret change via include-based checksum [fdab0bf]
- Update CHANGELOG.md for v0.11.2 [541835e]
- Bump version: 0.11.1 → 0.11.2 [5359b86]
- viewer: declare react-resizable as direct dep [6e9a4d5]
- viewer: fix Docker build for prod + dev compose HMR [0f9cb77]
- Update CHANGELOG.md for v0.11.1 [363f05e]
- Bump version: 0.11.0 → 0.11.1 [c7c2e32]
- Move viralrecon recipes to canonical projects/ path [909a55a]
- Update CHANGELOG.md for v0.11.0 [2539176]
- Bump version: 0.10.3 → 0.11.0 [d4eb9e3]
- viewer: gate write actions in public/demo mode (UI + API) [6f1645e]
- viewer: unify per-mode button gating, drop anonymous public flow, fix resize handles [49f19fc]
- ci(helm): bump minikube to 6G/4 CPU for inter-service test headroom [8c24c69]
- viewer(events): make realtime opt-in, fix standalone-mongo retry loop [c1e23ff]
- docker: split Node.js into dev-viewer stage to unblock CI [e12ecd9]
- viewer: settings drawer rewrite, edit-mode borders, multi-tab nav [5e89067]
- viewer: permissions modal + role exclusivity, fix dev compose mount [6d2471a]
- viewer: selection UX, realtime refresh, dev container, admin dedup [1e4d222]
- projects(adapt_feedb_ms): yaml + simulation scripts for realtime testing [20a0daa]
- dash(assets): multiqc icon SVGs + depictio-logo / multiqc-icon CSS [718a343]
- dash(modules): figure parameter discovery + multiqc general-stats [268141a]
- dash: layout cleanups and utils.py slim-down [f2354f5]
- deps: add websockets + enable realtime event flags [4f93017]
- react(timeline): honor compact prop for marks visibility [d68be46]
- api(core): viewer-static-mount, anon-user gate, and user-by-email lookup [cf508e9]
- api(dashboards): bulk-compute, image, and figure endpoints for react viewer [1c7fe96]
- api(filters): dtype-agnostic is_in + cross-DC link filter resolution [8256aba]
- api(events): WebSocket + SSE endpoints for realtime dashboard refresh [35a6762]
- models: shared types for image / timeline / row-selection / cross-DC links [9924ab4]
- react(layout): compact mode for grouped slider/rangeslider/timeline [b643a50]
- react(viewer): demo mode banner, upgrade flow, and guided tour [fec371b]
- react(viewer): app shell wires realtime, selections, and filter sidebar [1b261a6]
- react(multiqc): figure + general-stats refetch on realtime tick [6db4b14]
- react(interactive): renderer updates + Timeline [dd18dec]
- react(renderers): figure/table/image/map selection + realtime refetch [7c3491a]
- react(layout): InteractiveGroupCard, TopPanel, secondary metrics [376c910]
- react(realtime): WebSocket-driven dashboard refresh + new-item highlight [dcf4aac]
- react(selection): add chart/table cross-filter helpers [8377eca]
- react(api): add types and exports for selection, realtime, layout helpers [30ad983]
- Update CHANGELOG.md for v0.10.3 [70b9688]
- Bump version: 0.10.2 → 0.10.3 [e9a5602]
- Update CHANGELOG.md for v0.10.2 [e00c8c6]
- Bump version: 0.10.1 → 0.10.2 [d6992f1]
- feat(deployment): add annotations for config checksum in backend and frontend [59768b2]
- Update CHANGELOG.md for v0.10.1 [ca160d3]
- Bump version: 0.10.0 → 0.10.1 [b72b35a]
- fix(test): set glob_pattern=None when bypassing RecipeSource validation [398e7de]
- Update CHANGELOG.md for v0.10.0 [f3a6b72]
- Bump version: 0.9.0 → 0.10.0 [f8db3b7]
- fix(profile): enable CLI Agents button in single-user mode [05ce615]
- Reduce duplication in depictio-react-core api.ts [361eab4]
- test: set glob_pattern on bypassed RecipeSource instances [28a376e]
- feat(api+react): create data collection from upload [7d56c1f]
- Use real workflow logos for template chip in projects list [6c5ccaa]
- Add "Try the new version" switcher in Dash sidebar → React beta [a81da71]
- Add React component builder (/dashboard-beta-edit/{id}) [5911c36]
- Add /projects-beta React sub-app with detail + permissions [f00b0e1]
- Add /about-beta, /admin-beta, /profile-beta, /cli-agents-beta sub-apps [06d1b39]
- Add /auth and /dashboards-beta React sub-apps [419ddf5]
- Add viewer chrome: AppSidebar, Header, ProfileBadge, TabModal [4530ce1]
- Extend depictio-react-core for projects + figure builder [49fb381]
- Add API endpoints for React viewer (figures, multiqc, projects, users) [60d9ebc]
- Wire React SPA serving + multi-route mounts in FastAPI [d725ab8]
- fix(editor): use inset shadow for duplicate flash so left panel renders identically [9660a50]
- fix(editor): duplicate component visibility + ref staleness [46c0c34]
- perf(multiqc): filter-aware caching + Celery prewarm + cloudpickle [db16e88]
- Add React editor at /dashboard-beta-edit/{id} [acf7a58]
- Add UI chrome to React viewer: header, sidebar, action icons [e129a16]
- Wire interactive sample-filter into render_multiqc [7f5ee35]
- Extend _fetch_s3_locations_from_dc with multiqc_collection fallback [c74d841]
- Fix render_multiqc: use the richer fallback to resolve s3_locations [a9cea17]
- Add Phase 2 handoff doc with smoke-test checklist [0e6dc14]
- Add Map, JBrowse, and MultiQC ports to React viewer [31ce40a]
- Add 5 component renderers + AG Grid SSRM to React viewer [6625294]
- React viewer MVP + shared component library [cfc283c]
- Perf fixes: SVG re-encode, MultiQC samples strip + N+1 cache, route guard [424af6f]
- Bump Dash 3.2 → 4.1 for pattern-matching callback perf fix [6a81050]
- revert: remove Serve-specific permission/auth logic from generic chart template [a87bfe1]
- Fix cross-DC link filtering + heatmap annotations on filter [503a4d0]
- Fix metadata links: source_column sample→ID (matches actual metadata column name) [0de966f]
- Fix heatmap annotations disappearing on filter + add metadata→heatmap link [b19a625]
- Consistent auto-coloring: use Plotly palette for heatmap annotations [5fb51f1]
- Add samplesheet->taxonomy_heatmap link for cross-DC filtering (works for base+extended) [2e5f7e1]
- Heatmap annotations: only habitat + city, skip name/dates/coordinates [78b0fc0]
- Fix heatmap: sanitize annotations at render time to handle stale delta data with None [89a4351]
- Fix heatmap: skip annotations with empty values (ComplexHeatmap KeyError) [25177e1]
- Fix heatmap recipe: convert None values to empty string in annotations [78174f9]
- Fix heatmap annotations: extract _col_annotations_json in core.py rendering path [feac518]
- Disable component filter + add heatmap annotation debug logging [54ddbbd]
- Fix heatmap column loading: return empty list (all columns) when no value_columns specified [b313fdc]
- Fix heatmap: include _col_annotations_json in required columns for data loading [b24950d]
- Fix map component filtering, reorder DatePicker first in sidebar [8f726f0]
- Add sampling locations map + fix heatmap date serialization [4077866]
- Fix heatmap recipe: convert date objects to strings for JSON serialization [4654b58]
- Add GROUP_COL_DISPLAY for title-cased labels, fix sampling_date [fd787d2]
- Fix Total Samples card: use ID column instead of sample for metadata DC [a17d357]
- Add DatePicker to both tabs, fix sample column refs in full_analysis [023be96]
- Fix full_analysis dashboard: use ID column for metadata sample filter [f18a60f]
- Remove base project variant, add template_origin to ampliseq reference [95449b6]
- Fix MultiQC metadata: remove prevent_initial_call so content loads on first click [5f4f60f]
- Use inline key:value groups for tighter template info layout [5d288c8]
- Reduce spacing between key/value in template info column [97080bf]
- Redesign template origin section: two-column layout with icons [f153129]
- Fix template_origin display: handle both dict and model types [10a9a4d]
- Store template variables in TemplateOrigin + show in data manager [4dde187]
- Add template origin section to Project Data Manager page [3034cf6]
- Consistent badge size (sm) across all project badges [782cf04]
- Make template badge clickable with docs link + open-in-new icon [eb38a3a]
- Show template docs URL as separate clickable link in project details [6bec348]
- Add template info to project details + fix ObjectId serialization [3cfbbf8]
- Fix /projects 500 error and unify template badge styling [009900d]
- Filter unresolved dashboard components + fix path resolution [f7c5a8d]
- Fix file scanner path resolution and dashboard DC tag scoping [7635fdf]
- Graceful handling of missing data collections [7b43445]
- Remove alpha diversity/rarefaction from base dashboard [cf633c1]
Documentation 📖
For more details, please refer to the documentation