Repository navigation
Getting started
Syrinx is a Windows desktop application with no server and no deployment, so everything is built, run and tested on a Windows 11 machine. v1 targets Windows 11 only (decision D2); there are no macOS or Linux code paths yet.
- Windows 11.
-
The Rust toolchain for MSVC, version 1.97 or newer. MSVC is Microsoft's
C and C++ compiler and linker; Rust's
x86_64-pc-windows-msvctarget uses it. -
The Windows SDK. Building needs its resource compiler (
rc.exe, which embeds the app icon) and its shader compiler (fxc.exe, because Syrinx's patched GPUI embeds precompiled shaders in every build). - The Evergreen WebView2 runtime, which ships with Windows 11. Syrinx never downloads or installs it itself.
From a checkout of the repository:
cargo syrinx # run Syrinx
cargo xtask check # the gate: dependencies, format, Clippy, tests, smoke run
cargo xtask package # the setup program and portable zip under target\packagecargo xtask check is the gate: the single command that must pass before
any change is called done. It checks the dependency rules between crates,
formatting, Clippy with warnings denied, every test, and a short smoke run of
the application under the optimized local build profile (D38). A passing
gate does not prove that something you can see looks right, so after
changing anything the owner sees, run the app and look at the window.
-
docs/dev/LOCAL-DEV.mdis the authority on how to build, run and test on this machine: the exact commands, profiles, test data folders and what the gate runs. It is not repeated here, so it cannot go out of date in two places. -
docs/dev/trapstoknow.mdlists the mistakes that look fine, often pass the gate, and fail somewhere else: WebView2 and GPUI quirks, Windows Application Control blocking locally built programs, line endings, and more. Read it before you debug a build, a test or a window. -
AGENTS.mdholds the rules for changing the code, including the guardrails that keep Google sign-in working and the owner's data private. - How we track work explains how to pick up an issue and get a change merged.
Never use real personal data while developing: tests and fixtures use
generated values on reserved domains such as example.com and .test.
Using the code
Background research
- 01 Shell and engine
- 02 Browser v1 scope
- 02a Tauri and wry facts
- 02b Default browser, import, signing
- 03 Core architecture
- 04 Forge and Notes
- 05 Fledge API
- 06 Engine and UI performance
- 07 Google sign-in and DRM
- 08 GPUI and wry on Windows
- 09 Phase 0 verdict
Ideas
In the repository