Skip to content

chore(maintenance): establish lot 0 baseline - #167

Merged
mpiton merged 4 commits into
mainfrom
feat/lot-0
Jul 15, 2026
Merged

chore(maintenance): establish lot 0 baseline#167
mpiton merged 4 commits into
mainfrom
feat/lot-0

Conversation

@mpiton

@mpiton mpiton commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Résumé

  • rétablit la CI avec un .npmrc sûr et un scanner de secrets partagé, robuste et sans fuite de valeurs
  • résout les mises à jour npm/Rust compatibles et documente les avis RustSec résiduels
  • épingle les actions GitHub par SHA, impose les audits et conserve les builds Linux/macOS/Windows avec diagnostics en cas d’échec

Linear

  • MAT-126
  • MAT-127
  • MAT-128

Validation

  • npm audit: 0 vulnérabilité
  • cargo deny: advisories, bans, licenses et sources validés
  • actionlint et validation YAML
  • Vitest: 702/702
  • Rust: 1 493 tests réussis, 7 ignorés
  • typecheck, oxlint, oxfmt, clippy debug/release
  • build Tauri Linux: DEB, RPM et AppImage

Risques résiduels

  • deux avis quick-xml transitifs via Tauri/Wayland et un avis de macro procédurale via SeaORM sont documentés dans deny.toml, avec réévaluation au 2026-10-15
  • les avertissements Knip existants ne sont pas modifiés dans ce lot

Summary by cubic

Restores the CI and security baseline for “Lot 0”: pins Actions to v7 (Node 24) by SHA, replaces ad‑hoc secret checks with a robust scanner that allows safe .npmrc, updates npm/Rust deps to clear audits, adds cross‑OS Tauri build diagnostics, and fixes Clippy warnings on stable. Addresses Linear MAT-126, MAT-127, and MAT-128.

  • Bug Fixes

    • CI: pinned actions/checkout, actions/setup-node, dtolnay/rust-toolchain, Swatinem/rust-cache, taiki-e/install-action, and actions/upload-artifact by SHA; added npm audit, persist-credentials: false, and upload of Tauri build logs on failure.
    • Secrets: replaced inline CI greps with scripts/no-secrets.sh and scripts/test-no-secrets.sh; scans the Git index for staged or all tracked files (text and binary), is NUL‑safe for odd paths, redacts matches and secret‑looking filenames, and blocks .npmrc auth; CI runs the self‑tests and a tracked‑files scan.
    • Permissions: added dialog:allow-open.
    • Clippy: simplified Rust code paths (URL filename extract, Tauri builder init) to satisfy current stable Clippy; no behavior change.
  • Dependencies

    • npm: bumped react-router to ^7.18.1, vite to ^6.4.3; npm audit reports 0 vulnerabilities.
    • Rust: updated crates (openssl, openssl-sys, plist, quick-xml, spin, tar, etc.); cargo-deny passes with residual advisories documented in deny.toml (proc-macro-error2 and transitive quick-xml), with a 2026-10-15 review date.

Written for commit dafcc42. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Improvements
    • Updated frontend tooling dependencies for compatibility (React Router and Vite).
    • Enhanced secret-scanning behavior with improved staged vs. full-repo validation.
    • Improved desktop build troubleshooting by capturing and uploading build logs on failure.
  • Bug Fixes
    • Restored and stabilized CI coverage, audits, and multi-platform builds.
    • Allowed safe .npmrc settings while continuing to block npm auth tokens.
  • Documentation
    • Added an Unreleased changelog entry for the maintenance baseline.

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@github-actions github-actions Bot added documentation Improvements or additions to documentation ci dependencies configuration rust labels Jul 15, 2026
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR pins GitHub Actions, adds frontend auditing and Tauri build logs, updates dependencies and RustSec ignores, expands secret scanning with tests, documents the maintenance baseline, and refactors Tauri builder and URL parsing control flow.

Changes

Maintenance baseline

Layer / File(s) Summary
Secret scanner scope and validation
scripts/no-secrets.sh, scripts/test-no-secrets.sh
The scanner supports staged and tracked scans, checks indexed .npmrc content and API-key patterns, redacts sensitive paths, and tests secret-bearing filenames, contents, and path edge cases.
CI checks and maintenance configuration
.github/workflows/ci.yml, package.json, deny.toml, CHANGELOG.md
CI actions are pinned, frontend checks run npm audit, failed Tauri builds upload logs, dependencies and advisory ignores are updated, and the changelog records the maintenance baseline.
Conditional Tauri plugin and URL parsing setup
src-tauri/src/lib.rs, src-tauri/src/application/commands/resolve_links.rs
Tauri builder initialization uses immutable chaining and conditional variable shadowing, while filename extraction uses an early-return ? for missing path separators.

Estimated code review effort: 3 (Moderate) | ~25 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the PR’s main goal of establishing the Lot 0 maintenance baseline.

Comment @coderabbitai help to get the list of available commands.

@socket-security

socket-security Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​react-router@​7.14.0 ⏵ 7.18.194 +1100 +2479 +197100
Updatedcargo/​anyhow@​1.0.102 ⏵ 1.0.1038110093100100
Updatednpm/​vite@​6.4.2 ⏵ 6.4.391100 +1883 +198100
Updatedcargo/​tar@​0.4.45 ⏵ 0.4.46100100 +293100100

View full report

@socket-security

socket-security Bot commented Jul 15, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: cargo openssl is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?cargo/sea-orm-migration@1.1.20cargo/sea-orm@1.1.20cargo/openssl@0.10.80

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/openssl@0.10.80. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
.github/workflows/ci.yml (1)

81-82: 🩺 Stability & Availability | 🔵 Trivial

npm audit with no --audit-level can make CI brittle.

Without an explicit --audit-level, any newly-disclosed advisory (including low-severity ones in dev-only tooling) will fail this step, even on PRs unrelated to the affected dependency. Since audit enforcement is an explicit goal of this PR, consider pinning --audit-level=high (or similar) so CI failures track meaningfully actionable risk rather than every transitive dev-dependency disclosure.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 81 - 82, Update the “npm audit”
workflow step to pass an explicit severity threshold, such as
--audit-level=high, so CI fails only for actionable high-severity or higher
advisories while preserving audit enforcement.
scripts/no-secrets.sh (1)

75-92: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Staged-mode content scan doesn't exclude *.lock files like tracked mode does.

Line 78's tracked-mode git grep excludes lockfiles via ':(exclude)*.lock', but the staged-mode diff scan (line 88) has no equivalent exclusion. A staged lockfile update containing a hash that happens to match one of the API-key patterns would be blocked in the pre-commit path but not in --all/CI, which is an inconsistent policy between the two scopes.

♻️ Suggested alignment
-    CONTENT_LEAK=$(git diff --cached -U0 | grep -E '^\+' | grep -vE '^\+\+\+ [ab]/' | grep -iE "$API_KEY_PATTERNS" || true)
+    CONTENT_LEAK=$(git diff --cached -U0 -- . ':(exclude)*.lock' | grep -E '^\+' | grep -vE '^\+\+\+ [ab]/' | grep -iE "$API_KEY_PATTERNS" || true)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/no-secrets.sh` around lines 75 - 92, Update the staged-mode scan in
the SCOPE branch to exclude *.lock files, matching the existing exclusion used
by the tracked-mode git grep while preserving the current diff filtering and
API-key pattern detection.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Line 21: Update the checkout steps in the rust-checks, frontend-checks,
secrets-scan, forbidden-tools, and changelog-check jobs to include the same with
configuration as build, specifically setting persist-credentials to false.
Preserve each checkout action and its existing options while applying this
security setting consistently to all five referenced jobs.

In `@scripts/no-secrets.sh`:
- Around line 94-106: Update the tracked diagnostics loop in the CONTENT_FOUND
branch so the third read that captures content also uses NUL termination,
matching git grep --cached -z output. Preserve the existing file and line reads,
match-count limit, and diagnostic formatting so tracked matches such as
credential.txt:1 are reported.

---

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 81-82: Update the “npm audit” workflow step to pass an explicit
severity threshold, such as --audit-level=high, so CI fails only for actionable
high-severity or higher advisories while preserving audit enforcement.

In `@scripts/no-secrets.sh`:
- Around line 75-92: Update the staged-mode scan in the SCOPE branch to exclude
*.lock files, matching the existing exclusion used by the tracked-mode git grep
while preserving the current diff filtering and API-key pattern detection.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e52ccf91-9f33-47fc-9319-991dbcc70816

📥 Commits

Reviewing files that changed from the base of the PR and between 46d16cb and 42f93a3.

⛔ Files ignored due to path filters (3)
  • package-lock.json is excluded by !**/package-lock.json
  • src-tauri/Cargo.lock is excluded by !**/*.lock
  • src-tauri/gen/schemas/capabilities.json is excluded by !**/gen/**
📒 Files selected for processing (7)
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • deny.toml
  • package.json
  • scripts/no-secrets.sh
  • scripts/test-no-secrets.sh
  • src-tauri/src/lib.rs

Comment thread .github/workflows/ci.yml Outdated
Comment thread scripts/no-secrets.sh Outdated
@codspeed-hq

codspeed-hq Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will improve performance by 20.79%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 5 improved benchmarks
✅ 21 untouched benchmarks

Performance Changes

Benchmark BASE HEAD Efficiency
from_status_code_500 125.3 ns 94.7 ns +32.26%
normalize_max_concurrent 150 ns 120.8 ns +24.14%
create_valid 341.7 ns 281.4 ns +21.42%
reject_invalid 610.3 ns 522.8 ns +16.74%
full_lifecycle 254.7 ns 230.6 ns +10.48%

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing feat/lot-0 (dafcc42) with main (46d16cb)

Open in CodSpeed

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread scripts/no-secrets.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/no-secrets.sh`:
- Around line 92-116: Update both git grep invocations in the API-key content
scan to restrict matches to the selected FILES scope, preserving their existing
cached-index behavior and error handling. Add a regression case covering a
committed token alongside a benign staged file, verifying the benign file’s scan
does not block due to the out-of-scope token.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e8e72da0-de7b-48d0-b668-a76e4068ea2e

📥 Commits

Reviewing files that changed from the base of the PR and between 55c80f9 and dafcc42.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • scripts/no-secrets.sh
  • scripts/test-no-secrets.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/ci.yml

Comment thread scripts/no-secrets.sh
@mpiton
mpiton merged commit 60bb867 into main Jul 15, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci configuration dependencies documentation Improvements or additions to documentation rust

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant