What's new
Every release, straight from production. New features, fixes, and improvements as they ship.
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
Features
Bug Fixes
Bug Fixes
- shared: error kernel across loaded copies, plus a right-click menu on board columns #582
Bug Fixes
- ask Wrike only for optional fields each endpoint accepts, and carry its error description #577
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
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
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
Bug Fixes
- shared: let agents actually act — reach every integration action, refuse unperformable drafts, surface real run outcomes #402
Bug Fixes
- shared: throw error for unhandled draft actionTypes in IntegrationDraftActionExecutor
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
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
Features
- web: importable orc-based agent preset library
Bug Fixes
- shared: make every producer's job enqueue durable and published
Features
- shared: four-step agent wizard with a backend-served model catalog
Bug Fixes
- infra: guard findRoleById against non-UUID role values
Features
- shared: complete the agent tool surface over the board — linking, backlog, sprints, OKRs #400
Features
Bug Fixes
Features
Bug Fixes
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