Skip to content

feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui#7683

Merged
alexhancock merged 1 commit intomainfrom
combined/tui-publish
Mar 6, 2026
Merged

feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui#7683
alexhancock merged 1 commit intomainfrom
combined/tui-publish

Conversation

@alexhancock
Copy link
Copy Markdown
Collaborator

Combines

#7395
#7666

making it possible for us to publish all three of the npm packages that will power the new TUI with an embedded goose-acp

I added one more architectural improvement I thought of which was to bring the stream creation into ui/acp

@alexhancock alexhancock requested a review from jamadeo March 5, 2026 20:09
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 495e7e951b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

type SetSessionModelResponse,
} from "@agentclientprotocol/sdk";
import { GooseExtClient } from "./generated/client.gen.js";
import { createHttpStream } from "./http-stream.js";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add missing http-stream source to ACP package

GooseClient now imports createHttpStream from ./http-stream.js, but this commit does not add a corresponding ui/acp/src/http-stream.ts file (and index.ts also re-exports it), so npm run build/tsc for ui/acp fails with a module-resolution error and blocks publishing/consuming @block/goose-acp.

Useful? React with 👍 / 👎.

@alexhancock alexhancock force-pushed the combined/tui-publish branch from 495e7e9 to 6f6970a Compare March 5, 2026 20:15
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6f6970ab98

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

<App serverUrl={serverUrl} initialPrompt={cli.flags.text} />,
);

await waitUntilExit();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Terminate spawned server when Ink app exits

When --server is omitted, main() spawns a bundled goose-acp-server process, but after the UI exits it only awaits waitUntilExit() and returns without calling cleanup(). Because Ctrl+C is handled inside useInput via exit() (not a real SIGINT), the signal handlers do not run, so the child process remains alive and keeps the Node event loop open; this makes one-shot mode (--text) and normal in-app exits hang instead of terminating cleanly.

Useful? React with 👍 / 👎.

…nfig from jackamadeo/package-tui

- New TUI implementation (tui.tsx) with markdown rendering, tool call cards,
  turn-based history navigation, scrollable body, and splash screen
- Added colors.tsx, markdown.tsx, toolcall.tsx modules
- Removed app.tsx (replaced by tui.tsx)
- cli.tsx updated to import App from tui.tsx (keeps server auto-launch logic)
- package.json has publishing config (@block/goose, bin, files, optionalDeps)
  plus new deps (marked, marked-terminal)

Co-authored-by: Jack Amadeo <[email protected]>
@alexhancock alexhancock force-pushed the combined/tui-publish branch from 6f6970a to b2257cd Compare March 5, 2026 20:37
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b2257cd5fe

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

const start = Date.now();
while (Date.now() - start < timeoutMs) {
try {
const res = await fetch(`${url}/status`);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Probe bundled ACP server on the correct health endpoint

When --server is omitted, startup now waits for the spawned goose-acp-server to become ready, but this probe hits "/status"; the ACP server router exposes "/health" (see crates/goose-acp/src/transport.rs), so the check never returns res.ok and times out after 10s before killing the child process. In practice, this breaks the default bundled-server launch path for users who rely on auto-start instead of passing --server.

Useful? React with 👍 / 👎.

@@ -0,0 +1,7 @@
{
"private": true,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

what does private do here? will this change how the desktop is built at all?

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.

it just means this itself won't be registered as a publishable module by npm

we only want to publish the constituent packages

Copy link
Copy Markdown
Collaborator

@michaelneale michaelneale left a comment

Choose a reason for hiding this comment

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

why not

@alexhancock alexhancock added this pull request to the merge queue Mar 6, 2026
Merged via the queue into main with commit a36ca9a Mar 6, 2026
21 checks passed
@alexhancock alexhancock deleted the combined/tui-publish branch March 6, 2026 19:35
wpfleger96 added a commit that referenced this pull request Mar 6, 2026
…e-issue

* origin/main:
  feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683)
  chore: cleanup old sandbox (#7700)
  Correct windows artifact (#7699)
  gh fall back (#7695)
  fix: restore smart-approve mode (#7690)
  fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686)
  Update to rmcp 1.1.0 (#7619)
jh-block added a commit that referenced this pull request Mar 9, 2026
…deps

* origin/main: (34 commits)
  fix: reduce server log verbosity — skip session in instrument, defaul… (#7729)
  fix: provider test infrastructure (#7738)
  fix: sanitize streamable HTTP extension names derived from URLs (#7740)
  refactor: derive GooseMode string conversions with strum (#7706)
  docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525)
  fix: flake.nix (#7224)
  delete goose web (#7696)
  Add @angiejones as CODEOWNER for documentation (#7711)
  Add MLflow integration guide (#7563)
  docs: LM Studio availability (#7698)
  feat: add Avian as an LLM provider (#7561)
  Adds `linux-mcp-server` to the goose registry (#6979)
  fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708)
  feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683)
  chore: cleanup old sandbox (#7700)
  Correct windows artifact (#7699)
  gh fall back (#7695)
  fix: restore smart-approve mode (#7690)
  fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686)
  Update to rmcp 1.1.0 (#7619)
  ...

# Conflicts:
#	Cargo.lock
wpfleger96 added a commit that referenced this pull request Mar 9, 2026
* origin/main: (21 commits)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  fix: reduce server log verbosity — skip session in instrument, defaul… (#7729)
  fix: provider test infrastructure (#7738)
  fix: sanitize streamable HTTP extension names derived from URLs (#7740)
  refactor: derive GooseMode string conversions with strum (#7706)
  docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525)
  fix: flake.nix (#7224)
  delete goose web (#7696)
  Add @angiejones as CODEOWNER for documentation (#7711)
  Add MLflow integration guide (#7563)
  docs: LM Studio availability (#7698)
  feat: add Avian as an LLM provider (#7561)
  Adds `linux-mcp-server` to the goose registry (#6979)
  fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708)
  feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683)
  chore: cleanup old sandbox (#7700)
  Correct windows artifact (#7699)
  ...
wpfleger96 added a commit that referenced this pull request Mar 9, 2026
* origin/main: (21 commits)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  fix: reduce server log verbosity — skip session in instrument, defaul… (#7729)
  fix: provider test infrastructure (#7738)
  fix: sanitize streamable HTTP extension names derived from URLs (#7740)
  refactor: derive GooseMode string conversions with strum (#7706)
  docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525)
  fix: flake.nix (#7224)
  delete goose web (#7696)
  Add @angiejones as CODEOWNER for documentation (#7711)
  Add MLflow integration guide (#7563)
  docs: LM Studio availability (#7698)
  feat: add Avian as an LLM provider (#7561)
  Adds `linux-mcp-server` to the goose registry (#6979)
  fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708)
  feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683)
  chore: cleanup old sandbox (#7700)
  Correct windows artifact (#7699)
  ...
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.

2 participants