Repository Analysis

wekan/wekan

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.

3.1 Likely human-written View on GitHub

Analysis Overview

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).

3.1
Adjusted Score
3.1
Raw Score
100%
Time Factor
2026-07-13
Last Push
21.0K
Stars
JavaScript
Language
718.3K
Lines of Code
1.6K
Files
1.2K
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 3HIGH 4MEDIUM 532LOW 659

Directory Score Breakdown

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.

Pattern Findings

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.

Decorative Section Separators499 hits · 1492 pts
SeverityFileLineSnippetContext
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml107 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml110 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml119 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml124 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml198 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml201 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml205 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml212 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml222 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml227 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml231 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml239 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml243 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml248 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml253 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml258 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml263 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml297 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml301 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml309 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml320 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml328 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml332 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml336 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml339 #---------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml350 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml353 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml733 #-------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml736 #-------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml741 #---------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml52 #-------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml70 #-------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml82 #-------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml88 #-------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml137 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml153 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml159 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml174 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml182 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml279 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml284 #---------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml399 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml426 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml443 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml477 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml497 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml531 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml537 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml664 #-----------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml697 #---------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml716 #---------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml753 #---------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-ferretdb-v2-postgresql.yml756 #---------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml9#---------------------------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml11#---------------------------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml14#---------------------------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml17#---------------------------------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml29#----------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml37#----------------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose-mongodb-v7.yml45# ----------------------------------------------------------------------------------COMMENT
439 more matches not shown…
Over-Commented Block459 hits · 346 pts
SeverityFileLineSnippetContext
LOWfind.sh1#!/bin/bashCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml1# WeKan with FerretDB 2 + PostgreSQL (DocumentDB extension)COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml61 # b) GitHub Container registry.COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml81 - wekan-tierCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml101 # Keep oplog/polling fallback available for deployments that cannot use Change Streams:COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml121 #- MONGO_URL=mongodb://wekan-ferretdb:27017/wekanCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml141 # see https://github.com/wekan/wekan/blob/main/docs/Email/Troubleshooting-Mail.mdCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml161 # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml181 #- APM_APP_SECRET=COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml201 #---------------------------------------------------------------COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml221 #- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml241 # https://github.com/wekan/wekan/issues/2518COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml261 # Default: 2COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml281 # Notify the user directly when they are added as a card member orCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml301 #-----------------------------------------------------------------COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml321 # ==== BROWSER POLICY AND TRUSTED IFRAME URL ====COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml341 # https://github.com/wekan/wekan/blob/main/docs/Login/autologin.mdCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml361 # Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml381 #- OAUTH2_LOGIN_STYLE=redirectCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml401 # 1) Register the application with Nextcloud: https://your.nextcloud/index.php/settings/admin/securityCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml421 #- OAUTH2_USERNAME_MAP=idCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml441 #- OAUTH2_EMAIL_MAP=emailCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml461 # OAuth2 Userinfo Endpoint.COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml481 # Most settings work both on Snap and Docker below.COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml501 # When using AD Simple Auth, LDAP_BASEDN is not needed.COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml521 #COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml541 # Reconnect to the server if the connection is lostCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml561 # The password for the search userCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml581 #COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml601 # base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search tCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml621 # must still be configured for any group search to work.COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml641 #COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml661 #COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml681 #- LDAP_SYNC_ADMIN_STATUS=trueCOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml701 #- HEADER_LOGIN_FIRSTNAME=HEADERFIRSTNAMECOMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml721 #COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml741 #---------------------------------------------------------------------COMMENT
LOWdocker-compose-mongodb-v7.yml1# WeKan with MongoDB 7 (docker-compose-mongodb-v7.yml)COMMENT
LOWdocker-compose-mongodb-v7.yml21# 1) Stop Wekan:COMMENT
LOWdocker-compose-mongodb-v7.yml41# sudo systemctl start dockerCOMMENT
LOWdocker-compose-mongodb-v7.yml61# a) Wekan app, does not contain dataCOMMENT
LOWdocker-compose-mongodb-v7.yml81# exitCOMMENT
LOWdocker-compose-mongodb-v7.yml101 # It supports the full MongoDB wire protocol used by Meteor/WeKan,COMMENT
LOWdocker-compose-mongodb-v7.yml121 #wekan-postgres:COMMENT
LOWdocker-compose-mongodb-v7.yml141 # timeout: 5sCOMMENT
LOWdocker-compose-mongodb-v7.yml161 # condition: service_healthyCOMMENT
LOWdocker-compose-mongodb-v7.yml181 #-------------------------------------------------------------------------------------COMMENT
LOWdocker-compose-mongodb-v7.yml201 # - SOURCE_MONGO_URL=COMMENT
LOWdocker-compose-mongodb-v7.yml221 # depends_on:COMMENT
LOWdocker-compose-mongodb-v7.yml281 volumes:COMMENT
LOWdocker-compose-mongodb-v7.yml301 # c) Quay:COMMENT
LOWdocker-compose-mongodb-v7.yml321 # context: .COMMENT
LOWdocker-compose-mongodb-v7.yml341 #-----------------------------------------------------------------COMMENT
LOWdocker-compose-mongodb-v7.yml361 # If you have Caddy/Nginx/Apache providing SSLCOMMENT
LOWdocker-compose-mongodb-v7.yml381 - MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>COMMENT
LOWdocker-compose-mongodb-v7.yml401 # - Latency from 50ms to 2000msCOMMENT
LOWdocker-compose-mongodb-v7.yml421 # https://github.com/wekan/wekan-logstashCOMMENT
LOWdocker-compose-mongodb-v7.yml441 # Wekan Export Board works when WITH_API=true.COMMENT
LOWdocker-compose-mongodb-v7.yml461 #---------------------------------------------------------------COMMENT
LOWdocker-compose-mongodb-v7.yml481 #-ATTACHMENTS_UPLOAD_MAX_SIZE=5000000COMMENT
399 more matches not shown…
Hyper-Verbose Identifiers132 hits · 138 pts
SeverityFileLineSnippetContext
LOWconfig/router.js27function ensureSignedInUnlessSandstorm(context, redirect, stop) {CODE
LOWtests/wekanCreator.import.test.js223function testDefaultSwimlaneCreation() {CODE
LOWtests/trelloImport.zip.test.js34function collectLogicalAttachments(data) {CODE
LOWserver/rulesHelper.js17async function getDestBoardDefaultSwimlane(boardId) {CODE
LOWserver/attachmentBulkMove.js207async function createMeteorFilesDocFromBuffer(cfg, info) {CODE
LOWserver/attachmentBulkMove.js459function strategyCanReadFilesystem(factory, doc, versionName) {CODE
LOWserver/methods/fixDuplicateLists.js73async function fixDuplicateListsForBoard(boardId) {CODE
LOWserver/publications/users.js99// function UpdateLastConnectionDateAndLastConnectionAverageTime(lstUsers) {COMMENT
LOWserver/models/cards.js546async function enforceCardBoardConsistency(doc, fieldNames, modifier) {CODE
LOWserver/models/users.js1317 function startNotificationCleanupDebounced() {CODE
LOWserver/models/attachmentStorageSettings.js56async function countCollectionDocumentsSafe(db, collectionName) {CODE
LOWserver/models/settings.js82async function isNonAdminAllowedToSendMail(currentUser) {CODE
LOWserver/permissions/attachments.js6function hasUnsafeClientVersionFields(fileObj) {CODE
LOWserver/lib/localizeAvatar.js125export async function localizeUserAvatarIfExternal(userOrId) {CODE
LOWserver/lib/localizeAvatar.js143export async function localizeBoardMemberAvatars(boardId) {CODE
LOWserver/lib/resetPasswordEmail.js83function wrapSendResetPasswordEmail(originalSend, makeError) {CODE
LOWserver/lib/resetPasswordEmail.js87 return async function wrappedSendResetPasswordEmail(...args) {CODE
LOWserver/lib/headerLoginAuth.js91function isTrustedHeaderLoginSource(req) {CODE
LOWserver/lib/headerLoginAuth.js109function hasMeteorLoginTokenCookie(req) {CODE
LOWserver/lib/headerLoginAuth.js120function shouldProcessHeaderLoginMiddlewareRequest(req) {CODE
LOWserver/lib/headerLoginAuth.js137async function findOrCreateHeaderLoginUser(req) {CODE
LOWserver/lib/cardBoardConsistency.js30async function applyCardBoardConsistency(doc, fieldNames, modifier, deps) {CODE
LOWserver/lib/verificationEmail.js37function wrapSendVerificationEmail(originalSend, logWarning) {CODE
LOWserver/lib/verificationEmail.js42 return async function wrappedSendVerificationEmail(...args) {CODE
LOWserver/lib/utils.js19export function allowIsBoardMemberCommentOnly(userId, board) {CODE
LOWserver/lib/utils.js23export function allowIsBoardMemberNoComments(userId, board) {CODE
LOWserver/lib/utils.js28export function allowIsBoardMemberWithWriteAccess(userId, board) {CODE
LOWserver/lib/utils.js36export function allowIsAnyBoardMemberWithWriteAccess(userId, boards) {CODE
LOWserver/lib/utils.js61async function denyMoveToUnwritableBoard(userId, boardId) {CODE
LOWserver/lib/utils.js98export async function denyCrossBoardMoveByChecklistItem(userId, modifier) {CODE
LOWserver/lib/utils.js112export async function allowIsBoardMemberWithWriteAccessByCard(userId, card) {CODE
LOWserver/lib/tests/apiResponseHelpers.tests.js22 function makeCircularValidationError() {CODE
LOWserver/routes/universalFileServer.js30async function getAttachmentDownloadLimitSettings() {CODE
LOWserver/routes/universalFileServer.js411 function sanitizeFilenameForHeader(filename) {CODE
LOWserver/routes/universalFileServer.js440 function buildContentDispositionHeader(disposition, sanitizedFilename) {CODE
LOWserver/routes/legacyAttachments.js17function sanitizeFilenameForHeader(filename) {CODE
LOWserver/routes/legacyAttachments.js46function buildContentDispositionHeader(disposition, sanitizedFilename) {CODE
LOWserver/routes/importTrelloZip.js94function collectLogicalAttachments(data) {CODE
LOWmodels/checklistItems.js197export async function publishChekListUncompleted(userId, doc) {CODE
LOWmodels/users.js780export function hasForbiddenUserUpdateField(fields) {CODE
LOWmodels/lists.js31export function filterCardsByListAndSwimlane(cards, listId, swimlaneId, otherSwimlaneIds) {CODE
LOWmodels/attachments.js10export function buildAttachmentAddedActivity(fileObj) {CODE
LOWmodels/attachments.server.js36async function getAttachmentUploadMaxBytes() {CODE
LOWmodels/lib/commentActivity.js14function commentActivityDisplayText(activity) {CODE
LOWmodels/lib/checklistItemTitles.js38function buildChecklistItemPayload(title, checklist, sort) {CODE
LOWmodels/lib/boardSortReorder.js57function computeReorderedSortIndex(orderedIds, draggedId, targetId) {CODE
LOWmodels/lib/reconcileBoardTeamMembers.js28function reconcileBoardTeamMembers(authoritativeMembers = [], clientMembers = []) {CODE
LOWmodels/lib/calendarFilter.js23function cardsDueInBetweenSelector(boardId, start, end, filterSelector) {CODE
LOWmodels/lib/inviteEmailLanguage.js18function chooseInviteEmailLanguage({CODE
LOWmodels/lib/authenticationMethod.js22function normalizeAuthenticationMethod(value) {CODE
LOWmodels/lib/authenticationMethod.js32function resolveDefaultAuthenticationMethod(preferred, current, fallback = 'password') {CODE
LOWmodels/lib/scrollbarCss.js22function alwaysVisibleScrollbarCss(selector = '.list-body') {CODE
LOWmodels/lib/attachmentBackwardCompatibility.js215export async function getAttachmentWithBackwardCompatibility(attachmentId) {CODE
LOWmodels/lib/attachmentBackwardCompatibility.js237export async function getAttachmentsWithBackwardCompatibility(query) {CODE
LOWmodels/lib/attachmentBackwardCompatibility.js311export async function getOldAttachmentDataBuffer(attachmentId, coll = 'attachments') {CODE
LOWmodels/lib/cloudStorage.js252export async function refreshCloudStorageFromSettings() {CODE
LOWmodels/lib/notificationCleanup.js24function expiredNotificationActivityIds(notifications, removeAgeDays, now) {CODE
LOWmodels/lib/linkedCardTitle.js19function computeTitleUpdateTargets(card) {CODE
LOWmodels/lib/rulesBoardSelector.js23function boardVisibleToUserContext(board, ctx) {CODE
LOWmodels/lib/swimlaneFilter.js52function swimlaneMembershipSelector(swimlaneId, otherSwimlaneIds) {CODE
72 more matches not shown…
Self-Referential Comments13 hits · 46 pts
SeverityFileLineSnippetContext
MEDIUMapi.py57 python3 api.py createlabel BOARDID LABELCOLOR LABELNAME (Color available: `white`, `green`, `yellow`, `orange`, CODE
MEDIUMapi.py113 python3 api.py linkcard BOARDID LISTID SWIMLANEID AUTHORID LINKEDCARDID # Create a linked card in BOARDID/LISTID thaCODE
MEDIUMsnapcraft-core26.yaml343 # Create a basic default Caddyfile for the snapCOMMENT
MEDIUMsnapcraft.yaml346 # Create a basic default Caddyfile for the snapCOMMENT
MEDIUMreleases/create-github-secrets.sh28# Create the token: https://app.docker.com/settings/personal-access-tokensCOMMENT
MEDIUMreleases/create-github-secrets.sh32# Create the value:COMMENT
MEDIUMreleases/create-github-secrets.sh36# Create the robot account: https://quay.io/organization/wekan?tab=robotsCOMMENT
MEDIUMreleases/create-github-secrets.sh42# Create the value:COMMENT
MEDIUMreleases/create-github-secrets.sh46# Create the token (classic): https://github.com/settings/tokensCOMMENT
MEDIUMreleases/create-github-secrets.sh52# Create the value:COMMENT
MEDIUMreleases/create-github-secrets.sh71# Create the value:COMMENT
MEDIUMreleases/docker-build-deps.sh1# Create a new builder instance that supports multi-platformCOMMENT
MEDIUMdocs/Platforms/FOSS/Docker/Meteor3/keys.sh12# Create a folder for the key if it doesn't existCOMMENT
Hallucination Indicators3 hits · 40 pts
SeverityFileLineSnippetContext
CRITICAL…s/wekan-fullcalendar/fullcalendar/lib/jquery-ui.min.js6(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.js9}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(eCODE
CRITICAL…ages/wekan-fullcalendar/fullcalendar/lib/jquery.min.js2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):fCODE
Excessive Try-Catch Wrapping23 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMapi.py512 print(f"Error: {response.status_code}")STRING
MEDIUMapi.py515 print(f"Error in the GET request: {e}")STRING
MEDIUMapi.py1057 print(f"Error: File '{filepath}' not found")STRING
MEDIUMapi.py1060 print(f"Error reading file: {e}")STRING
MEDIUMapi.py326 print("Error obraining ID.")STRING
MEDIUMapi.py328 print("Error adding card.")STRING
MEDIUMapi.py612 print(f"Error: {body.status_code}")STRING
MEDIUMapi.py636 print(f"Error: {body.status_code}")STRING
MEDIUMapi.py694 print("Error GET:", e)STRING
MEDIUMapi.py723 print(f"Error deleting card: {e}")STRING
MEDIUMapi.py727 print(f"Error getting swimlane cards: {e}")STRING
MEDIUMapi.py745 print(f"Error: {e}")STRING
MEDIUMapi.py848 print(f"Error: {e}")STRING
MEDIUMapi.py1545 print("Error reading CARDSJSONFILE: {}".format(e))STRING
MEDIUMapi.py1950 print(f"Error reading file: {e}")STRING
LOWapi.py514 except Exception as e:STRING
LOWapi.py1059 except Exception as e:STRING
LOWapi.py537 except Exception as e:STRING
LOWapi.py693 except Exception as e:STRING
LOWapi.py1544 except Exception as e:STRING
LOWapi.py1949 except Exception as e:STRING
LOWopenapi/generate_openapi.py597 except Exception:CODE
LOWopenapi/generate_openapi.py901 except Exception:CODE
Example Usage Blocks11 hits · 17 pts
SeverityFileLineSnippetContext
LOWreleases/test-download-urls.sh18# Usage:COMMENT
LOWreleases/release-website.sh5# Usage:COMMENT
LOWreleases/rebuild-docs.sh5# Usage:COMMENT
LOWreleases/build-bundle-ppc64le.sh8# Usage:COMMENT
LOWreleases/create-github-secrets.sh8# Usage:COMMENT
LOWreleases/build-bundle-s390x.sh8# Usage:COMMENT
LOWreleases/build-bundle-armhf.sh11# Usage:COMMENT
LOWreleases/release-all.sh10# Usage:COMMENT
LOWreleases/release-charts.sh6# Usage:COMMENT
LOWreleases/old-build-bundle-arm64.sh8# Usage:COMMENT
LOW.github/workflows/release-all.yml4# Usage:COMMENT
Magic Placeholder Names3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHdocs/API/User.md99"id":"YOUR-ID-HERE","token":"YOUR-TOKEN-HERE","tokenExpires":"2017-12-23T21:07:10.395Z"}CODE
HIGHdocs/API/User.md105curl -H "Authorization: Bearer YOUR-TOKEN-HERE" \CODE
HIGHdocs/API/User.md121curl -H "Authorization: Bearer YOUR-TOKEN-HERE" \CODE
Deep Nesting14 hits · 14 pts
SeverityFileLineSnippetContext
LOWdocs/Login/ldap-sync/ldap-sync.py312CODE
LOWdocs/Login/ldap-sync/ldap-sync.py64CODE
LOWdocs/Login/ldap-sync/ldap-sync.py101CODE
LOWopenapi/generate_openapi.py17CODE
LOWopenapi/generate_openapi.py131CODE
LOWopenapi/generate_openapi.py970CODE
LOWopenapi/generate_openapi.py1032CODE
LOWopenapi/generate_openapi.py226CODE
LOWopenapi/generate_openapi.py420CODE
LOWopenapi/generate_openapi.py498CODE
LOWopenapi/generate_openapi.py666CODE
LOWopenapi/generate_openapi.py266CODE
LOWopenapi/generate_openapi.py520CODE
LOWopenapi/generate_openapi.py529CODE
Structural Annotation Overuse6 hits · 13 pts
SeverityFileLineSnippetContext
LOWREADME.md161# Step 1: Install dependencies (Setup -> Install dependencies)COMMENT
LOWREADME.md165# Step 2: Build WeKan (Setup -> Build WeKan, after dependencies complete)COMMENT
LOWREADME.md169# Step 3: Run WeKan in development mode (Dev server -> localhost:3000)COMMENT
LOWtests/wekanCreator.import.test.js254 // Step 1: Normalize IDsCOMMENT
LOWtests/wekanCreator.import.test.js269 // Step 2: Map swimlanesCOMMENT
LOWtests/wekanCreator.import.test.js275 // Step 3: Verify cards get mapped swimlane IDsCOMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMrebuild-wekan.sh543 # test/assertion; the Node E2E harness prints one "[wekan-e2e] ..." line perCOMMENT
MEDIUM.github/dependabot.yml36# Playwright end-to-end test harness — pure test-only tooling that never ships inCOMMENT
MEDIUMclient/lib/cardCloseGuard.js12// This helper centralises the robust, propagation-independent check: if thereCOMMENT
Slop Phrases8 hits · 7 pts
SeverityFileLineSnippetContext
LOWdocker-compose-ferretdb-v2-postgresql.yml359 # by installation type, but make sure you have the following:COMMENT
LOWdocker-compose-ferretdb-v2-postgresql.yml405 # by installation type, but make sure you have the following:COMMENT
LOWdocker-compose-mongodb-v7.yml593 # by installation type, but make sure you have the following:COMMENT
LOWdocker-compose-mongodb-v7.yml639 # by installation type, but make sure you have the following:COMMENT
LOWstart-wekan.sh316 # by installation type, but make sure you have the following:COMMENT
LOWdocker-compose.yml386 # by installation type, but make sure you have the following:COMMENT
LOWdocker-compose.yml432 # by installation type, but make sure you have the following:COMMENT
LOWreleases/virtualbox/start-wekan.sh158 # by installation type, but make sure you have the following:COMMENT
Unused Imports7 hits · 6 pts
SeverityFileLineSnippetContext
LOWapi.py13CODE
LOWapi.py16CODE
LOWdocs/ImportExport/trello/api.py16CODE
LOWdocs/ImportExport/trello/api.py10CODE
LOWdocs/ImportExport/trello/api.py11CODE
LOWdocs/ImportExport/trello/api.py14CODE
LOWdocs/Login/ldap-sync/ldap-sync.py13CODE
Verbosity Indicators3 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/wekanCreator.import.test.js254 // Step 1: Normalize IDsCOMMENT
LOWtests/wekanCreator.import.test.js269 // Step 2: Map swimlanesCOMMENT
LOWtests/wekanCreator.import.test.js275 // Step 3: Verify cards get mapped swimlane IDsCOMMENT
Fake / Example Data5 hits · 6 pts
SeverityFileLineSnippetContext
LOWserver/lib/tests/permissions.security.tests.js94 emails: [{ address: 'user@example.com' }],CODE
LOWserver/lib/tests/cardsCopyDueFixes.tests.js57 const linked = { _id: 'placeholder', linkedId: 'realCard', type: 'cardType-linkedCard' };CODE
LOWdocs/Webserver/Caddy.md719ExecStart=/home/username/caddy/caddy -conf=/home/username/caddy/Caddyfile -agree -email="admin@example.com"CODE
LOW…s/wekan-fullcalendar/fullcalendar/lib/jquery-ui.min.js6(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=CODE
LOWclient/components/main/editor.js170 const placeholder = inputs.attr('placeholder') || '';CODE
Modern AI Meta-Vocabulary2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMtools/forge-mirror.js277// marketplace `uses:` actions. Emit a scaffold + a guide pointing at GitLab'sCOMMENT
MEDIUMtools/forge-mirror.js290 '# Generated scaffold by tools/forge-mirror.js. GitLab CI is NOT GitHub-Actions\n' +CODE
Redundant / Tautological Comments4 hits · 5 pts
SeverityFileLineSnippetContext
LOWapi.py1050 # Read file and convert to base64STRING
LOWdocs/Platforms/FOSS/Docker/Meteor3/backup.sh48# Check if the backup was successfulCOMMENT
LOWdocs/Platforms/FOSS/Docker/Meteor3/sh.sh13# Check if the .txt file existsCOMMENT
LOWstacksmith/user-scripts/build.sh61# Check if opting for a release candidate instead of major releaseCOMMENT
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHopenapi/generate_openapi.py880 a ?? b -> a || b (nullish coalescing)STRING
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWopenapi/generate_openapi.py13logger = logging.getLogger(__name__)CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWopenapi/generate_openapi.py887CODE