A public gallery of animated pets for Codex, Claude Code, DeepSeek Harness, Hermes, OpenCode, Gemini CLI, and more.
This report summarizes scanner evidence for crafter-station/petdex, a TypeScript project with 4,307 GitHub stars. SynthScan examined 128,103 lines of code across 761 source files, recording 277 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 234 finding(s).
Are imports declared and package/API names verified? 11 finding(s).
Are wrappers, guards, and repeated structures necessary? 165 finding(s).
Which changes need focused human review? 277 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 277 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .opencode/plans/1778167761161-happy-cabin.md | 108 | export function validateAdCampaignUpdateInput(body: unknown): | CODE |
| LOW | .opencode/plans/1778167761161-happy-cabin.md | 131 | export async function updateOwnedAdCampaignCreative(params: { | CODE |
| LOW | scripts/audit-pet-security.ts | 304 | async function maybeApplySecurityRejection( | CODE |
| LOW | scripts/release-desktop.ts | 476 | function preflightDetachDmgVolumes(): void { | CODE |
| LOW | scripts/audit-pet-atlases.ts | 210 | function toPublicAtlasPixelSummary( | CODE |
| LOW | scripts/audit-pet-atlases.ts | 275 | export function buildPublicAuditReviewReport( | CODE |
| LOW | scripts/publish-pet-sticker-artifacts.ts | 351 | async function finalizeReactionPublication( | CODE |
| LOW | scripts/publish-pet-sticker-artifacts.ts | 738 | async function notifyStickerRevalidation(slugs: string[]): Promise<void> { | CODE |
| LOW | packages/petdex-cli/src/collections.ts | 322 | export function confirmCollectionMutation( | CODE |
| LOW | packages/petdex-cli/src/hooks/mcp-server.ts | 467 | function trimTrailingCarriageReturn(buffer: Uint8Array): Uint8Array { | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 30 | def test_hidden_tasks_never_emit_cards_or_keep_internal_prompt_titles(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 62 | def test_rollout_following_parses_only_appended_bytes(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 103 | def test_bare_completion_replaces_transient_copy_and_keeps_prose(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 155 | def test_subagent_rollouts_do_not_hide_an_older_primary(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 196 | def test_large_rollout_keeps_subagent_metadata_outside_the_tail(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 226 | def test_custom_home_yields_canonical_active_and_terminal_events(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 279 | def test_pid_cleanup_never_removes_another_process(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 294 | def test_lock_acquisition_waits_for_previous_owner(self) -> None: | CODE |
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 311 | def test_watchers_publish_the_configured_remote_principal(self) -> None: | CODE |
| LOW | src/app/[locale]/install/[slug]/route.ts | 23 | function detectPlatformFromRequest(req: Request): "posix" | "ps1" { | CODE |
| LOW | src/app/api/profile/collection/route.ts | 44 | async function findCollectionAfterMutationLock( | CODE |
| LOW | src/components/submit/pet-submit-form.tsx | 1113 | function deriveIdFromSpritesheetName(fileName: string): string { | CODE |
| LOW | src/components/auth/auth-badge-auth.tsx | 28 | function preloadUserDropdownContent() { | CODE |
| LOW | src/components/auth/auth-badge-auth.tsx | 200 | function UserDropdownContentLoading() { | CODE |
| LOW | src/components/pets/pet-action-menu.tsx | 37 | function preloadPetActionMenuContent() { | CODE |
| LOW | src/components/pets/pet-action-menu.tsx | 112 | function PetActionMenuContentLoading() { | CODE |
| LOW | src/components/profile/profile-pinning-state.ts | 1 | export function applyPinChangeToPinnedSlugs( | CODE |
| LOW | src/components/profile/profile-pinning-state.ts | 46 | export function shouldResetPinnedOrderFromProps({ | CODE |
| LOW | src/components/profile/owner-edit-panel.tsx | 52 | async function readSpriteVersionFromPetJson(file: File): Promise<1 | 2> { | CODE |
| LOW | src/lib/public-traffic-guard.ts | 57 | export function shouldBlockKnownAbusiveClient( | CODE |
| LOW | src/lib/profiles.ts | 67 | export function normalizeProfileDisplayName(value: unknown): string | null { | CODE |
| LOW | src/lib/pet-security.ts | 371 | function hasBlockedControlCharacter(value: string): boolean { | CODE |
| LOW | src/lib/sticker-explorer-url.ts | 25 | export function parseStickerExplorerSelection( | CODE |
| LOW | src/lib/sticker-explorer-url.ts | 43 | export function serializeStickerSelection(item: StickerDeckItem): string { | CODE |
| LOW | src/lib/sticker-explorer-url.ts | 80 | export function upsertStickerExplorerParams( | CODE |
| LOW | src/lib/sprite-version.ts | 16 | export function normalizeSpriteVersionNumber( | CODE |
| LOW | src/lib/sticker-export.ts | 177 | export async function getPetStickerAvailability(slug: string): Promise<{ | CODE |
| LOW⚡ | src/lib/pet-sticker-artifacts.ts | 59 | export function parseExactPetStickerState( | CODE |
| LOW⚡ | src/lib/pet-sticker-artifacts.ts | 68 | export function parseExactPetStickerFormat( | CODE |
| LOW⚡ | src/lib/pet-sticker-artifacts.ts | 77 | export function parseExactPetStickerTreatment( | CODE |
| LOW⚡ | src/lib/pet-sticker-artifacts.ts | 86 | export function parseExactPetStickerProfile( | CODE |
| LOW | src/lib/pet-sticker-artifacts.ts | 130 | export function legacyPetStickerRedirectUrls(slug: string): string[] { | CODE |
| LOW | src/lib/submission-decisions.ts | 36 | export function submissionOwnerNotificationHref(input: { | CODE |
| LOW | src/lib/submission-decisions.ts | 295 | async function publishApprovedPublicArtifacts( | CODE |
| LOW | src/lib/public-clerk-bypass.ts | 28 | export function shouldBypassClerkMiddleware(input: { | CODE |
| LOW | src/lib/collection-sql.ts | 8 | export function collectionCoverForPetSlugsQuery(petSlugs: readonly string[]) { | CODE |
| LOW⚡ | src/lib/submission-similarity.ts | 26 | export function passesVisualSimilarityThreshold( | CODE |
| LOW⚡ | src/lib/submission-similarity.ts | 35 | export function passesSemanticSimilarityThreshold( | CODE |
| LOW⚡ | src/lib/submission-similarity.ts | 44 | export function hasCurrentSimilaritySignal(match: SimilaritySignal): boolean { | CODE |
| LOW | src/lib/submission-similarity.ts | 65 | export function visualDistanceSimilarityScore(visualDistance: number): number { | CODE |
| LOW | src/lib/codex-theme.ts | 181 | export function serializeCodexThemeVariant(variant: CodexThemeVariant): string { | CODE |
| LOW | src/lib/sprite-atlas.ts | 67 | export function canonicalSpriteDimensions(version: SpriteAtlasVersion) { | CODE |
| LOW | src/lib/collections.ts | 120 | export async function getCollectionSitemapEntries(): Promise< | CODE |
| LOW | src/lib/collections.ts | 144 | export async function getCollectionListingMetadata( | CODE |
| LOW | src/lib/collections.ts | 200 | export async function getCollectionListingPreviewsBySlugs( | CODE |
| LOW | src/lib/collections.ts | 263 | async function hydrateCollectionListingRows( | CODE |
| LOW | src/lib/collections.ts | 398 | export async function getCollectionCandidatesForPet( | CODE |
| LOW | src/lib/collections.ts | 453 | export async function getCollectionsContainingPet( | CODE |
| LOW | src/lib/collections.ts | 498 | function isMissingCollectionTableError(error: unknown): boolean { | CODE |
| LOW | src/lib/collection-input.ts | 58 | export function normalizeCollectionExternalUrl( | CODE |
| 73 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.dev.yml | 1 | # Local dev services for petdex contributors. Engine-agnostic, works | COMMENT |
| LOW | next.config.ts | 61 | // keep 'unsafe-inline' as well because Next embeds RSC payloads inline, | COMMENT |
| LOW | scripts/backfill-credits-from-clerk.ts | 1 | // Recompute every submitted_pets row's credit_* columns from the | COMMENT |
| LOW | scripts/auto-tag.ts | 1 | // Auto-tag approved community pets with kind/vibes/tags via Codex. | COMMENT |
| LOW | scripts/merge-classifications.ts | 1 | // Merges results from the two classification passes: | COMMENT |
| LOW | scripts/sign-macos.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/reassign-rescued-pets.ts | 1 | // Pets that were rescued by an admin script ended up with owner_id = | COMMENT |
| LOW | scripts/process-pending-collection-requests.ts | 1 | // Process the pending pet_collection_requests after the May 2026 | COMMENT |
| LOW | scripts/compute-similarity.ts | 1 | // Compute perceptual hash + current-model semantic embedding for every | COMMENT |
| LOW | scripts/classify-unknown-franchises.ts | 1 | // Classify the unknown-but-flagged pets via codex exec. Reads the | COMMENT |
| LOW | scripts/backfill-email-preferences-from-clerk.ts | 1 | // Backfill email_preferences from existing Clerk users. | COMMENT |
| LOW | scripts/reorganize-collections.ts | 1 | // Big collection re-org. Runs in 4 phases, each individually | COMMENT |
| LOW | scripts/release-desktop.ts | 1 | #!/usr/bin/env bun | COMMENT |
| LOW | scripts/release-desktop.ts | 21 | // What it does: | COMMENT |
| LOW | scripts/takedown-pet.ts | 1 | // One-shot takedown for an approved pet. Mirrors DELETE /api/admin/[id] | COMMENT |
| LOW | scripts/takedown-by-keyword.ts | 1 | // Sweep takedown for pets, pet_requests, pet_collection_requests, and | COMMENT |
| LOW | scripts/backfill-email-prefs.ts | 1 | // Sync every Clerk user into email_preferences with default opt-in | COMMENT |
| LOW | scripts/dev-docker.ts | 1 | // Boots the docker-backed dev path: | COMMENT |
| LOW | scripts/seed-themed-collections.ts | 1 | // Seeds franchise-based collections from REAL data: reads | COMMENT |
| LOW | scripts/seed-curated-collections.ts | 1 | // Seed ten curated collections owned by the Petdex team. Idempotent — | COMMENT |
| LOW | scripts/relink-by-email.ts | 1 | // Cross-check the 26 admin-owned, github-credited pets that the GitHub | COMMENT |
| LOW | scripts/relink-rescued-owners.ts | 1 | // Relink rescued pets to their real Clerk users. | COMMENT |
| LOW | scripts/admin-import-pet.ts | 1 | // Admin-side import for a pet that the user couldn't upload via the | COMMENT |
| LOW | scripts/split-large-categories.ts | 1 | // Splits large category collections (>=100 pets) into themed | COMMENT |
| LOW | packages/petdex-cli/bin/petdex.ts | 121 | printHelp(); | COMMENT |
| LOW | packages/petdex-cli/src/collections.ts | 81 | export function overCollectionPetLimit( | COMMENT |
| LOW | packages/petdex-cli/src/collections.ts | 181 | // data, and there is no way to tell the two apart. | COMMENT |
| LOW | packages/petdex-cli/src/collections.ts | 201 | // the clear would become a no-op — or, with no other flag set, a refusal | COMMENT |
| LOW | …ages/petdex-desktop-native/src/assets/omp-extension.ts | 1 | // petdex extension for OMP (Oh My Pi). Auto-generated by the Petdex | COMMENT |
| LOW | …petdex-desktop-native/src/assets/petdex-remote-hook.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …ktop-native/src/assets/petdex-ssh-tunnel-supervisor.sh | 1 | #!/bin/sh | COMMENT |
| LOW | .github/workflows/app-ci.yml | 1 | name: app-ci | COMMENT |
| LOW | .github/workflows/desktop-release.yml | 41 | # gtk4 is the host toolkit and libX11 carries the floating flag | COMMENT |
| LOW | .github/workflows/preview-snapshot.yml | 1 | name: preview-snapshot | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 1 | name: petdex-desktop-native ci | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 21 | # petdex:// handling exists on all three hosts, but it was fired by hand | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 141 | # decodes through loader plugins, and Ubuntu ships none for webp | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 401 | import -window root /tmp/linux-screen-cairo.png || true | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 421 | # The install contract lands separately from the desktop runtime. | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 441 | # transitive dependency is not a contract, and dbus-daemon and | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 481 | # GApplication's uniqueness and its ::open delivery run over the | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 701 | # writes there is `<exe> "%1"`, so a user clicking a link and | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 741 | # 1.35MB sheet landing as a few hundred bytes is the failure that | COMMENT |
| LOW | .github/workflows/desktop-native-ci.yml | 941 | done | COMMENT |
| LOW | src/app/[locale]/pets/[slug]/opengraph-image.tsx | 21 | // Cache the rendered PNG aggressively. Pet sprites change rarely — when | COMMENT |
| LOW | src/app/api/pets/[slug]/route.ts | 1 | // Slug to internal id, for the CLI's edit flow. | COMMENT |
| LOW | src/app/api/profile/collection/route.ts | 121 | // value for an omitted one widened the checks past the request: a row whose | COMMENT |
| LOW | src/app/api/profile/collections/[id]/route.ts | 161 | } | COMMENT |
| LOW | src/app/api/wechat-qr/route.ts | 1 | // Public proxy for the WeChat group QR. | COMMENT |
| LOW | src/app/api/og/route.ts | 1 | // Root OG image proxy. Crawlers fetch this URL and we choose the asset | COMMENT |
| LOW | src/components/pets/pet-floater.tsx | 61 | y: number; | COMMENT |
| LOW | src/lib/url-allowlist.ts | 1 | // Allowlist for asset URLs we accept from user submissions or render | COMMENT |
| LOW | src/lib/url-allowlist.ts | 121 | // Strip every trailing dot, not just one: "localhost.." survives a single | COMMENT |
| LOW | src/lib/collection-empty-list.test.ts | 21 | // module would otherwise get undefined depending on load order. Every other | COMMENT |
| LOW | src/lib/shuffle-seed.ts | 1 | // Per-visitor stable shuffle seed used by the curated gallery sort. | COMMENT |
| LOW | src/lib/pet-search.ts | 301 | .where(where); | COMMENT |
| LOW | src/lib/keyword-blocklist.ts | 1 | // Hard-blocked keywords for moderation. Anything that contains a hit | COMMENT |
| LOW | src/lib/codex-theme.ts | 1 | // Generates Codex Desktop themes (codex-theme-v1 format) from a pet's | COMMENT |
| LOW | src/lib/burst-guard.ts | 1 | // In-process burst guard. | COMMENT |
| LOW | src/lib/dex.ts | 1 | // Pokédex-style canonical numbering. Each approved pet gets a stable | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 40 | // ─── config ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 94 | // ─── entrypoint ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 243 | // ─── commands ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 866 | // ─── edit ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 1044 | // ─── candidate collection ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 1181 | // ─── upload pipeline ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 1321 | // ─── helpers ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 1471 | // ─── telemetry ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/petdex-cli/bin/petdex.ts | 1504 | // ─── run ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/components/submit/pet-submit-form.tsx | 152 | // ── Folder upload path ────────────────────────────────────────── | COMMENT |
| MEDIUM | src/components/submit/pet-submit-form.tsx | 206 | // ── Bare spritesheet path (ChatGPT/Codex Desktop pet export) ───── | COMMENT |
| MEDIUM | src/components/submit/pet-submit-form.tsx | 239 | // ── ZIP upload path (legacy) ──────────────────────────────────── | COMMENT |
| MEDIUM | src/components/submit/pet-submit-form.tsx | 301 | // ── Common: parse pet.json, validate sprite dims ────────────────── | COMMENT |
| MEDIUM | src/components/submit/pet-submit-form.tsx | 465 | // ── R2 presigned PUT flow ───────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/email-templates/desktop-launch.ts | 85 | // ─── HTML composition ──────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plans/003-static-remaining-pages.md | 105 | ### Step 4: Register the new static routes for edge caching (only if plan 002 landed) | COMMENT |
| LOW | plans/001-assets-edge-cache.md | 90 | ### Step 1: Diagnose what serves assets.petdex.dev | COMMENT |
| LOW | plans/001-assets-edge-cache.md | 107 | ### Step 2: Add a Cache Rule for the asset hostname | COMMENT |
| LOW | plans/001-assets-edge-cache.md | 119 | ### Step 3: Add hotlink protection as a WAF rule (replaces the Worker's referer gate, but correctly) | COMMENT |
| LOW | plans/001-assets-edge-cache.md | 136 | ### Step 4: Confirm CORS still works for the web app | COMMENT |
| LOW | plans/001-assets-edge-cache.md | 143 | ### Step 5: Record the outcome in the repo | COMMENT |
| LOW | plans/002-html-edge-cache.md | 98 | ### Step 1: Stop the unconditional NEXT_LOCALE Set-Cookie | COMMENT |
| LOW | plans/002-html-edge-cache.md | 117 | ### Step 2: Emit Cloudflare-CDN-Cache-Control for public HTML routes | COMMENT |
| LOW | plans/002-html-edge-cache.md | 145 | ### Step 3: Locale switcher sets the cookie client-side (conditional — see Step 1 note) | COMMENT |
| LOW | plans/002-html-edge-cache.md | 168 | ### Step 5: Signed-in smoke | COMMENT |
| LOW | plans/004-middleware-diet.md | 99 | ### Step 3: Drop the per-page-view Upstash calls; replace with a Cloudflare rate limit | COMMENT |
| LOW | plans/004-middleware-diet.md | 110 | ### Step 4: Measure-then-decide on Clerk middleware scope (investigation, small change at most) | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 103 | ### Step 1: Inventory and classify consumers | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 109 | ### Step 2: Make HeaderStateProvider consumers provider-optional | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 115 | ### Step 3: Extract the auth island | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 123 | ### Step 4: Rewire the locale layout | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 131 | ### Step 5: Degrade the public interactive islands | COMMENT |
| LOW⚡ | plans/005-public-shell-server-first.md | 137 | ### Step 6: Full verification pass | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 75 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 124 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 178 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 265 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 278 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 345 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 513 | except Exception: | CODE |
| MEDIUM | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 86 | def remote_hostname() -> str: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-remote-hook.sh | 140 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-remote-hook.sh | 285 | except Exception: | CODE |
| LOW | …petdex-desktop-native/src/assets/petdex-remote-hook.sh | 437 | except Exception: | CODE |
| LOW | …etdex-desktop-native/src/assets/petdex-hermes-watch.py | 268 | except Exception: | CODE |
| MEDIUM | …etdex-desktop-native/src/assets/petdex-hermes-watch.py | 65 | def remote_hostname() -> str: | CODE |
| LOW | …top-native/src/assets/hermes-petdex-plugin/__init__.py | 180 | except Exception: | CODE |
| LOW | …top-native/src/assets/hermes-petdex-plugin/__init__.py | 261 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …s/petdex-desktop-native/tests/macos_activation_test.py | 50 | if (legacyCalls != 1 || modernCalls != 0) return 2; | CODE |
| HIGH | …s/petdex-desktop-native/tests/macos_activation_test.py | 55 | if (legacyCalls != 1 || modernCalls != 1) return 3; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 104 | except OSError: | CODE |
| HIGH | …etdex-desktop-native/src/assets/petdex-hermes-watch.py | 92 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 246 | # parent+nickname fallback covers older multi-agent builds without treating | COMMENT |
| MEDIUM | …petdex-desktop-native/src/assets/petdex-remote-hook.sh | 273 | # Codex writes explicit multi-agent ancestry into the rollout prefix, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/dev-docker.ts | 180 | "# This file is ignored by git and is safe for personal dev values.", | CODE |
| MEDIUM | …/petdex-desktop-native/tests/tunnel_supervisor_test.sh | 19 | # Create an intentionally unreaped child. kill -0 reports this zombie as | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …es/petdex-desktop-native/tests/remote_watchers_test.py | 4 | CODE | |
| LOW | packages/petdex-desktop-native/tests/hook_stdin_test.py | 9 | CODE | |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 9 | CODE | |
| LOW | …etdex-desktop-native/src/assets/petdex-hermes-watch.py | 13 | CODE | |
| LOW | …top-native/src/assets/hermes-petdex-plugin/__init__.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 48 | CODE | |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 258 | CODE | |
| LOW | …petdex-desktop-native/src/assets/petdex-codex-watch.py | 567 | CODE | |
| LOW | …etdex-desktop-native/src/assets/petdex-hermes-watch.py | 272 | CODE | |
| LOW | …top-native/src/assets/hermes-petdex-plugin/__init__.py | 93 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ents/skills/coss/references/primitives/preview-card.md | 56 | <AvatarImage src="/avatar.png" alt="John Doe" /> | CODE |
| LOW | src/i18n/messages/zh.json | 451 | "placeholder": "例如:吉卜力风格的龙猫、困困的程序员美西螈、Spider-Pig", | CODE |
| LOW | src/i18n/messages/en.json | 417 | "placeholder": "e.g. a Studio Ghibli chinchilla, a sleepy axolotl coder, Spider-Pig", | CODE |
| LOW | src/i18n/messages/es.json | 417 | "placeholder": "p. ej. una chinchilla estilo Ghibli, un ajolote programador con sueño, Spider-Pig", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.dev.yml | 7 | # Usage: | COMMENT |
| LOW | scripts/sign-macos.sh | 15 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/petdex-cli/src/hooks/mcp-server.ts | 166 | async function handleRequest(req: JsonRpcRequest): Promise<void> { | CODE |