Skip to content

chore: HexoKit app identity (plan row R0, deferred to Phase 3) — hexokit command name, Electron/bundle/asset names, config.yaml - #950

Draft
sahil-noon wants to merge 1 commit into
mainfrom
260911-mvuv-hexokit-brand-surfaces
Draft

sahil-noon wants to merge 1 commit into
mainfrom
260911-mvuv-hexokit-brand-surfaces

Conversation

@sahil-noon

@sahil-noon sahil-noon commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Deferred — do not merge before X2 (Phase 3 row R0). Split 2026-09-12: the prose half moved to #952 (row C3a) and this PR now carries only the app rename — cobra root command name hexokit (run-kit keeps working), Electron productName/artifactName + userData carry-forward (appId kept), rk desktop bundle + release-asset prefix, fab/project/config.yaml project name. Base is #952's branch until C3a merges; retarget to main afterwards.

Meta

Change ID Type Confidence Plan Review
mvuv chore 3.3/5.0 13/13 tasks, 28/28 acceptance ✓ ✓ 1 cycle
Impact +/− Net
raw +1406 / −386 +1020
true +635 / −229 +406
└ impl +277 / −158 +119
└ tests +358 / −71 +287

excludes fab/, docs/ · generated by fab-kit v2.25.1

Pipeline: intake ✓ → apply ✓ → review ✓ → hydrate ✓ → ship → review-pr

Summary

Flips run-kit's own brand surfaces to HexoKit (rebrand plan row C3, Phase 1) — README/docs/specs identity prose, the desktop app's productName/artifactName, and the cobra root command name — while keeping the substrate (rk binary, RK_* env vars, @rk_* tmux options, on-disk paths, repo and formula names) untouched. Includes the two small migrations the flips cause: the Electron userData carry-forward of hosts.json/windows.json (D9), and shell-completion registration under all three invocation names. Doing C3 now unblocks Phase 2 (the hexokit.com site cutover prep depends on it).

Changes

  • README.md — head, tagline, identity prose
  • docs/site/ — identity lines, skill H1s, the desktop bundle name
  • Electron desktop shell (D8) — productName, artifactName, and the userData carry-forward
  • rk desktop (Go) — bundle name and release-asset prefix follow D8
  • Cobra roothexokit becomes the command name; run-kit keeps working
  • docs/specs/ — present-tense identity lines
  • fab/project/config.yaml — project name → hexokit

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved desktop migration/install issues and related branding and logging gaps block approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Rebrands run-kit’s product-facing surfaces to HexoKit while preserving existing substrate names and compatibility aliases.

Changes:

  • Updates README, documentation, specifications, memory, and project metadata.
  • Renames desktop product/artifact surfaces and adds legacy migration support.
  • Updates Cobra naming, shell completions, and desktop release handling.
File summaries
File Summary Findings
README.md Updated branding and install messaging.
fab/project/config.yaml Renamed project metadata.
fab/plans/sahil/26-09-10-hexokit-rebrand.md Updated rebrand plan status.
fab/changes/260911-mvuv-hexokit-brand-surfaces/plan.md Defined implementation plan.
fab/changes/260911-mvuv-hexokit-brand-surfaces/intake.md Defined change scope and requirements.
fab/changes/260911-mvuv-hexokit-brand-surfaces/.status.yaml Recorded change status.
fab/changes/260911-mvuv-hexokit-brand-surfaces/.history.jsonl Recorded pipeline history.
docs/specs/window-views.md Updated specification branding.
docs/specs/ui-state.md Updated specification branding.
docs/specs/themes.md Updated specification branding.
docs/specs/status-pyramid.md Updated specification branding.
docs/specs/short-term-goal.md Updated specification branding.
docs/specs/right-panel.md Updated specification branding. Nit (1): Remaining run-kit-managed prose must be updated.
docs/specs/project-plan.md Updated specification branding.
docs/specs/mcp.md Updated specification branding.
docs/specs/index.md Updated specification branding.
docs/specs/design.md Updated specification branding.
docs/specs/code-bridge.md Updated specification branding.
docs/specs/cli-layering.md Updated specification branding.
docs/specs/architecture.md Updated specification branding.
docs/specs/api.md Updated API specification branding. Nit (1): Remaining identity prose must be updated while retaining literal protocol names.
docs/specs/agent-state.md Updated specification branding.
docs/specs/agent-messaging.md Updated specification branding.
docs/site/workflows.md Updated site branding.
docs/site/skill/tutorial.md Updated skill documentation.
docs/site/skill/mux.md Updated skill documentation.
docs/site/skill/messaging.md Updated skill documentation.
docs/site/skill/gui.md Updated skill documentation.
docs/site/skill/display.md Updated skill documentation. Nit (1): Remaining run-kit identity prose must be changed and the embedded copy synchronized.
docs/site/skill/cron.md Updated skill documentation.
docs/site/skill/code.md Updated skill documentation.
docs/site/skill.md Renamed the skill bundle.
docs/site/install.md Updated installation branding and bundle naming.
docs/site/customizing-tmux.md Updated identity prose.
docs/site/cron-schedule-kinds.md Updated page branding.
docs/site/agent-hooks.md Updated product references.
docs/memory/run-kit/toolkit-standards.md Updated branding and standards memory.
docs/memory/run-kit/desktop-shell.md Updated desktop behavior memory.
docs/memory/run-kit/build-and-release.md Updated build and release memory.
docs/memory/run-kit/architecture/overview.md Updated architecture memory.
app/desktop/src/window-registry.test.ts Updated product-name fixtures.
app/desktop/src/welcome/welcome.ts Updated desktop error branding.
app/desktop/src/user-data-migration.ts Added legacy user-data carry-forward. Moderate (2): Migration failures are silently suppressed instead of logged.
app/desktop/src/user-data-migration.test.ts Tested user-data migration.
app/desktop/src/main.ts Set product name and migration startup. Nit (2): Welcome and interstitial page titles still say Run Kit.
app/desktop/package.json Updated package description.
app/desktop/electron-builder.yml Updated product and artifact names.
app/backend/internal/desktop/restart.go Updated current/legacy app restart handling.
app/backend/internal/desktop/release.go Added current and legacy asset resolution. Moderate (2): Legacy-prefix fallback can resolve assets that installation rejects.
app/backend/internal/desktop/release_test.go Tested asset resolution.
app/backend/internal/desktop/installed.go Detects current and legacy installations. Moderate (1): Same-version legacy-only installs can bypass migration. Critical (2): Running legacy bundles may not be detected before removal.
app/backend/internal/desktop/installed_test.go Tested legacy detection.
app/backend/internal/desktop/install.go Installs and removes desktop bundles.
app/backend/internal/desktop/install_test.go Tested bundle installation and migration.
app/backend/internal/desktop/desktop.go Defines current and legacy bundle names.
app/backend/cmd/rk/upgrade.go Updated desktop upgrade integration.
app/backend/cmd/rk/upgrade_test.go Tested desktop upgrade integration.
app/backend/cmd/rk/skill/tutorial.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/skill.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/mux.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/messaging.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/gui.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/display.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/cron.md Synchronized embedded skill documentation.
app/backend/cmd/rk/skill/code.md Synchronized embedded skill documentation.
app/backend/cmd/rk/shell_init.go Registered completion aliases.
app/backend/cmd/rk/shell_init_test.go Tested completion output.
app/backend/cmd/rk/root.go Renamed the Cobra root command.
app/backend/cmd/rk/root_test.go Updated root command tests.
app/backend/cmd/rk/mcp_test.go Updated help-dump path expectations.
app/backend/cmd/rk/help_dump.go Derived tool name from the Cobra root.
app/backend/cmd/rk/help_dump_test.go Updated help-dump tests.
app/backend/cmd/rk/desktop.go Updated desktop CLI branding. Moderate (1): Same-version legacy installs can report success without migration. Moderate (1): Update flow has the same legacy-only short-circuit.
app/backend/cmd/rk/desktop_test.go Updated desktop CLI tests.
Review details

Suppressed comments (6)

app/backend/cmd/rk/desktop.go:201

  • Because InstalledVersion now recognizes a legacy-only Run Kit.app, this equality short-circuit can report “already installed” while no HexoKit.app exists. That leaves the old bundle in place and even prints the nonexistent current path; a same-version legacy install must still run the rename/migration, or the no-op condition must require the current bundle.
		sink.Dataf("HexoKit v%s is already installed (%s). Use --force to reinstall.\n", installed, ins.AppPath())

app/backend/cmd/rk/desktop.go:259

  • The update flow has the same legacy-only edge case: when InstalledVersion reports a Run Kit.app at the latest version, the earlier equality check returns Already up to date before Install can create HexoKit.app and remove the legacy bundle. The no-op path must distinguish a legacy-only install.
	sink.Dataf("Updated HexoKit v%s -> v%s (%s)\n", installed, res.Version, res.Path)

app/backend/internal/desktop/installed.go:29

  • Because InstalledVersion reports the legacy Run Kit.app version, the version-only short-circuit in runDesktopInstall treats a same-version legacy install as already complete and never installs HexoKit.app; desktopUpdateToLatest has the same behavior for rk desktop update and the umbrella update. A user on the latest legacy version therefore remains unmigrated unless they know to pass --force, contrary to the one-release migration in R8. Make the no-op conditional on the current bundle being present (or expose whether the detected bundle is legacy) so equal-version legacy installs still migrate.
func (ins *Installer) installedBundlePath() string {
	newPath := ins.AppPath()
	if _, err := os.Stat(filepath.Join(newPath, "Contents", "Info.plist")); err == nil {
		return newPath
	}
	legacyPath := filepath.Join(ins.InstallDir, legacyAppBundleName)
	if _, err := os.Stat(filepath.Join(legacyPath, "Contents", "Info.plist")); err == nil {
		return legacyPath
	}
	return newPath

docs/site/skill/display.md:1

  • The page still contains # same run-kit origin on line 20. That is prose describing the product server, not a command, path, roster, or payload token, so the R4 prose-only check still reports an old product name; change it to HexoKit and sync the embedded skill copy.
    docs/specs/api.md:1
  • The spec still contains identity prose at lines 419 (run-kit's own row) and 523 (reaches run-kit over stdio). These are not payload, path, wire, or repo-column tokens, so the R13 remaining-hit acceptance fails and the rebranded spec contradicts itself; update those sentences while retaining the literal JSON/tool names.
    docs/specs/right-panel.md:163
  • The topology paragraph still calls the instance run-kit-managed on line 152. This is present-tense explanatory prose rather than a path or wire token, so it leaves an old product hit in the rebranded spec and violates R13's classification; use the intended HexoKit or rk wording consistently.
  • Files reviewed: 75/75 changed files
  • Comments generated: 4
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 68 to 79
defer cancel()
_, err := ins.Run(probeCtx, "pgrep", "-f", filepath.Join(ins.AppPath(), "Contents", "MacOS"))
_, err := ins.Run(probeCtx, "pgrep", "-f", filepath.Join(ins.installedBundlePath(), "Contents", "MacOS"))
return err == nil

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the swap-boundary probe now covers both bundle names: installedBundlePaths lists every installed bundle, runningBundlePath finds the one with a live process, and Install quits that bundle by its own name (a live legacy "Run Kit" install is quit and removed gracefully instead of being deleted mid-run). (26d9bc6)

// Prefer the current prefix; fall back to the pre-rename prefix so a
// release carrying either artifact naming resolves (the rename ships one
// release ahead of any consumer that still publishes the old name).
for _, prefix := range []string{assetPrefix, legacyAssetPrefix} {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — Install now accepts a mounted Run Kit.app bundle from a legacy-prefix DMG: the staged ditto copy lands it under HexoKit.app, so the rename happens as part of the install. Added TestInstallLegacyBundleRenamed covering the end-to-end mount → rename → install flow. (26d9bc6)

Comment thread app/desktop/src/user-data-migration.ts Outdated
Comment on lines +41 to +43
} catch {
// Fresh-install degradation — never block startup on the carry-forward.
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the catch now logs the error (including how many files were copied before the failure) via console.warn while keeping the non-blocking fresh-install degradation, per the logged-and-ignored requirement. (26d9bc6)

Comment thread app/desktop/src/main.ts
const DEV_HOST_ID = "__dev__";

const PRODUCT_NAME = "Run Kit";
const PRODUCT_NAME = "HexoKit";

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the bundled shell pages now carry the new name: welcome.html is "HexoKit — Connect" and interstitial.html is "HexoKit — Host unavailable". (26d9bc6)

sahil87 added a commit that referenced this pull request Sep 11, 2026
… + released v0.1.31, C7 done in six repos, C3 draft #950

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
sahil87 added a commit that referenced this pull request Sep 11, 2026
…ons, Electron productName/artifactName + userData carry-forward, rk desktop bundle/asset prefix, config.yaml project name

The app-identity half of the former #950 scope, rebuilt on top of the C3a prose branch (#952). Deferred to Phase 3 per fab/plans/sahil/26-09-10-hexokit-rebrand.md row R0.
@sahil87
sahil87 force-pushed the 260911-mvuv-hexokit-brand-surfaces branch from 292f148 to 4e716d2 Compare September 11, 2026 19:42
@sahil-noon sahil-noon changed the title chore: HexoKit brand surfaces (plan row C3) chore: HexoKit app identity (plan row R0, deferred to Phase 3) — hexokit command name, Electron/bundle/asset names, config.yaml Sep 11, 2026
@sahil-noon
sahil-noon changed the base branch from main to 260911-mljj-hexokit-brand-prose September 11, 2026 19:42
sahil87 added a commit that referenced this pull request Sep 11, 2026
…he revised standards, docs/site + skill H1s, specs identity lines

Prose-only split of #950: no command, app, bundle, asset, or path name changes (those stay on #950 as Phase 3 row R0). Records #952 (C3a) and #950 (R0) in the rebrand plan rows.
@sahil87
sahil87 force-pushed the 260911-mljj-hexokit-brand-prose branch from 849886a to 4fbd7c9 Compare September 11, 2026 19:45
sahil87 added a commit that referenced this pull request Sep 11, 2026
…ons, Electron productName/artifactName + userData carry-forward, rk desktop bundle/asset prefix, config.yaml project name

The app-identity half of the former #950 scope, rebased onto current main on top of the C3a prose branch (#952). Deferred to Phase 3 per fab/plans/sahil/26-09-10-hexokit-rebrand.md row R0.
@sahil87
sahil87 force-pushed the 260911-mvuv-hexokit-brand-surfaces branch from 4e716d2 to 256c97d Compare September 11, 2026 19:47
sahil-noon added a commit that referenced this pull request Sep 11, 2026
…kill H1s, specs identity lines (#952)

* docs: flip run-kit's brand prose to HexoKit (C3a) — README head per the revised standards, docs/site + skill H1s, specs identity lines

Prose-only split of #950: no command, app, bundle, asset, or path name changes (those stay on #950 as Phase 3 row R0). Records #952 (C3a) and #950 (R0) in the rebrand plan rows.

* Update review-pr status

---------

Co-authored-by: Sahil Ahuja <sahilahuja@gmail.com>
@sahil-noon
sahil-noon changed the base branch from 260911-mljj-hexokit-brand-prose to main September 11, 2026 20:02
sahil87 added a commit that referenced this pull request Sep 11, 2026
…ons, Electron productName/artifactName + userData carry-forward, rk desktop bundle/asset prefix, config.yaml project name

The app-identity half of the former #950 scope, rebased onto current main on top of the C3a prose branch (#952). Deferred to Phase 3 per fab/plans/sahil/26-09-10-hexokit-rebrand.md row R0.
@sahil87
sahil87 force-pushed the 260911-mvuv-hexokit-brand-surfaces branch from 256c97d to 6193071 Compare September 11, 2026 20:04
sahil87 added a commit that referenced this pull request Sep 12, 2026
…arked on #950); Phase 2 unblocked

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@sahil-noon

Copy link
Copy Markdown
Collaborator Author

DO NOT MERGE UNTIL PHASE 3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants