Repository navigation
v0.2.0
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 #223
- feat(authz): make OpenFGA the sole authorization source by @vishu42 in #224
- refactor(web): delete the legacy console still mounted at "/" by @vishu42 in #226
- Move the OIDC flow server-side: the API becomes the confidential client by @vishu42 in #225
- feat(authn): project verified identities to a local users table by @vishu42 in #227
- Local accounts, a seeded root administrator, and a sign-in screen by @vishu42 in #228
- refactor: collapse seven cases of duplicated logic by @vishu42 in #229
- fix(deploy): copy internal/strval into the keycloak-provisioner build by @vishu42 in #230
- refactor: rename internal/traits to internal/domain and split it by concern by @vishu42 in #232
- feat(web): show applied state per stack template by @vishu42 in #233
- feat(web): pick a template to install, not a commit by @vishu42 in #236
- feat(web): list templates once, revisions behind a route by @vishu42 in #235
- feat: refuse a second run while one is in flight by @vishu42 in #238
- feat: read private GitHub repositories with a GitHub App by @vishu42 in #242
- feat: one authorization package by @vishu42 in #243
- Split the control plane into the api and leave the executor executing by @vishu42 in #253
- fix: add temporal heartbeats by @vishu42 in #255
- feat: share an OpenTofu provider cache across executor runs by @vishu42 in #256
- feat: add metrics and auth compose profiles by @vishu42 in #261
- feat: add sync button to template detail screen by @vishu42 in #263
- feat: breadcrumb page titles, Geist type, no bold by @vishu42 in #264
- feat: number runs per stack template by @vishu42 in #265
- feat: give each stack template its own tabbed page by @vishu42 in #266
- feat: apply the saved plan someone approved by @vishu42 in #268
- refactor: run status is lifecycle, progress is a step by @vishu42 in #269
- feat: each workflow and step of a template run gets a row of its own by @vishu42 in #271
- refactor: rename tflive to openplan by @vishu42 in #272
- feat: adopt dex as the identity provider by @vishu42 in #279
- chore: upgrade web to react 19 by @vishu42 in #273
- feat(web): tailwind and shadcn foundation beside a legacy layer by @vishu42 in #274
- feat(web): app shell and shared components on shadcn by @vishu42 in #276
- feat(web): standalone screens on shadcn by @vishu42 in #277
- feat(web): stacks screens on shadcn by @vishu42 in #278
- feat(web): stack access screen on shadcn by @vishu42 in #280
- docs: drop stale comments from .env.example by @vishu42 in #281
- feat(web): stack template screens on shadcn by @vishu42 in #282
- feat(web): migrate template registry and runs to shadcn by @vishu42 in #283
- refactor(web): delete the legacy styles and finish the shadcn migration by @vishu42 in #284
- docs: describe dex as the only identity provider by @vishu42 in #285
- refactor: rename authn to authentication and fold /v1/me into api by @vishu42 in #286
- fix: show who started a run by name, not by subject by @vishu42 in #287
- refactor: remove duplication from the authentication path by @vishu42 in #291
- feat: redesign /stacks and add the attention page by @vishu42 in #292
- feat(web): make the stack's page a split view of its templates by @vishu42 in #293
- feat(web): rebuild the stack page's panel views on openplan UI by @vishu42 in #294
- docs: rewrite the README, add CI, and refresh the screenshots by @vishu42 in #300
- ci: publish the api, executor and web images to GHCR by @vishu42 in #302
- ci: build each architecture natively and merge the manifests by @vishu42 in #303
New Contributors
Full Changelog: https://github.com/openplanhq/openplan/commits/v0.2.0