Repository: cppa-cursor-browser
Assignee: Brad @bradjin8
Severity: High
Problem
The project explicitly supports Windows, macOS, Linux, and WSL with platform-specific path detection logic, but the CI matrix tests only three Python versions on ubuntu-latest. The normalize_file_path function — which handles file:/// URIs, percent-encoded characters, backslash vs. forward-slash, and drive-letter casing — exists in two independent copies (one in utils/, one in scripts/export.py), and neither copy is exercised on Windows or macOS in CI. The PyInstaller spec targets a Windows .exe but is never built or tested. This means path normalization divergence between the two implementations cannot be detected automatically, and cross-platform breakage ships silently.
Acceptance Criteria
Implementation Notes
Modify .github/workflows/tests.yml to add os: [ubuntu-latest, windows-latest, macos-latest] to the matrix. Some test fixtures may use hardcoded POSIX paths — audit for /tmp/ references and replace with tempfile.mkdtemp() or tmp_path pytest fixtures. The PyInstaller build step only needs to run on the Windows row. Consider using if: matrix.os == 'windows-latest' for that step. This is the highest-leverage single CI change: it simultaneously verifies cross-platform path handling, validates the desktop build, and exposes divergence between the two normalize_file_path copies.
References
- Eval finding: test 27
- Cluster:
compound-cross-platform-verification-gap
- Related files:
.github/workflows/tests.yml, utils/path_helpers.py, scripts/export.py (private normalize_file_path), cursor_browser.spec (PyInstaller config)
- Compounds: COMPOUND-D (cross-platform claims + single-OS CI + path duplication), COMPOUND-F (unbounded pins + single-OS CI)
Repository: cppa-cursor-browser
Assignee: Brad @bradjin8
Severity: High
Problem
The project explicitly supports Windows, macOS, Linux, and WSL with platform-specific path detection logic, but the CI matrix tests only three Python versions on
ubuntu-latest. Thenormalize_file_pathfunction — which handlesfile:///URIs, percent-encoded characters, backslash vs. forward-slash, and drive-letter casing — exists in two independent copies (one inutils/, one inscripts/export.py), and neither copy is exercised on Windows or macOS in CI. The PyInstaller spec targets a Windows.exebut is never built or tested. This means path normalization divergence between the two implementations cannot be detected automatically, and cross-platform breakage ships silently.Acceptance Criteria
windows-latestandmacos-latestrunnersfile:///C:/...URIs) on actual Windows runners.exe; smoke-test that it launches with--help)Implementation Notes
Modify
.github/workflows/tests.ymlto addos: [ubuntu-latest, windows-latest, macos-latest]to the matrix. Some test fixtures may use hardcoded POSIX paths — audit for/tmp/references and replace withtempfile.mkdtemp()ortmp_pathpytest fixtures. The PyInstaller build step only needs to run on the Windows row. Consider usingif: matrix.os == 'windows-latest'for that step. This is the highest-leverage single CI change: it simultaneously verifies cross-platform path handling, validates the desktop build, and exposes divergence between the twonormalize_file_pathcopies.References
compound-cross-platform-verification-gap.github/workflows/tests.yml,utils/path_helpers.py,scripts/export.py(privatenormalize_file_path),cursor_browser.spec(PyInstaller config)