Releases: hypertrial/data-control-center
Releases · hypertrial/data-control-center
Release list
1.1.2
Added
- DuckDB view import restored: inspect and snapshot import now lists views alongside tables. Export runs with DuckDB
enable_external_access=false(andallowed_directoriesfor 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 withDCC_ENABLE_DUCKDB_VIEW_IMPORT=falsefor 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 auditfindings. - 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 transitivemsgpack/pip) so Security Auditpip-auditpasses in CI. - Added
pytzdependency so timestamp-with-timezone columns sample correctly.
Full changelog: CHANGELOG.md
1.1.0
Upgrade from 1.0.0
- Update custom API clients: DuckDB inspect/import APIs use
source_id(replacesupload_id). /api/saved-chartswas removed; saved chart rows are dropped from local workspaces on next startup.- Saved SQL snippets gain an optional
descriptioncolumn; existing workspaces migrate in place on startup. - Large datasets may rebuild profiles with sample-scoped metrics; the UI polls prepare jobs until ready.
Added
- DuckDB open-from-disk for large local
.duckdbfiles (POST /api/datasets/duckdb/open-local,pick-localnative 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
Hostheaders can no longer bypassX-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.tablein 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(replacesupload_id). Default inspect is metadata-only (no per-tableCOUNT(*)). - Raised default browser upload limits to 2 GiB per file and per batch.
- Upload and path registration now queue a single
dataset_preparebackground 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-chartsendpoints. Existing local workspaces drop thedcc_saved_chartstable on next startup.
1.0.0
[1.0.0] - 2026-05-20
Upgrade from 0.1.0
- 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. - Re-open datasets so profiles rebuild (first
GET /profilemay return
PROFILE_NOT_READY; the UI polls jobs until ready). - Custom Ask integrations must use
POST /api/agent/ask/streamonly (sync ask removed).
Breaking
- Workspace DB: removed versioned migrations and
DCC_WORKSPACE_BACKUP_BEFORE_MIGRATE; existing.dcc_workspace.duckdbfiles with incompatibledcc_*layouts requiremake clean-local(or manual delete). - Profile API: removed legacy fields
potential_id_columns,potential_key_columns,primary_date_column; onlystructure_version: "v4"cache entries are served (stale cache is auto-deleted). - Agent Ask: removed synchronous
POST /api/agent/ask; clients must usePOST /api/agent/ask/stream(frontend:askAgentStreamonly). - Frontend: removed
api.getProfile, exportedapi.waitForJob, andapi.askAgent.
Added
docs/user-guide.mdfor product usage (data ingestion, profiles/jobs, SQL, Ask, shortcuts).docs/RELEASE.mdfor maintainer release and tagging steps.- Root
.env.examplewith commented high-signalDCC_*variables. - Frontend API type conformance tests (
types.test.ts+src/api/__fixtures__/). make check-cifor clean-room CI-parity validation (npm cithenmake check).useDatasetProfilehook andapi.fetchDatasetProfilefor async first-open profiling (PROFILE_NOT_READY+ job polling).- Registry
RLockcoverage for concurrent count/unregister paths. - Hook unit tests for
useDatasetProfile,useColumnsTable,useSqlResultsGrid, anduseSqlHistory.
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,
/qualityredirects 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_LLMdefaults totrue; 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}/profileno longer blocks onbuild_profile; returnsPROFILE_NOT_READYwithjob_idwhen 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, anddatasets_jobsmodules (URLs unchanged). - Ask persistence aligned with
Workspace.ask(AskStore); agent workflow split into persistence/run modules. - Query tab:
SqlEditor,SchemaDatasetBlock, anduseSqlHistoryextracted fromQueryPage. - Sample rows API returns structured DuckDB error codes.
- Backend tests reorganized under
tests/api/,tests/profiler/, andtests/workspace/. - Frontend coverage baseline raised to 92% (lines/statements);
types.tsexcluded from v8 coverage (still validated viatypes.test.ts). - Workspace startup drops a legacy
schema_versiontable when the currentdcc_*schema validates (avoids requiringmake clean-localafter the migration removal). - Documentation reorganized: slim root
README.md, tighteneddocs/5-minute-tour.md, authoritative tier READMEs, expandedSECURITY.md, contributor-focusedCONTRIBUTING.md/AGENTS.md. - Dependency:
idna3.15 (addresses CVE-2026-45409 in 3.14).
Removed
- README Screenshots section and wireframe SVGs under
docs/images/. - Unused
frontend/public/icons.svgmarketing sprite. - Unused
LabelandKbdUI primitives (and their tests). - Unused exports
cardPaddingandseverityCssVarfromtokens.ts, andchartGridfromchartTheme.ts. - Stale
.streamlit/secrets.tomlentry from.gitignore. - Frontend Quality tab UI (
QualityPage, profile diff dialog, issue list page).