Skip to content

Mark Houdini private swaps on the action - #507

Open
j0ntz wants to merge 1 commit into
masterfrom
jon/stealth-swap-tx-title
Open

j0ntz wants to merge 1 commit into
masterfrom
jon/stealth-swap-tx-title

Conversation

@j0ntz

@j0ntz j0ntz commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

  • EdgeApp/edge-core-js#742 adds privacy to EdgeTxActionSwap. This PR builds and passes tests without it (the field is typed locally in src/swap/types.ts), but a core without that change drops the flag when it cleans the saved action, so the flag only reaches disk once the app runs a core that carries it.

Description

Asana task

Houdini now writes privacy on the saved swap action, true when the request asked for a private route (request.privacy === 'required') and false otherwise, the same way it already does on swapSend actions.

A Stealth Swap (a private swap between two of the user's own wallets) saved an action identical to a transparent Houdini swap, so the GUI titled it "Swap Funds". The provider id cannot stand in for the flag because Houdini also serves transparent routes.

EdgeTxActionSwapPlugin in src/swap/types.ts is a local stand-in for the core type and can go once this repo's edge-core-js dev dependency includes the core change.

Test: test/houdini.test.ts checks the flag on a wallet-to-wallet swap with and without a required-privacy request.


Note

Low Risk
Metadata-only change on Houdini saved actions with a local type shim; funds routing is unchanged, though the flag only persists on disk once core accepts it.

Overview
Houdini wallet-to-wallet swaps now persist a privacy flag on the saved swap action (not only on swapSend), set to true when request.privacy === 'required' and false otherwise. That lets the app distinguish Stealth swaps from transparent Houdini swaps when both wallets are the user’s, since the provider id alone does not imply a private route.

Local types add EdgeTxActionSwapPrivacy so EdgeTxActionSwapPlugin can carry optional privacy until edge-core-js includes the same field on EdgeTxActionSwap. A Houdini test asserts the flag for required vs optional privacy on wallet-to-wallet flows.

Reviewed by Cursor Bugbot for commit 2bdc559. Bugbot is set up for automated code reviews on this repo. Configure here.

A swap into one of the user's wallets saved a plain swap action even
when the request demanded a private route. Only the send shape said
whether privacy was required, so a transaction list had no way to
tell a private swap from a transparent one, and it cannot infer it
from the provider: Houdini serves transparent routes too.

The flag reaches disk once edge-core-js declares it on
EdgeTxActionSwap. An older core drops it in its action cleaner, and
the swap keeps its current title.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant