diff --git a/Electrum.sqlite-journal b/Electrum.sqlite-journal deleted file mode 100644 index b7c7941..0000000 Binary files a/Electrum.sqlite-journal and /dev/null differ diff --git a/src/tui/screens/ActionWizard.tsx b/src/tui/screens/ActionWizard.tsx index de815bc..04291ed 100644 --- a/src/tui/screens/ActionWizard.tsx +++ b/src/tui/screens/ActionWizard.tsx @@ -294,13 +294,19 @@ export function ActionWizardScreen(): React.ReactElement { // Add variables if any if (variables.length > 0) { - const variableData = variables.map(v => ({ - variableIdentifier: v.id, - roleIdentifier: roleIdentifier, - value: v.type === 'number' || v.type === 'satoshis' - ? BigInt(v.value || '0') - : v.value, - })); + const variableData = variables.map(v => { + // Determine if this is a numeric type that should be BigInt + // Template types include: 'integer', 'number', 'satoshis' + // Hints include: 'satoshis', 'amount' + const isNumeric = ['integer', 'number', 'satoshis'].includes(v.type) || + (v.hint && ['satoshis', 'amount'].includes(v.hint)); + + return { + variableIdentifier: v.id, + roleIdentifier: roleIdentifier, + value: isNumeric ? BigInt(v.value || '0') : v.value, + }; + }); const updated = await invitationController.addVariables(invId, variableData); inv = updated.invitation; } @@ -313,11 +319,13 @@ export function ActionWizardScreen(): React.ReactElement { if (transaction?.outputs && transaction.outputs.length > 0) { setStatus('Adding required outputs...'); - // Add each required output with its identifier + // Add each required output with just its identifier + // IMPORTANT: Do NOT pass roleIdentifier here - if roleIdentifier is set, + // the engine skips generating the lockingBytecode (see engine.ts appendInvitation) // The engine will automatically generate the locking bytecode based on the template const outputsToAdd = transaction.outputs.map((outputId: string) => ({ outputIdentifier: outputId, - roleIdentifier: roleIdentifier, + // Note: roleIdentifier intentionally omitted to trigger lockingBytecode generation })); const updated = await invitationController.addOutputs(invId, outputsToAdd);