This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/CHANGELOG.md
Jeffrey Smith e8e45184f7
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 5s
CI/CD / test-go-pg (pull_request) Successful in 2m12s
CI/CD / test-sqlite (pull_request) Successful in 2m45s
CI/CD / build-and-deploy (pull_request) Successful in 1m18s
remove token budgets + allowed models from groups
Provider-era cruft: token_budget_daily, token_budget_monthly, and
allowed_models columns removed from groups table (both dialects).
ResolveTokenBudget() and ResolveModelAllowlist() deleted. GroupPatch
trimmed to name/description/permissions. Admin groups UI simplified
to permissions-only. -283 lines.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:53:18 +00:00

117 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
All notable changes to Switchboard Core are documented here.
## [Unreleased] — v0.2.0
### Added
- **Admin → RBAC group migration**: `surface.admin.access` permission replaces
hardcoded `role == "admin"` checks. Seeded "Admins" system group carries all
platform permissions. Admin middleware now resolves grants through the standard
permission system — no special-casing. Any group can grant `surface.admin.access`.
- `AdminsGroupID` constant (`00000000-0000-0000-0000-000000000002`)
- `SyncAdminsGroupMembership()` — shared helper used by bootstrap, seed, OIDC,
and admin handlers to keep group membership in sync with role changes
- `SeedAdminsGroupMember()` test helper
- System groups re-seeded after `TruncateAll` in test helper
### Changed
- `RequireAdmin()` / `RequireAdminPage()` now accept `store.Stores` and check
`surface.admin.access` grant instead of `role == "admin"`
- `RequirePermission()` no longer bypasses checks for admin role — admins get
permissions through group membership like everyone else
- Bootstrap/seed/OIDC login all add admin users to Admins group
- Admin create/update/delete handlers sync Admins group membership on role change
- Demotion/deletion safeguards count Admins group members instead of `CountByRole`
- Kernel permissions: 6 → 7 (added `surface.admin.access`)
### Removed
- **Token budgets** from groups: `token_budget_daily`, `token_budget_monthly`
columns, `ResolveTokenBudget()`, and all store/handler/UI code. Provider-era
cruft — token budgets belong in a future provider extension, not the kernel.
- **Allowed models** from groups: `allowed_models` column,
`ResolveModelAllowlist()`, `toggleModel` UI. Same rationale.
- `GroupPatch` fields: `ClearBudgetDaily`, `ClearBudgetMonthly`,
`ClearAllowedModels` — no longer needed
- Admin groups UI: Token Budgets section, Allowed Models section, models API call
### Migration notes
- 002_teams.sql (both dialects): added Admins group seed, removed
`token_budget_daily`, `token_budget_monthly`, `allowed_models` columns
- No new migration files — edited in place per pre-MVP policy
---
## [v0.1.0] — 2026-03-26
Forked from chat-switchboard v0.38.5. Gutted to a pure extension platform.
### Removed
- **AI/Chat system**: providers, model catalog, routing policies, personas,
channels, messages, completion streaming, tool loop, compaction, memory,
knowledge bases, notes, workspaces, projects, folders, files, export/import
- **Task scheduler**: entire scheduler package, task store, task handlers.
Tasks will be rebuilt as a Starlark extension with three trigger primitives
(time, webhook, event)
- **Session system**: channel-based anonymous sessions. Workflow instances
will get new storage in v0.2.0
- **Health accumulator**: provider health windows, tool health tracking.
Replaced with kernel-only Prune (ws_tickets, rate_limit_counters, presence)
- **15 Go packages**: tools, compaction, extraction, roles, mentions,
notelinks, export, memory, knowledge, providers, routing, capabilities,
filters, retention, workspace
- **29 handler files**, 6 test files, ~44K lines total
### Fixed
- CI deploy: k8s resource quantity vars (`BE_MEMORY_REQUEST``MEMORY_REQUEST`)
aligned with CI workflow outputs — `envsubst` was producing empty strings
- CI deploy: image var (`BE_IMAGE``IMAGE`) — caused `InvalidImageName` in pods
- CI rollout: deployment name (`switchboard``switchboard-be`) — rollout
verification was looking for wrong deployment name
- Nginx BASE_PATH: regex cache-header locations intercepted static asset
requests before alias could strip the sub-path prefix — moved inside alias block
- Post-login blank page: dead Go template references (`surface-chat`,
`surface-notes`, `surface-projects`) caused html/template to silently
produce Content-Length: 0 responses
- Login branding: "Chat Switchboard" → "Switchboard Core", updated tagline
and feature pills to reflect platform pivot
### Changed
- Module renamed: `chat-switchboard``switchboard-core`
- VERSION: `0.1.0`
- Default DB name: `switchboard_core`
- Fresh migrations: 9 files × 2 dialects (postgres + sqlite), 27 tables
- Store interfaces: 40 → 20 (13 in interfaces.go + 7 in separate iface files)
- Stage modes: `chat_only` removed, `custom` added
- Task output modes: `channel|note|webhook``notification|webhook|log`
- Kernel permissions: 16 → 6 (`extension.use`, `extension.install`,
`workflow.create`, `workflow.submit`, `admin.view`, `token.unlimited`)
- Everyone group seed: `["extension.use","workflow.submit"]`
- Global settings seed: site name "Switchboard Core"
- Config: removed 7 dropped fields (SessionExpiryDays, WorkflowStaleHours,
ProviderAutoDisableThreshold, ExtractionConcurrency, etc.)
- Health stores rewritten: kernel-only Prune for stale tickets, counters, presence
- Maintenance goroutine replaces scheduler for background cleanup
### Retained
- Identity & auth (builtin, mTLS, OIDC)
- Teams, groups, permissions
- Package system (surfaces, extensions, libraries, workflows)
- Starlark sandbox with capability-gated modules
- Extension connections & dependencies
- Workflow definitions, stages, versions
- Notifications & preferences
- Audit log
- Object storage (PVC, S3)
- WebSocket hub & presence
- Multi-replica HA (ws_tickets, rate_limit_counters)
- Frontend shell (preact+htm, SDK, vendor libs)