- TypeScript 97.4%
- JavaScript 0.8%
- MDX 0.8%
- Shell 0.3%
- Rust 0.3%
- Other 0.1%
`nx run-many --target=lint:js --all` (expensive checks on, as CI) was red on pre-existing debt unrelated to the contacts work: - protobuf: ignore the entirely code-generated `src/definitions/**` (@generated, DO NOT EDIT) — 374 style violations that would be overwritten on regen. - relayPool: the one-shot read's `finish` closes over `timer` defined just below (safe — finish only runs once timer is set); keep `const`, disable the no-use-before-define on that single line. - aliasLinkThunks: `!consent || consent.r` → `consent?.r` (prefer-optional-chain). - connect/protobufLoader, connect-popup/connectPopupThunks, ward-provider/ wardLeafCommit, suite-desktop-core/trezor-connect: drop unnecessary type assertions / unused import, optional-chain, sort the WardProvider import. Repo-wide type-check (321 projects) and lint:js (324 projects) are both green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| .husky | ||
| .nix | ||
| .vscode | ||
| .yarn | ||
| docker | ||
| docs | ||
| eslint-local-rules | ||
| networks | ||
| packages | ||
| scripts | ||
| site | ||
| skills | ||
| stylelint-local-rules | ||
| submodules | ||
| suite | ||
| suite-common | ||
| suite-native | ||
| .aiexclude | ||
| .aiignore | ||
| .cursorignore | ||
| .depcheckrc.json | ||
| .dockerignore | ||
| .easignore | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .git-pr-body.md | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .madgerc | ||
| .nvmrc | ||
| .nxignore | ||
| .prettierignore | ||
| .prettierrc | ||
| .stylelintrc | ||
| .yarnrc.yml | ||
| .zshrc | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| COMMITS.md | ||
| env.local.example | ||
| eslint.config.mjs | ||
| flake.lock | ||
| flake.nix | ||
| flavour.config.json | ||
| IDE.md | ||
| jest.config.base.js | ||
| jest.config.base.swc.js | ||
| jest.config.native.js | ||
| jest.config.swc-transform.js | ||
| JestCustomEnv.js | ||
| LICENSE.md | ||
| nixos-fix-binaries.sh | ||
| nx.json | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| shell.nix | ||
| tsconfig.base.json | ||
| tsconfig.lib.json | ||
| yarn.lock | ||
Suite Dark
An unofficial, Bitcoin-only, privacy-first build of Trezor Suite desktop.
Suite Dark is a fork of Trezor Suite: the full upstream source pinned at a specific commit, plus a small, readable set of commits that cut it down to Bitcoin and turn privacy on by default. No shitcoins. No tracking. Tor by default. CoinJoin enabled. Dark by default. No compromise.
Website: https://suite-dark.github.io/suite-dark/ · Desktop only.
What's different from upstream
The entire delta is a handful of single-purpose commits on top of the upstream
snapshot — read them with git log <snapshot>..HEAD or on the
commits page:
| Commit | Effect |
|---|---|
| Branding | Product name / app id / URI scheme, Bitcoin-orange theme + tray icon. |
| Privacy — nothing phones home | No Sentry / analytics / auto-updater-telemetry; message-system local-only; re-texted consent; disabled Settings analytics toggle. |
| Privacy defaults | Tor and discreet mode on by default. |
| Bitcoin-only | Only BTC everywhere; removes the add-account network search and the MEV protection setting. |
| Hide Earn / Trading / promo | Removes the Earn & Trading surfaces and the dashboard promo banners. |
| CoinJoin | Default coordinator coinjoin.kruw.io; all "discontinued" messaging removed. |
| Passwords | Promotes the password manager to a first-class Passwords menu item. |
| Auto-update | From this repo's continuous release (Windows/Linux; macOS via a self-signed build — experimental). |
| Dark theme by default | Light / system still selectable in Settings. |
Alternative firmware — Firmware Dark
Suite Dark has a companion project, Firmware Dark — an unofficial, Bitcoin-only build of Trezor firmware for Trezor Model T, Safe 3, Safe 5 and Safe 7. You can install it directly from Suite Dark: Settings → Device → Advanced → "Install Suite Dark firmware".
⚠️ Installing unofficial firmware wipes the device (back up your recovery seed first) and the device will permanently show an "unofficial firmware" warning. This is inherent to unsigned firmware and cannot be removed.
Build it yourself
Prereqs: Node 24, Yarn (via corepack), git.
git clone --recurse-submodules https://github.com/suite-dark/suite-dark
cd suite-dark
yarn install
yarn build:libs
yarn build:essential # signs the bundled message-system config (dev key, no secrets)
yarn workspace @trezor/suite-desktop build:mac # or build:linux / build:win
# → packages/suite-desktop/build-electron/SuiteDark-*
Builds are unsigned, so macOS Gatekeeper / Windows SmartScreen warn on first launch — expected for a build you verify yourself.
Download
Prebuilt desktop binaries: Releases
(rolling continuous tag). Verify your download against SHA256SUMS.
Tracking upstream
Suite Dark pins an upstream snapshot (see the Import trezor-suite … commit) and
carries its changes as commits on top. To move onto a newer upstream release,
re-import the snapshot and rebase the Suite Dark commits onto it — the delta stays
small and explicit.
Pull requests
All Suite Dark pull requests must target suite-dark/suite-dark with main as the
base branch. Never open Suite Dark changes against trezor/trezor-suite; that
repository is upstream source material, not this project's contribution target.
gh pr create --repo suite-dark/suite-dark --base main --head <branch>
Before creating or updating a pull request, verify its repository and base branch.
CI
.github/workflows/build.yml is a manual (workflow_dispatch) matrix build for
macOS / Linux / Windows that publishes to the continuous release. pages.yml
publishes site/ to GitHub Pages. (Upstream's workflows are intentionally removed.)
Suite Dark is an unofficial, community-built distribution. It is not affiliated with, endorsed by, or supported by SatoshiLabs / Trezor. "Trezor" and "Trezor Suite" are trademarks of their respective owners. Provided as-is, no warranty. Always verify what you run.