Skip to content

Releases: openplanhq/openplan

v0.5.0

Choose a tag to compare

@vishu42 vishu42 released this 30 Oct 11:31
e8291df

What's Changed

  • feat(api): refuse a config value that doesn't fit its variable's type (#135) by @vishu42 in #452
  • feat(runner): pass variables to tofu as a -var-file, not TF_VAR_ (#135) by @vishu42 in #453
  • feat(web): send structured variable values as JSON, refuse text that isn't (#135) by @vishu42 in #449
  • feat(web): structured variables get a JSON textarea under their type (#135) by @darksied-svg in #454
  • fix: api-docs-preview blank page; build with Go 1.26.10 by @vishu42 in #462
  • feat(web): template registry: one list by name, a quiet Sync, an ErrorPanel (#457) by @darksied-svg in #458
  • fix(sync): strip the sync workspace path from stored sync errors (#460) by @vishu42 in #463
  • feat(store): template rows from registration, keys to them, template reads (#461) by @vishu42 in #464
  • feat(sync): write into the registered template, survive its delete (#461) by @vishu42 in #465
  • feat(app): register stores the template; template list, read, sync, revisions (#461) by @vishu42 in #466
  • feat(store): a template reads its latest sync and derives its status (#460) by @vishu42 in #468
  • feat(api): templates routes beside the old registration routes (#461) by @vishu42 in #469
  • feat(api): templates carry latest_sync, the newest sync and its shown status (#460) by @vishu42 in #470
  • feat(api): delete a template, 409 template-in-use while a stack uses it (#461) by @vishu42 in #471
  • fix(site): type scale, aligned edges, one spacing rhythm; remove "In the app" by @darksied-svg in #467
  • feat(site): GitHub's mark in the header, on the page's own background by @darksied-svg in #473
  • feat(web): read templates, not grouped revisions; follow a sync by latest_sync (#461) by @vishu42 in #474
  • refactor(api): retire template-registrations and the tenant-wide revisions list (#461) by @vishu42 in #475
  • feat(web): list a template with no revision yet, and say why (#461) by @darksied-svg in #476
  • feat(web): show a template's latest sync on open, poll the list while one syncs (#460) by @vishu42 in #477
  • feat(web): delete a template from the registry, asked first in place (#461) by @darksied-svg in #478
  • feat(web): every latest sync outcome on the template, with when it happened (#460) by @darksied-svg in #482
  • feat(web): mark templates whose latest sync failed or stalled (#460) by @darksied-svg in #483
  • fix(web): space the destroy dialog's buttons from its description by @darksied-svg in #485
  • feat(web): set the template header one type step smaller by @darksied-svg in #486
  • feat(web): one role-named type scale, held by the style guard by @darksied-svg in #487
  • refactor: register tenant routes under one prefix by @vishu42 in #489
  • feat(web): drop the tenant chip from the header (#488) by @darksied-svg in #490
  • feat(web): read the tenant from /v1/me, not a build-time variable (#488) by @vishu42 in #491
  • feat: serve the built-in tenant default, not OPENPLAN_TENANT_ID (#488) by @vishu42 in #492
  • docs: retake the README screenshots on openplan UI by @darksied-svg in #494
  • feat(web): let the Value box show the secret being typed (#496) by @darksied-svg in #499
  • feat: store the sensitive flag on scoped credentials (#497) by @vishu42 in #498
  • feat: redact only sensitive Environment values from run logs (#497) by @vishu42 in #500
  • feat: accept sensitive on credential create and return values that aren't (#497) by @vishu42 in #501
  • feat(web): carry sensitive and value through the credential client and panel (#497) by @vishu42 in #502
  • feat(web): split Environment into Secrets and Variables tabs (#497) by @darksied-svg in #503
  • docs: install the latest release from the README quick start (#440) by @vishu42 in #517
  • fix: store a component-scoped credential under its template only (#480) (flat) by @vishu42 in #519
  • fix(web): refresh a template's runs right after approve or discard by @vishu42 in #521
  • fix(web): drop counts from page titles, section titles and tabs (#518) by @vishu42 in #525
  • feat(web): put Environment and Create stack on the canvas (#524) by @vishu42 in #526
  • feat: list each stack template's latest run (issue 523, 1/4) by @vishu42 in #527
  • feat: list a failed plan or apply as needing attention (issue 523, 2/4) by @vishu42 in #528
  • feat(web): read run_failed attention and refresh it when a run settles (issue 523, 3/4) by @vishu42 in #530
  • feat(web): show failed plans and applies as needing attention (closes 523, 4/4) by @vishu42 in #531
  • feat: return Terraform's first error from a failed command (issue 522, 1/3) by @vishu42 in #532
  • feat: store and serve command_error on runs and executions (issue 522, 2/3) by @vishu42 in #533
  • feat(web): lead a failed run with Terraform's error (issue 522, 3/3) by @vishu42 in #535
  • feat: a plan waits 10 minutes for an executor, like an apply (#513) by @vishu42 in #515
  • feat: add the Helm chart skeleton with the api, web and Ingress (#317) by @vishu42 in #506
  • feat: add the executor Deployment to the Helm chart (#317) by @vishu42 in #507
  • ci: lint and render the Helm chart, and check required values fail (#317) by @vishu42 in #508
  • ci: publish the Helm chart to ghcr on a release (#317) by @vishu42 in #509
  • docs: add the Helm chart README and keep CI values out of the package (#317) by @vishu42 in #512
  • feat(helm): run the executor and api Guaranteed at 2 CPU / 2Gi by default (#513) by @vishu42 in #516
  • feat: add a Docker Desktop evaluation harness for the Helm chart (#317) by @vishu42 in #510
  • refactor: tier 1 naming fixes by @vishu42 in #542
  • refactor: naming audit tier 2 by @vishu42 in #543
  • refactor: name config by unit and kind (naming audit tier 3) by @vishu42 in #544
  • ci: run the CI suite locally with make check, skip drafts on GitHub by @vishu42 in #545
  • refactor: name the Valkey URL field ValkeyURL, after VALKEY_URL by @vishu42 in #541
  • chore: use mkcert for the evaluation harness certificate by @vishu42 in #546
  • feat(helm): add image.pullPolicy; evaluation runs main by default by @vishu42 in #547

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@vishu42 vishu42 released this 19 Oct 17:08
bb16033

What's Changed

  • release: a self-contained compose file for running openplan without a checkout by @vishu42 in #304
  • feat(web): the templates page, with registration, sync and revisions by @vishu42 in #305
  • feat(site): a one-page website for openplan by @vishu42 in #307
  • feat(site): count page views with Cloudflare Web Analytics by @vishu42 in #308
  • fix(web): narrow the sign-in card by a fifth by @vishu42 in #309
  • docs: move specs and plans out of the repo by @vishu42 in #311
  • feat(web): search templates in Add template instead of listing them all by @vishu42 in #310
  • fix(runner): build subprocess environment from an allowlist by @vishu42 in #332
  • fix(executor): clear the dumpable flag at startup by @vishu42 in #333
  • feat: add the openplan logo, favicon and README header by @vishu42 in #340
  • docs: open the README with the banner and tidy its layout by @vishu42 in #341
  • feat(executor): run each session as a pool user of its own by @vishu42 in #334
  • fix(config): refuse the published encryption keys in production by @vishu42 in #345
  • fix(authentication): require a session outside /v1 too by @vishu42 in #343
  • fix(api): cap JSON request bodies at 1 MiB by @vishu42 in #342
  • test(authorization): run the model's permission matrix under go test by @vishu42 in #346
  • docs(architecture): say the run sandbox ships in 1.0 (#245) by @vishu42 in #351
  • fix(compose): stop publishing the api's port in the release stack by @vishu42 in #349
  • fix(api): answer every JSON error in one envelope by @vishu42 in #348
  • fix(postgres): run migrations one replica at a time, and run the Postgres tests in CI by @vishu42 in #347
  • fix(deps): build with Go 1.26.9 and scan for vulnerabilities in CI by @vishu42 in #350
  • fix(web): say why a stack's page is empty when its stack never loads (#101) by @darksied-svg in #357
  • fix(web): keep the /stacks header in every state and say what to do when it's empty by @darksied-svg in #358
  • fix(web): keep Environment and Access on one row beside a long stack name by @darksied-svg in #359
  • fix(web): say when a template's runs fail to load, instead of "No runs yet" by @darksied-svg in #360
  • fix(web): say when a template's credentials fail to load by @darksied-svg in #361
  • fix(web): cut a long ref in the template list and set statuses on their row's baseline by @darksied-svg in #362
  • test(api): accept the mux's redirect status, which Go 1.26 made 307 by @vishu42 in #364
  • feat(executor): run every activity's body in a gVisor sandbox (#245) by @vishu42 in #352
  • refactor: rename NewOpaqueToken to NewRandomToken by @vishu42 in #306
  • fix(sandbox): close six gaps in the sandbox runtime (#245) by @vishu42 in #365
  • fix(site): show the logo in the header and footer, and line the header up with the page by @darksied-svg in #366
  • fix(site): give link previews the brand kit's social card by @darksied-svg in #367
  • fix(site): show setup commands that run as pasted by @darksied-svg in #368
  • fix(site): keep the features heading under the headline on phones by @darksied-svg in #369
  • fix(site): use the app's type steps and top bar by @darksied-svg in #371
  • feat(site): bring the page to life with the product's own motion by @darksied-svg in #373
  • fix(site): stop numbering the features; name them in the rail by @darksied-svg in #374
  • fix(site): keep only the blue bar beside the features by @darksied-svg in #377
  • fix(site): make Register templates answer the pointer by @darksied-svg in #378
  • feat(site): play feature loops once, lead with Run it locally, show the product by @darksied-svg in #379
  • fix(web): poll a template's runs list slowly once no run in it is moving by @vishu42 in #380
  • fix(runs): number each run log in the workflow, derive its key on the control plane, and show the command that ran by @vishu42 in #372
  • refactor(api): drop isPlatformAdmin from /v1/me by @vishu42 in #382
  • refactor(api): use snake_case for every JSON field by @vishu42 in #383
  • fix(api): contract bugs from the API surface review by @vishu42 in #381
  • feat(api): generate a Postman collection from docs/openapi.yaml by @vishu42 in #385
  • docs(openapi): drop the authorization-unavailable 503 and the stale Me note by @vishu42 in #394
  • feat(api): serve every error as an RFC 9457 problem document by @vishu42 in #397
  • feat(stacks): show a stack's slug only when chosen, and set the template count apart by @vishu42 in #396
  • fix(api): deny writes on an unseen object with 404 by @vishu42 in #399
  • feat(api): answer 202 for async work and register at /template-registrations by @vishu42 in #400
  • feat(stacks): put Environment and Access in the preview header, beside Open stack by @vishu42 in #401
  • feat(api): PUT for grants and config, /approve, and /logs/{name} by @vishu42 in #402
  • refactor(api): send runs, registrations, revisions and logs as response types by @vishu42 in #403
  • feat(api): one list envelope with cursor paging by @vishu42 in #406
  • fix(authz): make stack roles a ladder by @vishu42 in #414
  • fix(api): let stack operators and above search users by @vishu42 in #415
  • feat: live run logs through Valkey (#164) by @vishu42 in #412
  • test(site): drop the site and README content guards by @vishu42 in #418
  • fix(web): call the template's Credentials tab Environment by @vishu42 in #419
  • Replay the last release's workflow histories in CI, and write down the upgrade contract by @vishu42 in #417
  • feat(api): record each resource change of a saved plan and serve it per run (#420) by @darksied-svg in #425
  • feat(web): Changes and Logs views on a run, each resource the plan touches (#421) by @darksied-svg in #429
  • feat(web): move stack Access onto openplan UI (#423) by @darksied-svg in #426
  • Platform grants: grant and revoke admin, editor and viewer on the platform by @vishu42 in #428
  • feat(web): platform grant calls and the can_manage_platform_access capability (#424) by @darksied-svg in #431
  • feat(web): Access acts at once: no confirm, no Undo, no redirect (#424) by @darksied-svg in #432
  • feat(web): /access, where platform admins grant admin, editor and viewer (#424) by @darksied-svg in #433
  • fix(compose): give the release stack's executor what gVisor needs (#245) by @vishu42 in #435

New Contributors

Full Changelog: v0.2.0...v0.4.0

v0.2.0

Choose a tag to compare

@vishu42 vishu42 released this 04 Oct 17:18
078b277

What's Changed

  • feat: dispatch template runs through transactional outbox by @vishu42 in #1
  • feat: rename project by @vishu42 in #2
  • AUTH-004: Define and provision the OpenFGA model by @vishu42 in #29
  • AUTH-005: add authentication and authorization runtime configuration by @vishu42 in #30
  • AUTH-006: implement OIDC access-token verification by @vishu42 in #31
  • AUTH-007: add API authentication middleware by @vishu42 in #32
  • AUTH-008: derive actor identities from authenticated subject by @vishu42 in #33
  • AUTH-009: enforce configured single-tenant boundary by @vishu42 in #62
  • fix: temporal retry policies by @vishu42 in #34
  • feat(authz): add OpenFGA authorization port and adapter by @vishu42 in #63
  • feat(authz): authorize stack creation ownership by @vishu42 in #64
  • feat(authz): make relationship writes durable by @vishu42 in #81
  • UI-001: Add routing and app shell by @vishu42 in #82
  • UI-002: Define identity and capability contract types by @vishu42 in #83
  • feat(authz): enforce endpoint permission matrix (AUTH-013) by @vishu42 in #86
  • UI-003: Add TanStack Query data layer by @vishu42 in #84
  • UI-004: Add AuthProvider abstraction with mock implementation by @vishu42 in #87
  • feat(security-audit): AUTH-014 security audit trail by @vishu42 in #89
  • UI-005: Add capability-gating primitives by @vishu42 in #90
  • UI-006: Add shared error and session boundaries by @vishu42 in #92
  • AUTH-015: Prevent self-approval of template runs by @vishu42 in #91
  • UI-007: Restructure into feature-based folders by @vishu42 in #93
  • feat(auth): AUTH-016 Keycloak user directory reader by @vishu42 in #95
  • UI-008: Build stacks list screen by @vishu42 in #96
  • UI-017: Baseline styling for AppShell chrome by @vishu42 in #98
  • feat(web): build template registry screen at /templates (UI-009) by @vishu42 in #99
  • feat(web): build stack detail shell with tab navigation by @vishu42 in #100
  • AUTH-018: Integrate Keycloak sign-in and session handling by @vishu42 in #104
  • chore: remove committed vitest cache file, expand .gitignore by @vishu42 in #105
  • UI-011: Build stack template and variables screen by @vishu42 in #103
  • AUTH-019: Replace placeholder identity and tenant controls by @vishu42 in #107
  • UI-012: Build runs list and run detail screens by @vishu42 in #106
  • feat(web): AUTH-020 — complete permission-aware UI tests and cleanup by @vishu42 in #108
  • UI-014: Gate debug IDs panel behind dev-only flag by @vishu42 in #109
  • AUTH-021: Add stack Access UI + grant management API by @vishu42 in #110
  • UI-015: add 401/403/404 error state screen-level tests by @vishu42 in #111
  • UI-016: close out real-auth integration loose ends by @vishu42 in #112
  • fix: append /auth/callback to KEYCLOAK_WEB_REDIRECT_URIS in .env.example by @vishu42 in #113
  • fix(web): repair OIDC login redirect flow by @vishu42 in #114
  • feat: add Create Stack UI by @vishu42 in #115
  • feat: resolve effectiveCapabilities on stack API responses by @vishu42 in #116
  • fix: add client-level scope-mappings for directory-reader client by @vishu42 in #117
  • fix: align stack role assignment client with server API by @vishu42 in #118
  • hotfix: allow self plan approval by @vishu42 in #122
  • feat: derive stack template display name from repo_name and root_path by @vishu42 in #123
  • run history cross user visibility by @vishu42 in #124
  • fix: use direct user-ID lookup for grant display names (closes #119) by @vishu42 in #125
  • feat: implement terraform destroy flow and remove destroyed stack templates from UI by @vishu42 in #127
  • feat: move destroy button to runs screen and fix approval for destroy operations by @vishu42 in #154
  • feat: add stack environment credentials tab by @vishu42 in #159
  • Recover failed and closed template runs by @vishu42 in #160
  • issue: eliminating redundant status records by @vishu42 in #161
  • feat: add Temporal worker session affinity by @vishu42 in #162
  • refactor: unify runner subprocess executor and add typed command errors by @vishu42 in #165
  • fix: disable automatic activity retries in template run workflow by @vishu42 in #166
  • Give runTerraform ownership of terraform-command run statuses by @vishu42 in #167
  • refactor: require caller-supplied source template ID in postgres store by @vishu42 in #169
  • feat: generic work queue by @vishu42 in #171
  • feat(web): Minimalist Modern design system by @vishu42 in #174
  • feat: fix dual writes queue outbox by @vishu42 in #175
  • feat: ui/ux improvement by @vishu42 in #177
  • fix: let the api migration test terminate on success by @vishu42 in #183
  • Split the stack template screen into configure, install, and change-revision flows by @vishu42 in #178
  • feat: track planned and applied state on stack templates; reject applies whose plan no longer matches desired by @vishu42 in #180
  • fix: run the resolved commit instead of following the installed ref by @vishu42 in #182
  • refactor: stop storing a ref on the stack template by @vishu42 in #184
  • refactor: give the stack template struct one meaning per field by @vishu42 in #185
  • fix: expect 200 from GET /v1/me, not 204 by @vishu42 in #188
  • Show runs inline on the stack template screen by @vishu42 in #189
  • Drop the section label pill by @vishu42 in #190
  • refactor: swap the display face from Calistoga to Archivo by @vishu42 in #192
  • Retune web proportions to match Vercel Geist by @vishu42 in #193
  • fix(web): use plain hyphens in run history entries by @vishu42 in #194
  • Grant the seeded administrator the stack-creator role by @vishu42 in #202
  • Run the stack in two commands: infrastructure, then application by @vishu42 in #200
  • Make the README about the product, not the plumbing by @vishu42 in #203
  • Trim the README: drop upgrade notes and vendor names by @vishu42 in #205
  • fix(web): install devDependencies for production builds by @vishu42 in #206
  • docs: show the product in the README by @vishu42 in #207
  • docs: IAM/identity surface analysis and settled decisions by @vishu42 in #217
  • fix: accept tokens from any conformant IdP, not just Keycloak by @vishu42 in #218
  • docs: park #216 behind #145, and say why by @vishu42 in #219
  • docs: design the (Subject, Relation, Object) authz port by @vishu42 in #221
  • Generalize the authz port to (Subject, Relation, Object) by @vishu42 in #222
  • feat(authz): author the OpenFGA model in DSL and load it in process by @vishu42 in https://github.com/openplanhq/openplan/pull...
Read more