Skip to content

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 15 May 08:14
· 596 commits to main since this release

What's Changed

  • feat(studio): paged Compare picker + modal result + PDF export by @omeryasirkucuk in #264
  • fix(compare): auto-detect brew Pango/Cairo so PDF export works on macOS by @omeryasirkucuk in #265
  • fix(compare): match Studio modal palette in PDF + silence pango stderr by @omeryasirkucuk in #266
  • feat(compare): brand the PDF with the AMX logo on every page by @omeryasirkucuk in #267
  • feat(compare): wire Compare to Ask AMX (CLI tool + modal hand-off) by @omeryasirkucuk in #268
  • feat(compare): academic text-quality metric framework (Tier 0/1/2) by @omeryasirkucuk in #269
  • fix(compare): close three quality-framework gaps left by #269 by @omeryasirkucuk in #270
  • chore(wording): drop 'paid' from every tracked surface by @omeryasirkucuk in #271
  • chore(compare): compact methods footer in CLI + Studio by @omeryasirkucuk in #272
  • fix(ask): drop into sticky ask> REPL after a seeded one-shot by @omeryasirkucuk in #273
  • fix(studio-ask): auto-submit the seed prompt on Compare hand-off by @omeryasirkucuk in #274
  • fix(logging): keep amx.* INFO/DEBUG out of the user's terminal by @omeryasirkucuk in #275
  • fix(deps): pin transformers>=4.56 in extras + runtime guard by @omeryasirkucuk in #276
  • fix(runs): pick the analyze.run label from scope, not a fixed string by @omeryasirkucuk in #277
  • fix(quality): drop the length-appropriateness metric by @omeryasirkucuk in #278
  • feat(runs): kind filter chips + drop Ask sessions from compare by @omeryasirkucuk in #279
  • feat(studio): bridge LiveDisplay step events into the run-detail SSE by @omeryasirkucuk in #280
  • fix(runs): demote successful runs with no applied to ready_for_review by @omeryasirkucuk in #281
  • feat(studio): per-run LLM fine-tuning overrides on /runs/new by @omeryasirkucuk in #282
  • fix(studio): compact RunNew override disclosure + pre-fill from profile by @omeryasirkucuk in #283
  • fix(agents): merge step honours description_verbosity instead of collapsing to one sentence by @omeryasirkucuk in #284
  • fix(studio): live progress now shows what the worker is doing + how long by @omeryasirkucuk in #285
  • fix(studio): cost-override default chip shows live LiteLLM/OpenRouter price by @omeryasirkucuk in #286
  • feat(studio): canonical AMX brand mark in the topbar + run-page polish by @omeryasirkucuk in #287
  • fix(agents): alternative descriptions honour description_verbosity preset by @omeryasirkucuk in #288
  • fix(studio): pin Footer to the viewport bottom by @omeryasirkucuk in #289
  • feat(cli): adapt brand palette to light terminal backgrounds by @omeryasirkucuk in #290
  • fix(studio): stop amx.* INFO/DEBUG flooding the launching terminal by @omeryasirkucuk in #291
  • fix: bug fixing batch (python-multipart, pricing SSL on Windows) by @omeryasirkucuk in #292
  • feat(pricing): browse and pick prices for any LLM model from Studio + CLI by @omeryasirkucuk in #293
  • feat(studio): show input/output rates under the active LLM in the sidebar by @omeryasirkucuk in #294
  • fix(studio): per-step elapsed timer on the Live progress card by @omeryasirkucuk in #295
  • fix(tests): restore propagate on every amx.* logger after Studio mute test by @omeryasirkucuk in #297
  • feat(install): single-step install with Studio + DuckDB in core by @omeryasirkucuk in #296
  • fix(ssl): consult the OS trust store so corporate-proxy networks work out of the box by @omeryasirkucuk in #298
  • fix(pricing): legible toast when OpenRouter is blocked at the network layer by @omeryasirkucuk in #299
  • fix(pricing): match catalog keys by bare-model suffix when provider field is wrong by @omeryasirkucuk in #301
  • fix(doctor): empty config is FAIL, not OK, and survives --skip-network by @omeryasirkucuk in #302
  • fix(studio): expose Databricks TLS fields in the Add-profile form by @omeryasirkucuk in #303
  • fix(cli): skip eager embeddings-module import for default-MiniLM users by @omeryasirkucuk in #304
  • feat(studio): make collapsed-sidebar icons clickable to re-open the panel by @omeryasirkucuk in #305
  • build(deps-dev): bump @types/node from 22.19.17 to 22.19.18 in /frontend in the npm-deps group by @dependabot[bot] in #300
  • fix(databricks-tls): neutral wording on Skip-TLS, add Studio info hint by @omeryasirkucuk in #306
  • fix(db): correctness sweep across backend adapters by @omeryasirkucuk in #307
  • feat(db): TLS controls across all backends + profile schema source of truth by @omeryasirkucuk in #308
  • feat(db): approximate distinct counts on metered backends by @omeryasirkucuk in #309
  • feat(db): UX polish + DuckDB / BigQuery extras + shared-history banner by @omeryasirkucuk in #310
  • docs(readme): rewrite hero, add intro video, restructure sections by @omeryasirkucuk in #311
  • docs(readme): hide video filename header, swap ASCII flow for amx-flow.png by @omeryasirkucuk in #312
  • docs(readme): add AMX CLI heading, rename Studio header, fix /studio usage by @omeryasirkucuk in #313
  • feat(installer): polished spinner UX + Studio progress banner for on-demand extras by @omeryasirkucuk in #314
  • feat(db): column-comments cache foundation (CLI + Studio) by @omeryasirkucuk in #315
  • feat(db): bulk schema metadata across 10 backends + refresh UX by @omeryasirkucuk in #316
  • fix(studio): InstallBanner EventSource churn was crashing the SPA on first paint by @omeryasirkucuk in #317
  • fix(cli): honour pinned catalog without re-prompting on every run by @omeryasirkucuk in #318
  • feat(db): cache the asset list and per-schema metadata (not just column comments) by @omeryasirkucuk in #319
  • fix(studio): stop CLI spinner leak + raise Databricks retry budget by @omeryasirkucuk in #320
  • fix(studio): sidebar honours pinned catalog/database from the profile by @omeryasirkucuk in #321
  • feat(studio): offline fallback page when the AMX CLI stops by @omeryasirkucuk in #322
  • fix(studio): show the AMX Studio logo on the offline page by @omeryasirkucuk in #323
  • fix(studio): offline page favicon + Try-reconnecting now actually probes the CLI by @omeryasirkucuk in #324
  • fix(studio): DB profile delete + edit reflect everywhere without a page reload by @omeryasirkucuk in #325
  • fix(scope): respect the schema-level pin (Databricks/BigQuery) everywhere by @omeryasirkucuk in #326
  • feat(runs): show the actual asset on Runs list + Compare picker by @omeryasirkucuk in #327
  • fix(llm): flatten list-shaped Message.content directly on the class by @omeryasirkucuk in #328
  • fix(runs): cancel reaches the next LLM call + final status reflects reality by @omeryasirkucuk in #329
  • feat(style): writing-style reference for descriptions by @omeryasirkucuk in #330
  • docs: link README hero video to YouTube by @omeryasirkucuk in #331
  • docs: inline README hero video from repo assets by @omeryasirkucuk in #332
  • docs: switch README hero to YouTube thumbnail link by @omeryasirkucuk in #333
  • docs: add play-button overlay to README video thumbnail by @omeryasirkucuk in #334
  • feat(rag): observability + error surfacing (PR A of 4) by @omeryasirkucuk in #335
  • feat(rag): storage correctness — embedding provider + idempotency (PR B of 4) by @omeryasirkucuk in #336
  • feat(rag): citation chain (PR C of 4) by @omeryasirkucuk in #337
  • feat(rag): stability + perf (PR D of 4 — final) by @omeryasirkucuk in #338
  • feat(studio): RAG UX polish (PR E of RAG hardening) by @omeryasirkucuk in #339
  • feat(code): Studio code surface fix (PR alpha of code-RAG hardening) by @omeryasirkucuk in #340
  • feat(code): storage correctness — embedding provider + idempotency + filters (PR beta) by @omeryasirkucuk in #341
  • feat(code): citation chain (PR gamma of code-RAG hardening) by @omeryasirkucuk in #342
  • feat(code): stability + perf + UI (PR delta of code-RAG hardening — final) by @omeryasirkucuk in #343
  • feat(review): filter/search/sort/group + status chips (PR A of bulk-review UX) by @omeryasirkucuk in #344
  • feat(review): selection + bulk + pagination + URL state + keynav (PR B of bulk-review UX) by @omeryasirkucuk in #345
  • feat(review): column-level compare (PR C of bulk-review UX — final) by @omeryasirkucuk in #346
  • fix(studio): pinned-cells drawer reads every bucket by @omeryasirkucuk in #347
  • fix(studio): doc upload sends Bearer token by @omeryasirkucuk in #348
  • fix: code-analyze resilience for missing tables + SQLite locks + sqlglot noise by @omeryasirkucuk in #349
  • feat(docs): show file inventory under doc profile (Studio + CLI) by @omeryasirkucuk in #350
  • fix(cli): auto-reload config when disk is newer than in-memory copy by @omeryasirkucuk in #351
  • feat(docs): preserve original filename for uploaded docs (Studio + CLI) by @omeryasirkucuk in #352
  • fix(studio): restore stdin tty mode after /studio exits by @omeryasirkucuk in #353
  • fix(studio): stronger stdin restore — blocking flag + drain by @omeryasirkucuk in #354
  • fix(studio): run uvicorn in a subprocess for full isolation by @omeryasirkucuk in #355
  • fix(studio): triple-layer defense against Ctrl+C terminal freeze by @omeryasirkucuk in #357
  • feat(studio): phone-first responsive shell by @omeryasirkucuk in #356
  • fix(studio): fast child shutdown + AMX_CONFIG_DIR env var by @omeryasirkucuk in #358
  • fix(studio): silent Ctrl+C path + loop-aware fast shutdown by @omeryasirkucuk in #359
  • fix(config): prevent reload_if_stale autosave race that wiped profile dicts by @omeryasirkucuk in #360
  • fix(config): rolling backup + /restore-config recovery command by @omeryasirkucuk in #361
  • fix(config): refuse to save when in-memory state is inconsistent by @omeryasirkucuk in #362
  • fix(studio): replace native confirm() with AlertDialog for profile deletes by @omeryasirkucuk in #363
  • fix(config): remove_db_profile / remove_llm_profile resurrection via mid-removal autosave by @omeryasirkucuk in #364
  • feat(style): cascading reference-table picker + softer Runs warning by @omeryasirkucuk in #365
  • fix(studio): bootstrap history-store singleton in subprocess by @omeryasirkucuk in #366
  • fix(studio): drop half-formed RunNew scope when active profile has no pin by @omeryasirkucuk in #367
  • feat(docs): fix PDF ingest + per-file delete from doc profile by @omeryasirkucuk in #368
  • feat(ask): delete sessions + doc/code profile picker by @omeryasirkucuk in #369
  • fix(codebase): IndexError on /code-scan with empty asset list by @omeryasirkucuk in #370
  • fix(rag): drop weakly-matching doc chunks before they reach the LLM by @omeryasirkucuk in #371
  • fix(ask): surface a useful diagnostic instead of bare "(empty response)" by @omeryasirkucuk in #372
  • feat(ask): inline LLM picker next to scope chip, synced with sidebar by @omeryasirkucuk in #373
  • fix(code): hybrid rerank for /code-search so literal matches outrank embedding noise by @omeryasirkucuk in #374
  • fix(ask): cross-database fanout for find_table_by_name + describe_table on unpinned 2-level profiles by @omeryasirkucuk in #375
  • feat(ask): cache-first metadata lookup — catalog → 24h cache → live by @omeryasirkucuk in #376
  • feat(scheduler): phase 0 — parallel-run preflight + advisory lock helper by @omeryasirkucuk in #377
  • feat(scheduler): land phases 1a-5b on main (stacked merge follow-up) by @omeryasirkucuk in #386
  • feat(scheduler): visual polish + picker-based selection in Studio and CLI by @omeryasirkucuk in #387
  • feat(scheduler): /analyze schedule tab style + Studio /runs/schedules + responsive + tables picker by @omeryasirkucuk in #388
  • feat(scheduler): cascading scope tree (Profile->Database->Schema->Table->Column) by @omeryasirkucuk in #389
  • feat(runs): /api/runs accepts column_overrides body field by @omeryasirkucuk in #390
  • feat(runs): RunNew adopts ScopeTree component (Stage 2) by @omeryasirkucuk in #391
  • fix(scope): ScopeTree reads correct schemas/assets/columns shapes by @omeryasirkucuk in #392
  • feat(runs): multi-profile selection on /runs/new (frontend fan-out) by @omeryasirkucuk in #393
  • feat(scheduler): real Orchestrator drive for scheduled runs by @omeryasirkucuk in #394
  • feat(scheduler): plumb column-scope picks into orchestrator.column_overrides by @omeryasirkucuk in #395
  • feat(cli): /analyze run --columns flag (non-interactive Column scope) by @omeryasirkucuk in #396
  • fix(studio): PageHeader stacks on mobile; Schedules daemon chip hides on xs by @omeryasirkucuk in #397
  • feat(history): show every picked asset in Runs/Detail; persist column_overrides by @omeryasirkucuk in #398
  • feat(studio): schedule edit dialog + one-click daemon install/uninstall by @omeryasirkucuk in #399
  • fix(studio): add /__alive liveness probe outside the token-gated paths by @omeryasirkucuk in #400
  • fix(studio): live missed-banner + Schedule kind chip + past-date guard by @omeryasirkucuk in #401
  • fix(scheduler): heartbeat ticker so long scheduled runs don't get false-failed by @omeryasirkucuk in #402
  • fix(scheduler): daemon invokes python -m amx.scheduler; SPA polls by @omeryasirkucuk in #403
  • fix(scheduler): unbuffered daemon logs + PATH; start-of-tick marker by @omeryasirkucuk in #404
  • feat(scheduler): all-OS daemon support + Studio-resident ticker by @omeryasirkucuk in #405
  • fix(ui): Dialog now scrolls on small viewports across every size by @omeryasirkucuk in #406
  • fix(scheduler): persist database/catalog overlay on scheduled_runs by @omeryasirkucuk in #407
  • feat(ask): visible-content streaming + cancel UX + table-name lookup priority by @omeryasirkucuk in #408
  • feat(ask): real cancellation + instant state reactions by @omeryasirkucuk in #409
  • fix(studio): SPA self-recovers from a stale bearer token after Studio restart by @omeryasirkucuk in #410
  • fix(ask): cancelled streams no longer trip the 'Couldn't reach the LLM' banner by @omeryasirkucuk in #411
  • feat(ask): cancelled turns show a persistent Cancelled pill by @omeryasirkucuk in #412
  • fix(ask): doc and code profile pickers default to None by @omeryasirkucuk in #413
  • feat(catalog): post-apply sync + drift probe + FTS5 + freshness pill by @omeryasirkucuk in #414
  • fix(catalog): freshness pill updates, dropdown outside-click, sidebar cache-first by @omeryasirkucuk in #415
  • feat(catalog): explicit completeness gate + skeleton sync + progress UI + agent honesty by @omeryasirkucuk in #416
  • fix(catalog): drop ghost profiles + treat zero-table sync as failure by @omeryasirkucuk in #417
  • fix(catalog): scope skeleton sync + cache by (profile, database) by @omeryasirkucuk in #418
  • fix(runs): seed New Run selections when scope arrives via URL by @omeryasirkucuk in #419
  • feat(db): explicit cache management — /db cache-{show,stats,clear} + Studio page by @omeryasirkucuk in #420
  • feat(schedules): ready_for_review demotion + Schedule Detail dialog by @omeryasirkucuk in #421
  • feat(confidence): per-alternative confidence scoring — Phase 1 (Signals A + C) by @omeryasirkucuk in #422
  • feat(confidence): Signal B — LLM self-declaration per alternative (Phase 2) by @omeryasirkucuk in #423
  • feat(confidence): Signal D LLM-as-judge + /history eval-confidence harness (Phases 3 & 4) by @omeryasirkucuk in #424
  • fix(confidence): default use_self_decl=True in YAML loader + per-alt badge in RunDetail by @omeryasirkucuk in #425
  • feat(storage): dogfood metadata standard on local SQLite history by @omeryasirkucuk in #426
  • refactor(confidence): user-selected single signal + carousel regression fix by @omeryasirkucuk in #427
  • feat(studio): stability-first error surface + self-hosted fonts by @omeryasirkucuk in #428
  • fix(confidence): carry suggestion_scores through merge / generate / rerun paths by @omeryasirkucuk in #429
  • fix(studio): pending-entry alternatives accept structured shape (carousel regression) by @omeryasirkucuk in #430
  • fix(studio): per-alternative pills survive the click into pending state by @omeryasirkucuk in #432
  • fix(history): list_apply_events delegate on DualWriteHistoryStore by @omeryasirkucuk in #431
  • fix(studio): clicking the chosen alternative deselects it by @omeryasirkucuk in #433
  • fix(studio): web runs beat heartbeat so stale-recovery skips them by @omeryasirkucuk in #434
  • fix(studio): audit captures auto-apply events; move Audit out of top navbar by @omeryasirkucuk in #435
  • fix(studio): announce worker phases and anchor live progress timer to started_at by @omeryasirkucuk in #436
  • fix(history): partial apply rolls run status + applied_count + audit events forward by @omeryasirkucuk in #438
  • fix(history): count review/partial-applied runs toward success rate by @omeryasirkucuk in #439
  • chore(history): backfill chosen_description on non-interactive apply paths by @omeryasirkucuk in #440
  • feat(llm): alternatives_mode — semantic vs lexical diversity by @omeryasirkucuk in #441
  • feat(search): data-touching joinable_tables strategies + stale-catalog rescue by @omeryasirkucuk in #442
  • feat(studio): show full N-alternatives + mode in Compare runs view by @omeryasirkucuk in #443
  • fix(llm): realign alternatives_mode to Definition 1 (NLP standard) by @omeryasirkucuk in #444
  • feat(cli): override picker parity — add alternatives_mode + confidence_signal by @omeryasirkucuk in #445
  • docs(readme): early-stage notice, AI-assisted disclosure, refreshed Studio screenshot by @omeryasirkucuk in #446
  • chore: add GitHub issue templates by @omeryasirkucuk in #447
  • Variations + Re-Run modal parity, hard n-alternatives, pending supersede, Compare/Ask descendants by @omeryasirkucuk in #448
  • feat(studio): sidebar column-level search and breadcrumb UX by @omeryasirkucuk in #449
  • chore: remove cleanup-placeholders sweep from Studio + CLI by @omeryasirkucuk in #450
  • fix(studio): pending-review chip counts the whole table by @omeryasirkucuk in #451
  • feat(studio): unified Catalog cache page + scheduled refresh schedules by @omeryasirkucuk in #452
  • feat(eval): docs RAG gold-set runner + baseline regression gate by @omeryasirkucuk in #453
  • feat(rag): collection identity v2 — record embedding_dim + port mismatch to Catalog Search by @omeryasirkucuk in #456
  • feat(code-rag): default to jina-embeddings-v2-base-code with MiniLM fallback by @omeryasirkucuk in #457
  • feat(docs-rag): format-dispatching chunker — Markdown header awareness (F1.1) by @omeryasirkucuk in #458
  • feat(docs-rag): FTS5 sidecar + RRF fusion for hybrid retrieval (F2.1) by @omeryasirkucuk in #459
  • feat(rag-agent): edges-first assembly + citation header + model-aware budget (F3.1-F3.3) by @omeryasirkucuk in #460
  • feat(docs-rag): MMR diversity reorder after rerank (F2.5) by @omeryasirkucuk in #461
  • feat(docs-rag): opt-in cross-encoder rerank (F2.2) by @omeryasirkucuk in #462

Full Changelog: v0.14.0...v0.15.0