Skip to content

feat: enhance terminal, ACP, and web UI with team tools, skill display, and session improvements#65

Merged
cnjack merged 2 commits into
mainfrom
feat/terminal-acp-enhancement
May 22, 2026
Merged

feat: enhance terminal, ACP, and web UI with team tools, skill display, and session improvements#65
cnjack merged 2 commits into
mainfrom
feat/terminal-acp-enhancement

Conversation

@cnjack
Copy link
Copy Markdown
Owner

@cnjack cnjack commented May 22, 2026

Summary

Enhance the terminal/ACP handler, TUI formatting, web UI tool cards, and session recording across the stack — adding rich display for team and skill tools, fixing light-mode terminal rendering, and preventing empty session files.

Related Issues / Tickets

Type of Change

  • New feature
  • Bug fix
  • Breaking change
  • Documentation update
  • Refactoring / code cleanup
  • Performance improvement
  • Test update

Changes Made

  1. ACP handler — team tool kind mapping (internal/handler/acp.go): Added team_list as ToolKindRead; team_send_message, team_create, team_spawn, team_delete as ToolKindExecute.

  2. Web handler — tool display info (internal/handler/web.go): Added display metadata (title, icon, category, subtitle) for load_skill, team_list, team_send_message, team_create, team_spawn, team_delete.

  3. Session recorder — lazy system prompt flush (internal/session/session.go): Buffer system prompt + env info until the first real message is recorded, preventing empty session files when jcode is opened and immediately closed.

  4. Skills loader — description in output (internal/skills/skills.go): Include description attribute in the <skill> tag so consumers (TUI, web) can show a short summary instead of the full body.

  5. TUI formatting — new tool renderers (internal/tui/format.go): Added compact formatters for load_skill (name + description), team_list (structured member list with status dots), and team operations (team_send_message, team_create, team_spawn, team_delete).

  6. Web UI — ToolCallCard rich renderers (web/src/components/ToolCallCard.vue): Added dedicated card renderers for skill loader, team list (member table with status badges), team create (name + lead), team spawn (name + prompt preview + ID), and team message (recipient + summary + body preview).

  7. Web UI — terminal panel UX (web/src/components/TerminalPanel.vue): Moved + button inline after last tab; close (×) icon appears on hover instead of always-visible; active tab shows × at reduced opacity.

  8. Web UI — light mode fixes (web/src/style.css, TerminalInstance.vue): Added light-mode terminal background color; xterm viewport background override; light-mode code block styling (GitHub-style #f6f8fa).

  9. Web UI — chat prose tightening (web/src/style.css): Reduced line-height to 1.625, tighter paragraph/list spacing, adjusted font-size to 15px for a more compact chat feel.

  10. Web UI — alignment tweaks (App.vue, ToolCallCard.vue): Added pl-9 indent on tool cards; removed left padding on tool card headers for visual alignment with the gutter.

Testing

  • Manual verification of TUI tool output formatting for load_skill, team_list, and team operation tools
  • Web UI inspected for all new tool card renderers (skill, team-list, team-create, team-spawn, team-message)
  • Light/dark mode terminal background verified
  • Session recorder tested: opening and immediately closing jcode no longer creates an empty .jsonl file

Screenshots / Recordings

Checklist

  • I have read the contributing guidelines.
  • My code follows the project style guidelines.
  • I have performed a self-review of my code.
  • I have added/updated tests as needed.
  • I have updated relevant documentation.
  • All new and existing tests pass.

Additional Notes

  • The session recorder change is backward-compatible — existing session files are unaffected, and resume logic reads the same EntrySystemPrompt entry format.
  • The skill loader output change (description attribute) is additive — existing consumers that only parsed name will continue to work.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 22, 2026

Warning

Rate limit exceeded

@cnjack has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 37 minutes and 10 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2a7e2f77-06b0-413f-adca-993c1219c6cd

📥 Commits

Reviewing files that changed from the base of the PR and between 06b4951 and 437d1bf.

📒 Files selected for processing (3)
  • internal/handler/acp.go
  • internal/session/session.go
  • internal/tui/format.go
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/terminal-acp-enhancement

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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: 6e6a29c7c9

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +519 to +523
r.pendingSystemPrompt = ""
r.pendingEnvInfo = ""
if spData, spErr := json.Marshal(sp); spErr == nil {
_, _ = r.file.WriteString(string(spData) + "\n")
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve pending system prompt when flush write fails

The new buffered flush clears pendingSystemPrompt/pendingEnvInfo and ignores the write error for the system_prompt entry, so an I/O failure on that first flush can permanently drop the system prompt while later entries still persist. This breaks resume behavior that depends on EntrySystemPrompt (prompt/env snapshot) and is hard to recover because the buffer is already cleared; the flush should only clear pending fields after a successful write (or propagate the error).

Useful? React with 👍 / 👎.

@cnjack cnjack merged commit ea379e2 into main May 22, 2026
1 check passed
@cnjack cnjack deleted the feat/terminal-acp-enhancement branch May 22, 2026 15:58
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