Open-source desktop SQL workspace with 3 built-in database drivers and 26 shipped driver plugins, including SQL Server, DuckDB, ClickHouse and Redis. Built-in MCP server for Claude, Cursor and Devin, SQL notebooks and visual EXPLAIN.
This report summarizes scanner evidence for TabularisDB/tabularis, a TypeScript project with 5,350 GitHub stars. SynthScan examined 483,687 lines of code across 1990 source files, recording 508 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (Low 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.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 371 finding(s).
Are imports declared and package/API names verified? 97 finding(s).
Are wrappers, guards, and repeated structures necessary? 195 finding(s).
Which changes need focused human review? 508 finding(s).
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.
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.
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.
The scanner identified 508 distinct pattern matches across 11 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | charts/tabularis/values.yaml | 21 | # -- password: built-in login page. proxy: an authenticating reverse proxy | COMMENT |
| LOW | packages/explain/src/parsers/postgres.ts | 121 | extra, | COMMENT |
| LOW | packages/web-ui/src/contexts/DatabaseProvider.tsx | 1461 | // isn't a plain capability check: an ordinary single-database Postgres | COMMENT |
| LOW | packages/web-ui/src/contexts/DatabaseProvider.tsx | 2141 | COMMENT | |
| LOW | packages/web-ui/src/utils/findUnsupportedFeatures.ts | 61 | // SSL support. | COMMENT |
| LOW | packages/web-ui/src/utils/sqlSplitter/scriptBlocks.ts | 1 | // GoogleSQL (BigQuery) procedural-block tracker. The splitter feeds it | COMMENT |
| LOW | packages/web-ui/src/utils/sqlSplitter/classify.ts | 1 | // Single-statement classifiers. Mirror of | COMMENT |
| LOW | packages/web-ui/src/components/ui/SqlEditorWrapper.tsx | 161 | }, []); | COMMENT |
| LOW | …es/web-ui/src/components/modals/NewConnectionModal.tsx | 561 | COMMENT | |
| LOW | …es/web-ui/src/components/modals/NewConnectionModal.tsx | 661 | activeDriver?.capabilities?.connectionStringExample?.trim() || | COMMENT |
| LOW | packages/web-ui/src/hooks/useBuiltinDriverMigration.ts | 121 | } = useDatabase(); | COMMENT |
| LOW | packages/web-ui/src/hooks/useBuiltinDriverMigration.ts | 181 | // failure), the banner either stays suppressed or shows the honest | COMMENT |
| LOW | packages/web-ui/src/hooks/useBuiltinDriverMigration.ts | 241 | // Migrate one connection: auto-disconnect if open, flip the driver, run a | COMMENT |
| LOW | packages/web-ui/src/hooks/useBuiltinDriverMigration.ts | 441 | // above, not the values this useCallback closed over: Connections.tsx's | COMMENT |
| LOW | packages/web-ui/src/pages/Connections.tsx | 201 | // after this toast is dismissed. | COMMENT |
| LOW | packages/web-ui/src/pages/SchemaDiagramPage.tsx | 21 | // Distinct from `databaseName` (display-only label / MySQL flat-driver | COMMENT |
| LOW | .github/workflows/npm-publish.yml | 1 | name: Publish npm packages | COMMENT |
| LOW | .github/workflows/npm-publish.yml | 21 | # Conventional Commit titles that land on main and keeps one release PR open | COMMENT |
| LOW | .github/workflows/nightly.yml | 1 | name: Nightly | COMMENT |
| LOW | .github/workflows/nightly.yml | 101 | echo "Building $tag from $validated_sha (previous nightly: ${last_tag:-none})." | COMMENT |
| LOW | .github/workflows/preview-comment.yml | 1 | name: Preview Comment | COMMENT |
| LOW | .github/workflows/preview.yml | 1 | name: Preview Build | COMMENT |
| LOW | .github/workflows/build.yml | 1 | name: Build | COMMENT |
| LOW | .github/workflows/build.yml | 161 | - name: Cache Rust dependencies | COMMENT |
| LOW | src-tauri/Cargo.toml | 121 | # by Apple and trips opaque errors like "One or more parameters passed to | COMMENT |
| LOW | src-tauri/tests/mysql_routines.rs | 1 | //! Opt-in coverage of routine parameter discovery against a real server. | COMMENT |
| LOW | src-tauri/tests/mysql_columns.rs | 1 | //! Opt-in coverage of column metadata discovery against a real server. | COMMENT |
| LOW | src-tauri/tests/mysql_indexes.rs | 1 | //! Opt-in coverage of index discovery against a real server. | COMMENT |
| LOW | src-tauri/tests/mysql_foreign_keys.rs | 1 | //! Opt-in coverage of the production foreign-key discovery path. | COMMENT |
| LOW | src-tauri/tests/postgres_integration/parity_mv_extra.rs | 1 | //! Extra parity tests for materialized views — MV definition retrieval. | COMMENT |
| LOW | …auri/tests/postgres_integration/parity_foreign_keys.rs | 1 | //! Parity tests for foreign key introspection — covers baseline tests from | COMMENT |
| LOW | src-tauri/tests/postgres_integration/parity_indexes.rs | 1 | //! Parity tests for index introspection — covers baseline tests from | COMMENT |
| LOW | src-tauri/tests/postgres_integration/parity.rs | 1 | //! Parity test harness — runs identical assertions against multiple driver | COMMENT |
| LOW | …i/tests/postgres_integration/parity_column_metadata.rs | 1 | //! Parity tests for column metadata — covers baseline tests from | COMMENT |
| LOW | src-tauri/tests/postgres_integration/parity_blob.rs | 1 | //! Parity tests for BLOB (bytea) handling — covers ALL 3 baseline tests from | COMMENT |
| LOW | src-tauri/tests/postgres_integration/main.rs | 1 | //! PostgreSQL parity integration tests. | COMMENT |
| LOW | src-tauri/tests/postgres_integration/parity_batch.rs | 1 | //! Parity tests for `execute_batch` — ensures plugin handles multi-statement | COMMENT |
| LOW | src-tauri/tests/postgres_integration/golden_utils.rs | 1 | //! Golden file capture and comparison utilities. | COMMENT |
| LOW | …/tests/postgres_integration/parity_schema_discovery.rs | 1 | //! Parity tests for schema discovery — covers baseline tests from | COMMENT |
| LOW | src-tauri/src/connection_migrations.rs | 41 | COMMENT | |
| LOW | src-tauri/src/connection_migrations.rs | 81 | /// computing its own rewrite. Pure and synchronous so the concurrency guard | COMMENT |
| LOW | src-tauri/src/connection_migrations.rs | 101 | /// Path-based, no `AppHandle` — callable from both the GUI process (wrapped | COMMENT |
| LOW | src-tauri/src/logger.rs | 101 | /// where neither `--debug` nor an explicit level was given, letting a user | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 361 | /// | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 381 | /// this classifier and the server tokenize it to hide a `;` and a second | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 441 | // Dialect disagreements over where a literal or comment ends are handled | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 841 | /// | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 861 | backslash_in_single: bool, | COMMENT |
| LOW | src-tauri/src/ai_activity.rs | 1021 | COMMENT | |
| LOW | src-tauri/src/ai.rs | 341 | COMMENT | |
| LOW | src-tauri/src/dump_utils.rs | 121 | /// Quotes `s` as a string literal. | COMMENT |
| LOW | src-tauri/src/config.rs | 41 | #[serde(default = "default_true")] | COMMENT |
| LOW | src-tauri/src/config.rs | 141 | /// COMPAT(registry-ga): legacy config key from before the Tabularium API | COMMENT |
| LOW | src-tauri/src/config.rs | 201 | /// Maximize the window on startup. Default: false. | COMMENT |
| LOW | src-tauri/src/config.rs | 221 | /// Per-call `output_format` arguments override this preference. Default: `"json"`. | COMMENT |
| LOW | src-tauri/src/config.rs | 241 | /// Bring the main window to the foreground and make it temporarily top-most | COMMENT |
| LOW | src-tauri/src/config.rs | 281 | COMMENT | |
| LOW | src-tauri/src/config.rs | 301 | /// Map of `plugin_id` → list of capability-gap feature names the user has | COMMENT |
| LOW | src-tauri/src/config.rs | 321 | #[derive(Debug, Serialize, Deserialize, Clone, Default)] | COMMENT |
| LOW | src-tauri/src/models.rs | 161 | pub host: String, | COMMENT |
| 144 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/explain/src/diagnostics.ts | 318 | export function countDiagnosticsBySeverity( | CODE |
| LOW | packages/explain/src/parsers/mysql.ts | 152 | function parseMariadbTemporaryTable(value: unknown, ids: NodeIdAllocator): ExplainNode { | CODE |
| LOW | packages/explain/src/parsers/mysql.ts | 178 | function parseMariadbSubqueryCache(value: unknown, ids: NodeIdAllocator): ExplainNode { | CODE |
| LOW | packages/explain/src/parsers/source.ts | 70 | export function explainEngineFromDriverName(name: string): ExplainEngine | null { | CODE |
| LOW | packages/explain/src/parsers/source.ts | 147 | function detectPostgresFormatOrNull(raw: string): BuiltinExplainSourceFormat | null { | CODE |
| LOW | packages/create-plugin/src/migrate.ts | 52 | function regenerateReleaseWorkflow(dir: string, binName: string): void { | CODE |
| LOW | …ui/tests/components/modals/NewConnectionModal.test.tsx | 1625 | function renderModalWithCredentialToggle(initialConnection?: InitialConnection) { | CODE |
| LOW | …ui/tests/components/modals/NewConnectionModal.test.tsx | 2077 | function renderModalWithSecretField(initialConnection?: InitialConnection) { | CODE |
| LOW | …ui/tests/components/modals/NewConnectionModal.test.tsx | 2111 | function connectionWithStoredSecret(): InitialConnection { | CODE |
| LOW | packages/web-ui/tests/api/contract/transportContract.ts | 101 | export function defineTransportContractSuite( | CODE |
| LOW | packages/web-ui/tests/api/contract/transportContract.ts | 847 | export async function createLiveWebContractServer( | CODE |
| LOW | packages/web-ui/src/contexts/PluginSlotProvider.tsx | 70 | async function loadExternalPluginContributions( | CODE |
| LOW | …s/web-ui/src/contexts/PlatformCapabilitiesProvider.tsx | 10 | export function PlatformCapabilitiesProvider({ | CODE |
| LOW | packages/web-ui/src/platform/browserFallbacks.ts | 16 | export function publishBrowserCapabilityFallback(fallback: BrowserCapabilityFallback): void { | CODE |
| LOW | packages/web-ui/src/platform/browserFallbacks.ts | 24 | export function subscribeBrowserCapabilityFallbacks( | CODE |
| LOW | packages/web-ui/src/platform/browserCapabilities.ts | 42 | function browserCapabilityNegotiation(serverFileBrowser: boolean): PlatformCapabilityNegotiation { | CODE |
| LOW | packages/web-ui/src/platform/environment.ts | 7 | export function detectPlatformEnvironment(probe: TauriRuntimeProbe = isTauri): PlatformEnvironment { | CODE |
| LOW | packages/web-ui/src/platform/capabilities.ts | 237 | export function createPlatformCapabilityNegotiation( | CODE |
| LOW | packages/web-ui/src/platform/capabilities.ts | 256 | export function requirePlatformCapability( | CODE |
| LOW | packages/web-ui/src/platform/systemColorScheme.ts | 8 | export async function listenForColorSchemeChanges( | CODE |
| LOW | packages/web-ui/src/platform/browserDialogs.ts | 60 | export function subscribeBrowserServerPathRequests( | CODE |
| LOW | packages/web-ui/src/platform/browserDialogs.ts | 70 | export function subscribeBrowserMessageRequests( | CODE |
| LOW⚡ | packages/web-ui/src/platform/activeCapabilities.ts | 5 | export function registerActivePlatformCapabilities(capabilities: PlatformCapabilities): void { | CODE |
| LOW⚡ | packages/web-ui/src/platform/activeCapabilities.ts | 9 | export function getActivePlatformCapabilities(): PlatformCapabilities { | CODE |
| LOW⚡ | packages/web-ui/src/platform/activeCapabilities.ts | 17 | export function getActivePlatformCapabilitiesOrNull(): PlatformCapabilities | null { | CODE |
| LOW | packages/web-ui/src/utils/builtInCommands.ts | 41 | export function createBuiltInCommandItems( | CODE |
| LOW | packages/web-ui/src/utils/contextMenu.ts | 27 | export function calculateContextMenuPosition(constraints: ViewportConstraints): MenuPosition { | CODE |
| LOW | packages/web-ui/src/utils/editorCommands.ts | 31 | export function createActiveEditorCommands({ | CODE |
| LOW | packages/web-ui/src/utils/sqlInvisibleCharacters.ts | 54 | export function getSqlInvisibleCharacterEdits( | CODE |
| LOW | packages/web-ui/src/utils/sqlInvisibleCharacters.ts | 86 | export function cleanSqlInvisibleCharacters(text: string, dialect?: DialectInput): string { | CODE |
| LOW | packages/web-ui/src/utils/editorNavigation.ts | 13 | function parseEditorNavigationRequest(value: unknown): EditorNavigationRequest | null { | CODE |
| LOW | packages/web-ui/src/utils/editorNavigation.ts | 81 | export function createEditorNavigationIntent( | CODE |
| LOW | packages/web-ui/src/utils/editorNavigation.ts | 144 | export function parseEditorNavigationIntent( | CODE |
| LOW | packages/web-ui/src/utils/blob.ts | 322 | export function extractCellImagePreviewUrl(value: unknown): string | null { | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 76 | export function validateQueryHistoryDateRange( | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 156 | export function queryHistoryDatabaseFilterFor(database: string): QueryHistoryDatabaseFilter { | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 171 | export function getQueryHistoryDatabaseChoices( | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 192 | export function isQueryHistoryDatabaseFilterAvailable( | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 211 | export function isQueryHistoryFilterActive( | CODE |
| LOW | packages/web-ui/src/utils/queryHistoryFilter.ts | 235 | export function filterQueryHistoryEntries( | CODE |
| LOW | packages/web-ui/src/utils/graphLayout.ts | 61 | export function calculateCenteredPosition( | CODE |
| LOW | packages/web-ui/src/utils/triggerSql.ts | 346 | export function buildCreateTriggerStatements(a: BuildTriggerArgs): string[] { | CODE |
| LOW | packages/web-ui/src/utils/themeManagement.ts | 80 | export function migrateThemeFromLocalStorage( | CODE |
| LOW | packages/web-ui/src/utils/driverCapabilities.ts | 28 | export function supportsPluginDropTableSql(capabilities?: DriverCapabilities | null): boolean { | CODE |
| LOW | packages/web-ui/src/utils/driverCapabilities.ts | 32 | export function supportsCreateForeignKeys(capabilities?: DriverCapabilities | null): boolean { | CODE |
| LOW | packages/web-ui/src/utils/keyboardEvents.ts | 1 | export function isTextCompositionKeyEvent(event: KeyboardEvent): boolean { | CODE |
| LOW | packages/web-ui/src/utils/notebook.ts | 20 | export function createDefaultNotebookState(): NotebookState { | CODE |
| LOW | packages/web-ui/src/utils/autocomplete.ts | 50 | export function needsKeywordCaseRetrigger( | CODE |
| LOW | packages/web-ui/src/utils/connectionFiles.ts | 7 | export async function prepareConnectionImportFile( | CODE |
| LOW | packages/web-ui/src/utils/connectionStringParser.ts | 74 | function getProtocolFromConnectionString(value: string): string | null { | CODE |
| LOW | packages/web-ui/src/utils/connectionStringParser.ts | 81 | function normalizeJdbcConnectionString(value: string): string { | CODE |
| LOW | packages/web-ui/src/utils/connectionStringParser.ts | 181 | function connectionStringImportEnabled(capabilities?: DriverCapabilities | null): boolean { | CODE |
| LOW | packages/web-ui/src/utils/connectionStringParser.ts | 266 | export function getSupportedConnectionStringProtocols( | CODE |
| LOW | packages/web-ui/src/utils/connectionStringParser.ts | 423 | export function looksLikeConnectionString( | CODE |
| LOW | packages/web-ui/src/utils/sqlAnalysis.ts | 212 | function effectiveStatementKeyword(cleaned: string): string | null { | CODE |
| LOW | packages/web-ui/src/utils/ssh.ts | 118 | export function formatSshConnectionString(ssh: SshConnection): string { | CODE |
| LOW | packages/web-ui/src/utils/editor.ts | 283 | export function closeAllTabsForConnection( | CODE |
| LOW | packages/web-ui/src/utils/editor.ts | 294 | export function closeOtherTabsForConnection( | CODE |
| LOW | packages/web-ui/src/utils/openSourceLibraries.ts | 129 | export function getOpenSourceLibraryTotal(): number { | CODE |
| LOW | packages/web-ui/src/utils/sql.ts | 203 | export function extractEditableViewDefinition(sql: string): string { | CODE |
| 95 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | demo/docker-compose.yml | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | demo/docker-compose.yml | 6 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | demo/docker-compose.yml | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | demo/docker-compose.yml | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | demo/docker-compose.yml | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | demo/docker-compose.yml | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/connectionManager.test.ts | 13 | // ─── Fixtures ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/connectionManager.test.ts | 62 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/connectionLayout.test.ts | 30 | // ─── Fixtures ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/connectionLayout.test.ts | 71 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 18 | // ─── Fixtures ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 42 | // ─── resolveMatch ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 86 | // ─── matchesEvent ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 444 | // ─── default shortcut conflicts ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 486 | // ─── mergeShortcuts ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 529 | // ─── formatEvent ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/tests/utils/keybindings.test.ts | 574 | // ─── formatMatch ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/columnStats.ts | 16 | // ─── Column statistics (issue #1001) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/columnStats.ts | 16 | // ─── Column statistics (issue #1001) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/columnStats.ts | 230 | // ─── Column statistics from plugin drivers (issue #1137) ───────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/columnStats.ts | 230 | // ─── Column statistics from plugin drivers (issue #1137) ───────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/filterBar.ts | 544 | // ─── Value picker (issue #869) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/utils/filterBar.ts | 544 | // ─── Value picker (issue #869) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 67 | // ─── Internal toolbar ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 132 | // ── helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 152 | // ── panel helpers ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 198 | // ── structured filter actions ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 341 | // ── SQL autocomplete ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 416 | // ── ORDER BY autocomplete ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 486 | // ── shared ORDER BY / LIMIT ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 536 | // ── render ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/components/ui/TableToolbar.tsx | 957 | // ─── Public wrapper — panel state and filters lifted here to survive key-driven remounts ───── | COMMENT |
| MEDIUM | …es/web-ui/src/components/modals/ImportFromAppModal.tsx | 556 | // ── Source picker step ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …es/web-ui/src/components/modals/ImportFromAppModal.tsx | 646 | // ── Bulk group selector ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …es/web-ui/src/components/modals/ImportFromAppModal.tsx | 772 | // ── Preview step ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/pages/Connections.tsx | 622 | // ── Multi-select bulk actions ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/web-ui/src/pages/Connections.tsx | 867 | // ── Shared helpers for connection card/item rendering ──────────────────────── | COMMENT |
| MEDIUM | src-tauri/src/credential_cache.rs | 46 | // ─── Read-through helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src-tauri/src/credential_cache.rs | 213 | // ─── Write-through helpers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src-tauri/src/credential_cache.rs | 273 | // ─── Invalidation helpers ───────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/generate-perf-sql.py | 20 | "REPEAT(CONCAT('Lorem ipsum dolor row ', {g}, '. '), 6)", | CODE |
| LOW | demo/generate-perf-sql.py | 21 | "repeat('Lorem ipsum dolor row ' || {g} || '. ', 6)"), | CODE |
| LOW | demo/init/postgres/07-enum-demo.sql | 35 | ('acc-001', 'Acme Corp', 'enterprise', 'happy'), | CODE |
| LOW | demo/init/postgres/04-text-demo.sql | 65 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | demo/init/postgres/04-text-demo.sql | 65 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | demo/init/postgres/06-perf-wide.sql | 76 | repeat('Lorem ipsum dolor row ' || g || '. ', 6), | CODE |
| LOW | demo/init/postgres/03-json-demo.sql | 65 | 'description', repeat('lorem ipsum dolor sit amet consectetur ', 4), | CODE |
| LOW | demo/init/postgres/03-json-demo.sql | 65 | 'description', repeat('lorem ipsum dolor sit amet consectetur ', 4), | CODE |
| LOW | demo/init/mysql/04-text-demo.sql | 67 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | demo/init/mysql/04-text-demo.sql | 67 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | demo/init/mysql/06-perf-wide.sql | 81 | REPEAT(CONCAT('Lorem ipsum dolor row ', g.g, '. '), 6), | CODE |
| LOW | demo/init/mysql/03-json-demo.sql | 70 | 'description', REPEAT('lorem ipsum dolor sit amet consectetur ', 4), | CODE |
| LOW | demo/init/mysql/03-json-demo.sql | 70 | 'description', REPEAT('lorem ipsum dolor sit amet consectetur ', 4), | CODE |
| LOW | demo/init/mysql/02-blog-demo.sql | 62 | ('jdoe', 'Jane Doe', 'jane@blogdemo.test', 'Software engineer writing about distributed systems.'), | CODE |
| LOW | plugins/PLUGIN_GUIDE.md | 359 | "database": { "label": "Project ID", "placeholder": "billing-project" } | CODE |
| LOW | plugins/tabularium-extensions.schema.json | 486 | "placeholder": { | CODE |
| LOW | plugins/tabularium-extensions.schema.json | 508 | "placeholder": { | CODE |
| LOW | plugins/tabularium-extensions.schema.json | 530 | "placeholder": { | CODE |
| LOW | plugins/tabularium-extensions.schema.json | 552 | "placeholder": { | CODE |
| LOW | plugins/tabularium-extensions.schema.json | 574 | "placeholder": { | CODE |
| LOW | plugins/manifest.schema.json | 429 | "placeholder": { | CODE |
| LOW | packages/web-ui/tests/utils/notebookParams.test.ts | 126 | {name: 'email', value: "'user@example.com'"}, | CODE |
| LOW | packages/web-ui/tests/utils/notebookParams.test.ts | 128 | expect(result.sql).toBe("SELECT * FROM t WHERE id = 'user@example.com'"); | CODE |
| LOW | packages/web-ui/tests/utils/plugins.test.ts | 26 | name: 'John Doe', | CODE |
| LOW | packages/web-ui/tests/utils/plugins.test.ts | 32 | expect(parseAuthor('John Doe')).toEqual({name: 'John Doe'}); | CODE |
| LOW | packages/web-ui/tests/utils/clipboard.test.ts | 131 | const row = [1, 'John Doe', 'john@example.com']; | CODE |
| LOW | packages/web-ui/tests/utils/clipboard.test.ts | 134 | '{"id":1,"name":"John Doe","email":"john@example.com"}', | CODE |
| LOW | …ages/web-ui/tests/utils/connectionFieldsSchema.test.ts | 17 | expect(Object.keys(override.properties)).toEqual(['hidden', 'label', 'placeholder']); | CODE |
| LOW | …ages/web-ui/tests/utils/connectionFieldsSchema.test.ts | 30 | expect(Object.keys(override.properties)).toEqual(['hidden', 'label', 'placeholder']); | CODE |
| LOW | …ckages/web-ui/tests/components/ui/FieldEditor.test.tsx | 50 | render(<FieldEditor name="name" type="varchar" value="John Doe" onChange={onChange} />); | CODE |
| LOW | …ckages/web-ui/tests/components/ui/FieldEditor.test.tsx | 54 | expect(textarea).toHaveValue('John Doe'); | CODE |
| LOW | …/tests/components/settings/PluginSettingsPage.test.tsx | 123 | 'placeholder', | CODE |
| LOW | …ui/tests/components/modals/NewConnectionModal.test.tsx | 2122 | expect(input).toHaveAttribute('placeholder', 'stored-secret'); | CODE |
| LOW | …i/tests/components/modals/K8sConnectionsModal.test.tsx | 181 | expect(portInput).not.toHaveAttribute('placeholder', '3306'); | CODE |
| LOW | packages/web-ui/tests/hooks/useReferencedRecord.test.ts | 31 | rows: [[42, 'Acme Corp']], | CODE |
| LOW | packages/web-ui/tests/hooks/useReferencedRecord.test.ts | 51 | expect(res.rows).toEqual([[42, 'Acme Corp']]); | CODE |
| LOW | packages/web-ui/tests/hooks/useReferencedRecord.test.ts | 58 | rows: [[42, 'Acme Corp']], | CODE |
| LOW | packages/web-ui/tests/hooks/useRowEditor.test.ts | 8 | name: 'John Doe', | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 23 | result.current.updateField('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 26 | expect(result.current.editedData.name).toBe('Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 27 | expect(onChange).toHaveBeenCalledWith('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 35 | result.current.updateField('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 40 | expect(onChange).toHaveBeenCalledWith('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 60 | result.current.updateField('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 66 | name: 'Jane Doe', | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 75 | result.current.updateField('name', 'Jane Doe'); | CODE |
| LOW⚡ | packages/web-ui/tests/hooks/useRowEditor.test.ts | 78 | expect(result.current.editedData.name).toBe('Jane Doe'); | CODE |
| LOW | packages/web-ui/src/i18n/locales/zh.json | 1363 | "placeholder": "PIN 或密码短语", | CODE |
| LOW | packages/web-ui/src/i18n/locales/zh.json | 1533 | "placeholder": "搜索表、视图、例程、触发器...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/zh.json | 2160 | "placeholder": "输入 JSON...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/zh.json | 2541 | "placeholder": "搜索操作...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/ja.json | 1401 | "placeholder": "PINまたはパスフレーズ", | CODE |
| LOW | packages/web-ui/src/i18n/locales/ja.json | 1570 | "placeholder": "テーブル、ビュー、ルーチン、トリガーを検索...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/ja.json | 2252 | "placeholder": "JSON を入力...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/ja.json | 2620 | "placeholder": "アクションを検索...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/de.json | 1388 | "placeholder": "PIN oder Passphrase", | CODE |
| LOW | packages/web-ui/src/i18n/locales/de.json | 1558 | "placeholder": "Tabellen, Views, Routinen, Trigger suchen...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/de.json | 2207 | "placeholder": "JSON eingeben...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/de.json | 2592 | "placeholder": "Aktionen suchen...", | CODE |
| LOW | packages/web-ui/src/i18n/locales/ru.json | 1386 | "placeholder": "PIN-код или парольная фраза", | CODE |
| 36 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/web-ui/tests/themes/themeRuntime.test.ts | 240 | const rules = schema.properties.editor.properties.rules.items.properties.token.enum.map( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/create-plugin/README.md | 66 | # With UI extension scaffold | COMMENT |
| MEDIUM | packages/create-plugin/README.md | 70 | ## Next steps after scaffolding | COMMENT |
| MEDIUM | packages/create-plugin/src/themeAuthor.ts | 159 | `# ${name}\n\nTwo declarative Tabularis variants. Edit themes/*.json, then run:\n\n\`\`\`sh\nnode tools/theme.mj | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/web-ui/src/pages/Editor.tsx | 6626 | // AI-generated SQL uses the same production-first safety pipeline. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 285 | // Step 1: Cell edit | COMMENT |
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 289 | // Step 2: Add row | COMMENT |
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 293 | // Step 3: Mark row for deletion | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 285 | // Step 1: Cell edit | COMMENT |
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 289 | // Step 2: Add row | COMMENT |
| LOW⚡ | packages/web-ui/tests/utils/gridUndo.test.ts | 293 | // Step 3: Mark row for deletion | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ate-plugin/templates/rust-driver/src/handlers/query.rs | 12 | // TODO: implement a real connectivity check (open a connection, run a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/web-ui/tests/api/contract/transportContract.ts | 880 | async function handleRequest( | CODE |