v0.18.0
What's Changed
- feat(cli): add /pages REPL namespace and derive tab order from registry by @omeryasirkucuk in #523
- feat(studio): saved-lineage dropdown + viewport-fit canvas + visible grid by @omeryasirkucuk in #524
- feat(pages): intent templates, lineage emission, PDF branding, cost tracking by @omeryasirkucuk in #525
- feat(studio): rescue post-AI-Generate Lineage UX by @omeryasirkucuk in #526
- feat(studio): post-AI-Generate lineage UX — floating edges, multi-add picker, column snap, name-match, new-lineage by @omeryasirkucuk in #527
- feat(storage): shared lineage tables foundation (PR-1 of history store team collab) by @omeryasirkucuk in #528
- feat(storage): documentation_pages db_profile + attribution + ALTER TABLE migrations (PR-2) by @omeryasirkucuk in #529
- feat(storage): workspace admin tables + identity bootstrap (PR-4) by @omeryasirkucuk in #530
- feat: admin CLI/API + permission middleware + em-dash hotfix (PR-6) by @omeryasirkucuk in #533
- feat(storage): optimistic concurrency control on concurrent-edit tables (PR-3) by @omeryasirkucuk in #531
- feat(storage): auto-backfill local lineage and pages to shared warehouse (PR-5) by @omeryasirkucuk in #532
- feat(studio): history-store team collaboration UX + workspace admin panel (PR-7+8) by @omeryasirkucuk in #534
- refactor(studio): consolidate team workspace controls under Settings > Team workspace tab by @omeryasirkucuk in #535
- feat(studio): team workspace role banner + catalog picker + Databricks bootstrap fixes by @omeryasirkucuk in #536
- feat(catalog): hard-limit skeleton-sync scope + cooperative cancellation by @omeryasirkucuk in #537
- feat(history): multi-profile inclusion in the shared history store by @omeryasirkucuk in #538
- feat(catalog): local-only comment override (POST /api/comments/local) by @omeryasirkucuk in #539
- fix(web): salvage table page when live introspector returns empty by @omeryasirkucuk in #540
- fix(web): scope-agnostic third-chance cache fallback for table page by @omeryasirkucuk in #541
- Surface lineage and pages in ASK by @omeryasirkucuk in #542
- perf(ask): trim tool-agent system prompt by ~20-30% per turn by @omeryasirkucuk in #543
- feat(web): Browse → AI Generate visibility, latency, and runs surfacing by @omeryasirkucuk in #544
- fix(web): bulk-run reachability pre-flight + RAG traceback diagnostics by @omeryasirkucuk in #545
- feat: remote code-asset ingestion (Snowflake + Databricks) by @omeryasirkucuk in #546
- fix(studio): show failures distinctly in ingest dialog completion banner by @omeryasirkucuk in #547
- fix(remote-assets): pass engine through connector for Snowflake list_remote_* calls by @omeryasirkucuk in #548
- feat(pages,ask): anchor pages on ingested remote assets + surface asset evidence in ASK by @omeryasirkucuk in #549
- feat(lineage): render ingested remote assets as canvas nodes by @omeryasirkucuk in #550
- feat(run): accept ingested assets as Run scope context by @omeryasirkucuk in #551
- feat(assets): chunked + embedded semantic RAG over ingested remote assets by @omeryasirkucuk in #552
- feat(assets): user-tunable per-kind chunking strategy for asset RAG by @omeryasirkucuk in #553
- feat(studio): unify embedding settings into one form (docs+code+assets) by @omeryasirkucuk in #554
- feat(studio): per-asset chunking override (row-level Chunk button) by @omeryasirkucuk in #555
- fix(studio): hide chunk_chars / overlap when strategy ignores them by @omeryasirkucuk in #556
- feat(assets): selective ingestion via browse-then-pick wizard by @omeryasirkucuk in #557
- feat(assets): path-as-identity disambiguates same-name assets (PR-B) by @omeryasirkucuk in #558
- feat(assets): pagination, substring filter, scale guards (PR-C) by @omeryasirkucuk in #559
- feat(assets): incremental embed (source_hash gate) (PR-D) by @omeryasirkucuk in #560
- feat(assets): lazy discover tree + pull-only ingest + Studio polish (PR-E) by @omeryasirkucuk in #561
- feat(assets): hybrid keyword+semantic search, lineage edges, soft 404 by @omeryasirkucuk in #562
- feat(ask): default Lineage/Pages/Assets to Off and add Assets toggle by @omeryasirkucuk in #563
- fix(cache): close two leaks that re-issued live queries without /refresh by @omeryasirkucuk in #564
- feat(ask): asset/lineage tools + end-to-end flag wiring + composer polish by @omeryasirkucuk in #565
- feat(lineage): Unity Catalog parity bundle + Runs asset picker polish by @omeryasirkucuk in #566
- fix(cache): purge tombstones + Sync all warms every cache table by @omeryasirkucuk in #567
- fix(apply): never lie about success - SAVEPOINT capability gate + outcome contract + cache-only audit by @omeryasirkucuk in #568
- fix(assets): SSE heartbeat, REPO listing, search-folders, per-catalog info_schema, strict cache-first sidebar by @omeryasirkucuk in #569
- fix(ask): safety net on tool loop — token budget, structured tool errors, visible warnings by @omeryasirkucuk in #570
- refactor(ask): explicit tool registry — kill implicit getattr dispatch by @omeryasirkucuk in #571
- refactor(ask): consolidated find_table dispatcher (internal, schema-gated) by @omeryasirkucuk in #572
- refactor(ask): extract token-budget helpers into pipeline module by @omeryasirkucuk in #573
- refactor(ask): extract chitchat detector into pure pipeline function by @omeryasirkucuk in #574
- refactor(ask): extract meta_query detector into pure pipeline function by @omeryasirkucuk in #575
- refactor(ask): extract followup_reaffirmation detector into pure pipeline function by @omeryasirkucuk in #576
- refactor(ask): extract compute_focus_profile to pipeline/focus.py by @omeryasirkucuk in #577
- refactor(ask): extract looks_partial check to pipeline/tool_results.py by @omeryasirkucuk in #578
- fix: cache-first columns + comments, durable sync, cache-first apply, sidebar chevron by @omeryasirkucuk in #579
- fix(ask): don't report unsynced-column tables as empty in describe_table by @omeryasirkucuk in #580
- fix(ask): _safe_json truncation must always emit valid JSON by @omeryasirkucuk in #581
- fix(ask): don't report cached row_count=0 as an empty table by @omeryasirkucuk in #582
- fix(search): vector index failure must not block catalog metadata sync by @omeryasirkucuk in #583
- feat(studio): show synced row count on the Table detail page by @omeryasirkucuk in #584
- feat(studio): Deep sync — opt-in full profile (columns + row counts) by @omeryasirkucuk in #585
- docs(spec): shared catalog design by @omeryasirkucuk in #586
- feat(storage): add shared catalog_entities table (schema foundation) by @omeryasirkucuk in #587
- feat(storage): wire shared-catalog push/backfill/pull by @omeryasirkucuk in #588
- fix(studio): cache-first table snapshot + exact row counts on Databricks by @omeryasirkucuk in #589
- feat(studio): per-table Deep sync button on the Table page by @omeryasirkucuk in #590
- fix(studio): deep_sync_one_table never raises — surface a clean error by @omeryasirkucuk in #591
- feat: deep option for scheduled cache refresh (CLI + Studio) by @omeryasirkucuk in #592
- feat: auto-generation — scheduled missing-only description generation by @omeryasirkucuk in #594
- docs(spec): unified embedding-model management design by @omeryasirkucuk in #595
- feat(embeddings): single resolution authority with honest fallback signal by @omeryasirkucuk in #596
- feat(embeddings): status reports configured-vs-running + needs_rebuild by @omeryasirkucuk in #597
- feat(embeddings): health panel + one-call rebuild for every store by @omeryasirkucuk in #598
- feat(embeddings): /embeddings status + rebuild on a shared health authority by @omeryasirkucuk in #599
- feat(catalog): record first_synced_at so new assets can be detected by @omeryasirkucuk in #600
- feat(scheduler): change-triggered schedules fire when new assets appear by @omeryasirkucuk in #601
- feat(studio): create change-triggered schedules from the Schedules page by @omeryasirkucuk in #602
- fix(scheduler): scheduled-run apply writeback + column-scope no longer regenerates parents by @omeryasirkucuk in #603
- fix(scheduler): per-table Deep sync fires watchers; missing-only leaves commented tables alone by @omeryasirkucuk in #604
- feat(docs): Reindex button + chromadb ef-name fix + coherent index status by @omeryasirkucuk in #605
- refactor(docs,code): collapse settings actions to Index + Active by @omeryasirkucuk in #606
- feat(lineage): native database lineage fetch (Databricks UC) by @omeryasirkucuk in #607
- feat(lineage): lean buckets + asset drill-in + content ingest by @omeryasirkucuk in #608
- fix(lineage): directional layout + notebook names + perf + handle fix by @omeryasirkucuk in #609
- fix(lineage): remove full-workspace scan (fetch was ~9 min) by @omeryasirkucuk in #610
- fix(lineage): lazy column load on expand (cache-first, else source) by @omeryasirkucuk in #611
- fix(lineage): lean grouped layout + robust expand by @omeryasirkucuk in #612
- fix(lineage): native-only edges + clean table-level + nested expand by @omeryasirkucuk in #613
- fix(lineage): native fetch — disable column lineage, edge arrows, profile search, bucket child edges, render-free save by @omeryasirkucuk in #614
- fix(lineage): native fetch picker — full-tree search (schema/table/column) by @omeryasirkucuk in #615
- feat(lineage): Databricks-style canvas, compact layout, real notebook names + fetch progress by @omeryasirkucuk in #616
- feat(mcp): expose AMX catalog to IDE code agents over MCP by @omeryasirkucuk in #617
- feat(lineage): native lineage asset resolution — real names, click-to-open, deep-links by @omeryasirkucuk in #618
- fix(lineage): notebook names via persisted index + working Databricks deep-links by @omeryasirkucuk in #619
- feat(lineage): lineage assets become first-class AMX artifacts (drop deep-link workaround) by @omeryasirkucuk in #620
- feat(lineage): canvas-free lineage neighbours in RUN and ASK by @omeryasirkucuk in #621
Full Changelog: v0.17.0...v0.18.0