Commit Graph

175 Commits

Author SHA1 Message Date
Sacha Al Himdani
4c57d201a4 Make license declarations consistently MIT
The source headers, LICENSE files, and license metadata had drifted
apart. Align the entire project to MIT:

- Convert every source-file header to the MIT text across all comment
  styles (Go, TS, TSX, JS, MJS, SQL, CSS, GraphQL, shell), including
  SPDX-License-Identifier tags
- Set the root and cookie-banner LICENSE files to the MIT text with a
  "MIT License" title line
- Switch the package.json license fields, Docker image label, and
  cookie-banner README to MIT
- Update docs and the genmodels header generator accordingly
- Normalize copyright lines to a single format
  (Copyright (c) <year(s)> Probo Inc <hello@probo.com>.): unify the
  hello@getprobo.com and hello@probo.inc emails to hello@probo.com and
  the comma-separated years to a hyphenated range

Genuine third-party references are intentionally left untouched: the
Lucide icon attributions (Lucide is ISC) and the trivy dependency
license allowlist.

Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-13 16:21:14 +02:00
Sacha Al Himdani
db841d5f19 Release probod/v0.225.0
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-13 14:47:46 +02:00
Sacha Al Himdani
920cbb0a26 Release probod/v0.224.1
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-09 11:37:10 +02:00
Sacha Al Himdani
e8bd8e486a Release probod/v0.224.0
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-09 10:55:32 +02:00
Sacha Al Himdani
86c45875a4 Whitelist ownership grants via allow policies
Replace the deny-based restriction on granting OWNER with role-scoped
allow policies so authorization fails closed: admins may create and
update memberships only when the assigned role is not OWNER, and the
absence of a target role no longer implies permission.

To keep console UI gating accurate without loosening the base grants,
the permission field gains an optional typed options argument
(PermissionOptionsInput) that forwards target_role into the dry-run
authorization. Only the two role-related console calls (create user,
update membership) pass it; the OWNER option stays hidden for admins via
the existing assignable-roles helper.

Add a non-regression test that an admin cannot promote a member to OWNER
while still being able to change members between non-owner roles.
2026-07-08 18:41:13 +02:00
Sacha Al Himdani
ff9cb881e8 Enforce owner-only member removal and ownership grants via policy
An organization ADMIN could hard-remove members, including OWNERs, because
removeUser (connect and MCP) only checked the weaker iam:membership-profile:delete
gate. Authorize the owner-only iam:membership:delete instead, and expose the
source attribute on MembershipProfile so the owner grant's non-SCIM condition
can match.

Consolidate ownership-grant authorization into policy for both createUser and
updateMembership: each resolver passes the requested role as a target_role
attribute and ADMIN is denied granting ownership via deny-create-owner /
deny-promote-owner. target_role is distinct from resource.role, which is the
target's current role and guards editing existing owners. With no callers left,
the iam:membership-role:set-owner action (grant and OAuth2 scope) is removed.

Also pass the authorized scope through to the RemoveUser/CreateUser services,
gate the console Remove action on iam:membership:delete, and add regression
tests plus a changelog entry.

Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-08 17:59:45 +02:00
Ludovic Vielle
3443e63184 Release probod/v0.223.3
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-07-06 17:06:03 +02:00
Sacha Al Himdani
119b20bfbc Release probod/v0.223.2
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-03 17:45:53 +02:00
Bryan Frimin
83cceb5d00 Release probod/v0.223.1
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-03 12:14:35 +02:00
Sacha Al Himdani
cdb1b679bd Release probod/v0.223.0
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-02 19:39:07 +02:00
Sacha Al Himdani
3a37c957c7 Release prb/v0.199.0
Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-02 19:36:38 +02:00
Ludovic Vielle
be33f72f7d Point prb auth login at eu.probo.com and us.probo.com
The CLI still defaulted to *.console.getprobo.com for region
selection, examples, and the non-interactive fallback host. Align
those with the current SaaS hostnames so new logins store the right
config keys.

Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-07-02 18:25:41 +02:00
Ludovic Vielle
a3b65a6449 Release probod/v0.222.2
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-07-01 12:09:45 +02:00
Ludovic Vielle
2be3e18437 Release probod-bootstrap/v0.4.1
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-07-01 00:07:10 +02:00
Ludovic Vielle
e27c4b99ff Release probod/v0.222.1
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-07-01 00:04:15 +02:00
Bryan Frimin
c7ca36b767 Release probod-bootstrap/v0.4.0
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-06-30 19:40:49 +02:00
Bryan Frimin
bc581eebf9 Release probod/v0.222.0
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-06-30 19:40:36 +02:00
Bryan Frimin
db3ff9e218 Release prb/v0.198.0
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-06-30 19:40:32 +02:00
Bryan Frimin
a07e655a05 Style
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-30 19:15:17 +02:00
Bryan Frimin
3f70047f72 Allow json output
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-30 19:07:03 +02:00
Ludovic Vielle
9f9ace2cb8 Release probod/v0.221.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-30 13:08:37 +02:00
Ludovic Vielle
f9489f6e53 Release probod-bootstrap/v0.3.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-30 13:03:22 +02:00
Ludovic Vielle
5cff72ce5b Add Parameter Store to bootstrap resolver
probod-bootstrap could only resolve aws:// Secrets Manager refs.
Add awsps:// for SSM Parameter Store (GetParameter with decryption)
and awssm:// as an explicit Secrets Manager prefix. Keep aws:// for
backward compatibility. Values are cached per run per backend.
Update Helm, .env.example, and probod-bootstrap changelog.

Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-29 14:39:13 +02:00
Ludovic Vielle
14f52f0ef4 Release probod/v0.220.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-25 10:34:47 +02:00
Ludovic Vielle
8b21430ec1 Release prb/v0.197.1
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-25 10:34:05 +02:00
Ludovic Vielle
25b2c4fc71 Release proboctl/v0.8.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-24 21:51:30 +02:00
Ludovic Vielle
61350c88b0 Release probod-bootstrap/v0.2.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-24 21:50:58 +02:00
Ludovic Vielle
00010ce104 Release probod/v0.219.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-24 21:49:42 +02:00
Ludovic Vielle
2b8f6f5b3b Add Secrets Manager resolution to probod-bootstrap
Introduce a Resolver that owns env lookup and typed parsing for
probod-bootstrap. Env values prefixed with aws://<secret-id> are
fetched from AWS Secrets Manager (plaintext SecretString); each
secret ID is cached per run. Builder now takes a Resolver only.

Prefix every probod-bootstrap input with PROBOD_ so bootstrap config
does not collide with unrelated process environment (for example
AWS_* used by other tooling). Secrets Manager authentication uses
the standard AWS SDK default chain (AWS_REGION, IAM role, profile);
PROBOD_AWS_* vars configure S3 in the generated config only.

Update Helm deployment env names, GNUmakefile dev-config, Lima
provision, e2e testutil, compose.prod.yaml, and docs.

Deployments must rename bootstrap env vars to PROBOD_* (e.g.
AUTH_COOKIE_SECRET → PROBOD_AUTH_COOKIE_SECRET).

BREAKING CHANGE: all env vars are now prefixed by `PROBOD_`.

Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-24 20:24:53 +02:00
Émile Ré
55fa392217 Release proboctl/v0.7.1
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-06-23 12:03:06 +02:00
Émile Ré
46d552da38 Release probod/v0.218.1
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-06-23 12:01:02 +02:00
Émile Ré
14aa6c3196 Release probod/v0.218.0
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-06-23 11:39:20 +02:00
Bryan Frimin
76ce4ced28 Release probod/v0.217.0
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-22 17:43:23 +02:00
Bryan Frimin
66b8e32b54 Release prb/v0.197.0
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-22 17:42:24 +02:00
Bryan Frimin
c24e7f7ae8 Release probod/v0.216.1 2026-06-19 18:50:55 +02:00
Bryan Frimin
5d37d9899c Release probod/v0.216.0
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-19 17:27:19 +02:00
Émile Ré
d4b0040e95 Release probod/v0.215.1 2026-06-19 17:12:27 +02:00
Émile Ré
ff5e0d8706 Release proboctl/v0.7.0
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-06-19 15:24:38 +02:00
Émile Ré
42ddefc261 Release probod/v0.215.0
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-06-19 15:19:31 +02:00
Ludovic Vielle
e79747a5f3 Release probod/v0.214.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-19 10:27:27 +02:00
Ludovic Vielle
9e22f75442 Release prb/v0.196.0
Signed-off-by: Ludovic Vielle <ludovic@probo.com>
2026-06-19 10:26:58 +02:00
Émile Ré
25151fa089 Release proboctl/v0.6.0 2026-06-18 17:49:39 +02:00
Émile Ré
8906140ab3 Release probod/v0.213.0 2026-06-18 17:49:32 +02:00
Bryan Frimin
c9b74bac4a Release probod/v0.212.0 2026-06-18 13:32:37 +02:00
Bryan Frimin
4535cd47fd Style
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 11:42:12 +02:00
Bryan Frimin
5495f8e86b Release probod/v0.211.2
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 11:39:19 +02:00
Bryan Frimin
7e4b060c12 Fix exit codes
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 11:36:49 +02:00
Bryan Frimin
f40be113cf Release probod/v0.211.1 2026-06-18 11:09:11 +02:00
Bryan Frimin
44cb00a1a1 Fix missing os exit code on error
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 11:06:59 +02:00
Bryan Frimin
9678afac6a Release proboctl/v0.5.0
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 11:04:22 +02:00