Files
searchi/docs/WINDOWS-FIRST-RELEASE.md
T

7.4 KiB

First usable Windows build

Status: first Windows installer and portable package built and locally installed; unsigned initial release, not production certification. Other-platform and million-record benchmarks are deferred at Karl's request.

The normal Windows x64 distribution includes the same hardware-detecting native Google worker, optimized/baseline CPU modules, Vulkan provider and loader, and app-local Microsoft C++ runtime. It is not a special CPU distribution. VM inference and WebView rendering checks force CPU/software operation. Real GPU execution and clean-machine/older-CPU compatibility remain unexecuted.

Build procedure

The checked-in Tauri bundle setting remains unchanged. An ignored temporary override enables NSIS and the silent WebView2 download bootstrapper:

{"bundle":{"active":true,"windows":{"webviewInstallMode":{"type":"downloadBootstrapper","silent":true}}}}

From apps/desktop, with one Cargo job:

$env:CARGO_BUILD_JOBS = '1'
$env:SEARCHI_FORCE_CPU = '1'
$env:WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS = '--disable-gpu --disable-accelerated-video-decode'
npm run tauri -- build --features custom-protocol --bundles nsis --config ../../.searchi/qa/windows-first-release-config.json

The explicit custom-protocol feature is essential: this CLI invocation did not add it automatically, and the first attempt correctly failed the release guard before packaging. The successful artifact must contain the embedded frontend rather than depend on a development server.

The portable ZIP is prepared from that same executable using python tools/package_windows.py, which verifies normal CPU/GPU dependency inventory, architecture, pinned decoder provenance and file hashes. Models, personal settings and indexes are excluded. Managed Google assets download on first use; cached, hash-verified assets are reused.

Evidence to record before publication

  • Completed embedded-frontend Release build and source/frontend/executable hashes.
  • Portable ZIP member integrity and pinned decoder startup.
  • Extracted normal worker auto-to-CPU query and baseline-only fallback.
  • Extracted app starts outside the source checkout with isolated data and model cache, and genuine local Google readiness/index generation.
  • Installer bytes/hash and generated resource mapping inspected.
  • Execute installation/upgrade/uninstallation on a clean Windows machine.

Executed Windows VM evidence, 2026-10-13

Source commit: 5eeba29. The embedded frontend bundle is index-CtE-o2qW.js, SHA-256 deb3cdbeb4c4d34f17c0249674b37f7fd5cbdf7a01fef50c76d2eb50870817c5. Release compilation completed in 1m58s after dependencies were built.

Artifact Bytes SHA-256
Portable ZIP 145,419,558 dbab40f77902a5183d986222fadd8417aa46f053ee6066d73a06e7f893692060
Embedded-frontend executable 23,950,336 9f9243e15dc7fc907c44af37e45226a24eed642a32e5dc82959fab92516ff564
NSIS x64 installer 98,894,969 1494372cfd9b87dd4de38fd347fe0d18f886a51542e2f49218699aa84979bb3d

The ZIP contains 39 individually hash-verified application/resource files. No models, user settings or indexes are included. The normal worker SHA remains c01cb3ec13cfca722ee768e8350e1399a8b9a4d14a24a35adc3473a5cfc82a73.

The real extracted worker ran its query role with 512 tokens, device=auto and a child-only disabled Vulkan provider. It selected CPU, loaded no Vulkan module and returned a finite normalized 768-dimensional Google code-query vector. Optimized ggml-cpu-cascadelake.dll and baseline-only ggml-cpu-x64.dll both passed, including a Unicode relocation directory. Startup/query/exit took 1.722s and 1.844s respectively; these are not warm-search or first-UI-input benchmarks. The packaged pinned FFprobe helper also started successfully.

The extracted desktop launched outside the source tree with isolated settings, data and hardlinked hash-verified Google assets. Two owned text/code fixtures were indexed through the shared engine. The app automatically published actual Google generation 1 with two chunks and a 6,544-byte ANN blob; publication was observed 10.106s after launch. It remained alive for another five seconds. The owned application process tree was then deliberately terminated. This proves native process/setup/indexing operation, not visual interaction or paint timing.

Ignored raw evidence: .searchi/qa/windows-first-preview-worker.json, .searchi/qa/windows-first-preview-baseline.json, and .searchi/packages/first-preview-qa-Gemäß_日本/result.json.

The initial NSIS attempt failed after its official ZIP was downloaded and hash verified, during tool extraction (access denied). A bundle-only retry uses the cached compiler and preserves the verified executable bytes with --no-binary-patching; it does not disable OS security or clear caches. That retry completed successfully with official NSIS 3.11. Its generated script installs app-local worker/CPU/GPU/decoder resources and downloads the Microsoft WebView2 bootstrapper when needed. The produced installer is apps/desktop/src-tauri/target/release/bundle/nsis/searchi_0.1.0_x64-setup.exe. No installer was executed during this evidence run: even a custom destination registers uninstall information and creates user shortcuts. User installation is handled separately. There is no signing, clean-machine WebView2 download, upgrade or uninstall claim.

Native visual interaction, fresh-machine WebView2 acquisition, installer upgrade/uninstall, SmartScreen/signing and actual GPU performance remain separate checks. A working preview does not close those production release gates.

Local DEV-WIN11 installation

The installer was executed on the existing Windows 11 development machine. Installation with an explicit C:/Users/karl/Applications/searchi destination returned exit code zero; uninstall registration reports version 0.1.0 at that location. The installed executable SHA matches the packaged executable above.

An explicit destination avoids this Codex MSIX host's AppData filesystem virtualization. Existing local searchi data was preserved in an independent C:/Users/karl/.searchi/desktop profile; both genuine Google assets were hash-verified and hardlinked into the independent managed cache. No user folder was selected automatically. The desktop launcher sets only process-local CPU and software-WebView flags for this VM; the distributed package remains the normal hardware-detecting build.

The installed app was started with a native searchi window (PID 7716, window handle 8324222) and its packaged query worker (PID 19864), using one CPU thread and the independent cache. A desktop shortcut was created. This demonstrates local installation/startup and package selection, not a clean-machine test or native visual interaction audit. The app is left running for Karl to use.

Published download

v0.1.0 is published as an initial Windows prerelease, targeting commit d4f7e39. The installer and its SHA256SUMS.txt are publicly downloadable. Both were streamed again without credentials and matched their complete byte counts and SHA-256 values; the installer digest is the one recorded above. The release tag's remote Git SHA also matches the intended commit. Gitea Actions remain disabled.

The 145 MB portable ZIP was rejected with HTTP 413 by the server upload limit. It remains a verified local artifact; this release publishes only the 99 MB installer and its checksum. No server limits were changed.