Skip to content

Windows support: installer fix, sqlite_scanner elimination, CI, test fixes#66

Merged
wesm merged 7 commits intomainfrom
windows-install
Feb 5, 2026
Merged

Windows support: installer fix, sqlite_scanner elimination, CI, test fixes#66
wesm merged 7 commits intomainfrom
windows-install

Conversation

@wesm
Copy link
Copy Markdown
Owner

@wesm wesm commented Feb 5, 2026

Summary

  • Fix Windows installer to use .zip archives (matching release workflow) with Expand-Archive, including error handling and PS version guard
  • Eliminate sqlite_scanner dependency on Windows: skip DuckDB's sqlite extension entirely, route detail queries through direct SQLite, use CSV intermediate path for cache building with explicit TIMESTAMP type overrides
  • Graceful sqlite_scanner fallback on Linux/macOS: log and continue instead of hard-failing, supporting air-gapped/offline environments
  • Add Windows CI job (test-windows on windows-latest) with artifact upload
  • Fix all Windows test failures: skip Unix permission checks (0600/0755), fix validateRelativePath for rooted paths, exclude .... filename on Windows
  • Fix CSV temp dir permissions: use database parent directory instead of system temp (restricted on Windows for downloaded executables)
  • README: remove Windows known-issues warning, upgrade pre-alpha → alpha

Test plan

  • make test passes on macOS
  • make lint passes
  • Windows CI job passes (test-windows)
  • Manual test: msgvault tui works on Windows with CSV fallback path
  • Manual test: install.ps1 downloads and extracts .zip correctly

🤖 Generated with Claude Code

wesm and others added 7 commits February 4, 2026 19:40
The release workflow produces .zip for Windows but install.ps1 was
downloading .tar.gz and extracting with tar. Switch to .zip and use
PowerShell's built-in Expand-Archive (available in PowerShell 5+,
ships with Windows 10+) instead of requiring tar.exe.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
DuckDB's extension repository does not publish sqlite_scanner for
MinGW builds, so INSTALL sqlite always fails on Windows. This was
causing ugly warnings on TUI launch and preventing cache builds.

Changes:
- DuckDBEngine: skip sqlite_scanner on Windows, route ListAccounts
  and fetchLabelsForMessages through direct SQLite connection
- build_cache: on Windows, export SQLite tables to temp CSVs and
  create DuckDB views (sqlite_db schema) so COPY-to-Parquet queries
  work unchanged
- CI: add test-windows job that builds and runs full test suite

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…warnings

- install.ps1: Add try/catch for Expand-Archive and PS version guard (#4552)
- build_cache.go: Explicit TIMESTAMP types for sent_at/deleted_from_source_at
  in CSV views to prevent type inference failures (#4553-1)
- .roborev.toml: Document \N sentinel as accepted design choice (#4553-2)
- duckdb.go: Log warning when no label source available (#4553-3)
- build_cache_test.go: Add TestCSVFallbackPath exercising the full
  SQLite→CSV→DuckDB views→Parquet pipeline (#4553-4)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- duckdb.go: sqlite_scanner now falls back gracefully on Linux/macOS
  instead of hard-failing (supports air-gapped/offline environments)
- build_cache.go: setupSQLiteSource falls back to CSV path if sqlite
  extension unavailable on any platform
- fs_helpers.go: validateRelativePath rejects rooted paths (\path, /path)
  that filepath.IsAbs misses on Windows
- testutil_test.go: exclude "…." filename on Windows (trailing dots stripped)
- Skip Unix permission checks (0600/0755) on Windows in 6 test files:
  export_attachment, manifest, attachments, sync, update tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
System temp dir can have restricted permissions on Windows for
downloaded executables. Use the database's parent directory instead,
which the user must already have write access to.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@wesm wesm changed the title Fix Windows installer to use .zip archives Windows support: installer fix, sqlite_scanner elimination, CI, test fixes Feb 5, 2026
@wesm wesm merged commit 0ff64fc into main Feb 5, 2026
2 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