vikunja/pkg/routes
Claude 25c6c6750a
feat: per-user pro feature toggles
Licensed features can now be granted or revoked per user instead of
applying instance-wide. Resolution is layered: the instance license must
include the feature, then a per-user override, an admin-set instance
default and the built-in code default are consulted in that order.
Time tracking is the first per-user toggleable feature; admin_panel and
audit_logs stay instance-wide. New features opt in via the
perUserToggleable map in pkg/license.

- store per-user overrides in a json column on users, instance defaults
  in the new pro_feature_instance_defaults table
- enforce the toggle in the v2 time-entries route gate and in the
  TimeEntry permission chokepoint for non-route callers
- new admin v2 endpoints to manage instance defaults and per-user
  overrides
- expose effective_pro_features on /api/v1/user; the frontend prefers it
  over /info's instance-wide list once the user is loaded
- admin UI: per-user toggles on the user detail modal, instance defaults
  on the admin overview

https://claude.ai/code/session_01AVt4FHWrUUhv5p6yn99pdp
2026-06-09 19:46:32 +00:00
..
api feat: per-user pro feature toggles 2026-06-09 19:46:32 +00:00
caldav fix(caldav): return 404 when trying to access a project that cannot exist with CalDAV (#2796) 2026-05-28 08:14:52 +02:00
feeds feat: add Atom feed for user notifications with API token auth (#2758) 2026-05-15 17:25:09 +02:00
middleware test(middleware): lock in array-param order preservation 2026-05-31 12:56:57 +00:00
admin_gate.go feat(middleware): add RequireFeature and RequireSiteAdmin 404 gates 2026-04-20 18:55:06 +00:00
api_tokens.go feat(api/v2): port Label to per-operation Huma handlers 2026-05-31 12:56:57 +00:00
error_handler.go fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
feature_gate.go feat(middleware): add RequireFeature and RequireSiteAdmin 404 gates 2026-04-20 18:55:06 +00:00
healthcheck.go fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
metrics.go refactor(metrics): count entities on demand with a TTL cache 2026-05-30 13:48:01 +00:00
rate_limit.go fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
resolve_project.go fix(api): uppercase project identifier before by-index lookup 2026-05-19 08:53:25 +00:00
routes.go refactor(api/v2): self-register resource routes via init() registry 2026-06-03 13:14:13 +00:00
sentry_middleware.go fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
static.go fix: respect allow_icon_changes config on web and desktop 2026-06-01 09:40:37 +00:00
validation.go fix(attachments): extend upload file size to form data (#1577) 2025-09-30 22:23:07 +00:00