Repository navigation
Conversation
Add explicit Updating section with find + path update flow. Rewrite existing statusline integration with concrete data flow diagram and worked examples in Ruby and shell. Add step 4 (restart) to setup. Show full settings.json for display command setup.
Document why seamless-claude owns the statusline slot (only after-response hook available) and intent to invert the flow when Claude Code adds a generic AfterResponse hook.
There was a problem hiding this comment.
Pull request overview
This PR enhances the README documentation for the seamless-claude plugin by adding critical update instructions, expanding the statusline integration guide, and providing comprehensive code examples for custom statusline integration. While the PR description states "doesn't require the version changing," the title references V0.1.1 and the content includes hardcoded version paths for 0.1.1.
Changes:
- Added new "Updating" section explaining how to update statusline paths after version upgrades
- Expanded "Using with an existing statusline" section with detailed Ruby and shell script examples
- Added "Why seamless-claude owns the statusline slot" architectural explanation
- Reorganized setup instructions with clearer step-by-step guidance
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "statusLine": { | ||
| "type": "command", | ||
| "command": "node /full/path/to/scripts/statusline.mjs" | ||
| "command": "node ~/.claude/plugins/cache/remotecto-plugins/seamless-claude/0.1.1/scripts/statusline.mjs" |
There was a problem hiding this comment.
The hardcoded version number "0.1.1" in the example path will become outdated with future releases. According to the new "Updating" section (lines 78-91), users must manually update this path after each version bump. Consider using a placeholder like "VERSION" or "X.Y.Z" instead to make it clear this should be customized, or add a comment indicating users should run the find command to get their actual path.
| }, | ||
| "statusLine": { | ||
| "type": "command", | ||
| "command": "node ~/.claude/plugins/cache/remotecto-plugins/seamless-claude/0.1.1/scripts/statusline.mjs" |
There was a problem hiding this comment.
The hardcoded version number "0.1.1" in the example path will become outdated with future releases. This creates the same maintenance burden described in the "Updating" section above. Consider using a placeholder or referencing the need to use the actual path from the find command in step 1.
| "statusLine": { | ||
| "type": "command", | ||
| "command": "node /full/path/to/scripts/statusline.mjs" | ||
| "command": "node ~/.claude/plugins/cache/remotecto-plugins/seamless-claude/0.1.1/scripts/statusline.mjs" |
There was a problem hiding this comment.
There's a discrepancy between the PR title "V0.1.1 (Readme Amend)" and the description stating "doesn't require the version changing." The README content includes hardcoded references to version "0.1.1" in multiple places (lines 122, 237), which suggests this is intended for a 0.1.1 release. Either the PR description should clarify this is documenting version 0.1.1, or the version references should be parameterized.
| # $INDICATOR confirms seamless-claude is active | ||
| # Add $SHORT when compacting/ready/error | ||
| # Parse stdin JSON with jq for your own output | ||
| PCT=$(echo "$INPUT" | jq -r '.context_window.used_percentage') |
There was a problem hiding this comment.
The shell variable INPUT is used but never defined in this example. The comment mentions "Parse stdin JSON with jq" but there's no line reading stdin into INPUT. This example won't work as-is. Consider adding "INPUT=$(cat)" or similar before the PCT line, or changing to use stdin directly in the jq command.
| PCT=$(echo "$INPUT" | jq -r '.context_window.used_percentage') | |
| PCT=$(jq -r '.context_window.used_percentage') |
| { | ||
| "env": { | ||
| "SEAMLESS_DISPLAY_CMD": "/path/to/your/statusline.sh" | ||
| "SEAMLESS_DISPLAY_CMD": "~/.claude/statusline.rb", |
There was a problem hiding this comment.
The example shows a tilde path "~/.claude/statusline.rb" without quotes. In JSON, this should work, but the corresponding statusLine.command uses the full expanded path. For consistency and clarity, consider either using the full path for both or adding a note that tilde expansion is supported in the env block.
| data = JSON.parse($stdin.read) | ||
|
|
||
| # Your existing statusline logic here... | ||
| pct = data.dig('context_window', 'used_percentage') | ||
| # ... build your output ... |
There was a problem hiding this comment.
The comment "Your existing statusline logic here..." is somewhat vague for a code example. Since this is demonstrating how to integrate seamless-claude with an existing statusline, consider adding a more concrete example of what typical statusline logic might look like (e.g., "my_status = build_my_statusline(data)" or similar) to make the integration pattern clearer.
| data = JSON.parse($stdin.read) | |
| # Your existing statusline logic here... | |
| pct = data.dig('context_window', 'used_percentage') | |
| # ... build your output ... | |
| require 'json' | |
| data = JSON.parse($stdin.read) | |
| # Example: build your existing statusline from the data | |
| pct = data.dig('context_window', 'used_percentage') || 0 | |
| your_bar = "CTX #{pct.to_i}%" |
| else '' | ||
| end | ||
|
|
||
| puts "#{your_bar}#{indicator}" |
There was a problem hiding this comment.
The Ruby example references a variable "your_bar" on line 284 that is never defined in the example. This will cause the example to fail if users copy it directly. Consider defining this variable earlier in the example or using a more concrete placeholder like "my_statusline_output" that makes it clearer what should be substituted.
This is only a README amend, so doesn't require the version changing.