Skip to content

feat: 100% TypeScript trunk — global config, publish-as-skill, delete Go#1

Open
Jackyffight wants to merge 6 commits into
mainfrom
feat/ts-trunk
Open

feat: 100% TypeScript trunk — global config, publish-as-skill, delete Go#1
Jackyffight wants to merge 6 commits into
mainfrom
feat/ts-trunk

Conversation

@Jackyffight

Copy link
Copy Markdown
Owner

Adopts the native-TS rust-tui-rewrite line as the canonical trunk and ports the three genuinely-unique deltas from the (now superseded) feat/vbox-publish line on top — instead of shipping vbox-publish's from-scratch re-migration off an older base.

Two parallel TS migrations had diverged from the same Add TS-first TUI bridge commit:

  • rust-tui-rewrite (mature: native TS runtime with tests, inputEditor, markdown, web tools, bash approvals)
  • vbox-publish (a less-mature re-migration off an older base)

This branch = rust-tui-rewrite + the 3 deltas.

③ Config is GLOBAL only

model / provider / API key / base_url / image model resolve from ~/.openmelon/{config,credentials}.json + env, never the workdir. New core/config.ts helpers (resolveProvider, resolveApiKey, setGlobalDefaults, setGlobalBaseUrl, setGlobalApiKey, unsetGlobalApiKey); nativeConfig / bootstrap / App / project commands rewired off project-level defaults & providers. reasoning_effort stays the one per-project behaviour knob. Runtime tests now isolate OPENMELON_HOME so they never touch the real config or API key.

② Publish-as-skill

@e8s/vbox-cli is bundled as a tui/ dependency and node_modules/.bin is prepended to the bash tool's PATH (nativeTools.bashEnv) so the agent runs vbox-cli upload / vbox-cli post itself. The system prompt gets a "Publishing to V-Box" paragraph. No /publish command.

① Delete leftover Go

cmd/ internal/ pkg/ npm/ go.mod go.sum removed (121 files). tui/ is now the published @e8s/openmelon package; Makefile, scripts/release.sh, root CLAUDE.md, and README rewritten for the pure-TS layout.

Verification

Clean build; 27/28 tests pass. The one failure (trust accepts symlink-equivalent project paths) is a pre-existing /tmp/private/tmp realpath issue on this line, not a regression from this PR.

🤖 Generated with Claude Code

Jackyffight and others added 6 commits May 21, 2026 08:45
…e Go

Adopts the native-TS rust-tui-rewrite line as the trunk and ports the three
genuinely-unique deltas from the (now superseded) vbox-publish line on top,
instead of shipping vbox-publish's from-scratch re-migration off an older base.

Delta ③ — config is GLOBAL only:
  model / provider / api key / base_url / image model all resolve from
  ~/.openmelon/{config,credentials}.json + env, never the workdir. New helpers
  in core/config.ts (resolveProvider, resolveApiKey, setGlobalDefaults,
  setGlobalBaseUrl, setGlobalApiKey, unsetGlobalApiKey). nativeConfig, bootstrap,
  App, and `project` commands rewired off project-level defaults/providers.
  reasoning_effort stays the one per-project behaviour knob. Runtime tests now
  isolate OPENMELON_HOME so they never hit the real config or API.

Delta ② — publish-as-skill:
  bundle @e8s/vbox-cli as a tui dependency and prepend node_modules/.bin to the
  bash tool's PATH (nativeTools bashEnv) so the agent runs vbox-cli itself; add
  the "Publishing to V-Box" capability paragraph to the system prompt.

Delta ① — delete leftover Go:
  remove cmd/ internal/ pkg/ npm/ go.mod go.sum; tui/ becomes the published
  @e8s/openmelon package; Makefile + scripts/release.sh + root CLAUDE.md +
  README rewritten for the pure-TS layout.

Build green; 27/28 tests pass (the 1 failure is a pre-existing /tmp realpath
symlink test, unrelated to this change).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant