Skip to content

Releases: hypertrial/data-control-center

1.1.2

Choose a tag to compare

@mattfaltyn mattfaltyn released this 01 Jul 10:51

Added

  • DuckDB view import restored: inspect and snapshot import now lists views alongside tables. Export runs with DuckDB enable_external_access=false (and allowed_directories for the snapshot output path) so views that only reference in-catalog data import correctly while definitions that read external files, attach other databases, or access the network are blocked. Disable with DCC_ENABLE_DUCKDB_VIEW_IMPORT=false for table-only mode.

Fixed

  • Re-selecting a dataset in the sidebar now invalidates cached profile, sample, and related queries so Columns, Samples, and Charts reflect current data instead of stale TanStack Query results.
  • Frontend dependencies upgraded to patched releases, resolving all npm audit findings.
  • Vite dev server pre-bundles heavy lazy-loaded deps at startup so first navigation to Columns/Charts/Query no longer triggers 504 (Outdated Optimize Dep) errors.
  • Backend dependencies upgraded (starlette, python-multipart, pydantic-settings, and transitive msgpack/pip) so Security Audit pip-audit passes in CI.
  • Added pytz dependency so timestamp-with-timezone columns sample correctly.

Full changelog: CHANGELOG.md

1.1.0

Choose a tag to compare

@mattfaltyn mattfaltyn released this 25 May 18:34

Upgrade from 1.0.0

  1. Update custom API clients: DuckDB inspect/import APIs use source_id (replaces upload_id).
  2. /api/saved-charts was removed; saved chart rows are dropped from local workspaces on next startup.
  3. Saved SQL snippets gain an optional description column; existing workspaces migrate in place on startup.
  4. Large datasets may rebuild profiles with sample-scoped metrics; the UI polls prepare jobs until ready.

Added

  • DuckDB open-from-disk for large local .duckdb files (POST /api/datasets/duckdb/open-local, pick-local native file picker), capabilities endpoint, searchable relation picker, and lazy per-relation row counts.
  • Saved SQL snippets now persist an optional description.

Fixed

  • Starlette upgraded to a patched release; token middleware uses the routed request path so malformed Host headers can no longer bypass X-DCC-Local-Token.
  • gitleaks CI install now verifies the release tarball SHA256 before installation.
  • DuckDB relation import now snapshots through a direct read-only connection to the source file so views that reference catalog-qualified names (e.g. oddsfox.schema.table in dbt-built databases) export correctly.
  • The local API token is generated once per backend process and reused for background job error redaction.
  • Profile refresh and DuckDB import jobs observe cancellation between expensive stages.

Changed

  • DuckDB inspect/import APIs use source_id (replaces upload_id). Default inspect is metadata-only (no per-table COUNT(*)).
  • Raised default browser upload limits to 2 GiB per file and per batch.
  • Upload and path registration now queue a single dataset_prepare background job per dataset.
  • Large files use Parquet metadata / bounded counts and sample-scoped null metrics.
  • Profiling honors configurable timeouts; prepare jobs report incremental progress.
  • Frontend profile loading polls jobs with exponential backoff and deduplicates profile queries across tabs.

Breaking

  • Removed unused /api/saved-charts endpoints. Existing local workspaces drop the dcc_saved_charts table on next startup.

1.0.0

Choose a tag to compare

@mattfaltyn mattfaltyn released this 20 May 08:53

[1.0.0] - 2026-05-20

Upgrade from 0.1.0

  1. Run make clean-local (or delete .dcc_workspace.duckdb) if you have an existing
    workspace from 0.1.0—the layout and profile cache format changed.
  2. Re-open datasets so profiles rebuild (first GET /profile may return
    PROFILE_NOT_READY; the UI polls jobs until ready).
  3. Custom Ask integrations must use POST /api/agent/ask/stream only (sync ask removed).

Breaking

  • Workspace DB: removed versioned migrations and DCC_WORKSPACE_BACKUP_BEFORE_MIGRATE; existing .dcc_workspace.duckdb files with incompatible dcc_* layouts require make clean-local (or manual delete).
  • Profile API: removed legacy fields potential_id_columns, potential_key_columns, primary_date_column; only structure_version: "v4" cache entries are served (stale cache is auto-deleted).
  • Agent Ask: removed synchronous POST /api/agent/ask; clients must use POST /api/agent/ask/stream (frontend: askAgentStream only).
  • Frontend: removed api.getProfile, exported api.waitForJob, and api.askAgent.

Added

  • docs/user-guide.md for product usage (data ingestion, profiles/jobs, SQL, Ask, shortcuts).
  • docs/RELEASE.md for maintainer release and tagging steps.
  • Root .env.example with commented high-signal DCC_* variables.
  • Frontend API type conformance tests (types.test.ts + src/api/__fixtures__/).
  • make check-ci for clean-room CI-parity validation (npm ci then make check).
  • useDatasetProfile hook and api.fetchDatasetProfile for async first-open profiling (PROFILE_NOT_READY + job polling).
  • Registry RLock coverage for concurrent count/unregister paths.
  • Hook unit tests for useDatasetProfile, useColumnsTable, useSqlResultsGrid, and useSqlHistory.

Changed

  • Frontend: removed the Overview tab; the app opens on Columns by default (/ redirects to /columns).
  • Frontend: removed the Quality tab; the header still shows the quality score, column flags and filters live on Columns, /quality redirects to /columns, and the profile-diff dialog was removed from the UI (API unchanged).
  • Frontend Columns: default table sort is column name ascending; distribution stats label standard deviation as STDEV (not σ).
  • Frontend Ask: focused chat workspace with hero on empty threads, context bar, collapsible history, compact composer, and tighter turn layout.
  • Frontend Ask agent: DCC_AGENT_SUMMARIZE_WITH_LLM defaults to true; summarization prompts request direct answers with deterministic fallbacks when the second LLM call fails.
  • Frontend Ask composer: compact sticky bar, Options popover (model, row limit, dataset scope by name), always-on suggested prompts, real turn timing summary, conversation list polish.
  • Frontend SQL workspace: active-dataset chip, consolidated toolbar, run selection, resizable editor/results split, collapsible schema rail, snippet templates, run timer chip, and editor shortcuts (⌘+Shift+F, ⌘+S).
  • Primary tab navigation uses route transitions; Columns and Samples tables use sticky headers.
  • Profiler histogram bins and column summary formatting improvements.
  • GET /api/datasets/{id}/profile no longer blocks on build_profile; returns PROFILE_NOT_READY with job_id when the cache is empty.
  • Upload/register queue profile refresh jobs; refresh endpoint dedupes active profile jobs.
  • Datasets API split into datasets_upload, datasets_profile, datasets_inspect, and datasets_jobs modules (URLs unchanged).
  • Ask persistence aligned with Workspace.ask (AskStore); agent workflow split into persistence/run modules.
  • Query tab: SqlEditor, SchemaDatasetBlock, and useSqlHistory extracted from QueryPage.
  • Sample rows API returns structured DuckDB error codes.
  • Backend tests reorganized under tests/api/, tests/profiler/, and tests/workspace/.
  • Frontend coverage baseline raised to 92% (lines/statements); types.ts excluded from v8 coverage (still validated via types.test.ts).
  • Workspace startup drops a legacy schema_version table when the current dcc_* schema validates (avoids requiring make clean-local after the migration removal).
  • Documentation reorganized: slim root README.md, tightened docs/5-minute-tour.md, authoritative tier READMEs, expanded SECURITY.md, contributor-focused CONTRIBUTING.md / AGENTS.md.
  • Dependency: idna 3.15 (addresses CVE-2026-45409 in 3.14).

Removed

  • README Screenshots section and wireframe SVGs under docs/images/.
  • Unused frontend/public/icons.svg marketing sprite.
  • Unused Label and Kbd UI primitives (and their tests).
  • Unused exports cardPadding and severityCssVar from tokens.ts, and chartGrid from chartTheme.ts.
  • Stale .streamlit/secrets.toml entry from .gitignore.
  • Frontend Quality tab UI (QualityPage, profile diff dialog, issue list page).