AI Slop Code RIsk Monitor

go-vikunja/vikunja

The task manager you actually own.

5.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for go-vikunja/vikunja, a Go project with 5,687 GitHub stars. SynthScan examined 433,648 lines of code across 2113 source files, recording 2242 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 5.8 (Moderate pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

5.8
Adjusted Signal
5.8
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
5.7K
Stars
Go
Language
433.6K
Lines of Code
2.1K
Files
2.2K
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 17.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1521 finding(s).

Hallucinated Dependency & Supply Chain Risk 9.2/100 · LOW

Are imports declared and package/API names verified? 710 finding(s).

Agent Over-Engineering Ratio 3.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 222 finding(s).

PR Review Velocity Impact 23.8/100 · LOW

Which changes need focused human review? 2242 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 7HIGH 3MEDIUM 16LOW 2216

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 2242 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block1210 hits · 1207 pts
SeverityFileLineSnippetContext
LOWmagefile.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWmagefile.go481// runs the Playwright e2e tests against them, then tears everything down.COMMENT
LOWmagefile.go1061// frontendI18nCallReDouble is the double-quoted counterpart ofCOMMENT
LOWmagefile.go1301// Copyright 2018-present Vikunja and contributors. All rights reserved.COMMENT
LOWmain.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWfrontend/embed.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWfrontend/embed.go21// all: is required to include files starting with _ or ., such as theCOMMENT
LOWfrontend/tests/e2e/sharing/linkShare.spec.ts121 // Regression test for #2546: a logged-in user opening a public link share URLCOMMENT
LOWfrontend/scripts/fonts-subset.sh1#!/bin/shCOMMENT
LOWfrontend/src/styles/common-imports.scss1//COMMENT
LOWfrontend/src/styles/global.scss41@import "bulma-css-variables/sass/form/tools";COMMENT
LOWfrontend/src/styles/global.scss61// @import "bulma-css-variables/sass/grid/tiles"; // not usedCOMMENT
LOWfrontend/src/styles/custom-properties/colors.scss1// Vikunja colors as CSS custom properties.COMMENT
LOWdesktop/build.js1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWexamples/plugins/example/main.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/magefile.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/cmd/veans/main.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/botuser_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/hooks.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/hooks.go41var ClaudeCodeHookEvents = []string{"SessionStart", "PreCompact"}COMMENT
LOWveans/internal/bootstrap/botuser.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/bootstrap.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/hooks_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/bootstrap/bootstrap_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/flatten.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/tree.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/picker.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/flatten_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/tree_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/picker/model.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/config/config.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/config/config_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/auth/auth_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/auth/auth.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/auth/auth.go81 // Non-TTY (CI, scripted test) — read a plain line.COMMENT
LOWveans/internal/auth/oauth_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/auth/oauth.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/output/errors_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/output/errors.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/status/status_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/status/status.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/create.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/list.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/git.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/git.go21 "os"COMMENT
LOWveans/internal/commands/prime.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/labels.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/show.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/update.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/runtime.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/update_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/claim.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/prime_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/api.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/init.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/login.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/root.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/commands/list_test.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/client/users.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
LOWveans/internal/client/tasks.go1// Vikunja is a to-do list application to facilitate your life.COMMENT
1150 more matches not shown…
Fake / Example Data703 hits · 766 pts
SeverityFileLineSnippetContext
LOWfrontend/tests/e2e/admin/invite-links.spec.ts18 const [admin] = await UserFactory.create(1, {is_admin: true, email: 'admin@example.com', name: 'Invite Admin'}, false)CODE
LOWfrontend/tests/e2e/admin/invite-links.spec.ts68 await guestPage.getByLabel('Email address', {exact: true}).fill('admin@example.com')CODE
LOWfrontend/tests/e2e/project/project-view-kanban.spec.ts352 description: 'Lorem Ipsum',CODE
LOWfrontend/tests/e2e/task/task.spec.ts154 description: 'Lorem Ipsum',CODE
LOWfrontend/tests/e2e/task/task.spec.ts276 description: 'Lorem ipsum dolor sit amet.',CODE
LOWfrontend/tests/e2e/task/task.spec.ts276 description: 'Lorem ipsum dolor sit amet.',CODE
LOWfrontend/tests/e2e/task/task.spec.ts337 description: 'Lorem ipsum dolor sit amet.',CODE
LOWfrontend/tests/e2e/task/task.spec.ts337 description: 'Lorem ipsum dolor sit amet.',CODE
LOWfrontend/tests/e2e/task/task.spec.ts390 description: 'Lorem Ipsum dolor sit amet',CODE
LOWfrontend/tests/e2e/task/task.spec.ts390 description: 'Lorem Ipsum dolor sit amet',CODE
LOWfrontend/tests/e2e/task/task.spec.ts401 description: '<p>Lorem Ipsum dolor sit amet</p>',CODE
LOWfrontend/tests/e2e/task/task.spec.ts401 description: '<p>Lorem Ipsum dolor sit amet</p>',CODE
LOWfrontend/tests/e2e/task/task.spec.ts1688<h1>Lorem Ipsum</h1>CODE
LOWfrontend/tests/e2e/task/task.spec.ts1689<p>Dolor sit amet</p>CODE
LOWfrontend/tests/e2e/task/task.spec.ts1702 await expect(page.locator('.tiptap__editor h1').filter({hasText: 'Lorem Ipsum'})).toBeVisible()CODE
LOWfrontend/tests/e2e/task/task.spec.ts1703 await expect(page.locator('.tiptap__editor p').filter({hasText: 'Dolor sit amet'})).toBeVisible()CODE
LOWfrontend/tests/e2e/task/task.spec.ts1776${Array(30).fill('<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut laboreCODE
LOWfrontend/tests/e2e/task/task.spec.ts1776${Array(30).fill('<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut laboreCODE
LOWfrontend/tests/e2e/task/task.spec.ts1827${Array(20).fill('- Lorem ipsum dolor sit amet, consectetur adipiscing elit').join('\n')}CODE
LOWfrontend/tests/e2e/task/task.spec.ts1827${Array(20).fill('- Lorem ipsum dolor sit amet, consectetur adipiscing elit').join('\n')}CODE
LOWfrontend/tests/e2e/task/task.spec.ts1897 const longDescription = Array(30).fill('<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>').join('\n')CODE
LOWfrontend/tests/e2e/task/task.spec.ts1897 const longDescription = Array(30).fill('<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>').join('\n')CODE
LOWfrontend/src/components/misc/ShortcutRecorder.vue22 <span class="placeholder">{{ $t('user.settings.desktop.shortcutRecorderPlaceholder') }}</span>CODE
LOWfrontend/src/components/input/FormInput.test.ts98 expect(input.attributes('placeholder')).toBe('Enter email')CODE
LOWfrontend/src/components/input/FormField.test.ts99 expect(input.attributes('placeholder')).toBe('Enter email')CODE
LOWfrontend/src/components/input/DateRangeInput.vue8 :sheet-title="placeholder"CODE
LOWfrontend/src/components/input/Multiselect.vue54 :placeholder="placeholder"CODE
LOWfrontend/src/components/quick-actions/QuickActions.vue31 :placeholder="placeholder"CODE
LOWfrontend/src/i18n/lang/de-swiss.json491 "namePlaceholder": "z.B. Lorem Ipsum",CODE
LOWfrontend/src/i18n/lang/de-swiss.json688 "placeholder": "Gib eine Suche oder Filterabfrage ein…",CODE
LOWfrontend/src/i18n/lang/de-swiss.json982 "placeholder": "Gib Text ein, drücke '/' für mehr Optionen…",CODE
LOWfrontend/src/i18n/lang/de-swiss.json1231 "placeholder": "Füge deinen Kommentar hinzu, drücke '/' für weitere Optionen…",CODE
LOW⚡frontend/src/i18n/lang/de-swiss.json1254 "placeholder": "Gib eine Beschreibung ein, drücke '/' für mehr Optionen…"CODE
LOW⚡frontend/src/i18n/lang/de-swiss.json1257 "placeholder": "Schriib, um en User zuezwiise…",CODE
LOW⚡frontend/src/i18n/lang/de-swiss.json1263 "placeholder": "Beginne zu schreiben, um ein Label hinzuzufügen…",CODE
LOWfrontend/src/i18n/lang/de-swiss.json1528 "placeholder": "Schriib en Befehl oder suech…",CODE
LOWfrontend/src/i18n/lang/el-GR.json491 "namePlaceholder": "π.χ. Lorem Ipsum",CODE
LOWfrontend/src/i18n/lang/el-GR.json688 "placeholder": "Πληκτρολογήστε για αναζήτηση ή φιλτράρισμα ερωτήματος…",CODE
LOWfrontend/src/i18n/lang/el-GR.json982 "placeholder": "Πληκτρολογήστε κάποιο κείμενο ή πατήστε '/' για να δείτε περισσότερες επιλογές…",CODE
LOWfrontend/src/i18n/lang/el-GR.json1231 "placeholder": "Προσθέστε το σχόλιό σας, πατήστε '/' για περισσότερες επιλογές…",CODE
LOW⚡frontend/src/i18n/lang/el-GR.json1254 "placeholder": "Εισαγάγετε μια περιγραφή για το έργο, πατήστε '/' για περισσότερες επιλογές…"CODE
LOW⚡frontend/src/i18n/lang/el-GR.json1257 "placeholder": "Πληκτρολογήστε για να αναθέσετε σε χρήστη…",CODE
LOW⚡frontend/src/i18n/lang/el-GR.json1263 "placeholder": "Πληκτρολογήστε για να προσθέσετε ετικέτα…",CODE
LOWfrontend/src/i18n/lang/el-GR.json1528 "placeholder": "Πληκτρολογήστε εντολή ή κάντε αναζήτηση…",CODE
LOWfrontend/src/i18n/lang/it-IT.json310 "namePlaceholder": "es. Lorem Ipsum",CODE
LOWfrontend/src/i18n/lang/it-IT.json477 "placeholder": "Digitare una ricerca o un filtro query…",CODE
LOWfrontend/src/i18n/lang/it-IT.json656 "placeholder": "Digita del testo o premi '/' per vedere più opzioni…",CODE
LOWfrontend/src/i18n/lang/it-IT.json871 "placeholder": "Aggiungi il tuo commento, premi '/' per altre opzioni…",CODE
LOW⚡frontend/src/i18n/lang/it-IT.json889 "placeholder": "Inserisci una descrizione per questo progetto, premi '/' per altre opzioni…"CODE
LOW⚡frontend/src/i18n/lang/it-IT.json892 "placeholder": "Digita per assegnare un utente…",CODE
LOW⚡frontend/src/i18n/lang/it-IT.json898 "placeholder": "Digita per aggiungere un'etichetta…",CODE
LOWfrontend/src/i18n/lang/it-IT.json1145 "placeholder": "Digita un comando o cerca…",CODE
LOWfrontend/src/i18n/lang/ko-KR.json278 "namePlaceholder": "예: Lorem Ipsum",CODE
LOWfrontend/src/i18n/lang/ko-KR.json422 "placeholder": "검색 또는 필터 쿼리 입력...",CODE
LOWfrontend/src/i18n/lang/ko-KR.json595 "placeholder": "더 많은 옵션을 보려면 텍스트를 입력하거나 '/'를 누르세요...",CODE
LOWfrontend/src/i18n/lang/ko-KR.json802 "placeholder": "댓글을 추가하고 더 많은 옵션을 보려면 '/'를 누르세요...",CODE
LOW⚡frontend/src/i18n/lang/ko-KR.json817 "placeholder": "설명을 입력하고 더 많은 옵션을 보려면 '/'를 누르세요..."CODE
LOW⚡frontend/src/i18n/lang/ko-KR.json820 "placeholder": "사용자를 할당하려면 입력...",CODE
LOW⚡frontend/src/i18n/lang/ko-KR.json826 "placeholder": "레이블을 추가하려면 입력...",CODE
LOWfrontend/src/i18n/lang/ko-KR.json1051 "placeholder": "명령을 입력하거나 검색...",CODE
643 more matches not shown…
Hyper-Verbose Identifiers211 hits · 234 pts
SeverityFileLineSnippetContext
LOWfrontend/tests/support/filterTestHelpers.ts4export async function createTasksWithPriorities(buckets?: any[]) {CODE
LOWfrontend/tests/e2e/project/project-history.spec.ts7async function visitProjectsToBuildHistory(page: Page, projects: any[]) {CODE
LOWfrontend/tests/e2e/task/comment-sort-order.spec.ts14async function createCommentsWithTimestamps(count: number, taskId = 1) {CODE
LOWfrontend/tests/e2e/task/bucket-select.spec.ts92 async function createTaskWithMultipleKanbanViews() {CODE
LOW…d/tests/e2e/task/related-tasks-quick-add-magic.spec.ts19function relationTaskSearchResults(page) {CODE
LOWfrontend/tests/e2e/task/task.spec.ts73async function uploadAttachmentAndVerify(page: Page, taskId: number, file = 'tests/fixtures/image.jpg') {CODE
LOWfrontend/tests/e2e/task/task.spec.ts836 async function openDueDatePopupWithShortcut(page: Page): Promise<Locator> {CODE
LOWfrontend/src/composables/useCopyToClipboard.ts7 function fallbackCopyTextToClipboard(text: string) {CODE
LOWfrontend/src/composables/useWebSocket.ts41function setFirstConnectionSettled(settled: boolean) {CODE
LOWfrontend/src/composables/useWebSocket.ts191function isAwaitingFirstConnection(): boolean {CODE
LOWfrontend/src/stores/base.ts59 function setCurrentProjectIfNotSet(project: Pick<ProjectResponse, 'id'>) {CODE
LOWfrontend/src/stores/base.ts73 function setKeyboardShortcutsActive(value: boolean) {CODE
LOWfrontend/src/stores/base.test.ts97function seedProjectWithBackground(id: number) {CODE
LOWfrontend/src/stores/auth.ts84function redirectToSpecifiedProvider() {CODE
LOWfrontend/src/components/token/ApiTokenForm.vue221function toggleGroupPermissionsFromChild(group: string, checked: boolean) {CODE
LOWfrontend/src/components/misc/OpenQuickActions.vue11function openQuickActionsViaHotkey(event: KeyboardEvent) {CODE
LOW…d/src/components/tasks/partials/commentReplyContext.ts14export function scrollAndHighlightComment(id: number): void {CODE
LOWfrontend/src/components/tasks/partials/Attachments.vue387function syncDropzoneTeleportTarget() {CODE
LOWfrontend/src/components/tasks/partials/RelatedTasks.vue252function sortTasksForRelationSearch(tasks: ITask[]) {CODE
LOW…ntend/src/components/tasks/partials/ReminderDetail.vue212function updateDataAndMaybeCloseNow(close: () => void) {CODE
LOWfrontend/src/components/input/Reactions.vue131function hasCurrentUserReactedWithEmoji(value: string | number): boolean {CODE
LOW…tend/src/components/input/filter/FilterAutocomplete.ts61export function calculateReplacementRange(CODE
LOWfrontend/src/components/input/filter/FilterInput.vue194function setEditorContentFromModelValue(newValue: string | undefined) {CODE
LOW…/components/input/editor/deleteSelectionBeforeEnter.ts11function splitAfterDeleteWouldLeaveDocumentLevelPosition(state: EditorState): boolean {CODE
LOWfrontend/src/components/project/views/ProjectTable.vue434function setActiveColumnsSortParam() {CODE
LOWfrontend/src/components/project/views/ProjectKanban.vue535function handleTaskContainerScroll(id: number, el: HTMLElement) {CODE
LOWfrontend/src/components/project/views/ProjectKanban.vue707function handleRecurringTaskCompletion() {CODE
LOWfrontend/src/views/user/settings/ApiTokens.test.ts91async function openDeleteModalForFirstToken(wrapper: VueWrapper) {CODE
LOW…ontend/src/views/user/settings/GeneralSettingsForm.vue451function enforceBackgroundBrightnessBounds() {CODE
LOWfrontend/src/views/project/ProjectView.vue53function redirectToDefaultViewIfNecessary() {CODE
LOWfrontend/src/client/requestContext.ts10export function captureClientRequestContext(): ClientRequestContext {CODE
LOWfrontend/src/client/requestContext.ts18export function isClientRequestContextCurrent(context: ClientRequestContext): boolean {CODE
LOWfrontend/src/client/requestContext.ts29export function assertClientRequestContext(context: ClientRequestContext): void {CODE
LOWfrontend/src/client/requestContext.ts67export function assertClientRequestMatchesContext(CODE
LOWfrontend/src/client/queries/account.ts232export function updateSettingsMutationOptions() {CODE
LOWfrontend/src/client/queries/account.ts249export function useUpdateSettingsMutation() {CODE
LOWfrontend/src/client/queries/account.ts253export function updateFrontendSettingsMutationOptions() {CODE
LOWfrontend/src/client/queries/account.ts278export function useUpdateFrontendSettingsMutation() {CODE
LOWfrontend/src/client/queries/comments.ts104export function createCommentMutationOptions() {CODE
LOWfrontend/src/client/queries/comments.ts149export function updateCommentMutationOptions() {CODE
LOWfrontend/src/client/queries/comments.ts174export function deleteCommentMutationOptions() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts7export function requestDeletionMutationOptions() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts14export function useRequestDeletionMutation() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts18export function confirmDeletionMutationOptions() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts28export function useConfirmDeletionMutation() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts32export function cancelDeletionMutationOptions() {CODE
LOW⚡frontend/src/client/queries/accountDeletion.ts42export function useCancelDeletionMutation() {CODE
LOWfrontend/src/client/queries/migration.ts67export function migrationAuthMutationOptions() {CODE
LOWfrontend/src/client/queries/migration.ts110export function startMigrationMutationOptions() {CODE
LOWfrontend/src/client/queries/migration.ts124export function migrationCompletedMutationOptions() {CODE
LOWfrontend/src/client/queries/migration.ts139export function previewCsvMutationOptions() {CODE
LOWfrontend/src/client/queries/projects.ts219export function getSavedFilterIdFromProjectId(projectId: number): number {CODE
LOWfrontend/src/client/queries/projects.ts223export function getProjectIdFromSavedFilterId(savedFilterId: number): number {CODE
LOWfrontend/src/client/queries/projects.ts281export function createProjectMutationOptions() {CODE
LOWfrontend/src/client/queries/projects.ts298export function updateProjectMutationOptions(successMessage?: string) {CODE
LOWfrontend/src/client/queries/projects.ts348export function patchProjectFavoriteMutationOptions() {CODE
LOWfrontend/src/client/queries/projects.ts384export function setProjectSubscriptionMutationOptions() {CODE
LOWfrontend/src/client/queries/projects.ts420export function deleteProjectMutationOptions() {CODE
LOWfrontend/src/client/queries/projects.ts446export function duplicateProjectMutationOptions() {CODE
LOW⚡frontend/src/client/queries/projects.ts481export function usePatchProjectFavoriteMutation() {CODE
151 more matches not shown…
Verbosity Indicators43 hits · 81 pts
SeverityFileLineSnippetContext
LOWfrontend/tests/e2e/filters/filter-autocomplete.spec.ts161 // Step 1: Create a filter with multi-value project using 'in' operatorCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts192 // Step 2: Save the filter and verify no errorCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts199 // Step 3: Open the filter settings menu from sidebar and click EditCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts225 // Step 4: Add a trailing space (the bug trigger from #2010)COMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts232 // Step 5: Save again and wait for the modal to close (indicates save complete)COMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts238 // Step 6: Assert no error occurredCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts241 // Step 7: Reload and re-open edit to verify the filter text is still intactCOMMENT
LOWfrontend/src/helpers/ganttTaskTree.ts21 // Step 1: Build parent -> children mappingCOMMENT
LOW⚡frontend/src/helpers/ganttTaskTree.ts43 // Step 2: Find root tasks (no parent in the current view)COMMENT
LOW⚡frontend/src/helpers/ganttTaskTree.ts51 // Step 3: Depth-first flattenCOMMENT
LOWveans/internal/bootstrap/botuser.go69 // Step 3: try creating.COMMENT
LOW⚡pkg/caldavtests/relations_test.go90 // Step 1: Child arrives firstCOMMENT
LOW⚡pkg/caldavtests/relations_test.go97 // Step 2: Parent arrives later (no RELATED-TO)COMMENT
LOW⚡pkg/caldavtests/relations_test.go102 // Step 3: Verify parent has correct title (not DUMMY-UID)COMMENT
LOW⚡pkg/caldavtests/relations_test.go109 // Step 4: Verify child still has parent relationCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go33 // Step 1: Discover principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go39 // Step 2: Get calendar-home-set from principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go45 // Step 3: List calendarsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go52 // Step 4: Check CTag for a specific calendarCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go56 // Step 5: Full sync — calendar-query to get all task ETagsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go71 // Step 6: Multiget to fetch specific tasksCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go81 // Step 7: Push a local change via PUTCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go95 // Step 1: Thunderbird starts with OPTIONS to check DAV supportCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go103 // Step 2: PROPFIND on well-known for principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go110 // Step 3: PROPFIND principal for calendar-home-setCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go114 // Step 4: Thunderbird checks current-user-privilege-set to know if it can writeCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go121 // Step 5: List calendarsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go125 // Step 6: Sync via calendar-queryCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go276 // Step 1: Hit well-known endpointCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go284 // Step 2: PROPFIND the entry point for principal infoCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go288 // Step 3: PROPFIND the principal URL for calendar-home-setCOMMENT
LOWpkg/caldavtests/discovery_test.go299 // Step 4: PROPFIND Depth:1 on calendar home to list calendarsCOMMENT
LOWpkg/webtests/caldav_test.go457 // Step 1: Subtask arrives FIRST, referencing a parent that doesn't exist yet.COMMENT
LOWpkg/webtests/caldav_test.go473 // Step 2: Parent arrives with NO RELATED-TO at all.COMMENT
LOWpkg/webtests/caldav_test.go488 // Step 3: Verify relations at the DB level.COMMENT
LOWpkg/webtests/caldav_test.go528 // Step 1: Parent created first (no RELATED-TO).COMMENT
LOWpkg/webtests/caldav_test.go542 // Step 2: Subtask arrives with RELATED-TO;RELTYPE=PARENT.COMMENT
LOWpkg/webtests/caldav_test.go557 // Step 3: Parent is re-synced (updated) — still no RELATED-TO.COMMENT
LOWpkg/webtests/caldav_test.go572 // Step 4: Verify relations still intact after parent re-sync.COMMENT
LOWpkg/webtests/caldav_test.go607 // Step 1: First subtask arrives, parent doesn't exist yet.COMMENT
LOWpkg/webtests/caldav_test.go622 // Step 2: Second subtask arrives, parent should exist as DUMMY now.COMMENT
LOWpkg/webtests/caldav_test.go637 // Step 3: Parent arrives with NO RELATED-TO.COMMENT
LOWpkg/webtests/caldav_test.go651 // Step 4: Verify all relations intact and no DUMMY tasks.COMMENT
Structural Annotation Overuse43 hits · 81 pts
SeverityFileLineSnippetContext
LOWfrontend/tests/e2e/filters/filter-autocomplete.spec.ts161 // Step 1: Create a filter with multi-value project using 'in' operatorCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts192 // Step 2: Save the filter and verify no errorCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts199 // Step 3: Open the filter settings menu from sidebar and click EditCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts225 // Step 4: Add a trailing space (the bug trigger from #2010)COMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts232 // Step 5: Save again and wait for the modal to close (indicates save complete)COMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts238 // Step 6: Assert no error occurredCOMMENT
LOW⚡frontend/tests/e2e/filters/filter-autocomplete.spec.ts241 // Step 7: Reload and re-open edit to verify the filter text is still intactCOMMENT
LOWfrontend/src/helpers/ganttTaskTree.ts21 // Step 1: Build parent -> children mappingCOMMENT
LOW⚡frontend/src/helpers/ganttTaskTree.ts43 // Step 2: Find root tasks (no parent in the current view)COMMENT
LOW⚡frontend/src/helpers/ganttTaskTree.ts51 // Step 3: Depth-first flattenCOMMENT
LOWveans/internal/bootstrap/botuser.go69 // Step 3: try creating.COMMENT
LOW⚡pkg/caldavtests/relations_test.go90 // Step 1: Child arrives firstCOMMENT
LOW⚡pkg/caldavtests/relations_test.go97 // Step 2: Parent arrives later (no RELATED-TO)COMMENT
LOW⚡pkg/caldavtests/relations_test.go102 // Step 3: Verify parent has correct title (not DUMMY-UID)COMMENT
LOW⚡pkg/caldavtests/relations_test.go109 // Step 4: Verify child still has parent relationCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go33 // Step 1: Discover principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go39 // Step 2: Get calendar-home-set from principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go45 // Step 3: List calendarsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go52 // Step 4: Check CTag for a specific calendarCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go56 // Step 5: Full sync — calendar-query to get all task ETagsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go71 // Step 6: Multiget to fetch specific tasksCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go81 // Step 7: Push a local change via PUTCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go95 // Step 1: Thunderbird starts with OPTIONS to check DAV supportCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go103 // Step 2: PROPFIND on well-known for principalCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go110 // Step 3: PROPFIND principal for calendar-home-setCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go114 // Step 4: Thunderbird checks current-user-privilege-set to know if it can writeCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go121 // Step 5: List calendarsCOMMENT
LOW⚡pkg/caldavtests/client_compat_test.go125 // Step 6: Sync via calendar-queryCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go276 // Step 1: Hit well-known endpointCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go284 // Step 2: PROPFIND the entry point for principal infoCOMMENT
LOW⚡pkg/caldavtests/discovery_test.go288 // Step 3: PROPFIND the principal URL for calendar-home-setCOMMENT
LOWpkg/caldavtests/discovery_test.go299 // Step 4: PROPFIND Depth:1 on calendar home to list calendarsCOMMENT
LOWpkg/webtests/caldav_test.go457 // Step 1: Subtask arrives FIRST, referencing a parent that doesn't exist yet.COMMENT
LOWpkg/webtests/caldav_test.go473 // Step 2: Parent arrives with NO RELATED-TO at all.COMMENT
LOWpkg/webtests/caldav_test.go488 // Step 3: Verify relations at the DB level.COMMENT
LOWpkg/webtests/caldav_test.go528 // Step 1: Parent created first (no RELATED-TO).COMMENT
LOWpkg/webtests/caldav_test.go542 // Step 2: Subtask arrives with RELATED-TO;RELTYPE=PARENT.COMMENT
LOWpkg/webtests/caldav_test.go557 // Step 3: Parent is re-synced (updated) — still no RELATED-TO.COMMENT
LOWpkg/webtests/caldav_test.go572 // Step 4: Verify relations still intact after parent re-sync.COMMENT
LOWpkg/webtests/caldav_test.go607 // Step 1: First subtask arrives, parent doesn't exist yet.COMMENT
LOWpkg/webtests/caldav_test.go622 // Step 2: Second subtask arrives, parent should exist as DUMMY now.COMMENT
LOWpkg/webtests/caldav_test.go637 // Step 3: Parent arrives with NO RELATED-TO.COMMENT
LOWpkg/webtests/caldav_test.go651 // Step 4: Verify all relations intact and no DUMMY tasks.COMMENT
Hallucination Indicators7 hits · 70 pts
SeverityFileLineSnippetContext
CRITICALfrontend/src/composables/useSavedFilter.test.ts172 draft.filter.value.filters.sort_by.push('title')CODE
CRITICALfrontend/src/composables/useSavedFilter.test.ts194 state.value.filter.value.filters.sort_by.push('title')CODE
CRITICALfrontend/src/composables/useSavedFilter.test.ts195 state.value.filter.value.filters.order_by.push('asc')CODE
CRITICAL…onents/input/editor/deleteSelectionBeforeEnter.test.ts47 return editor.state.doc.content.content.map(node => node.type.name)CODE
CRITICALfrontend/src/views/tasks/TaskDetailView.vue40 v-if="typeof router.options.history.state.back === 'string' && router.options.history.state.back.includes('/projecCODE
CRITICAL.github/workflows/preview.yml93 const shortSha = shaTag ? shaTag.replace('sha-', '').substring(0, 7) : context.payload.pull_request.head.shaCODE
CRITICALpkg/routes/api/v1/redoc/redoc.standalone.js41`;class As extends n.PureComponent{render(){return n.createElement("div",{style:{textAlign:"center"}},n.createElement(_sCODE
Decorative Section Separators8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMdesktop/main.js221// ─── Express server ──────────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js254// ─── Zoom ────────────────────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js308// ─── Main window ─────────────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js372// ─── Quick Entry window ──────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js476// ─── System tray ─────────────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js527// ─── IPC handlers ────────────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js554// ─── Shortcut management ────────────────────────────────────────────COMMENT
MEDIUMdesktop/main.js582// ─── App lifecycle ───────────────────────────────────────────────────COMMENT
AI Slop Vocabulary5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/test.yml479 # so the test harness can authenticate against /api/v1/test/.COMMENT
MEDIUMpkg/cmd/migrate.go35// list -> Essentially just show the table, maybe with an extra column if the migration did run or notCOMMENT
MEDIUM⚡pkg/routes/api/v1/redoc/redoc.standalone.js2!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):"function"==typeof deCODE
MEDIUM⚡pkg/routes/api/v1/redoc/redoc.standalone.js2!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):"function"==typeof deCODE
MEDIUM⚡pkg/routes/api/v1/redoc/redoc.standalone.js2!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):"function"==typeof deCODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHcliff.toml0{% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%y-%m-%d") }} {% else %STRING
HIGHfrontend/cliff.toml0{% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%y-%m-%d") }} {% else %STRING
HIGHdesktop/cliff.toml0{% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%y-%m-%d") }} {% else %STRING
Redundant / Tautological Comments5 hits · 10 pts
SeverityFileLineSnippetContext
LOWfrontend/scripts/fonts-subset.sh95 # Check if the output font file already existsCOMMENT
LOW⚡frontend/scripts/fonts-subset.sh123# Check if fonttools is availableCOMMENT
LOW⚡frontend/scripts/fonts-subset.sh131# Check if pyftsubset is available (part of fonttools)COMMENT
LOW⚡frontend/scripts/fonts-subset.sh139# Check if brotli is availableCOMMENT
LOW.github/workflows/nixpkgs-update.yml35 # Check if there's already an open PR updating vikunja (from us or r-ryantm)COMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM⚡frontend/scripts/fonts-subset.sh149echo "# Create a partial instance of the variable font"CODE
MEDIUMfrontend/src/components/base/Expandable.vue81# The following functions are called by the js hooks of the transitions.COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/src/components/base/BasePagination.vue85// Layout/scaffold rules ported from bulma-css-variables/sass/components/pagination.sass.COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpkg/models/subscription_test.go194 // TODO: Add tests to test triggering of notifications for subscribed thingsCOMMENT