From 073344d4d1631eaa8e7a95160d025a785980c48a Mon Sep 17 00:00:00 2001 From: spacesops Date: Mon, 24 Aug 2026 03:34:34 -0400 Subject: [PATCH] 0.3.0:1 Group Actions and Config by category (Space-CLI, Bitcoin, Spaced, Subspaces, Certrelay, Nacho) and build x86 + arm only. Co-authored-by: Cursor --- Makefile | 2 +- startos/actionGroups.ts | 14 ++++++++++++++ startos/actions/configureCertrelay.ts | 3 ++- startos/actions/configureNacho.ts | 3 ++- startos/actions/createRegistryApiKeys.ts | 3 ++- startos/actions/disableSubsAuth.ts | 3 ++- startos/actions/disableSubsProverAuth.ts | 3 ++- startos/actions/disableSubspaces.ts | 3 ++- startos/actions/enableSubsAuth.ts | 3 ++- startos/actions/enableSubsProverAuth.ts | 3 ++- startos/actions/enableSubspaces.ts | 3 ++- startos/actions/exportWallet.ts | 3 ++- startos/actions/importWallet.ts | 3 ++- startos/actions/resetPassword.ts | 3 ++- startos/actions/resetSpacedState.ts | 3 ++- startos/actions/resetSubspacesState.ts | 3 ++- startos/actions/setBitcoinRpc.ts | 3 ++- startos/actions/setSubsCredentials.ts | 3 ++- startos/actions/setSubsProver.ts | 3 ++- startos/actions/setSubsProverCredentials.ts | 3 ++- startos/actions/showCredentials.ts | 3 ++- startos/actions/showPassword.ts | 3 ++- startos/actions/showRegistryApiKeys.ts | 3 ++- startos/actions/showSpacedCredentials.ts | 3 ++- startos/actions/showSubsCredentials.ts | 3 ++- startos/actions/showSubsProverCredentials.ts | 3 ++- startos/actions/syncStatus.ts | 3 ++- startos/actions/uploadSupportPdf.ts | 3 ++- startos/i18n/dictionaries/default.ts | 5 +++++ startos/versions/current.ts | 9 ++------- 30 files changed, 74 insertions(+), 34 deletions(-) create mode 100644 startos/actionGroups.ts diff --git a/Makefile b/Makefile index e2b5977..8315da3 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,3 @@ -ARCHES := x86 +ARCHES := x86 arm # overrides to s9pk.mk must precede the include statement include node_modules/@start9labs/start-sdk/s9pk.mk diff --git a/startos/actionGroups.ts b/startos/actionGroups.ts new file mode 100644 index 0000000..291bb4c --- /dev/null +++ b/startos/actionGroups.ts @@ -0,0 +1,14 @@ +import { i18n } from './i18n' + +/** Headers for the Actions and Config page (`ActionMetadata.group`). */ +export const actionGroups = { + spaceCli: i18n('Space-CLI Web UI'), + bitcoin: i18n('Bitcoin'), + spaced: i18n('Spaced'), + subspaces: i18n('Subspaces'), + subspacesAuth: i18n('Subspaces Auth'), + subspacesProverAuth: i18n('Subspaces Prover Auth'), + subspacesRegistry: i18n('Subspaces Registry'), + certrelay: i18n('Certrelay'), + nacho: i18n('Nacho'), +} diff --git a/startos/actions/configureCertrelay.ts b/startos/actions/configureCertrelay.ts index 9bc7bba..f9e034d 100644 --- a/startos/actions/configureCertrelay.ts +++ b/startos/actions/configureCertrelay.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { @@ -61,7 +62,7 @@ export const configureCertrelay = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.certrelay, visibility: 'enabled', }), diff --git a/startos/actions/configureNacho.ts b/startos/actions/configureNacho.ts index 801574e..895b917 100644 --- a/startos/actions/configureNacho.ts +++ b/startos/actions/configureNacho.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { @@ -90,7 +91,7 @@ export const configureNacho = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.nacho, visibility: 'enabled', }), diff --git a/startos/actions/createRegistryApiKeys.ts b/startos/actions/createRegistryApiKeys.ts index 13e3057..c0a39b5 100644 --- a/startos/actions/createRegistryApiKeys.ts +++ b/startos/actions/createRegistryApiKeys.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { generateRegistryApiKeys } from '../utils' @@ -15,7 +16,7 @@ export const createRegistryApiKeys = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesRegistry, visibility: 'enabled', }), diff --git a/startos/actions/disableSubsAuth.ts b/startos/actions/disableSubsAuth.ts index 1fd6fa5..c04faad 100644 --- a/startos/actions/disableSubsAuth.ts +++ b/startos/actions/disableSubsAuth.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -16,7 +17,7 @@ export const disableSubsAuth = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesAuth, visibility: enabled === true ? 'enabled' : 'hidden', } }, diff --git a/startos/actions/disableSubsProverAuth.ts b/startos/actions/disableSubsProverAuth.ts index 845299e..49ca5c4 100644 --- a/startos/actions/disableSubsProverAuth.ts +++ b/startos/actions/disableSubsProverAuth.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -16,7 +17,7 @@ export const disableSubsProverAuth = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesProverAuth, visibility: enabled === true ? 'enabled' : 'hidden', } }, diff --git a/startos/actions/disableSubspaces.ts b/startos/actions/disableSubspaces.ts index 7d568fd..fa7ac1f 100644 --- a/startos/actions/disableSubspaces.ts +++ b/startos/actions/disableSubspaces.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -16,7 +17,7 @@ export const disableSubspaces = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspaces, visibility: current === true ? 'enabled' : 'hidden', } }, diff --git a/startos/actions/enableSubsAuth.ts b/startos/actions/enableSubsAuth.ts index a548d59..22664f1 100644 --- a/startos/actions/enableSubsAuth.ts +++ b/startos/actions/enableSubsAuth.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { randomPassword } from '../utils' @@ -19,7 +20,7 @@ export const enableSubsAuth = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesAuth, visibility: enabled === true ? 'hidden' : 'enabled', } }, diff --git a/startos/actions/enableSubsProverAuth.ts b/startos/actions/enableSubsProverAuth.ts index 628bd91..79ae67d 100644 --- a/startos/actions/enableSubsProverAuth.ts +++ b/startos/actions/enableSubsProverAuth.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { randomPassword } from '../utils' @@ -19,7 +20,7 @@ export const enableSubsProverAuth = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesProverAuth, visibility: enabled === true ? 'hidden' : 'enabled', } }, diff --git a/startos/actions/enableSubspaces.ts b/startos/actions/enableSubspaces.ts index a13bba9..e21311f 100644 --- a/startos/actions/enableSubspaces.ts +++ b/startos/actions/enableSubspaces.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -16,7 +17,7 @@ export const enableSubspaces = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspaces, visibility: current === true ? 'hidden' : 'enabled', } }, diff --git a/startos/actions/exportWallet.ts b/startos/actions/exportWallet.ts index a236cc3..28da508 100644 --- a/startos/actions/exportWallet.ts +++ b/startos/actions/exportWallet.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir, SPACED_CHAIN } from '../utils' @@ -18,7 +19,7 @@ export const exportWallet = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'only-running', - group: null, + group: actionGroups.spaced, visibility: 'enabled', }), diff --git a/startos/actions/importWallet.ts b/startos/actions/importWallet.ts index 7d624b6..43d6cc9 100644 --- a/startos/actions/importWallet.ts +++ b/startos/actions/importWallet.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir, SPACED_CHAIN } from '../utils' @@ -37,7 +38,7 @@ export const importWallet = sdk.Action.withInput( 'Existing /data/mainnet/wallets_backup/default.json and /data/mainnet/wallets/default will be renamed with .bakNNN suffixes before the import. The active spaced daemon will load the imported wallet on success.', ), allowedStatuses: 'only-running', - group: null, + group: actionGroups.spaced, visibility: 'enabled', }), diff --git a/startos/actions/resetPassword.ts b/startos/actions/resetPassword.ts index 18c2ff0..3e2c10e 100644 --- a/startos/actions/resetPassword.ts +++ b/startos/actions/resetPassword.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { APP_USER, randomPassword } from '../utils' @@ -15,7 +16,7 @@ export const resetPassword = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.spaceCli, visibility: 'enabled', }), diff --git a/startos/actions/resetSpacedState.ts b/startos/actions/resetSpacedState.ts index d1f9f0e..7122b47 100644 --- a/startos/actions/resetSpacedState.ts +++ b/startos/actions/resetSpacedState.ts @@ -1,3 +1,4 @@ +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir, SPACED_CHAIN } from '../utils' @@ -16,7 +17,7 @@ export const resetSpacedState = sdk.Action.withoutInput( "This deletes spaced's on-disk index. The next start will resync from spaces' anchor and can take a while. store.json (passwords + RPC credentials) is preserved.", ), allowedStatuses: 'any', - group: null, + group: actionGroups.spaced, visibility: 'enabled', }), diff --git a/startos/actions/resetSubspacesState.ts b/startos/actions/resetSubspacesState.ts index 88e3a2b..2e35e25 100644 --- a/startos/actions/resetSubspacesState.ts +++ b/startos/actions/resetSubspacesState.ts @@ -1,3 +1,4 @@ +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir, SUBSPACES_DIR } from '../utils' @@ -16,7 +17,7 @@ export const resetSubspacesState = sdk.Action.withoutInput( 'This deletes all local Subspaces state — any handles/proofs stored on disk will be lost. The binaries ship in the image, so nothing needs to be re-downloaded. The spaces wallet on spaced is preserved.', ), allowedStatuses: 'any', - group: null, + group: actionGroups.subspaces, visibility: 'enabled', }), diff --git a/startos/actions/setBitcoinRpc.ts b/startos/actions/setBitcoinRpc.ts index a03ffa7..dcdb033 100644 --- a/startos/actions/setBitcoinRpc.ts +++ b/startos/actions/setBitcoinRpc.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { @@ -17,7 +18,7 @@ export const setBitcoinRpc = sdk.Action.withoutInput( description: i18n('Re-run the bitcoind RPC credential setup for Spaces'), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.bitcoin, visibility: 'enabled', }), diff --git a/startos/actions/setSubsCredentials.ts b/startos/actions/setSubsCredentials.ts index 188502a..5648d49 100644 --- a/startos/actions/setSubsCredentials.ts +++ b/startos/actions/setSubsCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { randomPassword } from '../utils' @@ -50,7 +51,7 @@ export const setSubsCredentials = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesAuth, visibility: 'enabled', }), diff --git a/startos/actions/setSubsProver.ts b/startos/actions/setSubsProver.ts index 2a6154b..7eae12a 100644 --- a/startos/actions/setSubsProver.ts +++ b/startos/actions/setSubsProver.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -28,7 +29,7 @@ export const setSubsProver = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspaces, visibility: 'enabled', }), diff --git a/startos/actions/setSubsProverCredentials.ts b/startos/actions/setSubsProverCredentials.ts index 4eddfc0..c5aa63e 100644 --- a/startos/actions/setSubsProverCredentials.ts +++ b/startos/actions/setSubsProverCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { randomPassword } from '../utils' @@ -50,7 +51,7 @@ export const setSubsProverCredentials = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesProverAuth, visibility: 'enabled', }), diff --git a/startos/actions/showCredentials.ts b/startos/actions/showCredentials.ts index 579575d..7be8110 100644 --- a/startos/actions/showCredentials.ts +++ b/startos/actions/showCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { APP_USER } from '../utils' @@ -15,7 +16,7 @@ export const showCredentials = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.spaceCli, visibility: 'hidden', }), diff --git a/startos/actions/showPassword.ts b/startos/actions/showPassword.ts index 69d00a8..1d16203 100644 --- a/startos/actions/showPassword.ts +++ b/startos/actions/showPassword.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { APP_USER } from '../utils' @@ -15,7 +16,7 @@ export const showPassword = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.spaceCli, visibility: 'enabled', }), diff --git a/startos/actions/showRegistryApiKeys.ts b/startos/actions/showRegistryApiKeys.ts index 8148042..f4d7241 100644 --- a/startos/actions/showRegistryApiKeys.ts +++ b/startos/actions/showRegistryApiKeys.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' @@ -14,7 +15,7 @@ export const showRegistryApiKeys = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesRegistry, visibility: 'enabled', }), diff --git a/startos/actions/showSpacedCredentials.ts b/startos/actions/showSpacedCredentials.ts index 686e9f7..90cdd53 100644 --- a/startos/actions/showSpacedCredentials.ts +++ b/startos/actions/showSpacedCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { spacedRpcPort } from '../utils' @@ -15,7 +16,7 @@ export const showSpacedCredentials = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.spaced, visibility: 'enabled', }), diff --git a/startos/actions/showSubsCredentials.ts b/startos/actions/showSubsCredentials.ts index da4b214..446fbc5 100644 --- a/startos/actions/showSubsCredentials.ts +++ b/startos/actions/showSubsCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { SUBSPACES_UI_PORT } from '../utils' @@ -15,7 +16,7 @@ export const showSubsCredentials = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesAuth, visibility: 'enabled', }), diff --git a/startos/actions/showSubsProverCredentials.ts b/startos/actions/showSubsProverCredentials.ts index 8b71f04..2ec1c02 100644 --- a/startos/actions/showSubsProverCredentials.ts +++ b/startos/actions/showSubsProverCredentials.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { SUBSPACES_PROVER_PORT } from '../utils' @@ -15,7 +16,7 @@ export const showSubsProverCredentials = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.subspacesProverAuth, visibility: 'enabled', }), diff --git a/startos/actions/syncStatus.ts b/startos/actions/syncStatus.ts index d0f464a..986416f 100644 --- a/startos/actions/syncStatus.ts +++ b/startos/actions/syncStatus.ts @@ -1,4 +1,5 @@ import { storeJson } from '../fileModels/storeJson' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir, SPACED_CHAIN } from '../utils' @@ -15,7 +16,7 @@ export const syncStatus = sdk.Action.withoutInput( ), warning: null, allowedStatuses: 'only-running', - group: null, + group: actionGroups.spaced, visibility: 'enabled', }), diff --git a/startos/actions/uploadSupportPdf.ts b/startos/actions/uploadSupportPdf.ts index a6ddf2b..a443378 100644 --- a/startos/actions/uploadSupportPdf.ts +++ b/startos/actions/uploadSupportPdf.ts @@ -1,4 +1,5 @@ import { readFile } from 'fs/promises' +import { actionGroups } from '../actionGroups' import { i18n } from '../i18n' import { sdk } from '../sdk' import { dataDir } from '../utils' @@ -36,7 +37,7 @@ export const uploadSupportPdf = sdk.Action.withInput( ), warning: null, allowedStatuses: 'any', - group: null, + group: actionGroups.nacho, visibility: 'enabled', }), diff --git a/startos/i18n/dictionaries/default.ts b/startos/i18n/dictionaries/default.ts index d326451..df89dfb 100644 --- a/startos/i18n/dictionaries/default.ts +++ b/startos/i18n/dictionaries/default.ts @@ -308,6 +308,11 @@ const dict = { 223, 'Subspaces registry-server requires REGISTRY_API_KEY and SUBSD_API_KEY before it can start': 224, + Bitcoin: 225, + Spaced: 226, + Subspaces: 227, + 'Subspaces Auth': 228, + 'Subspaces Prover Auth': 229, } as const /** diff --git a/startos/versions/current.ts b/startos/versions/current.ts index b450c4c..62c671a 100644 --- a/startos/versions/current.ts +++ b/startos/versions/current.ts @@ -1,14 +1,9 @@ import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk' export const current = VersionInfo.of({ - version: '0.3.0:0', + version: '0.3.0:1', releaseNotes: { - en_US: `Update to upstream Spaces **0.3.0** (\`horologger/spaces:v0.3.0\`). Also bundles \`subs:v0.1.2c\`, \`certrelay:v0.2.8\`, and \`nacho:v1.0.0b\`. - -**Wrapper** - -- Add **Create Registry API Keys** / **Show Registry API Keys** for the embedded \`registry-server\` (\`REGISTRY_API_KEY\` + \`SUBSD_API_KEY\`; required and must differ) -- Remove **Configure Subspaces** and \`SUBS_PUBLISH_REQUIRE_FINALIZED\` + en_US: `Group actions on the Actions and Config page (Space-CLI Web UI, Bitcoin, Spaced, Subspaces, Certrelay, Nacho, etc.). Build \`x86\` + \`arm\` only (drop riscv from default \`ARCHES\`). Requires StartOS 0.4.0-beta.10 (\`start-sdk\` 2.0.9).`, },