Skip to content

Teams feature + migrations overhaul#140

Merged
gluk-w merged 7 commits into
mainfrom
teams
May 13, 2026
Merged

Teams feature + migrations overhaul#140
gluk-w merged 7 commits into
mainfrom
teams

Conversation

@gluk-w
Copy link
Copy Markdown
Owner

@gluk-w gluk-w commented May 13, 2026

Teams feature

  • New team-scoped data model (Team, TeamMember, TeamProvider) with instances, shared folders, backup schedules, and LLM providers associated to teams
  • Team-based authorization enforced on all relevant API handlers
  • Frontend: TeamSelector and InstanceTeamPicker, Teams/Members/Providers settings tabs, team-aware queries across pages
  • Backend availability UX: orchestrator watcher hook, OrchestratorDownToast, BackendUnavailablePage, shared utils/http helper
  • Misc UI polish across Backups, SharedFolders, Skills, Login, Settings, Sidebar, Layout, Usage; agent/browser Dockerfile updates and helm/CI tweaks

Migrations overhaul

  • Migrations moved to control-plane/internal/database/migrations/ Go subpackage with a registry + WithMigrator helper
  • Models moved to control-plane/internal/database/models/; database package re-exports via type aliases for backward compat
  • AutoMigrateAll runs on every boot in RunMigrations; goose migrations are reserved for data backfills and non-additive schema changes
  • New versioned Go migrations: v1 baseline, v2 noop, v3 create teams, v4 seed default team + backfill, v5 add team_ids to shared_folders/backup_schedules, v6 rename images
  • goose.WithAllowMissing() so dev DBs that ran intermediate branch states boot cleanly
  • New cmd/migrationcheck drift binary plus make migration / make migration-check targets
  • New migration-author Claude Code subagent and docs/migrations.md spec

Stan Misiurev and others added 7 commits May 13, 2026 16:31
- Split Settings into API Keys / Environment / Teams / Misc tabs
- Move team management into Settings; remove standalone Teams page
- TeamSelector shows per-team instance count + admin Manage shortcut
- ListTeams returns member_count and instance_count

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Move migrations to `control-plane/internal/database/migrations/` Go subpackage with a registry + `WithMigrator` helper
- Move models to `control-plane/internal/database/models/`; `database` package re-exports via type aliases for backward compat
- `AutoMigrateAll` now runs on every boot in `RunMigrations`; goose migrations are reserved for data backfills and non-additive schema changes
- New versioned Go migrations: v1 baseline no-op, v2 noop placeholder, v3 create teams tables, v4 seed default team + backfill, v5 add team_ids columns to shared_folders/backup_schedules, v6 rename images
- Set `goose.WithAllowMissing()` so dev DBs that ran intermediate branch states boot cleanly
- Add `cmd/migrationcheck` drift binary and `make migration` / `make migration-check` targets
- Add `migration-author` Claude Code subagent and `docs/migrations.md` spec
- Drop obsolete SQL migration files and the `.keep` placeholder
- Team-scoped data model and authorization: instances, shared folders, backup schedules, and LLM providers are now associated with teams; handlers enforce team membership on all relevant routes
- Frontend: TeamSelector + InstanceTeamPicker, Teams/Members/Providers settings tabs, team-aware queries across pages
- Backend unavailable handling: orchestrator watcher hook, OrchestratorDownToast, BackendUnavailablePage, and shared `utils/http` helper
- Browser image and agent Dockerfile updates (rename to `claworc/<browser>-browser`), helm chart and CI workflow tweaks
- Misc UI polish on Backups, SharedFolders, Skills, Login, Settings, Sidebar, Layout, and Usage pages
Create-instance API now requires team_id; tests were posting without it
and failing with 400 "team_id is required". Use the seeded default team
(id=1) in all integration test instance creation calls.
`GET /api/v1/backups` now returns `{backups, total, limit, offset}` rather
than a flat array; update the test to decode the new envelope.
@@ -1,9 +1,10 @@
import { useState, useMemo, type FormEvent } from "react";
import { useEffect, useState, useMemo, type FormEvent } from "react";
@@ -1,5 +1,9 @@
import { useState } from "react";
@gluk-w gluk-w merged commit 27da17f into main May 13, 2026
16 checks passed
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.

2 participants