Skip to content

Update beta#226

Merged
Jordonbc merged 52 commits intoBetafrom
Dev
Apr 23, 2026
Merged

Update beta#226
Jordonbc merged 52 commits intoBetafrom
Dev

Conversation

@Jordonbc
Copy link
Copy Markdown
Collaborator

No description provided.

dependabot Bot and others added 30 commits April 13, 2026 06:43
Bumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@ed59741...3a2844b)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the npm-minor-patch group in /Frontend with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [overlayscrollbars](https://github.com/KingSora/OverlayScrollbars/tree/HEAD/packages/overlayscrollbars) | `2.14.0` | `2.15.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.2` | `25.6.0` |
| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.5` | `8.0.8` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.2` | `4.1.4` |


Updates `overlayscrollbars` from 2.14.0 to 2.15.1
- [Release notes](https://github.com/KingSora/OverlayScrollbars/releases)
- [Changelog](https://github.com/KingSora/OverlayScrollbars/blob/master/packages/overlayscrollbars/CHANGELOG.md)
- [Commits](https://github.com/KingSora/OverlayScrollbars/commits/HEAD/packages/overlayscrollbars)

Updates `@types/node` from 25.5.2 to 25.6.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `jsdom` from 29.0.1 to 29.0.2
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v29.0.1...v29.0.2)

Updates `vite` from 8.0.5 to 8.0.8
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.8/packages/vite)

Updates `vitest` from 4.1.2 to 4.1.4
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.4/packages/vitest)

---
updated-dependencies:
- dependency-name: overlayscrollbars
  dependency-version: 2.15.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: "@types/node"
  dependency-version: 25.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: jsdom
  dependency-version: 29.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: vite
  dependency-version: 8.0.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: vitest
  dependency-version: 4.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the cargo-minor-patch group with 2 updates: [tokio](https://github.com/tokio-rs/tokio) and [zip](https://github.com/zip-rs/zip2).


Updates `tokio` from 1.51.0 to 1.51.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](tokio-rs/tokio@tokio-1.51.0...tokio-1.51.1)

Updates `zip` from 8.5.0 to 8.5.1
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](zip-rs/zip2@v8.5.0...v8.5.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.51.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor-patch
- dependency-name: zip
  dependency-version: 8.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…r-patch-fc6897dce7

chore(deps): bump the cargo-minor-patch group with 2 updates
…d/Dev/npm-minor-patch-f00fdaa0cc

chore(deps)(deps): bump the npm-minor-patch group in /Frontend with 5 updates
…ctions/github-script-9.0.0

chore(deps): bump actions/github-script from 8.0.0 to 9.0.0
Bumps the actions-minor-patch group with 2 updates: [actions/setup-node](https://github.com/actions/setup-node) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `actions/setup-node` from 6.3.0 to 6.4.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@53b8394...48b55a0)

Updates `github/codeql-action` from 4.35.1 to 4.35.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@c10b806...95e58e9)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions-minor-patch
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the npm-minor-patch group in /Frontend with 2 updates: [typescript](https://github.com/microsoft/TypeScript) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `typescript` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](microsoft/TypeScript@v6.0.2...v6.0.3)

Updates `vite` from 8.0.8 to 8.0.9
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.9/packages/vite)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 6.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: vite
  dependency-version: 8.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jordonbc <Jordonbc@users.noreply.github.com>
…ctions-minor-patch-bb489aea0a

chore(deps): bump the actions-minor-patch group with 2 updates
…d/Dev/npm-minor-patch-6c5f36fa09

chore(deps)(deps-dev): bump the npm-minor-patch group in /Frontend with 2 updates
dependabot Bot and others added 15 commits April 21, 2026 15:04
Bumps the cargo group with 1 update in the / directory: [rustls-webpki](https://github.com/rustls/webpki).


Updates `rustls-webpki` from 0.103.10 to 0.103.13
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](rustls/webpki@v/0.103.10...v/0.103.13)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
chore(deps): bump rustls-webpki from 0.103.10 to 0.103.13 in the cargo group across 1 directory
Co-authored-by: Jordonbc <Jordonbc@users.noreply.github.com>
@opencode-agent
Copy link
Copy Markdown
Contributor

Based on my review of this pull request (45 commits, 56 files changed), here's my analysis:

Code Review Summary

Code Quality Issues

  1. Backend/src/monitoring.rs:355 - Uses .expect() which can panic in production:

    .expect("stacktrace expected");

    Should use proper error handling with ? operator or ok_or() pattern.

  2. Backend/src/validate.rs:54,79 - Regex patterns are compiled on every invocation:

    let scp_like = regex::Regex::new(r"^[\w.-]+@[\w.-]+:[\w./-]+\.git$").unwrap();

    Consider moving to module-level lazy statics.

  3. Frontend/src/scripts/lib/monitoring.ts:145 - Array splice for trimming can be inefficient:

    frontendBreadcrumbs.splice(0, frontendBreadcrumbs.length - MAX_FRONTEND_BREADCRUMBS);

    Consider a ring buffer implementation for better performance at scale.

Potential Bugs

  1. Frontend/src/scripts/main.ts:388-400 - Plugin menu action handler:

    case '__plugin_menu_action__': {
        const pluginId = String(payload?.pluginId || '').trim();
        const actionId = String(payload?.actionId || '').trim();
        if (!pluginId || !actionId) break;

    Silently fails with no user feedback if IDs are empty after trim. ConsiderNotify() for better UX.

  2. Backend/src/lib.rs:37-41 - Silent loading of .env file:

    fn load_local_dotenv() {
        let dotenv_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../.env");
        let _ = dotenvy::from_path(&dotenv_path);
    }

    This silently swallows all errors - if the file exists but is malformed, the user won't know.

Suggestions for Improvement

  1. Backend/src/lib.rs - Good error capture for startup failures via monitoring::capture_startup_error(), but consider adding structured error codes for easier debugging.

  2. Frontend/src/scripts/lib/logger.ts:90 - The logger patching pattern is good, but console.info handling duplicates logic with console.log - consider extracting common formatting.

  3. Frontend/src/scripts/main.ts - Mixed async patterns (void Promise.allSettled vs await Promise.allSettled) at lines 194 and 217 make error handling inconsistent. Standardize to one pattern.

  4. Workflow files - Several workflow files have very similar changes (beta.yml, nightly.yml). Consider extracting common job definitions to a reusable workflow.

Positives

  • Comprehensive Sentry integration adds valuable crash reporting
  • Plugin update channels properly implemented
  • Tests pass (26/26 in Frontend)
  • Good use of lazy initialization for monitoring breadcrumbs
  • Proper separation between frontend/backend monitoring concerns
  • Config watcher adds nice DX improvement

Recommendation: Address the .expect() in monitoring.rs before merging - that's the highest-priority issue.

New%20session%20-%202026-04-22T19%3A24%3A54.667Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown
Contributor

User opencode-agent[bot] does not have write permissions

github run

1 similar comment
@opencode-agent
Copy link
Copy Markdown
Contributor

User opencode-agent[bot] does not have write permissions

github run

@opencode-agent
Copy link
Copy Markdown
Contributor

Code Review Summary

Code Quality Issues

  1. Backend/src/validate.rs:54,79 - Regex patterns are compiled on every invocation:

    let scp_like = regex::Regex::new(r"^[\w.-]+@[\w.-]+:[\w./-]+\.git$").unwrap();

    Should be moved to module-level lazy statics for performance.

  2. Backend/src/monitoring.rs:355 - Uses .expect() in test:

    .expect("stacktrace expected");

    Acceptable in tests but error message is generic.

Potential Bugs

  1. Frontend/src/scripts/main.ts:391-395 - Plugin menu action silently fails:

    const pluginId = String(payload?.pluginId || '').trim();
    const actionId = String(payload?.actionId || '').trim();
    if (!pluginId || !actionId) break;

    No user feedback when IDs are empty after trim - consider adding a notify() call.

  2. Backend/src/lib.rs:41-44 - Silent .env loading swallows errors:

    fn load_local_dotenv() {
        let dotenv_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../.env");
        let _ = dotenvy::from_path(&dotenv_path);
    }

    If the file exists but is malformed, users won't know. Consider logging a warning.

Suggestions for Improvement

  1. Frontend/src/scripts/lib/monitoring.ts:102 - Array splice for trimming is acceptable but could use a ring buffer if scaling becomes an issue.

  2. Frontend patterns - Mixed async patterns are consistent throughout this PR.

  3. Test coverage - Good test coverage in monitoring.rs and Frontend tests. Tests pass (26/26 in Frontend).

Positives

  • Clean Sentry integration with proper frontend/backend relay
  • Good plugin update channel implementation
  • Comprehensive test coverage
  • Well-documented code with proper doc comments
  • Config watcher adds good DX improvement

Recommendation: Priority fix is the .expect() in monitoring.rs:355 if it can receive invalid input in production scenarios. Regex statics in validate.rs are a nice-to-have optimization.

New%20session%20-%202026-04-23T01%3A01%3A48.119Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown
Contributor

Based on my review of the key files, here's my analysis:

Code Review

Previous Issues - Status Check

The prior reviews identified several issues. Let me verify their status:

  1. Backend/src/monitoring.rs:355 - .expect("stacktrace expected") - This is in a #[cfg(test)] module (line 340-341), so it's acceptable. Tests can use expect.

  2. Backend/src/validate.rs:54,79 - Regex patterns compiled per invocation - Already fixed. Lines 7-12 now use LazyLock:

    static SCP_LIKE_RE: Lazy

New%20session%20-%202026-04-23T01%3A26%3A11.530Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown
Contributor

Code Review Summary

Based on my review of the current state, most prior issues have been addressed:

Fixed Issues ✅

  1. Backend/src/validate.rs:7-12 - Regex patterns now use LazyLock (already optimized)
  2. Backend/src/monitoring.rs:355 - .expect() is only in test code (#[cfg(test)] module), which is acceptable
  3. Backend/src/lib.rs:47-56 - Now has proper error logging with eprintln! for malformed .env files
  4. Frontend/src/scripts/main.ts:396-402 - Now provides user feedback via notify() for missing plugin/action IDs

Remaining Minor Issues

  1. Frontend/src/scripts/lib/monitoring.ts:145 - Array splice at scale:

    frontendBreadcrumbs.splice(0, frontendBreadcrumbs.length - MAX_FRONTEND_BREADCRUMBS);

    This is fine for typical usage but could use a ring buffer if breadcrumbs grow large.

  2. Workflow duplication - .github/workflows/beta.yml and .github/workflows/nightly.yml have nearly identical changes. Consider a reusable workflow.

No Issues Found

  • Regex compilation: ✅ Fixed
  • .expect() in production: ✅ Not applicable (test only)
  • Silent .env failures: ✅ Fixed
  • Silent plugin action failures: ✅ Fixed

Positives

  • Clean Sentry integration with proper frontend/backend relay
  • Comprehensive test coverage (tests passing)
  • Good error handling patterns throughout
  • Proper doc comments on public APIs

Recommendation: This PR is ready to merge. The remaining suggestions are minor optimizations, not blockers.

New%20session%20-%202026-04-23T01%3A33%3A53.922Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown
Contributor

Code Review Summary

Based on my review of this PR (51 commits, 62 files changed), here's my analysis:

Prior Issues - Status

Issue Status
Regex patterns in validate.rs compiled per invocation ✅ Fixed - Now uses LazyLock (lines 7-12)
.expect() in monitoring.rs:355 ✅ Acceptable - Only in #[cfg(test)] module
Silent .env loading ✅ Fixed - Now logs via eprintln! (lines 51-56)
Silent plugin menu action failures ✅ Fixed - Now calls notify() with specific error (lines 396-402)

Code Quality

  1. Backend/src/validate.rs - Clean implementation with module-level regex statics. Good doc comments.
  2. Backend/src/monitoring.rs - New file with comprehensive Sentry integration. Proper #[cfg(test)] boundary.
  3. Frontend/src/scripts/main.ts:391-409 - Plugin action handling now provides specific user feedback instead of silent failure.

Remaining Minor Suggestions

  1. Frontend/src/scripts/lib/monitoring.ts:101-102 - Array splice:

    if (frontendBreadcrumbs.length > MAX_FRONTEND_BREADCRUMBS) {
      frontendBreadcrumbs.splice(0, frontendBreadcrumbs.length - MAX_FRONTEND_BREADCRUMBS);
    }

    Fine for current limits (40 items). Ring buffer is a future optimization if scaling needed.

  2. Workflow files - beta.yml and nightly.yml have similar structure. Consider reusable workflow for DRY if more workflows are planned.

No Issues Found

  • Regex compilation: ✅ Optimized
  • Error handling: ✅ Proper patterns throughout
  • Test coverage: ✅ New tests added for monitoring and settings
  • Documentation: ✅ Doc comments on public APIs

Positives

  • Comprehensive Sentry integration (backend + frontend relay)
  • Plugin update channels properly implemented
  • New settings modal with General tab (settingsGeneral.ts, settingsGeneral.test.ts)
  • Confirm modal for destructive actions (confirmModal.ts)
  • Good error UX with specific notify() messages for missing IDs

Recommendation: This PR is ready to merge. All prior blocking issues have been addressed.

New%20session%20-%202026-04-23T01%3A35%3A59.766Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown
Contributor

Code Review Summary

Based on my review of the key files in this PR (62 files, 51 commits):

✅ Issues Already Fixed

Issue Location Status
Regex patterns compiled per call Backend/src/validate.rs:7-12 ✅ Fixed - uses LazyLock
Silent .env loading Backend/src/lib.rs:47-57 ✅ Fixed - logs via eprintln!
Silent plugin action failures Frontend/src/scripts/main.ts:395-402 ✅ Fixed - specific notify() messages
.expect() in test code Backend/src/monitoring.rs:355 ✅ Acceptable - only in #[cfg(test)]

Code Quality - No Issues Found

  • Regex compilation: Optimized with module-level LazyLock statics
  • Error handling: Proper patterns throughout (notify, eprintln, log::warn)
  • Test coverage: New tests in monitoring.rs and settingsGeneral.test.ts
  • Documentation: Doc comments on public APIs per conventions

Remaining Minor Suggestions

  1. Frontend/src/scripts/lib/monitoring.ts:101-102 - Array splice for breadcrumb trimming:

    frontendBreadcrumbs.splice(0, frontendBreadcrumbs.length - MAX_FRONTEND_BREADCRUMBS);

    Fine for current limits (40 items). Ring buffer is a future optimization if needed at scale.

  2. Workflow files - beta.yml and nightly.yml have similar structure. Consider reusable workflow if more similar workflows are planned.

Positives

  • Clean Sentry integration with frontend/backend relay
  • New settings modal with General tab (crash report toggle)
  • Plugin update channels properly implemented
  • Comprehensive error UX improvements
  • Good test coverage for monitoring and settings

Recommendation: This PR is ready to merge. All prior blocking issues have been addressed. The remaining suggestions are minor optimizations, not blockers.

New%20session%20-%202026-04-23T01%3A41%3A05.206Z
opencode session  |  github run

@Jordonbc Jordonbc merged commit f295bcb into Beta Apr 23, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant