Repository navigation
Releases: kelta-io/kelta
Releases · kelta-io/kelta
Release list
v0.2.0
39 commits since v0.1.0.
Database migrations
V206__collection_ownership.sql
Back up before upgrading; Flyway does not run down-migrations. See UPGRADING.md or https://kelta.io/docs/deploy/upgrading/.
Features
- feat: Lead kelta.io home page with the one-liner and README quickstart (KLT-536) (#1704) (6488c0c)
- feat: Store end-user favorites in user-ui-preferences across browsers (KLT-481) (#1702) (70e171a)
- KLT-504: Provision module metadata via PackageImportService (module-platform slice 2) (#1700) (47947fd)
- KLT-505: Classify release notes by squash body; list migrations and breaking changes (#1695) (f7debf5)
- KLT-503: Scope metadata export to named collections and their dependents (#1694) (630614f)
- KLT-461: Add UPGRADING.md and a CI job upgrading the last release to HEAD (#1687) (fd7526a)
- PLT-478: Let a PR regenerate its own Playwright visual baselines in CI (#1667) (3dd74c9)
- KLT-419: Add the inspections checklist tenant template, built through CLI and MCP (#1668) (5f697fc)
- KLT-418: Add a bounded CI job that installs every examples/templates/* template (#1665) (1f876ba)
- KLT-417: Add the CRM tenant template as metadata only, with no CI wiring (#1664) (06aa247)
- KLT-460: Quickstart compose pulls ghcr images pinned by KELTA_VERSION (#1663) (f6f8244)
- KLT-379: Add GET/PATCH /api/me/profile self-profile endpoint and Profile dialog (#1657) (06cb396)
Bug fixes
- fix: Retry the homelab-argo bump push on rejection; skip rollback when smoke never ran (PLT-554) (#1713) (6cd5f1a)
- fix: Fix the record-detail dark-theme visual regression after KLT-380 (PLT-522) (#1708) (7fac13f)
- fix: CLI: picklists get returns values; add kelta flows delete (KLT-535) (#1712) (969e68b)
- fix: CLI fields add: native type names win, --values makes a field picklist (KLT-534) (#1707) (ae30fa4)
- fix: Retire the seven owner-guard hooks for generic owner-scope metadata (KLT-380) (#1701) (3f9f85c)
- PLT-476: Stabilise the record-detail visual-regression spec's unmasked dynamic chrome (#1691) (ba0b770)
- PLT-521: Make FieldEditor async-submission test deterministic (no real 100ms timer) (#1696) (0a2fae7)
- KLT-500: Stamp createdBy/updatedBy on records written through atomic operations (#1692) (9150d4c)
- KLT-501: Coerce field default values to the field type before validation (#1689) (75b3201)
- fix(ci): move the update-snapshots comment out of the continued docker run (#1680) (451de23)
- KLT-480: Remap a field's global picklist by name on metadata apply (#1684) (fe91fb9)
- KLT-479: Export JSON columns as JSON so metadata export → apply round-trips (#1683) (af83ef8)
- fix(ci): pass --update-snapshots=all so specs are not parsed as the mode (#1675) (ece7925)
- KLT-482: Stop the kelta.io waitlist sending signups to a nonexistent mailbox (#1672) (0d89d86)
- PLT-477: Stop emf-marketing smoke from failing on HTTP 000 during pod termination (#1666) (1481f32)
- KLT-474: Resolve the importing user's email to a user id for FLOW createdBy (#1662) (a6eb901)
- KLT-471: Land owner-scoped collections (KLT-378 redo) from its CI log root cause (#1660) (6404609)
Other changes
- chore: Add release.ts pin/check-pin and fail CI on quickstart pin drift (KLT-539) (#1710) (a62f170)
- docs: Put README quickstart first from git clone; add stranger-test protocol (KLT-538) (#1706) (922ff54)
- docs: Write module-platform slice-3 spec 3-lifecycle.md (KLT-537) (#1705) (62eb873)
- KLT-506: Run every ci/ script's own tests whenever ci/ changes (#1699) (e56528b)
- KLT-502: Add a flows authoring topic and widget config keys to kelta docs (#1690) (2a8ac1a)
- KLT-485: Bring kelta.io/roadmap up to date and add a last-updated date (#1682) (3c571ac)
- KLT-484: Turn the issue templates into issue forms that ask for the release version (#1681) (0c841c9)
- KLT-475: Refresh module-platform parent spec and write slice-2 child spec (#1679) (05f940b)
- KLT-483: Document anonymous access through a tenant's Guest profile (#1678) (3028351)
- KLT-420: Add a "Start from a template" page to the kelta.io docs (#1674) (12e08d1)
Full changelog: v0.1.0...v0.2.0
v0.1.0
1641 commits since the start of the history.
Features
- feat(ci): tag-triggered release workflow — multi-arch JVM images to ghcr + GitHub Release (#1635) (451c641)
- feat(ui): export flows, page layouts, validation rules and picklists from Packages (#1633) (a79e5a8)
- feat(worker): accept VIEW_ALL_DATA for read-only watch/win/alert-latency support views (#1610) (415c92c)
- feat(flow-designer): auto layout for the flow diagram (#1580) (84330d4)
- feat(marketing): add /console — the admin console and end-user app runtime (#1576) (c09f862)
- feat(marketing): put MCP and AI front and centre; replace every "Visual coming soon" (#1575) (fcfe1e7)
- feat(marketing): deploy the kelta-marketing site so kelta.io stops 404ing (#1559) (281dc43)
- feat(mcp): apply_menu — idempotent upsert of a ui-menu tree with groups (#1519) (c4c7991)
- feat(cli): pages, menus, dashboards, reports command groups; list-views get/delete (#1518) (904eab5)
- feat(ui): show field description as help text on forms and detail pages (#1514) (01f8c5e)
- feat(ci): DORA metrics — nightly collector, Grafana/Loki/Mimir sinks, Kelta dora-* collections + dashboard (#1507) (23eee72)
- feat(api): collection schema endpoint; system collections in OpenAPI (#1500) (b0178da)
- feat(license): add root AGPL-3.0-only LICENSE + README commercial-license notice (#1475) (d5d332b)
- feat(worker): admin-minted PATs for managed users (K-8 item 1) (#1474) (c86e738)
- feat: feat(emf/dispatcher): implement _hook_argocd_image_bump + post-deploy health check (P-0 item 12) (#1462) (8ca5eb0)
- feat(dispatcher): reviewer stage + auto-merge in worker.sh (P-0 items 10-11) (#1461) (d357824)
- feat(dispatcher): arm squash auto-merge for tier 0 tasks after opening the PR (#1456) (2566541)
- feat(console): "Support mailbox" in the avatar menu for VIEW_SUPPORT_MAILBOX holders (#1452) (6a2eb89)
- feat(console): offer remembered workspaces and users at the slug-less root (#1448) (8d5bf56)
- feat(console): Web Push, so an escalation can reach a phone (#1447) (71f3d38)
- feat(mailbox): harden attachments — sniff content, serve inert, download safely (#1438) (00c2c5a)
- feat(support-mailbox): auto-reply behind shadow mode, and the admin UI (#1432) (b7af96c)
- feat(support-mailbox): canned answer templates and deterministic matching (#1431) (41d92ed)
- feat(support-mailbox): send replies (#1430) (3742a5a)
- feat(support-mailbox): support console UI (#1429) (525d03d)
- feat(support-mailbox): console API and SLA escalation (#1428) (a52e135)
- feat(support-mailbox): inbound ingest — webhook, adapters, MIME parsing, sanitiser (#1426) (d430fd7)
- feat(support-mailbox): mailbox admin API, membership and secret rotation (#1427) (2f84fc7)
- feat(support-mailbox): schema, system collections and permissions (#1424) (d7c65d2)
- feat(email): carry reply headers and report the stamped Message-ID (#1423) (7358ee0)
- feat: Dispatcher: post Slack notifications on task failure and PR merge (#1422) (45a05f6)
- feat(dispatcher): wire DAILY_COST_CEILING_USD gate into dispatch.sh (D-010) (#1420) (80fa0fa)
- feat(dispatcher): parameterize the worker per repository (#1419) (daa0c15)
- feat(planner): move off the Mac to worker-01 (D-008) (e9fa059)
- feat(observability): ship CEO layer logs to Loki (76286b1)
- feat(autopilot): close the self-throttle loop and make silence detectable (cb5c809)
- feat(modules): let a module serve HTTP routes it declares (#1409) (8b1be99)
- feat(billing): module handlers for the plans and member-billing surfaces (#1407) (025dd8c)
- feat(modules): record what a module provisioned, and stop losing provisioning failures (#1403) (605bc10)
- feat(billing): resolve entitlements from the module when a tenant installs one (#1396) (1480dff)
- feat(modules): let a runtime module publish services the platform calls (#1395) (3f5ea5b)
- feat(modules): port entitlements, quotas, expiry and portal to the billing module (#1381) (01cf091)
- feat(modules): billing as a runtime-installable module package (#1379) (f47f0b1)
- feat(modules): generic webhook route and in-JAR UI bundles for modules (#1378) (5886a25)
- feat(modules): let runtime-loaded modules own collections and hooks (#1377) (0dffaba)
- feat(email): route SES bounce/complaint notifications into email_suppression (#1375) (773c68a)
- feat(runtime): generic latest-record endpoint (#1374) (90a4f07)
- feat(runtime): generic collection aggregate endpoint (#1373) (613d846)
- feat(worker): presigned-GET redirect for spotopened-media downloads (#1372) (7ef5126)
- feat(worker): presigned upload endpoint for spotopened-media (#1370) (72188b1)
- feat(worker): owner guard hooks for spotopened's facility-photos/facility-comments (#1369) (57efb18)
- feat(gateway): admit anonymous requests as a tenant's Guest profile (#1368) (d48d1e8)
- feat(worker): owner guard hook for a tenant collection (field-reports) (#1366) (468b2bb)
- feat(watch): let a member watch something by source and external id (#1364) (0f310e2)
- feat(modules): per-tenant module signing keys with rotation (#1356) (cddc1e0)
- feat(sms): support Twilio API-key auth (key-sid) alongside the account Auth Token (#1318) (6a49d4b)
- feat(gateway): CORS_ALLOWED_ORIGIN_PATTERN accepts a comma-separated list (#1317) (ca314f3)
- feat(seo): SEO page generation substrate (consumer-alerting slice 11) (#1316) (b15ade3)
- feat(sms): wire the sms alert channel through a Twilio provider (consumer-alerting slice 10) (#1315) (163f93f)
- feat(analytics): capture search/assistant questions into analytics-events (consumer-alerting slice 8) (#1313) (5b5c5ff)
- feat(wins): win tracking + live-wins ticker (consumer-alerting slice 9) (#1314) (ec5f33e)
- feat(cli): self-updating binary distribution + downloads service (kelta-cli slice 6) (#1303) (c6f888f)
- feat(cli): AI ergonomics + local MCP — manifest, kelta api, stdio bridge (kelta-cli slices 4+5) (#1302) (dd79326)
- feat(cli): admin command surface — MCP-admin parity + flows/users/limits/audit/bulk (kelta-cli slice 3) (#1301) (37620b3)
- feat(cli): browser login via RFC 8252 loopback + PKCE, PAT lifecycle commands (kelta-cli slice 2, PR B) (#1300) (162033d)
- feat(auth): kelta-cli public client + RFC 8252 loopback redirect validation (kelta-cli slice 2, PR A) (#1299) (040cdb2)
- feat(cli): registry-driven CLI foundation with profiles + output contract (kelta-cli slice 1) (#1298) (e7470af)
- feat(security): public-traffic hardening (consumer-alerting slice 7) (#1296) (6361ccb)
- feat(push): browser Web Push over VAPID (consumer-alerting slice 6) (#1295) (12038ad)
- feat(portal): member watch API + portal self-signup (consumer-alerting slice 5) (#1294) (bd25b00)
- feat(availability): matcher + alert fanout (consumer-alerting slice 4) (#1293) (7c7350a)
- feat(availability): watch/target data model (consumer-alerting slice 3) (#1292) (0ea669e)
- feat(billing): portal billing surface + quota enforcement (K1-B) (#1291) (8ee633f)
- feat(billing): portal billing core + payment-processor webhook (K1-A) (#1287) (4055b66)
- feat(flow): age-based retention for flow and job execution logs (#1289) (d3bc9ab)
- feat(runtime): FORMULA fields + ResourceForm/CI fixes (#1281) (b610616)
- feat(mcp): send orienting instructions on MCP server initialize (#1282) (0b1f944)
- feat(ai): guard against unbounded AI chat conversation growth (#1284) (08ba5ee)
- feat(platform): geo-aware authorization + per-record geo capture (re-land) (#1278) (6db2f1a)
- feat(gateway,worker,ui): ip geolocation enrichment + login history geo (#1276) (f6adebd)
- feat(worker,runtime,ui): flow record writes stamp audit users (#1270) (9ff49b3)
- feat(ui): dock Activity timeline in the record detail left panel (#1269) (edfc30d)
- feat(ui): left section nav on record detail + Activity moved below sections (#1268) (0593962)
- feat(worker,ui): collection-level record versioning with History tab (#1266) (719feea)
- feat(telehealth): provider self-service availability (#1264) (6e5f0af)
- feat(auth): headless portal auth — JSON magic-link API + redirect allowlist (telehealth slice 8) (#1245) (546df91)
- feat(platform): telehealth — video UI + archival & retention (slices 6-7) (#1238) (87a603a)
- feat(platform): telehealth — chat, scheduling, video, portal identity (slices 1–5) (#1235) (c8c4e31)
- feat(nav): nested menu items — submenu groups in the end-user top nav (#1228) (caf7e9c)
- feat(realtime): ephemeral presence on record detail (app-intelligence slice 3) (#1213) (e9890a6)
- feat(i18n): tenant-authored UI translations (app-intelligence slice 4) (#1212) (bed401a)
- feat(ai): AI page generation via propose_ui_page (app-intelligence slice 2) (#1211) (d46fb28)
- feat(offline): outbox UI with retained failed replays (app-intelligence slice 1) (#1210) (1b8226e)
- feat(builder): undo/redo history (app-platform slice 4) (#1208) (c722d31)
- feat(app): apps/workspaces nav v2 — an app is a ui-menu (app-platform slice 3) (#1207) (c4f6d35)
- feat(builder): conditional visibility + computed variables (app-platform slices 1+2) (#1206) (423f66e)
- feat(app): kanban, calendar, and gallery list views (data-entry slices 5-7) (#1204) (9970313)
- feat(app): page grouping + main-list mass edit (data-entry slices 3+4) (#1203) (623d38e)
- feat(app): list power pack — multi-sort, column chooser, density, sticky column (#1202) (f794427)
- feat(security): server-persisted user UI preferences with owner guard (#1201) (76b10ad)
- feat(app): realtime invalidation client + saved views in the list (#1199) (169ff83)
- feat(app): end-user analytics viewer — hub, dashboards, reports (#1198) (34be718)
- feat(security): approvals inbox + hardened approval actor identity (#1196) (c8f18d4)
- feat(security): gate report/dashboard endpoints behind VIEW_ANALYTICS (#1194) (78e9fde)
- feat(security): purge stale embeddings when a source field's masking toggles (#1190) (a8a4e92)
- feat(security): mask-guard duplicate detection match fields (#1185) (74914ea)
- feat(security): per-viewer data masking for dashboard widgets (#1184) (4212067)
- feat(secur...