13 — Settings: GitHub, Offline Mode, CLI Paths

Settings: GitHub, offline mode, CLI paths

The gear icon (top-right) opens Global Settings. Per-folder settings are inside the folder/graph itself. This document covers everything across both.

Global Settings (gear icon)

CLI paths

Stood Flows resolves sf and gh in this order:

  1. Custom override — a path you've explicitly set in Settings. Persisted to ~/StoodFlows/cli-paths.json. Shown in blue.

  2. Auto-detected — found in PATH, Homebrew, nvm, Volta. Shown in green.

  3. Fallback — neither found. Shown in red. The corresponding CLI-bound features (Refresh for sf, GitHub issues for gh) are disabled.

To override: click Browse… next to the CLI, point at the binary (the system file picker filters to executables). The app verifies the path by running <cli> --version and shows the version on success.

To clear an override, click Clear next to the path. Auto-detection resumes.

This is the lever you pull when you've installed sf in a non-standard location (corporate-managed install, Volta-isolated Node, sandboxed terminal). The override survives upgrades of Stood Flows itself.

Licence key entry

Each folder you've created shows here with its current licence status:

Paste a new key into the row; Stood Flows verifies it offline (Ed25519 signature against the embedded public key + folder-alias match + expiry) and writes it to workspaces/<alias>/license.key on success. The verification is local — no network call.

See License keys for the full picture.

App version + updates

The version number is shown at the bottom. When a newer version is available, a download link appears with the changelog URL on github.com/Hway-Digital/stood-flows-releases. Updates are install-via-DMG/installer (no in-place auto-update).

GitHub integration (per folder)

GitHub is opt-in per folder. To wire it up:

  1. Be inside the folder you want to link.

  2. Open the Issues tab.

  3. Click Link GitHub repo.

  4. Either let auto-detect find it (gh repo view on the current directory works if the folder is itself a git repo), or paste <owner>/<repo> manually.

The link is stored in graph.json as githubOwner + githubRepo. From that point on, every issue operation in this folder routes through gh issue …. Unlinking removes those keys; new issues fall back to CSV.

gh must be installed and gh auth login must have been completed once. If gh is in a non-standard location, set the path in Global Settings.

See Issue management for how issues work end-to-end.

Offline mode

The amber OFFLINE banner at the top of the window means the app has decided to operate in a degraded mode. Three independent signals can light it up:

  1. Shell fell back to the bundled renderer at startup. Happens when the user-interface bundle at stood.hway.io (the technical hosting URL Stood Flows pulls its UI from on launch — not our website, which is https://stoodcrm.com) was unreachable when the app started. The bundled local copy takes over automatically. Refreshes still need network to talk to Salesforce — but the UI itself runs from disk.

  2. The OS reports no network. navigator.onLine === false. Catches the "user pulled the Wi-Fi cable mid-session" case.

  3. You've forced it. A file flag, described below.

The banner copy adjusts to the cause. If signal 3 is the only one active, it reads Forced offline mode.

How to force offline mode

Edit ~/StoodFlows/config.json and set offline: true:

{
"defaultOrg": null,
"offline": true
}

The change takes effect on next app launch. Restart Stood Flows; the banner appears.

When forced offline, the app no longer attempts to load its user-interface bundle from the network at all. The Electron shell reads config.json before opening the window and loads the bundled local UI directly. This matters in two scenarios:

Where to find startup logs

If something looks off — blank window, wrong page, fallback didn't trigger — the Electron shell writes a timestamped append-only log of every startup decision to:

~/StoodFlows/logs/main.log

A typical clean startup looks like:

[2026-05-20T09:14:02.110Z] [Shell] config.json offline=false
[2026-05-20T09:14:02.111Z] [Shell] Loading cloud renderer https://stood.hway.io/desktop.html
[2026-05-20T09:14:03.022Z] [Shell] did-finish-load url=https://stood.hway.io/desktop.html
[2026-05-20T09:14:03.041Z] [Shell] post-load probe: title="Stood Flows" hasRoot=true

A proxy-blocked startup looks like:

[…] [Shell] did-finish-load url=https://stood.hway.io/desktop.html
[…] [Shell] post-load probe: title="Access blocked" hasRoot=false
[…] [Shell] Loading local fallback (post-load probe: page is not our renderer (title="Access blocked")): app://stood/desktop.html

A forced-offline startup looks like:

[…] [Shell] config.json offline=true
[…] [Shell] Forced offline at startup — loading app://stood/desktop.html directly (bypassing https://stood.hway.io/desktop.html)

If you need help debugging a connectivity issue, email the main.log to support and we'll walk through it with you.

This is useful when you want to:

The flag is sticky until you flip it back to false (or delete the line — missing attribute is treated as false). New config.json files seed offline: false.

What works offline

Most of the panel UI:

What doesn't work offline

The point of offline mode is to make the read-only nature of the app obvious and testable. If you flip the flag and any feature you care about breaks, that's a bug — please file it.

Where each setting is persisted

Setting

File

Default org, offline flag

~/StoodFlows/config.json

CLI path overrides

~/StoodFlows/cli-paths.json

Per-folder licence key

~/StoodFlows/workspaces/<alias>/license.key

Per-graph GitHub repo, refresh history, RT tags, integration patterns, currency

~/StoodFlows/workspaces/<alias>/graphs/<slug>/graph.json

Per-graph version snapshots

~/StoodFlows/workspaces/<alias>/graphs/<slug>/versions/v*.json

All of it is plain JSON or CSV. Back it up with the rest of your project files. Nothing's in the system registry, nothing's in a database, nothing's stored remotely by Stood Flows.

Published with Nuclino