Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 17:55
· 208 commits to main since this release

Changelog

Features

Fixes

  • a032ac6: fix(api): abort audit export on mid-stream store error (no silent truncation) (steveokay mokaysteve@gmail.com)
  • 85a6d04: fix(api): audit denied reference dereferences (final-review #4) (steveokay mokaysteve@gmail.com)
  • 6162949: fix(api): authorize clone against source env's real project (block cross-project exfil) (steveokay mokaysteve@gmail.com)
  • 99c6c38: fix(api): close unseal race share leak; precise init/unseal error taxonomy (steveokay mokaysteve@gmail.com)
  • 47f785e: fix(api): deliver new rekey shares even if the post-commit audit write fails (steveokay mokaysteve@gmail.com)
  • ce01131: fix(api): pre-flight table-existence check on backup (clean error, not reset, on inconsistent schema) (steveokay mokaysteve@gmail.com)
  • 436383b: fix(api): reject zero-record restores (audit-seq poisoning), record-count audit detail, log hygiene, 64MB record cap (steveokay mokaysteve@gmail.com)
  • 3d78c86: fix(api): resolve RBAC resource from target id, not path params (cross-project IDOR) (steveokay mokaysteve@gmail.com)
  • 8420986: fix(api): rotation conflict returns "conflict" code, not "validation" (steveokay mokaysteve@gmail.com)
  • 37e55a1: fix(api): route protected-config rollback + promote through four-eyes (steveokay mokaysteve@gmail.com)
  • 21480ec: fix(api,cli): serialize init against TOCTOU; janus unseal --reset; refresh README (steveokay mokaysteve@gmail.com)
  • e07c357: fix(auth): #nosec G101 on svcTokenPrefix (gosec entropy false-positive post-rename) (steveokay mokaysteve@gmail.com)
  • 4668db7: fix(auth): bounds-check and strictly parse stored Argon2 params (crafted-hash DoS) (steveokay mokaysteve@gmail.com)
  • 932af99: fix(authz): guard memberPut demotion of last instance owner; fail-closed guards (steveokay mokaysteve@gmail.com)
  • 6d9f54b: fix(cli): JANUS_CONFIG_DIR override for portable config dir + test isolation (steveokay mokaysteve@gmail.com)
  • 0ef44ab: fix(cli): download --output enforces 0600 via atomic temp+rename (M9 review) (steveokay mokaysteve@gmail.com)
  • c3b8f2b: fix(cli): janus seal authenticates (--token / stored session) — was guaranteed 401 in production (steveokay mokaysteve@gmail.com)
  • 2f8a967: fix(cli): resolve restore via /v1/trash; tag token list scope fields (steveokay mokaysteve@gmail.com)
  • 912585e: fix(cli): route cobra command output to stdout so pipelines can capture it (steveokay mokaysteve@gmail.com)
  • 361d29b: fix(cli): suppress echo on interactive rekey share entry; scope rotate hint (steveokay mokaysteve@gmail.com)
  • 9ff48aa: fix(cli): warn on --share argv exposure; fallback for non-envelope errors; wire assertions (steveokay mokaysteve@gmail.com)
  • 8129abc: fix(cli+api): atomic --out writes, abort truncated backup streams, docs table rows, header timeout, 409 UX pin (steveokay mokaysteve@gmail.com)
  • 4d29149: fix(crypto): clamp pre-epoch TOTP counter instead of uint64-wrapping (gosec G115) (steveokay mokaysteve@gmail.com)
  • 28fcc21: fix(crypto): make AAD encoding injective (length-prefixed fields) (steveokay mokaysteve@gmail.com)
  • 105284e: fix(crypto,ci): use uint64 AAD length prefix (clears gosec G115); pin gosec to Go-1.26-compatible v2.27.1 (steveokay mokaysteve@gmail.com)
  • a89215c: fix(deps): bump golang.org/x/text to v0.39.0 (GO-2026-5970) (steveokay mokaysteve@gmail.com)
  • e04763f: fix(editreq): claim-before-commit approval + protect pending-request KEK versions (steveokay mokaysteve@gmail.com)
  • fdd70c0: fix(masterkeys): never discard new shares after a committed rotation (steveokay mokaysteve@gmail.com)
  • c6d4fb6: fix(metrics): bound the http method label; drop test-only /status nil-authz path (steveokay mokaysteve@gmail.com)
  • 482c8f9: fix(notifications): repair empty outbox deliveries + prefill SMTP edits + bound SMTP dial (steveokay mokaysteve@gmail.com)
  • 0da36c6: fix(oidc): bind login state to initiating browser (login-CSRF defense) (steveokay mokaysteve@gmail.com)
  • 03b79cc: fix(promote): create-target authz resolves project scope; audit source reveal; zeroize reveal maps (steveokay mokaysteve@gmail.com)
  • 8f51ff9: fix(promote): mark request applied only on Apply success (no stranded state) (steveokay mokaysteve@gmail.com)
  • bb0d5b0: fix(promote): re-encode idempotency replay via writeJSON (clears gosec G705, consistent JSON) (steveokay mokaysteve@gmail.com)
  • 85ddf1a: fix(promote): review polish — decided-request GET skips pipeline check; OpenAPI schema (steveokay mokaysteve@gmail.com)
  • b5a6fbb: fix(resolve): enforce same-environment inheritance; zeroize deref residue (steveokay mokaysteve@gmail.com)
  • cbd9848: fix(rotation): RotateNow marks policy due for crash recovery; notify rotated_at (steveokay mokaysteve@gmail.com)
  • 53ade91: fix(rotation): migration 000037 relaxes type CHECK for mysql/redis/oauth/aws_iam (steveokay mokaysteve@gmail.com)
  • 1e73d10: fix(rotation): respect backoff for pending policies; sealed is not a failure (steveokay mokaysteve@gmail.com)
  • 6af1872: fix(search): derive truncated from post-authz visibility only (steveokay mokaysteve@gmail.com)
  • 9e8288f: fix(secrets): LatestVersion returns 0 for a version-less config; add ref-RBAC e2e (steveokay mokaysteve@gmail.com)
  • 99f2beb: fix(secrets): a version-less inheriting config is readable (steveokay mokaysteve@gmail.com)
  • e855fab: fix(secrets): address M3 final-review follow-ups (steveokay mokaysteve@gmail.com)
  • 5139eb3: fix(secrets): guard value_version->uint64 conversion (gosec G115); centralize DEK AAD (steveokay mokaysteve@gmail.com)
  • 94eaec0: fix(secrets): recover reads from the KEK rewrap-retire TOCTOU (steveokay mokaysteve@gmail.com)
  • 6e5b156: fix(secretsync): record config's current version on sync, not frozen 0 (steveokay mokaysteve@gmail.com)
  • 200739c: fix(secretsync): validate GitLab project id to prevent URL injection (steveokay mokaysteve@gmail.com)
  • 8ab5082: fix(spa): address final adversarial review findings (steveokay mokaysteve@gmail.com)
  • 47afc0d: fix(store): EnvironmentRepo.LastActivity filters soft-deleted environments (steveokay mokaysteve@gmail.com)
  • 6972066: fix(store): rewrap soft-deleted projects too (avoid stranding KEK on undelete) (steveokay mokaysteve@gmail.com)
  • 51c826d: fix(store): single-snapshot dump (repeatable read), table-scoped error wrapping, root-first configs order, in-tx emptiness re-check (steveokay mokaysteve@gmail.com)
  • fd7048a: fix(transit): enforce min_decryption_version in Verify; rewrap preserves AAD (steveokay mokaysteve@gmail.com)
  • 3d46df1: fix(transit): key-restricted transit tokens keyed by key name (steveokay mokaysteve@gmail.com)
  • ed9c43c: fix(web): RevealOnce — announce hint via Dialog description; guard clipboard copy (steveokay mokaysteve@gmail.com)
  • 3e13cb5: fix(web): align User and SealStatus types + all test mocks with real API shapes (steveokay mokaysteve@gmail.com)
  • 095f1f1: fix(web): avoid Array.at() in TableSearch test (tsconfig lib is ES2020) (steveokay mokaysteve@gmail.com)
  • 3937f0b: fix(web): board env rename toast shows the new name, not the stale prop (steveokay mokaysteve@gmail.com)
  • dbf2129: fix(web): declare color-scheme so dark-mode native popups are legible (steveokay mokaysteve@gmail.com) e8a53c5: fix(web): distinguish metadata errors from loading in overview rows (steveokay mokaysteve@gmail.com) 805634b: fix(web): drop staged type when removing a key so removed stays removed (steveokay mokaysteve@gmail.com) 7289e4c: fix(web): editor edit-cancel affordance + clear revealed on save (steveokay mokaysteve@gmail.com) 6940fa9: fix(web): errorMessage passes 403/409 curated messages before generic map (steveokay mokaysteve@gmail.com) 5c001c5: fix(web): hide export anchors in the audit forbidden state (steveokay mokaysteve@gmail.com) 09ee5be: fix(web): palette a11y — activedescendant, groups, IME + reopen-clear (steveokay mokaysteve@gmail.com) 4a413ea: fix(web): pin the RBAC matrix corner header on both axes (sticky top-0) (steveokay mokaysteve@gmail.com) 500c9d0: fix(web): project-board env skeleton, page heading, cycle-safe config tree (steveokay mokaysteve@gmail.com) 25451a6: fix(web): rename toast uses new name from mutation input (steveokay mokaysteve@gmail.com) 38b090b: fix(web): reset rekey mutation after reveal; skip cancel on completion (steveokay mokaysteve@gmail.com) 61a6ec4: fix(web): send {old,new} to /v1/auth/password (change-password was broken) (steveokay mokaysteve@gmail.com) 84d64b9: fix(web): solid modal surfaces (bg-elevated + backdrop-blur) to match the promote modal (steveokay mokaysteve@gmail.com) 1cc9a90: fix(web): stop env-column header overlap on many-environment boards (steveokay mokaysteve@gmail.com) c6cde62: fix(web): surface config-fetch errors on board & project cards (steveokay mokaysteve@gmail.com) 64c00cf: fix(web): teach cn() the custom rounded/shadow token scales (steveokay mokaysteve@gmail.com) c61553b: fix(web): trim bound to min_decryption_version; record B5 transit UI (steveokay mokaysteve@gmail.com) 1f0f883: fix(web): visible rollback-disabled hint; cover rollback failure toast (steveokay mokaysteve@gmail.com) f04932b: fix(web/editor): T8 review nits — restore URL stubs in test, real export count, guard nav reveal (steveokay mokaysteve@gmail.com) d9d3987: fix(web/editor): conditional zero-match hint (don't mention Changed only when off) — T9 nit (steveokay mokaysteve@gmail.com) a8a6a66: fix(web/editor): exportEnv single-quotes " values so export→import round-trips (steveokay mokaysteve@gmail.com) 1c13686: fix(web/nocturne): AA-safe primary button text + restore secondary/danger hover feedback (steveokay mokaysteve@gmail.com) 8c43d43: fix(web/nocturne): N5 T2 review nits — drop invisible seal toast, silence shell MSW, add sealed/seal-error tests (steveokay mokaysteve@gmail.com) ba5c4ff: fix(web/nocturne): N5 T4 review nits — positional claim-value aria-labels, add multi-claim + provider-delete tests (steveokay mokaysteve@gmail.com) c60be49: fix(web/nocturne): drop overflow-hidden so audit sticky header actually sticks (T2 review) (steveokay mokaysteve@gmail.com) 73b4a89: fix(web/nocturne): floor bucket math in relativeTime (59m59s was rendering 60m ago) + boundary tests (steveokay mokaysteve@gmail.com) 92f0122: fix(web/nocturne): pluralize editor key count (T2 review) (steveokay mokaysteve@gmail.com) be3510a: fix(web/nocturne): repoint Projects breadcrumb to /projects; HomePage useTitle; test-harness /projects route (T2 review) (steveokay mokaysteve@gmail.com) a9a3e16: fix(web/nocturne): share audit resultTone in activity feed + Pill status text, tooltips, skeleton height (T5 review) (steveokay mokaysteve@gmail.com) 1593b59: fix(web/nocturne): show overdue instead of 'next: X ago' in stat cards; NaN-guard soonest (T4 review nit) (steveokay mokaysteve@gmail.com) 08dacc6: fix(web/ops): drop unused within import (tsc noUnusedLocals) (steveokay mokaysteve@gmail.com) 35a655f: fix(web/ops): generalize IntervalModal heading (shared by rotation+sync) (steveokay mokaysteve@gmail.com) e034d02: fix(web/ops): guard negative run duration + surface sync keys_count (steveokay mokaysteve@gmail.com) 45f795b: fix(web/ops): reseed IntervalModal input on open (avoid stale value) (steveokay mokaysteve@gmail.com) 1ca8787: fix(web/ops): reset issue mutation after handoff to drop residual plaintext (steveokay mokaysteve@gmail.com) 8898670: fix(web/ops): surface non-403 enumeration errors + follow-up tests/docs (steveokay mokaysteve@gmail.com) Others f86ec9d: Add project spec and milestone 1 design doc (scaffold + crypto layer) (steveokay mokaysteve@gmail.com) b3b3374: Merge branch 'docs/integrations-hub-spec' (steveokay mokaysteve@gmail.com) a5db2de: Merge pull request #1 from steveokay/milestone-1-crypto (steveokay mokaysteve@gmail.com) 945a546: Merge pull request #10 from steveokay/chore/tracker-federation (steveokay mokaysteve@gmail.com) 62e9b4b: Merge pull request #100 from steveokay/feat/notifications (steveokay mokaysteve@gmail.com) 01dde8f: Merge pull request #101 from steveokay/feat/totp-2fa (steveokay mokaysteve@gmail.com) e99a3e7: Merge pull request #102 from steveokay/feat/account-lockout (steveokay mokaysteve@gmail.com) 642234c: Merge pull request #103 from steveokay/feat/metrics-health (steveokay mokaysteve@gmail.com) 12b2834: Merge pull request #104 from steveokay/feat/global-key-search (steveokay mokaysteve@gmail.com) d19864e: Merge pull request #105 from steveokay/feat/value-generator (steveokay mokaysteve@gmail.com) e6f4a0d: Merge pull request #106 from steveokay/feat/smtp-notifications (steveokay mokaysteve@gmail.com) 852d0df: Merge pull request #107 from steveokay/feat/editor-format-shortcuts (steveokay mokaysteve@gmail.com) 263ca3c: Merge pull request #108 from steveokay/docs/parked-decisions (steveokay mokaysteve@gmail.com) 58c3c82: Merge pull request #109 from steveokay/feat/tls-listener (steveokay mokaysteve@gmail.com) c902ab4: Merge pull request #11 from steveokay/milestone-5-auth (steveokay mokaysteve@gmail.com) ab120a9: Merge pull request #110 from steveokay/docs/tls-shipped (steveokay mokaysteve@gmail.com) 55cb5ed: Merge pull request #111 from steveokay/feat/secret-max-age (steveokay mokaysteve@gmail.com) ae3a0c1: Merge pull request #112 from steveokay/docs/max-age-shipped (steveokay mokaysteve@gmail.com) 94bd844: Merge pull request #113 from steveokay/feat/onboarding-checklist (steveokay mokaysteve@gmail.com) 391c485: Merge pull request #114 from steveokay/feat/sync-gitlab-awsssm (steveokay mokaysteve@gmail.com) d0f929a: Merge pull request #115 from steveokay/feat/unused-secret-detection (steveokay mokaysteve@gmail.com) 5d55357: Merge pull request #116 from steveokay/docs/sync-unused-shipped (steveokay mokaysteve@gmail.com) 3ed2177: Merge pull request #117 from steveokay/feat/cross-env-diff (steveokay mokaysteve@gmail.com) f6923a5: Merge pull request #118 from steveokay/feat/gcp-azure-autounseal (steveokay mokaysteve@gmail.com) 0ce711e: Merge pull request #119 from steveokay/feat/token-user-lastused (steveokay mokaysteve@gmail.com) e9510d7: Merge pull request #12 from steveokay/chore/rename-kh-to-janus (steveokay mokaysteve@gmail.com) 85d5727: Merge pull request #120 from steveokay/docs/three-features-shipped (steveokay mokaysteve@gmail.com) 8ca7fa1: Merge pull request #121 from steveokay/feat/ci-federation-issuers (steveokay mokaysteve@gmail.com) c4d0748: Merge pull request #122 from steveokay/feat/ops-hardening (steveokay mokaysteve@gmail.com) c44f456: Merge pull request #123 from steveokay/feat/sync-cloudflare-awssecrets (steveokay mokaysteve@gmail.com) a580bb5: Merge pull request #124 from steveokay/feat/editor-bulk-insights (steveokay mokaysteve@gmail.com) 1419d7d: Merge pull request #125 from steveokay/docs/four-features-shipped (steveokay mokaysteve@gmail.com) b9db9b6: Merge pull request #126 from steveokay/feat/break-glass (steveokay mokaysteve@gmail.com) 621fbe3: Merge pull request #127 from steveokay/feat/token-ip-allowlist (steveokay mokaysteve@gmail.com) 9ee33de: Merge pull request #128 from steveokay/docs/breakglass-ipallowlist-shipped (steveokay mokaysteve@gmail.com) 8480f93: Merge pull request #129 from steveokay/feat/secret-annotations (steveokay mokaysteve@gmail.com) 871c96f: Merge pull request #13 from steveokay/milestone-6-rbac (steveokay mokaysteve@gmail.com) ee9de64: Merge pull request #130 from steveokay/feat/sync-vercel-netlify (steveokay mokaysteve@gmail.com) acb338e: Merge pull request #131 from steveokay/feat/audit-shipping (steveokay mokaysteve@gmail.com) 1efbe07: Merge pull request #132 from steveokay/feat/scheduled-s3-backups (steveokay mokaysteve@gmail.com) b932b4c: Merge pull request #133 from steveokay/fix/board-header-overlap (steveokay mokaysteve@gmail.com) af6c40c: Merge pull request #134 from steveokay/docs/annotations-shipping-sync-backups (steveokay mokaysteve@gmail.com) d34e6f9: Merge pull request #135 from steveokay/feat/inbound-importers (steveokay mokaysteve@gmail.com) 596e72c: Merge pull request #136 from steveokay/feat/require-approval-prod-edits (steveokay mokaysteve@gmail.com) aec519f: Merge pull request #137 from steveokay/feat/rotators-mysql-redis (steveokay mokaysteve@gmail.com) a3eb312: Merge pull request #138 from steveokay/docs/approval-rotators-importers (steveokay mokaysteve@gmail.com) fb0071b: Merge pull request #139 from steveokay/feat/go-client-sdk (steveokay mokaysteve@gmail.com) 09a44f0: Merge pull request #14 from steveokay/docs/m6-rbac (steveokay mokaysteve@gmail.com) bb6579a: Merge pull request #140 from steveokay/feat/accessibility-pass (steveokay mokaysteve@gmail.com) 4a3b6ed: Merge pull request #141 from steveokay/feat/rotators-iam-oauth (steveokay mokaysteve@gmail.com) e72311b: Merge pull request #142 from steveokay/docs/rotators2-sdk-a11y (steveokay mokaysteve@gmail.com) d12682e: Merge pull request #143 from steveokay/docs/index-sync (steveokay mokaysteve@gmail.com) 656bd2d: Merge pull request #144 from steveokay/feat/typescript-sdk (steveokay mokaysteve@gmail.com) f20d331: Merge pull request #145 from steveokay/feat/python-sdk (steveokay mokaysteve@gmail.com) e422b9e: Merge pull request #146 from steveokay/feat/terraform-provider (steveokay mokaysteve@gmail.com) 0d825c1: Merge pull request #147 from steveokay/docs/terraform-sdks-shipped (steveokay mokaysteve@gmail.com) 48d52c8: Merge pull request #148 from steveokay/hardening/approval-bypass-fixes (steveokay mokaysteve@gmail.com) e445aff: Merge pull request #15 from steveokay/milestone-7-audit (steveokay mokaysteve@gmail.com) a756c7f: Merge pull request #16 from steveokay/docs/m7-audit (steveokay mokaysteve@gmail.com) 22ae8c0: Merge pull request #17 from steveokay/milestone-8-rest-api (steveokay mokaysteve@gmail.com) 7871a44: Merge pull request #18 from steveokay/milestone-9-cli (steveokay mokaysteve@gmail.com) c86bfeb: Merge pull request #19 from steveokay/milestone-10-transit (steveokay mokaysteve@gmail.com) fa7fd3a: Merge pull request #2 from steveokay/milestone-1-complete (steveokay mokaysteve@gmail.com) 68bbc76: Merge pull request #20 from steveokay/milestone-11-resolution (steveokay mokaysteve@gmail.com) 716d7d9: Merge pull request #21 from steveokay/milestone-12-spa-core (steveokay mokaysteve@gmail.com) 0c9adca: Merge pull request #22 from steveokay/milestone-13-ui-slice1 (steveokay mokaysteve@gmail.com) e124c60: Merge pull request #23 from steveokay/milestone-14-ui-slice2 (steveokay mokaysteve@gmail.com) acf8303: Merge pull request #24 from steveokay/milestone-15-b2-history (steveokay mokaysteve@gmail.com) c35db4e: Merge pull request #25 from steveokay/milestone-16-b3-audit (steveokay mokaysteve@gmail.com) 8d98e3b: Merge pull request #26 from steveokay/milestone-17-b4-tokens-members (steveokay mokaysteve@gmail.com) 5dfa479: Merge pull request #27 from steveokay/milestone-18-r1-dual-theme (steveokay mokaysteve@gmail.com) 49c2d45: Merge pull request #28 from steveokay/milestone-19-r2-shell-palette (steveokay mokaysteve@gmail.com) c021166: Merge pull request #29 from steveokay/milestone-20-r3-projects-board (steveokay mokaysteve@gmail.com) 3d49333: Merge pull request #3 from steveokay/rename-to-janus (steveokay mokaysteve@gmail.com) dcb346a: Merge pull request #30 from steveokay/milestone-21-r4-polish (steveokay mokaysteve@gmail.com) cfb23ab: Merge pull request #31 from steveokay/milestone-22-b5-transit-ui (steveokay mokaysteve@gmail.com) a13f809: Merge pull request #32 from steveokay/docs-tracker-sync (steveokay mokaysteve@gmail.com) 85bc8f3: Merge pull request #33 from steveokay/milestone-23-editor-redesign (steveokay mokaysteve@gmail.com) e6080e0: Merge pull request #34 from steveokay/worktree-oidc-federation (steveokay mokaysteve@gmail.com) 2584da2: Merge pull request #35 from steveokay/usage-metrics (steveokay mokaysteve@gmail.com) d94b9d8: Merge pull request #36 from steveokay/docs-metrics-tracker (steveokay mokaysteve@gmail.com) 7b566be: Merge pull request #37 from steveokay/kit-feedback (steveokay mokaysteve@gmail.com) 51a806a: Merge pull request #38 from steveokay/docs-kit-feedback-tracker (steveokay mokaysteve@gmail.com) 9345b35: Merge pull request #39 from steveokay/worktree-oidc-ci-federation (steveokay mokaysteve@gmail.com) 38efaae: Merge pull request #4 from steveokay/milestone-2-store (steveokay mokaysteve@gmail.com) 3de3486: Merge pull request #40 from steveokay/auth-unseal (steveokay mokaysteve@gmail.com) 3ed6549: Merge pull request #41 from steveokay/a11y-responsive (steveokay mokaysteve@gmail.com) 00eaef6: Merge pull request #42 from steveokay/docs-slice4-tracker (steveokay mokaysteve@gmail.com) 1a6d952: Merge pull request #43 from steveokay/docs-status-phase2 (steveokay mokaysteve@gmail.com) 07fd4ba: Merge pull request #44 from steveokay/editor-p2 (steveokay mokaysteve@gmail.com) 062e153: Merge pull request #45 from steveokay/docs-editor-p2-trackers (steveokay mokaysteve@gmail.com) a662790: Merge pull request #46 from steveokay/editor-ondemand (steveokay mokaysteve@gmail.com) 9e7a846: Merge pull request #47 from steveokay/docs-ondemand-trackers (steveokay mokaysteve@gmail.com) 0ccd39e: Merge pull request #48 from steveokay/ops-probes-seal-idle (steveokay mokaysteve@gmail.com) 5cf4a9b: Merge pull request #49 from steveokay/ops-backup-restore (steveokay mokaysteve@gmail.com) cea5778: Merge pull request #5 from steveokay/chore/tracker-m2-merged (steveokay mokaysteve@gmail.com) 8ef62d9: Merge pull request #51 from steveokay/fix/backup-preflight-table-check (steveokay mokaysteve@gmail.com) 90ced5c: Merge pull request #52 from steveokay/phase3-static-rotation (steveokay mokaysteve@gmail.com) 5363291: Merge pull request #53 from steveokay/phase3-sync-integrations (steveokay mokaysteve@gmail.com) 5a8df82: Merge pull request #54 from steveokay/phase3-dynamic-postgres-creds (steveokay mokaysteve@gmail.com) 551d560: Merge pull request #55 from steveokay/ops-console-web (steveokay mokaysteve@gmail.com) 4f1d0e6: Merge pull request #56 from steveokay/ops-console-followups (steveokay mokaysteve@gmail.com) c1fa0e9: Merge pull request #57 from steveokay/docs-gap-audit (steveokay mokaysteve@gmail.com) 0040fd2: Merge pull request #58 from steveokay/ui-redo-spec (steveokay mokaysteve@gmail.com) 5bbbc1e: Merge pull request #59 from steveokay/docs-status-refresh (steveokay mokaysteve@gmail.com) d73a286: Merge pull request #6 from steveokay/milestone-3-secrets (steveokay mokaysteve@gmail.com) 69e5e01: Merge pull request #60 from steveokay/ci-web-guard (steveokay mokaysteve@gmail.com) 0300a93: Merge pull request #61 from steveokay/nocturne-n1 (steveokay mokaysteve@gmail.com) ba94ae1: Merge pull request #62 from steveokay/nocturne-n2 (steveokay mokaysteve@gmail.com) a7b8ff7: Merge pull request #63 from steveokay/nocturne-n3 (steveokay mokaysteve@gmail.com) 089ec55: Merge pull request #64 from steveokay/nocturne-n4 (steveokay mokaysteve@gmail.com) e81ba41: Merge pull request #65 from steveokay/nocturne-n5 (steveokay mokaysteve@gmail.com) 322c86e: Merge pull request #66 from steveokay/nocturne-n6 (steveokay mokaysteve@gmail.com) c9ac2cf: Merge pull request #67 from steveokay/nocturne-n7 (steveokay mokaysteve@gmail.com) b795fa7: Merge pull request #68 from steveokay/editor-depth (steveokay mokaysteve@gmail.com) 5b6ddfb: Merge pull request #69 from steveokay/ops-console-depth (steveokay mokaysteve@gmail.com) 72334af: Merge pull request #7 from steveokay/chore/m3-review-followups (steveokay mokaysteve@gmail.com) a423070: Merge pull request #70 from steveokay/ops-console-depth-web (steveokay mokaysteve@gmail.com) 01186b6: Merge pull request #71 from steveokay/project-kek-rotation (steveokay mokaysteve@gmail.com) 9666785: Merge pull request #72 from steveokay/kek-toctou-fix (steveokay mokaysteve@gmail.com) 66fda61: Merge pull request #73 from steveokay/env-promotion (steveokay mokaysteve@gmail.com) cf81b75: Merge pull request #74 from steveokay/env-promotion-followups (steveokay mokaysteve@gmail.com) 96f2b91: Merge pull request #75 from steveokay/promotion-provenance (steveokay mokaysteve@gmail.com) e2cb29b: Merge pull request #76 from steveokay/modal-solidify (steveokay mokaysteve@gmail.com) 8f89232: Merge pull request #77 from steveokay/master-key-rotation (steveokay mokaysteve@gmail.com) 4eef1e3: Merge pull request #78 from steveokay/docs-gaps-refresh (steveokay mokaysteve@gmail.com) d87f73b: Merge pull request #79 from steveokay/api-hardening-pagination-idem (steveokay mokaysteve@gmail.com) 8adfa61: Merge pull request #8 from steveokay/milestone-4-bootstrap (steveokay mokaysteve@gmail.com) 3158106: Merge pull request #80 from steveokay/crypto-coverage-gate (steveokay mokaysteve@gmail.com) e960448: Merge pull request #81 from steveokay/ui-depth-trash-history-audit (steveokay mokaysteve@gmail.com) 17d8d19: Merge pull request #85 from steveokay/feat/cli-control-plane (steveokay mokaysteve@gmail.com) 394c9bb: Merge pull request #86 from steveokay/feat/release-hygiene (steveokay mokaysteve@gmail.com) 1f2eaea: Merge pull request #87 from steveokay/feat/promotion-approval (steveokay mokaysteve@gmail.com) f24b2d7: Merge pull request #88 from steveokay/feat/list-ergonomics (steveokay mokaysteve@gmail.com) 3f32aea: Merge pull request #89 from steveokay/feat/board-depth (steveokay mokaysteve@gmail.com) d214735: Merge pull request #9 from steveokay/docs/m4-operations (steveokay mokaysteve@gmail.com) 4f8fc83: Merge pull request #90 from steveokay/feat/typed-secrets (steveokay mokaysteve@gmail.com) 3a3f9e9: Merge pull request #91 from steveokay/feat/ui-polish-sweep (steveokay mokaysteve@gmail.com) 0db855b: Merge pull request #92 from steveokay/feat/rbac-matrix (steveokay mokaysteve@gmail.com) 2828b68: Merge pull request #93 from steveokay/feat/audit-depth (steveokay mokaysteve@gmail.com) 78a17fd: Merge pull request #94 from steveokay/feat/filename-keys (steveokay mokaysteve@gmail.com) b60bee1: Merge pull request #95 from steveokay/feat/atrium-ui (steveokay mokaysteve@gmail.com) 801f5bc: Merge pull request #96 from steveokay/feat/atrium-updates (steveokay mokaysteve@gmail.com) 6af5b29: Merge pull request #97 from steveokay/docs/freshness-pass (steveokay mokaysteve@gmail.com) 6ec5f96: Merge pull request #98 from steveokay/feat/session-management (steveokay mokaysteve@gmail.com) 49c76d3: Merge pull request #99 from steveokay/fix/change-password-fields (steveokay mokaysteve@gmail.com) b9a042f: Merge remote-tracking branch 'origin/main' into feat/rotators-iam-oauth (steveokay mokaysteve@gmail.com) 5eca50b: Merge remote-tracking branch 'origin/main' into feat/scheduled-s3-backups (steveokay mokaysteve@gmail.com) cf22f14: Merge remote-tracking branch 'origin/main' into feat/secret-annotations (steveokay mokaysteve@gmail.com) b3157d7: Merge remote-tracking branch 'origin/main' into feat/terraform-provider (steveokay mokaysteve@gmail.com) 093a6cc: Merge remote-tracking branch 'origin/main' into feat/terraform-provider (steveokay mokaysteve@gmail.com) 0c176d0: Merge remote-tracking branch 'origin/main' into feat/token-ip-allowlist (steveokay mokaysteve@gmail.com) d5146ef: Merge remote-tracking branch 'origin/main' into feat/typescript-sdk (steveokay mokaysteve@gmail.com) 0180836: Merge remote-tracking branch 'origin/main' into milestone-6-rbac (steveokay mokaysteve@gmail.com) c769ba2: build(oidc): add go-oidc/v3 + x/oauth2 (+ go-jose test dep) (steveokay mokaysteve@gmail.com) 67e8add: build(web): Dockerfile web stage + Makefile web/build/test wiring (steveokay mokaysteve@gmail.com) 33329df: build: goreleaser config + release Dockerfile (multi-arch binaries + GHCR image) (steveokay mokaysteve@gmail.com) 3825feb: chore(dev): move dev stack ports to 8210 (janus) and 5433 (postgres) (steveokay mokaysteve@gmail.com) b5f03a8: chore(go): pin toolchain go1.26.5 — clears govulncheck GO-2026-5856 (crypto/tls ECH) (steveokay mokaysteve@gmail.com) e0ba903: chore(oidc): go mod tidy — promote go-jose/v4 to a direct dependency (steveokay mokaysteve@gmail.com) cde0c49: chore(store): pin go1.26.4 toolchain (clears govulncheck); update trackers/docs (steveokay mokaysteve@gmail.com) 52f755b: chore(web): build export url with a single params object (no stray separator) (steveokay mokaysteve@gmail.com) a058f15: chore(web): drop orphaned revealKey endpoint (editor now raw-only) (steveokay mokaysteve@gmail.com) 888c3c6: chore(web): fix stale auth/me mock shape; amend spec for error-row treatment (steveokay mokaysteve@gmail.com) 624b040: chore(web): scaffold Vite + React-TS + Tailwind + Vitest project (steveokay mokaysteve@gmail.com) 136d102: chore(web/nocturne): N4 gate sweep — ConfirmDialog on kit buttons, ops nit, tracker (steveokay mokaysteve@gmail.com) c3969d2: chore(web/nocturne): N5 gate sweep — EmptyState/LoginPage alias fixes + ui-redo tracker (steveokay mokaysteve@gmail.com) 6be2ef8: chore(web/nocturne): N6 gate sweep + ui-redo tracker (steveokay mokaysteve@gmail.com) bb10c74: chore(web/nocturne): N7 verification sweep + ui-redo tracker (Nocturne N1–N7 complete) (steveokay mokaysteve@gmail.com) b4562a2: chore: apply Task 1 review fixes (bind pg to localhost, pin gosec, branch CI); add status tracker (steveokay mokaysteve@gmail.com) 71b7604: chore: gitignore .superpowers/ brainstorm scratch (steveokay mokaysteve@gmail.com) b7fc180: chore: gitignore local janus-cli.md reference (steveokay mokaysteve@gmail.com) f57a056: chore: ignore .claude/ local settings (steveokay mokaysteve@gmail.com) 9425b7a: chore: license Janus under Apache-2.0 (LICENSE + NOTICE) (steveokay mokaysteve@gmail.com) 023cc6a: chore: mark task 2 complete in status tracker (steveokay mokaysteve@gmail.com) a5f6b7f: chore: mark task 3 complete (steveokay mokaysteve@gmail.com) 6bce673: chore: mark task 4 complete (steveokay mokaysteve@gmail.com) 5d70e01: chore: mark task 5 complete (steveokay mokaysteve@gmail.com) d111a39: chore: mark task 6 complete (steveokay mokaysteve@gmail.com) 95ad4ea: chore: mark task 7 complete (steveokay mokaysteve@gmail.com) 68e7e02: chore: mark task 8 complete (steveokay mokaysteve@gmail.com) 103e08d: chore: mark task 9 complete — milestone 1 crypto layer done (steveokay mokaysteve@gmail.com) 6cb79a3: chore: rename kh -> janus (finish Keyhaven->Janus rename) (steveokay mokaysteve@gmail.com) 8b5af05: chore: scaffold repo (module, entrypoint, Makefile, compose, CI) (steveokay mokaysteve@gmail.com) 1236fb7: ci: fix web job for Atrium scripts + session-management docs sweep (steveokay mokaysteve@gmail.com) d1c2d38: ci: release workflow (goreleaser -> binaries + GHCR) + PR goreleaser check (steveokay mokaysteve@gmail.com) 0408ae1: ci: run web tests + dual-theme smoke on PRs (gaps.md 7.1) (steveokay mokaysteve@gmail.com) 19d0f42: docs(api): M8 REST API plan (9 tasks) + spec cascade correction (steveokay mokaysteve@gmail.com) be6ec38: docs(api): add Milestone 8 secret-facing REST API design spec (steveokay mokaysteve@gmail.com) acd7dec: docs(api): correct /v1/audit/verify response shape to match VerifyResult (steveokay mokaysteve@gmail.com) 76c5851: docs(api): hand-authored OpenAPI 3.1 spec for all /v1 endpoints (steveokay mokaysteve@gmail.com) 2f45f2d: docs(audit): M7 implementation plan (7 tasks, build-green ordering) (steveokay mokaysteve@gmail.com) e08b475: docs(audit): add Milestone 7 hash-chained audit log design spec (steveokay mokaysteve@gmail.com) fabc19c: docs(auth): add Milestone 5 auth design spec (steveokay mokaysteve@gmail.com) d0ed5ed: docs(auth): add Milestone 5 implementation plan (steveokay mokaysteve@gmail.com) 702c2cd: docs(bootstrap): add Milestone 4 implementation plan; spec notes two crypto additions (steveokay mokaysteve@gmail.com) 682873a: docs(bootstrap): add Milestone 4 server-bootstrap design spec (steveokay mokaysteve@gmail.com) 617ae1c: docs(bootstrap): rename Progress() to SubmittedShares() per Task-2 review (steveokay mokaysteve@gmail.com) 9490a7d: docs(changelog): consolidate 0.1.0 for first tag (2026-07-24) (steveokay mokaysteve@gmail.com) f3e00ea: docs(changelog): filename-style secret keys + materialize-to-files (steveokay mokaysteve@gmail.com) 8764270: docs(changelog): note dotted keys skip refs + GitHub Actions sync (steveokay mokaysteve@gmail.com) 3a85a9f: docs(changelog): typed secrets (steveokay mokaysteve@gmail.com) 3f68b2a: docs(cli): CLI reference, README quickstart, status/operations for M9 (steveokay mokaysteve@gmail.com) 4a199dd: docs(cli): M9 secrets CLI implementation plan (13 tasks) (steveokay mokaysteve@gmail.com) 0b6304e: docs(cli): add Milestone 9 secrets CLI design spec (steveokay mokaysteve@gmail.com) 503151e: docs(cli): mark §6 CLI control plane done; document CLI create/token flows (steveokay mokaysteve@gmail.com) 921f539: docs(crypto): document KMSClient.Decrypt fresh-plaintext ownership contract (steveokay mokaysteve@gmail.com) ef571f6: docs(crypto): note KMS/Shamir Init locking asymmetry; sync plan gosec version (steveokay mokaysteve@gmail.com) c26b87d: docs(design): add Nocturne canonical mockup (shell + editor + home, both themes) (steveokay mokaysteve@gmail.com) 56194c6: docs(design): dark redesign spec + Doppler-calibrated dark/light mockup (steveokay mokaysteve@gmail.com) 28f2bad: docs(design): lock approved UI visual system (mockup + token spec + CLAUDE.md rules) (steveokay mokaysteve@gmail.com) 54c96eb: docs(dynamic): clarify MarkRevoked idempotency + fix test comment (steveokay mokaysteve@gmail.com) 95eec28: docs(dynamic): design spec for Phase 3.3 dynamic Postgres credentials (steveokay mokaysteve@gmail.com) 790576e: docs(dynamic): implementation plan for Phase 3.3 dynamic Postgres creds (steveokay mokaysteve@gmail.com) 18b4086: docs(dynamic): operator + runbook docs for dynamic Postgres credentials (steveokay mokaysteve@gmail.com) 8639ed7: docs(dynamic): reconcile password-quoting deviation from the design spec (steveokay mokaysteve@gmail.com) c5478a7: docs(editor): on-demand reveal rework spec + plan (mount = masked-only, ephemeral values) (steveokay mokaysteve@gmail.com) 5c2febd: docs(editor): §3 P2 polish spec + plan (reveal-all/re-mask, ⌘S, dialog a11y) (steveokay mokaysteve@gmail.com) 9dc1e64: docs(fe): check off B2 version history + dialog/toast kit items (steveokay mokaysteve@gmail.com) 5d36fce: docs(fe): check off R2 shell & command palette (steveokay mokaysteve@gmail.com) c9c063a: docs(fe): check off R3 projects list & board (steveokay mokaysteve@gmail.com) 780ca5e: docs(fe): check off R4 screen polish (steveokay mokaysteve@gmail.com) 7973516: docs(fe): check off slice-1 foundations + shell; record review follow-ups (steveokay mokaysteve@gmail.com) aa3a589: docs(fe): check off slice-2 landing, dashboard, empty states; record mock-drift lesson (steveokay mokaysteve@gmail.com) 7f8be69: docs(fe): check off §3 secret editor redesign (steveokay mokaysteve@gmail.com) 647fa9b: docs(fe): check off §4 kit + §5 feedback (PR #37) (steveokay mokaysteve@gmail.com) a49d35f: docs(fe): check off §6 auth/unseal + §7 a11y/responsive (PRs #40, #41) (steveokay mokaysteve@gmail.com) 8f8eb9c: docs(fe): check off §8 usage-metrics dashboard (D, PR #35) (steveokay mokaysteve@gmail.com) 111287c: docs(fe): distinguish token vs member SHIPPED descriptions (steveokay mokaysteve@gmail.com) 9446a37: docs(fe): link slice-1 plan + record shadcn-lean decision in tracker (steveokay mokaysteve@gmail.com) 4674ce4: docs(fe): reconcile legacy dark-mode + env-tabs items delivered by R1/R3 (steveokay mokaysteve@gmail.com) 8bde214: docs(gaps): mark #7 (pagination+idempotency+hardening) done via PR #79/#80 (steveokay mokaysteve@gmail.com) f4e3e0d: docs(gaps): mark #8 UI depth done (1.10 trash/restore, 1.11 per-key history, 2.3 audit expand) — PR #81 (steveokay mokaysteve@gmail.com) 9ef7160: docs(gaps): mark ops-console §2.2 sorting/bulk/run-history/health done (steveokay mokaysteve@gmail.com) bdcd1e3: docs(gaps): mark tokens/members search+sort done (2.5/2.6) (steveokay mokaysteve@gmail.com) 3e98255: docs(gaps): mark §2.3 audit histogram + presets + page-size done (steveokay mokaysteve@gmail.com) f749165: docs(gaps): mark §2.4 projects/board depth done (steveokay mokaysteve@gmail.com) 1571033: docs(gaps): mark §2.6 RBAC matrix + picker search done (steveokay mokaysteve@gmail.com) 51cd837: docs(gaps): mark §4.1 rotation done; re-rank remaining priorities (steveokay mokaysteve@gmail.com) b33e0e7: docs(gaps): mark §7.2-7.5 release hygiene done (steveokay mokaysteve@gmail.com) 5f856d7: docs(guides): add two-factor authentication (TOTP) how-to (steveokay mokaysteve@gmail.com) 9d3d4d1: docs(k8s): explain sync target --api-url and --k8s-token (incl. Docker Desktop) (#84) (steveokay mokaysteve@gmail.com) 9e4ae32: docs(oidc): C1 login flow, endpoints, UI handoff; record crypto-lib exception (steveokay mokaysteve@gmail.com) 498630f: docs(oidc): CI federation (C2) flow, endpoints, GitHub Actions example (steveokay mokaysteve@gmail.com) 601e80a: docs(ops)+test(cli): update operations.md for authenticated janus seal; cover stored-address fallback (steveokay mokaysteve@gmail.com) 325eab6: docs(ops): document JANUS_SESSION_IDLE_TIMEOUT; clarify idle-timeout and probe-test comments (steveokay mokaysteve@gmail.com) a9dcc14: docs(plan): API hardening implementation plan (pagination, idempotency, timeouts) (steveokay mokaysteve@gmail.com) 15e6f85: docs(plan): B2 version history drawer implementation plan (steveokay mokaysteve@gmail.com) f76b15f: docs(plan): B3 audit viewer implementation plan (steveokay mokaysteve@gmail.com) 3b0fd89: docs(plan): B4 tokens & members implementation plan (steveokay mokaysteve@gmail.com) e71accc: docs(plan): B5 transit UI implementation plan (steveokay mokaysteve@gmail.com) ccf8de0: docs(plan): CLI control plane implementation plan (8 TDD tasks) (steveokay mokaysteve@gmail.com) 913fca1: docs(plan): Nocturne N1 implementation plan (tokens, shell, motion) (steveokay mokaysteve@gmail.com) 976f4a2: docs(plan): Nocturne N2 implementation plan (home command center, /projects, board enrichment) (steveokay mokaysteve@gmail.com) 4a3e31c: docs(plan): Nocturne N3 implementation plan (editor restyle + riders) (steveokay mokaysteve@gmail.com) d7c81fd: docs(plan): Nocturne N4 implementation plan (admin/ops restyle + timeAgo fold) (steveokay mokaysteve@gmail.com) 256c3af: docs(plan): Nocturne N5 implementation plan (settings hub + OIDC login button) (steveokay mokaysteve@gmail.com) 571b30c: docs(plan): Nocturne N6 implementation plan (ops create flows + ErrorBoundary/404) (steveokay mokaysteve@gmail.com) 5c22eb0: docs(plan): Nocturne N7 implementation plan (final polish sweep) (steveokay mokaysteve@gmail.com) fbcfe7a: docs(plan): OIDC CI federation (C2) — 14 TDD tasks for subagent-driven execution (steveokay mokaysteve@gmail.com) ceafea0: docs(plan): OIDC human login (C1) — 15 TDD tasks for subagent-driven execution (steveokay mokaysteve@gmail.com) 2c0ed60: docs(plan): Phase 3.2 sync integrations implementation plan (steveokay mokaysteve@gmail.com) 11b8856: docs(plan): R1 dual-theme foundation implementation plan (steveokay mokaysteve@gmail.com) 2c4ee73: docs(plan): R2 shell & command palette implementation plan (steveokay mokaysteve@gmail.com) a33f886: docs(plan): R3 projects list + env-columns board + create-project modal (steveokay mokaysteve@gmail.com) 7a83e89: docs(plan): React SPA core editor — 15-task TDD plan (steveokay mokaysteve@gmail.com) 527bf49: docs(plan): UI depth #8 — trash/restore + per-key history + audit detail (steveokay mokaysteve@gmail.com) 4b35090: docs(plan): UI slice 1 — design tokens + app shell implementation plan (steveokay mokaysteve@gmail.com) 4cf48ec: docs(plan): UI slice 2 — landing + EmptyState + project overview (steveokay mokaysteve@gmail.com) 3d0e34e: docs(plan): audit viewer depth implementation plan (gaps §2.3) (steveokay mokaysteve@gmail.com) 7963b39: docs(plan): component kit + feedback implementation plan (9 tasks) (steveokay mokaysteve@gmail.com) 95e5f7b: docs(plan): config inheritance + secret references — 12-task TDD plan (steveokay mokaysteve@gmail.com) f0d230f: docs(plan): correct N4 sticky-header approach — remove overflow-hidden; ops table stays non-sticky (T2 review finding) (steveokay mokaysteve@gmail.com) 916a0cf: docs(plan): correct localeCompare sort expectations in Task 1 test (steveokay mokaysteve@gmail.com) f490303: docs(plan): defer Task 9 (in-app unsaved guard) — needs data-router migration (steveokay mokaysteve@gmail.com) 72c8e40: docs(plan): drop redundant gitignore step in T3 (blanket dist/ already covers) (steveokay mokaysteve@gmail.com) 5f087d5: docs(plan): environment promotion (Phase A) implementation plan (15 tasks, TDD) (steveokay mokaysteve@gmail.com) 5ad3737: docs(plan): filename-style secret keys implementation plan (steveokay mokaysteve@gmail.com) dddab26: docs(plan): fix Task 5 test — soft-delete reuse row before undelete (slug clash) (steveokay mokaysteve@gmail.com) d5123f4: docs(plan): fix github secret-name validator identifier in 3.2 plan (steveokay mokaysteve@gmail.com) cca8add: docs(plan): integrations hub implementation plan (4 TDD tasks) (steveokay mokaysteve@gmail.com) 4dae325: docs(plan): list ergonomics implementation plan (6 TDD tasks) (steveokay mokaysteve@gmail.com) 5e5b345: docs(plan): master-key rotation implementation plan (12 tasks, TDD) (steveokay mokaysteve@gmail.com) 82ab88d: docs(plan): members RBAC matrix implementation plan (gaps §2.6) (steveokay mokaysteve@gmail.com) 39c2ba2: docs(plan): operations console (rotation/sync/dynamic) web UI — 11 TDD tasks (steveokay mokaysteve@gmail.com) 42ac5ef: docs(plan): operations console depth implementation plan (12 tasks, 2 phases) (steveokay mokaysteve@gmail.com) 37339bb: docs(plan): project-KEK rotation implementation plan (9 tasks, TDD) (steveokay mokaysteve@gmail.com) 1f90213: doc...