Release 1.5.1
Docker Images 🐳
ghcr.io/depictio/depictio:1.5.1
ghcr.io/depictio/depictio:latest
ghcr.io/depictio/depictio:stable
ghcr.io/depictio/depictio:edge
Click to expand the changelog for 1.5.1
Changes 📜
New Features ✨
- feat: card metrics, interactive frames and catalog work in progress [532df54]
- 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: make dashboard list/table titles standard links for new-tab support [07780f5]
- fix: avoid shell injection and bad parameter expansion in release workflow (#790) [a56b300]
- fix: screenshot debounce wrong path + Sign In shown in public mode (#784) [cfeed8f]
- 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: format Python code blocks in DEPRECATION.md for ruff 0.16 [16de17e]
- refactor: remove depictio/dash/ — Dash → React migration complete (#770) [d55287d]
- 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 🧹
- chore: remove a stale env copy and a benchmark session prompt [fd14cf6]
- chore: remove stray backup files and the ingest-memory handoff note [147dffe]
- chore: remove the abandoned react-frontend scaffold [e2d9fd2]
- chore: refresh seeded dashboard screenshots and cli uv.lock [a29d6a9]
- chore: trim permissions allowlist in settings.json [ea21ec0]
- chore: pre-commit auto-fixes (eof, nbstripout) [1baf17b]
- ci: restore docs-repo notify on release (regenerate OpenAPI reference) [a1bb7b2]
- ci: add monthly Dependabot dependency-update health-check [f61f223]
- ci: fix dropped "Verify users" step header from debug-logging edit [90177b3]
- ci: narrow build-images PR trigger to build-recipe files only (#796) [3ca4627]
- 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: strip the generated claude-mem block from the screenshot notes [9a19a82]
- docs: pipeline provisioning + passwordless magic-link login [e43f64e]
- docs: render React logo in brand cyan on dark navy for visibility [f78f1a0]
- docs: use higher-contrast blue so React logo is visible on badge [405a15c]
- docs: switch Dash badge to React and fix broken tests workflow badge [a5bba82]
- docs: design proposal for advanced visualisation component family [55eca3d]
- docs: sync claude-mem auto-generated activity logs [56068a6]
Other Changes 📝
- Bump version: 1.5.0 → 1.5.1 [9c5f106]
- fix(telemetry): isolate the CLI check from the machine it runs on [715f20b]
- feat(telemetry): count CLI installations, not just CLI usage [02caca3]
- fix(telemetry): stop every event being filed as bot traffic [698fad4]
- fix(telemetry): stop our own CI reporting itself as an installation [6d5a606]
- Update CHANGELOG.md for v1.5.0 [72305b0]
- Bump version: 1.4.0 → 1.5.0 [f9245f3]
- fix(telemetry): make the metrics snapshot survive a failing collector [1b6d4c7]
- fix(telemetry): don't let a scripted first run swallow the CLI notice [d32c38b]
- fix(telemetry): release the guard that was claimed, not today's [2debede]
- feat(telemetry): tell CLI users about telemetry on their first run [2f1a4c6]
- fix(telemetry): forward the traffic metrics instead of logging them [0cafb17]
- fix(telemetry): stop the install event re-firing every TTL period [82efeaa]
- ci(telemetry): give the telemetry job the secret Settings demands [d10a65e]
- test(api): full-stack HTTP check for the dashboard timestamp fixes [2e5baee]
- feat(telemetry): report configured replica count and CPU/memory for Helm installs [d16d8ab]
- feat(telemetry): split helm/hand-rolled kubernetes and dev/prod compose [7e07e25]
- test(telemetry): cover the two gaps that let real bugs through [5238c89]
- fix(telemetry): stop the send guard expiring the instant it is written [9bb548f]
- ci(telemetry): run the end-to-end checks on telemetry changes [a6ce79d]
- fix(telemetry): stop the browser client throwing when localStorage is blocked [5bad0f5]
- test(telemetry): end-to-end verification of the real send path [74e6181]
- fix(devcontainer): check other projects' port reservations before our own [e439f0f]
- docs(telemetry): add hand-drawn architecture diagram [0ba4922]
- feat(telemetry): route to the Depictio PostHog project, send anonymous events [8a87354]
- feat(telemetry): anonymous installation and usage telemetry [2994979]
- chore(compose): move the benchmark overlay into docker-compose/ [79a9ca1]
- chore(commands): add the deployment render-check command [d1c7384]
- docs(claude): drop the references to the removed Cypress suite and scaffold [5659271]
- chore(tests): remove the legacy Cypress suite and its CI job [cc7f892]
- chore(viewer): pin the pnpm version via packageManager [7100449]
- fix(templates): correct the download_test_data.sh quick-start commands [334400a]
- chore(benchmark): gate the ingest timing markers behind an env flag [fe0a4c9]
- fix(api): register the mantine templates in the multiqc preview worker [ebd3cd7]
- Update CHANGELOG.md for v1.4.0 [6b5773a]
- Bump version: 1.3.1 → 1.4.0 [61fc22b]
- chore(seeds): track the Iris Petal Analysis dashboard thumbnail [9dffbb0]
- chore(seeds): refresh the iris and penguins dashboard thumbnails [2c4599d]
- fix(figures): let an axis claim the margin its labels need [31ee05f]
- fix(viewer): give a selection row the icon of what it was selected on [174b82a]
- fix(viewer): name the map a selection came from on every tab [2e3ffee]
- fix(text): centre a text tile's content in its tile by default [0366d5f]
- fix(viewer): stop folded sections loading, and fit the panel's chrome to it [f9a719d]
- fix(figures): honour the author's colours on the aggregated box and histogram [7da123f]
- feat(dashboards): section every filter and rebuild the iris/penguins card rows [7cbf792]
- fix(viewer): stop the active-filter reset icon covering interactive controls [232ba57]
- fix(viewer): replace the filter panel's badge strip with a folding summary [dd4ef09]
- fix(models): don't export a map's default 'grid' placement [86213b4]
- fix(viewer): stop offering "load all rows" on tables that barely page [48b5410]
- feat(viewer): section the dashboard grid and add the component inspector [071b7e8]
- feat(viewer): make the left filter panel a shared, structured, collapsible panel [da1049f]
- fix(api): let the basemap CDNs through the CSP so maps can render [a4b738a]
- test(e2e): skip the monitoring session tests where monitoring is refused [544ef25]
- fix(editor): keep a floating map editable after it leaves the grid [5896b15]
- test(projects): a floating-map demo project [a8159c9]
- feat(viewer): show the rows behind a map, and select from them [9909825]
- feat(viewer): the dashboard-wide map panel — floating card, dock, collapse [7e18d93]
- feat(viewer): map renderer — selection round-trip, overlaid legend, folded credit [9a6e093]
- feat(api): serve a tab family's floating maps and the rows behind a map [bfa76ff]
- feat(models): let a map be lifted out of the grid into a dashboard-wide panel [0c66045]
- feat(text): let text components choose a vertical alignment [c647b52]
- fix(viewer): match each workflow's badge colour to its own logo [c600b2a]
- fix(auth): widen the keep-alive refresh window to cover its tick interval [a246e0c]
- feat(viewer): brand the workflow badge, add compact mode to the projects table [41591e6]
- test(auth): cover the 'Invalid token' session-expiry regression [0a1156b]
- fix(auth): keep the access token fresh for the whole page session [08219a5]
- fix(dashboards): don't backfill a creation date from hand-written ObjectIds [6931852]
- fix(viewer): column picker did nothing when clicking a column's label [96dae01]
- fix(dashboards): stop save from breaking on immutable _id and blanking screenshot_ts [b90d171]
- fix(dashboards,projects): correct + timezone-aware create/modify times, add column picker [1e4573c]
- fix(editor): refresh token on dashboard autosave [a5da51d]
- fix(admin): refresh token on Log & Task polls to stop 'Invalid token' [a3c9c57]
- feat(cards): histogram, threshold, completeness and attrition layouts [93488c7]
- fix(cards): real preview data, pre-filled layout config, donut layout [beaa16c]
- fix(cards): reconcile the aggregation tables, add a composition layout [be63bb4]
- chore(deps): bump the static-tooling group across 1 directory with 7 updates [07db0f2]
- fix(viewer): don't let the auth probe mint the session it reports on [db2b99c]
- fix(helm): disable service link env vars on all pods [9906105]
- chore(deps): bump 10 of the 12 runtime-group updates, hold beanie and redis [1281ed9]
- chore(deps): update jupyterlab requirement from >=4.6.1 to >=4.6.2 [9e16fad]
- chore(ci): bump the github-actions group with 2 updates [c908568]
- fix(viewer): route every API call through authFetch [f1f9db2]
- Update CHANGELOG.md for v1.3.1 [0f42127]
- Bump version: 1.3.1-b2 → 1.3.1 [7f3ab15]
- Update CHANGELOG.md for v1.3.1-b2 [122f145]
- Bump version: 1.3.1-b1 → 1.3.1-b2 [822c214]
- chore(hooks): guard the default dashboard thumbnails [164fbb3]
- fix(screenshots): restore reference dashboard thumbnails [275be00]
- Update CHANGELOG.md for v1.3.1-b1 [63e4643]
- Bump version: 1.3.0 → 1.3.1-b1 [e28a058]
- fix(api): keep date column specs BSON-encodable [21fa67a]
- Update CHANGELOG.md for v1.3.0 [48139db]
- Bump version: 1.2.2 → 1.3.0 [924e8a1]
- docs(perf): put the v2 row count on the stages diagram [0edfc27]
- docs(bench): performance report v2, and cap the bench Redis [cf2ed7d]
- docs(perf): redraw the stages schema, and capture the Load-all control [28d07a3]
- feat(bench): multi-metric card strip on the linked dashboard [7cc44cc]
- docs(scripts): genericise the admin-token note [3bcf573]
- refactor(scripts): ship the checker standalone, inline the token recipe [3e223ec]
- feat(bench): link the three collections both ways, make every tile distinct [7617e48]
- feat(scripts): post-deployment dashboard render check [8320cfc]
- fix(viewer,api): make WebGL and icons work under the shipped CSP [b6accd0]
- docs(bench): hand-drawn schemas for the performance pass [c48aa1a]
- feat(viewer): scope the load indicator to the viewport, animate the boot splash [5bfdb0c]
- fix(viewer): probe visibility after the grid has positioned its panels [6d05077]
- fix(api): register the Plotly templates when the figure cache is warm [c4f0b7e]
- test(e2e): click dashboard card title link, not card centre [724a28a]
- refactor(cli): move ingest flags out of the API settings namespace [65eeaa5]
- perf(multiqc): skip the S3 probe for collections with no prerendered figures [e9c8178]
- docs(bench): perf report for the 17M-row linked project [9fbd1e6]
- fix(multiqc): aggregate sample values across reports; keep hyphens in ids [0d1ef4c]
- feat(viewer): skeleton + queued fetch for MultiQC panels [b405511]
- perf(viewer): code-split route trees and heavy renderers into async chunks [3b0e413]
- perf(multiqc): prerender figures at CLI ingest and serve them from S3 [32ae62c]
- feat(viewer): dashboard load progress bar under the header [638d49f]
- feat(viewer): skeleton loading state for interactive filter widgets [7d5022a]
- feat(viewer): skeleton placeholders + load registry for data panels [baa83b0]
- fix(advanced-viz): flag lollipop as estimated when its rows are sampled [841ae19]
- perf(advanced-viz): render dot plot on scattergl, capped to top-N genes [aa658ea]
- test(models): TableLiteComponent default page_size is now 100 [9e808dc]
- fix(advanced-viz): stop AdvancedVizFrame's publish effect from looping [7261774]
- feat(bench): diverse figure + advanced-viz rotation across sampling policies [8728208]
- perf(bench): guard against the silent CLI trap, and mirror the viewer's data policy [e504f11]
- feat(advanced-viz): kind-aware server-side reduction for the data endpoint [1d1a8f7]
- fix(api,cli): correct temporal filter pushdown and link-key clustering [ce00720]
- refactor(api): drop the type: ignore comments added with the specs rewrite [8874e24]
- perf(bench): realistic linked topology, cold/warm opens, and first-paint timing [e063807]
- fix(viewer): budget WebGL contexts so scatter markers stop vanishing [ec34249]
- feat(viewer): drop superseded render fetches, and follow a settled filter [3cbb4ed]
- perf(api,viewer): stop sorting tables past a row ceiling, and page at scan level [7e90229]
- perf(api): resolve cross-DC link filters once per fan-out, and lazily [6762340]
- perf(api): opt-in per-group sampling for box-plot quartiles [e27f648]
- perf(api): sample advanced-viz data across the whole frame, not its prefix [bc3d6ba]
- perf(api): compute column specs from a lazy scan instead of the whole frame [352b847]
- perf(api): keep categorical filters pushable into the parquet scan [f3b4ffa]
- perf(cli): cluster Delta tables on the columns they get filtered by [a1356c6]
- chore(bench): ignore per-run benchmark output directories [c06bcd4]
- docs(bench): handoff notes for the ingest-path memory blowup [fdd97c7]
- feat(viewer): bounded render payloads with an explicit load-all escape hatch [24c196c]
- perf(api): scan-level aggregation pushdown for figures and cards [95556ae]
- perf(bench): make the harness survive and characterise the 1GB tier [b7365e4]
- perf(api): stop materialising the delta table in the upsert event payload [31630a4]
- perf(cli): opt-in parallel multi-data-collection ingestion [7f382d5]
- refactor(cli): drop the type: ignore comments added with the ingest work [63296f2]
- perf(cli): resolve existing image keys with one LIST instead of N HEADs [d2156cc]
- perf(cli): opt-in parallel MultiQC report parsing [cee3db6]
- perf(cli): opt-in streamed Delta write to bound ingest memory [1762161]
- perf(bench): ingestion benchmark for table / MultiQC / images [1bc38a0]
- perf(cli): per-phase ingest timing (parse/collect/write/upload) + peak RSS [0163c0f]
- fix(monitoring): gate WS probe on events_enabled to stop 403 reconnect loop [633fdee]
- perf(bench): ingest throughput + per-type report sections [d5d8f86]
- feat(render): figure/table row caps, point downsampling & cheap row-count [80cafdc]
- Add performance benchmark harness (datasets + runner + report) [ce855cd]
- perf(docker,api): scope the dev-mode file watchers to real source [b63d8f5]
- dev(screenshots): realtime shots, journal seeding, anonymous instances [fafa0bf]
- Update README.md [e2d6070]
- fix(release): re-point version tag at the amended bump commit [a4a2f49]
- Update CHANGELOG.md for v1.2.2 [97acb14]
- Bump version: 1.2.1 → 1.2.2 [6c603d5]
- docs(claude): drop stale Dash-era guidance, correct commands and paths [5be941f]
- feat(realtime): full-width timeline footer, table column control, and dashboard layout polish [55db1a1]
- Update CHANGELOG.md for v1.2.1 [7918d86]
- Bump version: 1.2.0 → 1.2.1 [0ad27d0]
- docs(monitoring): refresh Health screenshots; wait for metric cards [2f49d5a]
- docs(monitoring): refresh Log & Task screenshots + ingestion detail/live shots [347dad7]
- feat(monitoring): capture CLI command, local paths + per-DC breakdown; live-step scaffold [141de83]
- feat(monitoring): granular ingestion steps, task-detail titles, lazy panels [ce7d671]
- feat(monitoring): runtime log-capture level control + UI ingestion ledger [3049dde]
- Update CHANGELOG.md for v1.2.0 [bbb5113]
- Bump version: 1.1.4 → 1.2.0 [914c15c]
- fix(migrate): export/import MultiQC + JBrowse docs and fix export headers [262f9e5]
- docs(monitoring): admin Log & Task screenshots + docs_screenshots shots [bc2e487]
- fix(monitoring): always show Log & Task tab in single-user mode [37c5ec2]
- test(cli): update generate_api_headers tests for CLI identity headers [15136fc]
- feat(monitoring): live WebSocket push + model tests [2f5900e]
- feat(monitoring): admin "Log & Task" monitoring (ledger + polling UI) [9975582]
- chore(compose): restore no-minio compose for external S3 [ad0b9d9]
- Update CHANGELOG.md for v1.1.4 [a9d8ff2]
- Bump version: 1.1.4-b3 → 1.1.4 [7ca96de]
- run_simulation.sh: source the API token from ~/.depictio/CLI.yaml [dbaa257]
- Make run_simulation.sh location-independent [9e558a3]
- Update CHANGELOG.md for v1.1.4-b3 [e268ed3]
- Bump version: 1.1.4-b2 → 1.1.4-b3 [facc68a]
- docs(realtime): seed only the iris sample project in the quickstart .env [953f02c]
- docs(realtime): clean up SVLT install snippet and tighten §5 [3458e03]
- chore(realtime): track adapt_feedb_ms seed CSV for the demo import [5e2bd24]
- fix(realtime): align stream_test synthetic schema with the SVLT sim [2fcdcb3]
- docs(realtime): document the SVLT + svltx-depictio simulation driver [1980797]
- feat(realtime): polish microscopy timeline, gallery highlights, and dev tooling [204988a]
- Update CHANGELOG.md for v1.1.4-b2 [eea8161]
- Bump version: 1.1.4-b1 → 1.1.4-b2 [8922010]
- chore(realtime): make adapt_feedb_ms SVLT simulation driver instance-aware [21dcb9b]
- fix(realtime): repair timeline binding and new-item highlights on microscopy dashboard [0174816]
- fix(viewer): point "Start editing" at /dashboard-edit, not the removed beta route [9e5a139]
- fix(viewer): DC manager upload, collapse persistence & coordinate map framing [8792745]
- fix(models): replace deprecated datetime.utcnow for ty 0.0.56 [b209d55]
- chore(deps): bump the static-tooling group across 1 directory with 4 updates [f638354]
- chore(deps): keep beanie and redis at held pins in runtime bump [307caa8]
- chore(deps): bump the runtime group across 1 directory with 15 updates [3f021f6]
- chore(deps): update ipywidgets requirement from >=8.0 to >=8.1.8 [e2add7b]
- chore(deps): update fastcluster requirement from >=1.2.0 to >=1.3.0 [c876a46]
- Update CHANGELOG.md for v1.1.4-b1 [186dd8d]
- Bump version: 1.1.3 → 1.1.4-b1 [6ce8009]
- fix(datacollections): coerce arro3 schema to pyarrow in polars_schema endpoint [8ceb073]
- chore(deps): update jupyterlab requirement from >=4.0 to >=4.6.1 [5a28108]
- chore(ci): bump the github-actions group with 7 updates [d7df114]
- Update CHANGELOG.md for v1.1.3 [f3d8850]
- Bump version: 1.1.3-b1 → 1.1.3 [4c1bd09]
- chore(compose): wire provisioning key into dev backend env [cdc6ce1]
- fix(cli): magic link targets /dashboard/{id}; keep provisioned project private [0bd307a]
- fix(viewer): magic-link StrictMode guard + non-beta route [dd6f172]
- fix(auth): disable provisioning + magic-link in single-user mode [dfa89e1]
- fix(devcontainer): detect docker-reserved ports in allocate-ports [e52db8d]
- refactor(auth): TTL-expire magic tickets and reuse the run token [e032060]
- fix(auth): adapt provisioning to upstream main after rebase [e3fab92]
- test(auth): cover provisioning + magic-link core functions [159af4a]
- feat(cli): run --user provisions account and emits magic-link login [43dfeb2]
- feat(viewer): passwordless magic-link login route [098c5bd]
- feat(auth): backend for pipeline provisioning + magic-link login [ef5625d]
- Update CHANGELOG.md for v1.1.3-b1 [0f2fe12]
- Bump version: 1.1.2 → 1.1.3-b1 [7ffaa65]
- fix(ampliseq): provide METADATA_FILE for reference seed so differential DCs survive [935b99f]
- fix(skill): split API_HOST vs VIEWER_HOST in embl-admin-login [992179a]
- Update CHANGELOG.md for v1.1.2 [2ea2f3a]
- Bump version: 1.1.1 → 1.1.2 [2f6a210]
- fix(skill): resolve admin agent-config dynamically in embl-admin-login [4aa6e38]
- test(auth): set registration_disabled=False in OAuth new-user tests [5f2f7ae]
- fix(ampliseq): relocate phylogeny tree seed to {DATA_ROOT}/qiime2 path [97177fd]
- feat(auth): honour registration_disabled in Google OAuth login [c94da62]
- Update CHANGELOG.md for v1.1.1 [b57fdb6]
- Bump version: 1.1.0 → 1.1.1 [74fb961]
- feat(auth): add DEPICTIO_AUTH_REGISTRATION_DISABLED to block self-registration [425052a]
- initial changes for depictio to support gateway api on serve [18609ac]
- Update CHANGELOG.md for v1.1.0 [d99832c]
- Bump version: 1.0.1 → 1.1.0 [afe7ae9]
- chore(helm): EMBL-demo celery HA + db-seed EOF normalization [626be0f]
- refactor(viewer): drop default-thumbnail placeholder, fall back to dashboard icon [9349864]
- feat(dev-scripts): generate nf-core template reference docs from template.yaml [21acee2]
- fix(auth): show public dashboards in any public project to anonymous users [8c16278]
- fix(viewer): restore folder picker for MultiQC click-to-upload [6120c0c]
- fix(advanced-viz): stop required/optional binding badges clipping [7cae8e9]
- fix(advanced-viz): resolve 500 on DC schema fetch (deltalake to_arrow rename) [65dbd92]
- fix(api): unpack 3-tuple _apply_conditionals return in db init resolver [3443b26]
- test(templates): unpack the 3-tuple _apply_conditionals return [32d80e5]
- docs(nf-core): add ampliseq/viralrecon template validation reports [90560c7]
- fix(api): fold empty heatmap annotation categories into Unclassified [0105528]
- fix(nf-core): adapt ampliseq/viralrecon templates to all pipeline routes [5081109]
- fix(api): self-adapting dashboard layout for pruned components [bd12f36]
- chore(github): simplify issue/PR templates + add roadmap draft [24feded]
- chore(dev): per-run nf-core validation harness and route inventories [e24450e]
- fix(viralrecon): coverage cards use average instead of median [0de23e6]
- feat(viralrecon): nanopore/ARTIC route support [31af9ed]
- feat(ampliseq): metadata-agnostic dashboard with SIDLE and skip_qiime routes [a98deab]
- fix(multiqc): tolerate FastQC alpha-channel colorscales [130a21c]
- fix(dashboards): hide components for unparsed MultiQC modules and metadata-only tabs [6577fda]
- feat(viewer): clickable project badges link to project detail [421fbdc]
- refactor(viewer): project-detail tabs, sortable DC table, filterable links [38cd8dd]
- feat(viewer): ingestion report panel and dashboard health banner [f2eee8c]
- feat(react-core): ingestion report API client and types [4bc390c]
- feat(api): ingestion report and health endpoints [13bf343]
- feat(templates): route-conditional DC source overrides + expected-DC manifest [48345c5]
- feat(cli): --dashboard-name override and multiregion params introspection [075a148]
- feat(nf-core): self-adapting dashboards for pipeline-option variability [ae89286]
- fix(deltatables): load full frame when schema read fails in _project_scan [310b4c5]
- test(deltatables): guard cross-DC link filters against column projection [010c8a6]
- perf(deltatables): column projection for figures/cards + Delta schema cache [33263d7]
- feat(nf-core): generalize ampliseq/viralrecon templates to real pipeline output [94198a7]
- perf(api): make render offload adaptive instead of blanket-on [4d2713c]
- perf(figure/multiqc/cache): Polars-native figures, downsample, resident report, Arrow IPC [dde9413]
- perf(api): offload rendering, raise worker concurrency, gzip, MultiQC 202 [370c184]
- docs(perf): add Gb-dataframe performance audit + roadmap [62d6034]
- feat(nf-core): put the validation result in the auto-PR title [d7e889b]
- refactor(nf-core): simplify generate_validation_runs.sh scripts (run_nextflow helper) [c51085e]
- fix(nf-core): harden generate_validation_runs scripts [64c9cc0]
- feat(nf-core): actually run recipes against the megatest, not just check paths [2e4e820]
- refactor(nf-core): one draft PR per pipeline drift via dynamic matrix [d6ccc1e]
- fix(nf-core): set persist-credentials false so the monitor can open its PR [228b9bc]
- ci(nf-core): add weekly release monitor with megatest drift report [173c867]
- feat(nf-core): add generalization validation scripts for viralrecon + ampliseq [f409a12]
- feat(viewer): show dashboard logo as card thumbnail fallback [06dec6b]
- fix(compose): share screenshots dir worker→backend + seed iris/penguins thumbnails [5dcd431]
- Update CHANGELOG.md for v1.0.1 [b7f2a43]
- Bump version: 1.0.1-b7 → 1.0.1 [7a6ad90]
- docs(compose): trim the quick-start file to essential comments [5572aa4]
- feat(devcontainer): seed only the iris reference project in Codespaces [88f8ed6]
- build(release): self-pin docker-compose.yaml to every version via bump2version [89009d3]
- feat(api): add DEPICTIO_SEED_PROJECTS allowlist to scope reference seeding [d51d476]
- Update CHANGELOG.md for v1.0.1-b7 [e29a27d]
- Bump version: 1.0.1-b6 → 1.0.1-b7 [790d6fd]
- perf(docker): split dependency + project layers so caching survives version bumps [0389729]
- Update CHANGELOG.md for v1.0.1-b6 [6a5a99a]
- Bump version: 1.0.1-b5 → 1.0.1-b6 [7630b55]
- simplify prod compose to a single light file + cache CI builds [776f19c]
- fix(quickstart): drop read_only rootfs on backend so admin bootstrap can write [47effbe]
- ci(quickstart): accept the viewer's / -> /dashboards redirect in smoke test [1da7104]
- Update CHANGELOG.md for v1.0.1-b5 [9b799e6]
- Bump version: 1.0.1-b4 → 1.0.1-b5 [aeda6a9]
- fix(quickstart): drop read_only rootfs on viewer so nginx can render its config [6bdb126]
- fix(devcontainer): force single-user auth mode deterministically [fd77ecb]
- fix(quickstart): make viewer conf.d tmpfs writable by the nginx user [a861229]
- Update CHANGELOG.md for v1.0.1-b4 [7ec27b6]
- Bump version: 1.0.1-b3 → 1.0.1-b4 [bb1b4ce]
- fix(quickstart): give the viewer a writable /etc/nginx/conf.d [202cb27]
- fix(devcontainer): bound service-readiness waits so postCreate can't hang [729dbc3]
- Update CHANGELOG.md for v1.0.1-b3 [a537310]
- Bump version: 1.0.1-b2 → 1.0.1-b3 [539b133]
- ci(quickstart): poll the viewer in smoke test instead of one eager curl [f09cd72]
- Update CHANGELOG.md for v1.0.1-b2 [3c3e414]
- fix(devcontainer): reliable Codespaces port forwarding + single-user + auto-open viewer [a15ffcb]
- Bump version: 1.0.1-b1 → 1.0.1-b2 [70de14e]
- fix(quickstart): let mongo start under cap_drop:[ALL] [24e64ba]
- Update CHANGELOG.md for v1.0.1-b1 [dbb9536]
- Bump version: 1.0.0 → 1.0.1-b1 [7721b7f]
- fix(quickstart): keep working creds in .env.example for CI/dev compose [850876c]
- ci(quickstart): also build arm64 for beta releases [372eafd]
- ci(quickstart): build arm64 only for stable releases [a4a7952]
- ci(quickstart): verify admin user + iris dashboard seeded in smoke test [aed39f8]
- ci(quickstart): add detailed sanity checks to the smoke test [13971e7]
- ci(quickstart): smoke-test that the published compose boots with no .env [3dc1191]
- fix(quickstart): auto-seed default admin in single-user mode [37106ee]
- fix(quickstart): zero-config
docker compose up -d+ multi-arch images [3c249ee] - Update CHANGELOG.md for v1.0.0 [db939b7]
- Bump version: 1.0.0-b9 → 1.0.0 [1749d98]
- chore(screenshots): drop legacy dash/static screenshots (relocated to api/static on main) [cdfc73d]
- Update CHANGELOG.md for v1.0.0-b9 [89b63dc]
- Bump version: 1.0.0-b8 → 1.0.0-b9 [0ee3c1b]
- chore(screenshots): regenerate reference dashboard thumbnails [b801f22]
- fix(multiqc): drop matplotlib dep from general-stats colormap [d15ce24]
- style(catalog): apply ruff format to payload.py + catalog cli (fix CI quality) [2694fc5]
- feat(catalog cli): serve preview/gallery ephemerally by default, --out to export [d43e9d9]
- feat(catalog): per-module MultiQC, full fixtures, and preview render fixes [ae10d71]
- Update CHANGELOG.md for v1.0.0-b8 [5933db2]
- Bump version: 1.0.0-b7 → 1.0.0-b8 [03c2e0a]
- feat(catalog): catalog-preview feature reconciled onto main's catalog foundation [a05e9cc]
- test(catalog): invoke moved maintainer commands via the dev app [651ef00]
- feat(cli): add
depictio commandsgrouped reference table [900caaa] - refactor(cli): move the data link subgroup under the hidden dev group [8e4ec38]
- refactor(cli): move catalog match/compose to the hidden dev group [eb56367]
- refactor(cli): slim the user-facing command surface [253f961]
- fix(cli): catch typer.Exit in recipe_run so dc_ref standalone skip exits 0 [10141a3]
- chore(ci): bump the github-actions group across 1 directory with 15 updates [049a0ef]
- chore(deps): bump the static-tooling group across 1 directory with 2 updates [f4a821e]
- feat(cli): drop redundant Name column from catalog list [aa2e824]
- feat(cli): clearer
catalog list(split Tool id / Name + info hint) [1ed1137] - feat(api): re-export admin agent config on every dev-mode boot [4120ef2]
- feat(cli): drop the tip line from the startup banner [f322086]
- chore(cli): bump depictio/cli deps, fix python-jose CVEs [8f4b721]
- feat(cli): redesign startup banner with the depictio favicon [7791347]
- fix(cli): don't force ANSI on piped output (breaks backup CI grep) [b51deed]
- refactor(cli): presentation sweep + parallel image uploads [091936f]
- refactor(cli): improve performance, presentation & logging consistency [d8f58a1]
- fix(deltatables): accept pandas 3.0 string dtype ("str") in column specs [e3eebe1]
- fix(deps): hold redis at 5.2.1 — redis-py 8.0 starves the API event loop [de6b13a]
- ci(debug): dump full backend logs when ingestion creates no deltatables [cd03fef]
- fix(devcontainer): drop dangling docker-compose.minio.yaml reference [4b7af98]
- chore(deps): include data-layer majors (deltalake/pandas/polars/multiqc) [0d08b39]
- chore(deps): Phase B — bump runtime dependencies [69fda45]
- fix(devcontainer): harmonize MinIO credentials across worktree env layers (#802) [e0259d7]
- feat(advanced-viz builder): richer bindings UX + sankey/heatmap binding fixes [0a94fa6]
- Rework advanced-viz suggestion model into graded, tolerant scoring [8332e5c]
- chore(deps): Phase A — bump static analysis & test tooling (#799) [11790aa]
- Update CHANGELOG.md for v1.0.0-b7 [1d9d326]
- Bump version: 1.0.0-b6 → 1.0.0-b7 [dbafca9]
- fix(viewer): tab menu refresh + icon handling in tab/dashboard modals (#795) [d40615a]
- Remove producers.py suggestion engine + migrate ampliseq complex_heatmap tiles to use: (#797) [edcbdb8]
- fix(screenshots): install sans-serif fonts in worker image + settle before capture (#794) [203b6fc]
- feat(helm): migrate MongoDB HA from Community Operator to Percona PSMDB Operator (#792) [1f67a28]
- Enable project export in public & demo mode (#793) [4ae6328]
- Update CHANGELOG.md for v1.0.0-b6 [a18e98f]
- Bump version: 1.0.0-b5 → 1.0.0-b6 [4ffb2bc]
- fix(auth): multi-replica key-wipe race breaking dev-demo ingestion + React default-thumbnail fallback (#791) [f6c8015]
- Bump version: 1.0.0-b4 → 1.0.0-b5 [34b2df7]
- Helm chart: viewer startup order, MongoDB Community Operator HA, resource rebalance (#788) [3f706ba]
- Bump version: 1.0.0-b3 → 1.0.0-b4 [673f98d]
- fix(demo): restore public reference dashboards + keep temp users for the session (#789) [aa21cc7]
- Parallel React frontend + Playwright e2e (auth + dashboards-management slice) (#782) [0bc881a]
- feat(catalog): module-granular bioinformatics tool→viz catalog (nf-core/bio.tools/EDAM) (#783) [a627784]
- Bump version: 1.0.0-b2 → 1.0.0-b3 [7c8ec4a]
- fix(rate-limit): use X-Real-IP instead of TCP source for per-user buckets (#787) [fe32362]
- Revert "fix(rate-limit): use X-Real-IP instead of TCP source for per-user buckets" [a9b2454]
- fix(rate-limit): use X-Real-IP instead of TCP source for per-user buckets [9cead7a]
- fix(helm): align celery worker image tag to 1.0.0-b2 [be91503]
- Update CHANGELOG.md for v1.0.0-b2 [227b7d6]
- Bump version: 1.0.0-b1 → 1.0.0-b2 [843b709]
- fix(settings): relax password constraints for usability (#786) [d19fbef]
- Remove -beta suffix from React routes (Dash→React cutover) (#785) [f25f03b]
- Update CHANGELOG.md for v1.0.0-b1 [4d616ed]
- fix(bump): correct SKIP hook ID after dash removal [0bab463]
- Bump version: 0.13.12 → 1.0.0-b1 [ff96f99]
- sec(pr1): land CRITICAL + HIGH security fixes (excl. cookie migration) (#779) [3ca5f91]
- Fix tab three-dots menu triggering URL refresh in React viewer [63324dd]
- Update CHANGELOG.md for v0.13.12 [99ad150]
- Bump version: 0.13.11 → 0.13.12 [2d25a37]
- fix(filters): cross-DC link filter uses join column, not filter column (#777) [0ac305d]
- Update CHANGELOG.md for v0.13.11 [1537c44]
- Bump version: 0.13.10 → 0.13.11 [55f3cbb]
- 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