Skip to content

feat: web UI for openstation#1

Open
leonprou wants to merge 9 commits intomainfrom
feat/web-ui
Open

feat: web UI for openstation#1
leonprou wants to merge 9 commits intomainfrom
feat/web-ui

Conversation

@leonprou
Copy link
Copy Markdown
Owner

Summary

  • FastAPI backend (src/openstation/server.py) wrapping existing core modules with REST API endpoints: task list/detail/create/status-transition, agent list/detail
  • Static SPA frontend (src/openstation/web/) — vanilla JS with kanban board, task detail with markdown rendering, task creation form, agent list
  • CLI serve commandopenstation serve [--port 8080] [--host 0.0.0.0] starts uvicorn serving both API and frontend
  • fastapi and uvicorn added as optional deps under [project.optional-dependencies] web

Test plan

  • All API endpoints tested with FastAPI TestClient (tasks CRUD, agents, static files)
  • Existing test suite passes (pre-existing init test failures unrelated)
  • CLI openstation serve --help works
  • Manual: pip install -e '.[web]' && openstation serve — verify board loads at http://localhost:8080

🤖 Generated with Claude Code

Co-Authored-By: Paperclip noreply@paperclip.ing

leonprou and others added 9 commits March 19, 2026 21:56
Spec the .openstation-only convention: drop dual-path prefix, define vault_path helper, migration checklist for all modules
Research shared artifacts across worktrees; recommended runtime resolution in find_root()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove prefix parameter, add vault_path() helper, simplify find_root() to return single root path with .openstation/ hardcoded
… from all signatures

Drop the dual-path vault detection (root-level source repo vs .openstation/).
All vault files now live under .openstation/ with a single code path.

- Remove `prefix` parameter from remaining run.py functions (cmd_run,
  cmd_agents_list, cmd_agents_show, _find_agent_artifact, _agent_not_found)
- Replace all `if prefix:` path branching with core.vault_path()
- Remove source-guard check from init.py (agents/ + install.sh detection)
- Update all 7 test files: vault fixtures use .openstation/ + git init,
  remove source-repo test cases, fix hardcoded path references
- Remove stale .specify/ and content artifacts

All 416 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The zipapp used importlib.metadata which has no package metadata,
so --version always showed "dev". Now generates _version.py at
build time and falls back to importlib.metadata for pip installs.
Also bumps install.sh OPENSTATION_VERSION to v0.11.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The 0173 convention moved commands/, skills/, docs/, templates/,
and agents/ under .openstation/ in the source repo, but init.py
still referenced the old root-level paths — breaking `os init`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded INIT_DOCS, INIT_SKILLS, and INIT_DEFAULT_AGENTS
with _discover_docs(), _discover_skills(), and _discover_templates()
so new files are picked up automatically without editing init.py.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…erve command

- FastAPI server (server.py) wrapping existing core modules with REST API endpoints
  for tasks (list, detail, create, status transition) and agents (list, detail)
- Static SPA frontend (vanilla JS) with kanban board, task detail view,
  task creation form, and agent list
- CLI `openstation serve [--port 8080] [--host 0.0.0.0]` subcommand
- fastapi and uvicorn as optional deps under [web] extra

Co-Authored-By: Paperclip <noreply@paperclip.ing>
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