EULA Plugin
The EULA plugin shows an End-User License Agreement on first login and blocks the rest of the app until the user accepts it. Acceptance is recorded per user and lasts until you bump the EULA version.
Configuration
plugins:
- module: "codumentor.plugins.eula"
class: "EulaPlugin"
Not enabled in the default shipped config; add the snippet above to turn it on.
Optional args
| Arg | Default | Description |
|---|---|---|
version | "v1" | Opaque string. Bump this to re-prompt every user (for example after the legal text changes). |
title | "End-User License Agreement" | Modal header text. |
content_path | "EULA.md" | Markdown file rendered inside the modal. Relative paths resolve against the plugin's own directory. Pass an absolute path (for example /etc/codumentor/eula.md) to ship deployment-specific text. |
priority | 10 | Lower = shown first when several blocking prompts are pending. The default keeps EULA in front of later notices. |
audience | unset | Who sees the EULA. When omitted, every authenticated user is prompted. When set, a user matches if they satisfy any listed filter: roles (role names), usernames, providers (auth providers). Set audience: {} to turn auto-prompting off (the modal then only appears if something else queues it — useful for tests). |
Example: deployment-specific EULA text
plugins:
- module: "codumentor.plugins.eula"
class: "EulaPlugin"
args:
version: "2026-q2"
title: "Acme Corp Terms of Service"
content_path: "/etc/codumentor/acme-eula.md"
audience:
roles: [user, power_user, admin]
What users see
On first login a modal covers the chat UI with the markdown from content_path. The rest of the app is not usable until they click I accept. After that the modal stays away until you change version.
Updating the EULA text
Edit the markdown file referenced by content_path (bundled default: EULA.md next to the plugin) and bump version in the plugin args. The version bump is what re-prompts users — markdown changes without a version bump will not be shown to anyone who has already accepted.