Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
b79df02
chore(deps)!: bump dashpay/platform to v4.3-dev (4d1db8a5)
lklimek Sep 22, 2026
83e6b23
fix: adapt to protocol version 14 upstream types
lklimek Sep 22, 2026
860508a
feat(identity): honour key limits and contract bounds when choosing s…
lklimek Sep 22, 2026
b9b7ad4
feat(tokens): once-per-identity token distribution
lklimek Sep 22, 2026
0b1d4f7
feat(documents): agree to document action fees before broadcasting
lklimek Sep 22, 2026
21d6eb7
feat(errors): map protocol version 14 consensus rejections to typed e…
lklimek Sep 22, 2026
dabcde8
feat(identity): add keys with spending limits and raise key limits
lklimek Sep 22, 2026
3c3d372
feat(contracts): view and claim contract fee pots
lklimek Sep 22, 2026
123c836
docs(user-stories): add protocol version 14 key limits, fees and toke…
lklimek Sep 22, 2026
5c21498
chore(deps): re-pin dashpay/platform to 21d70b3c
lklimek Sep 22, 2026
fa9424f
docs(claude): point SDK error reference at From<SdkError> for TaskError
lklimek Sep 22, 2026
45335d6
chore(deps): re-pin dashpay/platform to c5c4d316
lklimek Sep 22, 2026
6c908ff
fix(identity): pick signing keys this device can sign with
lklimek Sep 22, 2026
a536506
test(identity): give the document signing key test its private keys
lklimek Sep 22, 2026
8e899e2
fix(ui): judge keys in the key chooser by the key the identity holds now
lklimek Sep 22, 2026
482e02d
feat(identity): add authentication keys bound to a contract
lklimek Sep 22, 2026
1514010
fix(documents): never agree to a contract fee on the user's behalf
lklimek Sep 22, 2026
6515c1b
fix(documents): recover from a risen fee multiplier and describe fees…
lklimek Sep 22, 2026
37228b5
fix(tokens): keep the once-per-identity claim hint advisory
lklimek Sep 22, 2026
c49a3c9
fix(errors): keep node-supplied names out of messages and name failur…
lklimek Sep 22, 2026
eba2888
feat(identity): confirm a key limits raise and sign exactly what was …
lklimek Sep 22, 2026
4bb46c9
fix(contracts): block fee pot claims Platform would refuse, with tests
lklimek Sep 22, 2026
0dbc214
ci(migration): point platform pin guard at dashpay/platform#4764 branch
lklimek Sep 22, 2026
67b58e4
test(identity): a key extended on the network is not reported expired
lklimek Sep 22, 2026
1551b80
docs(user-stories): reflect review fixes for key limits, fees and claims
lklimek Sep 22, 2026
07473ca
chore(deps): mark the platform pin as temporary until dashpay/platfor…
lklimek Sep 22, 2026
30a2319
fix(identity): restore the key info buttons when no signable key is held
lklimek Sep 22, 2026
6459657
fix(documents): refresh the fee multiplier from a proved epoch after …
lklimek Sep 22, 2026
79aab7b
refactor(documents): box the epoch refresh error
lklimek Sep 22, 2026
d5a1a2c
fix(identity): keep the reviewed signer for a key limits raise, or as…
lklimek Sep 22, 2026
3c4c3d3
fix(contracts): say to refresh the fee pots to claim again next epoch
lklimek Sep 22, 2026
ddbe575
docs(user-stories): note fee pot refresh and signer re-review for key…
lklimek Sep 22, 2026
db88409
fix(identity): refuse the remaining-budget query before protocol 14
lklimek Sep 22, 2026
8870d90
fix(sdk): build at the network's protocol version, not a fixed table
lklimek Sep 22, 2026
053edc0
test(platform): guard the protocol 13 tables and pre-v14 transitions
lklimek Sep 22, 2026
2c38219
chore(deps): re-pin dashpay/platform to v4.3-dev (9f7ed169)
lklimek Sep 22, 2026
34da7b8
ci(migration): point platform pin guard back at v4.3-dev
lklimek Sep 22, 2026
b6ff74a
Merge branch 'v1.0-dev' into chore/bump-platform-v4.3
lklimek Sep 22, 2026
0b58752
Merge remote-tracking branch 'origin/v1.0-dev' into chore/bump-platfo…
lklimek Sep 23, 2026
d0ecb06
merge: update protocol 14 support from v1.0-dev
lklimek Oct 21, 2026
db13595
fix(dpns): resolve contest timing after protocol-aware merge
lklimek Oct 21, 2026
bc516b2
fix(ui): adapt document and token views to updated SDK types
lklimek Oct 21, 2026
293981f
build(sdk): update Platform pin and preserve client compatibility guards
lklimek Oct 21, 2026
1ed249e
test(backend-e2e): adapt DPNS registration measurement to the new SDK…
lklimek Oct 22, 2026
87bc4bd
fix(identity): send the key budget read when the recovery check takes…
lklimek Oct 22, 2026
48f77cb
fix(contracts): stop blocking fee claims on the unsigned response epoch
lklimek Oct 22, 2026
aaf2bb5
fix(documents): pick the document action key by the type's security l…
lklimek Oct 22, 2026
3f7985c
fix(documents): send exactly the action a contract fee was confirmed for
lklimek Oct 22, 2026
1fc6de5
fix(tokens): confirm the named token distribution and claim exactly t…
lklimek Oct 22, 2026
14a3240
fix(documents): say why the document action stops when no key can sig…
lklimek Oct 22, 2026
db3c5ce
test(protocol): prove limited keys and once-per-identity rules keep t…
lklimek Oct 22, 2026
88ac9ac
refactor(tokens): price every token registration term from the confir…
lklimek Oct 22, 2026
8d27fd2
fix(identity): ignore a key budget answer that does not name the key …
lklimek Oct 22, 2026
28d57b8
fix(identity): refuse a key limits change that lowers or adds a limit…
lklimek Oct 22, 2026
df176ff
fix(ui): leave keys bound to another contract out of the manual key c…
lklimek Oct 22, 2026
5ca942a
perf(contracts): borrow the filtered fee pot contracts instead of clo…
lklimek Oct 22, 2026
43c8e39
fix(ui): report mistyped key limit and token amounts under their fiel…
lklimek Oct 22, 2026
4cc358f
test(kittest): cover the Expired and Limited key markers in the keys …
lklimek Oct 22, 2026
348ffc1
style(identity): title-case the key limits labels like the rest of Ke…
lklimek Oct 22, 2026
1df1c1b
docs(tokens): put the dismiss comment back on mark_untracked_in
lklimek Oct 22, 2026
ada495b
docs(user-stories): state plainly that an expired key needs its expir…
lklimek Oct 22, 2026
0bc89c2
style: break unsplittable import paths so rustfmt sorts and formats t…
lklimek Oct 22, 2026
3e79224
test(ui): borrow the caveat as a slice in the manual chooser test
lklimek Oct 22, 2026
d16f209
docs(ai-design): record the protocol 14 bump in its own dated design …
lklimek Oct 22, 2026
8ead500
docs(ai-design): describe the key limit raise confirmation accurately
lklimek Oct 22, 2026
354b5a5
test(platform-info): expect protocol 14's 15% daily withdrawal limit
lklimek Oct 22, 2026
4a15436
test(wallet): size asset-lock Max dry runs with a P2PKH-length credit…
lklimek Oct 22, 2026
7214f4c
fix(errors): show dates in error messages through the model formatter
lklimek Oct 22, 2026
771d5da
fix(contracts): report a failed contract or identity read on the fee …
lklimek Oct 22, 2026
1b37cc9
fix(tokens): save a dismissed once-per-identity note through a backen…
lklimek Oct 22, 2026
942a773
fix(dashpay): pick DashPay signing keys from the levels each document…
lklimek Oct 22, 2026
cd520e6
fix(ui): unlock the wallet that holds the key a document action signs…
lklimek Oct 22, 2026
8ebf582
fix(ui): take the unlock and owner wallet from the key that is actual…
lklimek Oct 22, 2026
df4916d
chore(deps): update Platform to v5.1-dev a0d7b6f
lklimek Oct 23, 2026
7cd3cfa
refactor: adapt to the rust-dashcore cryptography API
lklimek Oct 23, 2026
abce4a8
chore: restore CHANGELOG.md to base version
lklimek Oct 23, 2026
d5ecdd4
fix(errors): explain the new username, vote and token transfer refusals
lklimek Oct 23, 2026
91338fd
feat(connection): say when wallet sync data could not be saved
lklimek Oct 23, 2026
167a5d8
feat(tokens): create non-transferable tokens and stop offering their …
lklimek Oct 23, 2026
f1cce94
docs(documents): mark entropy-only document ids as placeholders from …
lklimek Oct 23, 2026
d41813d
docs(tokens): explain why new tokens are not tradeable
lklimek Oct 23, 2026
ee924ef
docs: link deferred DPNS, DashPay and shielded features to their issues
lklimek Oct 23, 2026
4611ed0
Merge v1.0-dev into chore/bump-platform-v4.3
lklimek Oct 23, 2026
20cd0df
chore(deps): update Platform to v5.1-dev 132ae31 (5.0.0-rc.8)
lklimek Oct 23, 2026
7865848
test(platform): record the protocol 13 two-proof identity lookup veri…
lklimek Oct 23, 2026
a2d3a47
fix(context): serve system contracts at the version the proof verifie…
lklimek Oct 23, 2026
44b502f
fix(identity): let a stronger key sign a document type automatically
lklimek Oct 23, 2026
4e005d1
fix(ui): route Key Info's budget read and limits raise back to the sc…
lklimek Oct 23, 2026
5414e00
chore(identity): move the document type getters import to the tests t…
lklimek Oct 23, 2026
178f26a
fix(ui): route fee-pot reads and claims back to the fee pots screen
lklimek Oct 23, 2026
1623cd2
fix(contracts): let a seated moderation team claim the moderators pot
lklimek Oct 23, 2026
cda1fde
fix(dpns): accept an expired key the user chose to sign a registration
lklimek Oct 23, 2026
f6de8a8
fix(ui): clear the Raise Limits progress banner when the raise settles
lklimek Oct 23, 2026
f192789
fix(identity): report a key limits raise as made when saving it local…
lklimek Oct 23, 2026
9742faa
fix(contracts): report a fee claim as paid out when saving the balanc…
lklimek Oct 23, 2026
cb38dba
fix(identity): store the balance after a key limits raise pays its fee
lklimek Oct 24, 2026
e2f6d53
fix(tokens): report a once-per-identity claim the device could not re…
lklimek Oct 24, 2026
cd8706b
refactor(errors): keep node-supplied names only in the typed error so…
lklimek Oct 24, 2026
dd4c2cd
fix(context): refuse system contracts the verifier's version cannot load
lklimek Oct 24, 2026
db4c7ca
fix(context): close protocol capabilities on a version this build doe…
lklimek Oct 24, 2026
f65cc81
fix(context): ignore an epoch read older than the one already adopted
lklimek Oct 24, 2026
c7e037b
fix(context): start a rebuilt connection from unknown protocol and de…
lklimek Oct 24, 2026
6be15c9
fix(context): publish a rebuilt SDK only after its connection state i…
lklimek Oct 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ User-facing error messages (shown in `MessageBanner` via `Display`) must follow
2. **Structure**: *What happened* + *what to do*. Every message must include a concrete action the user can take themselves: retry, wait, try a different approach. Never redirect to "contact support" β€” users must be able to self-resolve.
3. **Tone**: Calm, direct, brief. Not apologetic ("Sorry!"), not alarming ("Something went wrong!"), not vague ("An error occurred").
4. **Technical details**: Never in the message itself β€” no raw error strings, stack traces, SDK internals, or error codes. Attach via `BannerHandle::with_details(e)` β€” the `Debug` repr goes to the collapsible details panel and logs. Never refer users to "details" or "details panel" β€” these are not visible in basic mode. Exception: Base58 identifiers (see rule 6) are not technical details β€” they are user-meaningful handles.
5. **Reference implementation**: `sdk_error_user_message()` in `src/backend_task/error.rs` demonstrates the pattern for SDK errors. New `TaskError` variants should follow the same style.
5. **Reference implementation**: `impl From<SdkError> for TaskError` in `src/backend_task/error.rs` demonstrates the pattern for SDK errors. New `TaskError` variants should follow the same style.
6. **Base58 IDs are allowed in messages**: Contract IDs, identity IDs, document IDs, and similar Base58-encoded identifiers may appear in user-facing messages when they help the user identify which object is involved (e.g., *"This key conflicts with an existing key bound to contract `Abc123…`."*). They are not jargon β€” they are opaque-but-copyable handles the user can look up.
7. **Use dedicated `TaskError` variants**: Every error should get a dedicated `TaskError` variant with a `#[source]` field that preserves the error chain, enables structural matching, and keeps `Display` / `Debug` separation explicit. For `#[source]` fields in SDK-originated error variants, use `Box<SdkError>` β€” convert upstream types (e.g. `ProtocolError`) via `SdkError::Protocol(e)`. Use the concrete domain type directly for non-SDK errors (e.g. `rusqlite::Error`). Omit `#[source]` entirely when the upstream error carries no useful diagnostic information (e.g. a channel `SendError`). **Never store user-facing strings in error variants** β€” error variants must not contain `String` fields that hold messages for the user. The `#[error("...")]` attribute on the variant provides the user-facing message; `String` fields (regardless of name) break this separation. Instead, create a dedicated variant with typed `#[source]` fields, or a fieldless variant if no upstream error exists. When encountering existing variants that store stringified errors, replace them with properly typed variants as part of the change.

Expand Down
Loading
Loading