Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
059ff9c
fix: update Go version from 1.26.1 to 1.26.2 in Dockerfile and docume…
actions-user Apr 10, 2026
718a957
Merge branch 'development' into feature/beta-release
Wikid82 Apr 10, 2026
a439e1d
fix: add git to Dockerfile dependencies for improved build capabilities
actions-user Apr 10, 2026
8f7c104
chore: align agent and instruction files with single-PR commit-slicin…
actions-user Apr 10, 2026
9e82efd
fix: downgrade delve version from 1.26.2 to 1.26.1 for compatibility
actions-user Apr 11, 2026
4b92541
feat: Add certificate validation service with parsing and metadata ex…
actions-user Apr 11, 2026
bb99dac
fix: update zlib and add libcrypto3 and libssl3 for improved security
actions-user Apr 11, 2026
b15f7c3
fix(deps): update non-major-updates
renovate[bot] Apr 11, 2026
42bc897
fix: enhance certificate deletion handling with UUID validation and l…
actions-user Apr 11, 2026
d75abb8
Merge pull request #932 from Wikid82/renovate/feature/beta-release-no…
Wikid82 Apr 11, 2026
77f15a2
fix(deps): update non-major-updates
renovate[bot] Apr 12, 2026
1230694
Merge pull request #933 from Wikid82/renovate/feature/beta-release-no…
Wikid82 Apr 13, 2026
01e3d91
chore(deps): update softprops/action-gh-release action to v3
renovate[bot] Apr 13, 2026
af95c1b
Merge pull request #934 from Wikid82/renovate/feature/beta-release-so…
Wikid82 Apr 13, 2026
5c50d8b
fix: update brace-expansion version to 1.1.14 for improved compatibility
actions-user Apr 11, 2026
e49ea70
fix: add go-pkcs12 v0.7.1 for PKCS#12 support
actions-user Apr 11, 2026
30c9d73
feat: add certificate export and upload dialogs
actions-user Apr 11, 2026
9dc5567
fix: update Coraza Caddy version to 2.5.0 for compatibility
actions-user Apr 13, 2026
9d8d97e
fix: update @csstools/css-calc, @csstools/css-color-parser, @tanstack…
actions-user Apr 13, 2026
e1bc648
test: add certificate feature unit tests and null-safety fix
actions-user Apr 13, 2026
e865fa2
chore: update package.json and package-lock.json to include vitest an…
actions-user Apr 13, 2026
9c056fa
fix: downgrade versions of css-color, brace-expansion, baseline-brows…
actions-user Apr 13, 2026
e88a4c7
chore: update package-lock.json to remove unused dependencies and imp…
actions-user Apr 13, 2026
78a9231
chore: add test_output.txt to .gitignore to exclude test output files…
actions-user Apr 13, 2026
3b4fa06
test: add end-to-end tests for certificate export dialog functionality
actions-user Apr 13, 2026
850550c
test: update common name display test to match exact text
actions-user Apr 13, 2026
122e1fc
chore(deps): update renovatebot/github-action action to v46.1.9
renovate[bot] Apr 13, 2026
48f6b7a
fix: update Dockerfile to include musl and musl-utils in apk upgrade …
actions-user Apr 13, 2026
44f4757
Merge branch 'feature/beta-release' into renovate/feature/beta-releas…
Wikid82 Apr 13, 2026
0ae1dc9
test: update certificate deletion tests to use string UUIDs instead o…
actions-user Apr 13, 2026
b90da37
Merge pull request #936 from Wikid82/renovate/feature/beta-release-no…
Wikid82 Apr 13, 2026
ef44ae4
Merge branch 'development' into feature/beta-release
Wikid82 Apr 13, 2026
06aacde
chore(deps): update actions/checkout action to v6
renovate[bot] Apr 13, 2026
85216ba
chore(deps): update actions/github-script action to v9
renovate[bot] Apr 13, 2026
368130b
chore(deps): update actions/setup-go action to v6
renovate[bot] Apr 13, 2026
71b3406
Merge pull request #940 from Wikid82/renovate/feature/beta-release-ac…
Wikid82 Apr 13, 2026
4dfcf70
Merge pull request #941 from Wikid82/renovate/feature/beta-release-ac…
Wikid82 Apr 13, 2026
f0ffc27
chore(deps): update actions/upload-artifact action to v7
renovate[bot] Apr 13, 2026
c7932fa
Merge pull request #942 from Wikid82/renovate/feature/beta-release-ac…
Wikid82 Apr 13, 2026
114dca8
Merge pull request #944 from Wikid82/renovate/feature/beta-release-ma…
Wikid82 Apr 13, 2026
ea3d932
fix: update CADDY_SECURITY_VERSION to 1.1.62 for improved security
actions-user Apr 13, 2026
c19aa55
chore: update package-lock.json to upgrade dependencies for improved …
actions-user Apr 13, 2026
44e2bde
Merge branch 'development' into feature/beta-release
Wikid82 Apr 13, 2026
f3c33dc
fix: update golang.org/x/term to v0.42.0 for compatibility improvements
actions-user Apr 13, 2026
3005db6
fix: remove unnecessary string checks for key file in Upload method
actions-user Apr 13, 2026
942f585
fix: improve error response format in certificate validation
actions-user Apr 13, 2026
0391f2b
fix: add PFX password parameter to ExportCertificate method and updat…
actions-user Apr 13, 2026
29c56ab
fix: add context parameter to route registration functions for improv…
actions-user Apr 13, 2026
7c8e8c0
fix: enhance error handling in ConvertPEMToPFX for empty certificate …
actions-user Apr 13, 2026
1fe8a79
fix: update @typescript-eslint packages to version 8.58.2 and undici …
actions-user Apr 13, 2026
877a32f
fix: enhance form validation for certificate upload by adding require…
actions-user Apr 13, 2026
5b6bf94
fix: add key_file validation for PEM/DER uploads and resolve CI test …
actions-user Apr 13, 2026
a161163
chore(deps): update actions/upload-pages-artifact action to v5
renovate[bot] Apr 13, 2026
6391532
fix(deps): update non-major-updates
renovate[bot] Apr 14, 2026
92a90bb
Merge pull request #946 from Wikid82/renovate/feature/beta-release-no…
Wikid82 Apr 14, 2026
5408ebc
Merge pull request #947 from Wikid82/renovate/feature/beta-release-ac…
Wikid82 Apr 14, 2026
7adf39a
fix: update axe-core to version 4.11.3 for improved functionality and…
actions-user Apr 13, 2026
027a1b1
fix: replace fireEvent with userEvent for file uploads in Certificate…
actions-user Apr 14, 2026
149a207
fix: update electron-to-chromium to version 1.5.336 for improved comp…
actions-user Apr 14, 2026
81a083a
fix: resolve CI test failures and close patch coverage gaps
actions-user Apr 14, 2026
135edd2
fix: update caniuse-lite to version 1.0.30001788 for improved compati…
actions-user Apr 14, 2026
0c0adf0
fix: refactor context handling in Register tests for improved cleanup
actions-user Apr 14, 2026
14b48f2
fix: add key file requirement message for PEM/DER certificates in Cer…
actions-user Apr 14, 2026
0e0d42c
fix(certificates): mark key file as aria-required for PEM/DER cert up…
actions-user Apr 14, 2026
8090c12
feat(proxy-host): enhance certificate handling and update form integr…
actions-user Apr 14, 2026
fb8d80f
fix: correct CertificateUploadDialog tests to provide required key file
actions-user Apr 14, 2026
8239a94
chore: Add tests for CertificateList and CertificateUploadDialog comp…
actions-user Apr 15, 2026
bd48c17
chore: update dependencies for prettier and std-env in package-lock.json
actions-user Apr 15, 2026
813985a
fix(dependencies): update mongo-driver to v2.5.1
actions-user Apr 15, 2026
1594761
fix(deps): update non-major-updates
renovate[bot] Apr 15, 2026
683967b
Merge pull request #948 from Wikid82/renovate/feature/beta-release-no…
Wikid82 Apr 15, 2026
0e8ff1b
fix(deps): update @napi-rs/wasm-runtime and postcss to latest versions
actions-user Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions .github/agents/Management.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
- **Identify Goal**: Understand the user's request.
- **STOP**: Do not look at the code. Do not run `list_dir`. No code is to be changed or implemented until there is a fundamentally sound plan of action that has been approved by the user.
- **Action**: Immediately call `Planning` subagent.
- *Prompt*: "Research the necessary files for '{user_request}' and write a comprehensive plan detailing as many specifics as possible to `docs/plans/current_spec.md`. Be an artist with directions and discriptions. Include file names, function names, and component names wherever possible. Break the plan into phases based on the least amount of requests. Include a Commit Slicing Strategy section that decides whether to split work into multiple PRs and, when split, defines PR-1/PR-2/PR-3 scope, dependencies, and acceptance criteria. Review and suggest updaetes to `.gitignore`, `codecov.yml`, `.dockerignore`, and `Dockerfile` if necessary. Return only when the plan is complete."
- *Prompt*: "Research the necessary files for '{user_request}' and write a comprehensive plan detailing as many specifics as possible to `docs/plans/current_spec.md`. Be an artist with directions and discriptions. Include file names, function names, and component names wherever possible. Break the plan into phases based on the least amount of requests. Include a Commit Slicing Strategy section that organizes work into logical commits within a single PR — one feature = one PR, with ordered commits (Commit 1, Commit 2, …) each defining scope, files, dependencies, and validation gates. Review and suggest updaetes to `.gitignore`, `codecov.yml`, `.dockerignore`, and `Dockerfile` if necessary. Return only when the plan is complete."
- **Task Specifics**:
- If the task is to just run tests or audits, there is no need for a plan. Directly call `QA_Security` to perform the tests and write the report. If issues are found, return to `Planning` for a remediation plan and delegate the fixes to the corresponding subagents.

Expand All @@ -59,15 +59,13 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
- **Ask**: "Plan created. Shall I authorize the construction?"

4. **Phase 4: Execution (Waterfall)**:
- **Single-PR or Multi-PR Decision**: Read the Commit Slicing Strategy in `docs/plans/current_spec.md`.
- **If single PR**:
- **Read Commit Slicing Strategy**: Read the Commit Slicing Strategy in `docs/plans/current_spec.md` to understand the ordered commits.
- **Single PR, Multiple Commits**: All work ships as one PR. Each commit maps to a phase in the plan.
- **Backend**: Call `Backend_Dev` with the plan file.
- **Frontend**: Call `Frontend_Dev` with the plan file.
- **If multi-PR**:
- Execute in PR slices, one slice at a time, in dependency order.
- Require each slice to pass review + QA gates before starting the next slice.
- Keep every slice deployable and independently testable.
- **MANDATORY**: Implementation agents must perform linting and type checks locally before declaring their slice "DONE". This is a critical step that must not be skipped to avoid broken commits and security issues.
- Execute commits in dependency order. Each commit must pass its validation gates before the next commit begins.
- The PR is merged only when all commits are complete and all DoD gates pass.
- **MANDATORY**: Implementation agents must perform linting and type checks locally before declaring their commit "DONE". This is a critical step that must not be skipped to avoid broken commits and security issues.

5. **Phase 5: Review**:
- **Supervisor**: Call `Supervisor` to review the implementation against the plan. Provide feedback and ensure alignment with best practices.
Expand All @@ -80,7 +78,7 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
- **Docs**: Call `Docs_Writer`.
- **Manual Testing**: create a new test plan in `docs/issues/*.md` for tracking manual testing focused on finding potential bugs of the implemented features.
- **Final Report**: Summarize the successful subagent runs.
- **PR Roadmap**: If split mode was used, include a concise roadmap of completed and remaining PR slices.
- **Commit Roadmap**: Include a concise summary of completed and remaining commits within the PR.

**Mandatory Commit Message**: When you reach a stopping point, provide a copy and paste code block commit message at the END of the response on format laid out in `.github/instructions/commit-message.instructions.md`
- **STRICT RULES**:
Expand Down
8 changes: 4 additions & 4 deletions .github/agents/Planning.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,18 @@ You are a PRINCIPAL ARCHITECT responsible for technical planning and system desi
- Specify database schema changes
- Document component interactions and data flow
- Identify potential risks and mitigation strategies
- Determine PR sizing and whether to split the work into multiple PRs for safer and faster review
- Determine commit sizing and how to organize work into logical commits within a single PR for safer and faster review

3. **Documentation**:
- Write plan to `docs/plans/current_spec.md`
- Include acceptance criteria
- Break down into implementable tasks using examples, diagrams, and tables
- Estimate complexity for each component
- Add a **Commit Slicing Strategy** section with:
- Decision: single PR or multiple PRs
- Decision: single PR with ordered logical commits (one feature = one PR)
- Trigger reasons (scope, risk, cross-domain changes, review size)
- Ordered PR slices (`PR-1`, `PR-2`, ...), each with scope, files, dependencies, and validation gates
- Rollback and contingency notes per slice
- Ordered commits (`Commit 1`, `Commit 2`, ...), each with scope, files, dependencies, and validation gates
- Rollback and contingency notes for the PR as a whole

4. **Handoff**:
- Once plan is approved, delegate to `Supervisor` agent for review.
Expand Down
18 changes: 9 additions & 9 deletions .github/instructions/subagent.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@ runSubagent({

- Validate: `plan_file` exists and contains a `Handoff Contract` JSON.
- Kickoff: call `Planning` to create the plan if not present.
- Decide: check if work should be split into multiple PRs (size, risk, cross-domain impact).
- Decide: check how to organize work into logical commits within a single PR (size, risk, cross-domain impact).
- Run: execute `Backend Dev` then `Frontend Dev` sequentially.
- Parallel: run `QA and Security`, `DevOps` and `Doc Writer` in parallel for CI / QA checks and documentation.
- Return: a JSON summary with `subagent_results`, `overall_status`, and aggregated artifacts.

2.1) Multi-Commit Slicing Protocol

- If a task is large or high-risk, split into PR slices and execute in order.
- Each slice must have:
- All work for a single feature ships as one PR with ordered logical commits.
- Each commit must have:
- Scope boundary (what is included/excluded)
- Dependency on previous slices
- Validation gates (tests/scans required for that slice)
- Explicit rollback notes
- Do not start the next slice until the current slice is complete and verified.
- Keep each slice independently reviewable and deployable.
- Dependency on previous commits
- Validation gates (tests/scans required for that commit)
- Explicit rollback notes for the PR as a whole
- Do not start the next commit until the current commit is complete and verified.
- Keep each commit independently reviewable within the PR.

3) Return Contract that all subagents must return

Expand All @@ -55,7 +55,7 @@ runSubagent({

- On a subagent failure, the Management agent must capture `tests.output` and decide to retry (1 retry maximum), or request a revert/rollback.
- Clearly mark the `status` as `failed`, and include `errors` and `failing_tests` in the `summary`.
- For multi-PR execution, mark failed slice as blocked and stop downstream slices until resolved.
- For multi-commit execution, mark failed commit as blocked and stop downstream commits until resolved.

5) Example: Run a full Feature Implementation

Expand Down
8 changes: 4 additions & 4 deletions .github/skills/examples/gorm-scanner-ci-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ jobs:

steps:
- name: Checkout Code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Setup Go
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
with:
go-version: "1.26.2"

Expand Down Expand Up @@ -56,7 +56,7 @@ jobs:

- name: Comment on PR
if: always() && github.event_name == 'pull_request'
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const critical = ${{ steps.parse-report.outputs.critical }};
Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:

- name: Upload GORM Scan Report
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: gorm-security-report-${{ github.run_id }}
path: docs/reports/gorm-scan-ci-*.txt
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-versioning.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ jobs:

- name: Create GitHub Release (creates tag via API)
if: ${{ steps.semver.outputs.changed == 'true' && steps.check_release.outputs.exists == 'false' }}
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3
with:
tag_name: ${{ steps.determine_tag.outputs.tag }}
name: Release ${{ steps.determine_tag.outputs.tag }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
run: bash scripts/ci/check-codeql-parity.sh

- name: Initialize CodeQL
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
with:
languages: ${{ matrix.language }}
queries: security-and-quality
Expand Down Expand Up @@ -92,10 +92,10 @@ jobs:
run: mkdir -p sarif-results

- name: Autobuild
uses: github/codeql-action/autobuild@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/autobuild@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
with:
category: "/language:${{ matrix.language }}"
output: sarif-results/${{ matrix.language }}
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ jobs:

- name: Upload Trivy results
if: env.TRIGGER_EVENT != 'pull_request' && steps.skip.outputs.skip_build != 'true' && steps.trivy-check.outputs.exists == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-results.sarif'
category: '.github/workflows/docker-build.yml:build-and-push'
Expand Down Expand Up @@ -727,30 +727,30 @@ jobs:

- name: Upload Trivy scan results
if: always() && steps.trivy-pr-check.outputs.exists == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-pr-results.sarif'
category: 'docker-pr-image'

- name: Upload Trivy compatibility results (docker-build category)
if: always() && steps.trivy-pr-check.outputs.exists == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-pr-results.sarif'
category: '.github/workflows/docker-build.yml:build-and-push'
continue-on-error: true

- name: Upload Trivy compatibility results (docker-publish alias)
if: always() && steps.trivy-pr-check.outputs.exists == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-pr-results.sarif'
category: '.github/workflows/docker-publish.yml:build-and-push'
continue-on-error: true

- name: Upload Trivy compatibility results (nightly alias)
if: always() && steps.trivy-pr-check.outputs.exists == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-pr-results.sarif'
category: 'trivy-nightly'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ jobs:

# Step 4: Upload the built site
- name: 📤 Upload artifact
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
with:
path: '_site'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-tests-split.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ jobs:

- name: Cache npm dependencies
if: steps.resolve-image.outputs.image_source == 'build'
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ jobs:
trivyignores: '.trivyignore'

- name: Upload Trivy results
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-nightly.sarif'
category: 'trivy-nightly'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/renovate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
go-version: ${{ env.GO_VERSION }}

- name: Run Renovate
uses: renovatebot/github-action@b67590ea780158ccd13192c22a3655a5231f869d # v46.1.8
uses: renovatebot/github-action@eb932558ad942cccfd8211cf535f17ff183a9f74 # v46.1.9
with:
configurationFile: .github/renovate.json
token: ${{ secrets.RENOVATE_TOKEN || secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/security-weekly-rebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ jobs:
version: 'v0.69.3'

- name: Upload Trivy results to GitHub Security
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: 'trivy-weekly-results.sarif'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/supply-chain-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ jobs:

- name: Upload SARIF to GitHub Security
if: steps.check-artifact.outputs.artifact_found == 'true'
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
continue-on-error: true
with:
sarif_file: grype-results.sarif
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -314,3 +314,5 @@ validation-evidence/**
.github/agents/# Tools Configuration.md
docs/reports/codecove_patch_report.md
vuln-results.json
test_output.txt
coverage_results.txt
12 changes: 6 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ ARG CADDY_CANDIDATE_VERSION=2.11.2
ARG CADDY_USE_CANDIDATE=0
ARG CADDY_PATCH_SCENARIO=B
# renovate: datasource=go depName=github.com/greenpau/caddy-security
ARG CADDY_SECURITY_VERSION=1.1.61
ARG CADDY_SECURITY_VERSION=1.1.62
# renovate: datasource=go depName=github.com/corazawaf/coraza-caddy
ARG CORAZA_CADDY_VERSION=2.4.0
ARG CORAZA_CADDY_VERSION=2.5.0
## When an official caddy image tag isn't available on the host, use a
## plain Alpine base image and overwrite its caddy binary with our
## xcaddy-built binary in the later COPY step. This avoids relying on
Expand Down Expand Up @@ -131,7 +131,7 @@ SHELL ["/bin/ash", "-o", "pipefail", "-c"]
ARG TARGETPLATFORM
ARG TARGETARCH
# hadolint ignore=DL3018
RUN apk add --no-cache clang lld
RUN apk add --no-cache git clang lld
# hadolint ignore=DL3059
# hadolint ignore=DL3018
# Install musl (headers + runtime) and gcc for cross-compilation linker
Expand Down Expand Up @@ -345,7 +345,7 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
rm -rf /tmp/buildenv_* /tmp/caddy-initial'

# ---- CrowdSec Builder ----
# Build CrowdSec from source to ensure we use Go 1.26.1+ and avoid stdlib vulnerabilities
# Build CrowdSec from source to ensure we use Go 1.26.2+ and avoid stdlib vulnerabilities
# (CVE-2025-58183, CVE-2025-58186, CVE-2025-58187, CVE-2025-61729)
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS crowdsec-builder
COPY --from=xx / /
Expand Down Expand Up @@ -469,7 +469,7 @@ WORKDIR /app
RUN apk add --no-cache \
bash ca-certificates sqlite-libs sqlite tzdata gettext libcap libcap-utils \
c-ares busybox-extras \
&& apk upgrade --no-cache zlib
&& apk upgrade --no-cache zlib libcrypto3 libssl3 musl musl-utils

# Copy gosu binary from gosu-builder (built with Go 1.26+ to avoid stdlib CVEs)
COPY --from=gosu-builder /gosu-out/gosu /usr/sbin/gosu
Expand Down Expand Up @@ -516,7 +516,7 @@ COPY --from=caddy-builder /usr/bin/caddy /usr/bin/caddy
# Allow non-root to bind privileged ports (80/443) securely
RUN setcap 'cap_net_bind_service=+ep' /usr/bin/caddy

# Copy CrowdSec binaries from the crowdsec-builder stage (built with Go 1.26.1+)
# Copy CrowdSec binaries from the crowdsec-builder stage (built with Go 1.26.2+)
# This ensures we don't have stdlib vulnerabilities from older Go versions
COPY --from=crowdsec-builder /crowdsec-out/crowdsec /usr/local/bin/crowdsec
COPY --from=crowdsec-builder /crowdsec-out/cscli /usr/local/bin/cscli
Expand Down
9 changes: 8 additions & 1 deletion backend/cmd/api/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,8 +255,12 @@
cerb := cerberus.New(cfg.Security, db)

// Pass config to routes for auth service and certificate service
if err := routes.RegisterWithDeps(router, db, cfg, caddyManager, cerb); err != nil {
// Lifecycle context cancelled on shutdown to stop background goroutines
appCtx, appCancel := context.WithCancel(context.Background())
defer appCancel()

if err := routes.RegisterWithDeps(appCtx, router, db, cfg, caddyManager, cerb); err != nil {
log.Fatalf("register routes: %v", err)

Check failure on line 263 in backend/cmd/api/main.go

View workflow job for this annotation

GitHub Actions / Backend (Go)

exitAfterDefer: log.Fatalf will exit, and `defer appCancel()` will not run (gocritic)
}

// Register import handler with config dependencies
Expand Down Expand Up @@ -291,6 +295,9 @@
sig := <-quit
logger.Log().Infof("Received signal %v, initiating graceful shutdown...", sig)

// Cancel the app-wide context to stop background goroutines (e.g. cert expiry checker)
appCancel()

// Graceful shutdown with timeout
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
Expand Down
3 changes: 2 additions & 1 deletion backend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ require (
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gorm.io/driver/sqlite v1.6.0
gorm.io/gorm v1.31.1
software.sslmate.com/src/go-pkcs12 v0.7.1
)

require (
Expand Down Expand Up @@ -82,7 +83,7 @@ require (
github.com/stretchr/objx v0.5.3 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.3.1 // indirect
go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
go.mongodb.org/mongo-driver/v2 v2.5.1 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect
go.opentelemetry.io/otel v1.43.0 // indirect
Expand Down
Loading
Loading