Triage fixes: install.sh, /config edit, FreeBSD, .agents skills, MCP compat, retry fail-fast, terminal config#417
Merged
Merged
Conversation
GitHub's /releases/latest now returns single-line JSON, so the old grep '"tag_name"' | cut matched the whole blob and returned a URL. Use grep -o to isolate just the tag_name field, working for both compact and pretty-printed JSON.
When $EDITOR contains arguments (e.g. 'zed --wait' or 'code -w'), the whole string was used as the binary name and spawn failed silently. Split on whitespace, use the first token as the binary, pass the rest as args, and surface spawn errors instead of swallowing them.
- platform: cast rlim_cur/rlim_max to u64 (they are i64 on FreeBSD, u64 on Linux/macOS), keeping the nofile-limit code portable. - auth/cursor: add an XDG-style fallback for Cursor's state.vscdb path on non-Linux/macOS/Windows Unix (e.g. FreeBSD) so the build no longer fails with an uninitialized 'relatives'. - ci: add a FreeBSD smoke workflow that boots a real FreeBSD VM via vmactions/freebsd-vm to build the jcode binary, run --version, and run platform unit tests. GitHub has no native FreeBSD runner, so a VM is the only way to get a true build+test (cross-compile can't link aws-lc-sys).
…413) Add the shared cross-tool `.agents` convention to both the load and reload paths, alongside the existing .jcode and .claude locations: - Global: ~/.agents/skills/<name>/SKILL.md - Project-local: ./.agents/skills/<name>/SKILL.md Improves skill portability across agent tooling.
Claude Code's real MCP conventions differ from what jcode read: - Accept the canonical `mcpServers` key (alias of jcode's `servers`). - Load project config from `./.mcp.json` (repo root), not just `.claude/mcp.json`. - Load user config from `~/.claude.json`: top-level `mcpServers` plus per-project servers under `projects.<cwd>.mcpServers`. - Recognize HTTP/SSE entries (`type`/`url`) and skip them with a log line, since jcode only supports stdio servers today. - First-run import now reads `~/.claude.json` (legacy `~/.claude/mcp.json` kept as fallback). - Update README MCP docs. Adds unit tests for the mcpServers key, HTTP detection, and ~/.claude.json global+project parsing.
Reconnect/recovery continuation burned the full auto-retry budget on deterministic 4xx model/endpoint-capability errors (e.g. Volcengine Ark's coding-plan endpoint returning 404 UnsupportedModel for a model without the coding plan feature, or model-not-found). Retrying the identical request can never succeed, so this produced noisy repeated failures. Add is_fatal_model_endpoint_error and short-circuit these in the remote error handler: clear the pending retry, stop auto-poke, and show an actionable hint about the model/base-URL mismatch instead of retrying. Also extend the non-retryable auto-poke marker set with UnsupportedModel / coding-plan markers. Adds unit + integration tests.
…401) The macOS Cmd+; launch terminal was only configurable via the undocumented ~/.jcode/preferred_terminal.json. Add a discoverable, documented [terminal] preferred key in config.toml and prefer it over the legacy JSON file in effective_macos_terminal() (config > JSON > detection). Document the key in the generated default config.toml next to spawn_hook/ focus_hook. (Re-running 'jcode setup-hotkey' still regenerates the launcher script; auto-regenerate-on-change is left for a follow-up.) Adds tests for config parsing and the documented terminal value mapping.
This was referenced Jun 29, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Autonomous triage of newly filed issues. Each fix is a focused commit.
Fixes
/releases/latestnow returns compact single-line JSON, so the oldgrep | cutreturned a URL instead of the tag. Usegrep -oto isolate thetag_namefield (works for compact and pretty JSON)./config editnow shell-splits$EDITORso values with args (e.g.zed --wait,code -w) launch correctly, and surfaces spawn errors instead of failing silently.rlim_cur/rlim_maxtou64(they'rei64on FreeBSD), add an XDG-style Cursorstate.vscdbfallback for other Unix, and add afreebsd-smokeCI workflow that boots a real FreeBSD VM (vmactions/freebsd-vm) to build + run + test. Verified green: https://github.com/1jehuang/jcode/actions/runs/28342275452 (build,--version, platform unit tests all pass on FreeBSD 14.2)..agentsconvention:~/.agents/skills/and./.agents/skills/, alongside existing.jcode/.claudepaths (load + reload paths).mcpServerskey (alias ofservers), load./.mcp.jsonand~/.claude.json(top-level +projects.<cwd>.mcpServers), recognize and skip HTTP/SSE (type/url) entries with a log line, and update first-run import + README.404 UnsupportedModel, model-not-found). Shows an actionable model/base-URL hint instead.[terminal] preferredconfig.toml key for the macOS Cmd+; launch terminal, preferred over the legacy~/.jcode/preferred_terminal.json.Validation
cargo build -p jcode --bin jcode(selfdev) succeeds.is_fatal_model_endpoint_error), and[terminal] preferredparsing.