frank
2c03e691e8
Merge pull request 'fixing issues reported by SQ and adding test coverage.' ( #9 ) from sq_fixes into master
...
CI / TypeScript Lint + Typecheck (push) Successful in 22s
CI / Rust Format (push) Successful in 28s
CI / Rust Tests + Coverage (push) Successful in 38s
CI / TypeScript Tests + Coverage (push) Successful in 46s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m28s
CI / Clippy (SARIF) (push) Successful in 1m52s
Release Builds / Windows Electron Build (push) Successful in 2m53s
CI / Electron Release Build (push) Successful in 2m17s
Release Builds / Publish Gitea Release (push) Has been skipped
CI / SonarQube (push) Successful in 1m8s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m53s
CI / Dependency-Track (BOM) (push) Failing after 10m32s
Reviewed-on: #9
2026-05-10 16:55:33 -04:00
frank
337ffe7c5e
Merge branch 'master' into sq_fixes
...
CI / Rust Format (pull_request) Successful in 19s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 28s
CI / Rust Tests + Coverage (pull_request) Successful in 41s
CI / TypeScript Tests + Coverage (pull_request) Successful in 1m2s
CI / Dependency-Track (BOM) (pull_request) Successful in 22s
CI / Clippy (SARIF) (pull_request) Successful in 1m44s
CI / SonarQube (pull_request) Successful in 43s
CI / Electron Release Build (pull_request) Successful in 3m25s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 6m45s
# Conflicts:
# sonar-project.properties
# ui/src/components/CommandPalette/CommandPalette.tsx
# ui/src/components/Dock/DockRightActions.tsx
# ui/src/components/FileTree/FileTree.tsx
# ui/src/components/FindReplace/FindReplace.tsx
# ui/src/components/MarkdownPreview/MarkdownPreview.tsx
# ui/src/components/Preferences/Preferences.tsx
# ui/src/components/TitleBar/TitleBar.tsx
# ui/vitest.config.ts
2026-05-10 15:02:07 -04:00
frank
870dbd6562
fix(ci): surface Sonar quality gate failures
CI / Rust Format (pull_request) Successful in 12s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 21s
CI / Rust Tests + Coverage (pull_request) Successful in 43s
CI / TypeScript Tests + Coverage (pull_request) Successful in 1m4s
CI / Dependency-Track (BOM) (pull_request) Successful in 23s
CI / Clippy (SARIF) (pull_request) Successful in 1m41s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 2m7s
CI / Electron Release Build (pull_request) Successful in 2m21s
CI / SonarQube (pull_request) Successful in 58s
2026-05-10 14:30:34 -04:00
frank
10a13c0b5d
Merge pull request 'resolving Sonarqube issues' ( #8 ) from sq_refactor into master
...
CI / Rust Format (push) Successful in 15s
CI / TypeScript Lint + Typecheck (push) Successful in 22s
CI / TypeScript Tests + Coverage (push) Successful in 44s
CI / Rust Tests + Coverage (push) Successful in 1m9s
CI / Clippy (SARIF) (push) Successful in 1m11s
CI / Dependency-Track (BOM) (push) Successful in 38s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 2m34s
Release Builds / Windows Electron Build (push) Successful in 3m46s
Release Builds / Publish Gitea Release (push) Has been skipped
CI / Electron Release Build (push) Successful in 4m9s
CI / E2E Tests (Playwright + Electron) (push) Has been cancelled
CI / SonarQube (push) Has been cancelled
Reviewed-on: #8
2026-05-10 13:30:28 -04:00
frank
b313e5a1e0
fixing issues reported by SQ and adding test coverage.
CI / Rust Format (pull_request) Successful in 23s
CI / Rust Tests + Coverage (pull_request) Successful in 1m2s
CI / Clippy (SARIF) (pull_request) Successful in 1m6s
CI / TypeScript Tests + Coverage (pull_request) Successful in 41s
CI / Dependency-Track (BOM) (pull_request) Successful in 32s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 2m15s
CI / Electron Release Build (pull_request) Successful in 3m35s
CI / SonarQube (pull_request) Failing after 10m48s
CI / TypeScript Lint + Typecheck (pull_request) Failing after 11m38s
2026-05-10 13:27:31 -04:00
frank
a383badb18
fix(ci): fail Sonar job when quality gate fails; exclude eslint from Vitest LCOV
...
CI / Rust Format (pull_request) Successful in 16s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 27s
CI / Rust Tests + Coverage (pull_request) Successful in 36s
CI / TypeScript Tests + Coverage (pull_request) Successful in 36s
CI / Dependency-Track (BOM) (pull_request) Successful in 16s
CI / Clippy (SARIF) (pull_request) Successful in 1m56s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 1m55s
CI / SonarQube (pull_request) Failing after 1m2s
CI / Electron Release Build (pull_request) Successful in 3m12s
Remove continue-on-error on sonarqube-quality-gate-action so Gitea shows a
red job when the gate is ERROR. Vitest: exclude **/.eslintrc.* from coverage
so Sonar no longer warns on unresolved .eslintrc.cjs in lcov.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:44:37 -04:00
frank
5170ad633c
fix(sonar): use sonar.rust.lcov.reportPaths instead of generic coverage XML
...
CI / Rust Format (pull_request) Successful in 18s
CI / Dependency-Track (BOM) (pull_request) Successful in 22s
CI / Rust Tests + Coverage (pull_request) Successful in 1m24s
CI / Clippy (SARIF) (pull_request) Successful in 1m41s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 23s
CI / TypeScript Tests + Coverage (pull_request) Successful in 34s
CI / SonarQube (pull_request) Successful in 51s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 1m42s
CI / Electron Release Build (pull_request) Successful in 2m5s
Sonar job failed parsing target/sonar-rust-coverage.xml (Generic Coverage).
Official Rust import is LCOV via sonar.rust.lcov.reportPaths; drop XML
conversion in CI and keep target/lcov.info in the test-reports artifact.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:32:08 -04:00
frank
39e31c9534
fix(sonar): drop generic test execution import (SQ 26 JS bridge failure)
...
CI / Rust Format (pull_request) Successful in 16s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 34s
CI / TypeScript Tests + Coverage (pull_request) Successful in 50s
CI / Rust Tests + Coverage (pull_request) Successful in 1m17s
CI / Clippy (SARIF) (pull_request) Successful in 1m38s
CI / SonarQube (pull_request) Failing after 41s
CI / Electron Release Build (pull_request) Successful in 1m58s
CI / E2E Tests (Playwright + Electron) (pull_request) Has been cancelled
CI / Dependency-Track (BOM) (pull_request) Has been cancelled
Scanner log: InterruptedException in javascript bridge isAlive during
Generic Test Executions, then generic parse error on Vitest XML. Disable
sonar.testExecutionReportPaths until Sonar/plugin behavior is stable;
coverage and static analysis stay enabled.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:26:30 -04:00
frank
d4c4fd33f0
fix(sonar): import Vitest test execution only (SQ 26 rejects nextest report)
...
CI / Rust Format (pull_request) Successful in 18s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 30s
CI / Rust Tests + Coverage (pull_request) Successful in 45s
CI / TypeScript Tests + Coverage (pull_request) Successful in 51s
CI / Clippy (SARIF) (pull_request) Successful in 1m26s
CI / Dependency-Track (BOM) (pull_request) Successful in 43s
CI / SonarQube (pull_request) Failing after 39s
CI / Electron Release Build (pull_request) Successful in 2m44s
CI / E2E Tests (Playwright + Electron) (pull_request) Has been cancelled
Sonar parses sonar.testExecutionReportPaths left-to-right and aborts on the
first invalid report. The nextest-derived XML still triggers a parse failure
after duration fixes—library source paths for inline tests violate generic
test execution expectations. Keep Rust coverage via sonar.coverageReportPaths.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:18:14 -04:00
frank
bb153b0e3d
fix(sonar): generic test execution duration must be positive for SQ 26.x
...
CI / Rust Format (pull_request) Successful in 23s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 26s
CI / TypeScript Tests + Coverage (pull_request) Successful in 38s
CI / Rust Tests + Coverage (pull_request) Successful in 42s
CI / Dependency-Track (BOM) (pull_request) Successful in 22s
CI / Clippy (SARIF) (pull_request) Successful in 1m21s
CI / SonarQube (pull_request) Failing after 31s
CI / Electron Release Build (pull_request) Successful in 3m20s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 6m43s
Gitea Actions reaches SonarQube fine; the scanner failed parsing our
converted reports because many testCase elements had duration="0".
Clamp to ≥1 ms and emit a standard XML declaration. Restore Rust +
Vitest paths in sonar.testExecutionReportPaths.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:12:04 -04:00
frank
11dba0d5b7
fix(ci): rustfmt, ESLint this-binding test, Sonar test execution path
...
CI / Rust Format (pull_request) Successful in 19s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 17s
CI / TypeScript Tests + Coverage (pull_request) Successful in 43s
CI / Rust Tests + Coverage (pull_request) Successful in 1m12s
CI / Dependency-Track (BOM) (pull_request) Successful in 22s
CI / Clippy (SARIF) (pull_request) Successful in 1m21s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 1m40s
CI / SonarQube (pull_request) Failing after 36s
CI / Electron Release Build (pull_request) Successful in 2m48s
- Apply nightly rustfmt to format.rs and cli.rs (Rust Format job).
- Use Vitest mock.contexts instead of assigning this in api.test.ts.
- Point sonar.testExecutionReportPaths at Vitest only; SonarQube 26.4
rejects the nextest report whose file paths are library sources with
inline tests. Rust coverage still uses sonar.coverageReportPaths.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 01:05:33 -04:00
frank
1a3bc1b75c
phase 7: Sonar Rust coverage (LCOV → Generic XML)
...
CI / Rust Format (pull_request) Failing after 12s
CI / TypeScript Lint + Typecheck (pull_request) Failing after 33s
CI / TypeScript Tests + Coverage (pull_request) Successful in 35s
CI / Rust Tests + Coverage (pull_request) Successful in 51s
CI / Dependency-Track (BOM) (pull_request) Successful in 23s
CI / Clippy (SARIF) (pull_request) Successful in 1m51s
CI / Electron Release Build (pull_request) Successful in 1m55s
CI / SonarQube (pull_request) Failing after 47s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 2m42s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 00:54:08 -04:00
frank
e57b65766a
phase 6: Sonar generic test execution for Rust and Vitest
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 00:52:11 -04:00
frank
5c216937cb
phase 5
...
Phase 5 — Test Coverage Expansion complete:
- Added useFileSystem.open.test.ts for openFile/openFolder dialog flows and openFileByPath edge cases
- Added api.test.ts for Proxy behavior, window.api merging, and fallback testing
- Added sessionStore.hydration.test.ts for session hydration edge cases, dockLayout persistence, and formatOnSave migration
- Added TabStrip.keyboard.test.tsx for keyboard accessibility (role="tablist", role="tab", Enter/Space activation)
- Note: aria-selected and roving tabindex tests marked as .todo() pending Phase 3 implementation
- Updated sonar-project.properties to support both local (coverage/lcov.info) and CI (ui-reports/coverage/lcov.info) paths
All tests pass (255 tests across 28 test files).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 00:45:05 -04:00
frank
b8b2e0eac7
phase 3+4: accessibility fixes and IIFE elimination
...
Phase 3: semantic HTML / a11y (3A-3G) — backdrop buttons, keyboard
handlers on interactive separators, aria-modal on FindReplace dialog,
aria-selected on FileTree treeitems, role=listbox on CommandPalette
results, role=tablist on TabStrip container.
Phase 4: FileTree context-menu IIFE extracted to pre-render variables
(shouldOfferPreview / ctxExisting), eliminating the inline IIFE in JSX;
all other 4A-4D items were already resolved in prior refactors.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-09 00:28:15 -04:00
frank
cc9251fca0
phase 2: TypeScript mechanical quality wins (2B, 2D, 2H, 2M)
...
- 2B: Wrap DockTab and UniversalPanel props in Readonly<>
- 2D: Fix void-as-expression callback (onClick={() => void fn()) → statement form
- 2H: Extract ViewMode type alias to types.ts; replace inline union literals in
DockRightActions.tsx and TitleBar.tsx
- 2M: Replace exec-in-while-loop with matchAll in FindReplace countMatches;
removes manual lastIndex guard (matchAll handles zero-length matches natively)
Many 2A/2E/2F/2G/2J/2K/2L/2N/2O items verified already fixed; 2C assertions
confirmed necessary (object|null→concrete type narrowing, Proxy return type).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-09 00:13:18 -04:00
frank
2a78f69752
phase 1: JsoncParser struct refactor + CLI/format test coverage
...
Refactored strip_jsonc_comments into a JsoncParser<'a> struct to eliminate
mutable boolean threading across four free functions. Added pre-refactor test
coverage for save_session, load_session, save_ui_prefs, load_ui_prefs (with
SESSION_ENV_LOCK mutex for env-var isolation), plus YAML/TOML/XML format tests
and full lint_document routing coverage across all LanguageId arms.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-09 00:05:10 -04:00
frank
14095f4180
setting up tags v4
CI / Rust Format (push) Successful in 13s
CI / TypeScript Lint + Typecheck (push) Successful in 23s
CI / TypeScript Tests + Coverage (push) Successful in 32s
CI / Dependency-Track (BOM) (push) Successful in 23s
CI / Rust Tests + Coverage (push) Successful in 1m27s
CI / Clippy (SARIF) (push) Successful in 2m10s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m48s
CI / Electron Release Build (push) Successful in 2m33s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m24s
Release Builds / Windows Electron Build (push) Successful in 2m52s
Release Builds / Publish Gitea Release (push) Successful in 25s
CI / SonarQube (push) Failing after 10m7s
v0.3.97
2026-05-08 06:19:17 -04:00
frank
5ac9fcbe41
setting up tags v3
CI / Rust Format (push) Successful in 20s
CI / TypeScript Lint + Typecheck (push) Successful in 34s
CI / Rust Tests + Coverage (push) Successful in 41s
CI / TypeScript Tests + Coverage (push) Successful in 40s
CI / Dependency-Track (BOM) (push) Successful in 22s
CI / Clippy (SARIF) (push) Successful in 1m41s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m22s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m28s
CI / Electron Release Build (push) Successful in 2m43s
Release Builds / Windows Electron Build (push) Successful in 2m53s
Release Builds / Publish Gitea Release (push) Failing after 8s
CI / SonarQube (push) Failing after 13m5s
v0.3.94
2026-05-08 06:11:49 -04:00
frank
09c9b4f447
setting up tags v2
CI / Rust Format (push) Successful in 23s
CI / TypeScript Lint + Typecheck (push) Successful in 24s
CI / TypeScript Tests + Coverage (push) Successful in 34s
CI / Rust Tests + Coverage (push) Successful in 54s
CI / Clippy (SARIF) (push) Successful in 1m5s
CI / Dependency-Track (BOM) (push) Successful in 30s
CI / SonarQube (push) Successful in 42s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m27s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m7s
CI / Electron Release Build (push) Successful in 2m39s
Release Builds / Windows Electron Build (push) Successful in 2m32s
Release Builds / Publish Gitea Release (push) Failing after 6s
v0.3.91
2026-05-08 06:05:12 -04:00
frank
b33400a5ac
setting up tags
CI / Rust Format (push) Successful in 15s
CI / TypeScript Lint + Typecheck (push) Successful in 28s
CI / TypeScript Tests + Coverage (push) Successful in 30s
CI / Dependency-Track (BOM) (push) Successful in 36s
CI / Clippy (SARIF) (push) Successful in 1m24s
CI / Rust Tests + Coverage (push) Successful in 1m26s
CI / Electron Release Build (push) Successful in 3m16s
CI / E2E Tests (Playwright + Electron) (push) Successful in 3m1s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m8s
Release Builds / Windows Electron Build (push) Successful in 2m23s
Release Builds / Publish Gitea Release (push) Failing after 11s
CI / SonarQube (push) Failing after 11m8s
v0.3.87
2026-05-08 05:48:59 -04:00
frank
cedbd2a651
fixing build v5
CI / Rust Format (push) Successful in 20s
CI / TypeScript Tests + Coverage (push) Successful in 31s
CI / Dependency-Track (BOM) (push) Successful in 22s
CI / Clippy (SARIF) (push) Successful in 1m6s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m6s
CI / E2E Tests (Playwright + Electron) (push) Successful in 3m9s
CI / Electron Release Build (push) Successful in 3m16s
Release Builds / Windows Electron Build (push) Successful in 2m23s
CI / TypeScript Lint + Typecheck (push) Failing after 11m14s
CI / Rust Tests + Coverage (push) Failing after 11m15s
CI / SonarQube (push) Has been skipped
v0.3
v0.3.85
2026-05-08 05:25:33 -04:00
frank
8214a6884a
Merge remote-tracking branch 'origin/master'
...
CI / Rust Format (push) Successful in 18s
CI / TypeScript Lint + Typecheck (push) Successful in 25s
CI / TypeScript Tests + Coverage (push) Successful in 49s
CI / Rust Tests + Coverage (push) Successful in 52s
CI / Clippy (SARIF) (push) Successful in 1m9s
CI / Dependency-Track (BOM) (push) Successful in 26s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 1m43s
CI / SonarQube (push) Successful in 1m5s
Release Builds / Windows Electron Build (push) Successful in 3m25s
CI / Electron Release Build (push) Successful in 3m43s
CI / E2E Tests (Playwright + Electron) (push) Has been cancelled
# Conflicts:
# .gitea/workflows/release-builds.yml
2026-05-08 05:20:13 -04:00
frank
a4d67d488d
fixing build v4
2026-05-08 05:19:52 -04:00
frank
e2af4c3116
fixing windows
CI / Rust Format (push) Successful in 19s
CI / TypeScript Lint + Typecheck (push) Successful in 30s
CI / Rust Tests + Coverage (push) Successful in 44s
CI / TypeScript Tests + Coverage (push) Successful in 47s
CI / Clippy (SARIF) (push) Successful in 1m3s
CI / Dependency-Track (BOM) (push) Successful in 23s
CI / SonarQube (push) Successful in 1m20s
CI / E2E Tests (Playwright + Electron) (push) Successful in 3m4s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 4m45s
CI / Electron Release Build (push) Successful in 4m36s
Release Builds / Windows Electron Build (push) Successful in 5m50s
2026-05-08 05:06:49 -04:00
frank
102fdedd66
fixing build v3
CI / TypeScript Lint + Typecheck (push) Successful in 41s
Release Builds / Windows Electron Build (push) Failing after 22s
CI / Rust Tests + Coverage (push) Successful in 57s
CI / TypeScript Tests + Coverage (push) Successful in 39s
CI / Dependency-Track (BOM) (push) Successful in 33s
CI / Electron Release Build (push) Successful in 2m39s
Release Builds / macOS Apple Silicon Electron Build (push) Has been cancelled
CI / E2E Tests (Playwright + Electron) (push) Successful in 5m46s
CI / Clippy (SARIF) (push) Failing after 14m55s
CI / Rust Format (push) Failing after 15m5s
CI / SonarQube (push) Has been skipped
2026-05-08 04:56:23 -04:00
frank
03ca8dc939
fixing build v2
CI / Rust Format (push) Successful in 15s
Release Builds / Windows Electron Build (push) Failing after 16s
CI / TypeScript Lint + Typecheck (push) Successful in 32s
CI / TypeScript Tests + Coverage (push) Successful in 30s
CI / Rust Tests + Coverage (push) Successful in 37s
CI / Dependency-Track (BOM) (push) Successful in 22s
CI / Clippy (SARIF) (push) Successful in 2m10s
Release Builds / macOS Apple Silicon Electron Build (push) Successful in 2m51s
CI / Electron Release Build (push) Successful in 3m28s
CI / SonarQube (push) Successful in 1m23s
CI / E2E Tests (Playwright + Electron) (push) Successful in 3m14s
2026-05-08 04:53:51 -04:00
frank
68ee9a2886
fixing build
Release Builds / Windows Electron Build (push) Failing after 15s
CI / Rust Format (push) Successful in 20s
CI / TypeScript Tests + Coverage (push) Successful in 29s
CI / TypeScript Lint + Typecheck (push) Successful in 30s
Release Builds / macOS Apple Silicon Electron Build (push) Failing after 52s
CI / Dependency-Track (BOM) (push) Successful in 38s
CI / Clippy (SARIF) (push) Successful in 1m13s
CI / Rust Tests + Coverage (push) Successful in 1m13s
CI / SonarQube (push) Successful in 44s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m45s
CI / Electron Release Build (push) Successful in 3m12s
2026-05-08 04:47:46 -04:00
frank
54a5dfbd14
ci(release): drop dtolnay/rust-toolchain on macOS (act post-step perms)
...
Release Builds / macOS Apple Silicon Electron Build (push) Failing after 7s
Release Builds / Windows Electron Build (push) Failing after 16s
CI / Rust Format (push) Successful in 19s
CI / TypeScript Lint + Typecheck (push) Successful in 23s
CI / TypeScript Tests + Coverage (push) Successful in 28s
CI / Dependency-Track (BOM) (push) Successful in 18s
CI / Rust Tests + Coverage (push) Successful in 58s
CI / Clippy (SARIF) (push) Successful in 2m1s
CI / E2E Tests (Playwright + Electron) (push) Successful in 1m58s
CI / SonarQube (push) Successful in 39s
CI / Electron Release Build (push) Successful in 3m15s
Self-hosted Gitea act fails Post dtolnay/rust-toolchain when opening pack
files under ~/.cache/act/.../act/actions/.../.git (permission denied), then
the job fails in finally. Install stable via rustup in-shell like Windows.
Rust-cache remains omitted on mac (sudo purge). Windows already uses rustup
instead of dtolnay — pull this commit if CI still runs dtolnay there.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 03:44:01 -04:00
frank
b70cd2b67e
ci(release): drop rust-cache on macOS to avoid sudo purge hang
...
Swatinem/rust-cache post-step invokes sudo /usr/sbin/purge on macOS; that
blocks on self-hosted runners without passwordless sudo. Remove the action
from the Apple Silicon release job; cargo still uses local target/ between runs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 03:42:15 -04:00
frank
a2b07b6137
ci(release): fix Windows job — rustup in pwsh, ui npm ci
...
CI / Rust Format (push) Successful in 14s
CI / TypeScript Lint + Typecheck (push) Successful in 27s
CI / TypeScript Tests + Coverage (push) Successful in 26s
CI / Dependency-Track (BOM) (push) Successful in 17s
CI / Rust Tests + Coverage (push) Successful in 1m5s
CI / Clippy (SARIF) (push) Successful in 1m28s
CI / SonarQube (push) Successful in 1m4s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m32s
CI / Electron Release Build (push) Successful in 3m0s
Release Builds / Windows Electron Build (push) Failing after 14s
Release Builds / macOS Apple Silicon Electron Build (push) Failing after 1m30s
Replace dtolnay/rust-toolchain on Windows; its bash composite scripts fail on
Gitea act (Frank-PC) with missing parse script path. Install stable via rustup
in PowerShell instead. Add ui/ npm ci and dual lockfile cache like macOS.
Relax cl.exe check to a warning when MSVC is not on PATH.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 03:26:06 -04:00
frank
651dbd1e4a
enabling windows
CI / Rust Format (push) Successful in 18s
CI / TypeScript Lint + Typecheck (push) Successful in 20s
CI / TypeScript Tests + Coverage (push) Successful in 34s
CI / Rust Tests + Coverage (push) Successful in 47s
CI / Dependency-Track (BOM) (push) Successful in 21s
CI / E2E Tests (Playwright + Electron) (push) Successful in 1m41s
CI / Clippy (SARIF) (push) Successful in 2m5s
CI / SonarQube (push) Successful in 1m2s
CI / Electron Release Build (push) Successful in 3m34s
Release Builds / macOS Apple Silicon Electron Build (push) Failing after 1m32s
Release Builds / Windows Electron Build (push) Failing after 15s
2026-05-08 03:20:30 -04:00
frank
b589eed423
ci(release): install ui/ deps on macOS before electron:build
...
CI / Rust Format (push) Successful in 20s
CI / TypeScript Lint + Typecheck (push) Successful in 19s
CI / Rust Tests + Coverage (push) Successful in 36s
CI / TypeScript Tests + Coverage (push) Successful in 40s
CI / Dependency-Track (BOM) (push) Successful in 19s
CI / Clippy (SARIF) (push) Successful in 1m39s
CI / SonarQube (push) Successful in 46s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m37s
CI / Electron Release Build (push) Successful in 2m54s
Release Builds / macOS Apple Silicon Electron Build (push) Has been cancelled
Release Builds / Windows Electron Build (push) Has been skipped
The release job only ran root npm ci; ui has its own lockfile (zustand,
codemirror, etc.). Match ci.yml by running npm ci in ui/ so tsc/vite
can resolve modules.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 02:43:49 -04:00
frank
2291f0b652
Merge pull request 'fix(e2e): merge injected window.api with mock; align Playwright helpers' ( #7 ) from sq_fixes into master
...
CI / Rust Format (push) Successful in 28s
CI / TypeScript Lint + Typecheck (push) Successful in 35s
CI / Rust Tests + Coverage (push) Successful in 48s
CI / Dependency-Track (BOM) (push) Successful in 24s
CI / Clippy (SARIF) (push) Successful in 1m8s
CI / E2E Tests (Playwright + Electron) (push) Successful in 3m12s
CI / Electron Release Build (push) Successful in 3m32s
Release Builds / Windows Electron Build (push) Has been cancelled
CI / TypeScript Tests + Coverage (push) Failing after 10m31s
CI / SonarQube (push) Has been skipped
Release Builds / macOS Apple Silicon Electron Build (push) Has been cancelled
Reviewed-on: #7
2026-05-08 02:29:38 -04:00
frank
0b7a11b97e
ci(release): drop Linux job; run macOS on macos-14 + apple_silicon
...
CI / Rust Format (pull_request) Successful in 17s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 25s
CI / TypeScript Tests + Coverage (pull_request) Successful in 25s
CI / Dependency-Track (BOM) (pull_request) Successful in 17s
CI / Rust Tests + Coverage (pull_request) Successful in 49s
CI / Clippy (SARIF) (pull_request) Successful in 1m54s
CI / E2E Tests (Playwright + Electron) (pull_request) Successful in 1m51s
CI / SonarQube (pull_request) Successful in 1m5s
CI / Electron Release Build (pull_request) Successful in 3m33s
Remove the ubuntu Linux release artifact job. Enable macOS Electron build on
the homelab runner label pair; Windows job stays disabled until a runner exists.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 02:21:44 -04:00
frank
ecc520fa22
fix(ci): lazy-merge window.api; Linux release artifact; gate stuck runners
...
- api.ts: use a Proxy so each IPC access merges mockApi with window.api after
Playwright init scripts run (avoids one-shot capture ordering on CI).
- playwright: CI runs with workers=1 (single Vite dev server) and retries=0
to avoid 10+ minute retry storms when something regresses.
- release-builds: add ubuntu-latest Linux Electron artifact job (same as CI
forge build). Disable Windows/macOS jobs with if:false until matching
runners exist — they previously stayed queued and blocked the workflow.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 02:15:50 -04:00
frank
6bbc5d7b22
fix(e2e): merge injected window.api with mock; align Playwright helpers
...
- api.ts: Playwright init scripts set a partial window.api; that replaced the
full mockApi and dropped listLanguages/listEncodings, which StatusBar
calls on mount and crashed the app (long CI runs + mass selector failures).
Resolve api as { ...mockApi, ...injected }.
- browser-helpers: return viewKind image + imageMime for .png from openFile
so openFileByPath/FileTree match production behavior.
- feature-gaps: click encoding trigger button (no inner span); locate file
tree rows via data-entry-name instead of role=button (rows use role=treeitem).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 01:52:52 -04:00
frank
4dbed36f11
Merge pull request 'fix: resolve all SonarQube issues (Waves 1–4)' ( #5 ) from sq_fixes into master
...
CI / Rust Format (push) Successful in 15s
CI / TypeScript Lint + Typecheck (push) Successful in 28s
CI / TypeScript Tests + Coverage (push) Successful in 26s
CI / Rust Tests + Coverage (push) Successful in 46s
CI / Dependency-Track (BOM) (push) Successful in 20s
CI / Clippy (SARIF) (push) Successful in 1m50s
CI / SonarQube (push) Successful in 37s
CI / Electron Release Build (push) Successful in 2m23s
CI / Rust Format (pull_request) Successful in 13s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 20s
CI / E2E Tests (Playwright + Electron) (push) Has been cancelled
CI / TypeScript Tests + Coverage (pull_request) Successful in 22s
CI / Rust Tests + Coverage (pull_request) Successful in 50s
CI / Dependency-Track (BOM) (pull_request) Successful in 28s
CI / Clippy (SARIF) (pull_request) Successful in 1m29s
CI / SonarQube (pull_request) Successful in 1m12s
CI / Electron Release Build (pull_request) Successful in 2m53s
CI / E2E Tests (Playwright + Electron) (pull_request) Failing after 11m31s
Release Builds / Windows Electron Build (push) Has been cancelled
Release Builds / macOS Apple Silicon Electron Build (push) Has been cancelled
Reviewed-on: #5
2026-05-08 01:45:29 -04:00
frank
0229f0666f
fix(ci): apply nightly rustfmt and clear ESLint unused vars
...
CI / Rust Format (pull_request) Successful in 13s
CI / TypeScript Lint + Typecheck (pull_request) Successful in 28s
CI / Rust Tests + Coverage (pull_request) Successful in 43s
CI / TypeScript Tests + Coverage (pull_request) Successful in 47s
CI / Dependency-Track (BOM) (pull_request) Successful in 22s
CI / Clippy (SARIF) (pull_request) Successful in 1m35s
CI / SonarQube (pull_request) Successful in 52s
CI / Electron Release Build (pull_request) Successful in 2m18s
CI / E2E Tests (Playwright + Electron) (pull_request) Failing after 12m35s
Rust Format job failed on import grouping in cli.rs and related files
(.rustfmt.toml uses nightly-only options). Ran rustup run nightly cargo fmt.
UI ts-lint: remove unused Tab import; rename unused invoke callback params
in sessionStore.multiWindow tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 01:22:10 -04:00
frank
803ae9fd62
additional clean
CI / Rust Format (pull_request) Failing after 13s
CI / TypeScript Lint + Typecheck (pull_request) Failing after 17s
CI / TypeScript Tests + Coverage (pull_request) Successful in 36s
CI / Clippy (SARIF) (pull_request) Successful in 1m3s
CI / Dependency-Track (BOM) (pull_request) Successful in 41s
CI / Rust Tests + Coverage (pull_request) Successful in 1m23s
CI / E2E Tests (Playwright + Electron) (pull_request) Failing after 1m21s
CI / Electron Release Build (pull_request) Failing after 1m38s
CI / SonarQube (pull_request) Successful in 44s
2026-05-08 01:12:44 -04:00
frank
b7be5d321d
final refactor
CI / Rust Format (pull_request) Failing after 14s
CI / TypeScript Lint + Typecheck (pull_request) Failing after 24s
CI / TypeScript Tests + Coverage (pull_request) Successful in 39s
CI / Rust Tests + Coverage (pull_request) Successful in 47s
CI / Clippy (SARIF) (pull_request) Successful in 1m6s
CI / Dependency-Track (BOM) (pull_request) Successful in 29s
CI / Electron Release Build (pull_request) Failing after 1m34s
CI / E2E Tests (Playwright + Electron) (pull_request) Failing after 1m24s
CI / SonarQube (pull_request) Successful in 52s
2026-05-08 01:08:01 -04:00
frank
3f98c3e64f
wave 8 refactor cont.
2026-05-08 00:55:19 -04:00
frank
463750c669
wave 8 refactor
2026-05-08 00:54:56 -04:00
frank
6c232e62e5
wave 7 refactor
2026-05-08 00:48:24 -04:00
frank
d9d57f2695
wave 6 refactor
2026-05-08 00:47:15 -04:00
frank
89d3abad8a
wave 1 refactor cont.
2026-05-08 00:42:34 -04:00
frank
d187856474
wave 1 refactor
2026-05-08 00:42:24 -04:00
frank
66ce208b1f
fix: resolve all SonarQube issues (Waves 1–4)
...
Addresses all 140 SonarQube findings across TypeScript and Rust:
Wave 1 – mechanical fixes
- Replace window.* globals with globalThis (S7764/S6759/S7761)
- Wrap component props in Readonly<> (S7721)
- Use HTMLElement.dataset instead of getAttribute/setAttribute (S7754)
- Replace Number.parseInt/Number.isNaN with globalThis equivalents (S7773)
- Swap .find() existence checks with .some() (S7780)
- Apply optional chaining where applicable (S6582/S6594)
- Remove redundant void operators (S3735)
- Remove unused type assertions (S4325)
- Add stable React keys to dynamic lists (S6479)
- Fix dockLayout type assertion (S4325)
Wave 2 – light refactors
- Replace document.execCommand (deprecated) with navigator.clipboard
+ CodeMirror editorViewRegistry (S1874)
- Eliminate nested ternaries with lookup objects / && short-circuit (S3358)
- Lift functions to outer scope / convert promise chains to async/await (S2004)
Wave 3 – accessibility (~24 MAJOR issues)
- Convert interactive div/span to native <button> with type="button" (S6848/S1082)
- Add role, aria-label, aria-selected, aria-modal to menus, dialogs,
textboxes, separators, trees, and tab strips (S6848/S6852/S6819/S6845)
- Add tabIndex and onKeyDown to backdrop overlays
Wave 4a – Rust cognitive complexity
- cli.rs dispatch (48→7): extract cmd_* helpers per command (S3776)
- format.rs strip_jsonc_comments (32→8): state machine with
advance_line_comment / advance_block_comment / advance_in_string /
advance_normal helpers (S3776)
Wave 4b – TypeScript cognitive complexity
- FileTree.tsx handleKeyDown (38→7): extract navDown/Up/Left/Right/Enter
helpers that capture component closure state (S3776)
- Editor.tsx updateListener (16→4): extract applyFormatOnPaste to
module scope, removing async IIFE nesting (S3776/S2004)
- TabStrip.tsx onDrop (17→6): extract handleSameWindowDrop helper;
onMouseUp and handleCrossRendererDrop use shared applyTabReorder (S3776/S2004)
Tests: 195 TS tests pass; 282 Rust tests pass; tsc --noEmit clean; clippy -D warnings clean.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-07 23:42:40 -04:00
frank
542f4e248c
adding build trigger
CI / Rust Format (push) Successful in 18s
CI / TypeScript Lint + Typecheck (push) Successful in 22s
CI / TypeScript Tests + Coverage (push) Successful in 43s
CI / Rust Tests + Coverage (push) Successful in 1m4s
CI / Clippy (SARIF) (push) Successful in 1m15s
CI / Dependency-Track (BOM) (push) Successful in 27s
CI / E2E Tests (Playwright + Electron) (push) Successful in 2m31s
CI / Electron Release Build (push) Successful in 2m52s
CI / SonarQube (push) Successful in 36s
Release Builds / Windows Electron Build (push) Has been cancelled
Release Builds / macOS Apple Silicon Electron Build (push) Has been cancelled
2026-05-07 21:42:58 -04:00
frank
b22a724895
Merge pull request 'running electron migration, tab tear-off re-dock, and auto binary build on merge to master' ( #2 ) from ui_rework into master
...
CI / Rust Format (push) Successful in 13s
CI / TypeScript Lint + Typecheck (push) Successful in 24s
CI / TypeScript Tests + Coverage (push) Successful in 33s
CI / Dependency-Track (BOM) (push) Successful in 23s
CI / Rust Tests + Coverage (push) Successful in 1m20s
CI / Clippy (SARIF) (push) Successful in 1m45s
CI / E2E Tests (Playwright + Electron) (push) Successful in 1m52s
CI / Electron Release Build (push) Successful in 2m21s
CI / SonarQube (push) Successful in 54s
Reviewed-on: #2
2026-05-07 21:19:48 -04:00