Settings: GitHub, Offline Mode, CLI Paths

Settings: GitHub, offline mode, CLI paths

The gear icon (top-right) opens the dedicated Settings page (it used to be an inline panel). 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.

Publish versions (S3)

Point Stood Flows at an S3 (or S3-compatible) bucket here to publish analysis versions for others to pull. Publishing is on demand — you click Publish to push (or refresh) the current versions to the bucket; it is not a continuous background sync. Bucket credentials are stored in the OS keychain, never in the plain-JSON config files.

Which of Publish and Refresh you get is decided by the folder's own Settings, where you choose how the folder is shared and what your role is:

See Sharing and roles for the full picture and License keys for what the key covers.

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).

Folder settings: sharing and role

Each folder's own Settings page asks two questions at the top, and shows only the fields the answers need:

  1. Sharing — No sharing (solo, everything stays on this machine), GitHub (the folder is a git repo you sync yourself; its issues live in GitHub), or S3 (Stood Flows publishes and pulls the whole analysis).

  2. Your role — Admin (refreshes graphs from the org and publishes) or Contributor (reads the analysis and works on issues).

A summary at the bottom of the page names the buttons your choices produce, so you can check a folder's setup without leaving it. Full details in Sharing and roles.

GitHub

Choose GitHub as the sharing method and give the repository as owner/name, or leave it blank to let Stood Flows detect it from the folder's git remote (gh repo view, which works when the folder is itself a git repo). From then on every issue operation in the folder routes through gh issue ….

Stood Flows does not move graph files over GitHub — you pull and push the folder yourself, as you would any repo. Only the issues are handled by the app.

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-folder sharing method, role, GitHub repo

~/StoodFlows/workspaces/<alias>/workspace.json

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