hook0 activity https://gitlab.com/hook0 2026-03-16T16:26:26Z tag:gitlab.com,2026-03-16:5209196917 Romain Baumier pushed to project branch feat/frontend-redesign at hook0 / hook0 2026-03-16T16:26:26Z rbaumier Romain Baumier

Romain Baumier (0bd23b5c) at 16 Mar 16:26

refactor(frontend): DRY cleanup — composables, shared components, u...

... and 55 more commits

tag:gitlab.com,2026-03-16:5208139987 François-Guillaume Ribreau deleted project branch feature/sdk-releases at hook0 / hook0 2026-03-16T12:47:19Z fgribreau François-Guillaume Ribreau

François-Guillaume Ribreau (b41109a5) at 16 Mar 12:47

tag:gitlab.com,2026-03-16:5208139693 François-Guillaume Ribreau accepted merge request !181: feat(release): add sdk release workflow with manual triggers at hook0 / hook0 2026-03-16T12:47:15Z fgribreau François-Guillaume Ribreau
  • Add manual release:patch/minor/major jobs on master branch
  • Add git-cliff for changelog generation
  • Add cargo-release integration for version bumping
  • Add semver-checks for API compatibility validation
  • Disable arm64 builds to speed up CI
  • Restrict release triggers to master branch only

:rotating_light::rotating_light::rotating_light: Variables to add in gitlab CI: :rotating_light::rotating_light:

  | Variable             | Description                                           | Scope                      |
  |----------------------|-------------------------------------------------------|----------------------------|
  | 🆗 GITLAB_RELEASE_TOKEN | Personal access token avec scope write_repository     | Toutes les releases        |
  | 🆗 NPM_TOKEN            | Token npm automation pour publier sur npmjs.org       | SDK release                |
  | 🆗 CARGO_TOKEN          | Token API crates.io                                   | SDK release                |
  | 🆗 DOCKERHUB_USERNAME   | Username Docker Hub                                   | Container release          |
  | 🆗 DOCKERHUB_TOKEN      | Access token Docker Hub                               | Container release          |
  | 🆗 GITHUB_USERNAME      | Username GitHub pour GHCR                             | Container release          |
  | 🆗 GITHUB_TOKEN         | GitHub PAT avec scope packages:write + contents:write | Container + GitHub release |

Summary by CodeRabbit

  • New Features
    • Added automated SDK release pipeline for TypeScript and Rust clients
    • Added semantic versioning validation for SDK releases
  • Chores
    • Updated SDK versions to 1.0.0
    • Enhanced release automation and CI/CD infrastructure
    • Updated CI documentation with new configuration variables and release process steps
tag:gitlab.com,2026-03-16:5208139681 François-Guillaume Ribreau pushed to project branch master at hook0 / hook0 2026-03-16T12:47:15Z fgribreau François-Guillaume Ribreau

François-Guillaume Ribreau (ee46a78d) at 16 Mar 12:47

Merge branch 'feature/sdk-releases' into 'master'

... and 1 more commit

tag:gitlab.com,2026-03-16:5208139071 François-Guillaume Ribreau approved merge request !181: feat(release): add sdk release workflow with manual triggers at hook0 / hook0 2026-03-16T12:47:07Z fgribreau François-Guillaume Ribreau
  • Add manual release:patch/minor/major jobs on master branch
  • Add git-cliff for changelog generation
  • Add cargo-release integration for version bumping
  • Add semver-checks for API compatibility validation
  • Disable arm64 builds to speed up CI
  • Restrict release triggers to master branch only

:rotating_light::rotating_light::rotating_light: Variables to add in gitlab CI: :rotating_light::rotating_light:

  | Variable             | Description                                           | Scope                      |
  |----------------------|-------------------------------------------------------|----------------------------|
  | 🆗 GITLAB_RELEASE_TOKEN | Personal access token avec scope write_repository     | Toutes les releases        |
  | 🆗 NPM_TOKEN            | Token npm automation pour publier sur npmjs.org       | SDK release                |
  | 🆗 CARGO_TOKEN          | Token API crates.io                                   | SDK release                |
  | 🆗 DOCKERHUB_USERNAME   | Username Docker Hub                                   | Container release          |
  | 🆗 DOCKERHUB_TOKEN      | Access token Docker Hub                               | Container release          |
  | 🆗 GITHUB_USERNAME      | Username GitHub pour GHCR                             | Container release          |
  | 🆗 GITHUB_TOKEN         | GitHub PAT avec scope packages:write + contents:write | Container + GitHub release |

Summary by CodeRabbit

  • New Features
    • Added automated SDK release pipeline for TypeScript and Rust clients
    • Added semantic versioning validation for SDK releases
  • Chores
    • Updated SDK versions to 1.0.0
    • Enhanced release automation and CI/CD infrastructure
    • Updated CI documentation with new configuration variables and release process steps
tag:gitlab.com,2026-03-16:5207085937 Hook0 bot commented on merge request !181 at hook0 / hook0 2026-03-16T08:52:00Z hook0-bot Hook0 bot

⚠️ Potential issue | 🟠 Major

Avoid direct curl | bash installer execution in CI.

Line 14 executes an unpinned remote script, which weakens supply-chain guarantees for a release gate job. Prefer a pinned installer source (commit/tag) plus checksum verification before execution.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ci/semver-checks.gitlab-ci.yml` around lines 14 - 15, The CI currently pipes
an unpinned remote script (install-from-binstall-release.sh) into bash and
installs cargo-semver-checks directly, which is a supply-chain risk; update the
job to fetch a pinned release (specific commit SHA or tag) of the
installer/script and verify its checksum or GPG signature before executing, or
avoid the remote-script path entirely by using a reproducible alternative (e.g.,
install cargo-semver-checks from a verified cargo/crates.io release or use a
pinned cargo-binstall binary) — change references to
install-from-binstall-release.sh and the cargo binstall invocation for
[email protected] so the pipeline downloads a pinned artifact, performs
integrity verification, then executes the trusted installer.
tag:gitlab.com,2026-03-16:5207085914 Hook0 bot commented on merge request !181 at hook0 / hook0 2026-03-16T08:52:00Z hook0-bot Hook0 bot

⚠️ Potential issue | 🟠 Major

Avoid embedding credentials in Git remote URLs.

Line 89 places the token directly in the URL, which is high-risk for leakage and scanner findings. Use a clean remote URL plus auth header/credential helper instead.

Safer pattern
-    - git remote set-url origin "https://oauth2:${GITLAB_RELEASE_TOKEN}@gitlab.com/${CI_PROJECT_PATH}.git"
+    - git remote set-url origin "https://gitlab.com/${CI_PROJECT_PATH}.git"
+    - git config http.https://gitlab.com/.extraheader "Authorization: Bearer ${GITLAB_RELEASE_TOKEN}"
📝 Committable suggestion

‼️ IMPORTANT Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    - git remote set-url origin "https://gitlab.com/${CI_PROJECT_PATH}.git"
    - git config http.https://gitlab.com/.extraheader "Authorization: Bearer ${GITLAB_RELEASE_TOKEN}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ci/release-sdk.gitlab-ci.yml` at line 89, Replace the embedded-token remote
URL by setting the remote to a clean URL via the existing git remote set-url
origin command (use "https://gitlab.com/${CI_PROJECT_PATH}.git") and stop
interpolating GITLAB_RELEASE_TOKEN into the URL; then authenticate via a safe
mechanism instead (for example configure an HTTP auth header or credential
helper in CI using the GITLAB_RELEASE_TOKEN—set an auth header like
AUTHORIZATION: Bearer $GITLAB_RELEASE_TOKEN or use git credential helper) so the
token is never written into the remote URL. Ensure changes touch the git remote
set-url origin invocation and any CI steps that currently assume the
token-in-URL behavior.
tag:gitlab.com,2026-03-16:5207085872 Hook0 bot commented on merge request !181 at hook0 / hook0 2026-03-16T08:51:59Z hook0-bot Hook0 bot

Actionable comments posted: 2

🧹 Nitpick comments (3)
cliff.toml (1)

56-62: Duplicate ^ci parser causes unreachable grouping rule.

Line 56 already captures ^ci, so the ^ci -> CI rule at Line 61 will never be used. Keep only one CI mapping to avoid ambiguous changelog grouping.

Suggested cleanup
 commit_parsers = [
     { message = "^.*!", group = "Breaking Changes" },
     { body = "BREAKING CHANGE", group = "Breaking Changes" },
@@
-    { message = "^ci", group = "CI/CD" },
+    { message = "^ci", group = "CI/CD" },
     { message = "^build", group = "Build" },
@@
-    { message = "^ci", group = "CI" },
     { body = ".*security", group = "Security" },
 ]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@cliff.toml` around lines 56 - 62, There are two duplicate commit-parsing
entries matching the same pattern { message = "^ci" } which makes the later {
message = "^ci", group = "CI" } unreachable; remove or consolidate the duplicate
by keeping a single { message = "^ci", group = "CI" } (or change the original to
the intended group) and delete the other { message = "^ci", ... } entry so only
one CI mapping remains.
ci/README.md (2)

89-105: Consider documenting SDK-specific requirements and validations.

The SDK Release Process section is clear but could be enhanced by mentioning:

  1. Which CI variables are required for SDK releases (NPM_TOKEN, CARGO_TOKEN)
  2. Whether semver-checks validation (mentioned in PR objectives) runs as part of the release pipeline or during MRs
📝 Suggested additions to SDK Release Process
 ## SDK Release Process
 
 SDK releases are independent from main releases and publish the TypeScript and Rust clients.
+
+**Required CI Variables**: `NPM_TOKEN`, `CARGO_TOKEN`
 
 1. On the master branch pipeline, find the manual jobs in `trigger-release` stage:
    - `sdk-release:patch` - Bumps patch version (1.0.0 → 1.0.1)
    - `sdk-release:minor` - Bumps minor version (1.0.0 → 1.1.0)
    - `sdk-release:major` - Bumps major version (1.0.0 → 2.0.0)
 2. Click the play button on the desired release type
 3. The job will:
    - Bump versions in clients/rust/Cargo.toml and clients/typescript/package.json
    - Create a commit with the version bump
    - Create and push a git tag (e.g., sdk-v1.0.1)
 4. The tag triggers the SDK release pipeline which:
    - Publishes `hook0-client` to npm
    - Publishes `hook0-client` to crates.io
+
+**Note**: Semantic versioning compliance for Rust clients is validated automatically on merge requests to master.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ci/README.md` around lines 89 - 105, Update the "SDK Release Process" docs to
explicitly list required CI variables (NPM_TOKEN and CARGO_TOKEN) and where they
must be set (pipeline/CI project settings) and clarify whether the semver-checks
validation runs in the release pipeline or during merge requests (reference the
semver-checks job and the trigger-release stage and
sdk-release:patch/minor/major jobs); add a short note about any additional
required permissions or scopes for those tokens and a one-line pointer to the
semver-checks behavior (e.g., "semver-checks runs on MRs" or "semver-checks runs
as part of the SDK release pipeline") so readers know when validation occurs.

17-23: Clarify setup instructions for all required tokens.

The current instructions focus only on creating GITLAB_RELEASE_TOKEN but don't guide users on obtaining tokens from external services (npm, crates.io, Docker Hub, GitHub). Additionally, marking usernames as "Masked" is unnecessary since they're not sensitive.

📝 Suggested improvement for setup clarity
 ### Setup in GitLab
 
-1. Go to https://gitlab.com/-/profile/personal_access_tokens
-2. Create a token with `write_repository` scope for `GITLAB_RELEASE_TOKEN`
-3. Go to Settings > CI/CD > Variables
-4. Add each variable with its value
-5. Mark all as "Protected" and "Masked"
+1. Obtain required tokens:
+   - GitLab: Create a [personal access token](https://gitlab.com/-/profile/personal_access_tokens) with `write_repository` scope
+   - npm: Create an [automation token](https://docs.npmjs.com/creating-and-viewing-access-tokens) for publishing
+   - crates.io: Generate an [API token](https://crates.io/settings/tokens)
+   - Docker Hub: Create an [access token](https://hub.docker.com/settings/security)
+   - GitHub: Create a [PAT](https://github.com/settings/tokens) with `packages:write` and `contents:write` scopes
+2. Go to Settings > CI/CD > Variables in your GitLab project
+3. Add each variable from the table above:
+   - Mark all tokens as "Protected" and "Masked"
+   - Mark usernames as "Protected" only (no need to mask)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ci/README.md` around lines 17 - 23, Update the "Setup in GitLab" section to
list all required CI variables (e.g., GITLAB_RELEASE_TOKEN, NPM_TOKEN,
CRATES_IO_TOKEN, DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, GITHUB_TOKEN) and add
one-line guidance for obtaining each (link or source: npm personal access token,
crates.io API token, Docker Hub settings, GitHub PAT), then instruct adding them
under Settings > CI/CD > Variables and mark only sensitive secrets
(tokens/passwords) as "Protected" and "Masked" while noting that usernames
(e.g., DOCKERHUB_USERNAME) should be "Protected" but not "Masked"; update the
bullet steps in the "Setup in GitLab" block to reflect these variable names and
masking/protection guidance.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ci/release-sdk.gitlab-ci.yml`:
- Line 89: Replace the embedded-token remote URL by setting the remote to a
clean URL via the existing git remote set-url origin command (use
"https://gitlab.com/${CI_PROJECT_PATH}.git") and stop interpolating
GITLAB_RELEASE_TOKEN into the URL; then authenticate via a safe mechanism
instead (for example configure an HTTP auth header or credential helper in CI
using the GITLAB_RELEASE_TOKEN—set an auth header like AUTHORIZATION: Bearer
$GITLAB_RELEASE_TOKEN or use git credential helper) so the token is never
written into the remote URL. Ensure changes touch the git remote set-url origin
invocation and any CI steps that currently assume the token-in-URL behavior.

In `@ci/semver-checks.gitlab-ci.yml`:
- Around line 14-15: The CI currently pipes an unpinned remote script
(install-from-binstall-release.sh) into bash and installs cargo-semver-checks
directly, which is a supply-chain risk; update the job to fetch a pinned release
(specific commit SHA or tag) of the installer/script and verify its checksum or
GPG signature before executing, or avoid the remote-script path entirely by
using a reproducible alternative (e.g., install cargo-semver-checks from a
verified cargo/crates.io release or use a pinned cargo-binstall binary) — change
references to install-from-binstall-release.sh and the cargo binstall invocation
for [email protected] so the pipeline downloads a pinned artifact,
performs integrity verification, then executes the trusted installer.

---

Nitpick comments:
In `@ci/README.md`:
- Around line 89-105: Update the "SDK Release Process" docs to explicitly list
required CI variables (NPM_TOKEN and CARGO_TOKEN) and where they must be set
(pipeline/CI project settings) and clarify whether the semver-checks validation
runs in the release pipeline or during merge requests (reference the
semver-checks job and the trigger-release stage and
sdk-release:patch/minor/major jobs); add a short note about any additional
required permissions or scopes for those tokens and a one-line pointer to the
semver-checks behavior (e.g., "semver-checks runs on MRs" or "semver-checks runs
as part of the SDK release pipeline") so readers know when validation occurs.
- Around line 17-23: Update the "Setup in GitLab" section to list all required
CI variables (e.g., GITLAB_RELEASE_TOKEN, NPM_TOKEN, CRATES_IO_TOKEN,
DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, GITHUB_TOKEN) and add one-line guidance for
obtaining each (link or source: npm personal access token, crates.io API token,
Docker Hub settings, GitHub PAT), then instruct adding them under Settings >
CI/CD > Variables and mark only sensitive secrets (tokens/passwords) as
"Protected" and "Masked" while noting that usernames (e.g., DOCKERHUB_USERNAME)
should be "Protected" but not "Masked"; update the bullet steps in the "Setup in
GitLab" block to reflect these variable names and masking/protection guidance.

In `@cliff.toml`:
- Around line 56-62: There are two duplicate commit-parsing entries matching the
same pattern { message = "^ci" } which makes the later { message = "^ci", group
= "CI" } unreachable; remove or consolidate the duplicate by keeping a single {
message = "^ci", group = "CI" } (or change the original to the intended group)
and delete the other { message = "^ci", ... } entry so only one CI mapping
remains.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3e531c4-f93d-499b-ab82-fb99f67bf832

📥 Commits

Reviewing files that changed from the base of the PR and between 14262cde and b41109a5.

Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (14)
  • .gitlab-ci.yml
  • api/.gitlab-ci.yml
  • api/Cargo.toml
  • ci/README.md
  • ci/pre-release-sdk.sh
  • ci/pre-release.sh
  • ci/release-sdk.gitlab-ci.yml
  • ci/semver-checks.gitlab-ci.yml
  • clients/rust/.gitlab-ci.yml
  • clients/rust/Cargo.toml
  • clients/typescript/.gitlab-ci.yml
  • cliff.toml
  • frontend/.gitlab-ci.yml
  • output-worker/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (5)
  • clients/typescript/.gitlab-ci.yml
  • api/.gitlab-ci.yml
  • api/Cargo.toml
  • ci/pre-release-sdk.sh
  • clients/rust/Cargo.toml
tag:gitlab.com,2026-03-16:5207052995 Romain Baumier pushed to project branch feature/sdk-releases at hook0 / hook0 2026-03-16T08:43:41Z rbaumier Romain Baumier

Romain Baumier (b41109a5) at 16 Mar 08:43

Merge remote-tracking branch 'origin/master' into feature/sdk-releases

... and 40 more commits

tag:gitlab.com,2026-03-16:5207030263 François-Guillaume Ribreau commented on merge request !185 at hook0 / hook0 2026-03-16T08:39:10Z fgribreau François-Guillaume Ribreau

@dsferruzza aie tu m'as pas ping sur ce commentaire donc je ne l'ai pas vu :/

(je pensais l'avoir fix) pour moi ces tests devraient utiliser nos repository pour créer les ressources, par contre valider la suppression c'est très pertinent car ça nous permet de faire évoluer ce code pour faire du load-test (un user avec beaucoup de données d'associées)

tag:gitlab.com,2026-03-16:5207020335 François-Guillaume Ribreau commented on merge request !181 at hook0 / hook0 2026-03-16T08:36:25Z fgribreau François-Guillaume Ribreau

@rbaumier please rebase it and I will merge it then

tag:gitlab.com,2026-03-16:5207014616 François-Guillaume Ribreau commented on merge request !159 at hook0 / hook0 2026-03-16T08:34:51Z fgribreau François-Guillaume Ribreau

closing, will re-do it later

tag:gitlab.com,2026-03-16:5207014477 François-Guillaume Ribreau closed merge request !159: feat(api): allow to filter subscriptions by metadata at hook0 / hook0 2026-03-16T08:34:49Z fgribreau François-Guillaume Ribreau

Closes #97 !155

tag:gitlab.com,2026-03-16:5207013567 François-Guillaume Ribreau commented on merge request !161 at hook0 / hook0 2026-03-16T08:34:33Z fgribreau François-Guillaume Ribreau

closing, will re-do it later

tag:gitlab.com,2026-03-16:5207013559 François-Guillaume Ribreau closed merge request !161: Retry schedules and automatic endpoint deactivation at hook0 / hook0 2026-03-16T08:34:33Z fgribreau François-Guillaume Ribreau

Fixes #29 & #94

tag:gitlab.com,2026-03-16:5207012930 François-Guillaume Ribreau closed merge request !150: Draft: feat: implement configurable retry per subscription at hook0 / hook0 2026-03-16T08:34:23Z fgribreau François-Guillaume Ribreau

Fixes #42 & #29

  • Add retry_config column to subscription table (JSONB)
  • Update API Subscription struct with RetryConfig
  • Modify subscription creation/update handlers to handle retry config
  • Update output-worker to read and use per-subscription retry settings
  • Add UI components for configuring retry settings in subscription forms
  • Add tests for retry configuration functionality

Allows each subscription to have custom retry configuration including:

  • Max fast retries (exponential backoff)
  • Max slow retries (fixed interval)
  • Fast retry delay (initial delay for exponential backoff)
  • Max fast retry delay (cap for exponential backoff)
  • Slow retry delay (fixed interval between slow retries)
tag:gitlab.com,2026-03-16:5207012908 François-Guillaume Ribreau commented on merge request !150 at hook0 / hook0 2026-03-16T08:34:23Z fgribreau François-Guillaume Ribreau

closing, will re-do it later

tag:gitlab.com,2026-03-16:5207012369 François-Guillaume Ribreau closed merge request !151: feat: implement comprehensive authentication system at hook0 / hook0 2026-03-16T08:34:14Z fgribreau François-Guillaume Ribreau

Fixes #104

  • Add OAuth2 Bearer token authentication with scopes and expiration
  • Implement client certificate authentication with X.509 validation
  • Add basic authentication support with credential validation
  • Create modular authentication architecture with provider abstraction
  • Add secure secret management with encryption at rest
  • Implement database schema for authentication configuration
  • Add frontend components for authentication provider configuration
  • Create comprehensive ADR documentation for architectural decisions

Database changes:

  • New authentication table with encrypted secrets storage
  • Support for OAuth2, Certificate, and Basic auth configurations
  • Proper indexing and constraints for security

Security features:

  • AES-256-GCM encryption for sensitive data
  • Secure key derivation with PBKDF2
  • Certificate validation and parsing
  • Token expiration and scope validation

Frontend enhancements:

  • Authentication provider configuration UI
  • OAuth2 scope and endpoint management
  • Certificate upload and validation interface
  • Integration with existing application management

Documentation:

  • ADR 0001: Authentication architecture decisions
  • ADR 0002: Secret management strategy
  • ADR 0003: Authentication provider selection
  • Comprehensive API documentation and examples
tag:gitlab.com,2026-03-16:5207012350 François-Guillaume Ribreau commented on merge request !151 at hook0 / hook0 2026-03-16T08:34:14Z fgribreau François-Guillaume Ribreau

closing, will re-do it later

tag:gitlab.com,2026-03-16:5207011005 François-Guillaume Ribreau closed merge request !149: Draft: feat: Add operational webhooks for system monitoring at hook0 / hook0 2026-03-16T08:33:54Z fgribreau François-Guillaume Ribreau

Fixes #95

Implement operational webhooks similar to Svix for monitoring webhook system health and status.

Features:

  • Operational webhook endpoints management (CRUD operations)
  • Event types for system events (endpoint.created, message.failed, etc.)
  • HMAC-SHA256 signature verification for security
  • Retry logic with exponential backoff (up to 5 attempts)
  • Auto-disable endpoints after 10 consecutive failures
  • Message delivery statistics tracking
  • Background worker for webhook processing
  • Rate limiting support per endpoint

Database changes:

  • Add operational_endpoint table for webhook configurations
  • Add operational_event and operational_event_type tables
  • Add operational_attempt table for delivery tracking
  • Add message_stats table for statistics
  • Add triggers for automatic event generation

API endpoints:

  • GET/POST /api/v1/operational_webhooks/ - List and create endpoints
  • GET/PUT/DELETE /api/v1/operational_webhooks/{id} - Manage specific endpoint
  • GET /api/v1/operational_webhooks/event_types - List available event types
  • GET /api/v1/operational_webhooks/stats - Get delivery statistics

Security:

  • IAM integration with proper authorization
  • Unique secrets per endpoint for signature verification
  • Custom headers support for additional security

This enables monitoring of webhook delivery health, automatic failure handling, and proactive issue detection in the webhook system.