mirror of
https://github.com/wekan/wekan.git
synced 2026-11-07 02:52:33 -05:00
An audit of every environment variable the code reads found 30 that are new since v12.00. Eleven were already Admin Panel settings and on every platform the release workflows build. Of the rest: Now Admin Panel settings, through models/lib/authConfigCatalog.js (a value there wins, an empty field falls back to the variable): - Email to card limits, beside its own Admin Panel settings: INBOUND_IMAP_POLL_SECONDS, INBOUND_EMAIL_PER_ADDRESS_PER_HOUR, INBOUND_EMAIL_MAX_BYTES, INBOUND_EMAIL_MAX_ATTACHMENT_BYTES and EMAIL_VIEW_SENDS_PER_HOUR. They were module-level constants, read before the Admin Panel values loaded; they are read when used now. createRateLimiter takes a limit function, and a changed poll interval restarts the IMAP poller. - ACCOUNTS_COOKIE_REFRESH_RATE_LIMIT in People / Login, like the login expiry beside it, applied from the next start. - Windows SSO (WINDOWS_SSO_ENABLED, _DOMAINS, _ACTIVE_DIRECTORY, _MERGE_EXISTING_USERS) in People / Login. It was already read through authEnv but had no form. Being Windows-only, its catalog section names start-wekan.bat as its one platform. Listed on every platform (Dockerfile, the docker-compose files, start-wekan.sh and .bat, the snap config and help), where none of these had been: the variables above, INBOUND_EMAIL_WEBHOOK_SECRET (its own Admin Panel page already has it), and the per-process switches that stay environment only - INBOUND_IMAP_DISABLED (one pod of a multi-pod deployment), WEKAN_DISK_MONITOR, WEKAN_DISK_WATCH_PATHS, WEKAN_RAM_MONITOR and WEKAN_IMPORT_RUN_STALE_MS. Left unlisted on purpose: NEXTCLOUD_EXAPP, NEXTCLOUD_URL and WEKAN_NEXTCLOUD_PROXY_KEY (set by Nextcloud's AppAPI), SANDSTORM_MAILDIR (set by Sandstorm). DEFAULT_AVATAR_URL keeps no Admin Panel UI, as decided in #824. tests/envVarCoverage.test.cjs keeps it so. It fails for a variable that is in no Admin Panel catalog, OWN_PANE or ENV_ONLY with its reason; the variables read before v12.00 are a frozen LEGACY list that can only shrink. An environment-only or own-page setting a user sets must be on every platform, and stale entries fail. tests/authConfigCatalog.test.cjs honours a section's platform list. tests/adminPanelNewSettings.test.cjs pins the reads and the forms. tests/cookieRefreshRateLimit.test.cjs's guard now expects the Admin Panel value, and says why. tests/playwright/specs/admin-new-env-settings.e2e.js opens the forms. Thanks to xet7 !