Files
headquarter/openspec/changes/opencode-web-terminal/tasks.md
T
Fusion ac6bd3304d feat(opencode-web-terminal): complete OpenCode web terminal implementation
- Update OpenCode compose template with web server on port 3000
- Add default_port=3000 and interfaces=[terminal, web] to OpenCode seed data
- Remove hardcoded 8080 fallback in tunnel creation
- Fail gracefully when tool type has no default_port configured
- Update frontend ToolType API to include default_port, category, interfaces
- Add port, category, and interfaces fields to tool type creation form
- Display port and interfaces in tool type cards
- Create migration 0012 to make default_port non-nullable
- Set default_port values for existing built-in tool types
- Quality gates: typecheck ✓, build ✓, Python syntax ✓
2026-05-20 17:17:50 +02:00

1.7 KiB

1. Tool Type Port Configuration

  • 1.1 Update ToolType model to make default_port required (non-nullable)
  • 1.2 Add validation in tool type API to reject missing default_port
  • 1.3 Add compose template validation to verify port is exposed in ports section
  • 1.4 Update tool type creation/update endpoints to validate port configuration

2. OpenCode Web Server

  • 2.1 Update OpenCode compose template to run a web server on port 3000
  • 2.2 Add default_port: 3000 to OpenCode seed data
  • 2.3 Update OpenCode interfaces to ["terminal", "web"]
  • 2.4 Create a simple web terminal HTML page served by OpenCode container

3. Tunnel Port Fix

  • 3.1 Update tunnel creation to use tool_type.default_port instead of hardcoded 8080
  • 3.2 Ensure tunnel creation fails gracefully if port is not defined
  • 3.3 Remove fallback to port 8080 in tunnel creation

4. Frontend Updates

  • 4.1 Update instance list to show both "Open" and "Terminal" buttons for dual-interface tools
  • 4.2 Update ToolType interface in frontend to include default_port
  • 4.3 Update tool type creation form to require port input

5. Database Migration

  • 5.1 Create Alembic migration to make default_port non-nullable
  • 5.2 Set default_port for existing tool types (code-server=8443, jupyter=8888, opencode=3000)

6. Testing & Quality Gates

  • 6.1 Test creating tool type without port fails validation
  • 6.2 Test creating tool type with port mismatch fails validation
  • 6.3 Test OpenCode instance creates tunnel on port 3000
  • 6.4 Run backend quality gates (ruff, mypy)
  • 6.5 Run frontend quality gates (typecheck, lint, build)
  • 6.6 Commit and push changes