From 01279a6b25b545d0920889bf277abe00631a666d Mon Sep 17 00:00:00 2001 From: karl Date: Tue, 13 Oct 2026 22:42:06 +0200 Subject: [PATCH] Finalize release downloads, installation prompt and verified handoff --- README.md | 43 ++++++++++++++++++++++------------- docs/AGENT-INTEGRATION.md | 4 ++-- docs/BUILDING.md | 9 ++++---- docs/FINAL-HANDOFF.md | 46 ++++++++++++++++++++++++++++++++++++++ docs/LINUX-HEADLESS.md | 30 +++++++++++++++++++------ docs/LINUX-SPEECH-0.1.6.md | 6 +++-- docs/ROADMAP.md | 5 +++-- 7 files changed, 110 insertions(+), 33 deletions(-) create mode 100644 docs/FINAL-HANDOFF.md diff --git a/README.md b/README.md index 4acbc3e..b628faa 100644 --- a/README.md +++ b/README.md @@ -43,20 +43,21 @@ sound. Use **All files** to narrow results by folder, file extension, modification date, file size or media duration. Choose a result to inspect it before opening. -Windows 0.1.5 offers **Artist (exact)** and **Track title (exact)** +The current Windows app offers **Artist (exact)** and **Track title (exact)** filters for music. Enter the complete tag, with or without a text query. These filters ignore letter case and surrounding spaces; files without the matching music tag stay out of the results. Existing indexes need a media indexing pass -before these new filters can use their tags. Windows 0.1.5 includes these filters; older downloads need an update. +before these filters can use their tags. They require Windows 0.1.5 or later. -### Windows 0.1.6: search spoken passages +### Search spoken passages Windows 0.1.6 adds experimental local speech recognition for audio and video. Describe a spoken topic, inspect the recognized passage, and jump to its estimated position. Google EmbeddingGemma 2 remains the search model; the additional speech models help turn spoken words into searchable passages. For example, try `someone talking about equal rights` in a recording that -contains that topic. Download Windows 0.1.6 below to use it. +contains that topic. Use the current Windows installer below, or the Linux +headless 0.1.6 archive. ### Find the implementation @@ -111,19 +112,19 @@ The installer creates a launcher and sets up WebView2 if needed. This initial release is unsigned. A Linux desktop preview is also available; macOS source build instructions are available now. You can also let your local AI agent handle setup. -**Ubuntu 24.04 x64 desktop preview:** [Download the Debian package](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/searchi_0.1.4_amd64.deb) +**Ubuntu 24.04 x64 desktop preview:** [Download the Debian package](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi_0.1.4_amd64.deb) and install with `sudo apt install ./searchi_0.1.4_amd64.deb`. -[Checksums](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/LINUX-DESKTOP-SHA256SUMS-0.1.4.txt). +[Checksums](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/LINUX-DESKTOP-SHA256SUMS-0.1.4.txt). Startup was tested in WSL using CPU; native graphical interaction and other distributions still need testing. [Compatibility and evidence](docs/LINUX-DESKTOP.md). **Running a Linux server?** The optional -[Linux x64 headless preview 0.1.6](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-headless_0.1.6_linux-x86_64.tar.xz) +[Linux x64 headless preview 0.1.6](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz) includes the CLI, read-only MCP server, Google runtime, media helpers and experimental local speech search. Follow the archive's `START-HERE.txt` to download recognition models and index spoken passages. It was tested on Ubuntu 24.04 and requires GLIBC 2.39 and a compatible C++ -runtime. [Checksum](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256) +runtime. [Checksum](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256) · [Headless setup](docs/LINUX-HEADLESS.md). No desktop dependencies are required. ### Install with your agent — copy and paste @@ -135,22 +136,32 @@ Install searchi on this computer and get it ready for my first search. Official repository: https://tea.karlcom.de/karl/searchi Detect my operating system and processor architecture. Use a suitable official -release from the README or releases page, including the Windows installer or -compatible Ubuntu desktop package or Linux headless archive. Check its documented system requirements, -verifying its published checksums. Otherwise, +release from the README or releases page: choose the newest compatible artifact +for my platform, even if it is attached to an older release. Use the Windows +installer, compatible Ubuntu desktop package or Linux headless archive. Check +its documented system requirements and verify its published checksum. Otherwise, set up the current source version using the repository's installation/build instructions. Handle the required tools and dependencies for me; don't just give me a list of commands to run. Keep the installation in a dedicated folder and preserve any existing searchi settings and index. +Use the public download URLs; no private Gitea token is needed. If Cloudflare +returns HTTP 403 to a command-line downloader, use a browser download or retry +the same official URL with User-Agent Mozilla/5.0, then verify the checksum. + Install the desktop app by default. On headless Linux, install the command-line version instead, without desktop dependencies. Set up the genuine local Google EmbeddingGemma 2 runtime and model, and the media helpers available for my platform. Use supported hardware acceleration with CPU fallback. Explain any large downloads or platform limitations before proceeding with those steps. -Launch searchi and check that it actually opens and its local search model is -ready. Create a normal launcher or shortcut so I can open it again. If a prerequisite, platform component +On desktop, launch searchi and verify that its window opens and its local search +model is ready. Create a launcher or shortcut; on Windows, show me the tray icon +and Ctrl + Shift + Space shortcut. On headless Linux, verify the CLI and its +bundled workers instead, then provide a repeatable search command or MCP setup. +On Windows, configure a per-user login launcher with --background so the global +shortcut is ready after sign-in; keep the app accessible through its tray menu. +If a prerequisite, platform component or permission prevents setup, explain precisely what is missing; don't report a working installation until it is verified. Ask for my help only when a password, system approval or other manual action is required. @@ -166,7 +177,7 @@ Windows x64 setup can use the published installer; Ubuntu 24.04 x64 can use the desktop preview, and compatible headless Linux systems can use the preview archive. Other platforms currently build from source. The local search model downloads approximately **865 MB** -once. The Windows 0.1.6 speech feature automatically downloads about +once. The current Windows speech feature automatically downloads about **149 MB** of additional local assets afterward. Cached assets are reused; filename and keyword search remain available while models prepare. Your agent should report any platform limitation it encounters. @@ -256,8 +267,8 @@ Your agent receives the returned excerpts; cloud agents handle them according to that client's configuration. On Windows x64, your agent can use the optional -[CLI/MCP download](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-cli-windows-0.1.6.zip) -with its [own checksum](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-cli-windows-0.1.6.zip.sha256). +[CLI/MCP download](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-cli-windows-0.1.6.zip) +with its [own checksum](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-cli-windows-0.1.6.zip.sha256). Extract the ZIP alongside the installed desktop runtime helpers; it includes the document extraction helper. No Rust build is needed. Install the desktop app first for the model setup and runtime helpers, then connect the CLI to that app's existing index. diff --git a/docs/AGENT-INTEGRATION.md b/docs/AGENT-INTEGRATION.md index d2c80a1..5a4829b 100644 --- a/docs/AGENT-INTEGRATION.md +++ b/docs/AGENT-INTEGRATION.md @@ -8,8 +8,8 @@ same actual Rust/Google search engine. ## Configure an existing index Windows x64 users can download the optional -[CLI/MCP ZIP](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-cli-windows-0.1.6.zip) -and verify its [separate checksum file](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.6/searchi-cli-windows-0.1.6.zip.sha256). +[CLI/MCP ZIP](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-cli-windows-0.1.6.zip) +and verify its [separate checksum file](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-cli-windows-0.1.6.zip.sha256). Extract it alongside the installed desktop's runtime helpers. Use `searchi-cli.exe`; keep `searchi-extract-worker.exe` beside it for PDF/DOCX indexing. Use the desktop to finish model setup and semantic indexing before connecting. diff --git a/docs/BUILDING.md b/docs/BUILDING.md index c74949d..feaf057 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -99,8 +99,8 @@ screenshots and worker inference; those are different release gates. ## Headless Linux Google search -These are the current script and CLI interfaces, not evidence of an executed -Linux release. On a native Linux build host with Vulkan development libraries +The published headless archive is documented in [Linux setup](LINUX-HEADLESS.md). +The commands below describe a source build. On a native Linux build host with Vulkan development libraries and `glslc`, run from the repository root: On Ubuntu 24.04, the native worker build prerequisites are `build-essential`, @@ -248,8 +248,9 @@ python tools/package_windows.py --cli target/release/searchi.exe The additional binary is named `searchi-cli.exe`; `searchi.exe` remains the desktop launcher. Its model cache and database must be selected explicitly, -as described in [agent integration](AGENT-INTEGRATION.md). This option does not -add the CLI to the already published v0.1.0 installer. +as described in [agent integration](AGENT-INTEGRATION.md). Published Windows +installers provide the desktop app; the optional CLI/MCP ZIP is a separate +download linked in the README. The generated `.searchi/packages/searchi-windows.zip` contains the desktop, matching-architecture Google worker, FFmpeg/FFprobe and notices. It excludes diff --git a/docs/FINAL-HANDOFF.md b/docs/FINAL-HANDOFF.md new file mode 100644 index 0000000..f37ba12 --- /dev/null +++ b/docs/FINAL-HANDOFF.md @@ -0,0 +1,46 @@ +# Initial release handoff — 2026-10-13 + +Karl requested finishing the usable Windows delivery and publishing the already +validated Linux packages, without further feature/platform expansion. +[Final release v0.1.7](https://tea.karlcom.de/karl/searchi/releases/tag/v0.1.7) +is published as a regular release and is returned by Gitea's latest-release API. +Its eight assets include installers/archives and their checksums: + +| Artifact | Actual version | SHA-256 | +| --- | --- | --- | +| Windows desktop | 0.1.7 | `5ca8ad982113d086190ecf8ea684a504a4277099a377124bdffa8ca9fed6595e` | +| Windows CLI/MCP | 0.1.6 | `876dc88b9f55d7e8c4f5572868f2076b99436a6cfe12af44c1696fa8dc0178a1` | +| Linux headless | 0.1.6 | `9ae7fa9a203c6471cfd6bdd82ac5bf81683813c15fe652595976344fbbf96084` | +| Ubuntu desktop preview | 0.1.4 | `75566915bfe67d3b60fc3658f9d68fad40840d4e53b3c3aeb22fbf8450f43687` | + +All four complete public downloads matched published checksums and local bytes, +including the copies attached to the final release. Linux and CLI artifacts were +not renamed to imply a new build. Existing published tags remain unchanged. + +The README and installation-agent prompt were audited against actual packages, +CLI flags and platform differences. Links now point to this release. The prompt +preserves existing data, distinguishes desktop from headless verification, +sets up Windows login/background launching, keeps cloud answers disabled and +lets users choose indexed folders. Public command-line download requests need +a browser user-agent under the current Cloudflare policy; tested Linux commands +and the agent prompt account for this without requiring private credentials. + +Final Windows check passed: installed 0.1.7 matches the installer executable; +resident background process, forced-CPU query worker, login launcher, unchanged +settings and SQLite integrity were verified. Genuine filename and Google speech +retrieval on the existing four-file fixture returned the expected file/passage; +the source excerpt was verified and a forged handle rejected. The measured +semantic request was 79.24 ms in this small prepared fixture, not startup, p95 +or large-library evidence. Ignored report SHA-256: +`dc3cf39d46a91de6b5730768c48da29d85a91fdf4ba49ea4ca201806769b6e2c`. + +The origin protection value exposed during diagnostics was rotated using a new +protected Infisical reference. All matching Cloudflare/NPM consumers were +updated; the retired value returns 403 and public browser requests work. No +secret values are committed. Gitea Actions remain disabled as requested. + +This initial delivery is complete. Native keyboard/tray interaction was not +automated; actual GPU, macOS, broader Linux/clean-machine checks and broader +search-quality work remain deferred. Media/speech stay usable experimental +features with imperfect recognition, estimated times and known absent-content +false positives. This handoff does not claim all-platform production readiness. diff --git a/docs/LINUX-HEADLESS.md b/docs/LINUX-HEADLESS.md index 4f8ba86..a9c0ca2 100644 --- a/docs/LINUX-HEADLESS.md +++ b/docs/LINUX-HEADLESS.md @@ -17,15 +17,15 @@ Download into a new dedicated directory and verify before extracting: ```sh mkdir -p "$HOME/Applications/searchi" cd "$HOME/Applications/searchi" -curl -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/searchi-headless_0.1.0_linux-x86_64-014.tar.xz -curl -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/LINUX-SHA256SUMS-0.1.4.txt -sha256sum -c LINUX-SHA256SUMS-0.1.4.txt -tar -xf searchi-headless_0.1.0_linux-x86_64-014.tar.xz +curl -A "Mozilla/5.0" -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz +curl -A "Mozilla/5.0" -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256 +sha256sum -c searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256 +tar -xf searchi-headless_0.1.6_linux-x86_64.tar.xz ./searchi --help ./searchi setup --model-dir ./models ``` -The package is approximately 104 MB. First model setup downloads approximately +The package is approximately 109 MB. First model setup downloads approximately 865 MB and reuses verified cached assets. Keep the runtime libraries and media helpers alongside the CLI. To use graphics acceleration, the system needs a compatible Vulkan loader and graphics driver; otherwise search uses CPU. @@ -44,6 +44,21 @@ to search source implementations. For filenames/content without model inference, omit both model arguments. `--json --performance` reports basic measurements; `--debug-performance` enables detailed traces. +### Search spoken passages + +Version 0.1.6 includes experimental local speech search. Download the additional +recognition assets (about 149 MB), then encode recognized passages alongside +Google's media embeddings: + +```sh +./searchi setup --speech --model-dir ./speech-models +./searchi embed --db ./searchi.sqlite --model-dir ./models --embedding-worker ./searchi-gemma-worker --speech-worker ./speech-runtime/searchi-speech-worker --speech-model-dir ./speech-models +``` + +Use the same `search` command above. Spoken passages include estimated timestamps; +recognition can miss words, and results can be irrelevant when no matching content +exists. After changing files, repeat `index` and this speech-enabled `embed` command. + ## Connect your local agent Configure a stdio MCP client to run the absolute path to `searchi`, with these @@ -58,8 +73,9 @@ index or mutate files. See [agent integration](AGENT-INTEGRATION.md). ## Recorded package evidence, 2026-10-13 -Current package: [Linux update alongside 0.1.4](LINUX-0.1.4.md), including the -archived-date correction. The following records retain older release evidence. +Current package: [Linux headless 0.1.6](LINUX-SPEECH-0.1.6.md), including genuine +packaged Google/speech CPU retrieval and public download verification. The +following records retain older release evidence. Headless component version 0.1.0 is supplied alongside desktop release 0.1.1. All 89 selected engine/CLI and workspace lock/manifest files matched current diff --git a/docs/LINUX-SPEECH-0.1.6.md b/docs/LINUX-SPEECH-0.1.6.md index b019030..24af2d7 100644 --- a/docs/LINUX-SPEECH-0.1.6.md +++ b/docs/LINUX-SPEECH-0.1.6.md @@ -173,6 +173,8 @@ origin header. Gitea Actions remain disabled. Cloudflare's separate external upload cap is not changed by these local settings; public downloads work. The configuration diagnostics accidentally exposed an origin protection value -in tool output. No value is recorded here or committed. Rotation remains a -separate open security follow-up. Native Linux desktop 0.1.6, GPU, macOS, +in tool output. No value is recorded here or committed. It was subsequently +rotated through protected Infisical storage; all matching Cloudflare/NPM +consumers were updated, the old value is rejected and public access verified. +Native Linux desktop 0.1.6, GPU, macOS, clean-machine installation and broader quality gates remain open. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 7d7a8e9..4e8530c 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -64,8 +64,9 @@ open and deferred; do not continue expanding them without a renewed request. public speech archive delivery remain open. - [x] Genuine packaged Linux Google/speech retrieval and public headless archive delivery; full-byte public download verified. See [evidence](LINUX-SPEECH-0.1.6.md). - - [ ] Rotate the origin protection value exposed during upload-limit diagnostics; - keep values out of Git and coordinate its Cloudflare/Infisical configuration. + - [x] Rotate the exposed origin protection value using protected Infisical + storage and coordinated Cloudflare/NPM updates; old value rejected on all + three affected services, public access verified, no values committed. - [x] Genuine shared-service ASR/Google lifecycle passed: verified speech excerpts, zero raw reencodes through policy failure/retry, and retained query reader; [proof](SPEECH-INTEGRATION.md).