ToolJet is the open-source foundation of ToolJet AI - the enterprise app generation platform for building internal tools, dashboard, business applications, workflows and AI agents 🚀
This report presents the forensic synthetic code analysis of ToolJet/ToolJet, a JavaScript project with 40,787 GitHub stars. SynthScan v2.0 examined 1,401,391 lines of code across 7225 source files, recording 3730 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 3.9 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 3730 distinct pattern matches across 18 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/nsjail/python-execution.cfg | 17 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 23 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 25 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 39 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 41 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 49 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 51 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 74 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 76 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 94 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 96 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 102 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 104 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 136 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 138 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 142 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 144 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 148 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 150 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 155 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 157 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 176 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 178 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 187 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 230 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 232 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 240 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 242 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 249 | # ============================================================================ | COMMENT |
| MEDIUM | docker/nsjail/python-execution.cfg | 1 | # ============================================================================ | COMMENT |
| MEDIUM | docker/nsjail/python-execution.cfg | 3 | # ============================================================================ | COMMENT |
| MEDIUM | frontend/src/HomePage/AppMenu.jsx | 42 | // ─── Ownership ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/HomePage/AppMenu.jsx | 45 | // ─── App-level edit access ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/_styles/queryManager.scss | 1935 | // ─── Query Folder Feature ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 66 | // ── Case 1: same FlexContainer → reorder only, no grid writes ────────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 98 | // ── Case 2: different FlexContainer → reparent at the locked slot ────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 134 | // ── Case 3: dragged out to grid canvas → synthesize absolute layout ───────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/QueryManager/queryManager.theme.scss | 294 | // ─── DataSourcePicker ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 17 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 32 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 217 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 248 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 222 | // ─── Segment Builders ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 321 | // ─── Full Initialization ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 349 | // ─── Getter (backward compat) ───────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 359 | // ─── Context-Aware Hints ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 498 | // ─── Server-side Global Resolve ──────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 521 | // ─── Helper ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tores/slices/componentSlices/listViewComponentSlice.js | 249 | // ─── Row-Scoped Component Resolution ─────────────────────────────────────── | COMMENT |
| MEDIUM | …tores/slices/componentSlices/listViewComponentSlice.js | 268 | // ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 16 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 19 | // ── High-level model ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 54 | // ── Pipeline ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 64 | // ── Key concepts ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 78 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 965 | // ── GROW / SHRINK (changed widget is in flow) ─────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 982 | // ── HIDE / SHOW (changed widget is out of flow, `collapseWhenHidden`) ─────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 35 | // ── Default ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 44 | // ── Compact ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 53 | // ── Loading ───────────────────────────────────────────────────────────────── | COMMENT |
| 830 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/assets/translations/zh.json | 520 | "placeholder": "占位符", | CODE |
| LOW | frontend/assets/translations/de.json | 489 | "placeholder": "Platzhalter", | CODE |
| LOW | frontend/assets/translations/ru.json | 489 | "placeholder": "Плейсхолдер", | CODE |
| LOW | frontend/assets/translations/uk.json | 489 | "placeholder": "Плейсхолдер", | CODE |
| LOW | frontend/assets/translations/en.json | 608 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/it.json | 489 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/fr.json | 489 | "placeholder": "Espace réservé", | CODE |
| LOW | frontend/assets/translations/id.json | 488 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/es.json | 523 | "placeholder": "Marcador", | CODE |
| LOW | …end/src/AppBuilder/WidgetManager/widgets/codeEditor.js | 51 | defaultValue: 'placeholder', | CODE |
| LOW | frontend/src/AppBuilder/WidgetManager/widgets/form.js | 91 | "{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming', 'cyc | CODE |
| LOW | frontend/src/AppBuilder/WidgetManager/widgets/form.js | 91 | "{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming', 'cyc | CODE |
| LOW | …/AppBuilder/RightSideBar/Inspector/Components/Chat.jsx | 55 | 'placeholder', | CODE |
| LOW | …or/Components/Form/_components/FieldPopoverContent.jsx | 86 | onChange={(value) => handleFieldChange('placeholder', value)} | CODE |
| LOW | …nspector/Components/Form/handlers/parameterHandlers.js | 44 | "{{{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming' | CODE |
| LOW | …nspector/Components/Form/handlers/parameterHandlers.js | 44 | "{{{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming' | CODE |
| LOW | frontend/src/AppBuilder/_hooks/useAppData.js | 885 | if (type === 'placeholder' && category === 'text') { | CODE |
| LOW | frontend/src/AppBuilder/_hooks/useAppData.js | 888 | if (category === 'text' && type === 'placeholder') { | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 132 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 226 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 253 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 345 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | …anban/helpers/multipleContainersKeyboardCoordinates.js | 80 | if (newDroppable.id === 'placeholder') { | CODE |
| LOW | …Builder/Widgets/MultiselectV2/CustomValueContainer.jsx | 63 | <Placeholder {...props} key="placeholder" {...selectProps} data={selectProps?.visibleValues}> | CODE |
| LOW | …AppBuilder/Widgets/DropdownV2/CustomValueContainer.jsx | 49 | <Placeholder {...props} key="placeholder" {...selectProps} data={props.getValue()}> | CODE |
| LOW | frontend/src/components/ui/Rocket/Field/Field.spec.md | 72 | <Input placeholder="John Doe" /> | CODE |
| LOW⚡ | …ntend/src/components/ui/Rocket/Field/Field.stories.jsx | 73 | <Input placeholder="John Doe" /> | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 206 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 206 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 261 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 261 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …ntend/src/components/ui/Rocket/Sheet/Sheet.stories.jsx | 147 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …ntend/src/components/ui/Rocket/Sheet/Sheet.stories.jsx | 147 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 36 | <AlertDialogTitle>Lorem ipsum dolor sit amet.</AlertDialogTitle> | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 36 | <AlertDialogTitle>Lorem ipsum dolor sit amet.</AlertDialogTitle> | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer elementum mattis arcu, non vulputate est | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer elementum mattis arcu, non vulputate est | CODE |
| LOW | frontend/src/_components/SortableList/utilities.js | 133 | item.children.push({ id: `${item.id}-placeholder`, name: 'placeholder' }); | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 42 | "placeholder": "Enter array of objects" | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 49 | "placeholder": "tablename", | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 60 | "placeholder": "{{['date', 'str', 'arr', 'arr2']}}", | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 441 | "placeholder": "Select table" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 451 | "placeholder": "e.g. id or {{ [\"id\", \"tenant_id\"] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 460 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 489 | "placeholder": "Select table" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 499 | "placeholder": "e.g. id or {{ [\"id\", \"tenant_id\"] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 508 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 520 | "placeholder": "Enter table name" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 530 | "placeholder": "Enter primary key column" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 539 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 22 | "placeholder": "Leave empty to use default", | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 31 | "placeholder": "Leave empty to use default", | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 47 | "placeholder": "SELECT * FROM users" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 86 | "placeholder": "Select schema" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 101 | "placeholder": "Select table" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 147 | "placeholder": "Enter limit" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 157 | "placeholder": "Enter offset" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 171 | "placeholder": "Select schema" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 186 | "placeholder": "Select table" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 209 | "placeholder": "Select schema" | CODE |
| 1934 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/pre-release/ee/ee-try-entrypoint.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 24 | # Step 2: Start ToolJet services | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 40 | // Step 1: Keep global extremes | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 52 | // Step 2: Keep local extremes for each alignment line | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 31 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 36 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 27 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 32 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 751 | // Step 1: resolve the AppGitSync record (auto-created if missing) | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 768 | // Step 2: push app content to git | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 567 | // Step 1: Authenticate with Okta to get session token | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 583 | // Step 2: Exchange session token for authorization code | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 31 | // Step 1: Verify initial draft state (v1 as draft) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 41 | // Step 2: Open save version modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 46 | // Step 3: Save v1 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 51 | // Step 4: Verify v1 saved state (no draft tag, has promote button, description visible) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 55 | // Step 5: Open create draft modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 63 | // Step 6: Create v2 draft from v1 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 68 | // Step 7: Verify v2 draft state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 73 | // Step 8: Save v2 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 76 | // Step 9: Verify v2 saved state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 80 | // Step 10: Verify both v1 and v2 available in "create from" dropdown | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 89 | // Step 11: Create v3 draft from v2 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 94 | // Step 12: Verify v3 draft state and all versions exist | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 68 | // Step 1: Verify LDAP configuration page UI | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 117 | // Step 2: Configure LDAP SSO successfully | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 137 | // Step 3: Verify LDAP login page UI | COMMENT |
| LOW | …s/licensing/basicPlanTestcases/appWorkflowLimits.cy.js | 44 | // Step 5: Verify clone button disabled at limit (Bug) | COMMENT |
| LOW | .agents/skills/commit/SKILL.md | 66 | ### Step 1: Check staging state | COMMENT |
| LOW⚡ | .agents/skills/commit/SKILL.md | 78 | ### Step 2: Stage if needed | COMMENT |
| LOW⚡ | .agents/skills/commit/SKILL.md | 86 | ### Step 3: Generate diff for commit message | COMMENT |
| LOW⚡ | .agents/skills/commit/SKILL.md | 92 | ### Step 4: Commit | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 29 | ### Step 1: Branch and base detection | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 46 | ### Step 2: Gather commits and diff | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 69 | ### Step 3: Check submodules | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 81 | ### Step 4: Check for existing PRs | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 94 | ### Step 5: Generate PR content | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 202 | ### Step 1: Push all repos | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 213 | ### Step 2: Create submodule PRs (if applicable) | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 237 | ### Step 3: Update the main PR body with submodule links | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 241 | ### Step 4: Create or update the main repo PR | COMMENT |
| LOW | .agents/skills/create-pr/SKILL.md | 259 | ### Step 5: Output results | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1467 | // Step 1: Search for packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1478 | // Step 2: Update workflow packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1489 | // Step 3: Poll bundle status until ready | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1507 | // Step 4: Verify entity in database | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1524 | // Step 5: Test rebuild functionality | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1535 | // Step 6: Verify rebuilt bundle consistency | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 262 | // Step 1: save | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 278 | // Step 2: release the just-published version to prod | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 291 | // Step 3: push the released version's commit | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 17 | // Step 1: Set app_version_id to NULL for existing global data sources | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 24 | // Step 2: Add a check constraint to ensure app_version_id is NULL for global data sources | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 5 | // Step 1: Create granular_permissions entries for folders — ONLY for DEFAULT groups | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 25 | // Step 2: Create folders_group_permissions for each new granular permission | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 5 | // Step 1: For app_versions with NULL co_relation_id, copy from a sibling version | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 22 | // Step 2: For apps with NULL co_relation_id, copy from any of their versions | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 37 | // Step 3: For remaining apps still with NULL co_relation_id (no versions have it), | COMMENT |
| LOW | …-BackfillFolderAppsDefaultBranchIdAndEnforceNotNull.ts | 19 | // Step 1: Promote branchless rows to the org's default branch. Guarded by NOT EXISTS so we | COMMENT |
| 114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …rc/SuccessInfoScreen/VerificationSuccessInfoScreen.jsx | 20 | export const VerificationSuccessInfoScreen = function VerificationSuccessInfoScreen() { | CODE |
| LOW | frontend/src/_utils/workflowExecutionState.js | 92 | export function getExecutionDisplayConfig(execution) { | CODE |
| LOW | frontend/src/_helpers/editorHelpers.js | 44 | function verifyDotAndBracketNotations(jsString) { | CODE |
| LOW | frontend/src/_helpers/editorHelpers.js | 103 | export function findComponentsWithReferences(components, changedCurrentState) { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 11 | export function readCodehinterPopupEditorDimensions() { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 26 | export function writeCodehinterPopupEditorDimensions(partial) { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 44 | export function getDefaultCodehinterPopupEditorDimensions() { | CODE |
| LOW | frontend/src/_helpers/useSessionTransferRedirect.js | 6 | export function useSessionTransferRedirect(logPrefix = 'sessionTransfer') { | CODE |
| LOW | frontend/src/_helpers/handle-response.js | 146 | export function handleResponseWithoutValidation(response) { | CODE |
| LOW | frontend/src/_helpers/gitSyncLicense.js | 18 | export function getGitSyncLicenseLockMessage(featureAccess) { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 16 | export function retrieveWhiteLabelFavicon() { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 155 | export async function resetToDefaultWhiteLabels() { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 162 | export function checkWhiteLabelsDefaultState() { | CODE |
| LOW | frontend/src/AppBuilder/_utils/auth.js | 21 | export function fetchOauthTokenForSlackAndGSheet(dataSourceId, data) { | CODE |
| LOW | frontend/src/AppBuilder/_utils/entityUsage/internals.ts | 34 | export function componentBindingExpression( | CODE |
| LOW | frontend/src/AppBuilder/_helpers/editorHelpers.js | 233 | function verifyDotAndBracketNotations(jsString) { | CODE |
| LOW | frontend/src/AppBuilder/_helpers/editorHelpers.js | 292 | export function findComponentsWithReferences(components, changedCurrentState) { | CODE |
| LOW | …end/src/AppBuilder/CodeEditor/SingleLineCodeEditor.jsx | 322 | function autoCompleteExtensionConfig(context) { | CODE |
| LOW | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 187 | function autoCompleteExtensionConfig(context) { | CODE |
| LOW | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 291 | function updateCurrentLineObserver(editorView) { | CODE |
| LOW | …/AppBuilder/AppCanvas/AutoComputeMobileLayoutAlert.jsx | 13 | export default function AutoComputeMobileLayoutAlert({ currentLayout, darkMode, isCurrentVersionLocked }) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/appCanvasUtils.js | 171 | export function addChildrenWidgetsToParent(componentType, parentId, currentLayout) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 23 | function markClipboardAsCopyAfterCutPaste(copiedComponentObj) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 131 | function calculateComponentPosition(component, existingComponents, layout, targetParentId) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 278 | export function resolvePastedComponentName({ isCut, isCloning, originalName, componentType, mergedComponents }) { | CODE |
| LOW | …ppBuilder/AppCanvas/Hooks/useEnableMainCanvasScroll.js | 5 | export default function useEnableMainCanvasScroll({ canvasContentRef, enabled = true }) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 176 | function resolveCompactionCollision(layout, item, moveToCoord, axis) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 294 | export function getMouseDistanceFromParentDiv(event, id, parentWidgetType, frozenTargetRect) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 312 | export function findHighestLevelofSelection(_selectedComponents) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 338 | export function findChildrenAndGrandchildren(parentId, widgets) { | CODE |
| LOW | …c/AppBuilder/AppCanvas/Grid/helpers/gridResizeUtils.js | 31 | export function computeFlexResizeEndPatch({ lastEvent, gridHeight }) { | CODE |
| LOW | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 36 | export function handleFlexContainerDragEnd({ | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 222 | function getComponentsOptionsWithoutModalChilds() { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 235 | function getComponentOptionsOfComponentsWithActions(componentType = '') { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 253 | function getComponentActionOptions(componentId) { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 283 | function getComponentActionDefaultParams(componentId, actionHandle) { | CODE |
| LOW | …nd/src/AppBuilder/RightSideBar/Inspector/Inspector.jsx | 230 | function handleComponentNameChange(newName) { | CODE |
| LOW | …tSideBar/Inspector/hooks/useNewEventAutoPopoverOpen.js | 16 | export function useNewEventAutoPopoverOpen(focusedEventIndex, setFocusedEventIndex) { | CODE |
| LOW | …geSettingsTab/PageMenu/DeletePageConfirmationModal.jsx | 8 | export function DeletePageConfirmationModal({ darkMode }) { | CODE |
| LOW | frontend/src/AppBuilder/CodeBuilder/CodeBuilder.jsx | 31 | // function computeIfDropDownCanBeShown(instance) { | COMMENT |
| LOW | …/QueryManager/Components/SuccessNotificationInputs.jsx | 5 | export default function SuccessNotificationInputs({ currentState, options, darkMode, optionchanged }) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 47 | function addNewFilterConditionPair() { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 54 | function removeFilterConditionPair(id) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 65 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 225 | function addNewFilterConditionEntry() { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 247 | function removeFilterConditionEntry(index) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 266 | function updateFilterConditionEntry(type, indexToUpdate, valueToUpdate) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 349 | function updateOperatorForConditions(changedOperator) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 99 | function isMatchingForeignKeyObjects(foreignKeyTableList, tableList) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 114 | function checkIfAdjacentTableHasForeignKey(isChoosingLHStable, tableId) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 136 | function autoFillColumnIfForeignKeyExists(tableId, isChoosingLHStable) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 20 | function addNewFilterConditionPair() { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 27 | function removeFilterConditionPair(id) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 38 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 26 | function addNewFilterConditionPair() { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 40 | function removeFilterConditionPair(id) { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 62 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | frontend/src/AppBuilder/_stores/utils.js | 446 | export function replaceQueryOptionsEntityReferencesWithIds( | CODE |
| LOW | frontend/src/AppBuilder/_stores/ast.js | 32 | export function extractAndReplaceReferencesFromString(input, componentIdNameMapping = {}, queryIdNameMapping = {}) { | CODE |
| LOW | …/src/AppBuilder/_stores/utils/appDataCaseConversion.ts | 38 | export function convertAllKeysToSnakeCase(o: JsonValue): JsonValue { | CODE |
| 206 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/nsjail/python-execution.cfg | 1 | # ============================================================================ | COMMENT |
| LOW | docker/nsjail/python-execution.cfg | 141 | COMMENT | |
| LOW | docker/nsjail/python-execution.cfg | 181 | # - Debug other processes (ptrace) | COMMENT |
| LOW | docker/nsjail/python-execution.cfg | 241 | # EXECUTION | COMMENT |
| LOW | frontend/webpack.config.js | 141 | }, | COMMENT |
| LOW | frontend/webpack.config.js | 161 | // // HEAVY EDITORS GROUP - Split these out as they're HUGE and editor-only | COMMENT |
| LOW | frontend/webpack.config.js | 181 | // pdf: { | COMMENT |
| LOW | frontend/webpack.config.js | 201 | // test: /[\\/]node_modules[\\/](@radix-ui|bootstrap|react-bootstrap|@dnd-kit|react-dnd|react-dnd-html5-backen | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 701 | // return isFound; | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 721 | // // return previewQuery(_ref, query, true, processedParams); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 741 | // return executeAction(_ref, event, mode, {}); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 761 | // return executeAction(_ref, event, mode, {}); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 781 | // const showModal = (modalName = '') => { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 801 | // } | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 821 | // const event = { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 841 | COMMENT | |
| LOW | frontend/src/_helpers/utils.js | 861 | // const event = { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 881 | // }); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 901 | // }; | COMMENT |
| LOW | frontend/src/_helpers/gitSyncLicense.js | 1 | // Single source of truth for "git sync is not covered by the current license". | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 61 | // Set AI cookie if prompt is available | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 161 | // const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 181 | // } | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 201 | // if (compressedPrompt) { | COMMENT |
| LOW | frontend/src/HomePage/HomePage.jsx | 1441 | /* allow on network error */ | COMMENT |
| LOW | frontend/src/AppBuilder/_utils/queryAbort.js | 1 | // Runtime state for the "abort in-flight query" feature. | COMMENT |
| LOW | …end/src/AppBuilder/WidgetManager/widgets/filepicker.js | 301 | // accordian: 'File Drop Area', | COMMENT |
| LOW | …/src/AppBuilder/WidgetManager/widgets/currencyinput.js | 241 | accordian: 'field', | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/selecto.scss | 1 | // .active-target::after{ | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/selecto.scss | 21 | // position: absolute; | COMMENT |
| LOW | …src/AppBuilder/AppCanvas/Hooks/useCanvasDropHandler.js | 101 | setRightSidebarOpen(true); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 1 | // // hooks.js | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 21 | // useGridStore.getState().actions.setDraggingComponentId(e.target.id); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 41 | // const { draggedOverElemId, isParentChangeAllowed } = getDraggedOverInfo(e, widgets, boxes); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 61 | // ); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 81 | // const resizeData = calculateResizeData(e, _gridWidth, currentWidget); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 101 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 121 | // const dragData = calculateGroupDragData(events, positions, _gridWidth, parentId); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 141 | // } | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 161 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 181 | // const isHandle = targetElems.find((ele) => ele.classList.contains('handle-content')); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 201 | // let left = e.translate[0]; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 221 | // if (draggedOverElem && draggedOverElem !== draggedOverElemRef.current) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 241 | // (ele) => ele.id !== e.target.id && (ele.classList.contains('target') || ele.classList.contains('real-canvas')) | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 261 | // const elemContainer = e.target.closest('.real-canvas'); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 281 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 301 | // function getCurrentLayout(id, boxes) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 321 | // if (isTopChanged) transformY -= height - currentLayout.height; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 341 | // const transformY = Math.round(e.lastEvent.drag.beforeTranslate[1] / 10) * 10; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 361 | // return events.map((ev) => { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 381 | // }); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 401 | // function arePositionsValid(positions) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 421 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 441 | // const posX = layout.left * _gridWidth; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 461 | // y: childRect.top - grandparentRect.top, | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 1 | // export const MultiComponentHandle = { | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 21 | // }, | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 41 | // height="12" | COMMENT |
| LOW | …rc/AppBuilder/RightSideBar/Inspector/EventManager.scss | 1 | // Base UI Combobox renders its Positioner with a hardcoded `tw-isolate tw-z-50` | COMMENT |
| LOW | …ilder/RightSideBar/Inspector/Components/FilePicker.jsx | 141 | // Properties -> 0, Events -> 1, Validation -> 2 | COMMENT |
| 224 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/pre-release/ee/ee-try-entrypoint.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 24 | # Step 2: Start ToolJet services | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 40 | // Step 1: Keep global extremes | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 52 | // Step 2: Keep local extremes for each alignment line | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 31 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 36 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 27 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 32 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 751 | // Step 1: resolve the AppGitSync record (auto-created if missing) | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 768 | // Step 2: push app content to git | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 567 | // Step 1: Authenticate with Okta to get session token | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 583 | // Step 2: Exchange session token for authorization code | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 31 | // Step 1: Verify initial draft state (v1 as draft) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 41 | // Step 2: Open save version modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 46 | // Step 3: Save v1 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 51 | // Step 4: Verify v1 saved state (no draft tag, has promote button, description visible) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 55 | // Step 5: Open create draft modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 63 | // Step 6: Create v2 draft from v1 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 68 | // Step 7: Verify v2 draft state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 73 | // Step 8: Save v2 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 76 | // Step 9: Verify v2 saved state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 80 | // Step 10: Verify both v1 and v2 available in "create from" dropdown | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 89 | // Step 11: Create v3 draft from v2 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 94 | // Step 12: Verify v3 draft state and all versions exist | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 68 | // Step 1: Verify LDAP configuration page UI | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 117 | // Step 2: Configure LDAP SSO successfully | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 137 | // Step 3: Verify LDAP login page UI | COMMENT |
| LOW | …s/licensing/basicPlanTestcases/appWorkflowLimits.cy.js | 44 | // Step 5: Verify clone button disabled at limit (Bug) | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1467 | // Step 1: Search for packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1478 | // Step 2: Update workflow packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1489 | // Step 3: Poll bundle status until ready | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1507 | // Step 4: Verify entity in database | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1524 | // Step 5: Test rebuild functionality | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1535 | // Step 6: Verify rebuilt bundle consistency | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 262 | // Step 1: save | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 278 | // Step 2: release the just-published version to prod | COMMENT |
| LOW | …/external-apis/e2e/promote-to-next-version.e2e-spec.ts | 291 | // Step 3: push the released version's commit | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 17 | // Step 1: Set app_version_id to NULL for existing global data sources | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 24 | // Step 2: Add a check constraint to ensure app_version_id is NULL for global data sources | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 5 | // Step 1: Create granular_permissions entries for folders — ONLY for DEFAULT groups | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 25 | // Step 2: Create folders_group_permissions for each new granular permission | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 5 | // Step 1: For app_versions with NULL co_relation_id, copy from a sibling version | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 22 | // Step 2: For apps with NULL co_relation_id, copy from any of their versions | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 37 | // Step 3: For remaining apps still with NULL co_relation_id (no versions have it), | COMMENT |
| LOW | …-BackfillFolderAppsDefaultBranchIdAndEnforceNotNull.ts | 19 | // Step 1: Promote branchless rows to the org's default branch. Guarded by NOT EXISTS so we | COMMENT |
| LOW | …-BackfillFolderAppsDefaultBranchIdAndEnforceNotNull.ts | 38 | // Step 2: Delete any branchless rows that could not be promoted (the app is already mapped on | COMMENT |
| LOW⚡ | …-BackfillFolderAppsDefaultBranchIdAndEnforceNotNull.ts | 53 | // Step 3: branch_id is now populated for every row (every org has a default branch), so make | COMMENT |
| LOW⚡ | …-BackfillFolderAppsDefaultBranchIdAndEnforceNotNull.ts | 58 | // Step 4: The partial index enforcing one folder per app for the NULL-branch convention can | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 5 | // Step 1: Add nullable branch_id — PostgreSQL 11+ makes this instant (catalog-only change) | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 16 | // Step 2: Replace uniq_folder_apps_app_id (global, app_id only) with two partial indexes. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 35 | // Step 3: Add FK with NOT VALID — skips the full table scan that a plain ADD FOREIGN KEY | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 47 | // Step 4: Materialise branch-scoped rows for git orgs using app_versions as source of truth. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 64 | // Step 5: Delete the now-replaced branchless rows for git orgs. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 80 | // Step 6: Validate FK — takes SHARE UPDATE EXCLUSIVE (allows concurrent reads/writes) | COMMENT |
| LOW | server/src/modules/versions/util.service.ts | 265 | // Step 1: random UUID name for the new draft. Mirrors branch-version | COMMENT |
| LOW | server/src/modules/app-environments/ability/index.ts | 41 | // we need to check if the user has general permissions to view environments | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 23 | # Step 1: Navigate to submodule directory | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 27 | # Step 2: Get the latest commit hash from main branch | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 35 | # Step 3: Checkout to the latest main commit | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | marketplace/plugins/portkey/lib/manifest.json | 38 | "helpText": "How to obtain API Key: <a href='https://docs.portkey.ai/docs/api-reference/authentication#obtaining-y | CODE |
| HIGH | marketplace/plugins/portkey/lib/manifest.json | 58 | "helpText": "How to obtain Gateway URL: <a href='https://docs.portkey.ai/docs/api-reference/authentication#obtaini | CODE |
| HIGH | docs/docs/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | docs/docs/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| HIGH | …docs/version-2.50.0-LTS/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | …docs/version-2.50.0-LTS/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| HIGH | …_docs/version-3.0.0-LTS/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | …_docs/version-3.0.0-LTS/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ver/templates/personal-finance-tracker/definition.json | 350 | "value": "{{`Add to ${components.transactionForm.data.transactionType.value.toLowerCase()}s`}}" | CODE |
| CRITICAL | …ver/templates/personal-finance-tracker/definition.json | 2340 | "message": "{{`Failed to add ${components.transactionForm.data.transactionType.value.toLowerCase()}! Ple | CODE |
| CRITICAL | …er/templates/student-management-system/definition.json | 4842 | "value": "{{components.add_student_form.data.course_input.values.join(\",\")}}" | CODE |
| CRITICAL | …er/templates/student-management-system/definition.json | 4998 | "value": "{{components.update_student.data.update_courses.values.join(\",\")}}" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docker/nsjail/python-execution.cfg | 65 | # Open file descriptors limit | COMMENT |
| LOW | docker/pre-release/ee/ee-entrypoint.sh | 37 | # Check if PGRST_HOST starts with "localhost" | COMMENT |
| LOW | docker/LTS/ee/ee-entrypoint.sh | 37 | # Check if PGRST_HOST starts with "localhost" | COMMENT |
| LOW | deploy/docker/external.sh | 6 | # Check if LOCKBOX_MASTER_KEY is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 24 | # Check if SECRET_KEY_BASE is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 42 | # Check if PGRST_JWT_SECRET is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 65 | # Check if PG_USER, PG_HOST, PG_PASS, PG_DB are present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 6 | # Check if LOCKBOX_MASTER_KEY is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 24 | # Check if SECRET_KEY_BASE is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 42 | # Check if PGRST_JWT_SECRET is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 65 | # Check if PG_PASS and TOOLJET_DB_PASS are present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 83 | # Check if PGRST_DB_URI is present or empty | COMMENT |
| LOW | server/scripts/wait-for-it.sh | 151 | # Check if busybox timeout uses -t flag | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 17 | # Check if submodule directory exists | COMMENT |
| LOW | release-scripts/create-release.sh | 8 | # Check if all required arguments are provided | COMMENT |
| LOW | release-scripts/create-release.sh | 19 | # Check if GITHUB_TOKEN is set in the environment | COMMENT |
| LOW | release-scripts/create-release.sh | 55 | # Check if the current user is the creator of the milestone | COMMENT |
| LOW | release-scripts/create-release.sh | 68 | # Check if release branch already exists | COMMENT |
| LOW | release-scripts/create-release.sh | 173 | # Check if release PR already exists | COMMENT |
| LOW | .github/workflows/release-automation.yml | 162 | # Check if there are any changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 674 | elif len(content) < 100: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1093 | elif err == errno.EPERM: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1095 | elif err == errno.ENOSYS: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1213 | elif result_code == -1: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 285 | // when the value is set programmatically (e.g. AI-generated code). Sync it here so | COMMENT |
| HIGH | server/src/modules/app-history/constants/index.ts | 42 | // AI-generated changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/_helpers/utils.js | 131 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | frontend/src/AppBuilder/CodeEditor/utils.js | 187 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | frontend/src/AppBuilder/_stores/utils.js | 186 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | …modules/git-sync/unit/git-object-cache.service.spec.ts | 469 | // robust even if the publish->disconnect chain grows more async hops. | COMMENT |
| MEDIUM | …rver/test/modules/git-sync/e2e/git-sync-gitlab.spec.ts | 5724 | // the given co_relation_id — robust to the folder-name layout (apps/<name>/…, modules/<name>/…). | COMMENT |
| MEDIUM | server/test/modules/git-sync/e2e/git-sync.spec.ts | 5487 | // the given co_relation_id — robust to the folder-name layout (apps/<name>/…, modules/<name>/…). | COMMENT |
| MEDIUM | …/sample-data-json-files/sample_data_organizations.json | 1 | [{"Index":1,"Organization Id":"FAB0d41d5b5d22c","Name":"Ferrell LLC","Website":"https://price.net/","Country":"Papua New | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 402 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 459 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 636 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 701 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 752 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 774 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 1391 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/dev-entrypoint.sh | 31 | # Create main application database (tooljet_production) | COMMENT |
| MEDIUM | server/dev-entrypoint.sh | 31 | # Create main application database (tooljet_production) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/assets/libs/pyodide-0.23.2/pyodide.js | 1 | !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof defin | CODE |
| LOW | …etplace/plugins/hubspot/openapi-specs/site-search.json | 149 | "values" : [ "Free HubSpot CRM", "App Marketplace", "Subscribe via Email", "Don't forget to share | CODE |
| LOW | …etplace/plugins/hubspot/openapi-specs/site-search.json | 185 | "values" : [ "Free HubSpot CRM", "App Marketplace", "Subscribe via Email", "Don't forget to share | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | server/scripts/git-migrate.py | 12 | git add -A && git commit -m "chore: migrate git-sync layout (meta-free)" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/scripts/run-e2e.sh | 8 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/scripts/git-migrate.py | 477 | CODE |