The Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . New English strings for new features at imports/i18n/data/en.i18n.json . Non-English translations at https://app.transifex.com/wekan/wekan only.
This report presents the forensic synthetic code analysis of wekan/wekan, a JavaScript project with 20,994 GitHub stars. SynthScan v2.0 examined 718,289 lines of code across 1585 source files, recording 1198 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 3.1 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1198 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 107 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 110 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 119 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 124 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 198 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 201 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 205 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 212 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 222 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 227 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 231 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 239 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 243 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 248 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 253 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 258 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 263 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 297 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 301 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 309 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 320 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 328 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 332 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 336 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 339 | #--------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 350 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 353 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 733 | #------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 736 | #------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-ferretdb-v2-postgresql.yml | 741 | #--------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 52 | #------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 70 | #------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 82 | #------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 88 | #------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 137 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 153 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 159 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 174 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 182 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 279 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 284 | #--------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 399 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 426 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 443 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 477 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 497 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 531 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 537 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 664 | #----------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 697 | #--------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 716 | #--------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 753 | #--------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-ferretdb-v2-postgresql.yml | 756 | #--------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 9 | #--------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 11 | #--------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 14 | #--------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 17 | #--------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 29 | #---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 37 | #---------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-mongodb-v7.yml | 45 | # ---------------------------------------------------------------------------------- | COMMENT |
| 439 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | find.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 1 | # WeKan with FerretDB 2 + PostgreSQL (DocumentDB extension) | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 61 | # b) GitHub Container registry. | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 81 | - wekan-tier | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 101 | # Keep oplog/polling fallback available for deployments that cannot use Change Streams: | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 121 | #- MONGO_URL=mongodb://wekan-ferretdb:27017/wekan | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 141 | # see https://github.com/wekan/wekan/blob/main/docs/Email/Troubleshooting-Mail.md | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 161 | # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587 | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 181 | #- APM_APP_SECRET= | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 201 | #--------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 221 | #- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 241 | # https://github.com/wekan/wekan/issues/2518 | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 261 | # Default: 2 | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 281 | # Notify the user directly when they are added as a card member or | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 301 | #----------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 321 | # ==== BROWSER POLICY AND TRUSTED IFRAME URL ==== | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 341 | # https://github.com/wekan/wekan/blob/main/docs/Login/autologin.md | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 361 | # Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299 | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 381 | #- OAUTH2_LOGIN_STYLE=redirect | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 401 | # 1) Register the application with Nextcloud: https://your.nextcloud/index.php/settings/admin/security | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 421 | #- OAUTH2_USERNAME_MAP=id | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 441 | #- OAUTH2_EMAIL_MAP=email | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 461 | # OAuth2 Userinfo Endpoint. | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 481 | # Most settings work both on Snap and Docker below. | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 501 | # When using AD Simple Auth, LDAP_BASEDN is not needed. | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 521 | # | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 541 | # Reconnect to the server if the connection is lost | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 561 | # The password for the search user | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 581 | # | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 601 | # base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search t | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 621 | # must still be configured for any group search to work. | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 641 | # | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 661 | # | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 681 | #- LDAP_SYNC_ADMIN_STATUS=true | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 701 | #- HEADER_LOGIN_FIRSTNAME=HEADERFIRSTNAME | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 721 | # | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 741 | #--------------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 1 | # WeKan with MongoDB 7 (docker-compose-mongodb-v7.yml) | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 21 | # 1) Stop Wekan: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 41 | # sudo systemctl start docker | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 61 | # a) Wekan app, does not contain data | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 81 | # exit | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 101 | # It supports the full MongoDB wire protocol used by Meteor/WeKan, | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 121 | #wekan-postgres: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 141 | # timeout: 5s | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 161 | # condition: service_healthy | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 181 | #------------------------------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 201 | # - SOURCE_MONGO_URL= | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 221 | # depends_on: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 281 | volumes: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 301 | # c) Quay: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 321 | # context: . | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 341 | #----------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 361 | # If you have Caddy/Nginx/Apache providing SSL | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 381 | - MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com> | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 401 | # - Latency from 50ms to 2000ms | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 421 | # https://github.com/wekan/wekan-logstash | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 441 | # Wekan Export Board works when WITH_API=true. | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 461 | #--------------------------------------------------------------- | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 481 | #-ATTACHMENTS_UPLOAD_MAX_SIZE=5000000 | COMMENT |
| 399 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config/router.js | 27 | function ensureSignedInUnlessSandstorm(context, redirect, stop) { | CODE |
| LOW | tests/wekanCreator.import.test.js | 223 | function testDefaultSwimlaneCreation() { | CODE |
| LOW | tests/trelloImport.zip.test.js | 34 | function collectLogicalAttachments(data) { | CODE |
| LOW | server/rulesHelper.js | 17 | async function getDestBoardDefaultSwimlane(boardId) { | CODE |
| LOW | server/attachmentBulkMove.js | 207 | async function createMeteorFilesDocFromBuffer(cfg, info) { | CODE |
| LOW | server/attachmentBulkMove.js | 459 | function strategyCanReadFilesystem(factory, doc, versionName) { | CODE |
| LOW | server/methods/fixDuplicateLists.js | 73 | async function fixDuplicateListsForBoard(boardId) { | CODE |
| LOW | server/publications/users.js | 99 | // function UpdateLastConnectionDateAndLastConnectionAverageTime(lstUsers) { | COMMENT |
| LOW | server/models/cards.js | 546 | async function enforceCardBoardConsistency(doc, fieldNames, modifier) { | CODE |
| LOW | server/models/users.js | 1317 | function startNotificationCleanupDebounced() { | CODE |
| LOW | server/models/attachmentStorageSettings.js | 56 | async function countCollectionDocumentsSafe(db, collectionName) { | CODE |
| LOW | server/models/settings.js | 82 | async function isNonAdminAllowedToSendMail(currentUser) { | CODE |
| LOW | server/permissions/attachments.js | 6 | function hasUnsafeClientVersionFields(fileObj) { | CODE |
| LOW | server/lib/localizeAvatar.js | 125 | export async function localizeUserAvatarIfExternal(userOrId) { | CODE |
| LOW | server/lib/localizeAvatar.js | 143 | export async function localizeBoardMemberAvatars(boardId) { | CODE |
| LOW | server/lib/resetPasswordEmail.js | 83 | function wrapSendResetPasswordEmail(originalSend, makeError) { | CODE |
| LOW | server/lib/resetPasswordEmail.js | 87 | return async function wrappedSendResetPasswordEmail(...args) { | CODE |
| LOW | server/lib/headerLoginAuth.js | 91 | function isTrustedHeaderLoginSource(req) { | CODE |
| LOW | server/lib/headerLoginAuth.js | 109 | function hasMeteorLoginTokenCookie(req) { | CODE |
| LOW | server/lib/headerLoginAuth.js | 120 | function shouldProcessHeaderLoginMiddlewareRequest(req) { | CODE |
| LOW | server/lib/headerLoginAuth.js | 137 | async function findOrCreateHeaderLoginUser(req) { | CODE |
| LOW | server/lib/cardBoardConsistency.js | 30 | async function applyCardBoardConsistency(doc, fieldNames, modifier, deps) { | CODE |
| LOW | server/lib/verificationEmail.js | 37 | function wrapSendVerificationEmail(originalSend, logWarning) { | CODE |
| LOW | server/lib/verificationEmail.js | 42 | return async function wrappedSendVerificationEmail(...args) { | CODE |
| LOW⚡ | server/lib/utils.js | 19 | export function allowIsBoardMemberCommentOnly(userId, board) { | CODE |
| LOW⚡ | server/lib/utils.js | 23 | export function allowIsBoardMemberNoComments(userId, board) { | CODE |
| LOW⚡ | server/lib/utils.js | 28 | export function allowIsBoardMemberWithWriteAccess(userId, board) { | CODE |
| LOW⚡ | server/lib/utils.js | 36 | export function allowIsAnyBoardMemberWithWriteAccess(userId, boards) { | CODE |
| LOW | server/lib/utils.js | 61 | async function denyMoveToUnwritableBoard(userId, boardId) { | CODE |
| LOW | server/lib/utils.js | 98 | export async function denyCrossBoardMoveByChecklistItem(userId, modifier) { | CODE |
| LOW | server/lib/utils.js | 112 | export async function allowIsBoardMemberWithWriteAccessByCard(userId, card) { | CODE |
| LOW | server/lib/tests/apiResponseHelpers.tests.js | 22 | function makeCircularValidationError() { | CODE |
| LOW | server/routes/universalFileServer.js | 30 | async function getAttachmentDownloadLimitSettings() { | CODE |
| LOW | server/routes/universalFileServer.js | 411 | function sanitizeFilenameForHeader(filename) { | CODE |
| LOW | server/routes/universalFileServer.js | 440 | function buildContentDispositionHeader(disposition, sanitizedFilename) { | CODE |
| LOW | server/routes/legacyAttachments.js | 17 | function sanitizeFilenameForHeader(filename) { | CODE |
| LOW | server/routes/legacyAttachments.js | 46 | function buildContentDispositionHeader(disposition, sanitizedFilename) { | CODE |
| LOW | server/routes/importTrelloZip.js | 94 | function collectLogicalAttachments(data) { | CODE |
| LOW | models/checklistItems.js | 197 | export async function publishChekListUncompleted(userId, doc) { | CODE |
| LOW | models/users.js | 780 | export function hasForbiddenUserUpdateField(fields) { | CODE |
| LOW | models/lists.js | 31 | export function filterCardsByListAndSwimlane(cards, listId, swimlaneId, otherSwimlaneIds) { | CODE |
| LOW | models/attachments.js | 10 | export function buildAttachmentAddedActivity(fileObj) { | CODE |
| LOW | models/attachments.server.js | 36 | async function getAttachmentUploadMaxBytes() { | CODE |
| LOW | models/lib/commentActivity.js | 14 | function commentActivityDisplayText(activity) { | CODE |
| LOW | models/lib/checklistItemTitles.js | 38 | function buildChecklistItemPayload(title, checklist, sort) { | CODE |
| LOW | models/lib/boardSortReorder.js | 57 | function computeReorderedSortIndex(orderedIds, draggedId, targetId) { | CODE |
| LOW | models/lib/reconcileBoardTeamMembers.js | 28 | function reconcileBoardTeamMembers(authoritativeMembers = [], clientMembers = []) { | CODE |
| LOW | models/lib/calendarFilter.js | 23 | function cardsDueInBetweenSelector(boardId, start, end, filterSelector) { | CODE |
| LOW | models/lib/inviteEmailLanguage.js | 18 | function chooseInviteEmailLanguage({ | CODE |
| LOW | models/lib/authenticationMethod.js | 22 | function normalizeAuthenticationMethod(value) { | CODE |
| LOW | models/lib/authenticationMethod.js | 32 | function resolveDefaultAuthenticationMethod(preferred, current, fallback = 'password') { | CODE |
| LOW | models/lib/scrollbarCss.js | 22 | function alwaysVisibleScrollbarCss(selector = '.list-body') { | CODE |
| LOW | models/lib/attachmentBackwardCompatibility.js | 215 | export async function getAttachmentWithBackwardCompatibility(attachmentId) { | CODE |
| LOW | models/lib/attachmentBackwardCompatibility.js | 237 | export async function getAttachmentsWithBackwardCompatibility(query) { | CODE |
| LOW | models/lib/attachmentBackwardCompatibility.js | 311 | export async function getOldAttachmentDataBuffer(attachmentId, coll = 'attachments') { | CODE |
| LOW | models/lib/cloudStorage.js | 252 | export async function refreshCloudStorageFromSettings() { | CODE |
| LOW | models/lib/notificationCleanup.js | 24 | function expiredNotificationActivityIds(notifications, removeAgeDays, now) { | CODE |
| LOW | models/lib/linkedCardTitle.js | 19 | function computeTitleUpdateTargets(card) { | CODE |
| LOW | models/lib/rulesBoardSelector.js | 23 | function boardVisibleToUserContext(board, ctx) { | CODE |
| LOW | models/lib/swimlaneFilter.js | 52 | function swimlaneMembershipSelector(swimlaneId, otherSwimlaneIds) { | CODE |
| 72 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | api.py | 57 | python3 api.py createlabel BOARDID LABELCOLOR LABELNAME (Color available: `white`, `green`, `yellow`, `orange`, | CODE |
| MEDIUM | api.py | 113 | python3 api.py linkcard BOARDID LISTID SWIMLANEID AUTHORID LINKEDCARDID # Create a linked card in BOARDID/LISTID tha | CODE |
| MEDIUM | snapcraft-core26.yaml | 343 | # Create a basic default Caddyfile for the snap | COMMENT |
| MEDIUM | snapcraft.yaml | 346 | # Create a basic default Caddyfile for the snap | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 28 | # Create the token: https://app.docker.com/settings/personal-access-tokens | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 32 | # Create the value: | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 36 | # Create the robot account: https://quay.io/organization/wekan?tab=robots | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 42 | # Create the value: | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 46 | # Create the token (classic): https://github.com/settings/tokens | COMMENT |
| MEDIUM⚡ | releases/create-github-secrets.sh | 52 | # Create the value: | COMMENT |
| MEDIUM | releases/create-github-secrets.sh | 71 | # Create the value: | COMMENT |
| MEDIUM | releases/docker-build-deps.sh | 1 | # Create a new builder instance that supports multi-platform | COMMENT |
| MEDIUM | docs/Platforms/FOSS/Docker/Meteor3/keys.sh | 12 | # Create a folder for the key if it doesn't exist | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | …s/wekan-fullcalendar/fullcalendar/lib/jquery-ui.min.js | 6 | (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e= | CODE |
| CRITICAL⚡ | …s/wekan-fullcalendar/fullcalendar/lib/jquery-ui.min.js | 9 | }},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e | CODE |
| CRITICAL | …ages/wekan-fullcalendar/fullcalendar/lib/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | api.py | 512 | print(f"Error: {response.status_code}") | STRING |
| MEDIUM⚡ | api.py | 515 | print(f"Error in the GET request: {e}") | STRING |
| MEDIUM⚡ | api.py | 1057 | print(f"Error: File '{filepath}' not found") | STRING |
| MEDIUM⚡ | api.py | 1060 | print(f"Error reading file: {e}") | STRING |
| MEDIUM | api.py | 326 | print("Error obraining ID.") | STRING |
| MEDIUM | api.py | 328 | print("Error adding card.") | STRING |
| MEDIUM | api.py | 612 | print(f"Error: {body.status_code}") | STRING |
| MEDIUM | api.py | 636 | print(f"Error: {body.status_code}") | STRING |
| MEDIUM | api.py | 694 | print("Error GET:", e) | STRING |
| MEDIUM | api.py | 723 | print(f"Error deleting card: {e}") | STRING |
| MEDIUM | api.py | 727 | print(f"Error getting swimlane cards: {e}") | STRING |
| MEDIUM | api.py | 745 | print(f"Error: {e}") | STRING |
| MEDIUM | api.py | 848 | print(f"Error: {e}") | STRING |
| MEDIUM | api.py | 1545 | print("Error reading CARDSJSONFILE: {}".format(e)) | STRING |
| MEDIUM | api.py | 1950 | print(f"Error reading file: {e}") | STRING |
| LOW⚡ | api.py | 514 | except Exception as e: | STRING |
| LOW⚡ | api.py | 1059 | except Exception as e: | STRING |
| LOW | api.py | 537 | except Exception as e: | STRING |
| LOW | api.py | 693 | except Exception as e: | STRING |
| LOW | api.py | 1544 | except Exception as e: | STRING |
| LOW | api.py | 1949 | except Exception as e: | STRING |
| LOW | openapi/generate_openapi.py | 597 | except Exception: | CODE |
| LOW | openapi/generate_openapi.py | 901 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | releases/test-download-urls.sh | 18 | # Usage: | COMMENT |
| LOW | releases/release-website.sh | 5 | # Usage: | COMMENT |
| LOW | releases/rebuild-docs.sh | 5 | # Usage: | COMMENT |
| LOW | releases/build-bundle-ppc64le.sh | 8 | # Usage: | COMMENT |
| LOW⚡ | releases/create-github-secrets.sh | 8 | # Usage: | COMMENT |
| LOW | releases/build-bundle-s390x.sh | 8 | # Usage: | COMMENT |
| LOW | releases/build-bundle-armhf.sh | 11 | # Usage: | COMMENT |
| LOW | releases/release-all.sh | 10 | # Usage: | COMMENT |
| LOW | releases/release-charts.sh | 6 | # Usage: | COMMENT |
| LOW | releases/old-build-bundle-arm64.sh | 8 | # Usage: | COMMENT |
| LOW | .github/workflows/release-all.yml | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/API/User.md | 99 | "id":"YOUR-ID-HERE","token":"YOUR-TOKEN-HERE","tokenExpires":"2017-12-23T21:07:10.395Z"} | CODE |
| HIGH | docs/API/User.md | 105 | curl -H "Authorization: Bearer YOUR-TOKEN-HERE" \ | CODE |
| HIGH | docs/API/User.md | 121 | curl -H "Authorization: Bearer YOUR-TOKEN-HERE" \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/Login/ldap-sync/ldap-sync.py | 312 | CODE | |
| LOW | docs/Login/ldap-sync/ldap-sync.py | 64 | CODE | |
| LOW | docs/Login/ldap-sync/ldap-sync.py | 101 | CODE | |
| LOW | openapi/generate_openapi.py | 17 | CODE | |
| LOW | openapi/generate_openapi.py | 131 | CODE | |
| LOW | openapi/generate_openapi.py | 970 | CODE | |
| LOW | openapi/generate_openapi.py | 1032 | CODE | |
| LOW | openapi/generate_openapi.py | 226 | CODE | |
| LOW | openapi/generate_openapi.py | 420 | CODE | |
| LOW | openapi/generate_openapi.py | 498 | CODE | |
| LOW | openapi/generate_openapi.py | 666 | CODE | |
| LOW | openapi/generate_openapi.py | 266 | CODE | |
| LOW | openapi/generate_openapi.py | 520 | CODE | |
| LOW | openapi/generate_openapi.py | 529 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | README.md | 161 | # Step 1: Install dependencies (Setup -> Install dependencies) | COMMENT |
| LOW⚡ | README.md | 165 | # Step 2: Build WeKan (Setup -> Build WeKan, after dependencies complete) | COMMENT |
| LOW⚡ | README.md | 169 | # Step 3: Run WeKan in development mode (Dev server -> localhost:3000) | COMMENT |
| LOW | tests/wekanCreator.import.test.js | 254 | // Step 1: Normalize IDs | COMMENT |
| LOW⚡ | tests/wekanCreator.import.test.js | 269 | // Step 2: Map swimlanes | COMMENT |
| LOW⚡ | tests/wekanCreator.import.test.js | 275 | // Step 3: Verify cards get mapped swimlane IDs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rebuild-wekan.sh | 543 | # test/assertion; the Node E2E harness prints one "[wekan-e2e] ..." line per | COMMENT |
| MEDIUM | .github/dependabot.yml | 36 | # Playwright end-to-end test harness — pure test-only tooling that never ships in | COMMENT |
| MEDIUM | client/lib/cardCloseGuard.js | 12 | // This helper centralises the robust, propagation-independent check: if there | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docker-compose-ferretdb-v2-postgresql.yml | 359 | # by installation type, but make sure you have the following: | COMMENT |
| LOW | docker-compose-ferretdb-v2-postgresql.yml | 405 | # by installation type, but make sure you have the following: | COMMENT |
| LOW⚡ | docker-compose-mongodb-v7.yml | 593 | # by installation type, but make sure you have the following: | COMMENT |
| LOW | docker-compose-mongodb-v7.yml | 639 | # by installation type, but make sure you have the following: | COMMENT |
| LOW⚡ | start-wekan.sh | 316 | # by installation type, but make sure you have the following: | COMMENT |
| LOW⚡ | docker-compose.yml | 386 | # by installation type, but make sure you have the following: | COMMENT |
| LOW | docker-compose.yml | 432 | # by installation type, but make sure you have the following: | COMMENT |
| LOW | releases/virtualbox/start-wekan.sh | 158 | # by installation type, but make sure you have the following: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api.py | 13 | CODE | |
| LOW | api.py | 16 | CODE | |
| LOW | docs/ImportExport/trello/api.py | 16 | CODE | |
| LOW | docs/ImportExport/trello/api.py | 10 | CODE | |
| LOW | docs/ImportExport/trello/api.py | 11 | CODE | |
| LOW | docs/ImportExport/trello/api.py | 14 | CODE | |
| LOW | docs/Login/ldap-sync/ldap-sync.py | 13 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/wekanCreator.import.test.js | 254 | // Step 1: Normalize IDs | COMMENT |
| LOW⚡ | tests/wekanCreator.import.test.js | 269 | // Step 2: Map swimlanes | COMMENT |
| LOW⚡ | tests/wekanCreator.import.test.js | 275 | // Step 3: Verify cards get mapped swimlane IDs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/lib/tests/permissions.security.tests.js | 94 | emails: [{ address: 'user@example.com' }], | CODE |
| LOW | server/lib/tests/cardsCopyDueFixes.tests.js | 57 | const linked = { _id: 'placeholder', linkedId: 'realCard', type: 'cardType-linkedCard' }; | CODE |
| LOW | docs/Webserver/Caddy.md | 719 | ExecStart=/home/username/caddy/caddy -conf=/home/username/caddy/Caddyfile -agree -email="admin@example.com" | CODE |
| LOW⚡ | …s/wekan-fullcalendar/fullcalendar/lib/jquery-ui.min.js | 6 | (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e= | CODE |
| LOW | client/components/main/editor.js | 170 | const placeholder = inputs.attr('placeholder') || ''; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/forge-mirror.js | 277 | // marketplace `uses:` actions. Emit a scaffold + a guide pointing at GitLab's | COMMENT |
| MEDIUM | tools/forge-mirror.js | 290 | '# Generated scaffold by tools/forge-mirror.js. GitLab CI is NOT GitHub-Actions\n' + | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | api.py | 1050 | # Read file and convert to base64 | STRING |
| LOW | docs/Platforms/FOSS/Docker/Meteor3/backup.sh | 48 | # Check if the backup was successful | COMMENT |
| LOW | docs/Platforms/FOSS/Docker/Meteor3/sh.sh | 13 | # Check if the .txt file exists | COMMENT |
| LOW | stacksmith/user-scripts/build.sh | 61 | # Check if opting for a release candidate instead of major release | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openapi/generate_openapi.py | 880 | a ?? b -> a || b (nullish coalescing) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openapi/generate_openapi.py | 13 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openapi/generate_openapi.py | 887 | CODE |