Skip to content

feat(product)!: establish Dispatch identity - #150

Draft
danielblignaut wants to merge 2 commits into
mainfrom
codex/dispatch-product-rename
Draft

danielblignaut wants to merge 2 commits into
mainfrom
codex/dispatch-product-rename

Conversation

@danielblignaut

@danielblignaut danielblignaut commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Outcome

Rename the OpenBot product to Dispatch across source, packages, contracts, UI, runtime paths,
documentation, workflows, and deployment identities. Publish product packages as
@trytilde/dispatch-* and expose the unified command surface through @trytilde/cli and tilde.

Key implementation choices

  • Keep Tilde as the platform/SDK namespace and Dispatch as the application identity.
  • Treat the rename as a breaking pre-1.0 migration with no legacy aliases.
  • Regenerate protobuf and OpenAPI clients from renamed source contracts.
  • Preserve current main; the stale pre-rename worktree was saved as a local recovery stash and
    the migration was rebuilt on current origin/main.

Repository context

  • Branch, remotes, worktree, stashes, and existing PRs were inspected.
  • The diff was reviewed against the repository's actual default/base branch.
  • There is a real commit diff to publish and unrelated user work is preserved.

Validation

  • Focused tests for changed surfaces ran.

  • pnpm check ran, or the reason it did not is below.

  • pnpm build ran, or the reason it did not is below.

  • Generated protobuf contracts were regenerated when protobuf changed.

  • Browser/Electron checks ran when their behavior changed.

  • Exact commands, results, and known failures are listed below.

  • pnpm --filter @trytilde/cli --filter @trytilde/dispatch-control-service --filter @trytilde/dispatch-agent-service-provider --filter @trytilde/dispatch-computer-service-provider --filter @trytilde/dispatch-client-runtime --filter @trytilde/dispatch-desktop test — passed.

  • pnpm check — passed with zero errors and 39 existing warnings.

  • pnpm build — passed, including package and CLI artifact verification.

  • pnpm test — passed across all 31 testable workspace projects.

  • CI=1 pnpm test:e2e — 16 passed, 1 intentionally skipped.

  • pnpm --filter @trytilde/dispatch-desktop package — passed on Linux; produced Dispatch AppImage and Debian artifacts outside Git.

  • pnpm changeset:status — passed.

Contracts, state, deployment, and security

  • Public HTTP and ConnectRPC compatibility was reviewed.
  • Tilde API resource identity, reconciliation, and persisted variable impact were reviewed.
  • Vercel routes, environment names, deploy checkpoints, and provider lifecycles were reviewed.
  • Changed state is classified as portable configuration, secret, control state, or ephemeral runtime state.
  • No secrets, generated deployment state, browser data, or fork-specific configuration are included.

Breaking contract migration: protobuf moves to dispatch.computer.v1; Dispatch-owned Tilde API
operation/type names, HTTP identities, package imports, app protocol/bundle identity, and runtime
resource names move to Dispatch. Repository configuration uses DISPATCH_*; persisted local/control
state uses .dispatch and Dispatch-prefixed keys; runtime-only process/resource names use Dispatch.
Secret values are unchanged and no secret material is included. Existing installations must migrate
their environment and state names before running the new version.

Configuration ownership

  • The actual PR base repository was read from GitHub; it was not inferred from origin.
  • For a trytilde/dispatch contribution, tracked configuration/ contains only the canonical ignore-all .gitignore sentinel.
  • For a fork PR, the sentinel is deleted and initialized fork-owned configuration is tracked, excluding configuration/.env. (Not applicable: upstream PR.)
  • No root environment or SOPS files are committed.

This targets trytilde/dispatch. git ls-files configuration contains only
configuration/.gitignore.

Cross-client parity

  • Web: product copy, runtime names, storage keys, imports, and CSS namespace are ported.
  • Electron: product name, app/protocol identity, preload bridge, package metadata, and updater names
    are ported.
  • Mobile: not portable in this PR because the native mobile client is intentionally paused/removed
    on current main under ADR-0033; there is no active mobile package to update.

External dependencies

External dependencies: unchanged. Linux packaging was verified; macOS packaging and signing were
not exercised on this Linux host.

Architecture and ADR review

  • The complete diff was reviewed against CONTEXT.md, AGENTS.md, and relevant ADRs.
  • Ownership, protocols, auth, secrets, failure policy, platform choices, layering, and durable conventions were reviewed.
  • A new or amended ADR is linked below, or ADR review: no new decision is stated.

The explicit product/CLI decisions amend ADR-0021 and ADR-0030. Repository bootstrap and ownership
remain governed by ADR-0013. No unresolved architecture decision remains.

Package documentation and provider contracts

  • Every changed workspace package has an accurate package-root README title and description.
  • Every changed package README documents all public functions and critical public interfaces/types.
  • Every provider contract interface is in its owning package's src/core.ts or src/core/index.ts and matches its README.

Changeset

  • A Changeset covers owner-visible behavior or public package API changes.
  • No Changeset is required because this is documentation-only, test-only, CI-only, or an internal refactor.

.changeset/rename-dispatch-product.md records the breaking pre-1.0 migration.

Fork update record

  • This draft PR was opened before its update record was generated.
  • docs/updates/<this-pr-number>.md describes the complete current PR.
  • Generation analyzed the full diff, commits, review discussion, and every thread in the local coding-agent database—not only the current task.
  • The record has all four required headings, a Mermaid diagram, and exact yes or no fork criticality.
  • The record excludes secrets, unrelated thread material, generated deployment state, and fork-specific configuration.
  • The record was refreshed after the latest implementation or review change.

Fork update record.
All 150 archived task summaries and all 69 active/pinned tasks returned by the supported APIs were
reviewed. The active API exposes at most 50 non-pinned tasks with no pagination cursor, so complete
coverage of older non-pinned active tasks cannot be claimed; full turns were inspected for the
relevant naming, CLI ownership, and implementation tasks.

Frontend evidence

The full Chromium suite passed (16 runnable scenarios) and the Linux Electron package completed.
No generated screenshot or trace is committed.

Known limitations and follow-ups

  • macOS packaging/signing and a live production deployment were not run.
  • Existing installations require the breaking namespace migration described by the Changeset.
  • Merge is blocked until the Tilde API exposes the matching Dispatch identity routes/contracts, or
    this PR deliberately preserves the legacy wire identifiers during an expand/migrate/contract rollout.

Final diff review

  • Intentional files only; unrelated user work is preserved.
  • No generated noise, stale instructions, missing tests, or unresolved ADR candidate remains.
  • The PR title uses Conventional Commits style and is under 72 characters.
  • The PR remains draft until checks and accepted feedback are current.
  • Current PR checks and unresolved review feedback were inspected after the latest push.
  • The no-greptile label was present when the PR was created; no external review bot was triggered.

Rename product packages, commands, paths, contracts, and UI identity.\n\nBREAKING CHANGE: install @trytilde/cli, invoke tilde, use\n@trytilde/dispatch-* packages, and migrate environment and state names to\nthe DISPATCH_* and .dispatch namespaces.
@danielblignaut danielblignaut added the no-greptile Disable automatic Greptile reviews for this pull request label Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-greptile Disable automatic Greptile reviews for this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant