No description
Updates the project's human- and machine-readable index files to reflect their latest generation date. This follows an extensive AI-assisted planning phase, documented in new conversational logs. These logs detail the strategic architectural pivot from Flutter to a Tauri 2-based Rust/React stack. They outline comprehensive decisions on LLM backend strategies, shared foundational components, and a multi-team competitive build roadmap. |
||
|---|---|---|
| .forgejo/workflows | ||
| android | ||
| assets | ||
| lib | ||
| linux | ||
| test | ||
| web | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| 2026-04-07-104815-command-messagescindex-repocommand-message.txt | ||
| 2026-04-11-234732-nonrandom-plans-and-the-Tauri-swerve.txt | ||
| analysis_options.yaml | ||
| PROJECT_INDEX.json | ||
| PROJECT_INDEX.md | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
EnZIM-Stitch
ZIM Reader · Annotator · Chat with ZIM · ZIM Surgery
Sovereign Instrumentation design system · Flutter 3.41 · Android · Linux · Windows · PWA
Overview
EnZIM-Stitch is a multi-platform ZIM archive reader and annotator that solves the "too large to store" problem through three complementary access modes:
| Mode | How it works |
|---|---|
| Chunked Local | Seek-based on-demand cluster reading. Never buffers >1 cluster. |
| Virtual ZIM | HTTP Range requests against any ZIM URL. Never downloads the full file. Index cached in SQLite. |
| ZIM Surgery | Selective cluster extraction → valid smaller ZIM. Users on 4 GB devices can get A–F of Wikipedia. |
Features
- Navigator — Archive library with stats and one-tap open
- Reader — WebView article renderer with Sovereign dark theme injection
- Annotations — Highlight, note, bookmark, tag — stored in SQLite
- Chat with ZIM — Pluggable LLM drawer. Hosted API (OpenAI/Groq/OpenRouter) now; Ollama (local desktop) and on-device Gemma4 via LiteRT-LM as swap-ins
- ZIM Surgery — Letter-range, keyword, or fixed-size extraction with progress telemetry
- Export — Markdown, HTML, JSON + system share sheet
Getting Started
flutter pub get
flutter run -d linux # Desktop
flutter run -d android # Android device/emulator
flutter build web # PWA
LLM Setup (Settings screen)
- Open Settings → choose provider type
- Paste API key (stored in
flutter_secure_storage, never on disk in plain text) - Tap Save & Test — green dot = connected
Architecture
lib/
main.dart # Entry: ProviderScope → EnZimStitchApp
app.dart # GoRouter config
theme/sovereign_theme.dart # Sovereign Instrumentation design tokens
models/ # ZIM types, annotation models
services/
zim/ # Header parser, cluster decompressor, reader, virtual reader, surgeon, SQLite index
llm/ # LLMProvider abstract + OpenAI/Ollama implementations
annotation/ # AnnotationService (SQLite)
export/ # MD/HTML/JSON export + share
stores/ # Riverpod StateNotifier providers
screens/ # Navigator, Reader, Surgery, Search, Settings
widgets/ # ZimCard, AddZimDialog, ChatDrawer, AnnotationPanel, ExportModal
CI/CD
Forgejo self-hosted runners:
| Workflow | Runner | Outputs |
|---|---|---|
build-linux-android.yml |
[self-hosted, linux] |
Linux bundle, APK, AAB, PWA |
build-windows.yml |
[self-hosted, windows] |
Windows zip |
Build number: floor(epoch_seconds / 60) % 100000 — monotone, no server state needed.
Copyright
Copyright © 2026 Robin L. M. Cheung, MBA. All rights reserved.