Building from Source
git clone https://github.com/hahahotsoup/sipintui.git
cd sipintui
dotnet publish -c Release -r win-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugSymbols=false -o publish/win-x64
./publish/win-x64/sip.exe # enter TUI (Windows)
./publish/win-x64/sip.exe --help # or use the CLI directlyLanguage files are embedded: official translations like
zh-CN.json/en-US.jsonare baked into the exe — even if you copy only a single exe out of the whole publish directory, it auto-restores the default language on first launch (or whenever the data directory is missing), and the UI is still in Chinese. The externallanguages/folder in the publish directory is for user-customized translations (edits take effect immediately; the embedded copies never overwrite your changes).
Replace -r win-x64 with your target platform. Common RIDs:
| Platform | RID |
|---|---|
| Windows x64 / ARM64 | win-x64 / win-arm64 |
| Linux x64 / ARM64 | linux-x64 / linux-arm64 |
| macOS Intel / Apple Silicon | osx-x64 / osx-arm64 |
No-runtime-required build (self-contained): if you want to distribute a "copy and run" build that doesn't require the recipient to install the .NET runtime, change
--self-contained falseto--self-contained trueand publish again (a few dozen MB in size, more self-contained).
Publish all platforms at once: run
powershell -ExecutionPolicy Bypass -File publish.ps1, which produces a single-file executable for Windows x64 / Linux x64 / macOS Intel / macOS Apple Silicon intopublish/<platform>/.
Tech Stack
- C# / .NET 10.0
- Microsoft.Data.Sqlite
- CodeHollow.FeedReader (RSS/Atom parsing)
- DiffPlex (text diff)
- Terminal.Gui (folder-view TUI)
- HtmlAgilityPack (article HTML → plain text / full-text extraction)
- ktsu.CredentialCache (native OS credential store for API keys)
- Embedding / LLM: OpenAI-compatible interfaces (local Ollama, DeepSeek, OpenAI, etc.)