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 to saved swap actions and local types; behavior is gated on the swap request’s privacy flag with new test coverage.

Overview
Houdini wallet-to-wallet swaps now persist a privacy flag on the saved transaction action (actionType: 'swap'), matching behavior that already existed for pasted-address swapSend flows. The value is true when request.privacy === 'required' and false otherwise, so the GUI can distinguish Stealth (private) swaps from transparent Houdini routes that use the same provider.

Local typing adds EdgeTxActionSwapPrivacy and extends EdgeTxActionSwapPlugin until installed edge-core-js includes privacy on EdgeTxActionSwap. A CHANGELOG unreleased fix line and a Houdini test assert the flag for wallet-to-wallet quotes with and without required privacy.

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

@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.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8180952. Configure here.

Comment thread src/swap/central/houdini.ts Outdated
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.
@j0ntz
j0ntz force-pushed the jon/stealth-swap-tx-title branch from 8180952 to 29903b5 Compare October 15, 2026 00:21
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