d17817ed76
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [docker.io/wekanteam/wekan](https://redirect.github.com/wekan/wekan) | minor | `bb5d0be` → `9b55511` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/18710) for more information. Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Release Notes <details> <summary>wekan/wekan (docker.io/wekanteam/wekan)</summary> ### [`v9.80`](https://redirect.github.com/wekan/wekan/blob/HEAD/CHANGELOG.md#v980-2026-07-06-WeKan--release) [Compare Source](https://redirect.github.com/wekan/wekan/compare/v9.79...v9.80) This release adds the following new features: - **[Admin Panel Domains table: pagination, column sort and search (like the Board Table view)](https://redirect.github.com/wekan/wekan/issues/5850)**: The Admin Panel > People > Domains table loaded every domain (aggregated from all users) into the browser at once, with a fixed order and no search. It now behaves like the Board Table view: the server aggregates the domains and returns only one small page, so the whole list is never sent to the browser. You can order by the Domain or Users column (click the header to toggle ascending / descending, with a ▲/▼ indicator) and filter with a search box; prev/next controls page through the results. The search + sort + slice runs in the new pure, unit-tested `models/lib/domainTablePage.js` behind a new `getDomainsWithUserCountsPage` admin method (`server/models/users.js`), and the `domainGeneral` template (`client/components/settings/peopleBody.{jade,js,css}`) is now self-contained and fetches only the current page. Covered by `tests/domainTablePage.test.cjs`. Thanks to xet7. and adds the following tests: - **[Verified and added a regression test for the board-invitation email language](https://redirect.github.com/wekan/wekan/commit/dfa6c78d4f032a698f6feaad189c86da903d27fb)**: Confirmed that a board-invitation email is localised in the existing recipient's own profile language, or — when the invitee is a new account created by the invite — in the inviter's profile language, defaulting to `en` (`en.i18n.json`) when none is set. The behaviour was already correct; the language choice is now extracted into the pure, unit-tested `models/lib/inviteEmailLanguage.js` used by `inviteUserToBoard`, and locked in by `tests/inviteEmailLanguage.test.cjs`. Thanks to xet7. and fixes the following bugs: - **[Linked-card minicard now shows the cover image of the real card](https://redirect.github.com/wekan/wekan/commit/9ef7f4a07a6b40a2582af24b27fe133119adcd18)**: A linked card (created by "Link card to this card") on one board did not show the cover image of the real card it points at on another board, even though the card's other fields did. A linked card is only a placeholder — its real content lives on the card at `linkedId` — and every other minicard getter resolves through the real card (`getTitle`/`getReceived`/`getDue`/…), but the cover helpers read `this.coverId` directly, and a linked card has no `coverId` of its own. The real card's cover attachment is already published to the linking board (see the "linked cards" / "attachments for linked cards" children of the `board` publication), so this was purely a client-side resolution gap. `Card.cover()` and the minicard `cover()` helper now resolve the cover id through the real card via the pure, unit-tested `models/lib/linkedCardCover.js`; normal cards are unaffected. Covered by `tests/linkedCardCover.test.cjs`. Thanks to 32Dexter and xet7. - **[Fix date-picker calendar stays fully visible when opened low on a scrolled page](https://redirect.github.com/wekan/wekan/commit/7a0eb61c0a4d3ace60f95cfbda7c1d70dff665ef)**: Opening a date field (due/start/end date, or a date custom field) low on the screen showed the calendar popup extending past the visible area, and — because the pop-over is `position: absolute` (document coordinates) — scrolling to reach it moved the calendar along with the page, so the full calendar could never be seen (the workaround was to close it, drag the field to the center and reopen). `Popup._getOffset` computed the space above/below the opener and the clamped `top` from the opener's DOCUMENT offset mixed with the VIEWPORT height, ignoring the page scroll, so on a scrolled page the anchored popup landed outside the visible viewport. The geometry now runs in viewport coordinates (subtracting the page scroll) and clamps the popup fully within the visible viewport, then converts back to document coordinates for the absolute style; when the page is not scrolled the output is unchanged. Extracted the math into the pure, unit-tested `client/lib/popupOffset.js`, used by `client/lib/popup.js`. Covered by `tests/popupOffset.test.cjs`. Thanks to MarcusDger and xet7. Thanks to above GitHub users for their contributions and translators for their translations. ### [`v9.79`](https://redirect.github.com/wekan/wekan/blob/HEAD/CHANGELOG.md#v979-2026-07-06-WeKan--release) [Compare Source](https://redirect.github.com/wekan/wekan/compare/v9.78...v9.79) This release fixes the following bugs: - **[Fix #​6439: Custom (drag order) sort on All Boards page now reorders via drag-and-drop](https://redirect.github.com/wekan/wekan/commit/f8e31745d8104c58dc7bbcb4c1e4c615141a8e82)**: On the All Boards page the jQuery-ui sortable that reordered boards in the "Custom (drag order)" mode was removed when the page switched to HTML5 drag-and-drop for workspaces, and nothing replaced it, so dragging a board showed a not-allowed cursor and never updated `profile.boardSortIndex`. Added HTML5 `dragover`/`drop` reorder handlers on the board tiles in `client/components/boards/boardsList.js` (active only in the custom sort mode), a `setBoardSortIndexes` helper in `models/users.js` to persist the new order in one write, a drop-hint style in `client/components/boards/boardsList.css`, and extracted the reorder decision/index math into the pure, unit-tested `models/lib/boardSortReorder.js`. Covered by `tests/boardSortReorder.test.cjs`. Thanks to jullbo and xet7. - **[Fix #​6440: '+' add-item button on minicard checklist does nothing](https://redirect.github.com/wekan/wekan/commit/dd90995db74593228d40bc504405620ec09c175d)**: On the minicard the checklist add-item `<form>` is rendered inside the `a.minicard-wrapper` anchor, so the native form `submit` event never reached the Blaze event map — the [#​5565](https://redirect.github.com/wekan/wekan/issues/5565) minicard-checklist work wired only a `submit .js-add-checklist-item` handler (which never fires there) and gave the Save button no click handler, so clicking "+" Save did nothing. Added an explicit `click .js-submit-add-checklist-item-form` handler in `client/components/cards/minicard.js` (mirroring the working edit-item button) that inserts the item, with the blank-input guard and title parsing extracted into the pure, Meteor-free `models/lib/checklistItemTitles.js`. Card-detail checklists are unaffected. Covered by `tests/checklistItemTitles.test.cjs`. Thanks to jullbo and xet7. - **[Fix #​6441: label filter now applies board-wide across all swimlanes](https://redirect.github.com/wekan/wekan/commit/9dca403782d476eb3c593fe614848ef02bb7f5a3)**: A label filter hid non-matching cards in one swimlane (e.g. "Focus") but left another swimlane (e.g. "Background") unfiltered. Each list scopes its cards to the current swimlane while also showing shared/orphaned cards that have no swimlane; that fallback was written as a bare top-level `$or`, which competes with the board Filter's own top-level `$or` (label/member criteria) when the two selectors are combined — dropping the label criterion in every swimlane except the default one. The swimlane-membership fallback is now a single `swimlaneId: { $in: [id, null, ''] }` clause (the same form already used in `sidebarFilters.js`, `cardDetails.js` and `dialogWithBoardSwimlaneList.js`), extracted to the pure, unit-tested `models/lib/swimlaneFilter.js` and used by `client/components/lists/listBody.js` and `models/lists.js`, so no second `$or` exists and the filter is always `$and`-combined and applied board-wide. Covered by `tests/swimlaneFilter.test.cjs`. Thanks to jullbo and xet7. - **[Fix flaky server-side Mocha test (i18n zh-CN "is not a spy")](https://redirect.github.com/wekan/wekan/commit/fc4eadedc9109602ee029b60c44eeda869aa98c3)**: The server-side Mocha suite intermittently reported "1 failing" on the [#​5756](https://redirect.github.com/wekan/wekan/issues/5756) `imports/i18n/i18n.test.js` region-tag test with `TypeError: [Function] is not a spy`. The assertion re-read `TAPi18n.i18n.addResourceBundle`, and the sinon-chai matcher (routed through chai-as-promised) could evaluate after this suite's `afterEach` had already run `sinon.restore()` — at which point the property is the original function, not the stub. The `.loadLanguage` tests now assert on the captured stub reference (restore unwraps the property but leaves the spy intact), which is deterministic. Reproduced and verified with a standalone sinon/chai script. Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC93ZWthbiIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->
160 lines
6.0 KiB
YAML
160 lines
6.0 KiB
YAML
# yaml-language-server: $schema=./values.schema.json
|
|
image:
|
|
repository: docker.io/wekanteam/wekan
|
|
tag: v9.80@sha256:9b555117e1a5f89f613b4010f9fd71804cdb4bc1d6e864bc552bce5be7208b38
|
|
pullPolicy: IfNotPresent
|
|
service:
|
|
main:
|
|
ports:
|
|
main:
|
|
port: 10192
|
|
targetPort: 8080
|
|
mongodb:
|
|
enabled: true
|
|
mongodbUsername: wekan
|
|
mongodbDatabase: wekan
|
|
persistence:
|
|
data:
|
|
enabled: true
|
|
mountPath: "/data"
|
|
|
|
workload:
|
|
main:
|
|
podSpec:
|
|
containers:
|
|
main:
|
|
env:
|
|
WRITABLE_PATH: "/data"
|
|
# User Defined
|
|
ROOT_URL: "http://localhost:8080"
|
|
# BROWSER_POLICY_ENABLED: false
|
|
# TRUSTED_URL: ""
|
|
# LOGOUT_WITH_TIMER: false
|
|
# LOGOUT_IN: 0
|
|
# LOGOUT_ON_HOURS: 0
|
|
# LOGOUT_ON_MINUTES: 0
|
|
# ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS: 90
|
|
# ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE: 3
|
|
# ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD: 60
|
|
# ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW: 15
|
|
# ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE: 3
|
|
# ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD: 60
|
|
# ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW: 15
|
|
# MAX_IMAGE_PIXEL: 1024
|
|
# IMAGE_COMPRESS_RATIO: 80
|
|
# MAIL_URL: ""
|
|
# MAIL_SERVICE_USER: ""
|
|
# MAIL_SERVICE_PASSWORD: ""
|
|
# MAIL_SERVICE: ""
|
|
# MAIL_FROM: ""
|
|
# BIGEVENTS_PATTERN: "NONE"
|
|
# NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE: 90
|
|
# EMAIL_NOTIFICATION_TIMEOUT: 30000
|
|
# NOTIFY_DUE_DAYS_BEFORE_AND_AFTER: "2,0"
|
|
# NOTIFY_DUE_AT_HOUR_OF_DAY: 8
|
|
# RESULTS_PER_PAGE: 20
|
|
# RICHER_CARD_COMMENT_EDITOR: false
|
|
# CARD_OPENED_WEBHOOK_ENABLED: false
|
|
# PASSWORD_LOGIN_ENABLED: false
|
|
# WAIT_SPINNER: "Bounce"
|
|
# WITH_API: true
|
|
# WEBHOOKS_ATTRIBUTES: "cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue"
|
|
# CORS: "*"
|
|
# CORS_ALLOW_HEADERS: "Authorization,Content-Type"
|
|
# CORS_EXPOSE_HEADERS: "*"
|
|
# MATOMO_ADDRESS: ""
|
|
# MATOMO_SITE_ID: 1
|
|
# MATOMO_DO_NOT_TRACK: true
|
|
# MATOMO_WITH_USERNAME: true
|
|
# ORACLE_OIM_ENABLED: false
|
|
# OAUTH2_ENABLED: false
|
|
# OAUTH2_LOGIN_STYLE: "redirect"
|
|
# OAUTH2_CLIENT_ID: ""
|
|
# OAUTH2_SECRET: ""
|
|
# OAUTH2_SERVER_URL: ""
|
|
# OAUTH2_AUTH_ENDPOINT: ""
|
|
# OAUTH2_USERINFO_ENDPOINT: ""
|
|
# OAUTH2_TOKEN_ENDPOINT: ""
|
|
# OAUTH2_ID_MAP: ""
|
|
# OAUTH2_USERNAME_MAP: ""
|
|
# OAUTH2_FULLNAME_MAP: ""
|
|
# OAUTH2_EMAIL_MAP: ""
|
|
# OAUTH2_ID_TOKEN_WHITELIST_FIELDS: ""
|
|
# OAUTH2_REQUEST_PERMISSIONS: ""
|
|
# OAUTH2_CA_CERT: ""
|
|
# OAUTH2_ADFS_ENABLED: false
|
|
# LDAP_ENABLE: false
|
|
# DEFAULT_AUTHENTICATION_METHOD: "ldap"
|
|
# LDAP_PORT: 389
|
|
# LDAP_HOST: ""
|
|
# LDAP_AD_SIMPLE_AUTH: false
|
|
# LDAP_USER_AUTHENTICATION: false
|
|
# LDAP_USER_AUTHENTICATION_FIELD: "uid"
|
|
# LDAP_DEFAULT_DOMAIN: ""
|
|
# LDAP_BASEDN: ""
|
|
# LDAP_LOGIN_FALLBACK: false
|
|
# LDAP_RECONNECT: true
|
|
# LDAP_TIMEOUT: 10000
|
|
# LDAP_IDLE_TIMEOUT: 10000
|
|
# LDAP_CONNECT_TIMEOUT: 10000
|
|
# LDAP_AUTHENTIFICATION: true
|
|
# LDAP_AUTHENTIFICATION_USERDN: ""
|
|
# LDAP_AUTHENTIFICATION_PASSWORD: ""
|
|
# LDAP_LOG_ENABLED: true
|
|
# LDAP_BACKGROUND_SYNC: true
|
|
# LDAP_BACKGROUND_SYNC_INTERVAL: "every 1 hour"
|
|
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED: false
|
|
# LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS: false
|
|
# LDAP_ENCRYPTION: "false"
|
|
# LDAP_CA_CERT: ""
|
|
# LDAP_REJECT_UNAUTHORIZED: false
|
|
# LDAP_USER_SEARCH_FILTER: ""
|
|
# LDAP_USER_SEARCH_SCOPE: "one"
|
|
# LDAP_USER_SEARCH_FIELD: ""
|
|
# LDAP_SEARCH_PAGE_SIZE: 0
|
|
# LDAP_SEARCH_SIZE_LIMIT: 0
|
|
# LDAP_GROUP_FILTER_ENABLE: false
|
|
# LDAP_GROUP_FILTER_OBJECTCLASS: ""
|
|
# LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE: ""
|
|
# LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE: ""
|
|
# LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT: ""
|
|
# LDAP_GROUP_FILTER_GROUP_NAME: ""
|
|
# LDAP_UNIQUE_IDENTIFIER_FIELD: ""
|
|
# LDAP_UTF8_NAMES_SLUGIFY: true
|
|
# LDAP_USERNAME_FIELD: ""
|
|
# LDAP_FULLNAME_FIELD: "fullname"
|
|
# LDAP_MERGE_EXISTING_USERS: false
|
|
# LDAP_EMAIL_MATCH_ENABLE: true
|
|
# LDAP_EMAIL_MATCH_REQUIRE: true
|
|
# LDAP_EMAIL_MATCH_VERIFIED: true
|
|
# LDAP_EMAIL_FIELD: "mail"
|
|
# LDAP_SYNC_USER_DATA: false
|
|
# LDAP_SYNC_USER_DATA_FIELDMAP: ""
|
|
# LDAP_SYNC_GROUP_ROLES: ""
|
|
# LDAP_SYNC_ADMIN_STATUS: true
|
|
# LDAP_SYNC_ADMIN_GROUPS: ""
|
|
# HEADER_LOGIN_ID: ""
|
|
# HEADER_LOGIN_FIRSTNAME: ""
|
|
# HEADER_LOGIN_LASTNAME: ""
|
|
# HEADER_LOGIN_EMAIL: ""
|
|
# CAS_ENABLED: false
|
|
# CAS_BASE_URL: ""
|
|
# CAS_LOGIN_URL: ""
|
|
# CAS_VALIDATE_URL: ""
|
|
# SAML_ENABLED: false
|
|
# SAML_PROVIDER: ""
|
|
# SAML_ENTRYPOINT: ""
|
|
# SAML_ISSUER: ""
|
|
# SAML_CERT: ""
|
|
# SAML_IDPSLO_REDIRECTURL: ""
|
|
# SAML_PRIVATE_KEYFILE: ""
|
|
# SAML_PUBLIC_CERTFILE: ""
|
|
# SAML_IDENTIFIER_FORMAT: ""
|
|
# SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE: ""
|
|
# SAML_ATTRIBUTES: ""
|
|
MONGO_URL:
|
|
secretKeyRef:
|
|
expandObjectName: false
|
|
name: '{{ printf "%s-%s" .Release.Name "mongodbcreds" }}'
|
|
key: url
|