From 67150a49ab063b4ebaec2bf0b7ba56de9856ad52 Mon Sep 17 00:00:00 2001 From: linkinparkrulz Date: Tue, 28 Oct 2025 07:09:42 -0500 Subject: [PATCH 1/4] fixed soroban error on install and updated fulcrum requirements --- config.env | 6 +++--- manifest.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config.env b/config.env index 71dc4f2..db98469 100644 --- a/config.env +++ b/config.env @@ -72,7 +72,7 @@ export EXPLORER_INSTALL=on # Soroban configuration export SOROBAN_INSTALL=on -SOROBAN_ANNOUNCE_CONFIG=$(yq e '.soroban-announce.enabled' /root/start9/config.yaml) +SOROBAN_ANNOUNCE_CONFIG=$(yq e '.soroban-announce.enabled // "disabled"' /root/start9/config.yaml) if [ "$SOROBAN_ANNOUNCE_CONFIG" = "enabled" ]; then export SOROBAN_ANNOUNCE=on else @@ -80,7 +80,7 @@ else fi # PandoTx Process is only available when Soroban announce is enabled -S9_PANDOTX_PROCESS=$(yq e '.soroban-announce.pandotx-process' /root/start9/config.yaml) +S9_PANDOTX_PROCESS=$(yq e '.soroban-announce.pandotx-process // false' /root/start9/config.yaml) if [ "$SOROBAN_ANNOUNCE_CONFIG" = "enabled" ] && [ "$S9_PANDOTX_PROCESS" = "true" ]; then export NODE_PANDOTX_PROCESS=on else @@ -120,4 +120,4 @@ export SOROBAN_ONION_FILE=/var/lib/tor/hsv3soroban/hostname export NODE_PANDOTX_FALLBACK_MODE=$(yq e '.pandotx-fallback-mode' /root/start9/config.yaml) # Max number of retries in case of a failed push -export NODE_PANDOTX_NB_RETRIES=$(yq e '.pandotx-retries' /root/start9/config.yaml) \ No newline at end of file +export NODE_PANDOTX_NB_RETRIES=$(yq e '.pandotx-retries' /root/start9/config.yaml) diff --git a/manifest.yaml b/manifest.yaml index ef5f9a0..270fad8 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -105,7 +105,7 @@ interfaces: - http dependencies: bitcoind: - version: '>=0.21.1.2 <31.0.0' + version: '>=0.21.1.2' requirement: type: 'opt-out' how: Use the Bitcoin Core (default) @@ -117,7 +117,7 @@ dependencies: type: script requires-runtime-config: true bitcoind-testnet: - version: '>=0.21.1.2 <31.0.0' + version: '>=0.21.1.2' requirement: type: 'opt-in' how: Use the Bitcoin Core Testnet4 @@ -129,7 +129,7 @@ dependencies: type: script requires-runtime-config: true fulcrum: - version: '>=1.11.0' + version: '>=2.0.0' requirement: type: 'opt-in' how: Set Indexer to Fulcrum in the config From 286b3649dfe2d45bee56470c08402f327005acda Mon Sep 17 00:00:00 2001 From: linkinparkrulz Date: Wed, 29 Oct 2025 07:23:31 -0500 Subject: [PATCH 2/4] Fix soroban-announce config default value and bundling issues - Add default value 'disabled' for soroban-announce config to prevent Start9 errors - Remove invalid nullable: false from pandotx-fallback-mode enum config - Fix bundle.ts paths to work correctly from root directory - Add migration for soroban-announce config with proper default --- scripts/bundle.ts | 6 +- scripts/procedures/getConfig.ts | 327 +++++++++++++++---------------- scripts/procedures/migrations.ts | 33 +++- 3 files changed, 195 insertions(+), 171 deletions(-) diff --git a/scripts/bundle.ts b/scripts/bundle.ts index 07cbf3a..31ae1fc 100644 --- a/scripts/bundle.ts +++ b/scripts/bundle.ts @@ -1,6 +1,6 @@ // scripts/bundle.ts -import { bundle } from "https://deno.land/x/emit@0.40.0/mod.ts"; +import { bundle } from 'https://deno.land/x/emit@0.40.0/mod.ts' -const result = await bundle("scripts/embassy.ts"); +const result = await bundle('scripts/embassy.ts') -await Deno.writeTextFile("scripts/embassy.js", result.code); +await Deno.writeTextFile('scripts/embassy.js', result.code) diff --git a/scripts/procedures/getConfig.ts b/scripts/procedures/getConfig.ts index 25ec492..c50462a 100644 --- a/scripts/procedures/getConfig.ts +++ b/scripts/procedures/getConfig.ts @@ -1,196 +1,193 @@ -import { compat, types as T } from "../deps.ts"; +import { compat, types as T } from '../deps.ts' export const getConfig: T.ExpectedExports.getConfig = compat.getConfig({ - "tor-address": { - "name": "Tor Address", - "description": "The Tor address of the network interface", - "type": "pointer", - "subtype": "package", - "package-id": "dojo", - "target": "tor-address", - "interface": "main", + 'tor-address': { + name: 'Tor Address', + description: 'The Tor address of the network interface', + type: 'pointer', + subtype: 'package', + 'package-id': 'dojo', + target: 'tor-address', + interface: 'main', }, - "bitcoin-node": { - "type": "union", - "name": "Bitcoin Node", - "description": - "The Bitcoin node type you would like to use for Dojo", - "tag": { - "id": "type", - "name": "Select Bitcoin Node", - "variant-names": { - "bitcoind": "Bitcoin Core", - "bitcoind-testnet": "Bitcoin Core (testnet4)", + 'bitcoin-node': { + type: 'union', + name: 'Bitcoin Node', + description: 'The Bitcoin node type you would like to use for Dojo', + tag: { + id: 'type', + name: 'Select Bitcoin Node', + 'variant-names': { + bitcoind: 'Bitcoin Core', + 'bitcoind-testnet': 'Bitcoin Core (testnet4)', }, - "description": - "The Bitcoin node type you would like to use for Dojo", + description: 'The Bitcoin node type you would like to use for Dojo', }, - "default": "bitcoind", - "variants": { - "bitcoind": { - "username": { - "type": "pointer", - "name": "RPC Username", - "description": "The username for Bitcoin Core's RPC interface", - "subtype": "package", - "package-id": "bitcoind", - "target": "config", - "multi": false, - "selector": "$.rpc.username", + default: 'bitcoind', + variants: { + bitcoind: { + username: { + type: 'pointer', + name: 'RPC Username', + description: "The username for Bitcoin Core's RPC interface", + subtype: 'package', + 'package-id': 'bitcoind', + target: 'config', + multi: false, + selector: '$.rpc.username', }, - "password": { - "type": "pointer", - "name": "RPC Password", - "description": "The password for Bitcoin Core's RPC interface", - "subtype": "package", - "package-id": "bitcoind", - "target": "config", - "multi": false, - "selector": "$.rpc.password", + password: { + type: 'pointer', + name: 'RPC Password', + description: "The password for Bitcoin Core's RPC interface", + subtype: 'package', + 'package-id': 'bitcoind', + target: 'config', + multi: false, + selector: '$.rpc.password', }, }, - "bitcoind-testnet": { - "username": { - "type": "pointer", - "name": "RPC Username", - "description": "The username for Bitcoin Core Testnet RPC interface", - "subtype": "package", - "package-id": "bitcoind-testnet", - "target": "config", - "multi": false, - "selector": "$.rpc.username", + 'bitcoind-testnet': { + username: { + type: 'pointer', + name: 'RPC Username', + description: 'The username for Bitcoin Core Testnet RPC interface', + subtype: 'package', + 'package-id': 'bitcoind-testnet', + target: 'config', + multi: false, + selector: '$.rpc.username', }, - "password": { - "type": "pointer", - "name": "RPC Password", - "description": "The password for Bitcoin Core Testnet RPC interface", - "subtype": "package", - "package-id": "bitcoind-testnet", - "target": "config", - "multi": false, - "selector": "$.rpc.password", + password: { + type: 'pointer', + name: 'RPC Password', + description: 'The password for Bitcoin Core Testnet RPC interface', + subtype: 'package', + 'package-id': 'bitcoind-testnet', + target: 'config', + multi: false, + selector: '$.rpc.password', }, }, }, }, - "indexer": { - "type": "union", - "name": "Indexer", - "description": - "The indexer you want to use for Dojo", - "tag": { - "id": "type", - "name": "Select Indexer", - "variant-names": { - "electrs": "electrs", - "fulcrum": "Fulcrum", + indexer: { + type: 'union', + name: 'Indexer', + description: 'The indexer you want to use for Dojo', + tag: { + id: 'type', + name: 'Select Indexer', + 'variant-names': { + electrs: 'electrs', + fulcrum: 'Fulcrum', }, - "description": - "The indexer you want to use for Dojo", + description: 'The indexer you want to use for Dojo', }, - "default": "electrs", - "variants": { - "electrs": {}, - "fulcrum": {}, + default: 'electrs', + variants: { + electrs: {}, + fulcrum: {}, }, }, - "payment-code": { - "type": "string", - "name": "BIP47 Payment Code", - "description": "BIP47 Payment Code used for admin authentication", - "nullable": true, - "copyable": true, - "masked": false + 'payment-code': { + type: 'string', + name: 'BIP47 Payment Code', + description: 'BIP47 Payment Code used for admin authentication', + nullable: true, + copyable: true, + masked: false, }, - "admin-key": { - "type": "string", - "name": "Admin Key", - "description": "Key for accessing the admin/maintenance", - "nullable": false, - "copyable": true, - "masked": true, - "default": { - "charset": "a-z,A-Z,0-9", - "len": 22, + 'admin-key': { + type: 'string', + name: 'Admin Key', + description: 'Key for accessing the admin/maintenance', + nullable: false, + copyable: true, + masked: true, + default: { + charset: 'a-z,A-Z,0-9', + len: 22, }, }, - "api-key": { - "type": "string", - "name": "API Key", - "description": "Key for accessing the services", - "nullable": false, - "copyable": true, - "masked": true, - "default": { - "charset": "a-z,A-Z,0-9", - "len": 22, + 'api-key': { + type: 'string', + name: 'API Key', + description: 'Key for accessing the services', + nullable: false, + copyable: true, + masked: true, + default: { + charset: 'a-z,A-Z,0-9', + len: 22, }, }, - "jwt-secret": { - "type": "string", - "name": "JWT Secret", - "description": "Secret used by the server for signing", - "nullable": false, - "copyable": true, - "masked": true, - "default": { - "charset": "a-z,A-Z,0-9", - "len": 22, + 'jwt-secret': { + type: 'string', + name: 'JWT Secret', + description: 'Secret used by the server for signing', + nullable: false, + copyable: true, + masked: true, + default: { + charset: 'a-z,A-Z,0-9', + len: 22, }, }, - "soroban-announce": { - "type": "union", - "name": "Soroban Network Announce", - "description": "Configure Soroban network participation", - "tag": { - "id": "enabled", - "name": "Soroban Network Announce", - "variant-names": { - "disabled": "Disabled", - "enabled": "Enabled" + 'soroban-announce': { + type: 'union', + name: 'Soroban Network Announce', + description: 'Configure Soroban network participation', + tag: { + id: 'enabled', + name: 'Soroban Network Announce', + 'variant-names': { + disabled: 'Disabled', + enabled: 'Enabled', + }, + description: 'Enable to participate in the Soroban network', + }, + default: 'disabled', + variants: { + disabled: {}, + enabled: { + 'pandotx-process': { + type: 'boolean', + name: 'PandoTx Process', + description: + 'Process and relay transactions from other Soroban nodes', + nullable: false, + default: false, + }, }, - "description": "Enable to participate in the Soroban network" }, - "default": "disabled", - "variants": { - "disabled": {}, - "enabled": { - "pandotx-process": { - "type": "boolean", - "name": "PandoTx Process", - "description": "Process and relay transactions from other Soroban nodes", - "nullable": false, - "default": false - } - } - } }, - "pandotx-push": { - "type": "boolean", - "name": "PandoTx Push", - "description": "Push your transactions through random Soroban nodes for enhanced privacy", - "nullable": false, - "default": true, + 'pandotx-push': { + type: 'boolean', + name: 'PandoTx Push', + description: + 'Push your transactions through random Soroban nodes for enhanced privacy', + nullable: false, + default: true, }, - "pandotx-retries": { - "type": "number", - "name": "PandoTx Retries", - "description": "Maximum retry attempts for failed transaction pushes", - "nullable": false, - "default": 2, - "range": "[0,10]", - "integral": true, + 'pandotx-retries': { + type: 'number', + name: 'PandoTx Retries', + description: 'Maximum retry attempts for failed transaction pushes', + nullable: false, + default: 2, + range: '[0,10]', + integral: true, }, - "pandotx-fallback-mode": { - "type": "enum", - "name": "PandoTx Fallback Mode", - "description": "Behavior when Soroban push fails", - "nullable": false, - "default": "convenient", - "values": ["convenient", "secure"], - "value-names": { - "convenient": "Convenient (fallback to local node)", - "secure": "Secure (fail if Soroban unavailable)", + 'pandotx-fallback-mode': { + type: 'enum', + name: 'PandoTx Fallback Mode', + description: 'Behavior when Soroban push fails', + default: 'convenient', + values: ['convenient', 'secure'], + 'value-names': { + convenient: 'Convenient (fallback to local node)', + secure: 'Secure (fail if Soroban unavailable)', }, }, -}); \ No newline at end of file +}) diff --git a/scripts/procedures/migrations.ts b/scripts/procedures/migrations.ts index c084bf7..f747c50 100644 --- a/scripts/procedures/migrations.ts +++ b/scripts/procedures/migrations.ts @@ -1,4 +1,31 @@ -import { compat, types as T } from "../deps.ts"; +import { compat, types as T } from '../deps.ts' -export const migration: T.ExpectedExports.migration = compat.migrations - .fromMapping({}, "1.27.0.0" ); +export const migration: T.ExpectedExports.migration = compat.migrations.fromMapping( + { + '1.28.0.0': { + up: compat.migrations.updateConfig( + (config: any) => { + // Add default soroban-announce config for users upgrading from versions before 1.28.0 + if (!config['soroban-announce']) { + config['soroban-announce'] = { + enabled: 'disabled', + } + } + return config + }, + true, + { version: '1.28.0.0', type: 'up' }, + ), + down: compat.migrations.updateConfig( + (config: any) => { + // Remove soroban-announce config when downgrading + delete config['soroban-announce'] + return config + }, + true, + { version: '1.28.0.0', type: 'down' }, + ), + }, + }, + '1.27.0.0', +) From 37a1dbb38be166612b0ac40f43734a73cd99bbca Mon Sep 17 00:00:00 2001 From: Eric P Date: Thu, 30 Oct 2025 23:37:40 -0500 Subject: [PATCH 3/4] Revert pointless double to single quote change --- scripts/bundle.ts | 6 +- scripts/procedures/getConfig.ts | 327 ++++++++++++++++---------------- 2 files changed, 168 insertions(+), 165 deletions(-) diff --git a/scripts/bundle.ts b/scripts/bundle.ts index 31ae1fc..07cbf3a 100644 --- a/scripts/bundle.ts +++ b/scripts/bundle.ts @@ -1,6 +1,6 @@ // scripts/bundle.ts -import { bundle } from 'https://deno.land/x/emit@0.40.0/mod.ts' +import { bundle } from "https://deno.land/x/emit@0.40.0/mod.ts"; -const result = await bundle('scripts/embassy.ts') +const result = await bundle("scripts/embassy.ts"); -await Deno.writeTextFile('scripts/embassy.js', result.code) +await Deno.writeTextFile("scripts/embassy.js", result.code); diff --git a/scripts/procedures/getConfig.ts b/scripts/procedures/getConfig.ts index c50462a..25ec492 100644 --- a/scripts/procedures/getConfig.ts +++ b/scripts/procedures/getConfig.ts @@ -1,193 +1,196 @@ -import { compat, types as T } from '../deps.ts' +import { compat, types as T } from "../deps.ts"; export const getConfig: T.ExpectedExports.getConfig = compat.getConfig({ - 'tor-address': { - name: 'Tor Address', - description: 'The Tor address of the network interface', - type: 'pointer', - subtype: 'package', - 'package-id': 'dojo', - target: 'tor-address', - interface: 'main', + "tor-address": { + "name": "Tor Address", + "description": "The Tor address of the network interface", + "type": "pointer", + "subtype": "package", + "package-id": "dojo", + "target": "tor-address", + "interface": "main", }, - 'bitcoin-node': { - type: 'union', - name: 'Bitcoin Node', - description: 'The Bitcoin node type you would like to use for Dojo', - tag: { - id: 'type', - name: 'Select Bitcoin Node', - 'variant-names': { - bitcoind: 'Bitcoin Core', - 'bitcoind-testnet': 'Bitcoin Core (testnet4)', + "bitcoin-node": { + "type": "union", + "name": "Bitcoin Node", + "description": + "The Bitcoin node type you would like to use for Dojo", + "tag": { + "id": "type", + "name": "Select Bitcoin Node", + "variant-names": { + "bitcoind": "Bitcoin Core", + "bitcoind-testnet": "Bitcoin Core (testnet4)", }, - description: 'The Bitcoin node type you would like to use for Dojo', + "description": + "The Bitcoin node type you would like to use for Dojo", }, - default: 'bitcoind', - variants: { - bitcoind: { - username: { - type: 'pointer', - name: 'RPC Username', - description: "The username for Bitcoin Core's RPC interface", - subtype: 'package', - 'package-id': 'bitcoind', - target: 'config', - multi: false, - selector: '$.rpc.username', + "default": "bitcoind", + "variants": { + "bitcoind": { + "username": { + "type": "pointer", + "name": "RPC Username", + "description": "The username for Bitcoin Core's RPC interface", + "subtype": "package", + "package-id": "bitcoind", + "target": "config", + "multi": false, + "selector": "$.rpc.username", }, - password: { - type: 'pointer', - name: 'RPC Password', - description: "The password for Bitcoin Core's RPC interface", - subtype: 'package', - 'package-id': 'bitcoind', - target: 'config', - multi: false, - selector: '$.rpc.password', + "password": { + "type": "pointer", + "name": "RPC Password", + "description": "The password for Bitcoin Core's RPC interface", + "subtype": "package", + "package-id": "bitcoind", + "target": "config", + "multi": false, + "selector": "$.rpc.password", }, }, - 'bitcoind-testnet': { - username: { - type: 'pointer', - name: 'RPC Username', - description: 'The username for Bitcoin Core Testnet RPC interface', - subtype: 'package', - 'package-id': 'bitcoind-testnet', - target: 'config', - multi: false, - selector: '$.rpc.username', + "bitcoind-testnet": { + "username": { + "type": "pointer", + "name": "RPC Username", + "description": "The username for Bitcoin Core Testnet RPC interface", + "subtype": "package", + "package-id": "bitcoind-testnet", + "target": "config", + "multi": false, + "selector": "$.rpc.username", }, - password: { - type: 'pointer', - name: 'RPC Password', - description: 'The password for Bitcoin Core Testnet RPC interface', - subtype: 'package', - 'package-id': 'bitcoind-testnet', - target: 'config', - multi: false, - selector: '$.rpc.password', + "password": { + "type": "pointer", + "name": "RPC Password", + "description": "The password for Bitcoin Core Testnet RPC interface", + "subtype": "package", + "package-id": "bitcoind-testnet", + "target": "config", + "multi": false, + "selector": "$.rpc.password", }, }, }, }, - indexer: { - type: 'union', - name: 'Indexer', - description: 'The indexer you want to use for Dojo', - tag: { - id: 'type', - name: 'Select Indexer', - 'variant-names': { - electrs: 'electrs', - fulcrum: 'Fulcrum', + "indexer": { + "type": "union", + "name": "Indexer", + "description": + "The indexer you want to use for Dojo", + "tag": { + "id": "type", + "name": "Select Indexer", + "variant-names": { + "electrs": "electrs", + "fulcrum": "Fulcrum", }, - description: 'The indexer you want to use for Dojo', + "description": + "The indexer you want to use for Dojo", }, - default: 'electrs', - variants: { - electrs: {}, - fulcrum: {}, + "default": "electrs", + "variants": { + "electrs": {}, + "fulcrum": {}, }, }, - 'payment-code': { - type: 'string', - name: 'BIP47 Payment Code', - description: 'BIP47 Payment Code used for admin authentication', - nullable: true, - copyable: true, - masked: false, + "payment-code": { + "type": "string", + "name": "BIP47 Payment Code", + "description": "BIP47 Payment Code used for admin authentication", + "nullable": true, + "copyable": true, + "masked": false }, - 'admin-key': { - type: 'string', - name: 'Admin Key', - description: 'Key for accessing the admin/maintenance', - nullable: false, - copyable: true, - masked: true, - default: { - charset: 'a-z,A-Z,0-9', - len: 22, + "admin-key": { + "type": "string", + "name": "Admin Key", + "description": "Key for accessing the admin/maintenance", + "nullable": false, + "copyable": true, + "masked": true, + "default": { + "charset": "a-z,A-Z,0-9", + "len": 22, }, }, - 'api-key': { - type: 'string', - name: 'API Key', - description: 'Key for accessing the services', - nullable: false, - copyable: true, - masked: true, - default: { - charset: 'a-z,A-Z,0-9', - len: 22, + "api-key": { + "type": "string", + "name": "API Key", + "description": "Key for accessing the services", + "nullable": false, + "copyable": true, + "masked": true, + "default": { + "charset": "a-z,A-Z,0-9", + "len": 22, }, }, - 'jwt-secret': { - type: 'string', - name: 'JWT Secret', - description: 'Secret used by the server for signing', - nullable: false, - copyable: true, - masked: true, - default: { - charset: 'a-z,A-Z,0-9', - len: 22, + "jwt-secret": { + "type": "string", + "name": "JWT Secret", + "description": "Secret used by the server for signing", + "nullable": false, + "copyable": true, + "masked": true, + "default": { + "charset": "a-z,A-Z,0-9", + "len": 22, }, }, - 'soroban-announce': { - type: 'union', - name: 'Soroban Network Announce', - description: 'Configure Soroban network participation', - tag: { - id: 'enabled', - name: 'Soroban Network Announce', - 'variant-names': { - disabled: 'Disabled', - enabled: 'Enabled', - }, - description: 'Enable to participate in the Soroban network', - }, - default: 'disabled', - variants: { - disabled: {}, - enabled: { - 'pandotx-process': { - type: 'boolean', - name: 'PandoTx Process', - description: - 'Process and relay transactions from other Soroban nodes', - nullable: false, - default: false, - }, + "soroban-announce": { + "type": "union", + "name": "Soroban Network Announce", + "description": "Configure Soroban network participation", + "tag": { + "id": "enabled", + "name": "Soroban Network Announce", + "variant-names": { + "disabled": "Disabled", + "enabled": "Enabled" }, + "description": "Enable to participate in the Soroban network" }, + "default": "disabled", + "variants": { + "disabled": {}, + "enabled": { + "pandotx-process": { + "type": "boolean", + "name": "PandoTx Process", + "description": "Process and relay transactions from other Soroban nodes", + "nullable": false, + "default": false + } + } + } }, - 'pandotx-push': { - type: 'boolean', - name: 'PandoTx Push', - description: - 'Push your transactions through random Soroban nodes for enhanced privacy', - nullable: false, - default: true, + "pandotx-push": { + "type": "boolean", + "name": "PandoTx Push", + "description": "Push your transactions through random Soroban nodes for enhanced privacy", + "nullable": false, + "default": true, }, - 'pandotx-retries': { - type: 'number', - name: 'PandoTx Retries', - description: 'Maximum retry attempts for failed transaction pushes', - nullable: false, - default: 2, - range: '[0,10]', - integral: true, + "pandotx-retries": { + "type": "number", + "name": "PandoTx Retries", + "description": "Maximum retry attempts for failed transaction pushes", + "nullable": false, + "default": 2, + "range": "[0,10]", + "integral": true, }, - 'pandotx-fallback-mode': { - type: 'enum', - name: 'PandoTx Fallback Mode', - description: 'Behavior when Soroban push fails', - default: 'convenient', - values: ['convenient', 'secure'], - 'value-names': { - convenient: 'Convenient (fallback to local node)', - secure: 'Secure (fail if Soroban unavailable)', + "pandotx-fallback-mode": { + "type": "enum", + "name": "PandoTx Fallback Mode", + "description": "Behavior when Soroban push fails", + "nullable": false, + "default": "convenient", + "values": ["convenient", "secure"], + "value-names": { + "convenient": "Convenient (fallback to local node)", + "secure": "Secure (fail if Soroban unavailable)", }, }, -}) +}); \ No newline at end of file From 3f23f79a36e07524c4441d27ee3c0add34845dbd Mon Sep 17 00:00:00 2001 From: Eric P Date: Fri, 31 Oct 2025 00:09:27 -0500 Subject: [PATCH 4/4] Additional config options to migrate --- scripts/procedures/migrations.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/procedures/migrations.ts b/scripts/procedures/migrations.ts index f747c50..f8d96d4 100644 --- a/scripts/procedures/migrations.ts +++ b/scripts/procedures/migrations.ts @@ -5,12 +5,13 @@ export const migration: T.ExpectedExports.migration = compat.migrations.fromMapp '1.28.0.0': { up: compat.migrations.updateConfig( (config: any) => { - // Add default soroban-announce config for users upgrading from versions before 1.28.0 - if (!config['soroban-announce']) { - config['soroban-announce'] = { - enabled: 'disabled', - } + // Add default soroban and pandotx config for users upgrading from versions before 1.28.0 + config['soroban-announce'] = { + 'enabled': 'disabled' } + config['pandotx-push'] = true + config['pandotx-retries'] = 2 + config['pandotx-fallback-mode'] = 'convenient' return config }, true, @@ -18,8 +19,10 @@ export const migration: T.ExpectedExports.migration = compat.migrations.fromMapp ), down: compat.migrations.updateConfig( (config: any) => { - // Remove soroban-announce config when downgrading delete config['soroban-announce'] + delete config['pandotx-push'] + delete config['pandotx-retries'] + delete config['pandotx-fallback-mode'] return config }, true, @@ -27,5 +30,5 @@ export const migration: T.ExpectedExports.migration = compat.migrations.fromMapp ), }, }, - '1.27.0.0', -) + '1.28.0.0', +) \ No newline at end of file