Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ All notable changes to this project are documented in this file.
- Added persistent model-routing trace runtime support with `/model-routing trace --json` for latest requested/attempted/selected fallback diagnostics.
- Added `/routing` command surface (`status`, `explain`) via `scripts/routing_command.py` for compact fallback visibility workflows.
- Added `instructions/browser_profile_model.md` defining Browser Automation profile providers, defaults, migration behavior, and validation rules for Epic 13 Task 13.1.
- Added `scripts/browser_command.py` with `/browser status`, `/browser profile <provider>`, and `/browser doctor` for provider switching and dependency diagnostics.
- Added `/browser`, `/browser-status`, `/browser-profile`, and `/browser-doctor-json` aliases in `opencode.json`.

### Changes
- Documented extension evaluation outcomes and when each tool is the better fit.
Expand Down Expand Up @@ -78,6 +80,7 @@ All notable changes to this project are documented in this file.
- Expanded README guidance with category-driven routing examples and troubleshooting steps for unexpected model selection.
- Expanded routing verification coverage for deterministic trace stability and explicit fallback/no-fallback explain outcomes, and added `/routing` smoke hints in install output.
- Marked Epic 13 as in progress in the roadmap and completed Task 13.1 definition notes.
- Expanded install and selftest coverage for browser provider profile switching and missing dependency guidance.

## v0.2.0 - 2026-02-12

Expand Down
11 changes: 6 additions & 5 deletions IMPLEMENTATION_ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Use this map to avoid overlapping implementations.
| E10 | Auto Slash Command Detector | paused | Medium | E1, E8 | TBD | Resume only if intent precision stays high in prototypes |
| E11 | Context-Window Resilience Toolkit | done | High | E4 | bd-2tj, bd-n9y, bd-2t0, bd-18e | Improve long-session stability and recovery |
| E12 | Provider/Model Fallback Visibility | done | Medium | E5 | bd-1jq, bd-298, bd-194, bd-2gq | Explain why model routing decisions happen |
| E13 | Browser Automation Profile Switching | in_progress | Medium | E1 | bd-3rs | Toggle Playwright/agent-browser with checks |
| E13 | Browser Automation Profile Switching | in_progress | Medium | E1 | bd-3rs, bd-2qy | Toggle Playwright/agent-browser with checks |
| E14 | Plan-to-Execution Bridge Command | planned | Medium | E2, E3 | TBD | Execute validated plans with progress tracking |
| E15 | Todo Enforcer and Plan Compliance | planned | High | E14 | TBD | Keep execution aligned with approved checklists |
| E16 | Comment and Output Quality Checker Loop | merged | Medium | E23 | TBD | Merged into E23 (PR Review Copilot) |
Expand Down Expand Up @@ -541,10 +541,11 @@ Every command-oriented epic must ship all of the following:
- [x] Subtask 13.1.2: Define profile settings and defaults
- [x] Subtask 13.1.3: Define migration behavior for existing installs
- [x] Notes: Added `instructions/browser_profile_model.md` with provider schema, defaults, migration behavior, and validation contract.
- [ ] Task 13.2: Implement profile command backend
- [ ] Subtask 13.2.1: Add `/browser profile <provider>` command
- [ ] Subtask 13.2.2: Add status and doctor checks for selected provider
- [ ] Subtask 13.2.3: Add install helper guidance for missing dependencies
- [x] Task 13.2: Implement profile command backend
- [x] Subtask 13.2.1: Add `/browser profile <provider>` command
- [x] Subtask 13.2.2: Add status and doctor checks for selected provider
- [x] Subtask 13.2.3: Add install helper guidance for missing dependencies
- [x] Notes: Added `scripts/browser_command.py`, `/browser*` aliases in `opencode.json`, doctor integration, and install/selftest smoke coverage for provider switching and dependency diagnostics.
- [ ] Task 13.3: Integrate with wizard and docs
- [ ] Subtask 13.3.1: Add provider selection into install/reconfigure wizard
- [ ] Subtask 13.3.2: Document provider trade-offs and examples
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ install-test: ## Run installer smoke test in temp HOME
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/config_command.py" list; \
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/stack_profile_command.py" apply focus; \
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/stack_profile_command.py" status; \
if [ -f "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" ]; then HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" status --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile agent-browser; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" doctor --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile playwright; fi; \
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/nvim_integration_command.py" install minimal --link-init; \
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/nvim_integration_command.py" status; \
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/devtools_command.py" status; \
Expand Down
8 changes: 8 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ if [ -n "$REPO_REF" ]; then
fi

chmod +x "$INSTALL_DIR/scripts/mcp_command.py" "$INSTALL_DIR/scripts/plugin_command.py" "$INSTALL_DIR/scripts/notify_command.py" "$INSTALL_DIR/scripts/session_digest.py" "$INSTALL_DIR/scripts/opencode_session.sh" "$INSTALL_DIR/scripts/telemetry_command.py" "$INSTALL_DIR/scripts/post_session_command.py" "$INSTALL_DIR/scripts/policy_command.py" "$INSTALL_DIR/scripts/doctor_command.py" "$INSTALL_DIR/scripts/config_command.py" "$INSTALL_DIR/scripts/stack_profile_command.py" "$INSTALL_DIR/scripts/install_wizard.py" "$INSTALL_DIR/scripts/nvim_integration_command.py" "$INSTALL_DIR/scripts/devtools_command.py" "$INSTALL_DIR/scripts/background_task_manager.py" "$INSTALL_DIR/scripts/refactor_lite_command.py"
if [ -f "$INSTALL_DIR/scripts/browser_command.py" ]; then
chmod +x "$INSTALL_DIR/scripts/browser_command.py"
fi
ln -sfn "$INSTALL_DIR/opencode.json" "$CONFIG_PATH"

if [ "$RUN_WIZARD" = true ]; then
Expand Down Expand Up @@ -102,6 +105,8 @@ if [ "$SKIP_SELF_CHECK" = false ]; then
python3 "$INSTALL_DIR/scripts/refactor_lite_command.py" profile --scope "scripts/*.py" --dry-run --json
fi
python3 "$INSTALL_DIR/scripts/stack_profile_command.py" status
python3 "$INSTALL_DIR/scripts/browser_command.py" status
python3 "$INSTALL_DIR/scripts/browser_command.py" doctor --json
python3 "$INSTALL_DIR/scripts/nvim_integration_command.py" status
python3 "$INSTALL_DIR/scripts/devtools_command.py" status
python3 "$INSTALL_DIR/scripts/doctor_command.py" run || true
Expand Down Expand Up @@ -157,6 +162,9 @@ printf " /keyword-mode doctor --json\n"
printf " /rules status\n"
printf " /rules explain scripts/selftest.py --json\n"
printf " /stack apply focus\n"
printf " /browser status\n"
printf " /browser profile agent-browser\n"
printf " /browser doctor --json\n"
printf " /nvim status\n"
printf " /devtools status\n"
printf " /devtools install all\n"
Expand Down
16 changes: 16 additions & 0 deletions opencode.json
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,22 @@
"description": "Apply quiet-ci stack profile",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/stack_profile_command.py\" apply quiet-ci`\nShow only the command output."
},
"browser": {
"description": "Manage browser automation provider profile (status|profile|doctor)",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/browser_command.py\" $ARGUMENTS`\nShow only the command output."
},
"browser-status": {
"description": "Show active browser automation provider",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/browser_command.py\" status`\nShow only the command output."
},
"browser-profile": {
"description": "Switch browser provider profile",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/browser_command.py\" profile $ARGUMENTS`\nShow only the command output."
},
"browser-doctor-json": {
"description": "Run browser provider diagnostics in JSON",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/browser_command.py\" doctor --json`\nShow only the command output."
},
"nvim": {
"description": "Manage Neovim OpenCode integration (status|doctor|snippet|install|uninstall)",
"template": "!`python3 \"$HOME/.config/opencode/my_opencode/scripts/nvim_integration_command.py\" $ARGUMENTS`\nShow only the command output."
Expand Down
Loading