Skip to content

feat(ui): licence card shows which features are only enabled automatically - #265

Merged
CallMeTechie merged 1 commit into
masterfrom
feat/license-feature-source
Oct 6, 2026
Merged

CallMeTechie merged 1 commit into
masterfrom
feat/license-feature-source

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Problem

On paid plans every boolean feature that the licence token does not name counts as included (planDefaults, docs/feature-next-package.md §S2.3). The licence card under Settings → Lizenz showed these exactly like features the licence grants. An admin had no way to see that, for example, device binding (machine_binding) only worked because of this rule.

Change

  • res.locals.license now carries sources (from the existing featureSources()) and derived_count.
  • Licence card:
    • features that are only derived read "enthalten (automatisch)" / "included (automatic)", in amber with a dashed outline and a tooltip;
    • a note above the list says how many there are and explains the rule;
    • features the licence names, limits, and the community mode look the same as before.
  • The plan header showed "Running in Community mode" on paid plans, and never showed the expiry date or activations, because the middleware did not pass them. Both are fixed; the date is formatted per language.

Tests

tests/license_feature_source_ui.test.js covers four cases:

  • a derived feature is marked and a granted one is not;
  • a token that names every feature shows no marker;
  • community mode shows no marker;
  • the plan header on a paid plan, including the date.

The licence, settings and i18n tests pass (93).

🤖 Generated with Claude Code

https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD


Generated by Claude Code

…cally

On paid plans every boolean feature the licence token does not name counts
as included (planDefaults). The licence card showed those exactly like
features the licence grants, so an admin could not tell why e.g. device
binding worked without being licensed. They are now marked
"enthalten (automatisch)" in amber with a dashed outline, and a note above
the list counts them.

Also: the plan header no longer says "Community mode" on a paid plan, and
shows the expiry date and activations it never received before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
@CallMeTechie
CallMeTechie merged commit 8c8d3e1 into master Oct 6, 2026
10 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