Changeset 0.8.4 (#47)
This commit is contained in:
49
ROADMAP.md
49
ROADMAP.md
@@ -187,6 +187,55 @@ Required for enterprise and compliance. Cheap to build, expensive to retrofit.
|
||||
- [x] Admin audit viewer (filter by action, resource type, paginated)
|
||||
- [ ] Team admin sees audit entries scoped to their team
|
||||
|
||||
**Model Visibility (0.8.3)**
|
||||
- [x] Three-state visibility: enabled (all users) / team (preset-building only) / disabled
|
||||
- [x] Migration replaces `is_enabled` boolean with `visibility` varchar
|
||||
- [x] Admin model list: 3-state cycle button, bulk set all to any state
|
||||
- [x] `GET /teams/:teamId/models` returns enabled+team models for preset builders
|
||||
- [x] User-facing `ListEnabledModels` strictly filters `visibility = 'enabled'`
|
||||
|
||||
**Preset Form Unification + UX (0.8.4)**
|
||||
- [x] Single `renderPresetForm(options)` function shared across admin/team contexts
|
||||
— parameterized: showAvatar, showProviderConfig, onSubmit, onCancel
|
||||
- [x] Remove icon field from preset forms (not rendered anywhere meaningful)
|
||||
- [x] Team admin preset form includes avatar upload (reuse admin component)
|
||||
- [x] Hide Providers tab in Settings when `user_providers_enabled` is false
|
||||
- [x] Settings Models tab: only show `visibility='enabled'` base models
|
||||
(team-only models must not leak to user model list; presets filtered out)
|
||||
- [x] Model provenance labels: badge indicating global vs personal source
|
||||
— same model_id from both sources shown separately (different API keys)
|
||||
- [x] Admin presets list: show created_by name + team name for attribution
|
||||
(e.g. "Code Reviewer · 👥 Engineering · by sarah")
|
||||
|
||||
**User Presets + Model Filtering (0.8.5)**
|
||||
- [ ] Users can create personal presets from any enabled base model
|
||||
(backend `CreateUserPreset` exists, needs UI surface in Settings)
|
||||
- [ ] Settings Models tab reworked as "My Models": toggle to hide/show
|
||||
base models from selector, "+ Create Preset" action per model row
|
||||
- [ ] `user_model_preferences` table: user_id, model_config_id, hidden boolean
|
||||
— lightweight filter, not access control
|
||||
- [ ] User personal provider models: simple enable/disable toggle
|
||||
(no team dimension — personal keys are personal)
|
||||
|
||||
**Team Providers (0.8.6+)**
|
||||
- [ ] `team_id` column on `api_configs` (nullable, symmetric with `user_id`)
|
||||
- [ ] Team admins manage team-scoped provider configs
|
||||
(add/remove API keys, toggle active, same UI as personal providers)
|
||||
- [ ] `allow_team_providers` flag in `teams.settings` JSONB
|
||||
— admin controls which teams can add their own API keys
|
||||
- [ ] Team provider models use same 3-state visibility: enabled/disabled/team
|
||||
— enabled: team members see in model selector (direct use)
|
||||
— team: team admin can use for presets only (not direct member access)
|
||||
— disabled: hidden from everyone
|
||||
Same cycle button, same bulk actions, scoped to team admin panel
|
||||
- [ ] `ListEnabledModels` adds section: team provider models where
|
||||
`visibility = 'enabled'` AND user is member of owning team
|
||||
- [ ] Team preset builder shows team provider models where
|
||||
`visibility IN ('enabled', 'team')` AND user is admin of owning team
|
||||
- [ ] Three-tier provider hierarchy with uniform visibility semantics:
|
||||
global (sys-admin) → team (team-admin) → personal (user)
|
||||
- [ ] Model provenance badges: global / team:TeamName / personal
|
||||
|
||||
**Usage / Cost Tracking**
|
||||
- [ ] Capture from provider responses: prompt_tokens, completion_tokens,
|
||||
cache_creation_tokens, cache_read_tokens
|
||||
|
||||
Reference in New Issue
Block a user