- api/image_search.py reads only the PNG text chunks before IDAT (ComfyUI prompt/workflow, A1111 parameters), builds one small record per image and caches it by mtime; all space-separated terms must match - hex terms of 8+ characters also match SHA256 values recorded in the workflow (extra.anomalous_hashes) and local model files with that hash, so renamed models are still found; A1111 "Model hash" text matches as text - gallery_images accepts q; the search box above the gallery debounces input, shows the match count, keeps paging/infinite scroll and the detail viewer on the filtered list, and lets a newer query supersede one still loading On the local output (774 PNG) the first search reads ~10 MB of text chunks; later searches use the cache. Verified: tests/test_image_search.py (prompt, seed, AND terms, A1111, file names, recorded and local-index hashes, cache, chunk reader), full Python suite (106), jsdom walkthrough of the gallery search box. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W411Z69FC3em9CzpeqEub5
Architecture Topic Guide
Start with the repository-root ARCHITECTURE.md, then
open only the topic needed for the current task.
backend.md: Python routes, filesystem safety, persistence, scan state, model sidecars, and backend performance.frontend.md: extension bootstrap, UI ownership, localization, media lifecycle, panel state, and graph mutations.recipes.md: Workflow Recipes, packages, galleries, Parameter Notebooks, prompt roles, and recipe-to-model transitions.material-library.md: generated-image snapshots, material assets, node-block reuse, and Model Doctor handoff.recipe-model-lifecycle.md: authoritative model fields, Hash synchronization, local matching, partial append, and note privacy.model-resolution.md: model provenance, Model Doctor, hash injection, deep scanning, and recovery policy.../decisions/README.md: concise records of product and architectural decisions that still explain current behavior.
These documents describe current contracts rather than implementation history.
For exact changes, use Git history. For user-visible releases, use
CHANGELOG.md. For recurring implementation traps, use
.agents/logs/ai_lessons.md.