Troubleshooting
problems and their fixes.
Messages you may see, what they mean and what to do. Tip: paste the exact message into the search box.
01Build and run
On Windows, run the flutter commands below in PowerShell, and shell scripts from WSL or Git Bash.
"NO OPERATOR CONSOLE IN THIS BUILD"
The build was made without SLUICE_OPERATOR_PASSCODE, or with one shorter than six characters. Rebuild with --dart-define=SLUICE_OPERATOR_PASSCODE=… (how).
"That is not the passcode of this build" / "Too many attempts"
The passcode is the one given at build time, exactly. After every third wrong try entry pauses for a few seconds. A forgotten passcode cannot be recovered from the app: rebuild with a new one; your data on the device is kept.
macOS: the endpoint never answers, "Operation not permitted" or connection errors
Check that both macos/Runner/*.entitlements files still contain com.apple.security.network.client (they ship with it), then flutter clean and rebuild.
macOS release on Xcode 27: "does not contain architectures \"arm64 x86_64\""
Flutter 3.41.4 checks both architectures of a universal macOS release in one lipo call, and the lipo in Xcode 27 accepts one architecture per call. flutter run -d macos and flutter build macos --debug are not affected. For a release, build one architecture from Xcode (open macos/Runner.xcworkspace, Product → Archive) or from the terminal after one flutter build macos --release attempt has generated the project settings:
cd macos
xcodebuild -workspace Runner.xcworkspace -scheme Runner -configuration Release ARCHS=arm64 ONLY_ACTIVE_ARCH=YES buildOr build the universal release with Xcode 26.
Web: "Refused to apply inline style" or "Refused to execute inline script" in the browser console
Something inline was added to web/index.html, which the Content-Security-Policy blocks. Move it to a file next to boot.css / boot.js (details).
Web: my endpoints and Helius key are gone after a reload
By design: a browser has no keystore, so the web build keeps them for the session only. Use the desktop app to keep them.
flutter build web --wasm fails
Known in 1.0.0: flutter_secure_storage_web still uses dart:html. Build without --wasm.
The app needs a newer Dart SDK
SLUICE needs Dart 3.11.1 or newer: flutter upgrade (Flutter 3.41+).
MissingPluginException or strange errors after changing packages
flutter clean
flutter pub get
02Endpoint and holders
"Running on the public Solana endpoint. It rate limits hard and often refuses getProgramAccounts…"
Add your own endpoint in Settings → Endpoints (how).
"No Helius key. Holder enumeration falls back to getProgramAccounts…"
Add a Helius key for large holder sets. Small sets work without one on a good endpoint.
The dry run stops while reading holders
Usually getProgramAccounts refused or timed out. Use your own endpoint and a Helius key, then run again. The run stopped shows the reason.
A holder's tokens in a staking vault or LP position are not counted
By design. SLUICE does not look through vaults; the holder holds nothing at the snapshot, and SLUICE says so rather than guessing.
03Rounds
"Your fee" says none
Read the warning under it: no fee wallet, a round too small for the fee to reach one base unit, or a fee above the 2 % cap (Your fee).
"The method is tiered but the schedule has no tiers…"
Open the project, keep By tier and add at least one tier with Add tier, or choose Pro-rata by balance (Tiers).
"The tier minimums were entered for a token with … decimals, but the snapshot token has …"
The dry run refuses to run because every minimum would be off by a power of ten. Open the project and press Read from mint next to Snapshot token decimals, check the minimums, save and run again.
"The time-weighted window is a whole number of days, from 1 to 365."
Enter a whole number of days in Window, days.
Time-weighted: "Samples in the window" is 0, or the average looks wrong
A time-weighted dry run uses only the balance samples recorded on this device for the snapshot mint during the window. Press Record a balance sample regularly during the window, for example once a day. A past balance cannot be read on an ordinary endpoint, so missing days cannot be filled in afterwards (details).
"This round has already started paying"
The plan is already partly paid. Resume it from Rounds with Copy the unpaid batches instead of committing it again.
A signature is refused
SLUICE read the transaction and its transfers do not match the batch you picked: the recipients' token accounts, the amounts, the payout mint, or the funding wallet as source and signer differ. Nothing was recorded. Check the batch number and that the transaction was built from that batch exactly.
A signature is awaiting the chain
The endpoint could not return the transaction yet, or it is not finalized. It is kept, never resent and not counted. Press Ask the chain once the transaction is finalized; SLUICE then verifies it against the batch.
A transaction fails because it ran out of compute units
Raise Compute units per transaction in Settings → Transaction packing before the next dry run, especially if you raised Transfers that also create an account, or lower the batch sizes. A failed transaction moved nothing, so its batch is still unpaid.
Recipients received less than the plan says
The token has a Token-2022 transfer fee; the fee goes to the mint's fee authority. The dry run warns about it.

04Data
My projects are gone after moving to another computer or browser
Everything, including the balance-sample ledgers, is stored on the machine (or browser) SLUICE ran on. Keep each round's Audit bundle · JSON; a round can be checked and reproduced from it.
How do holders see their allocation?
SLUICE has no holder-facing page. Share the Allocations · CSV or the Audit bundle · JSON export, or build your own page on it.