New: @luna reviews pull requests against your team's standardsSee what's new
Changelog

What's new

Every release, straight from production. New features, fixes, and improvements as they ship.

v1.0.0

Features

  • web: choose a plan during onboarding #609
  • web: redesign rewards, leaderboard and reward catalog #611
  • web: redesign the agents pages around roles, drafts and run health #610

Bug Fixes

  • domain: let managers plan and assign and users assign tasks #608

v1.21.0

Features

  • infra: run agent maintenance ticks on their own small service #605

Bug Fixes

  • ui: show the tenant logo in the sidebar team switcher #607

v1.20.0

Features

  • lambdas: separate wrike jira and github from agents as self-contained modules #603

v1.19.0

Features

  • web: redesign milestones page with roadmap slip and pace #598
  • web: redesign okrs page with cycle clock, peek panel and work timeline #594
  • web: redesign projects page with status table, bulk edit and timeline #596
  • web: redesign sprints page with hero, capacity and velocity #595
  • web: track planning history for burndown, velocity and okr trends #599

v1.18.0

Features

  • enforce granular catalog capabilities on every route #586
  • gate every dashboard page and action on catalog capabilities #589
  • provision every workspace and member from the role catalog #591
  • rebuild the rbac page on catalog capabilities with own and assigned grants #588

Bug Fixes

  • close RBAC privilege-escalation gaps before the granular permission rework #584
  • close the remaining rbac and abac gaps #592

v1.17.0

Features

  • web: call the boards list Spaces and put it above Board in the sidebar #585

v1.16.1

Bug Fixes

  • shared: error kernel across loaded copies, plus a right-click menu on board columns #582

v1.16.0

Features

  • add multiple boards with a stage editor and enforced flow rules #581

v1.15.0

Features

  • export and import agents and workflows as one bundle #580

v1.14.5

Bug Fixes

  • open intake tickets with the origin's own description #579

v1.14.4

Bug Fixes

  • link origin tickets, type PRs as Review, mirror every agent comment #578

v1.14.3

Bug Fixes

  • ask Wrike only for optional fields each endpoint accepts, and carry its error description #577

v1.14.2

Bug Fixes

  • recognise Wrike mentions by their rel attribute #575
  • stop requesting dates as a Wrike task field #574

v1.14.1

Bug Fixes

  • answer Wrike's webhook handshake so account hooks register #573

v1.14.0

Features

  • add the Wrike module, DORA metrics and the Delivery page #572
  • cli: novac — local CI, guided setup, and hardened local deploys #342
  • web: redesign the board after the Luna Board study #571

Bug Fixes

  • shared: post the bare reply to github, without the agent name #570

v1.13.0

Features

  • web: pick the github and jira intake board in the dashboard #569

v1.12.5

Bug Fixes

  • lambdas: enqueue github mentions under the linked tenant #568

v1.12.4

Bug Fixes

  • shared: post the bare reply to jira, without the agent name #567

v1.12.3

Bug Fixes

  • shared: reply on the Jira thread and send GitHub linking back to the dashboard #566

v1.12.2

Bug Fixes

  • infra: bind the Jira and GitHub secrets on agent-worker #564
  • shared: give mention tickets a reference so the card opens #565

v1.12.1

Bug Fixes

  • shared: give Jira and GitHub mention tickets a task type #563

v1.12.0

Features

  • atlas — one mentionable router, two surfaces (board + GitHub App) #510
  • infra: migrate novacstack database from Supabase to Cloud SQL #533
  • shared: enforce RBAC across provisioning, revocation, and routes #507
  • shared: graph-engineering workflows — child runs, typed state, swarm #505
  • shared: map orc's SDLC roster onto the Agent Platform, seed Novac #524
  • shared: prepaid AI credit ledger, cost ceiling, and spend monitor #506
  • shared: route Jira mentions to Atlas via a Forge remote app #515
  • ui: show what actually triggers a workflow #529
  • ui: split tenant settings into General/Automation/Integrations tabs #519
  • web: dashboard ux pass and tenant-scoping fixes #547
  • web: rebuild the home and product pages tessl.io-style with a vgpu hero #553

Bug Fixes

  • add the new tenant setting types to the Postgres enum #514
  • auth: stop losing the session when a tab is reopened #528
  • build an image for every service terraform deploys #511
  • config: apply the Cloud SQL socket in buildDatabaseConfig for every DataSource #544
  • infra: connect DB runners over the Cloud SQL socket and grant app_rls to app_runtime #541
  • infra: enable the Compute, Service Networking and Cloud SQL APIs in Terraform #538
  • infra: get the Jira Forge app working end to end #559
  • infra: make the migrate and seed jobs depend on the cloudsql.client grant #542
  • infra: make the migrate job depend on its secret grant and version #539
  • infra: route Cloud Run to the private Cloud SQL instance over Direct VPC egress #543
  • infra: seed demo automations with a real owner user id #546
  • infra: seed system users so Jira and GitHub mentions can create tickets #562
  • infra: stop the moving prod-lkg tag from failing the release job #561
  • lambdas: enqueue Jira mentions under the linked tenant #560
  • prove github installation ownership before linking #512
  • publicPaths wildcard never matched, so every webhook was rejected #513
  • shared: exempt the GitHub install callback from bearer auth #525
  • shared: fix GitHub install button 401ing on every click #523
  • shared: stop vercel env pull hanging on its own overwrite prompt #526
  • ui: rebuild the billing page layout and add credit/usage charts #508
  • unblock the migrate job (deletion protection + logger on Cloud Run jobs) #540

v1.11.0

Features

  • collect, display, and validate API-key IP allowlists #449
  • domain: keep an append-only history of agent configuration
  • domain: let one agent follow a multi-phase script #476
  • domain: pin the agent config a run actually executed #472
  • editor: highlight fenced code and let the author pick a language #451
  • infra: normalize the schema and make its ACID guarantees real #436
  • infra: persist agent scripts and the reusable step library #478
  • rewards: coin economy, tenant catalog, and leaderboard redesign #454
  • shared: author skills in the UI, with per-agent opt-in and usage #490
  • shared: cap per-tenant AI spend at the job-handler choke point #470
  • shared: compact the conversation before it outgrows the window #488
  • shared: enforce script step order from the host, not the prompt #477
  • shared: learn whether an agent's pull request was merged, and what it cost #484
  • shared: let a human steer a run that is already executing #474
  • shared: let one agent hand a sub-task to another, in-process #479
  • shared: per-model context windows + close the two metering holes #469
  • shared: run transcripts — capture, stream, and archive #471
  • waitlist read path — query, admin endpoint, and dashboard table #445
  • waitlist: persist signups instead of capturing them by email #439
  • web: author agent scripts, and say how they differ from workflows #485
  • web: complete the reward system (typed catalog, redemption, leaderboard redesign) #455
  • web: OKR cadence model, milestone links, and dashboard UI completion #453
  • web: rebuild the board on the itsaplan work-items model #457
  • web: replace the placeholder dashboard with a real tenant overview #492
  • web: show milestones on a real gantt chart, default to in-flight #452
  • web: wire key-result creation into the OKR board #443

Bug Fixes

  • infra: give verify-ci a checkout, and catch the whole class #433
  • infra: make the agent job substrate actually run in production #468
  • infra: make the agent worker's session exclusion deliberate, and give it Sentry #438
  • infra: only open a savepoint when a transaction is actually open #502
  • infra: populate the NOT NULL tenants.key on insert #442
  • infra: restore corepack on the node 26 base image #437
  • infra: stop the workflow list hiding every workflow that has an owner #493
  • infra: swallow benign 23505 race on task status-history insert #463
  • infra: use a savepoint so the status-history race recovery can run #464
  • rbac: unbreak role editing, and give roles a readable name #450
  • shared: agent task creation, work badges, sprint close, and draft-PR CI #500
  • shared: close the plan's four remaining gaps #487
  • shared: make the workflow and agent surfaces that shipped disabled actually work #481
  • ui: CRITICAL — property pills in the issue detail panel swallow clicks in production #461
  • ui: explicit tenant scope on role creation #447
  • ui: give the agent lane of the work pill a real accent #503
  • ui: stop the work-item detail panel scrolling horizontally #466
  • web: board post-merge crash, create-task 500, scroll containment + UI polish #459
  • web: gate the OKR board on a resolved tenant context #448
  • web: sprints nav entry + remove board saved-views UI #462
  • web: stop offering "add subtask" on types that cannot have one #465
  • web: surface real API-key allowedIPs, userId, and usageCount #444

Performance Improvements

  • infra: resolve the CI verdict from the PR, not by waiting for main #435

v1.10.0

Features

  • conventional-comments PR reviews, without the plumbing talk #423
  • hardening + platform docs refresh (TRD-0001 P6) #420
  • hold a worker's push behind human approval #425
  • outcome router, failure writeback, ack (TRD-0001 P3) #417
  • shared: add the document and browser-QA outcomes
  • shared: drive the sandboxed saga from the outcome, not from code+PR
  • shared: drive the sandboxed saga from the outcome, not from code+PR
  • shared: let a sandboxed run deliver what the ticket asks
  • shared: make run artifacts real files a ticket can show
  • shared: PR review as a sandboxed worker run, with the orc plugin as the source of truth #406
  • the ticket-prose humanizer (TRD-0001 P5) #419
  • ticket context pack + server-side mentions (TRD-0001 P1) #414
  • ticket-thread approval (TRD-0001 P4) #418
  • web: configure what an agent delivers, and show it landing
  • workflows become ticket-triggerable (TRD-0001 P2) #415

Bug Fixes

  • an agent's declared outcomes were dropped on every save #424
  • close the audited delivery gaps (TRD-0001 P7) #421
  • infra: cap MCP tool results — oversized ones broke the SDK tool lockdown #403
  • infra: declare IS_SANDBOX so claude can bypass permissions as root
  • infra: drop the undocumented -i flag from sandbox exec
  • infra: give the PR diff a merge base to resolve against
  • infra: give the sandbox absolute paths — it does no PATH lookup #412
  • infra: let the worker lanes read the tenant Anthropic credential
  • infra: name sandboxes positionally and never strand a run #410
  • infra: run the Cloud Run worker image as root so sandboxes can start #409
  • infra: survive a sandbox CLI that rejects --name #408
  • infra: wait for a new sandbox to come up before using it #411
  • shared: stop dropping workerConfig.outcomes at every boundary
  • shared: thread tenantId into runner.run for the sub-agent and dispatcher lanes #404
  • stop a PR review that found bugs from approving the PR #422

v1.9.2

Bug Fixes

  • shared: let agents actually act — reach every integration action, refuse unperformable drafts, surface real run outcomes #402

v1.9.1

Bug Fixes

  • shared: throw error for unhandled draft actionTypes in IntegrationDraftActionExecutor

v1.9.0

Features

  • shared: one AGENT_MAX_TURNS budget for all agent loops, raised to 200

Bug Fixes

  • infra: raise the agent turn budget to 24 on the worker

v1.8.0

Features

  • shared: route subscription-token tenants to the Claude Agent SDK lane
  • shared: surface the provider status on agent.run.failed events

Bug Fixes

  • shared: raise the Anthropic SDK retry budget for rate-limit windows

v1.7.0

Features

  • web: importable orc-based agent preset library

Bug Fixes

  • shared: make every producer's job enqueue durable and published

v1.6.0

Features

  • shared: four-step agent wizard with a backend-served model catalog

Bug Fixes

  • infra: guard findRoleById against non-UUID role values

v1.5.1

Bug Fixes

  • provision the account and membership when an invite is accepted #401

v1.5.0

Features

  • shared: complete the agent tool surface over the board — linking, backlog, sprints, OKRs #400

v1.4.0

Features

  • ui: AgentWorkLane — a 3D CSS scene of an agent working the queue #366

Bug Fixes

  • shared: keep board views mounted while a task is open during refetch #399

v1.3.3

Bug Fixes

  • infra: register the OKR and Invite entities with the DataSource #396
  • infra: unwrap the RETURNING result when allocating a task reference #395
  • shared: implement the invite-accept flow #397

v1.3.2

Bug Fixes

  • web: route OKR calls to the okr service, and two board tweaks #394

v1.3.1

Bug Fixes

  • ui: build the create form from the card dialog's own controls #393

v1.3.0

Features

  • shared: nine board improvements — references, images, picker, redesign, creation #391
  • ui: rethink the workflow module as an enterprise-grade builder #375

Bug Fixes

  • infra: unbreak migration 1798 on Postgres #392
  • lambdas: send emails from novacstack.com and resolve invite role names #378
  • shared: restore board work stranded by PRs - #382
  • web: bring the dashboard sidebar up to the design system's shape #376

v1.2.0

Features

  • shared: cancel a pending invite #369
  • ui: offer Cancel invite on pending invite rows #370

Bug Fixes

  • infra: collapse duplicate invites and enforce one per tenant + address #372
  • invite and welcome emails never reached Resend #367
  • shared: supersede the existing invite on resend instead of duplicating #371
  • web: show the role name on invite rows instead of a UUID #368

v1.1.0

Features

  • ui: rethink the sidebar as a two-pane dock + panel shell #365

Bug Fixes

  • web: declare the next version that actually installs #374

v1.0.2

Bug Fixes

  • shared: patch critical, high, moderate + low Dependabot advisories #364

v1.0.1

Bug Fixes

  • infra: switch Vercel deploy to a remote build #363

v1.0.0

Features

  • add Analytics feature with services, UI components, and types #69
  • add Audit Logs feature for enhanced RBAC visibility
  • add Categories and Transactions bounded contexts
  • add CLI tools for database, doctor, and code generation commands
  • add Goals and Budgets bounded contexts
  • add new UI components and features to dashboard
  • add RBAC enhancements and resource registry support
  • add visual workflow module (agent orchestration) #309
  • agent model/effort/fast controls + installable Claude plugins (skills & commands) #243
  • agent-driven OKR module (Objectives & Key Results) for Plan #303
  • agent-workable kanban board + day planner #242
  • AI eval program — suites, regression gate, self-hosted Laminar #265
  • audit failures + actor/resource identity in audit logs #334
  • auth: add password reset flow (forgot-password + reset-password)
  • build the real user-invite flow (persist + email + PENDING) #332
  • complete the user profile page end-to-end (avatar, displayName, profile details, privacy, appearance sync, data rights) + sidebar/board fixes #308
  • config: add LLM-as-judge AI eval harness #218
  • configurable AI agent platform (+ files, tenant, RBAC, billing) #235
  • connection-driven agent tools, connection naming, nav + Composio icons #240
  • create Accounts aggregate and database migration
  • desktop: consume the design system in the renderer
  • enhance Forge CLI with shortcuts, quick actions, and alias support
  • enhance RBAC support with improved user-role mapping and expanded tenant and role details
  • enhance Trivy security scans with additional scanner support and validation
  • gate features behind per-tenant modules (backend 403 + UI) #270
  • graphify-style rebrand + AI-workforce landing reposition #346
  • illustrated rank badges + module-gated agent tools #271
  • implement API audit logging across lambdas
  • infra: add agent-compute Cloud Run worker + real adapters #216
  • infra: deploy the workflow and okr services to Cloud Run #330
  • infra: enable pgvector + agent_memory table on Postgres 16 #212
  • infra: Firebase Functions CD to novacstack + prod URL docs #279
  • infra: migrate APIs from AWS Lambda to Cloud Functions for Firebase
  • infra: migrate APIs from AWS Lambda to Cloud Functions for Firebase #205
  • infra: migrate compute to Terraform-managed Cloud Run; drop Postgres from blueprint #282
  • infra: send transactional email from the Resend-verified domain #300
  • introduce `@foundry/testing` package for robust testing utilities
  • introduce calendar and popover components; enhance dropdowns with display labels
  • lambdas: enable Sentry errors, tracing, profiling and source maps on backend #286
  • lambdas: expose RevokeExpiredRoles via a maintenance route #215
  • lambdas: platform-wide API audit logging #281
  • layout: add `NotificationBell` and `NotificationsPanel` components with stories
  • layout: add `NotificationBell` and `NotificationsPanel` components with stories
  • layout: introduce core layout components and stories
  • marketing: style enterprise redesign + Cálculo product page #276
  • memory supervisor — scoped, categorized, tagged extraction + run records #263
  • pages: add `LoginPage` and `OnboardingPage` templates with Storybook integration
  • per-tenant AI token-cost tracking + usage-based billing #341
  • per-tenant API keys for external services (Composio/Anthropic/Resend) #247
  • prep novacstack deploy — cross-origin CORS + rewards API base #277
  • public /changelog page + interim theme fixes #345
  • RBAC + tenant-module access enforcement (UI + backend) #280
  • required tenant keys — Resend system-only, Anthropic/GitHub per-tenant #317
  • run the agent worker in Cloud Run Sandboxes (scale-to-zero) #349
  • seed demo tenant with roles, permissions, and users
  • shared: add @foundry/ai kernel with provider-agnostic client #210
  • shared: add @foundry/ai kernel with provider-agnostic client #210
  • shared: add durable single-step agent run use-case #217
  • shared: add job_runs outbox + idempotency contract and tables #211
  • shared: add JobQueue port + in-memory driver behind JOB_QUEUE_DRIVER #208
  • shared: add JobQueue port + in-memory driver behind JOB_QUEUE_DRIVER #208
  • shared: add outbox relay + Pub/Sub job queue logic #214
  • shared: add Pub/Sub IEventBus adapter behind EVENT_BUS_DRIVER #213
  • shared: transactional email templates (draft approval, invite, weekly + mid-week reports) #251
  • silent NextAuth token refresh (+ full-claim re-mint on refresh) #336
  • sprints + QA stage + rewards module (points/levels/streaks/badges) #260
  • ui: add AgentMemoryGraph design-system component (React Flow) #233
  • ui: add changelog timeline marketing section #344
  • ui: add DS feature-flags table + form; adopt in dashboard
  • ui: add DS notifications table + badges; adopt in dashboard
  • ui: add DS tenant-form; adopt in dashboard tenant dialog
  • ui: add server-side pagination to DS DataTable + tenants list page
  • ui: add the Plan product landing page #302
  • ui: boop-style memory constellation view + compact browse list #275
  • ui: CronInput DS component + automations wiring #245
  • ui: draft approval inbox preview + agent identity, themed scrollbars #246
  • ui: expand design system — kanban, planners, editors, email & form builders #189
  • ui: ExternalLink primitive + worker-run outbound links (D2) #295
  • ui: extract MilestoneForm + AutomationForm into the design system (D4) #299
  • ui: high-converting Build product landing page #301
  • ui: migrate api-keys table to DS ApiKeysTable with dialog-driven actions
  • ui: migrate billing tables (coupons/invoices/plans) to DS
  • ui: migrate standalone audit-logs table to DS AuditLogTable
  • ui: migrate users table to DS UsersTable with server pagination
  • ui: move RankHero into the design system (D5) #298
  • ui: switch base theme to amber palette #285
  • ui: tenant detail page on DS + audit logs via DS AuditLogTable
  • ui: use provider logo for connections without a bundled icon #238
  • web: add custom-branded Sentry User Feedback widget #289
  • web: adopt design-system pages for auth, forgot-password & legal
  • web: agent-lane memory graph with typed edges and filters #273
  • web: capture frontend errors in Sentry #287
  • web: export/import agent config as shareable JSON #262
  • web: host-gated coming-soon landing + fix Terraform ADC in CD #306
  • web: marketing landing page + board UI fixes + sprint route #268
  • web: rebrand product display name to Workbench #357
  • web: redesign consolidation observability page #272
  • web: server-first events timeline (RSC + streamed first page) #253
  • web: use DS notification bell and move theme control into sidebar
  • web: use the DS RbacPage for /dashboard/rbac
  • worker agent — sandboxed coding agent (ticket → PR, P0–P8) #258

Bug Fixes

  • 72h access tokens + redirect to login on 401 #335
  • added eslint to root repo
  • added eslint to root repo
  • adding global turbo command
  • adding peerdependencies
  • adding peerdependencies
  • adding peerdependencies
  • adding peerdependencies
  • adding peerdependencies
  • adding peerdependencies
  • adding turbo and lint to global install
  • command running
  • escape bash array length syntax in cd.yml to avoid GitHub Actions expression parsing
  • image warning
  • improved our action and PR validation
  • infra: add missing checkout to the CD sourcemaps job #325
  • infra: apply RLS as top-level DDL to fix migration syntax error #318
  • infra: checkout before the local setup action in db-migrate workflow #278
  • infra: connect runtime as NOBYPASSRLS role so RLS enforces [DO NOT MERGE until role live] #320
  • infra: correct JobRun status type + agent Cloud Run boot plumbing ( audit) #218
  • infra: declare tenant FK on job_runs entities + integration-test the schema #211
  • infra: grant bake fs.read for the out-of-context turbo token #322
  • infra: keep dashboard out of the lambda image build #319
  • infra: reclaim runner disk before the CD image bake #328
  • infra: refresh gcloud beta component before terraform apply #359
  • infra: request-based billing + scale-to-zero for Cloud Run #283
  • infra: scope CD sourcemaps build to lambdas (exclude dashboard) #327
  • infra: stop terraform_wrapper output from corrupting service_urls #361
  • infra: wire self-host rewards routing + bundle typeorm #269
  • integraty checks
  • lambdas: coerce user-roles list query params (limit/offset)
  • lambdas: defer email Resend client init so a bad key can't fail /live #329
  • lint and type problems
  • prod auth redirect loop + invite 42703 column error #347
  • shared: copy commit before mutating in release-notes transform #362
  • shared: disable pino-pretty on Vercel (fixes coming-soon 500) #307
  • shared: enforce at-least-once dedup; map Anthropic errors to AiError ( audit) #218
  • shared: map duplicate-email (pg 23505) to a 409 instead of a 500 #331
  • show avatar photo + role in the users table #333
  • typing and linting
  • ui: fix DraftsTable Preview story erroring in Chromatic #288
  • ui: fixed input uncontrolled form
  • updated configs for our tests
  • write file fo lefthook config

Performance Improvements

  • infra: build the 19 service images with buildx bake (one graph, parallel) #321
  • infra: faster CI/CD — parallel Sentry maps, draft-PR skip, sharded/affected CI #324
  • ui: trim redundant Chromatic snapshots (heavy badge stories) #297