From 51804b2e5e2a3e4a3d440828d8c685f246148425 Mon Sep 17 00:00:00 2001 From: Grant Date: Tue, 12 May 2026 10:39:57 -0500 Subject: [PATCH] 0.1.0:2 - remove '' default everywhere (it's Alice's username, not factory) Per user correction: '' is not the DGX Spark factory default. Generic-ize: - configureSparks: no default user; placeholder 'your SSH username' - sparkConfig schema: empty string defaults - main.ts env fallback: empty - showPublicKey: drop the '' fallback; skip Spark if user not configured - Update feedback memory with the correction --- package/startos/actions/configureSparks.ts | 10 +++++----- package/startos/actions/showPublicKey.ts | 6 ++++-- package/startos/fileModels/sparkConfig.yaml.ts | 4 ++-- package/startos/main.ts | 4 ++-- package/startos/versions/v0_1_0.ts | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/package/startos/actions/configureSparks.ts b/package/startos/actions/configureSparks.ts index 8f046fd..113f549 100644 --- a/package/startos/actions/configureSparks.ts +++ b/package/startos/actions/configureSparks.ts @@ -16,10 +16,10 @@ const inputSpec = InputSpec.of({ spark1_user: Value.text({ name: 'Spark 1 SSH user', description: - 'The user account on Spark 1 to SSH in as. DGX Sparks ship with "" as the default user — change only if you customized yours.', + 'The user account on Spark 1 to SSH in as — whatever you log in as when you ssh into it manually.', required: true, - default: '', - placeholder: '', + default: null, + placeholder: 'your SSH username', masked: false, }), spark2_host: Value.text({ @@ -36,8 +36,8 @@ const inputSpec = InputSpec.of({ description: 'The user account on Spark 2 to SSH in as. Usually the same as Spark 1.', required: true, - default: '', - placeholder: '', + default: null, + placeholder: 'your SSH username', masked: false, }), }) diff --git a/package/startos/actions/showPublicKey.ts b/package/startos/actions/showPublicKey.ts index 10dbc74..dfd77aa 100644 --- a/package/startos/actions/showPublicKey.ts +++ b/package/startos/actions/showPublicKey.ts @@ -38,8 +38,10 @@ export const showPublicKey = sdk.Action.withoutInput( const cfg = await sparkConfigYaml.read().once() const hosts: Array<{ user: string; host: string }> = [] if (cfg) { - if (cfg.spark1_host) hosts.push({ user: cfg.spark1_user || '', host: cfg.spark1_host }) - if (cfg.spark2_host) hosts.push({ user: cfg.spark2_user || '', host: cfg.spark2_host }) + if (cfg.spark1_host && cfg.spark1_user) + hosts.push({ user: cfg.spark1_user, host: cfg.spark1_host }) + if (cfg.spark2_host && cfg.spark2_user) + hosts.push({ user: cfg.spark2_user, host: cfg.spark2_host }) } let message: string diff --git a/package/startos/fileModels/sparkConfig.yaml.ts b/package/startos/fileModels/sparkConfig.yaml.ts index 3b7a6e6..1cd38ea 100644 --- a/package/startos/fileModels/sparkConfig.yaml.ts +++ b/package/startos/fileModels/sparkConfig.yaml.ts @@ -4,9 +4,9 @@ import { sdk } from '../sdk' export const sparkConfigSchema = z.object({ spark1_host: z.string().catch(''), - spark1_user: z.string().catch(''), + spark1_user: z.string().catch(''), spark2_host: z.string().catch(''), - spark2_user: z.string().catch(''), + spark2_user: z.string().catch(''), }) export type SparkConfig = z.infer diff --git a/package/startos/main.ts b/package/startos/main.ts index e9f7bdd..e785b33 100644 --- a/package/startos/main.ts +++ b/package/startos/main.ts @@ -10,9 +10,9 @@ export const main = sdk.setupMain(async ({ effects }) => { // Changing this file via the "Configure Sparks" action restarts the daemon. const cfg = (await sparkConfigYaml.read().const(effects)) ?? { spark1_host: '', - spark1_user: '', + spark1_user: '', spark2_host: '', - spark2_user: '', + spark2_user: '', } return sdk.Daemons.of(effects).addDaemon('primary', { diff --git a/package/startos/versions/v0_1_0.ts b/package/startos/versions/v0_1_0.ts index d8bf50a..4164f07 100644 --- a/package/startos/versions/v0_1_0.ts +++ b/package/startos/versions/v0_1_0.ts @@ -1,10 +1,10 @@ import { VersionInfo, IMPOSSIBLE } from '@start9labs/start-sdk' export const v0_1_0 = VersionInfo.of({ - version: '0.1.0:1', + version: '0.1.0:2', releaseNotes: { en_US: - 'Generic placeholders in Configure Sparks; Show Public Key emits a ready-to-paste install command; dashboard shows the OpenAI-compatible base URL + current model ID with one-click copy and a curl example.', + 'Fully generic SSH user fields (no suggested default); generic host placeholders in Configure Sparks; Show Public Key emits a ready-to-paste install command using your configured hostnames; dashboard shows the OpenAI-compatible base URL + current model ID with one-click copy and a curl example.', }, migrations: { up: async ({ effects }) => {},