learning_ai_common_plat/reports/rule-violations-baseline.md
saravanakumardb1 421a7cc7f1 feat(scripts): Tier 3 complete \u2014 efforise + mac_tooling done
Scanner refinements:
- Exempt mac_tooling (standalone forensics toolkit, not a product)
- Skip /theme/colors.ts /theme/tokens.ts /theme/palette.ts (token sources)
- Skip CSS custom property DEFINITIONS even with embedded gradients/multiple hex
- Skip [stroke='#hex'] / [fill='#hex'] Recharts attribute SELECTORS (not styling)

Cumulative progress:
  Tier 1 critical:        13 \u2192 0 \u2713
  Tier 2 common_plat hex: 59 \u2192 0 \u2713
  Tier 3 medium repos:    57 \u2192 0 \u2713 (efforise fixed, mac_tooling exempt)

Total: 1402 \u2192 1353. Hex: 388 \u2192 288. 13 of 19 repos hex-clean.

Next: Tier 4 (mindlyst 92, fastgap 89, flowmonk 107).
2026-05-23 14:45:05 -07:00

154 KiB
Raw Blame History

Rule Violations Report — 2026-05-23

Generated by scripts/check-rule-violations.sh against canonical rules in AI.dev/SKILLS/agent-behavior-guidelines.md.

Severity legend: critical = data/security risk · major = rule violation · minor = style

learning_ai_common_plat

Counts: critical=0 · major=80 · minor=86 · total=166

  • [major] packages/logger/src/logger.ts:40 — console.log: console.log(${prefix} ${message}${extras});
  • [major] packages/create-app/src/scaffolder.ts:60 — console.log: console.log(`
  • [major] packages/create-app/src/scaffolder.ts:115 — console.log: console.log('\n📦 ByteLyst Product Scaffolder\n');
  • [major] packages/create-app/src/scaffolder.ts:126 — console.log: console.log('\nPlatforms (comma-separated: web, mobile, ios, android)');
  • [major] packages/create-app/src/scaffolder.ts:135 — console.log: console.log('\nFeatures (comma-separated: auth, billing, telemetry, flags, syn
  • [major] packages/create-app/src/scaffolder.ts:257 — console.log: console.log(\n🚀 Scaffolding ${manifest.displayName});
  • [major] packages/create-app/src/scaffolder.ts:259 — console.log: console.log( Product ID: ${manifest.productId});
  • [major] packages/create-app/src/scaffolder.ts:261 — console.log: console.log( Output: ${outPath});
  • [major] packages/create-app/src/scaffolder.ts:263 — console.log: console.log( Platforms: ${manifest.platforms.join(', ')});
  • [major] packages/create-app/src/scaffolder.ts:265 — console.log: console.log( Features: ${manifest.features.join(', ')});
  • [major] packages/create-app/src/scaffolder.ts:268 — console.log: console.log(' ⚠️ DRY RUN\n');
  • [major] packages/create-app/src/scaffolder.ts:275 — console.log: console.log(📄 ${files.length} files would be generated:\n);
  • [major] packages/create-app/src/scaffolder.ts:278 — console.log: console.log(── ${file.path} ──────────────────────────────────────);
  • [major] packages/create-app/src/scaffolder.ts:280 — console.log: console.log(file.content);
  • [major] packages/create-app/src/scaffolder.ts:283 — console.log: console.log(\n✨ Dry run complete. Re-run without --dry-run to write files.
  • [major] packages/create-app/src/scaffolder.ts:293 — console.log: console.log( ✅ ${file.path});
  • [major] packages/create-app/src/scaffolder.ts:297 — console.log: console.log(\n✨ ${manifest.displayName} scaffolded at ${outPath});
  • [major] packages/create-app/src/scaffolder.ts:299 — console.log: console.log(\nNext steps:);
  • [major] packages/create-app/src/scaffolder.ts:301 — console.log: console.log( cd ${outDir}/backend && npm install && npm run dev);
  • [major] packages/create-app/src/scaffolder.ts:304 — console.log: console.log( cd ${outDir}/web && npm install && npm run dev);
  • [major] packages/create-app/src/generators/agents-md.ts:49 — console.log: console.log(`
  • [major] packages/create-app/src/generators/agents-md.ts:528 — console.log: console.log( 📝 Would create symlink: ${target} → AGENTS.md);
  • [major] packages/create-app/src/generators/agents-md.ts:533 — console.log: console.log( ✅ ${target} → AGENTS.md);
  • [major] packages/create-app/src/generators/agents-md.ts:535 — console.log: console.log(
  • [major] packages/create-app/src/generators/agents-md.ts:549 — console.log: console.log(\n📄 AGENTS.md Generator);
  • [major] packages/create-app/src/generators/agents-md.ts:550 — console.log: console.log( Repo: ${repoPath});
  • [major] packages/create-app/src/generators/agents-md.ts:551 — console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n');
  • [major] packages/create-app/src/generators/agents-md.ts:552 — console.log: if (update) console.log(' 🔄 UPDATE mode — preserving custom sections\n');
  • [major] packages/create-app/src/generators/agents-md.ts:556 — console.log: console.log( Product: ${manifest.displayName} (${manifest.productId}));
  • [major] packages/create-app/src/generators/agents-md.ts:560 — console.log: console.log( Backend modules: ${info.backendModules.length});
  • [major] packages/create-app/src/generators/agents-md.ts:561 — console.log: console.log(` Tests: ~${info.backendTestCount + info.webTestCount + info.mob
  • [major] packages/create-app/src/generators/agents-md.ts:562 — console.log: console.log('');
  • [major] packages/create-app/src/generators/agents-md.ts:574 — console.log: console.log( 🔄 Preserving ${customSections.size} custom section(s));
  • [major] packages/create-app/src/generators/agents-md.ts:578 — console.log: console.log(' No existing AGENTS.md to preserve custom sections from
  • [major] packages/create-app/src/generators/agents-md.ts:583 — console.log: console.log('── AGENTS.md ──────────────────────────────────────');
  • [major] packages/create-app/src/generators/agents-md.ts:584 — console.log: console.log(content);
  • [major] packages/create-app/src/generators/agents-md.ts:585 — console.log: console.log('\n── Symlinks ──────────────────────────────────────');
  • [major] packages/create-app/src/generators/agents-md.ts:587 — console.log: console.log('\n Dry run complete.');
  • [major] packages/create-app/src/generators/agents-md.ts:594 — console.log: console.log( ✅ AGENTS.md written);
  • [major] packages/create-app/src/generators/agents-md.ts:599 — console.log: console.log(\n✨ AGENTS.md generated for ${manifest.displayName}.);
  • [major] packages/create-app/src/generators/api-routes.ts:92 — console.log: console.log(`
  • [major] packages/create-app/src/generators/api-routes.ts:670 — console.log: console.log(\n🚀 Generating API routes: ${name});
  • [major] packages/create-app/src/generators/api-routes.ts:671 — console.log: console.log( Mode: ${mode});
  • [major] packages/create-app/src/generators/api-routes.ts:672 — console.log: console.log( Methods: ${methods.join(', ')});
  • [major] packages/create-app/src/generators/api-routes.ts:673 — console.log: console.log( Target: ${target});
  • [major] packages/create-app/src/generators/api-routes.ts:674 — console.log: if (fields) console.log( Fields: ${fields});
  • [major] packages/create-app/src/generators/api-routes.ts:675 — console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n');
  • [major] packages/create-app/src/generators/api-routes.ts:725 — console.log: console.log('📄 Generated files:\n');
  • [major] packages/create-app/src/generators/api-routes.ts:727 — console.log: console.log(── ${file.path} ──────────────────────────────────────);
  • [major] packages/create-app/src/generators/api-routes.ts:728 — console.log: console.log(file.content);
  • [major] packages/create-app/src/generators/api-routes.ts:730 — console.log: console.log(\n✨ Dry run complete. Re-run without --dry-run to write files.
  • [major] packages/create-app/src/generators/api-routes.ts:742 — console.log: console.log( ⚠️ SKIP ${file.path} (already exists));
  • [major] packages/create-app/src/generators/api-routes.ts:749 — console.log: console.log( ✅ ${file.path});
  • [major] packages/create-app/src/generators/api-routes.ts:752 — console.log: console.log(\n✨ API routes generated for "${name}".);
  • [major] packages/create-app/src/generators/api-routes.ts:754 — console.log: console.log(\nPrerequisites (if not already present):);
  • [major] packages/create-app/src/generators/api-routes.ts:755 — console.log: console.log( - lib/auth-server.ts — getCurrentUser(authHeader) function)
  • [major] packages/create-app/src/generators/api-routes.ts:756 — console.log: console.log( - lib/api-handler.ts — withErrorHandler HOF);
  • [major] packages/create-app/src/generators/api-routes.ts:757 — console.log: console.log( - lib/datastore.ts — getCosmosContainer + PRODUCT_ID);
  • [major] packages/create-app/src/generators/api-routes.ts:758 — console.log: console.log( - zod installed — npm install zod);
  • [major] packages/create-app/src/generators/api-routes.ts:760 — console.log: console.log(\nPrerequisites (if not already present):);
  • [major] packages/create-app/src/generators/api-routes.ts:761 — console.log: console.log( - lib/api-helpers.ts — getAccessToken(req) function);
  • [major] packages/create-app/src/generators/api-routes.ts:762 — console.log: console.log( - lib/api-handler.ts — withErrorHandler HOF);
  • [major] packages/create-app/src/generators/api-routes.ts:763 — console.log: console.log(` - NEXT_PUBLIC_BACKEND_URL env var (or defaults to localhost:
  • [major] packages/mcp-client/src/index.ts:51 — console.log: console.log(
  • [major] packages/mcp-client/src/index.ts:76 — console.log: console.log('[MCP] Successfully connected to MCP server');
  • [major] packages/mcp-client/src/index.ts:102 — console.log: console.log('[MCP] Disconnected from MCP server');
  • [major] packages/mcp-client/src/index.ts:155 — console.log: console.log([MCP] Tool ${toolName} executed successfully);
  • [major] packages/mcp-client/src/index.ts:321 — console.log: console.log(`[MCP-AUDIT] Tool called: ${toolName}, Args: ${JSON.stringify(sa
  • [major] packages/mcp-client/src/index.ts:325 — console.log: console.log([MCP-AUDIT] Tool succeeded: ${toolName});
  • [major] services/extraction-service/src/modules/extract/product-rate-limit.ts:408 — console.log: console.log([product-rate-limit] Cleaned up ${cleaned} expired entries
  • [major] services/extraction-service/src/modules/extract/sidecar-monitor.ts:295 — console.log: console.log(
  • [major] services/monitoring/health-check.ts:39 — console.log: console.log(🩺 Monitoring dashboard running on http://localhost:${PORT});
  • [major] services/monitoring/health-check.ts:40 — console.log: console.log( Checking ${DEFAULT_SERVICES.length} services every request)
  • [major] services/monitoring/health-check.ts:46 — console.log: console.log(`\n${icon[report.overall]} Overall: ${report.overall.toUpperCase()
  • [major] services/monitoring/health-check.ts:50 — console.log: console.log(
  • [major] services/monitoring/health-check.ts:55 — console.log: console.log(\nHealthy: ${report.summary.healthy}/${report.summary.total});
  • [major] packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:88 — Swift print(): print("[DEBUG] (message)")
  • [major] packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:93 — Swift print(): print("[INFO] (message)")
  • [major] packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:97 — Swift print(): print("[WARN] (message)")
  • [major] packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:101 — Swift print(): print("[ERROR] (message)")
  • [minor] dashboards/admin-web/src/app/(dashboard)/ops/ab-testing/page.tsx:135 — any type: return <Badge variant={config.variant as any}>{config.label};
  • [minor] packages/mcp-client/src/index.ts:16 — any type: inputSchema?: any;
  • [minor] packages/mcp-client/src/index.ts:20 — any type: data: any;
  • [minor] packages/mcp-client/src/index.ts:77 — any type: } catch (error: any) {
  • [minor] packages/mcp-client/src/index.ts:103 — any type: } catch (error: any) {
  • [minor] packages/mcp-client/src/index.ts:109 — any type: async callTool(toolName: string, args: any = {}): Promise {
  • [minor] packages/mcp-client/src/index.ts:143 — any type: const response = result.content as any[];
  • [minor] packages/mcp-client/src/index.ts:160 — any type: } catch (error: any) {
  • [minor] packages/mcp-client/src/index.ts:190 — any type: return response.tools.map((tool: any) => ({
  • [minor] packages/mcp-client/src/index.ts:195 — any type: } catch (error: any) {
  • [minor] packages/mcp-client/src/index.ts:225 — any type: private getCacheKey(toolName: string, args: any): string {
  • [minor] packages/mcp-client/src/index.ts:229 — any type: private getFromCache(key: string): any | null {
  • [minor] packages/mcp-client/src/index.ts:244 — any type: private setCache(key: string, data: any): void {
  • [minor] packages/mcp-client/src/index.ts:269 — any type: private isNonRetriableError(error: any): boolean {
  • [minor] packages/mcp-client/src/index.ts:318 — any type: private auditLogToolCall(toolName: string, args: any): void {
  • [minor] packages/mcp-client/src/index.ts:332 — any type: private sanitizeArgs(args: any): any {
  • [minor] services/platform-service/src/server.ts:304 — any type: const auth = (request as any).auth;
  • [minor] services/platform-service/src/server.ts:335 — any type: } catch (error: any) {
  • [minor] services/extraction-service/src/modules/transcribe/routes.ts:5 — any type: * Product-agnostic: any product backend can call this endpoint.
  • [minor] dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:21 — Emoji in code: 📊
  • [minor] dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:22 — Emoji in code: 📝
  • [minor] dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:23 — Emoji in code: 📄
  • [minor] dashboards/tracker-web/src/app/roadmap/page.tsx:513 — Emoji in code: 💬
  • [minor] dashboards/tracker-web/src/app/roadmap/page.tsx:569 — Emoji in code: 💬
  • [minor] dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx:232 — Emoji in code: 🌐
  • [minor] scripts/encrypt-migrate.ts:507 — Emoji in code: 📦
  • [minor] scripts/encrypt-migrate.ts:510 — Emoji in code: 🔐
  • [minor] scripts/encrypt-migrate.ts:589 — Emoji in code: 🏢
  • [minor] packages/dashboard-shell/src/TopBar.tsx:80 — Emoji in code: 🔔
  • [minor] packages/celebrations/src/index.ts:7 — Emoji in code: 👏
  • [minor] packages/celebrations/src/index.ts:12 — Emoji in code: 🎉
  • [minor] packages/celebrations/src/index.ts:14 — Emoji in code: 🔥
  • [minor] packages/celebrations/src/index.ts:15 — Emoji in code: 🏆
  • [minor] packages/swift-platform-sdk/Tests/BLFieldEncryptTests.swift:32 — Emoji in code: 🌍
  • [minor] packages/create-app/src/scaffolder.ts:115 — Emoji in code: 📦
  • [minor] packages/create-app/src/scaffolder.ts:257 — Emoji in code: 🚀
  • [minor] packages/create-app/src/scaffolder.ts:275 — Emoji in code: 📄
  • [minor] packages/create-app/src/generators/agents-md.ts:528 — Emoji in code: 📝
  • [minor] packages/create-app/src/generators/agents-md.ts:549 — Emoji in code: 📄
  • [minor] packages/create-app/src/generators/agents-md.ts:552 — Emoji in code: 🔄
  • [minor] packages/create-app/src/generators/agents-md.ts:574 — Emoji in code: 🔄
  • [minor] packages/create-app/src/generators/api-routes.ts:670 — Emoji in code: 🚀
  • [minor] packages/create-app/src/generators/api-routes.ts:725 — Emoji in code: 📄
  • [minor] packages/time-references/src/client.ts:16 — Emoji in code: 🎵
  • [minor] packages/time-references/src/client.ts:23 — Emoji in code: 📺
  • [minor] packages/time-references/src/client.ts:24 — Emoji in code: 🚶
  • [minor] packages/time-references/src/client.ts:31 — Emoji in code: 🧘
  • [minor] packages/time-references/src/client.ts:32 — Emoji in code: 📺
  • [minor] packages/time-references/src/client.ts:39 — Emoji in code: 🎬
  • [minor] packages/time-references/src/client.ts:40 — Emoji in code: 🚴
  • [minor] packages/time-references/src/client.ts:47 — Emoji in code: 🚗
  • [minor] packages/time-references/src/client.ts:48 — Emoji in code: 📺
  • [minor] packages/time-references/src/client.ts:55 — Emoji in code: 💼
  • [minor] packages/time-references/src/client.ts:56 — Emoji in code: 😴
  • [minor] packages/time-references/src/client.ts:64 — Emoji in code: 🌅
  • [minor] packages/time-references/src/client.ts:74 — Emoji in code: 🧙
  • [minor] packages/time-references/src/client.ts:83 — Emoji in code: 🌍
  • [minor] packages/time-references/src/client.ts:84 — Emoji in code: 🥾
  • [minor] packages/time-references/src/client.ts:91 — Emoji in code: 🏆
  • [minor] packages/time-references/src/client.ts:99 — Emoji in code: 🌟
  • [minor] packages/time-references/src/index.ts:11 — Emoji in code: 🎬
  • [minor] packages/time-references/src/index.ts:17 — Emoji in code: 🌙
  • [minor] packages/time-references/src/index.ts:20 — Emoji in code: 🏔
  • [minor] packages/time-references/src/index.ts:23 — Emoji in code: 🌍
  • [minor] packages/time-references/src/index.ts:26 — Emoji in code: 🚂
  • [minor] packages/time-references/src/index.ts:31 — Emoji in code: 🏕
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:156 — Emoji in code: 📊
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:164 — Emoji in code: 🚨
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:183 — Emoji in code: 🐛
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:185 — Emoji in code: 📚
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:186 — Emoji in code: 🧪
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:187 — Emoji in code: 🔧
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:189 — Emoji in code: 🎨
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:190 — Emoji in code: 🔄
  • [minor] services/mcp-server/src/modules/dev/changelog-tools.ts:191 — Emoji in code: 📝
  • [minor] services/platform-service/scripts/gen-module.ts:515 — Emoji in code: 📝
  • [minor] services/platform-service/scripts/gen-module.ts:551 — Emoji in code: 📝
  • [minor] services/platform-service/scripts/gen-module.ts:608 — Emoji in code: 🚀
  • [minor] services/platform-service/scripts/gen-module.ts:636 — Emoji in code: 📄
  • [minor] services/platform-service/src/modules/predictive-analytics/campaign-engine.ts:451 — Emoji in code: 🚨
  • [minor] services/platform-service/src/modules/diagnostics/auto-triggers.ts:393 — Emoji in code: 🚨
  • [minor] services/platform-service/src/modules/diagnostics/auto-triggers.ts:427 — Emoji in code: 🚨
  • [minor] services/platform-service/src/modules/delivery/templates.ts:203 — Emoji in code: 🚨
  • [minor] services/platform-service/src/modules/delivery/templates.ts:205 — Emoji in code: 🚨
  • [minor] services/platform-service/src/modules/delivery/templates.ts:214 — Emoji in code: 🚨
  • [minor] services/monitoring/health-check.ts:39 — Emoji in code: 🩺

learning_voice_ai_agent

Counts: critical=0 · major=5 · minor=89 · total=94

  • [major] src/audio/sounds.py:115 — Python print(): print("\a", end="", flush=True)
  • [major] src/audio/sounds.py:120 — Python print(): print("\a", end="", flush=True)
  • [major] src/hotkey/fn_listener.py:93 — Python print(): print(
  • [major] src/cli_output.py:30 — Python print(): print(message) # noqa: T201 — intentional CLI output
  • [major] src/cli_output.py:36 — Python print(): print(message, file=sys.stderr) # noqa: T201 — intentional CLI output
  • [minor] user-dashboard-web/src/lib/api-handler.ts:10 — any type: type RouteHandler = (req: NextRequest, ctx: any) => Promise<Response | NextRespo
  • [minor] mobile_app/ios/LysnrKeyboard/KeyboardViewController.swift:572 — Emoji in code: 🌐
  • [minor] mobile_app/ios/LysnrAI/Views/SessionDetailView.swift:759 — Emoji in code: 👍
  • [minor] mobile_app/common/kill_switch.py:58 — Emoji in code: 📱
  • [minor] mobile_app/common/kill_switch.py:66 — Emoji in code: 🛑
  • [minor] user-dashboard-web/src/app/(portal)/sessions/[id]/page.tsx:932 — Emoji in code: 👍
  • [minor] scripts/test_stress.py:46 — Emoji in code: 🏋
  • [minor] scripts/test_stress.py:110 — Emoji in code: 📊
  • [minor] scripts/test_security.py:136 — Emoji in code: 🔒
  • [minor] scripts/test_security.py:140 — Emoji in code: 🔑
  • [minor] scripts/test_security.py:148 — Emoji in code: 📝
  • [minor] scripts/test_security.py:156 — Emoji in code: 📁
  • [minor] scripts/test_security.py:163 — Emoji in code: 💥
  • [minor] scripts/test_security.py:176 — Emoji in code: 🔐
  • [minor] scripts/churn-alert.ts:205 — Emoji in code: 📊
  • [minor] scripts/churn-alert.ts:215 — Emoji in code: 🔵
  • [minor] scripts/churn-alert.ts:238 — Emoji in code: 🔍
  • [minor] scripts/test_multi_app_paste.py:75 — Emoji in code: 🧪
  • [minor] scripts/test_multi_app_paste.py:92 — Emoji in code: 📋
  • [minor] scripts/prove_kill_switch.py:97 — Emoji in code: 🔌
  • [minor] scripts/prove_kill_switch.py:108 — Emoji in code: 📖
  • [minor] scripts/prove_kill_switch.py:119 — Emoji in code: 🔴
  • [minor] scripts/test_ui_crossplatform.py:42 — Emoji in code: 🖥
  • [minor] scripts/test_ui_crossplatform.py:46 — Emoji in code: 🪟
  • [minor] scripts/test_ui_crossplatform.py:60 — Emoji in code: 🎯
  • [minor] scripts/test_ui_crossplatform.py:96 — Emoji in code: 🎨
  • [minor] scripts/test_ui_crossplatform.py:126 — Emoji in code: 🔧
  • [minor] scripts/prove_cosmos_rw.py:92 — Emoji in code: 📖
  • [minor] scripts/prove_cosmos_rw.py:100 — Emoji in code: 🗑
  • [minor] scripts/prove_cosmos_rw.py:111 — Emoji in code: 🔬
  • [minor] scripts/test_accessibility.py:45 — Emoji in code: 📢
  • [minor] scripts/test_accessibility.py:57 — Emoji in code: 🎨
  • [minor] scripts/test_accessibility.py:80 — Emoji in code: 🎯
  • [minor] scripts/test_accessibility.py:92 — Emoji in code: 🪟
  • [minor] scripts/test_accessibility.py:102 — Emoji in code: 🔊
  • [minor] scripts/test_accessibility.py:113 — Emoji in code: 📏
  • [minor] assets/generate-store-assets.py:165 — Emoji in code: 📱
  • [minor] assets/generate-store-assets.py:214 — Emoji in code: 🎙
  • [minor] assets/generate-store-assets.py:443 — Emoji in code: 🔑
  • [minor] assets/generate-store-assets.py:444 — Emoji in code: 🚪
  • [minor] assets/generate-store-assets.py:447 — Emoji in code: 🌐
  • [minor] assets/generate-store-assets.py:448 — Emoji in code: 🎛
  • [minor] assets/generate-store-assets.py:449 — Emoji in code: 🔊
  • [minor] assets/generate-store-assets.py:450 — Emoji in code: 📋
  • [minor] assets/generate-store-assets.py:512 — Emoji in code: 🔍
  • [minor] assets/generate-store-assets.py:581 — Emoji in code: 📸
  • [minor] assets/generate-store-assets.py:623 — Emoji in code: 🎨
  • [minor] assets/generate-store-assets.py:670 — Emoji in code: 💫
  • [minor] assets/generate-store-assets.py:731 — Emoji in code: 📁
  • [minor] src/main.py:150 — Emoji in code: 🎙
  • [minor] src/main.py:154 — Emoji in code: 🎙
  • [minor] src/main.py:234 — Emoji in code: 🎙
  • [minor] src/main.py:310 — Emoji in code: 🔵
  • [minor] src/main.py:324 — Emoji in code: 🔇
  • [minor] src/main.py:326 — Emoji in code: 🔴
  • [minor] src/main.py:331 — Emoji in code: 🔴
  • [minor] src/main.py:682 — Emoji in code: 📎
  • [minor] src/main.py:692 — Emoji in code: 📎
  • [minor] src/main.py:883 — Emoji in code: 📝
  • [minor] src/main.py:900 — Emoji in code: 📝
  • [minor] src/main.py:1200 — Emoji in code: 🧙
  • [minor] src/main.py:1225 — Emoji in code: 🛑
  • [minor] src/main.py:1292 — Emoji in code: 🛑
  • [minor] src/main.py:1306 — Emoji in code: 👋
  • [minor] src/ui/overlay.py:238 — Emoji in code: 🔴
  • [minor] src/ui/overlay.py:475 — Emoji in code: 🔄
  • [minor] src/ui/history_viewer.py:72 — Emoji in code: 🔍
  • [minor] src/ui/first_run.py:161 — Emoji in code: 🎙
  • [minor] src/ui/macos_menubar.py:37 — Emoji in code: 🎙
  • [minor] src/ui/macos_menubar.py:38 — Emoji in code: 🔴
  • [minor] src/ui/macos_menubar.py:40 — Emoji in code: 📡
  • [minor] src/ui/macos_menubar.py:119 — Emoji in code: 🎙
  • [minor] src/ui/tray.py:136 — Emoji in code: 🎙
  • [minor] src/ui/stats_dashboard.py:78 — Emoji in code: 📊
  • [minor] src/ui/about.py:59 — Emoji in code: 🎙
  • [minor] src/ui/update_dialog.py:47 — Emoji in code: 🔄
  • [minor] src/ui/unified_window.py:166 — Emoji in code: 🎙
  • [minor] src/ui/unified_window.py:172 — Emoji in code: 📜
  • [minor] src/ui/unified_window.py:173 — Emoji in code: 📊
  • [minor] src/ui/unified_window.py:250 — Emoji in code: 🗣
  • [minor] src/ui/unified_window.py:260 — Emoji in code: 🤖
  • [minor] src/ui/unified_window.py:273 — Emoji in code: 🎛
  • [minor] src/ui/unified_window.py:1028 — Emoji in code: 🎙
  • [minor] src/ui/unified_window.py:1029 — Emoji in code: 📝
  • [minor] src/ui/unified_window.py:1031 — Emoji in code: 🔥
  • [minor] src/ui/unified_window.py:1140 — Emoji in code: 🌐
  • [minor] src/ui/unified_window.py:1347 — Emoji in code: 🎙
  • [minor] src/hotkey/fn_listener.py:3 — Emoji in code: 🌐
  • [minor] src/hotkey/fn_listener.py:8 — Emoji in code: 🌐

learning_multimodal_memory_agents

Counts: critical=0 · major=95 · minor=32 · total=127

  • [major] mindlyst-native/iosApp/Models/MemoryStore.swift:64 — Swift print(): print("[MemoryStore] Failed to persist items: (error)")
  • [major] mindlyst-native/iosApp/Models/MemoryStore.swift:76 — Swift print(): print("[MemoryStore] Failed to decode stored items: (error)")
  • [major] mindlyst-native/iosApp/Screens/CaptureScreen.swift:143 — Swift print(): print("[CaptureScreen] Failed to persist to plat
  • [minor] backend/src/modules/brains/repository.ts:30 — any type: const decrypted = await getEncryptor().decrypt(doc.rolePrompt as any, {
  • [minor] backend/src/modules/reflections/repository.ts:28 — any type: const decrypted = await enc.decrypt(val as any, { userId, context });
  • [minor] backend/src/modules/reflections/repository.ts:36 — any type: result.repeatedThemes = await encryptStringArray(result.repeatedThemes, uid, '
  • [minor] backend/src/modules/reflections/repository.ts:37 — any type: result.postponedItems = await encryptStringArray(result.postponedItems, uid, '
  • [minor] backend/src/modules/reflections/repository.ts:38 — any type: result.roleImbalanceSignals = await encryptStringArray(result.roleImbalanceSig
  • [minor] backend/src/modules/reflections/repository.ts:39 — any type: result.suggestedAdjustments = await encryptStringArray(result.suggestedAdjustm
  • [minor] backend/src/modules/reflections/repository.ts:61 — any type: const decrypted = await enc.decrypt(result.vsLastWeek!.summary as any, { use
  • [minor] backend/src/modules/memory/repository.ts:42 — any type: const decrypted = await enc.decrypt(result.rawContent as any, ctx);
  • [minor] backend/src/modules/memory/repository.ts:47 — any type: const decrypted = await enc.decrypt(result.triageResult.summary as any, { ..
  • [minor] backend/src/modules/palace/repository.ts:59 — any type: const decrypted = await getEncryptor().decrypt(doc.content as any, {
  • [minor] backend/src/modules/daily-briefs/repository.ts:29 — any type: result.priorityItems = encrypted as any;
  • [minor] backend/src/modules/daily-briefs/repository.ts:34 — any type: result.brainSummaries = encrypted as any;
  • [minor] backend/src/modules/daily-briefs/repository.ts:56 — any type: result.greeting = await enc.decrypt(result.greeting as any, ctx);
  • [minor] backend/src/modules/daily-briefs/repository.ts:60 — any type: const decrypted = await enc.decrypt(result.priorityItems as any, { ...ctx, c
  • [minor] backend/src/modules/daily-briefs/repository.ts:65 — any type: const decrypted = await enc.decrypt(result.brainSummaries as any, { ...ctx,
  • [minor] backend/src/modules/daily-briefs/repository.ts:70 — any type: result.streakMessage = await enc.decrypt(result.streakMessage as any, { ...c
  • [minor] backend/src/modules/daily-briefs/repository.ts:74 — any type: result.motivationalQuote = await enc.decrypt(result.motivationalQuote as any
  • [minor] mindlyst-native/web/src/lib/api-handler.ts:9 — any type: type RouteHandler = (req: NextRequest, ctx: any) => Promise<Response | NextRespo
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:22 — Hardcoded hex color: #E67E22
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:23 — Hardcoded hex color: #E74C3C
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:24 — Hardcoded hex color: #9B59B6
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:25 — Hardcoded hex color: #F39C12
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:26 — Hardcoded hex color: #1ABC9C
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:27 — Hardcoded hex color: #2ECC71
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:28 — Hardcoded hex color: #3498DB
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:29 — Hardcoded hex color: #A29BFE
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:30 — Hardcoded hex color: #00CEC9
  • [major] mindlyst-native/web/src/app/brain-packs/page.tsx:31 — Hardcoded hex color: #FDCB6E
  • [major] mindlyst-native/web/src/app/settings/page.tsx:8 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/settings/page.tsx:9 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/settings/page.tsx:10 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/settings/page.tsx:11 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/settings/page.tsx:12 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/settings/page.tsx:275 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/settings/page.tsx:276 — Hardcoded hex color: #6C7C98
  • [major] mindlyst-native/web/src/app/settings/page.tsx:290 — Hardcoded hex color: #9B59B6
  • [major] mindlyst-native/web/src/app/settings/page.tsx:291 — Hardcoded hex color: #E67E22
  • [major] mindlyst-native/web/src/app/settings/page.tsx:292 — Hardcoded hex color: #1ABC9C
  • [major] mindlyst-native/web/src/app/settings/page.tsx:293 — Hardcoded hex color: #E74C3C
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:10 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:11 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:12 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:13 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:14 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:18 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:19 — Hardcoded hex color: #FFD166
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:20 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:21 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:22 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:23 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:27 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:28 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:29 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:30 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:31 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:640 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:641 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/dashboard/page.tsx:677 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/palace/page.tsx:20 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/palace/page.tsx:21 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/palace/page.tsx:22 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/palace/page.tsx:23 — Hardcoded hex color: #FFD166
  • [major] mindlyst-native/web/src/app/palace/page.tsx:24 — Hardcoded hex color: #A78BFA
  • [major] mindlyst-native/web/src/app/palace/page.tsx:25 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/palace/page.tsx:26 — Hardcoded hex color: #F59E0B
  • [major] mindlyst-native/web/src/app/palace/page.tsx:27 — Hardcoded hex color: #EF4444
  • [major] mindlyst-native/web/src/app/palace/page.tsx:28 — Hardcoded hex color: #8B5CF6
  • [major] mindlyst-native/web/src/app/palace/page.tsx:309 — Hardcoded hex color: #fff
  • [major] mindlyst-native/web/src/app/palace/page.tsx:459 — Hardcoded hex color: #6c7c98
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:86 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:87 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:107 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:108 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:131 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/api/brain-packs/route.ts:132 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:35 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:36 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:37 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:38 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:39 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:112 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/api/brains/route.ts:113 — Hardcoded hex color: #6C7C98
  • [major] mindlyst-native/web/src/app/api/accessibility-config/route.ts:125 — Hardcoded hex color: #EFF4FF
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:115 — Hardcoded hex color: #06070A
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:133 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:134 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:135 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:136 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/api/capture-config/route.ts:137 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/api/share-card/route.ts:146 — Hardcoded hex color: #06070A
  • [major] mindlyst-native/web/src/app/api/share-card/route.ts:147 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/challenge/page.tsx:92 — Hardcoded hex color: #fff
  • [major] mindlyst-native/web/src/app/page.tsx:34 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/page.tsx:35 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/page.tsx:36 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/page.tsx:37 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:8 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:9 — Hardcoded hex color: #FF6E6E
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:10 — Hardcoded hex color: #34D399
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:11 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:20 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:21 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:205 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:206 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:217 — Hardcoded hex color: #7D8FB4
  • [major] mindlyst-native/web/src/app/onboarding/page.tsx:248 — Hardcoded hex color: #6C7C98
  • [major] mindlyst-native/web/src/app/reflection/page.tsx:13 — Hardcoded hex color: #5A8CFF
  • [major] mindlyst-native/web/src/app/reflection/page.tsx:14 — Hardcoded hex color: #2EE6D6
  • [major] mindlyst-native/web/src/app/reflection/page.tsx:141 — Hardcoded hex color: #A5B1C7
  • [major] mindlyst-native/web/src/app/reflection/page.tsx:149 — Hardcoded hex color: #A5B1C7
  • [minor] mindlyst-native/web/src/app/layout.tsx:13 — Emoji in code: 🧠
  • [minor] mindlyst-native/web/src/app/api/launch/route.ts:124 — Emoji in code: 👋
  • [minor] mindlyst-native/web/src/app/api/launch/route.ts:131 — Emoji in code: 🧠
  • [minor] mindlyst-native/web/src/app/api/prompts/route.ts:66 — Emoji in code: 📱
  • [minor] mindlyst-native/web/src/app/api/prompts/route.ts:99 — Emoji in code: 🎤
  • [minor] mindlyst-native/web/src/app/api/prompts/route.ts:101 — Emoji in code: 📷
  • [minor] mindlyst-native/web/src/app/api/store-listing/route.ts:61 — Emoji in code: 🧠
  • [minor] mindlyst-native/web/src/app/api/store-listing/route.ts:78 — Emoji in code: 🔒
  • [minor] mindlyst-native/web/src/app/api/store-listing/route.ts:83 — Emoji in code: 🚀
  • [minor] mindlyst-native/iosApp/Screens/BrainDetailScreen.swift:11 — Emoji in code: 🎙
  • [minor] mindlyst-native/iosApp/Screens/BrainDetailScreen.swift:12 — Emoji in code: 📸
  • [minor] mindlyst-native/iosApp/Screens/BrainDetailScreen.swift:13 — Emoji in code: 📧
  • [minor] mindlyst-native/iosApp/Screens/BrainDetailScreen.swift:14 — Emoji in code: 🔗
  • [minor] mindlyst-native/androidApp/src/main/java/com/mindlyst/android/auth/LoginScreen.kt:92 — Emoji in code: 🧠

learning_ai_clock

Counts: critical=0 · major=0 · minor=22 · total=22

  • [minor] backend/src/modules/shared-timers/repository.ts:31 — any type: const decrypted = await getEncryptor().decrypt(doc.description as any, {
  • [minor] backend/src/modules/timers/repository.ts:32 — any type: const decrypted = await getEncryptor().decrypt(doc.description as any, {
  • [minor] backend/src/modules/routines/repository.ts:49 — any type: const decrypted = await enc.decrypt(result.description as any, ctx);
  • [minor] backend/src/modules/routines/repository.ts:56 — any type: const decrypted = await enc.decrypt(step.notes as any, { ...ctx, context
  • [minor] backend/src/modules/webhooks/repository.ts:46 — any type: const decrypted = await enc.decrypt(result.secret as any, ctx);
  • [minor] backend/src/modules/webhooks/repository.ts:51 — any type: const decrypted = await enc.decrypt(result.description as any, { ...ctx, con
  • [minor] web/src/components/Dashboard.tsx:103 — Emoji in code: 🔔
  • [minor] web/src/components/StreakCard.tsx:80 — Emoji in code: 🏆
  • [minor] web/src/components/StreakCard.tsx:82 — Emoji in code: 🔥
  • [minor] web/src/components/PomodoroView.tsx:57 — Emoji in code: 🎉
  • [minor] web/src/components/PomodoroView.tsx:86 — Emoji in code: 🍅
  • [minor] web/src/components/TimerCard.tsx:243 — Emoji in code: 💬
  • [minor] web/src/lib/notifications.ts:94 — Emoji in code: 🔔
  • [minor] ios/ChronoMind/Shared/Wellness/MoodCheckInManager.swift:165 — Emoji in code: 😴
  • [minor] ios/ChronoMind/Shared/Wellness/MoodCheckInManager.swift:166 — Emoji in code: 😐
  • [minor] ios/ChronoMind/Shared/Wellness/MoodCheckInManager.swift:167 — Emoji in code: 😊
  • [minor] ios/ChronoMind/Shared/Wellness/MoodCheckInManager.swift:168 — Emoji in code: 🔥
  • [minor] ios/ChronoMind/Shared/Gamification/GamificationEngine.swift:55 — Emoji in code: 🔥
  • [minor] ios/ChronoMind/Shared/Gamification/GamificationEngine.swift:57 — Emoji in code: 👍
  • [minor] ios/ChronoMind/Shared/Gamification/GamificationEngine.swift:58 — Emoji in code: 📈
  • [minor] ios/ChronoMind/Shared/Gamification/GamificationEngine.swift:59 — Emoji in code: 💪
  • [minor] ios/ChronoMind/Shared/Notifications/NotificationScheduler.swift:100 — Emoji in code: 🔔

learning_ai_fastgap

Counts: critical=0 · major=80 · minor=212 · total=292

  • [major] plugins/withAndroidWidget.js:224 — console.log: console.log(`
  • [major] plugins/withWatchApp.js:59 — console.log: console.log(`
  • [major] plugins/withWidgetExtension.js:57 — console.log: console.log(`
  • [major] web/src/app/(app)/settings/page.tsx:185 — Hardcoded hex color: #FF6B6B
  • [major] web/src/app/(app)/social/page.tsx:194 — Hardcoded hex color: #888
  • [major] web/src/app/(app)/simulator/page.tsx:265 — Hardcoded hex color: #fff
  • [major] web/src/components/ShareCard.tsx:33 — Hardcoded hex color: #0D1117
  • [major] web/src/components/ShareCard.tsx:34 — Hardcoded hex color: #1A2332
  • [major] web/src/components/ShareCard.tsx:42 — Hardcoded hex color: #5AE68C
  • [major] web/src/components/ShareCard.tsx:43 — Hardcoded hex color: #4ECDC4
  • [major] web/src/components/ShareCard.tsx:48 — Hardcoded hex color: #5AE68C
  • [major] web/src/components/ShareCard.tsx:53 — Hardcoded hex color: #FFFFFF
  • [major] web/src/components/ShareCard.tsx:56 — Hardcoded hex color: #8B949E
  • [major] web/src/components/ShareCard.tsx:76 — Hardcoded hex color: #5AE68C
  • [major] web/src/components/ShareCard.tsx:80 — Hardcoded hex color: #8B949E
  • [major] web/src/components/ShareCard.tsx:86 — Hardcoded hex color: #484F58
  • [major] web/src/components/BodyCanvas.tsx:14 — Hardcoded hex color: #FF9F43
  • [major] web/src/components/BodyCanvas.tsx:15 — Hardcoded hex color: #5A8CFF
  • [major] web/src/components/BodyCanvas.tsx:48 — Hardcoded hex color: #FECA57
  • [major] web/src/components/BodyCanvas.tsx:65 — Hardcoded hex color: #1A2040
  • [major] web/src/components/BodyCanvas.tsx:75 — Hardcoded hex color: #E85555
  • [major] web/src/components/BodyCanvas.tsx:83 — Hardcoded hex color: #5AC0D0
  • [major] web/src/components/BodyCanvas.tsx:91 — Hardcoded hex color: #5AC0D0
  • [major] web/src/components/BodyCanvas.tsx:99 — Hardcoded hex color: #1E1A10
  • [major] web/src/components/BodyCanvas.tsx:107 — Hardcoded hex color: #1E1810
  • [major] web/src/components/BodyCanvas.tsx:115 — Hardcoded hex color: #E8C44A
  • [major] web/src/components/BodyCanvas.tsx:122 — Hardcoded hex color: #D49A6A
  • [major] web/src/components/BodyCanvas.tsx:130 — Hardcoded hex color: #C47A50
  • [major] web/src/components/BodyCanvas.tsx:139 — Hardcoded hex color: #B06060
  • [major] web/src/components/BodyCanvas.tsx:147 — Hardcoded hex color: #B06060
  • [major] web/src/components/BodyCanvas.tsx:155 — Hardcoded hex color: #101820
  • [major] web/src/components/BodyCanvas.tsx:162 — Hardcoded hex color: #101820
  • [major] web/src/components/BodyCanvas.tsx:169 — Hardcoded hex color: #18142A
  • [major] web/src/components/BodyCanvas.tsx:181 — Hardcoded hex color: #E8C44A
  • [major] web/src/components/BodyCanvas.tsx:182 — Hardcoded hex color: #8899AA
  • [major] web/src/components/BodyCanvas.tsx:183 — Hardcoded hex color: #80E0F0
  • [major] web/src/components/BodyCanvas.tsx:185 — Hardcoded hex color: #C088FF
  • [major] web/src/components/BodyCanvas.tsx:186 — Hardcoded hex color: #FFE066
  • [major] web/src/components/BodyCanvas.tsx:300 — Hardcoded hex color: #C0D0E8
  • [major] web/src/components/BodyCanvas.tsx:304 — Hardcoded hex color: #C0D0E8
  • [major] web/src/components/BodyCanvas.tsx:315 — Hardcoded hex color: #C0D0E8
  • [major] web/src/components/BodyCanvas.tsx:476 — Hardcoded hex color: #FFFFFF
  • [major] web/src/components/BodyCanvas.tsx:493 — Hardcoded hex color: #7B8BA5
  • [major] web/src/components/BodyCanvas.tsx:504 — Hardcoded hex color: #000000
  • [major] src/screens/protocol/ProtocolDetail.tsx:183 — Hardcoded hex color: #1A2335
  • [major] src/components/platform/InAppBroadcastBanner.tsx:18 — Hardcoded hex color: #ef4444
  • [major] src/components/platform/InAppBroadcastBanner.tsx:19 — Hardcoded hex color: #f59e0b
  • [major] src/components/platform/InAppBroadcastBanner.tsx:20 — Hardcoded hex color: #38bdf8
  • [major] src/components/platform/ActiveSurveyModal.tsx:188 — Hardcoded hex color: #f87171
  • [major] src/theme/spacing.ts:33 — Hardcoded hex color: #000
  • [major] src/theme/spacing.ts:40 — Hardcoded hex color: #000
  • [major] src/theme/spacing.ts:47 — Hardcoded hex color: #000
  • [major] src/lib/organ-data.ts:47 — Hardcoded hex color: #1A2040
  • [major] src/lib/organ-data.ts:63 — Hardcoded hex color: #E85555
  • [major] src/lib/organ-data.ts:64 — Hardcoded hex color: #2A1520
  • [major] src/lib/organ-data.ts:80 — Hardcoded hex color: #5AC0D0
  • [major] src/lib/organ-data.ts:81 — Hardcoded hex color: #14222A
  • [major] src/lib/organ-data.ts:96 — Hardcoded hex color: #5AC0D0
  • [major] src/lib/organ-data.ts:97 — Hardcoded hex color: #14222A
  • [major] src/lib/organ-data.ts:113 — Hardcoded hex color: #1E1A10
  • [major] src/lib/organ-data.ts:130 — Hardcoded hex color: #1E1810
  • [major] src/lib/organ-data.ts:144 — Hardcoded hex color: #E8C44A
  • [major] src/lib/organ-data.ts:145 — Hardcoded hex color: #1A1810
  • [major] src/lib/organ-data.ts:160 — Hardcoded hex color: #D49A6A
  • [major] src/lib/organ-data.ts:161 — Hardcoded hex color: #18140E
  • [major] src/lib/organ-data.ts:176 — Hardcoded hex color: #C47A50
  • [major] src/lib/organ-data.ts:177 — Hardcoded hex color: #18140E
  • [major] src/lib/organ-data.ts:192 — Hardcoded hex color: #B06060
  • [major] src/lib/organ-data.ts:193 — Hardcoded hex color: #1E1218
  • [major] src/lib/organ-data.ts:208 — Hardcoded hex color: #B06060
  • [major] src/lib/organ-data.ts:209 — Hardcoded hex color: #1E1218
  • [major] src/lib/organ-data.ts:225 — Hardcoded hex color: #101820
  • [major] src/lib/organ-data.ts:243 — Hardcoded hex color: #101820
  • [major] src/lib/organ-data.ts:261 — Hardcoded hex color: #18142A
  • [major] src/lib/molecule-flows.ts:45 — Hardcoded hex color: #E8C44A
  • [major] src/lib/molecule-flows.ts:49 — Hardcoded hex color: #8899AA
  • [major] src/lib/molecule-flows.ts:53 — Hardcoded hex color: #80E0F0
  • [major] src/lib/molecule-flows.ts:63 — Hardcoded hex color: #C088FF
  • [major] src/lib/molecule-flows.ts:68 — Hardcoded hex color: #FFE066
  • [major] src/lib/molecule-flows.ts:69 — Hardcoded hex color: #C088FF
  • [minor] web/src/app/(app)/settings/page.tsx:109 — Emoji in code: 🌙
  • [minor] web/src/app/(app)/social/page.tsx:231 — Emoji in code: 🔥
  • [minor] web/src/app/(app)/tracking/page.tsx:126 — Emoji in code: 💧
  • [minor] web/src/components/StreakCalendar.tsx:52 — Emoji in code: 🔥
  • [minor] web/src/components/CoachingCard.tsx:11 — Emoji in code: 📋
  • [minor] web/src/components/CoachingCard.tsx:13 — Emoji in code: 💧
  • [minor] web/src/components/CoachingCard.tsx:14 — Emoji in code: 🔥
  • [minor] web/src/components/CoachingCard.tsx:15 — Emoji in code: 💪
  • [minor] web/src/components/CoachingCard.tsx:16 — Emoji in code: 🎉
  • [minor] web/src/components/CoachingCard.tsx:17 — Emoji in code: 📈
  • [minor] web/src/components/CoachingCard.tsx:50 — Emoji in code: 💡
  • [minor] web/src/components/SafetyBanner.tsx:13 — Emoji in code: 🔶
  • [minor] web/src/components/SafetyBanner.tsx:14 — Emoji in code: 🛑
  • [minor] web/src/components/Sidebar.tsx:33 — Emoji in code: 🧬
  • [minor] web/src/components/OnboardingFlow.tsx:30 — Emoji in code: 🧬
  • [minor] web/src/components/OnboardingFlow.tsx:35 — Emoji in code: 📋
  • [minor] web/src/components/OnboardingFlow.tsx:40 — Emoji in code: 📊
  • [minor] web/src/components/OnboardingFlow.tsx:45 — Emoji in code: 🛡
  • [minor] web/src/components/OnboardingFlow.tsx:50 — Emoji in code: 🚀
  • [minor] web/src/lib/gamification.ts:78 — Emoji in code: 🔥
  • [minor] web/src/lib/gamification.ts:80 — Emoji in code: 💪
  • [minor] web/src/lib/gamification.ts:81 — Emoji in code: 👑
  • [minor] web/src/lib/gamification.ts:85 — Emoji in code: 🌙
  • [minor] web/src/lib/gamification.ts:86 — Emoji in code: 💯
  • [minor] web/src/lib/gamification.ts:87 — Emoji in code: 🏆
  • [minor] web/src/lib/gamification.ts:90 — Emoji in code: 🌱
  • [minor] web/src/lib/gamification.ts:91 — Emoji in code: 🎯
  • [minor] web/src/lib/gamification.ts:93 — Emoji in code: 🌟
  • [minor] web/src/lib/gamification.ts:94 — Emoji in code: 🏅
  • [minor] web/src/lib/gamification.ts:97 — Emoji in code: 🔒
  • [minor] web/src/lib/gamification.ts:98 — Emoji in code: 💎
  • [minor] web/src/lib/ai-coach.ts:61 — Emoji in code: 🔥
  • [minor] ios-extensions/NomGapWidget/NomGapLiveActivity.swift:131 — Emoji in code: 🧬
  • [minor] ios-extensions/NomGapWidget/NomGapLiveActivity.swift:139 — Emoji in code: 💧
  • [minor] ios-extensions/NomGapWidget/NomGapLiveActivity.swift:171 — Emoji in code: 🧬
  • [minor] ios-extensions/NomGapWidget/NomGapLiveActivity.swift:174 — Emoji in code: 💧
  • [minor] ios-extensions/NomGapWidget/NomGapLockScreenWidget.swift:108 — Emoji in code: 💧
  • [minor] ios-extensions/NomGapShortcuts/NomGapShortcuts.swift:31 — Emoji in code: 💪
  • [minor] ios-extensions/NomGapShortcuts/NomGapShortcuts.swift:57 — Emoji in code: 🎉
  • [minor] ios-extensions/NomGapShortcuts/NomGapShortcuts.swift:102 — Emoji in code: 💧
  • [minor] ios-extensions/NomGapShortcuts/NomGapShortcuts.swift:104 — Emoji in code: 💧
  • [minor] ios-extensions/NomGapShortcuts/NomGapShortcuts.swift:125 — Emoji in code: 💪
  • [minor] watch/Shared/FastingState.swift:29 — Emoji in code: 🍽
  • [minor] watch/Shared/FastingState.swift:31 — Emoji in code: 🔥
  • [minor] watch/Shared/FastingState.swift:33 — Emoji in code: 🧬
  • [minor] watch/Shared/FastingState.swift:34 — Emoji in code: 🌟
  • [minor] watch/NomGapWatch/FastingTimerView.swift:287 — Emoji in code: 🎉
  • [minor] watch/NomGapWatch/ComplicationProvider.swift:33 — Emoji in code: 🔥
  • [minor] watch/NomGapWatch/StatsView.swift:20 — Emoji in code: 🔥
  • [minor] watch/NomGapWatch/HydrationView.swift:18 — Emoji in code: 💧
  • [minor] src/utils/shareCardExport.ts:24 — Emoji in code: 🍽
  • [minor] src/utils/shareCardExport.ts:57 — Emoji in code: 🍽
  • [minor] src/utils/shareCardExport.ts:58 — Emoji in code: 🧬
  • [minor] src/utils/shareCardExport.ts:59 — Emoji in code: 🔬
  • [minor] src/utils/shareCardExport.ts:60 — Emoji in code: 💧
  • [minor] src/screens/learn/LearnScreen.tsx:24 — Emoji in code: 💧
  • [minor] src/screens/learn/LearnScreen.tsx:34 — Emoji in code: 🌊
  • [minor] src/screens/learn/LearnScreen.tsx:39 — Emoji in code: 🍵
  • [minor] src/screens/learn/LearnScreen.tsx:44 — Emoji in code: 😴
  • [minor] src/screens/learn/LearnScreen.tsx:49 — Emoji in code: 🚶
  • [minor] src/screens/fast/TimerControls.tsx:63 — Emoji in code: 🔥
  • [minor] src/screens/fast/TimerControls.tsx:103 — Emoji in code: 🎉
  • [minor] src/screens/fast/FastCompletionModal.tsx:147 — Emoji in code: 🎉
  • [minor] src/screens/fast/FastCompletionModal.tsx:170 — Emoji in code: 💧
  • [minor] src/screens/fast/FastCompletionModal.tsx:208 — Emoji in code: 🍽
  • [minor] src/screens/fast/FastCompletionModal.tsx:219 — Emoji in code: 📤
  • [minor] src/screens/fast/SafetyBanner.tsx:29 — Emoji in code: 🔶
  • [minor] src/screens/fast/SafetyBanner.tsx:30 — Emoji in code: 🚨
  • [minor] src/screens/fast/SafetyBanner.tsx:109 — Emoji in code: 🧂
  • [minor] src/screens/fast/SafetyBanner.tsx:129 — Emoji in code: 🛑
  • [minor] src/screens/fast/CoachingTipsSheet.tsx:66 — Emoji in code: 🤖
  • [minor] src/screens/fast/CoachingTipsSheet.tsx:83 — Emoji in code: 🌱
  • [minor] src/screens/fast/MoodCheckinModal.tsx:150 — Emoji in code: 😞
  • [minor] src/screens/fast/MoodCheckinModal.tsx:158 — Emoji in code: 🪫
  • [minor] src/screens/fast/MoodCheckinModal.tsx:166 — Emoji in code: 🍽
  • [minor] src/screens/fast/MoodCheckinModal.tsx:175 — Emoji in code: 🌫
  • [minor] src/screens/protocol/ProtocolPicker.tsx:87 — Emoji in code: 🔥
  • [minor] src/screens/protocol/ProtocolPicker.tsx:88 — Emoji in code: 📅
  • [minor] src/screens/protocol/ProtocolPicker.tsx:89 — Emoji in code: 🙏
  • [minor] src/screens/protocol/ProtocolPicker.tsx:188 — Emoji in code: 🛠
  • [minor] src/screens/protocol/ProtocolPicker.tsx:289 — Emoji in code: 📍
  • [minor] src/screens/protocol/ProtocolDetail.tsx:151 — Emoji in code: 🕉
  • [minor] src/screens/protocol/ProtocolDetail.tsx:202 — Emoji in code: 🔬
  • [minor] src/screens/protocol/ProtocolDetail.tsx:213 — Emoji in code: 💡
  • [minor] src/screens/protocol/ProtocolDetail.tsx:238 — Emoji in code: 🔥
  • [minor] src/screens/journey/StreakCalendar.tsx:88 — Emoji in code: 🔥
  • [minor] src/screens/journey/StreakCalendar.tsx:131 — Emoji in code: 🔥
  • [minor] src/screens/journey/StreakCalendar.tsx:152 — Emoji in code: 🔥
  • [minor] src/screens/journey/MoodChart.tsx:18 — Emoji in code: 😞
  • [minor] src/screens/journey/MoodChart.tsx:19 — Emoji in code: 😐
  • [minor] src/screens/journey/MoodChart.tsx:20 — Emoji in code: 🙂
  • [minor] src/screens/journey/MoodChart.tsx:21 — Emoji in code: 😊
  • [minor] src/screens/journey/MoodChart.tsx:22 — Emoji in code: 🤩
  • [minor] src/screens/journey/MoodChart.tsx:26 — Emoji in code: 🪫
  • [minor] src/screens/journey/MoodChart.tsx:27 — Emoji in code: 😴
  • [minor] src/screens/journey/MoodChart.tsx:29 — Emoji in code: 💪
  • [minor] src/screens/journey/MoodChart.tsx:30 — Emoji in code: 🔥
  • [minor] src/screens/journey/MoodChart.tsx:58 — Emoji in code: 😊
  • [minor] src/screens/journey/MoodChart.tsx:68 — Emoji in code: 🙂
  • [minor] src/screens/journey/MoodChart.tsx:83 — Emoji in code: 🍽
  • [minor] src/screens/journey/MoodChart.tsx:96 — Emoji in code: 🙂
  • [minor] src/screens/journey/InsightsCard.tsx:96 — Emoji in code: 💡
  • [minor] src/screens/journey/InsightsCard.tsx:110 — Emoji in code: 💡
  • [minor] src/screens/journey/InsightsCard.tsx:166 — Emoji in code: 📈
  • [minor] src/screens/journey/InsightsCard.tsx:167 — Emoji in code: 📉
  • [minor] src/screens/social/SocialScreen.tsx:241 — Emoji in code: 🏆
  • [minor] src/screens/social/SocialScreen.tsx:264 — Emoji in code: 🥇
  • [minor] src/screens/social/SocialScreen.tsx:276 — Emoji in code: 👥
  • [minor] src/screens/profile/GoalSetting.tsx:34 — Emoji in code: 🧬
  • [minor] src/screens/profile/GoalSetting.tsx:35 — Emoji in code: 🧠
  • [minor] src/screens/profile/GoalSetting.tsx:37 — Emoji in code: 🕊
  • [minor] src/screens/profile/GoalSetting.tsx:38 — Emoji in code: 💪
  • [minor] src/screens/profile/ProfileScreen.tsx:104 — Emoji in code: 🧬
  • [minor] src/screens/profile/AchievementShelf.tsx:95 — Emoji in code: 🔒
  • [minor] src/screens/profile/AchievementShelf.tsx:119 — Emoji in code: 🔒
  • [minor] src/screens/meal/MealLogScreen.tsx:35 — Emoji in code: 🥩
  • [minor] src/screens/meal/MealLogScreen.tsx:36 — Emoji in code: 🍞
  • [minor] src/screens/meal/MealLogScreen.tsx:37 — Emoji in code: 🥑
  • [minor] src/screens/meal/MealLogScreen.tsx:38 — Emoji in code: 🥗
  • [minor] src/screens/meal/MealLogScreen.tsx:39 — Emoji in code: 🍎
  • [minor] src/screens/meal/MealLogScreen.tsx:40 — Emoji in code: 🧀
  • [minor] src/screens/meal/MealLogScreen.tsx:41 — Emoji in code: 🍲
  • [minor] src/screens/meal/MealLogScreen.tsx:42 — Emoji in code: 🥜
  • [minor] src/screens/meal/MealLogScreen.tsx:51 — Emoji in code: 🌅
  • [minor] src/screens/meal/MealLogScreen.tsx:57 — Emoji in code: 🌙
  • [minor] src/screens/meal/MealLogScreen.tsx:63 — Emoji in code: 🍽
  • [minor] src/screens/meal/MealLogScreen.tsx:69 — Emoji in code: 🥜
  • [minor] src/screens/meal/MealLogScreen.tsx:275 — Emoji in code: 💡
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:34 — Emoji in code: 🧬
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:35 — Emoji in code: 🧠
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:36 — Emoji in code: 🔥
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:37 — Emoji in code: 🕊
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:38 — Emoji in code: 💚
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:109 — Emoji in code: 🧬
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:117 — Emoji in code: 🔥
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:118 — Emoji in code: 🧠
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:119 — Emoji in code: 💧
  • [minor] src/screens/onboarding/OnboardingScreen.tsx:120 — Emoji in code: 🏆
  • [minor] src/components/BodyVisualization/BiomarkerCards.tsx:58 — Emoji in code: 🔬
  • [minor] src/components/BodyVisualization/BiomarkerCards.tsx:60 — Emoji in code: 💪
  • [minor] src/components/BodyVisualization/BodyVisualizationFullScreen.tsx:267 — Emoji in code: 📤
  • [minor] src/components/common/WaterTracker.tsx:42 — Emoji in code: 💧
  • [minor] src/hooks/useLiveActivity.ts:71 — Emoji in code: 🍽
  • [minor] src/hooks/useLiveActivity.ts:73 — Emoji in code: 🔥
  • [minor] src/hooks/useLiveActivity.ts:75 — Emoji in code: 🧬
  • [minor] src/hooks/useLiveActivity.ts:76 — Emoji in code: 🌟
  • [minor] src/hooks/useLiveActivity.ts:86 — Emoji in code: 🌟
  • [minor] src/lib/gamification.ts:41 — Emoji in code: 🌱
  • [minor] src/lib/gamification.ts:50 — Emoji in code: 💪
  • [minor] src/lib/gamification.ts:59 — Emoji in code: 🏆
  • [minor] src/lib/gamification.ts:78 — Emoji in code: 🔥
  • [minor] src/lib/gamification.ts:96 — Emoji in code: 🧬
  • [minor] src/lib/gamification.ts:105 — Emoji in code: 🛡
  • [minor] src/lib/gamification.ts:115 — Emoji in code: 🔗
  • [minor] src/lib/gamification.ts:124 — Emoji in code: 📅
  • [minor] src/lib/gamification.ts:133 — Emoji in code: 👑
  • [minor] src/lib/gamification.ts:143 — Emoji in code: 💧
  • [minor] src/lib/gamification.ts:153 — Emoji in code: 😊
  • [minor] src/lib/gamification.ts:163 — Emoji in code: 🦉
  • [minor] src/lib/gamification.ts:172 — Emoji in code: 🐦
  • [minor] src/lib/gamification.ts:181 — Emoji in code: 🗺
  • [minor] src/lib/gamification.ts:190 — Emoji in code: 🦋
  • [minor] src/lib/gamification.ts:199 — Emoji in code: 📤
  • [minor] src/lib/fasting-science.ts:110 — Emoji in code: 💧
  • [minor] src/lib/fasting-science.ts:121 — Emoji in code: 🚨
  • [minor] src/lib/insights.ts:156 — Emoji in code: 📈
  • [minor] src/lib/insights.ts:165 — Emoji in code: 📉
  • [minor] src/lib/insights.ts:179 — Emoji in code: 🎯
  • [minor] src/lib/insights.ts:188 — Emoji in code: 💪
  • [minor] src/lib/insights.ts:201 — Emoji in code: 🧬
  • [minor] src/lib/insights.ts:213 — Emoji in code: 📊
  • [minor] src/lib/insights.ts:289 — Emoji in code: 📈
  • [minor] src/lib/insights.ts:298 — Emoji in code: 📉
  • [minor] src/lib/insights.ts:310 — Emoji in code: 🗺
  • [minor] src/lib/insights.ts:321 — Emoji in code: 🏅
  • [minor] src/lib/insights.ts:332 — Emoji in code: 📊
  • [minor] src/lib/insights.ts:504 — Emoji in code: 🏆
  • [minor] src/lib/insights.ts:514 — Emoji in code: 🔥
  • [minor] src/lib/insights.ts:524 — Emoji in code: 🧬
  • [minor] src/lib/celebrations.ts:46 — Emoji in code: 🚀
  • [minor] src/lib/celebrations.ts:49 — Emoji in code: 🧬
  • [minor] src/lib/celebrations.ts:50 — Emoji in code: 💧
  • [minor] src/lib/celebrations.ts:51 — Emoji in code: 🧠
  • [minor] src/lib/celebrations.ts:52 — Emoji in code: 🎯
  • [minor] src/lib/celebrations.ts:54 — Emoji in code: 💪
  • [minor] src/lib/celebrations.ts:55 — Emoji in code: 🔥
  • [minor] src/lib/celebrations.ts:59 — Emoji in code: 🌟
  • [minor] src/lib/gentle-notifications.ts:42 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:75 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:76 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:77 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:78 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:79 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:80 — Emoji in code: 💧
  • [minor] src/lib/hydration-reminders.ts:175 — Emoji in code: 🎉
  • [minor] src/lib/ai-coach.ts:88 — Emoji in code: 🚀
  • [minor] src/lib/ai-coach.ts:181 — Emoji in code: 📅
  • [minor] src/lib/ai-coach.ts:196 — Emoji in code: 🔥
  • [minor] src/lib/ai-coach.ts:206 — Emoji in code: 🔥
  • [minor] src/lib/ai-coach.ts:216 — Emoji in code: 👑
  • [minor] src/lib/ai-coach.ts:235 — Emoji in code: 💧
  • [minor] src/lib/ai-coach.ts:245 — Emoji in code: 🏆
  • [minor] src/lib/ai-coach.ts:286 — Emoji in code: 🌱
  • [minor] src/lib/ai-coach.ts:297 — Emoji in code: 😴
  • [minor] src/lib/ai-coach.ts:305 — Emoji in code: 🧂
  • [minor] src/lib/ai-coach.ts:313 — Emoji in code: 🏃
  • [minor] src/lib/streaks.ts:27 — Emoji in code: 🔥
  • [minor] src/lib/streaks.ts:28 — Emoji in code: 💪
  • [minor] src/lib/streaks.ts:29 — Emoji in code: 👑
  • [minor] src/lib/streaks.ts:31 — Emoji in code: 🏆
  • [minor] src/lib/streaks.ts:32 — Emoji in code: 🌟
  • [minor] src/lib/streaks.ts:33 — Emoji in code: 💎

learning_ai_jarvis_jr

Counts: critical=0 · major=0 · minor=15 · total=15

  • [minor] web/src/app/(app)/settings/page.tsx:72 — Emoji in code: 🌙
  • [minor] web/src/app/(app)/dashboard/page.tsx:20 — Emoji in code: 🎯
  • [minor] web/src/app/(app)/dashboard/page.tsx:27 — Emoji in code: 🌍
  • [minor] web/src/app/(app)/history/page.tsx:34 — Emoji in code: 📋
  • [minor] web/src/components/Sidebar.tsx:8 — Emoji in code: 👥
  • [minor] web/src/components/Sidebar.tsx:9 — Emoji in code: 📋
  • [minor] web/src/components/Sidebar.tsx:10 — Emoji in code: 📊
  • [minor] web/src/components/Sidebar.tsx:11 — Emoji in code: 🏪
  • [minor] web/src/lib/share.ts:40 — Emoji in code: 🏆
  • [minor] web/src/lib/share.ts:41 — Emoji in code: 🔥
  • [minor] web/src/lib/share.ts:42 — Emoji in code: 📊
  • [minor] web/src/lib/share.ts:44 — Emoji in code: 📈
  • [minor] web/src/lib/share.ts:61 — Emoji in code: 💡
  • [minor] android/app/src/main/java/com/jarvisjr/app/ui/screens/HistoryScreen.kt:33 — Emoji in code: 📋
  • [minor] android/app/src/main/java/com/jarvisjr/app/ui/screens/ProgressScreen.kt:33 — Emoji in code: 📊

learning_ai_peakpulse

Counts: critical=0 · major=0 · minor=1 · total=1

  • [minor] backend/src/modules/peak-sessions/repository.ts:31 — any type: const decrypted = await getEncryptor().decrypt(doc.notes as any, {

learning_ai_notes

Counts: critical=0 · major=0 · minor=11 · total=11

  • [minor] web/src/app/(app)/workspaces/page.tsx:198 — any type: owner:any
  • [minor] web/src/app/(app)/workspaces/page.tsx:199 — any type: visibility:any
  • [minor] backend/src/lib/request-context.ts:15 — any type: return _ctx.getRequestProductId(req as any);
  • [minor] backend/src/lib/request-context.ts:20 — any type: return _ctx.getUserId(req as any);
  • [minor] mobile/src/app/(tabs)/capture.tsx:16 — Emoji in code: 📷
  • [minor] mobile/src/app/(tabs)/capture.tsx:17 — Emoji in code: 🎙
  • [minor] mobile/src/app/(tabs)/capture.tsx:18 — Emoji in code: 🔗
  • [minor] mobile/src/app/(tabs)/capture.tsx:19 — Emoji in code: 📄
  • [minor] mobile/src/app/(tabs)/capture.tsx:20 — Emoji in code: 📋
  • [minor] mobile/src/app/(tabs)/capture/scan.tsx:21 — Emoji in code: 📄
  • [minor] mobile/src/app/(tabs)/capture/voice.tsx:22 — Emoji in code: 🎙

learning_ai_flowmonk

Counts: critical=0 · major=107 · minor=4 · total=111

  • [minor] web/src/app/(app)/tasks/page.tsx:153 — any type: { value: '', label: 'Energy: any' },
  • [minor] backend/src/lib/scheduler/engine.ts:468 — any type: // Priority 3: any remaining slot (no zone match)
  • [minor] backend/src/modules/tasks/repository.ts:28 — any type: const decrypted = await getEncryptor().decrypt(task.description as any, {
  • [major] mobile/src/app/index.tsx:57 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/index.tsx:59 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/index.tsx:60 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/index.tsx:61 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/index.tsx:64 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/index.tsx:68 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/index.tsx:70 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/index.tsx:73 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/urgent.tsx:39 — Hardcoded hex color: #ef4444
  • [major] mobile/src/app/urgent.tsx:69 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/urgent.tsx:70 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/urgent.tsx:71 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/urgent.tsx:74 — Hardcoded hex color: #22170a
  • [major] mobile/src/app/urgent.tsx:79 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/urgent.tsx:80 — Hardcoded hex color: #d9c7a4
  • [major] mobile/src/app/urgent.tsx:81 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/urgent.tsx:83 — Hardcoded hex color: #5b4112
  • [major] mobile/src/app/urgent.tsx:84 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/urgent.tsx:85 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/urgent.tsx:86 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/urgent.tsx:88 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/login.tsx:31 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/login.tsx:40 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/login.tsx:54 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/login.tsx:55 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/login.tsx:56 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/login.tsx:57 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/login.tsx:58 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/login.tsx:59 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/login.tsx:60 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/tasks.tsx:7 — Hardcoded hex color: #ef4444
  • [major] mobile/src/app/tasks.tsx:8 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/tasks.tsx:9 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/tasks.tsx:10 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/tasks.tsx:69 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/tasks.tsx:74 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/tasks.tsx:79 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/tasks.tsx:83 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/tasks.tsx:98 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/tasks.tsx:99 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/tasks.tsx:100 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/tasks.tsx:102 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/tasks.tsx:104 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/tasks.tsx:107 — Hardcoded hex color: #ef4444
  • [major] mobile/src/app/tasks.tsx:110 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/tasks.tsx:111 — Hardcoded hex color: #fff
  • [major] mobile/src/app/tasks.tsx:112 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/tasks.tsx:114 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/schedule.tsx:7 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/schedule.tsx:8 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/schedule.tsx:9 — Hardcoded hex color: #e879f9
  • [major] mobile/src/app/schedule.tsx:10 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/schedule.tsx:71 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/schedule.tsx:81 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/schedule.tsx:84 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/schedule.tsx:87 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/schedule.tsx:105 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/schedule.tsx:107 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/schedule.tsx:108 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/schedule.tsx:109 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/schedule.tsx:110 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/schedule.tsx:113 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/schedule.tsx:117 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/schedule.tsx:118 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/schedule.tsx:120 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/schedule.tsx:121 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/schedule.tsx:123 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/schedule.tsx:125 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/_layout.tsx:11 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/flows.tsx:55 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/flows.tsx:56 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/flows.tsx:57 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/flows.tsx:60 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/flows.tsx:65 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/flows.tsx:66 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/flows.tsx:67 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/flows.tsx:69 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/flows.tsx:71 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/capture.tsx:44 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/capture.tsx:71 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/capture.tsx:83 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/capture.tsx:84 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/capture.tsx:86 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/capture.tsx:88 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/capture.tsx:89 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/capture.tsx:94 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/capture.tsx:96 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/capture.tsx:97 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/capture.tsx:98 — Hardcoded hex color: #fff
  • [major] mobile/src/app/capture.tsx:100 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/capture.tsx:102 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/recommendations.tsx:7 — Hardcoded hex color: #ef4444
  • [major] mobile/src/app/recommendations.tsx:8 — Hardcoded hex color: #f59e0b
  • [major] mobile/src/app/recommendations.tsx:9 — Hardcoded hex color: #5a8cff
  • [major] mobile/src/app/recommendations.tsx:50 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/recommendations.tsx:78 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/recommendations.tsx:79 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/recommendations.tsx:80 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/recommendations.tsx:83 — Hardcoded hex color: #0f1b2d
  • [major] mobile/src/app/recommendations.tsx:88 — Hardcoded hex color: #eff4ff
  • [major] mobile/src/app/recommendations.tsx:89 — Hardcoded hex color: #5a6a82
  • [major] mobile/src/app/recommendations.tsx:90 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/recommendations.tsx:92 — Hardcoded hex color: #5ae68c
  • [major] mobile/src/app/recommendations.tsx:93 — Hardcoded hex color: #07111f
  • [major] mobile/src/app/recommendations.tsx:94 — Hardcoded hex color: #24344d
  • [major] mobile/src/app/recommendations.tsx:95 — Hardcoded hex color: #a8b4c8
  • [major] mobile/src/app/recommendations.tsx:97 — Hardcoded hex color: #a8b4c8
  • [minor] web/src/app/(app)/settings/page.tsx:74 — Emoji in code: 🌙

learning_ai_trails

Counts: critical=0 · major=0 · minor=1 · total=1

  • [minor] web/src/app/(app)/settings/page.tsx:42 — Emoji in code: 🌙

learning_ai_local_memory_gpt

No violations found.

learning_ai_efforise

Counts: critical=0 · major=0 · minor=10 · total=10

  • [minor] backend/src/lib/request-context.ts:14 — any type: return _ctx.getRequestProductId(req as any);
  • [minor] backend/src/lib/request-context.ts:19 — any type: return _ctx.getUserId(req as any);
  • [minor] client/src/components/ui/dialog.tsx:107 — any type: const isCurrentlyComposing = (e as any).isComposing || isComposing();
  • [minor] client/src/components/ui/textarea.tsx:24 — any type: const isComposing = (e.nativeEvent as any).isComposing || dialogCompositio
  • [minor] client/src/components/ui/input.tsx:25 — any type: const isComposing = (e.nativeEvent as any).isComposing || dialogCompositio
  • [minor] client/src/hooks/usePersistFn.ts:3 — any type: type noop = (...args: any[]) => any;
  • [minor] client/src/pages/app/Dashboard.tsx:140 — Emoji in code: 🎯
  • [minor] client/src/pages/app/Identity.tsx:7 — Emoji in code: 🎯
  • [minor] client/src/pages/app/Identity.tsx:244 — Emoji in code: 🎯
  • [minor] client/src/pages/app/Identity.tsx:273 — Emoji in code: 🎯

learning_ai_local_llms

Counts: critical=0 · major=0 · minor=1 · total=1

  • [minor] dashboard/src/app/lib/format.ts:61 — Emoji in code: 👁

learning_ai_talk2obsidian

No violations found.

learning_ai_smart_auth

No violations found.

learning_ai_auth_app

No violations found.

learning_ai_productivity_web

Counts: critical=0 · major=0 · minor=6 · total=6

  • [minor] src/app/tools/markdown-preview/page.tsx:36 — Emoji in code: 🕐
  • [minor] src/lib/tools-registry.ts:27 — Emoji in code: 📝
  • [minor] src/lib/tools-registry.ts:28 — Emoji in code: 🔐
  • [minor] src/lib/tools-registry.ts:29 — Emoji in code: 🔄
  • [minor] src/lib/tools-registry.ts:30 — Emoji in code: 🎨
  • [minor] src/lib/tools-registry.ts:31 — Emoji in code: 📊

oss/learning_ai_claw-cowork

Counts: critical=0 · major=14 · minor=5 · total=19

  • [major] plugins/bytelyst-scaffolder/main.js:182 — console.log: console.log(JSON.stringify({ error: "no input provided" }));
  • [major] plugins/bytelyst-scaffolder/main.js:190 — console.log: console.log(
  • [major] plugins/bytelyst-scaffolder/main.js:205 — console.log: console.log(JSON.stringify(result));
  • [major] plugins/bytelyst-scaffolder/main.js:207 — console.log: console.log(JSON.stringify({ error: e.message }));
  • [major] plugins/data-analyzer/main.js:152 — console.log: console.log(JSON.stringify({ error: "no input provided" }));
  • [major] plugins/data-analyzer/main.js:160 — console.log: console.log(JSON.stringify({ error: invalid JSON input: ${e.message} }));
  • [major] plugins/data-analyzer/main.js:171 — console.log: console.log(JSON.stringify({ error: "missing required parameters: file_p
  • [major] plugins/data-analyzer/main.js:177 — console.log: console.log(JSON.stringify({ error: "missing required parameter: file_pa
  • [major] plugins/data-analyzer/main.js:182 — console.log: console.log(JSON.stringify(result));
  • [major] plugins/data-analyzer/main.js:184 — console.log: console.log(JSON.stringify({ error: e.message }));
  • [major] plugins/product-backend-module/main.js:320 — console.log: console.log(JSON.stringify({ error: "no input provided" }));
  • [major] plugins/product-backend-module/main.js:328 — console.log: console.log(JSON.stringify({ error: invalid JSON input: ${e.message} }));
  • [major] plugins/product-backend-module/main.js:340 — console.log: console.log(JSON.stringify(result));
  • [major] plugins/product-backend-module/main.js:342 — console.log: console.log(JSON.stringify({ error: e.message }));
  • [minor] crates/cowork-desktop/src/components/ChatView.tsx:543 — any type: path: (f as any).path || f.name,
  • [minor] crates/cowork-desktop/src/components/ChatView.tsx:616 — any type: path: (f as any).path || f.name,
  • [minor] crates/cowork-desktop/src/App.tsx:84 — Emoji in code: 🚧
  • [minor] crates/cowork-desktop/src/cli.rs:39 — Emoji in code: 💭
  • [minor] crates/cowork-desktop/src/components/ChatView.tsx:141 — Emoji in code: 🔧

learning_ai_mac_tooling

Counts: critical=0 · major=346 · minor=219 · total=565

  • [major] tools/network_transfer_audit.py:649 — Python print(): print(f" {YELLOW}⚠ LLM classification skipped: LLM_OPENAI_ENDPOINT or L
  • [major] tools/network_transfer_audit.py:708 — Python print(): print(f" {DIM}Classifying {len(to_classify)} unknown processes via LLM.
  • [major] tools/network_transfer_audit.py:729 — Python print(): print(f" {GREEN}✓ classified {len(classifications)} processes{RESET}")
  • [major] tools/network_transfer_audit.py:732 — Python print(): print(f" {RED}✗ LLM API error: {e}{RESET}")
  • [major] tools/network_transfer_audit.py:734 — Python print(): print(f" {RED}✗ Failed to parse LLM response: {e}{RESET}")
  • [major] tools/network_transfer_audit.py:1081 — Python print(): print(f"\n{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/network_transfer_audit.py:1082 — Python print(): print(f"{BOLD}{CYAN} Network Transfer Monitor{RESET}")
  • [major] tools/network_transfer_audit.py:1083 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/network_transfer_audit.py:1085 — Python print(): print(f" {BOLD}Monitoring duration:{RESET} {mins:.0f} minutes")
  • [major] tools/network_transfer_audit.py:1086 — Python print(): print(f" {DIM}Taking initial nettop snapshot...{RESET}")
  • [major] tools/network_transfer_audit.py:1090 — Python print(): print(f" {GREEN}Start:{RESET} {from_dt.strftime('%Y-%m-%d %H:%M:%S')}")
  • [major] tools/network_transfer_audit.py:1091 — Python print(): print(f" {DIM}Monitoring network activity — waiting {mins:.0f} minutes...{R
  • [major] tools/network_transfer_audit.py:1107 — Python print(): print(f"\r {CYAN}[{bar}]{RESET} {pct:>3}% {r_min}m {r_sec:02d}s remain
  • [major] tools/network_transfer_audit.py:1109 — Python print(): print(f"\r {GREEN}[{'█' * 40}]{RESET} 100% Done! ")
  • [major] tools/network_transfer_audit.py:1111 — Python print(): print(f" {GREEN}End:{RESET} {to_dt.strftime('%Y-%m-%d %H:%M:%S')}")
  • [major] tools/network_transfer_audit.py:1113 — Python print(): print(f" {DIM}Taking final nettop snapshot...{RESET}")
  • [major] tools/network_transfer_audit.py:1135 — Python print(): print(f"\n {BOLD}Transfer during monitoring period:{RESET}")
  • [major] tools/network_transfer_audit.py:1136 — Python print(): print(f" {GREEN}↓ Inbound: {fmt_bytes(total_in)}{RESET}")
  • [major] tools/network_transfer_audit.py:1137 — Python print(): print(f" {YELLOW}↑ Outbound: {fmt_bytes(total_out)}{RESET}")
  • [major] tools/network_transfer_audit.py:1138 — Python print(): print(f" {DIM}Processes with activity: {len(deltas)}{RESET}\n")
  • [major] tools/network_transfer_audit.py:2236 — Python print(): print(f"\n{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/network_transfer_audit.py:2237 — Python print(): print(f"{BOLD}{CYAN} {title}{RESET}")
  • [major] tools/network_transfer_audit.py:2238 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/network_transfer_audit.py:2242 — Python print(): print(f"\n{BOLD}{YELLOW}── {title} {'─' * (65 - len(title))}{RESET}")
  • [major] tools/network_transfer_audit.py:2246 — Python print(): print(f" {DIM}{msg}{RESET}")
  • [major] tools/network_transfer_audit.py:2263 — Python print(): print(f" {BOLD}Time window:{RESET} {window_str}")
  • [major] tools/network_transfer_audit.py:2266 — Python print(): print(f" {BOLD}Duration:{RESET} {hours:.1f} hours")
  • [major] tools/network_transfer_audit.py:2271 — Python print(): print(f" {DIM}Querying: subsystem == com.apple.networkd ...{RESET}")
  • [major] tools/network_transfer_audit.py:2294 — Python print(): print(f" {GREEN}Found {len(events)} events across {len(proc_counts)
  • [major] tools/network_transfer_audit.py:2295 — Python print(): print(f" {'Process':<22} {'PID':>7} {'Events':>7} {'Category':<16}
  • [major] tools/network_transfer_audit.py:2296 — Python print(): print(f" {'─' * 22} {'─' * 7} {'─' * 7} {'─' * 16} {'─' * 11} {'─'
  • [major] tools/network_transfer_audit.py:2304 — Python print(): print(f" {proc_name:<22} {sample_pid:>7} {count:>7} {category:
  • [major] tools/network_transfer_audit.py:2311 — Python print(): print(f" {DIM}Querying: subsystem == com.apple.dnssd ...{RESET}")
  • [major] tools/network_transfer_audit.py:2318 — Python print(): print(f" {GREEN}Found {sum(c for _, c in dns)} DNS events, {len(dns
  • [major] tools/network_transfer_audit.py:2319 — Python print(): print(f" {'Domain':<50} {'Hits':>6}")
  • [major] tools/network_transfer_audit.py:2320 — Python print(): print(f" {'─' * 50} {'─' * 6}")
  • [major] tools/network_transfer_audit.py:2322 — Python print(): print(f" {domain:<50} {count:>6}")
  • [major] tools/network_transfer_audit.py:2329 — Python print(): print(f" {DIM}Querying: subsystem == com.apple.alf ...{RESET}")
  • [major] tools/network_transfer_audit.py:2336 — Python print(): print(f" {GREEN}Found {len(fw_events)} firewall decisions{RESET}\n"
  • [major] tools/network_transfer_audit.py:2339 — Python print(): print(f" {color}{ev}{RESET}")
  • [major] tools/network_transfer_audit.py:2341 — Python print(): print(f" {DIM}... and {len(fw_events) - 15} more{RESET}")
  • [major] tools/network_transfer_audit.py:2355 — Python print(): print(f" {GREEN}Found {len(valid_downloads)} downloads{RESET}\n")
  • [major] tools/network_transfer_audit.py:2357 — Python print(): print(f" {BOLD}{dl['time']}{RESET} via {CYAN}{dl['agent']}{RES
  • [major] tools/network_transfer_audit.py:2360 — Python print(): print(f" ↓ {url_display}")
  • [major] tools/network_transfer_audit.py:2363 — Python print(): print(f" ← {DIM}{origin_display}{RESET}")
  • [major] tools/network_transfer_audit.py:2364 — Python print(): print()
  • [major] tools/network_transfer_audit.py:2385 — Python print(): print(f" {GREEN}Found {len(live)} active connections{RESET}\n")
  • [major] tools/network_transfer_audit.py:2386 — Python print(): print(f" {'Process':<16} {'PID':<7} {'Category':<15} {'Installe
  • [major] tools/network_transfer_audit.py:2387 — Python print(): print(f" {'─' * 16} {'─' * 7} {'─' * 15} {'─' * 10} {'─' * 16}
  • [major] tools/network_transfer_audit.py:2391 — Python print(): print(f" {c['process']:<16} {c['pid']:<7} {category:<15} {i
  • [major] tools/network_transfer_audit.py:2408 — Python print(): print(f" {GREEN}Processes with active network I/O:{RESET}\n")
  • [major] tools/network_transfer_audit.py:2409 — Python print(): print(f" {'Process':<25} {'Category':<14} {'Installer':<10} {'↓
  • [major] tools/network_transfer_audit.py:2410 — Python print(): print(f" {'─' * 25} {'─' * 14} {'─' * 10} {'─' * 10} {'─' * 10}
  • [major] tools/network_transfer_audit.py:2418 — Python print(): print(f" {p['process']:<25} {category:<14} {installer:<10}
  • [major] tools/network_transfer_audit.py:2524 — Python print(): print(f" {GREEN}Connections: {ext} external, {intr} internal/loopba
  • [major] tools/network_transfer_audit.py:2529 — Python print(): print(f" {BOLD}Top External Destinations:{RESET}")
  • [major] tools/network_transfer_audit.py:2530 — Python print(): print(f" {'IP Address':<22} {'Connections':>12}")
  • [major] tools/network_transfer_audit.py:2531 — Python print(): print(f" {'─' * 22} {'─' * 12}")
  • [major] tools/network_transfer_audit.py:2533 — Python print(): print(f" {d['ip']:<22} {d['count']:>12}")
  • [major] tools/network_transfer_audit.py:2537 — Python print(): print(f"\n {BOLD}Top Remote Ports:{RESET}")
  • [major] tools/network_transfer_audit.py:2538 — Python print(): print(f" {'Port':<8} {'Service':<16} {'Connections':>12} {'Stat
  • [major] tools/network_transfer_audit.py:2539 — Python print(): print(f" {'─' * 8} {'─' * 16} {'─' * 12} {'─' * 10}")
  • [major] tools/network_transfer_audit.py:2542 — Python print(): print(f" {p['port']:<8} {p['service']:<16} {p['count']:>12}
  • [major] tools/network_transfer_audit.py:2553 — Python print(): print(f" {GREEN}Found {len(listeners)} listening ports{RESET}\n
  • [major] tools/network_transfer_audit.py:2554 — Python print(): print(f" {'Process':<20} {'PID':<7} {'User':<10} {'Address'}")
  • [major] tools/network_transfer_audit.py:2555 — Python print(): print(f" {'─' * 20} {'─' * 7} {'─' * 10} {'─' * 30}")
  • [major] tools/network_transfer_audit.py:2557 — Python print(): print(f" {l['process']:<20} {l['pid']:<7} {l['user']:<10} {
  • [major] tools/network_transfer_audit.py:2559 — Python print(): print(f" {DIM}... and {len(listeners) - 20} more{RESET}")
  • [major] tools/network_transfer_audit.py:2586 — Python print(): print(f" {DIM}Querying: com.apple.TCC, com.apple.locationd, com.apple.b
  • [major] tools/network_transfer_audit.py:2598 — Python print(): print(f" {GREEN}Found {len(sensor_events)} sensor access events acr
  • [major] tools/network_transfer_audit.py:2599 — Python print(): print(f" {'Process':<28} {'Sensor':<18} {'Count':>6} {'First Seen'
  • [major] tools/network_transfer_audit.py:2600 — Python print(): print(f" {'─' * 28} {'─' * 18} {'─' * 6} {'─' * 20} {'─' * 20} {'─
  • [major] tools/network_transfer_audit.py:2615 — Python print(): print(f" {color}{s['process']:<28} {s['sensor']:<18} {s['count'
  • [major] tools/network_transfer_audit.py:2640 — Python print(): print(f" {GREEN}Wi-Fi:{RESET} {BOLD}{ssid}{RESET}{rssi_label} ch:{
  • [major] tools/network_transfer_audit.py:2642 — Python print(): print(f" {DIM}Wi-Fi: not connected{RESET}")
  • [major] tools/network_transfer_audit.py:2649 — Python print(): print(f" {GREEN}VPN:{RESET} {len(vpn['tunnels'])} active tunnel(s)
  • [major] tools/network_transfer_audit.py:2653 — Python print(): print(f" {t['interface']}{ip_str} mtu={t['mtu']}")
  • [major] tools/network_transfer_audit.py:2655 — Python print(): print(f" {DIM}VPN: no active tunnels{RESET}")
  • [major] tools/network_transfer_audit.py:2660 — Python print(): print(f"\n {BOLD}Top Interfaces (cumulative):{RESET}")
  • [major] tools/network_transfer_audit.py:2661 — Python print(): print(f" {'Interface':<12} {'↓ In':>14} {'↑ Out':>14}")
  • [major] tools/network_transfer_audit.py:2662 — Python print(): print(f" {'─' * 12} {'─' * 14} {'─' * 14}")
  • [major] tools/network_transfer_audit.py:2664 — Python print(): print(f" {iface:<12} {fmt_bytes(v['bytes_in']):>14} {fmt_bytes(
  • [major] tools/network_transfer_audit.py:2670 — Python print(): print(f"\n {BOLD}Proxy:{RESET} PAC → {pac}")
  • [major] tools/network_transfer_audit.py:2672 — Python print(): print(f" {BOLD}DNS:{RESET} {', '.join(net_config['dns_servers'][:4]
  • [major] tools/network_transfer_audit.py:2691 — Python print(): print(f" {GREEN}{len(arp)} devices on local network{RESET}")
  • [major] tools/network_transfer_audit.py:2694 — Python print(): print(f" {a['ip']:<18} {a['mac']:<20} {a['interface']}")
  • [major] tools/network_transfer_audit.py:2696 — Python print(): print(f" {DIM}... and {len(arp) - 10} more{RESET}")
  • [major] tools/network_transfer_audit.py:2702 — Python print(): print(f"\n {BOLD}Bluetooth:{RESET} {bt.get('controller_state','?')}
  • [major] tools/network_transfer_audit.py:2706 — Python print(): print(f" {d['name']:<30} {d.get('type',''):<12} {status}")
  • [major] tools/network_transfer_audit.py:2711 — Python print(): print(f"\n {BOLD}USB Devices:{RESET} {len(named_usb)} with vendor i
  • [major] tools/network_transfer_audit.py:2713 — Python print(): print(f" {u['name']:<30} {u.get('vendor','')}")
  • [major] tools/network_transfer_audit.py:2717 — Python print(): print(f"\n {YELLOW}{BOLD}⚠ External disks mounted:{RESET}")
  • [major] tools/network_transfer_audit.py:2719 — Python print(): print(f" {d['mount_point']} ({d['filesystem']})")
  • [major] tools/network_transfer_audit.py:2737 — Python print(): print(f" {name:<14} {color}{val}{RESET}")
  • [major] tools/network_transfer_audit.py:2739 — Python print(): print(f" {'Stealth Mode':<14} {GREEN}on{RESET}")
  • [major] tools/network_transfer_audit.py:2741 — Python print(): print(f"\n {RED}{BOLD}⚠ Firewall is DISABLED — all inbound connecti
  • [major] tools/network_transfer_audit.py:2758 — Python print(): print(f" {BOLD}Privilege escalations:{RESET} {len(auth_evts)}")
  • [major] tools/network_transfer_audit.py:2760 — Python print(): print(f" {e['timestamp'][11:19]} {e['process']:<20} {e['righ
  • [major] tools/network_transfer_audit.py:2765 — Python print(): print(f" {BOLD}Gatekeeper/XProtect:{RESET} {len(gk_events)} events
  • [major] tools/network_transfer_audit.py:2768 — Python print(): print(f" {BOLD}Network Extension:{RESET} {len(ne_events)} VPN event
  • [major] tools/network_transfer_audit.py:2770 — Python print(): print(f" {e['timestamp'][11:19]} {e['event_type']:<20} {e['d
  • [major] tools/network_transfer_audit.py:2783 — Python print(): print(f" {RED if high_sev else GREEN}Found {len(anomalies)} anomali
  • [major] tools/network_transfer_audit.py:2786 — Python print(): print(f" {icon} {BOLD}{a['process']}{RESET}: {a['detail']}")
  • [major] tools/network_transfer_audit.py:2788 — Python print(): print(f" {GREEN}✓ No anomalies detected.{RESET}")
  • [major] tools/network_transfer_audit.py:2805 — Python print(): print(f"\n {'Category':<18} {'Installer':<12} {'Procs':>6} {'Events
  • [major] tools/network_transfer_audit.py:2806 — Python print(): print(f" {'─' * 18} {'─' * 12} {'─' * 6} {'─' * 7} {'─' * 14}")
  • [major] tools/network_transfer_audit.py:2810 — Python print(): print(f" {cat:<18} {installers_str:<12} {len(stats['processes']
  • [major] tools/network_transfer_audit.py:2816 — Python print(): print(f"\n {RED}{BOLD}⚠ HIGH RISK PROCESSES DETECTED:{RESET}")
  • [major] tools/network_transfer_audit.py:2819 — Python print(): print(f" → {BOLD}{p['process']}{RESET} [{p['category']}] In
  • [major] tools/network_transfer_audit.py:2821 — Python print(): print(f"\n {GREEN}✓ No high-risk processes detected in this window
  • [major] tools/network_transfer_audit.py:2826 — Python print(): print(f" Network connection events: {len(events)}")
  • [major] tools/network_transfer_audit.py:2827 — Python print(): print(f" Unique DNS domains: {len(dns)}")
  • [major] tools/network_transfer_audit.py:2828 — Python print(): print(f" Firewall decisions: {len(fw_events)}")
  • [major] tools/network_transfer_audit.py:2830 — Python print(): print(f" Files downloaded: {len(valid_dl)}")
  • [major] tools/network_transfer_audit.py:2832 — Python print(): print(f" Live connections: {len(live)}")
  • [major] tools/network_transfer_audit.py:2833 — Python print(): print(f" Processes with network I/O: {len(nettop)}")
  • [major] tools/network_transfer_audit.py:2834 — Python print(): print(f" Unique remote destinations: {dest_analysis.get('unique_de
  • [major] tools/network_transfer_audit.py:2835 — Python print(): print(f" Listening ports: {len(listeners)}")
  • [major] tools/network_transfer_audit.py:2836 — Python print(): print(f" Anomalies detected: {len(anomalies)}")
  • [major] tools/network_transfer_audit.py:2837 — Python print(): print(f" {BOLD}Total data inbound: {GREEN}{fmt_bytes(total
  • [major] tools/network_transfer_audit.py:2838 — Python print(): print(f" {BOLD}Total data outbound: {YELLOW}{fmt_bytes(tota
  • [major] tools/network_transfer_audit.py:2839 — Python print(): print(f" Sensor access events: {len(sensor_events)}")
  • [major] tools/network_transfer_audit.py:2840 — Python print(): print()
  • [major] tools/network_transfer_audit.py:2845 — Python print(): print(json.dumps(report, indent=2, default=str))
  • [major] tools/network_transfer_audit.py:2854 — Python print(): print(f"{GREEN}HTML report saved to: {output_html}{RESET}")
  • [major] tools/network_transfer_audit.py:2855 — Python print(): print(f"{DIM}Open in browser: open "{output_html}"{RESET}")
  • [major] tools/network_transfer_audit.py:2873 — Python print(): print(f"{RED}Error: session '{session_id}' not found in {db_path}{RESET}
  • [major] tools/network_transfer_audit.py:2885 — Python print(): print(f" {BOLD}Session:{RESET} {session_id}")
  • [major] tools/network_transfer_audit.py:2886 — Python print(): print(f" {BOLD}Status:{RESET} {session['status']}")
  • [major] tools/network_transfer_audit.py:2887 — Python print(): print(f" {BOLD}Windows:{RESET} {session['windows_done']}")
  • [major] tools/network_transfer_audit.py:2888 — Python print(): print(f" {BOLD}Range:{RESET} {from_dt.strftime('%Y-%m-%d %H:%M')} → {to
  • [major] tools/network_transfer_audit.py:2889 — Python print(): print()
  • [major] tools/network_transfer_audit.py:2894 — Python print(): print(f" {YELLOW}No data windows found in the requested range.{RESET}")
  • [major] tools/network_transfer_audit.py:2898 — Python print(): print(f" {GREEN}Found {len(windows)} windows covering this range{RESET}\n")
  • [major] tools/network_transfer_audit.py:2910 — Python print(): print(f" {GREEN}{len(events)} events{RESET}")
  • [major] tools/network_transfer_audit.py:2917 — Python print(): print(f" {GREEN}{len(dns)} unique domains{RESET}")
  • [major] tools/network_transfer_audit.py:2919 — Python print(): print(f" {domain:<40} {count:>5} queries")
  • [major] tools/network_transfer_audit.py:2928 — Python print(): print(f" {GREEN}{len(fw_events)} events{RESET}")
  • [major] tools/network_transfer_audit.py:2936 — Python print(): print(f" {GREEN}{len(downloads)} files{RESET}")
  • [major] tools/network_transfer_audit.py:2949 — Python print(): print(f" {GREEN}{len(live)} unique connections{RESET}")
  • [major] tools/network_transfer_audit.py:2958 — Python print(): print(f" {GREEN}↓ {fmt_bytes(total_in)} ↑ {fmt_bytes(total_out)}{RESET
  • [major] tools/network_transfer_audit.py:2959 — Python print(): print(f"\n {'Process':<25} {'↓ In':>10} {'↑ Out':>10}")
  • [major] tools/network_transfer_audit.py:2960 — Python print(): print(f" {'─' * 25} {'─' * 10} {'─' * 10}")
  • [major] tools/network_transfer_audit.py:2962 — Python print(): print(f" {p['process']:<25} {fmt_bytes(p['bytes_in']):>10} {fmt_byt
  • [major] tools/network_transfer_audit.py:2980 — Python print(): print(f" {GREEN}{len(listeners)} unique listening ports{RESET}")
  • [major] tools/network_transfer_audit.py:2995 — Python print(): print(f" {GREEN}{len(sensor_raw)} events across {len(sensor_types)} sen
  • [major] tools/network_transfer_audit.py:2996 — Python print(): print(f"\n {'Process':<28} {'Sensor':<18} {'Count':>6}")
  • [major] tools/network_transfer_audit.py:2997 — Python print(): print(f" {'─' * 28} {'─' * 18} {'─' * 6}")
  • [major] tools/network_transfer_audit.py:3001 — Python print(): print(f" {color}{s['process']:<28} {s['sensor']:<18} {s['count']:>6
  • [major] tools/network_transfer_audit.py:3016 — Python print(): print(f" {GREEN}Wi-Fi:{RESET} {BOLD}{ssid}{RESET} ch:{latest_wifi.
  • [major] tools/network_transfer_audit.py:3019 — Python print(): print(f" {DIM}Wi-Fi: not connected{RESET}")
  • [major] tools/network_transfer_audit.py:3023 — Python print(): print(f" {YELLOW}⚠ Wi-Fi SSID changed during session: {', '.join(ss
  • [major] tools/network_transfer_audit.py:3035 — Python print(): print(f" {GREEN}VPN:{RESET} {len(tunnels)} tunnel(s)")
  • [major] tools/network_transfer_audit.py:3038 — Python print(): print(f" {t['interface']}{ip_str} mtu={t.get('mtu','')}")
  • [major] tools/network_transfer_audit.py:3045 — Python print(): print(f" Default route → {route_color}{default_iface}{RESET} "
  • [major] tools/network_transfer_audit.py:3052 — Python print(): print(f"\n {BOLD}Per-Interface Transfer (session delta):{RESET}")
  • [major] tools/network_transfer_audit.py:3053 — Python print(): print(f" {'Interface':<12} {'↓ In':>14} {'↑ Out':>14}")
  • [major] tools/network_transfer_audit.py:3054 — Python print(): print(f" {'─' * 12} {'─' * 14} {'─' * 14}")
  • [major] tools/network_transfer_audit.py:3056 — Python print(): print(f" {d['interface']:<12} {fmt_bytes(d['bytes_in']):>14} {fmt_b
  • [major] tools/network_transfer_audit.py:3061 — Python print(): print(f"\n {BOLD}Proxy:{RESET} PAC → {pac}")
  • [major] tools/network_transfer_audit.py:3063 — Python print(): print(f" {BOLD}DNS:{RESET} {', '.join(net_config['dns_servers'][:4])}")
  • [major] tools/network_transfer_audit.py:3083 — Python print(): print(f" {GREEN}{len(unique_arp)} unique LAN devices{RESET}")
  • [major] tools/network_transfer_audit.py:3086 — Python print(): print(f" {a['ip']:<18} {a['mac']:<20} {a['interface']}")
  • [major] tools/network_transfer_audit.py:3094 — Python print(): print(f"\n {BOLD}Bluetooth:{RESET} {len(bt_unique)} devices")
  • [major] tools/network_transfer_audit.py:3097 — Python print(): print(f" {b.get('name',''):<30} {b.get('device_type',''):<12} {st
  • [major] tools/network_transfer_audit.py:3105 — Python print(): print(f"\n {BOLD}USB Devices:{RESET} {len(usb_unique)}")
  • [major] tools/network_transfer_audit.py:3107 — Python print(): print(f" {u['name']:<30} {u.get('vendor','')}")
  • [major] tools/network_transfer_audit.py:3115 — Python print(): print(f"\n {YELLOW}{BOLD}⚠ External disk:{RESET} {d['mount_point']}
  • [major] tools/network_transfer_audit.py:3130 — Python print(): print(f" {name:<14} {color}{val}{RESET}")
  • [major] tools/network_transfer_audit.py:3132 — Python print(): print(f"\n {RED}{BOLD}⚠ Firewall is DISABLED{RESET}")
  • [major] tools/network_transfer_audit.py:3150 — Python print(): print(f" {BOLD}Privilege escalations:{RESET} {len(auth_rows)}")
  • [major] tools/network_transfer_audit.py:3153 — Python print(): print(f" {ts} {e.get('process',''):<20} {e.get('auth_right','')[
  • [major] tools/network_transfer_audit.py:3155 — Python print(): print(f" {BOLD}Gatekeeper/XProtect:{RESET} {len(gk_rows)} events")
  • [major] tools/network_transfer_audit.py:3157 — Python print(): print(f" {BOLD}Network Extension:{RESET} {len(ne_rows)} VPN events")
  • [major] tools/network_transfer_audit.py:3197 — Python print(): print(f" {color}{sensor:<24} {ok}/{total} ok {fmt_bytes(size):>10}
  • [major] tools/network_transfer_audit.py:3201 — Python print(): print(f"\n {BOLD}Total:{RESET} {total_ok}/{total_samples} successful "
  • [major] tools/network_transfer_audit.py:3254 — Python print(): print(f" {icon} {BOLD}{a['process']}{RESET}: {a['detail']}")
  • [major] tools/network_transfer_audit.py:3256 — Python print(): print(f" {GREEN}✓ No anomalies detected.{RESET}")
  • [major] tools/network_transfer_audit.py:3263 — Python print(): print(f" {'Window':<20} {'Net Evts':>9} {'DNS':>5} {'Conns':>6} {'↓ In'
  • [major] tools/network_transfer_audit.py:3264 — Python print(): print(f" {'─' * 20} {'─' * 9} {'─' * 5} {'─' * 6} {'─' * 10} {'─' * 10}
  • [major] tools/network_transfer_audit.py:3268 — Python print(): print(f" {ts:<20} {w['network_event_count']:>9} {w['dns_query_count
  • [major] tools/network_transfer_audit.py:3275 — Python print(): print(f" Windows analyzed: {totals.get('windows_count', 0)}")
  • [major] tools/network_transfer_audit.py:3276 — Python print(): print(f" Network connection events: {totals.get('total_network_events', 0
  • [major] tools/network_transfer_audit.py:3277 — Python print(): print(f" Unique DNS domains: {len(dns)}")
  • [major] tools/network_transfer_audit.py:3278 — Python print(): print(f" Firewall decisions: {totals.get('total_firewall_events',
  • [major] tools/network_transfer_audit.py:3279 — Python print(): print(f" Files downloaded: {totals.get('total_downloads', 0)}")
  • [major] tools/network_transfer_audit.py:3280 — Python print(): print(f" Sensor access events: {totals.get('total_sensor_events', 0)
  • [major] tools/network_transfer_audit.py:3281 — Python print(): print(f" {BOLD}Total data inbound: {GREEN}{fmt_bytes(totals.get('t
  • [major] tools/network_transfer_audit.py:3282 — Python print(): print(f" {BOLD}Total data outbound: {YELLOW}{fmt_bytes(totals.get('
  • [major] tools/network_transfer_audit.py:3283 — Python print(): print()
  • [major] tools/network_transfer_audit.py:3288 — Python print(): print(json.dumps(report, indent=2, default=str))
  • [major] tools/network_transfer_audit.py:3297 — Python print(): print(f"{GREEN}HTML report saved to: {output_html}{RESET}")
  • [major] tools/network_transfer_audit.py:3298 — Python print(): print(f"{DIM}Open in browser: open "{output_html}"{RESET}")
  • [major] tools/network_transfer_audit.py:3404 — Python print(): print(f"{RED}Error: invalid collect duration '{args.collect}'. Use e
  • [major] tools/network_transfer_audit.py:3415 — Python print(): print(f"{RED}Error: session '{args.data}' not found in {data_dir}/{R
  • [major] tools/network_transfer_audit.py:3453 — Python print(): print(f"{RED}Error: invalid monitor duration '{args.monitor}'. Use e
  • [major] tools/network_transfer_audit.py:3461 — Python print(): print(f"{RED}Error: --from time is after --to time{RESET}", file=sys.std
  • [major] tools/network_transfer_audit.py:3488 — Python print(): print(f" {YELLOW}No data directory found at {data_dir}{RESET}")
  • [major] tools/network_transfer_audit.py:3493 — Python print(): print(f" {YELLOW}No collected sessions found in {data_dir}/{RESET}")
  • [major] tools/network_transfer_audit.py:3499 — Python print(): print(f" {'Session ID':<22} {'Status':<12} {'Windows':>8} {'Started':<20} {
  • [major] tools/network_transfer_audit.py:3500 — Python print(): print(f" {'─' * 22} {'─' * 12} {'─' * 8} {'─' * 20} {'─' * 20} {'─' * 10}")
  • [major] tools/network_transfer_audit.py:3511 — Python print(): print(f" {s['id']:<22} {status_color}{s['status']:<12}{RESET} "
  • [major] tools/network_transfer_audit.py:3515 — Python print(): print(f" {dbf.name:<22} {RED}error: {e}{RESET}")
  • [major] tools/network_transfer_audit.py:3517 — Python print(): print(f"\n {DIM}Use --data SESSION_ID to query a session{RESET}")
  • [major] tools/collector.py:127 — Python print(): print(f"\n {YELLOW} Resuming incomplete session {self._session_id}
  • [major] tools/collector.py:128 — Python print(): print(f" {DIM}Windows already done: {resume_info['windows_done']},
  • [major] tools/collector.py:148 — Python print(): print(f" {YELLOW}Resumed from window {self._seq}/{total_windows}{RE
  • [major] tools/collector.py:157 — Python print(): print(f" {DIM}Collecting session baseline...{RESET}")
  • [major] tools/collector.py:164 — Python print(): print(f" {GREEN}✓{RESET} Network config + security posture + se
  • [major] tools/collector.py:165 — Python print(): print(f" {DIM}Sensor capture enabled: {', '.join(enabled_sensor
  • [major] tools/collector.py:167 — Python print(): print(f" {YELLOW}⚠ Firewall is disabled{RESET}")
  • [major] tools/collector.py:169 — Python print(): print(f" {YELLOW}⚠ Baseline collection warning: {e}{RESET}")
  • [major] tools/collector.py:182 — Python print(): print(f" {GREEN}✓{RESET} Input activity monitor started (ke
  • [major] tools/collector.py:184 — Python print(): print(f" {YELLOW}⚠ Input monitor unavailable (need Accessib
  • [major] tools/collector.py:186 — Python print(): print(f" {YELLOW}⚠ Input monitor failed: {e}{RESET}")
  • [major] tools/collector.py:189 — Python print(): print(f" {DIM}Taking initial nettop snapshot...{RESET}")
  • [major] tools/collector.py:206 — Python print(): print(f"\n {CYAN}━━ Window {self._seq + 1}/{total_windows} "
  • [major] tools/collector.py:210 — Python print(): print(f" {DIM}Querying network events...{RESET}", end="", flu
  • [major] tools/collector.py:212 — Python print(): print(f" {len(net_events)} events")
  • [major] tools/collector.py:215 — Python print(): print(f" {DIM}Querying DNS...{RESET}", end="", flush=True)
  • [major] tools/collector.py:217 — Python print(): print(f" {len(dns)} domains")
  • [major] tools/collector.py:220 — Python print(): print(f" {DIM}Querying firewall...{RESET}", end="", flush=Tru
  • [major] tools/collector.py:222 — Python print(): print(f" {len(fw)} events")
  • [major] tools/collector.py:225 — Python print(): print(f" {DIM}Querying downloads...{RESET}", end="", flush=Tr
  • [major] tools/collector.py:228 — Python print(): print(f" {len(valid_dl)} files")
  • [major] tools/collector.py:231 — Python print(): print(f" {DIM}Snapshotting live connections...{RESET}", end="
  • [major] tools/collector.py:233 — Python print(): print(f" {len(live)} connections")
  • [major] tools/collector.py:236 — Python print(): print(f" {DIM}Computing nettop delta...{RESET}", end="", flus
  • [major] tools/collector.py:242 — Python print(): print(f" ↓{_fmt_bytes(total_in)} ↑{_fmt_bytes(total_out)}")
  • [major] tools/collector.py:245 — Python print(): print(f" {DIM}Querying sensor access...{RESET}", end="", flus
  • [major] tools/collector.py:247 — Python print(): print(f" {len(sensor_events_raw)} events")
  • [major] tools/collector.py:250 — Python print(): print(f" {DIM}Snapshotting listening ports...{RESET}", end=""
  • [major] tools/collector.py:252 — Python print(): print(f" {len(listeners)} ports")
  • [major] tools/collector.py:255 — Python print(): print(f" {DIM}Snapshotting process list...{RESET}", end="", f
  • [major] tools/collector.py:260 — Python print(): print(f" {len(proc_list)} processes")
  • [major] tools/collector.py:263 — Python print(): print(f" {DIM}Querying Wi-Fi / VPN / interfaces...{RESET}", e
  • [major] tools/collector.py:269 — Python print(): print(f" Wi-Fi:{wifi_label} route:{vpn_label} {len(iface_bytes
  • [major] tools/collector.py:272 — Python print(): print(f" {DIM}Scanning LAN & devices...{RESET}", end="", flus
  • [major] tools/collector.py:277 — Python print(): print(f" {len(arp)} LAN {len(bt.get('devices',[]))} BT {len(us
  • [major] tools/collector.py:280 — Python print(): print(f" {DIM}Querying security events...{RESET}", end="", fl
  • [major] tools/collector.py:284 — Python print(): print(f" {len(gk_events)} GK {len(auth_evts)} auth {len(ne_eve
  • [major] tools/collector.py:288 — Python print(): print(f" {DIM}Capturing sensor samples ({len(enabled_sens
  • [major] tools/collector.py:295 — Python print(): print(f" {ok} ok {skip} skip {err} err blobs={_fmt_by
  • [major] tools/collector.py:298 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:302 — Python print(): print(f" {DIM}Running exfiltration monitors...{RESET}", end="
  • [major] tools/collector.py:316 — Python print(): print(f" git:{git_ct} exfil-proc:{launch_ct} staging:{stag
  • [major] tools/collector.py:319 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:323 — Python print(): print(f" {DIM}Writing to database...{RESET}", end="", flush=T
  • [major] tools/collector.py:353 — Python print(): print(f" {YELLOW}⚠ exfil write: {e}{RESET}")
  • [major] tools/collector.py:356 — Python print(): print(f" {DIM}Building process tree...{RESET}", end="", flush
  • [major] tools/collector.py:361 — Python print(): print(f" {len(ptree)} processes {unsigned} unsigned")
  • [major] tools/collector.py:364 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:368 — Python print(): print(f" {DIM}Building connection graph...{RESET}", end="", f
  • [major] tools/collector.py:373 — Python print(): print(f" {len(conn_graph)} edges {total_dests} unique desti
  • [major] tools/collector.py:376 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:380 — Python print(): print(f" {DIM}Scanning persistence mechanisms...{RESET}", end
  • [major] tools/collector.py:384 — Python print(): print(f" {len(persist_items)} items {risky} flagged")
  • [major] tools/collector.py:387 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:391 — Python print(): print(f" {DIM}Capturing payloads...{RESET}", end="", flush=Tr
  • [major] tools/collector.py:395 — Python print(): print(f" {len(payloads)} payloads {sensitive_ct} with sensi
  • [major] tools/collector.py:398 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:403 — Python print(): print(f" {DIM}Reading input activity...{RESET}", end="",
  • [major] tools/collector.py:411 — Python print(): print(f" keys:{k} ({kpm:.0f}/min) clicks:{clicks_l} "
  • [major] tools/collector.py:415 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:418 — Python print(): print(f" {GREEN}✓{RESET}")
  • [major] tools/collector.py:422 — Python print(): print(f" {GREEN}Window {self._seq} saved.{RESET} "
  • [major] tools/collector.py:426 — Python print(): print(f"\n {RED}✗ Collection error: {e}{RESET}")
  • [major] tools/collector.py:433 — Python print(): print(f" {DIM}Computing baselines & updating known processe
  • [major] tools/collector.py:437 — Python print(): print(f" {len(new_procs)} new processes detected")
  • [major] tools/collector.py:439 — Python print(): print(f" {GREEN}✓{RESET}")
  • [major] tools/collector.py:441 — Python print(): print(f" {YELLOW}⚠ {e}{RESET}")
  • [major] tools/collector.py:485 — Python print(): print(f"\r {DIM}[{bar}] next window in {int(sleep_for - slept):>3}s
  • [major] tools/collector.py:500 — Python print(): print(f"\n\n {YELLOW}⚠ {sig_name} received — finishing current window a
  • [major] tools/collector.py:504 — Python print(): print(f"\n{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/collector.py:505 — Python print(): print(f"{BOLD}{CYAN} Continuous Data Collector{RESET}")
  • [major] tools/collector.py:506 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/collector.py:507 — Python print(): print(f" {BOLD}Duration:{RESET} {_fmt_duration(self.duration)}")
  • [major] tools/collector.py:509 — Python print(): print(f" {BOLD}Interval:{RESET} {self.interval}s ({interval_labe
  • [major] tools/collector.py:510 — Python print(): print(f" {BOLD}Total windows:{RESET} {total_windows}")
  • [major] tools/collector.py:511 — Python print(): print(f" {BOLD}Start:{RESET} {start_time.strftime('%Y-%m-%d %
  • [major] tools/collector.py:512 — Python print(): print(f" {BOLD}Expected end:{RESET} {end_time.strftime('%Y-%m-%d %H:
  • [major] tools/collector.py:513 — Python print(): print(f" {BOLD}Database:{RESET} {db_path}")
  • [major] tools/collector.py:514 — Python print(): print(f" {DIM}Press Ctrl+C to stop gracefully{RESET}")
  • [major] tools/collector.py:515 — Python print(): print()
  • [major] tools/collector.py:519 — Python print(): print(f"\n{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/collector.py:520 — Python print(): print(f" {BOLD}Collection {color}{status}{RESET}")
  • [major] tools/collector.py:521 — Python print(): print(f" {BOLD}Windows collected:{RESET} {self._seq}")
  • [major] tools/collector.py:522 — Python print(): print(f" {BOLD}Database:{RESET} {db_path}")
  • [major] tools/collector.py:523 — Python print(): print(f" {BOLD}Database size:{RESET} {_fmt_bytes(os.path.getsize(db
  • [major] tools/collector.py:524 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}\n")
  • [major] tools/collector.py:556 — Python print(): print(f"\n {YELLOW}Received signal {signum}, shutting down daemon...{RE
  • [major] tools/collector.py:562 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}")
  • [major] tools/collector.py:563 — Python print(): print(f"{BOLD} Sensor Audit Collector — Daemon Mode{RESET}")
  • [major] tools/collector.py:564 — Python print(): print(f"{DIM} Session duration: {_fmt_duration(session_duration)}")
  • [major] tools/collector.py:565 — Python print(): print(f" Collection interval: {_fmt_duration(interval)}")
  • [major] tools/collector.py:566 — Python print(): print(f" Data directory: {data_dir}{RESET}")
  • [major] tools/collector.py:567 — Python print(): print(f"{BOLD}{CYAN}{'═' * 70}{RESET}\n")
  • [major] tools/collector.py:572 — Python print(): print(f"\n {CYAN}━━ Starting session #{session_num} "
  • [major] tools/collector.py:581 — Python print(): print(f" {RED}✗ Session #{session_num} error: {e}{RESET}")
  • [major] tools/collector.py:587 — Python print(): print(f" {DIM}Next session in 10s...{RESET}")
  • [major] tools/collector.py:590 — Python print(): print(f"\n {GREEN}✓ Daemon stopped cleanly after {session_num} session(s){R
  • [major] tools/sample_capture.py:238 — Python print(): print(s)
  • [major] tools/secure_vault.py:329 — Python print(): print("Error: Password cannot be empty", file=sys.stderr)
  • [major] tools/secure_vault.py:334 — Python print(): print("Error: Passwords do not match", file=sys.stderr)
  • [major] tools/secure_vault.py:399 — Python print(): print(f"Vault '{result['name']}' created ({result['max_size']})")
  • [major] tools/secure_vault.py:400 — Python print(): print(f" Path: {result['vault_path']}")
  • [major] tools/secure_vault.py:402 — Python print(): print(f" Imported from: {args.source}")
  • [major] tools/secure_vault.py:407 — Python print(): print(f"Vault '{result['name']}' unlocked")
  • [major] tools/secure_vault.py:408 — Python print(): print(f" Mount point: {result['mount_point']}")
  • [major] tools/secure_vault.py:410 — Python print(): print(f" ({result['message']})")
  • [major] tools/secure_vault.py:414 — Python print(): print(f"Vault '{result['name']}' locked")
  • [major] tools/secure_vault.py:416 — Python print(): print(f" ({result['message']})")
  • [major] tools/secure_vault.py:421 — Python print(): print("No vaults are currently unlocked")
  • [major] tools/secure_vault.py:424 — Python print(): print(f" {r['name']}: {status}")
  • [major] tools/secure_vault.py:429 — Python print(): print("No vaults found. Create one with: secure_vault.py create
  • [major] tools/secure_vault.py:431 — Python print(): print(f"{'Name':<20} {'Status':<10} {'Size':<12} {'Created':<20} {'M
  • [major] tools/secure_vault.py:432 — Python print(): print("-" * 90)
  • [major] tools/secure_vault.py:438 — Python print(): print(f"{v['name']:<20} {status_icon} {v['status']:<7} {size:<12
  • [major] tools/secure_vault.py:443 — Python print(): print(f"Vault: {s['name']}")
  • [major] tools/secure_vault.py:444 — Python print(): print(f" Status: {status_icon}")
  • [major] tools/secure_vault.py:445 — Python print(): print(f" Path: {s['vault_path']}")
  • [major] tools/secure_vault.py:446 — Python print(): print(f" Max size: {s['max_size']}")
  • [major] tools/secure_vault.py:447 — Python print(): print(f" On disk: {_fmt_bytes(s['size_on_disk'])}")
  • [major] tools/secure_vault.py:448 — Python print(): print(f" Created: {s['created']}")
  • [major] tools/secure_vault.py:450 — Python print(): print(f" Last unlocked: {s['last_unlocked']}")
  • [major] tools/secure_vault.py:452 — Python print(): print(f" Mount point: {s['mount_point']}")
  • [major] tools/secure_vault.py:454 — Python print(): print(f" Hint: {s['password_hint']}")
  • [major] tools/secure_vault.py:459 — Python print(): print("Aborted.")
  • [major] tools/secure_vault.py:463 — Python print(): print(f"Vault '{result['name']}' permanently destroyed")
  • [major] tools/secure_vault.py:466 — Python print(): print("Enter current password:")
  • [major] tools/secure_vault.py:468 — Python print(): print("Enter new password:")
  • [major] tools/secure_vault.py:471 — Python print(): print(f"Password changed for vault '{result['name']}'")
  • [major] tools/secure_vault.py:474 — Python print(): print(f"Access denied: {e}", file=sys.stderr)
  • [major] tools/secure_vault.py:477 — Python print(): print(f"Error: {e}", file=sys.stderr)
  • [major] tools/input_monitor.py:196 — Python print(): print(" ⚠ pyobjc-framework-Quartz not installed — input monitoring
  • [major] tools/input_monitor.py:213 — Python print(): print(" ⚠ CGEventTap failed — grant Accessibility permission to Ter
  • [major] tools/input_monitor.py:438 — Python print(): print("Input Monitor — press Ctrl+C to stop")
  • [major] tools/input_monitor.py:439 — Python print(): print("Requires Accessibility permission for Terminal/Python")
  • [major] tools/input_monitor.py:440 — Python print(): print()
  • [major] tools/input_monitor.py:444 — Python print(): print("Failed to start — check Accessibility permissions")
  • [major] tools/input_monitor.py:451 — Python print(): print(f"[{datetime.now().strftime('%H:%M:%S')}] "
  • [major] tools/input_monitor.py:461 — Python print(): print(f" Top categories: {', '.join(f'{k}={v}' for k, v
  • [major] tools/input_monitor.py:465 — Python print(): print(f" Top combos: {', '.join(f'{k}={v}' for k, v in t
  • [major] tools/input_monitor.py:467 — Python print(): print("\nStopping...")
  • [major] tools/input_monitor.py:470 — Python print(): print("\nFinal stats:")
  • [major] tools/input_monitor.py:471 — Python print(): print(json.dumps(final, indent=2))
  • [minor] dashboard/src/api.ts:28 — any type: async function put<T = any>(path: string, body: any): Promise {
  • [minor] dashboard/src/api.ts:38 — any type: async function post<T = any>(path: string, body?: any): Promise {
  • [minor] dashboard/src/api.ts:56 — any type: updateConfig: (data: any) => put('/config', data),
  • [minor] dashboard/src/pages/Reports.tsx:25 — any type: {reports.map((r: any) => (
  • [minor] dashboard/src/pages/Sessions.tsx:10 — any type: const STATUS_CFG: Record<string, { bg: string; icon: any; label: string }> = {
  • [minor] dashboard/src/pages/Sessions.tsx:37 — any type: sessions.forEach((s: any) => { if (s.status in c) (c as any)[s.status]++; })
  • [minor] dashboard/src/pages/Sessions.tsx:43 — any type: const totalSize = sessions.reduce((a: number, s: any) => a + (s.db_size || 0
  • [minor] dashboard/src/pages/Sessions.tsx:44 — any type: const totalWindows = sessions.reduce((a: number, s: any) => a + (s.windows_d
  • [minor] dashboard/src/pages/Sessions.tsx:51 — any type: if (statusFilter !== 'all') list = list.filter((s: any) => s.status === stat
  • [minor] dashboard/src/pages/Sessions.tsx:54 — any type: list = list.filter((s: any) =>
  • [minor] dashboard/src/pages/Sessions.tsx:58 — any type: list.sort((a: any, b: any) => {
  • [minor] dashboard/src/pages/Sessions.tsx:172 — any type: {filtered.map((s: any) => {
  • [minor] dashboard/src/pages/Vaults.tsx:44 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/Vaults.tsx:73 — any type: } catch (e: any) { flashErr(e.message); }
  • [minor] dashboard/src/pages/Vaults.tsx:79 — any type: catch (e: any) { flashErr(e.message); }
  • [minor] dashboard/src/pages/Vaults.tsx:84 — any type: catch (e: any) { flashErr(e.message); }
  • [minor] dashboard/src/pages/Vaults.tsx:108 — any type: } catch (e: any) { flashErr(e.message); }
  • [minor] dashboard/src/pages/SessionDetail.tsx:48 — any type: const isRunning = (s: any) => s?.status === 'running';
  • [minor] dashboard/src/pages/SessionDetail.tsx:162 — any type: const maxBytes = nettop.length ? Math.max(...nettop.map((n: any) => n.bytes_in
  • [minor] dashboard/src/pages/SessionDetail.tsx:198 — any type: } catch (e: any) { toast('error', 'Report failed', e.message); }
  • [minor] dashboard/src/pages/Dashboard.tsx:32 — any type: toast('success', 'Capture complete', `${results.filter((r: any) => r.statu
  • [minor] dashboard/src/pages/Dashboard.tsx:33 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/Dashboard.tsx:45 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/Dashboard.tsx:55 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/Dashboard.tsx:77 — any type: const unackedAlerts = (alerts || []).filter((a: any) => !a.acknowledged);
  • [minor] dashboard/src/pages/Dashboard.tsx:152 — any type: {unackedAlerts.filter((a: any) => a.severity === 'critical').len
  • [minor] dashboard/src/pages/Dashboard.tsx:223 — any type: {captureResult.map((r: any, i: number) => (
  • [minor] dashboard/src/pages/Dashboard.tsx:264 — any type: {sessions.slice(0, 8).map((s: any) => (
  • [minor] dashboard/src/pages/SampleViewer.tsx:21 — any type: function MetadataTree({ data, depth = 0 }: { data: any; depth?: number }) {
  • [minor] dashboard/src/pages/SampleViewer.tsx:163 — any type: {sample.metadata.running_apps?.slice(0, 15).map((a: any, i: numb
  • [minor] dashboard/src/pages/SessionCompare.tsx:50 — any type: {sessions?.map((s: any) => (
  • [minor] dashboard/src/pages/SessionCompare.tsx:60 — any type: {sessions?.map((s: any) => (
  • [minor] dashboard/src/pages/SessionCompare.tsx:151 — any type: {data.process_diff.map((p: any) => (
  • [minor] dashboard/src/pages/DataManagement.tsx:66 — any type: {sessionList.map((s: any) => (
  • [minor] dashboard/src/pages/Config.tsx:22 — any type: mutationFn: (data: any) => api.updateConfig(data),
  • [minor] dashboard/src/pages/Config.tsx:32 — any type: setLocal((prev: any) => ({
  • [minor] dashboard/src/pages/Config.tsx:38 — any type: const updateSensorParam = (sensor: string, param: string, value: any) => {
  • [minor] dashboard/src/pages/Config.tsx:39 — any type: setLocal((prev: any) => ({
  • [minor] dashboard/src/pages/Config.tsx:46 — any type: setLocal((prev: any) => ({ ...prev, schedule: { ...prev.schedule, [param]: v
  • [minor] dashboard/src/pages/Alerts.tsx:48 — any type: critical: alerts.filter((a: any) => a.severity === 'critical').length,
  • [minor] dashboard/src/pages/Alerts.tsx:49 — any type: warning: alerts.filter((a: any) => a.severity === 'warning').length,
  • [minor] dashboard/src/pages/Alerts.tsx:50 — any type: info: alerts.filter((a: any) => a.severity === 'info').length,
  • [minor] dashboard/src/pages/Alerts.tsx:51 — any type: unacked: alerts.filter((a: any) => !a.acknowledged).length,
  • [minor] dashboard/src/pages/Alerts.tsx:57 — any type: const cats = new Set(alerts.map((a: any) => a.category).filter(Boolean));
  • [minor] dashboard/src/pages/Alerts.tsx:64 — any type: if (sevFilter !== 'all') list = list.filter((a: any) => a.severity === sevFi
  • [minor] dashboard/src/pages/Alerts.tsx:65 — any type: if (ackFilter === 'unacked') list = list.filter((a: any) => !a.acknowledged)
  • [minor] dashboard/src/pages/Alerts.tsx:66 — any type: if (ackFilter === 'acked') list = list.filter((a: any) => a.acknowledged);
  • [minor] dashboard/src/pages/Alerts.tsx:67 — any type: if (catFilter !== 'all') list = list.filter((a: any) => a.category === catFi
  • [minor] dashboard/src/pages/Alerts.tsx:76 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/Alerts.tsx:170 — any type: {filtered.map((a: any) => {
  • [minor] dashboard/src/pages/Services.tsx:108 — any type: try { await api.stopCollection(); refetch(); toast('info', 'Coll
  • [minor] dashboard/src/pages/Services.tsx:114 — any type: try { await api.startCollection(3600, 300); refetch(); toast('su
  • [minor] dashboard/src/pages/ProcessDetail.tsx:39 — any type: ? Math.max(...data.bandwidth_timeline.map((w: any) => w.bytes_in + w.bytes_o
  • [minor] dashboard/src/pages/ProcessDetail.tsx:112 — any type: {data.bandwidth_timeline.map((w: any, i: number) => {
  • [minor] dashboard/src/pages/ProcessDetail.tsx:146 — any type: {data.connections.map((c: any, i: number) => (
  • [minor] dashboard/src/pages/ProcessDetail.tsx:172 — any type: {data.sensor_access.map((s: any, i: number) => (
  • [minor] dashboard/src/pages/Calendar.tsx:76 — any type: for (const s of (sessions || []) as any[]) {
  • [minor] dashboard/src/pages/Calendar.tsx:89 — any type: if (!map[k].find((x: any) => x.id === s.id)) map[k].push(s);
  • [minor] dashboard/src/pages/Calendar.tsx:100 — any type: for (const r of (reports || []) as any[]) {
  • [minor] dashboard/src/pages/Calendar.tsx:159 — any type: const result: any[] = [];
  • [minor] dashboard/src/pages/Calendar.tsx:161 — any type: for (const s of (sessions || []) as any[]) {
  • [minor] dashboard/src/pages/Calendar.tsx:180 — any type: return ((reports || []) as any[]).filter((r: any) => {
  • [minor] dashboard/src/pages/Calendar.tsx:257 — any type: {daySessions.slice(0, 4).map((s: any) => (
  • [minor] dashboard/src/pages/Calendar.tsx:261 — any type: {dayReports.slice(0, 3).map((r: any, ri: number) => (
  • [minor] dashboard/src/pages/Calendar.tsx:332 — any type: {selectedSessions.map((s: any) => (
  • [minor] dashboard/src/pages/Calendar.tsx:367 — any type: {selectedReports.map((r: any, i: number) => (
  • [minor] dashboard/src/pages/DataFlowMap.tsx:305 — any type: {(sessions || []).map((s: any) => (
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:6 — any type: connGraphData: any;
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:7 — any type: processTreeData: any;
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:18 — any type: <Card label="Unique Destinations" value={new Set(edges.map((e: any) => e
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:19 — any type: <Card label="Processes" value={new Set(edges.map((e: any) => e.process))
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:20 — any type: <Card label="Total Outbound" value={fmtBytes(edges.reduce((a: number, e:
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:26 — any type: rows={edges.slice(0, 100).map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/ConnectionsTab.tsx:44 — any type: rows={tree.filter((p: any) => p.is_exfil_relevant || p.code_signed =
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:8 — any type: session: any;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:9 — any type: insightsData: any;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:10 — any type: summaryData: any;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:12 — any type: windows: any[] | undefined;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:13 — any type: nettop: any[];
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:17 — any type: processRisk: any;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:18 — any type: screenCaptures: any[] | undefined;
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:33 — any type: {insightsData?.alerts?.filter((a: any) => a.severity === 'critical').map((
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:85 — any type: const timelineMax = Math.max(...windows.map((x: any) => (x.bytes_in_
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:88 — any type: {windows.map((w: any, i: number) => {
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:112 — any type: rows={nettop.slice(0, 20).map((n: any) => [
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:152 — any type: const highRisk = procs.filter((p: any) => p.risk_score >= 6);
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:175 — any type: {highRisk.map((p: any) => (
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:200 — any type: {procs.slice(0, 25).map((p: any) => (
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:227 — any type: {screenCaptures && screenCaptures.filter((s: any) => s.blob_url && s.blob_
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:228 — any type: <Section title={`📸 Screen Captures (${screenCaptures.filter((s: any) =>
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:231 — any type: .filter((s: any) => s.blob_url && s.blob_mime?.startsWith('image/'
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:233 — any type: .map((s: any) => (
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:246 — any type: {screenCaptures.filter((s: any) => s.blob_url).length > 12 && (
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:249 — any type: View all {screenCaptures.filter((s: any) => s.blob_url).length} sc
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:6 — any type: payloadData: any;
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:12 — any type: const sourceTypes = [...new Set(samples.map((s: any) => s.source_type))] as st
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:19 — any type: <Card label="With Sensitive Data" value={samples.filter((s: any) => s.se
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:20 — any type: <Card label="Total Size" value={fmtBytes(samples.reduce((a: number, s: a
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:23 — any type: <Section key={st} title={`${st.replace(/_/g, ' ').toUpperCase()} (${samp
  • [minor] dashboard/src/pages/session-tabs/PayloadsTab.tsx:24 — any type: {samples.filter((s: any) => s.source_type === st).slice(0, 30).map((s:
  • [minor] dashboard/src/pages/session-tabs/shared.tsx:10 — any type: export function Table({ headers, rows }: { headers: string[]; rows: any[][] }) {
  • [minor] dashboard/src/pages/session-tabs/shared.tsx:48 — any type: export const POSTURE_OK: Record<string, (v: any) => boolean> = {
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:7 — any type: samples: any[] | undefined;
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:14 — any type: windows: any[] | undefined;
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:58 — any type: {windows.map((w: any) => (
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:67 — any type: {[...(samples || [])].sort((a: any, b: any) => {
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:74 — any type: }).map((s: any) => {
  • [minor] dashboard/src/pages/session-tabs/SecurityTab.tsx:4 — any type: const POSTURE_OK: Record<string, (v: any) => boolean> = {
  • [minor] dashboard/src/pages/session-tabs/SecurityTab.tsx:10 — any type: security: any;
  • [minor] dashboard/src/pages/session-tabs/SecurityTab.tsx:22 — any type: rows={security.sensor_events.slice(0, 50).map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/SecurityTab.tsx:34 — any type: rows={security.gatekeeper.slice(0, 50).map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/SecurityTab.tsx:46 — any type: rows={security.auth_events.slice(0, 50).map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:5 — any type: inputStats: any;
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:6 — any type: inputTimeline: any[];
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:21 — any type: const totalCatKeys = cats.reduce((s: number, c: any) => s + c.count, 0) || 1;
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:22 — any type: const maxTimelineKeys = timeline.length ? Math.max(...timeline.map((t: any) =>
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:50 — any type: {cats.map((c: any) => {
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:75 — any type: rows={apps.map((a: any) => [
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:89 — any type: rows={combos.map((c: any) => [
  • [minor] dashboard/src/pages/session-tabs/InputTab.tsx:109 — any type: {timeline.map((w: any, i: number) => (
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:6 — any type: permissionsData: any;
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:16 — any type: const allProcs: any[] = permissionsData.processes || [];
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:19 — any type: ? allProcs.filter((p: any) => p.process.toLowerCase().includes(q) || p.binar
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:21 — any type: if (permFilter) filtered = filtered.filter((p: any) => p.permissions[permFilte
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:22 — any type: const withPerms = filtered.filter((p: any) => p.total_events > 0);
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:23 — any type: const withoutPerms = filtered.filter((p: any) => p.total_events === 0);
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:25 — any type: for (const s of sensors) sensorCounts[s] = allProcs.filter((p: any) => p.permi
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:33 — any type: <Card label="Total Events" value={allProcs.reduce((a: number, p: any) =>
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:79 — any type: {withPerms.map((p: any) => (
  • [minor] dashboard/src/pages/session-tabs/PermissionsTab.tsx:114 — any type: {withoutPerms.map((p: any) => (
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:6 — any type: exfilData: any;
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:38 — any type: {exfilData.ai_ide_activity.map((a: any, i: number) => (
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:87 — any type: {exfilData.git_events.filter((e: any) => e.event_type === 'git_recent_
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:124 — any type: {exfilData.git_events.filter((e: any) => e.event_type !== 'git_recent_
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:127 — any type: rows={exfilData.git_events.filter((e: any) => e.event_type !== 'gi
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:142 — any type: rows={exfilData.process_launches.map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:156 — any type: {exfilData.file_staging.map((e: any, i: number) => (
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:182 — any type: rows={exfilData.remote_copies.map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/ExfiltrationTab.tsx:198 — any type: rows={exfilData.http_requests.slice(0, 100).map((e: any) => [
  • [minor] dashboard/src/pages/session-tabs/PersistenceTab.tsx:5 — any type: persistenceData: any;
  • [minor] dashboard/src/pages/session-tabs/PersistenceTab.tsx:19 — any type: <Card label="Enabled" value={items.filter((i: any) => i.enabled).length}
  • [minor] dashboard/src/pages/session-tabs/PersistenceTab.tsx:24 — any type: {items.filter((i: any) => i.item_type === type).slice(0, 50).map((it
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:7 — any type: totals: any;
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:8 — any type: nettop: any[];
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:10 — any type: connections: any[] | undefined;
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:11 — any type: networkData: any;
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:12 — any type: destinations: any;
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:29 — any type: rows={nettop.slice(0, 30).map((n: any) => [
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:44 — any type: rows={connections.slice(0, 50).map((c: any) => [c.process, c.type, c
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:53 — any type: rows={networkData.dns.map((d: any) => [d[0], d[1]])}
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:65 — any type: <Card label="Suspicious Ports" value={destinations.top_ports?.filter
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:66 — any type: color={destinations.top_ports?.some((p: any) => p.suspicious) ? 't
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:73 — any type: {destinations.top_destinations.filter((d: any) => !d.internal)
  • [minor] dashboard/src/pages/session-tabs/NetworkTab.tsx:86 — any type: {destinations.top_ports.slice(0, 12).map((p: any, i: number) =
  • [minor] dashboard/src/pages/session-tabs/TimelineTab.tsx:27 — any type: timelineData: any;
  • [minor] dashboard/src/pages/session-tabs/TimelineTab.tsx:68 — any type: {events.map((ev: any, i: number) => {
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:6 — any type: insightsData: any;
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:7 — any type: networkData: any;
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:19 — any type: {insightsData.alerts.map((a: any, i: number) => {
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:40 — any type: {insightsData.insights.map((ins: any, i: number) => (
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:97 — any type: {data.errors.map((e: any) => ${e.status} (${e.count})).j
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:115 — any type: rows={procs.map((p: any) => {
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:116 — any type: const totalAll = procs.reduce((s: number, x: any) => s + x.count
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:134 — any type: rows={insightsData.bandwidth_spikes.map((s: any) => [
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:150 — any type: rows={insightsData.baseline_anomalies.map((a: any) => [
  • [minor] dashboard/src/pages/session-tabs/InsightsTab.tsx:167 — any type: rows={insightsData.new_processes_with_network.map((p: any) => [
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:5 — any type: devices: any;
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:17 — any type: rows={devices.wifi.map((w: any) => [
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:29 — any type: rows={devices.vpn.map((v: any) => [v.interface, v.ip, v.mtu, (v.flag
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:38 — any type: rows={devices.interface_bytes.map((i: any) => [i.interface, fmtBytes
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:47 — any type: rows={devices.listening_ports.map((p: any) => [p.process, p.pid, p.u
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:56 — any type: rows={devices.bluetooth.map((b: any) => [b.name, b.mac, b.type, b.co
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:65 — any type: rows={devices.usb.map((u: any) => [u.name, u.vendor, u.serial, u.pro
  • [minor] dashboard/src/pages/session-tabs/DevicesTab.tsx:74 — any type: rows={devices.arp.map((a: any) => [a.ip, a.mac, a.interface])}
  • [minor] dashboard/src/pages/AskQuestion.tsx:14 — any type: data?: any;
  • [minor] dashboard/src/pages/AskQuestion.tsx:67 — any type: } catch (err: any) {
  • [minor] dashboard/src/pages/AskQuestion.tsx:103 — any type: {(sessions || []).map((s: any) => (
  • [minor] dashboard/src/pages/AskQuestion.tsx:230 — any type: function DataPreview({ data }: { data: any[] }) {
  • [minor] dashboard/src/pages/AskQuestion.tsx:247 — any type: {items.map((row: any, i: number) => (
  • [minor] dashboard/src/pages/Trends.tsx:12 — any type: const maxBw = Math.max(...trends.map((t: any) => t.bytes_in + t.bytes_out), 1)
  • [minor] dashboard/src/pages/Trends.tsx:13 — any type: const maxAlerts = Math.max(...trends.map((t: any) => t.alerts_critical + t.ale
  • [minor] dashboard/src/pages/Trends.tsx:26 — any type: {trends.map((t: any, i: number) => {
  • [minor] dashboard/src/pages/Trends.tsx:55 — any type: {trends.map((t: any, i: number) => {
  • [minor] dashboard/src/pages/Trends.tsx:86 — any type: {trends.map((t: any) => (
  • [minor] dashboard/src/pages/RunAudit.tsx:239 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/RunAudit.tsx:265 — any type: } catch (e: any) {
  • [minor] dashboard/src/pages/RunAudit.tsx:571 — any type: {sessions.map((s: any) => (
  • [minor] dashboard/src/pages/LaunchAgents.tsx:5 — any type: function AgentTable({ title, agents }: { title: string; agents: any[] }) {
  • [minor] dashboard/src/pages/LaunchAgents.tsx:22 — any type: {agents.map((a: any, i: number) => {
  • [minor] tools/capture_config.py:44 — Emoji in code: 📷
  • [minor] tools/capture_config.py:45 — Emoji in code: 🖥
  • [minor] tools/capture_config.py:46 — Emoji in code: 🎙
  • [minor] tools/capture_config.py:47 — Emoji in code: 📍
  • [minor] tools/capture_config.py:48 — Emoji in code: 🌐
  • [minor] tools/capture_config.py:49 — Emoji in code: 📋
  • [minor] tools/capture_config.py:50 — Emoji in code: 📶
  • [minor] tools/capture_config.py:51 — Emoji in code: 🔌
  • [minor] tools/capture_config.py:52 — Emoji in code: 💾
  • [minor] tools/capture_config.py:53 — Emoji in code: 🔤
  • [minor] tools/capture_config.py:54 — Emoji in code: 🪟
  • [minor] tools/html_report.py:522 — Emoji in code: 🔒
  • [minor] tools/html_report.py:542 — Emoji in code: 📸
  • [minor] tools/html_report.py:585 — Emoji in code: 🌐
  • [minor] tools/html_report.py:616 — Emoji in code: 📱
  • [minor] tools/html_report.py:647 — Emoji in code: 🛡
  • [minor] tools/html_report.py:663 — Emoji in code: 🔑
  • [minor] tools/secure_vault.py:437 — Emoji in code: 🔓
  • [minor] tools/secure_vault.py:442 — Emoji in code: 🔓
  • [minor] dashboard/src/pages/SampleViewer.tsx:98 — Emoji in code: 💡
  • [minor] dashboard/src/pages/SampleViewer.tsx:101 — Emoji in code: 💡
  • [minor] dashboard/src/pages/SampleViewer.tsx:131 — Emoji in code: 📍
  • [minor] dashboard/src/pages/Config.tsx:7 — Emoji in code: 📷
  • [minor] dashboard/src/pages/Config.tsx:8 — Emoji in code: 🌐
  • [minor] dashboard/src/pages/Config.tsx:9 — Emoji in code: 💾
  • [minor] dashboard/src/pages/Config.tsx:119 — Emoji in code: 📡
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:54 — Emoji in code: 🧠
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:139 — Emoji in code: 📷
  • [minor] dashboard/src/pages/session-tabs/OverviewTab.tsx:228 — Emoji in code: 📸
  • [minor] dashboard/src/pages/session-tabs/SamplesTab.tsx:38 — Emoji in code: 📷

Ecosystem totals by rule

Rule Total findings
b7-emoji-in-code 465
b4-python-print 351
web-hardcoded-hex 276
ts-any-type 249
b4-console-log 93
b4-swift-print 7

Grand total: 1441 findings across 19 repos.