Yet another WebUI for Nginx
This report summarizes scanner evidence for 0xJacky/nginx-ui, a Go project with 11,700 GitHub stars. SynthScan examined 359,447 lines of code across 2340 source files, recording 263 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.9 (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? 233 finding(s).
Are imports declared and package/API names verified? 25 finding(s).
Are wrappers, guards, and repeated structures necessary? 102 finding(s).
Which changes need focused human review? 263 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 263 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 | app/src/utils/certificate.ts | 33 | export function splitCertificateIdentifiers(values: string[]): string[] { | CODE |
| LOW | app/src/components/TwoFA/use2FAModal.ts | 47 | function guideLegacyRecoveryMigration() { | CODE |
| LOW | app/src/components/CodeEditor/CodeCompletion.ts | 633 | function formatCompletionForPosition(suggestion: string, position: Point): string { | CODE |
| LOW | app/src/components/LLM/llm.ts | 149 | function updateLastAssistantMessage(content: string, reasoning?: string) { | CODE |
| LOW | app/src/components/LLM/llm.ts | 360 | function clearStreamingMessageIndex() { | CODE |
| LOW | app/src/components/LLM/sessionStore.ts | 209 | async function updateSessionActiveStatus(sessionId: string, isActive: boolean) { | CODE |
| LOW | app/src/components/LLM/LLMSessionTabs.vue | 88 | async function updateActiveSessionStatus(newActiveId: string) { | CODE |
| LOW | app/src/components/SelfCheck/SelfCheck.vue | 45 | function handleGeoLiteDownloadComplete() { | CODE |
| LOW | app/src/components/NgxConfigEditor/proxyPassUpstream.ts | 141 | export function findUnreferencedUpstreams(config: Pick<NgxConfig, 'servers'>, names: string[]): string[] { | CODE |
| LOW | app/src/components/NgxConfigEditor/directive/store.ts | 9 | async function getNginxDirectivesDocsMap() { | CODE |
| LOW | app/src/pinia/moudule/proxyAvailability.ts | 237 | function updateUpstreamStatusMapFromNode(nodeId: number, upstreamData: Record<string, NodeUpstreamStatus>) { | CODE |
| LOW | app/src/pinia/moudule/user.ts | 195 | async function updateCurrentUserPassword(data: { old_password: string, new_password: string }) { | CODE |
| LOW | app/src/pinia/moudule/user.ts | 206 | async function updateCurrentUserLanguage(language: string) { | CODE |
| LOW | app/src/lib/websocket/connectionHealth.ts | 39 | export function resolveConnectionRecovery(input: ConnectionHealthInput): ConnectionRecovery { | CODE |
| LOW | app/src/lib/websocket/index.ts | 6 | function normalizeWebSocketEndpoint(url: string): string { | CODE |
| LOW | app/src/lib/websocket/index.ts | 34 | export function buildWebSocketUrlWithQuery( | CODE |
| LOW | app/src/lib/http/normalizeError.ts | 9 | export function shouldLogoutOnAuthFailure(error: unknown, token: string): boolean { | CODE |
| LOW | app/src/views/certificate/CertificateEditor.vue | 195 | function localizeStructuredLevelValue(raw: string) { | CODE |
| LOW | app/src/views/certificate/CertificateEditor.vue | 206 | function translateStructuredMessage(message: string) { | CODE |
| LOW | app/src/views/certificate/CertificateEditor.vue | 214 | function applyAuxiliaryFieldFormatting(raw: string) { | CODE |
| LOW | app/src/views/certificate/CertificateEditor.vue | 250 | function localizeStructuredLogLine(raw: string) { | CODE |
| LOW | app/src/views/certificate/CertificateEditor.vue | 276 | function renderLocalizedLogMessage(raw: string) { | CODE |
| LOW | …/src/views/certificate/CertificateList/Certificate.vue | 69 | async function scanDiscoveredCertificates() { | CODE |
| LOW | …/src/views/certificate/CertificateList/Certificate.vue | 92 | async function importSelectedDiscoveredCerts() { | CODE |
| LOW | app/src/views/terminal/Terminal.vue | 47 | function getSessionConnectionStatus(tabId: string) { | CODE |
| LOW | app/src/views/preference/nginxControl.ts | 53 | export function applyNginxControlSettings(target: NginxSettings, settings: NginxControlSettings) { | CODE |
| LOW | …s/preference/components/AuthSettings/RecoveryCodes.vue | 28 | function clickGenerateRecoveryCodes() { | CODE |
| LOW | …nce/components/ExternalNotify/ExternalNotifyEditor.vue | 106 | function resolveSensitiveConfigValue(key: string) { | CODE |
| LOW | app/src/views/dashboard/NginxDashBoard.vue | 66 | function scheduleLiveDataInterrupted() { | CODE |
| LOW | …s/dashboard/components/ParamsOpt/PerformanceConfig.vue | 15 | function handleWorkerProcessAutoModeChange(checked: CheckedType) { | CODE |
| LOW | app/src/views/nginx_log/NginxLogList.vue | 80 | async function checkAdvancedIndexingStatus() { | CODE |
| LOW | app/src/views/nginx_log/NginxLogList.vue | 379 | function showIndexingSettingsModal() { | CODE |
| LOW | app/src/views/nginx_log/dashboard/dateRange.ts | 3 | export function getDefaultDashboardDateRange(referenceTime = dayjs()): [dayjs.Dayjs, dayjs.Dayjs] { | CODE |
| LOW | …c/views/nginx_log/components/IndexingSettingsModal.vue | 42 | function onGeoLiteDownloadComplete() { | CODE |
| LOW | …src/views/nginx_log/structured/StructuredLogViewer.vue | 688 | async function handleIndexReadyNotification(data: { | CODE |
| LOW | app/src/views/nginx_log/structured/timeRange.ts | 8 | export function getInitialStructuredTimeRange( | CODE |
| LOW | app/src/views/site/site_list/SiteList.vue | 108 | function refreshAfterBatchStatusChanged() { | CODE |
| LOW | app/src/views/site/site_list/SiteList.vue | 203 | function batchEnableMaintenanceSites() { | CODE |
| LOW | app/src/views/site/site_list/SiteList.vue | 212 | function onMaintenanceModalOpenChange(open: boolean) { | CODE |
| LOW | …c/views/site/site_edit/composables/useHTTPSRedirect.ts | 53 | export function stripHTTPSRedirectReturns(content: string) { | CODE |
| LOW | …c/views/site/site_edit/composables/useHTTPSRedirect.ts | 117 | export function buildTLSServerFromHTTPServer(server: NgxServer): NgxServer { | CODE |
| LOW | …c/views/site/site_edit/composables/useHTTPSRedirect.ts | 194 | export function stageServersForPendingTLS(servers: NgxServer[]): NgxServer[] { | CODE |
| LOW | …c/views/site/site_edit/composables/useHTTPChallenge.ts | 13 | export function ensureHTTPChallengeLocation(server: NgxServer, locations: NgxLocation[]) { | CODE |
| LOW | …ite/site_edit/components/HTTPS/httpsOnboardingState.ts | 75 | export function createHTTPSOnboardingState(phase: HTTPSOnboardingPhase = 'idle'): HTTPSOnboardingState { | CODE |
| LOW | …rc/views/site/site_edit/components/SiteEditor/store.ts | 149 | function getConfigWithoutIncompleteTLSServers(config: NgxConfig = ngxConfig.value) { | CODE |
| LOW | …src/views/site/site_edit/components/RightPanel/DNS.vue | 161 | function updateServerNameDirective(dnsNames: string[]) { | CODE |
| LOW | …iews/site/site_edit/components/Cert/ObtainCertLive.vue | 60 | function localizeStructuredFieldKeys(raw: string) { | CODE |
| LOW | …iews/site/site_edit/components/Cert/ObtainCertLive.vue | 74 | function localizeStructuredLevelValue(raw: string) { | CODE |
| LOW | …iews/site/site_edit/components/Cert/ObtainCertLive.vue | 85 | function applyDomainListValueLineBreaks(raw: string) { | CODE |
| LOW | app/src/views/site/components/SiteStatusSelect.vue | 180 | function onMaintenanceModalOpenChange(open: boolean) { | CODE |
| LOW | …src/views/site/components/QuickSetup/useQuickConfig.ts | 26 | export function createDefaultQuickConfigState(): QuickConfigState { | CODE |
| LOW | app/src/views/node/nodeColumns.tsx | 12 | function renderConnectionErrorContent(record: Node) { | CODE |
| LOW | app/src/views/node/NodeAuthStatus.vue | 187 | async function retryAuthenticationUpgrade() { | CODE |
| LOW | app/src/views/dns/group.ts | 66 | export function hasSameCommonRecordValues(record: DNSRecord, payload: RecordPayload) { | CODE |
| LOW | app/src/views/dns/DNSDomainList.vue | 104 | function renderDnsDomainClarification() { | CODE |
| LOW | app/src/views/dns/DNSGroupRecordManager.vue | 525 | function getRecordGroupCellRecords(recordGroup: AutomaticRecordGroup, name: string, domainId: number) { | CODE |
| LOW | app/src/views/dns/DNSGroupRecordManager.vue | 551 | function getProviderSpecificSignature(domain: DNSDomain, record: DNSRecord) { | CODE |
| LOW | app/src/views/dns/DNSGroupRecordManager.vue | 559 | function hasRecordGroupProviderDrift(recordGroup: AutomaticRecordGroup, name: string, domain: DNSDomain, record: DNSReco | CODE |
| LOW | app/src/views/dns/DNSGroupRecordManager.vue | 627 | function getRecordGroupStatusItems(stats: RecordGroupStats) { | CODE |
| LOW | app/src/views/dns/DNSGroupRecordManager.vue | 735 | function hasProviderSpecificFields(domain: DNSDomain) { | CODE |
| 37 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | qodana.yaml | 21 | #Execute shell command before Qodana execution (Applied in CI/CD pipeline) | COMMENT |
| LOW | settings/backup.go | 1 | package settings | COMMENT |
| LOW | settings/backup.go | 21 | // | COMMENT |
| LOW | app/src/views/site/site_add/SiteAdd.vue | 81 | // ---- Configure SSL step -------------------------------------------------- | COMMENT |
| LOW | resources/demo/setup-cluster-nodes.sh | 1 | #!/bin/sh | COMMENT |
| LOW | resources/demo/entrypoint.sh | 41 | n=$((n + 1)) | COMMENT |
| LOW | resources/docker/init-config.sh | 1 | #!/bin/bash | COMMENT |
| LOW | cloudflare/deploy-published.sh | 1 | #!/bin/sh | COMMENT |
| LOW | cloudflare/src/loading.ts | 81 | // that flaps would have this page reload endlessly. Count reloads across | COMMENT |
| LOW | internal/demo/fixture.go | 21 | // | COMMENT |
| LOW | internal/demo/fixture.go | 181 | // The demo entrypoint calls this through `nginx-ui demo install-log-fixtures` | COMMENT |
| LOW | internal/demo/hash.go | 1 | package demo | COMMENT |
| LOW | internal/demo/demo.go | 1 | // Package demo fabricates the state a public demo instance cannot obtain | COMMENT |
| LOW | internal/sitecheck/httpclient.go | 41 | ) | COMMENT |
| LOW | internal/sitecheck/httpclient.go | 61 | // covered by turning this on (or by installing the private CA into the | COMMENT |
| LOW | internal/sitecheck/httpclient.go | 101 | // SharedTransport returns the package-level http.Transport used by probes that | COMMENT |
| LOW | internal/sitecheck/service.go | 261 | // | COMMENT |
| LOW | internal/sitecheck/errorclass.go | 21 | // ErrorTypeTLS means the TCP connection succeeded but the TLS handshake | COMMENT |
| LOW | internal/middleware/demo.go | 1 | package middleware | COMMENT |
| LOW | internal/host/ssh/known_hosts.go | 61 | return kh, nil | COMMENT |
| LOW | internal/acmehint/diagnose.go | 61 | LocalAddrs func() ([]net.IP, error) | COMMENT |
| LOW | internal/ingress/ingress.go | 1 | // Package ingress implements declarative reverse proxy entries for external | COMMENT |
| LOW | internal/ingress/cert.go | 781 | } | COMMENT |
| LOW | internal/ingress/reconcile.go | 421 | func sameTime(a, b *time.Time) bool { | COMMENT |
| LOW | internal/notification/email.go | 61 | // emailTransportPlain never attempts to encrypt the connection. | COMMENT |
| LOW | internal/cgroup/limits.go | 1 | // Package cgroup exposes the CPU and memory budget the current process is | COMMENT |
| LOW | internal/nginx/host_service.go | 21 | type hostService interface { | COMMENT |
| LOW | internal/nginx/resolve_path.go | 161 | COMMENT | |
| LOW | internal/nginx/server_blocks.go | 41 | Listen ServerListen | COMMENT |
| LOW | internal/nginx/server_blocks.go | 81 | return parseServerBlocksFromSections(sections), nil | COMMENT |
| LOW | internal/nginx/modules.go | 161 | // GetLoadModuleRegex returns a compiled regular expression to match nginx load_module statements. | COMMENT |
| LOW | internal/nginx/modules.go | 181 | // Examples: | COMMENT |
| LOW | internal/nginx/modules.go | 221 | // to a consistent format for internal use. | COMMENT |
| LOW | internal/cert/helper.go | 61 | // readManagedCertificateFile reads a certificate or key file that lives in the | COMMENT |
| LOW | internal/cert/recommend.go | 21 | COMMENT | |
| LOW | internal/cert/payload.go | 101 | COMMENT | |
| LOW | internal/cert/http01_probe.go | 21 | // The HTTP-01 route probe answers one question before lego talks to the CA: | COMMENT |
| LOW | internal/cert/http01_probe.go | 41 | // hosts, and without certificate verification on HTTPS. Every hop is sent to | COMMENT |
| LOW | internal/cert/http01_probe.go | 61 | // loopback addresses. Without the configuration it cannot tell which | COMMENT |
| LOW | internal/cert/http01_probe.go | 241 | // http01ProbeSettleTimeout is how long a failing domain is probed again | COMMENT |
| LOW | internal/nginx_log/default_log_paths.go | 21 | ) | COMMENT |
| LOW | internal/nginx_log/default_log_paths.go | 41 | // survive every rescan; keeping them in their own map also keeps | COMMENT |
| LOW | internal/nginx_log/searcher/cardinality_counter_test.go | 61 | COMMENT | |
| LOW | internal/nginx_log/utils/log_rotation.go | 41 | // access.log-2023-12-01). This is what logrotate writes with the `dateext` | COMMENT |
| LOW | internal/nginx_log/indexer/types.go | 81 | // availableCPUs reports the CPU budget used to size the indexer, and | COMMENT |
| LOW | internal/nginx_log/indexer/README.md | 541 | ### 2. Log Rotation Support | COMMENT |
| LOW | internal/nginx_log/indexer/grouped_shard_manager.go | 21 | const existingShardLockTimeout = 5 * time.Second | COMMENT |
| LOW | internal/nginx_log/indexer/parser.go | 21 | // It is an atomic pointer rather than a plain global guarded by sync.Once so | COMMENT |
| LOW | internal/nginx_log/analytics/dashboard.go | 381 | COMMENT | |
| LOW | internal/site/https_onboarding.go | 181 | Request HTTPSRequest | COMMENT |
| LOW | internal/site/issue_certificate.go | 61 | // then pushes the certificate to the nodes it is synced to. It is the | COMMENT |
| LOW | internal/site/https_api.go | 1 | package site | COMMENT |
| LOW | internal/site/https_plan.go | 81 | Domains []string | COMMENT |
| LOW | internal/site/https_plan.go | 101 | // applied once the certificate has been issued. | COMMENT |
| LOW | internal/performance/config_info.go | 221 | result.ProxyCache.LoaderThreshold = loaderThresholdMatches[1] | COMMENT |
| LOW | internal/performance/config_info.go | 241 | COMMENT | |
| LOW | internal/backup/auto_backup.go | 141 | COMMENT | |
| LOW | internal/backup/auto_backup.go | 181 | KeyPath: keyPath, | COMMENT |
| LOW | internal/backup/auto_backup.go | 401 | "last_backup_error": errorMsg, | COMMENT |
| LOW | internal/backup/auto_backup.go | 421 | "last_backup_time": backupTime, | COMMENT |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 135 | // Step 1: Generate title on main node (no proxy) | COMMENT |
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 138 | // Step 2: Update session via proxy to persist the title | COMMENT |
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 141 | // Step 3: Update local store with typewriter effect | COMMENT |
| LOW⚡ | internal/config/encoded_path_containment_test.go | 35 | // Step 1: decode. The traversal must come back intact — a decoder that | COMMENT |
| LOW⚡ | internal/config/encoded_path_containment_test.go | 41 | // Step 2: validate the decoded value. This is what must reject it. | COMMENT |
| LOW⚡ | internal/migrate/1.site_category_to_env_group.go | 12 | // Step 1: Create new env_groups table | COMMENT |
| LOW⚡ | internal/migrate/1.site_category_to_env_group.go | 17 | // Step 2: Copy data from site_categories to env_groups | COMMENT |
| LOW | internal/migrate/1.site_category_to_env_group.go | 30 | // Step 3: Update sites table to use env_group_id instead of site_category_id | COMMENT |
| LOW⚡ | internal/nginx_log/production_throughput_test.go | 42 | // Step 1: Create temporary directory | COMMENT |
| LOW⚡ | internal/nginx_log/production_throughput_test.go | 49 | // Step 2: Generate realistic test data | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 60 | // Step 3: Set up complete production environment | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 108 | // Step 4: Execute complete production rebuild (same as real rebuild) | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 121 | // Step 5: Calculate and report realistic metrics | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 669 | // Step 1: Generate test data | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 672 | // Step 2: Initialize services | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 675 | // Step 3: Perform global index rebuild and validate during indexing | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 679 | // Step 4: Validate all files after global rebuild | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 687 | // Step 5: Test single file rebuild | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 692 | // Step 6: Validate all files after single file rebuild | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 19 | ## Step 1: Create the unprivileged user (Linux only) | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 29 | ## Step 2: SSH Target — generate the keypair via Nginx UI | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 67 | ## Step 3: Trust & Test — trust the host identity | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 106 | ## Step 4: Detect Platform | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 114 | ## Step 5: Access & Install — choose the file access mode | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 132 | ## Step 6: Access & Install — install the sudoers entry (Linux only) | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 144 | ## Step 7: Access & Install — apply file permissions | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 157 | ## Step 8: Access & Install — update the container | COMMENT |
| LOW | docs/guide/manage-host-nginx-from-docker.md | 177 | ## Step 9: Verify the setup | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 135 | // Step 1: Generate title on main node (no proxy) | COMMENT |
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 138 | // Step 2: Update session via proxy to persist the title | COMMENT |
| LOW⚡ | app/src/components/LLM/sessionStore.ts | 141 | // Step 3: Update local store with typewriter effect | COMMENT |
| LOW⚡ | internal/config/encoded_path_containment_test.go | 35 | // Step 1: decode. The traversal must come back intact — a decoder that | COMMENT |
| LOW⚡ | internal/config/encoded_path_containment_test.go | 41 | // Step 2: validate the decoded value. This is what must reject it. | COMMENT |
| LOW | internal/migrate/3.rename_auths_to_users.go | 17 | // Both tables exist - we need to check if users table is empty | COMMENT |
| LOW⚡ | internal/migrate/1.site_category_to_env_group.go | 12 | // Step 1: Create new env_groups table | COMMENT |
| LOW⚡ | internal/migrate/1.site_category_to_env_group.go | 17 | // Step 2: Copy data from site_categories to env_groups | COMMENT |
| LOW | internal/migrate/1.site_category_to_env_group.go | 30 | // Step 3: Update sites table to use env_group_id instead of site_category_id | COMMENT |
| LOW⚡ | internal/nginx_log/production_throughput_test.go | 42 | // Step 1: Create temporary directory | COMMENT |
| LOW⚡ | internal/nginx_log/production_throughput_test.go | 49 | // Step 2: Generate realistic test data | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 60 | // Step 3: Set up complete production environment | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 108 | // Step 4: Execute complete production rebuild (same as real rebuild) | COMMENT |
| LOW | internal/nginx_log/production_throughput_test.go | 121 | // Step 5: Calculate and report realistic metrics | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 669 | // Step 1: Generate test data | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 672 | // Step 2: Initialize services | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 675 | // Step 3: Perform global index rebuild and validate during indexing | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 679 | // Step 4: Validate all files after global rebuild | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 687 | // Step 5: Test single file rebuild | COMMENT |
| LOW⚡ | internal/nginx_log/integration_test.go | 692 | // Step 6: Validate all files after single file rebuild | COMMENT |
| LOW | internal/nginx_log/indexer/validation_test.go | 22 | // Since parser.go has a global init, we need to check if it's properly configured | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/src/components/StringListInput/StringListInput.vue | 31 | :placeholder="placeholder" | CODE |
| LOW | app/src/components/SensitiveString/SensitiveInput.vue | 91 | :placeholder="placeholder" | CODE |
| LOW | app/src/views/snippet/components/LocalizedInput.vue | 101 | :placeholder="placeholder" | CODE |
| LOW | app/src/views/preference/components/LLMModelSelect.vue | 137 | :placeholder="placeholder" | CODE |
| LOW | …ews/preference/components/NginxHostSetup/PathField.vue | 44 | <AInput v-model:value="value" :placeholder="placeholder" allow-clear /> | CODE |
| LOW | internal/middleware/sensitive_read_endpoints_test.go | 120 | Email: "admin@example.com", | CODE |
| LOW | …ternal/migrate/8.encrypt_sensitive_json_fields_test.go | 100 | Email: "admin@example.com", | CODE |
| LOW | …ternal/migrate/8.encrypt_sensitive_json_fields_test.go | 183 | Email: "admin@example.com", | CODE |
| LOW | internal/nginx/root_block_test.go | 12 | Params: "placeholder", | CODE |
| LOW | internal/cert/register_test.go | 67 | db, calls, _ := setupDefaultACMEUserTest(t, "admin@example.com", "https://ca.example.com/directory") | CODE |
| LOW | internal/cert/register_test.go | 72 | assert.Equal(t, "admin@example.com", user.Email) | CODE |
| LOW⚡ | internal/cert/register_test.go | 87 | _, calls, _ := setupDefaultACMEUserTest(t, "admin@example.com", "https://ca.example.com/directory") | CODE |
| LOW⚡ | internal/cert/register_test.go | 92 | assert.Equal(t, "admin@example.com", user.Email) | CODE |
| LOW⚡ | internal/cert/register_test.go | 97 | db, calls, _ := setupDefaultACMEUserTest(t, "admin@example.com", "https://ca-one.example.com/directory") | CODE |
| LOW | internal/cert/register_test.go | 124 | db, calls, registerErr := setupDefaultACMEUserTest(t, "admin@example.com", "https://ca.example.com/directory") | CODE |
| LOW | internal/cert/register_test.go | 139 | assert.Equal(t, "admin@example.com", user.Email) | CODE |
| LOW | internal/cert/register_test.go | 144 | db, calls, _ := setupDefaultACMEUserTest(t, "admin@example.com", "https://ca.example.com/directory") | CODE |
| LOW | internal/dns/providers/cloudflare/provider_test.go | 147 | if r.Header.Get("X-Auth-Email") != "admin@example.com" { | CODE |
| LOW | internal/dns/providers/cloudflare/provider_test.go | 171 | "CF_API_EMAIL": "admin@example.com", | CODE |
| LOW | …perpowers/plans/2026-05-23-self-signed-enhancements.md | 96 | :placeholder="placeholder" | CODE |
| LOW | api/settings/settings_test.go | 114 | appsettings.CertSettings.Email = "admin@example.com" | CODE |
| LOW | api/settings/settings_test.go | 157 | assert.Equal(t, "admin@example.com", body["cert"]["email"]) | CODE |
| LOW | api/system/install_test.go | 69 | Email: "admin@example.com", | CODE |
| LOW⚡ | e2e/tests/antdv-login-and-language.spec.ts | 25 | usernamePlaceholder: await page.locator('#username').getAttribute('placeholder'), | CODE |
| LOW⚡ | e2e/tests/antdv-login-and-language.spec.ts | 26 | passwordPlaceholder: await page.locator('#password').getAttribute('placeholder'), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | template/custom-mmdb/Build_Custom_mmdb.py | 18 | # ========================================== | COMMENT |
| MEDIUM⚡ | template/custom-mmdb/Build_Custom_mmdb.py | 23 | # ========================================== | COMMENT |
| MEDIUM⚡ | template/custom-mmdb/Build_Custom_mmdb.py | 32 | # ========================================== | COMMENT |
| MEDIUM⚡ | template/custom-mmdb/Build_Custom_mmdb.py | 38 | # ========================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/src/views/certificate/components/RemoveCert.vue | 78 | // Revocation failed, but the record was deleted as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 547 | # Check if service is already running | COMMENT |
| LOW | install.sh | 561 | # Check if service is already running | COMMENT |
| LOW | install.sh | 630 | # Check if service is running using multiple methods | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/nginx_log/indexer/types.go | 180 | // Aggressively utilize multi-core CPUs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/codeql.yml | 61 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | template/custom-mmdb/donwloadgenjson.py | 90 | except Exception as e: | CODE |