30 Commits
Author SHA1 Message Date
chrmc40 dcc31e4eae tag-builder: add + delete subjects (characters) via a 'Mine' tab
User-created characters now live in a Subjects -> Mine view with an 'Add
subject' tile; the character menu gains Delete (hide base) / Remove (drop
add). apply_overlay gains include_adds=False (used by the paginated
character browser + detail) so adds never leak into a LIMIT/OFFSET page.
2026-06-29 23:50:07 -07:00
chrmc40 b710afef7e Add splash hero2.webp + 4 demo workflow JSONs and README links; tag-customizer overlay + Tag Builder UI updates 2026-06-29 22:54:55 -07:00
chrmc40 49954df995 Boot-time DB-safe auto-updater + tag-builder UI/preset fixes
- Self-updater (core/update_boot.py + __init__ boot hook + system_api routes):
  apply staged updates before sqlite opens — git ff-only + DB backup + quick_check
  + paired rollback; discards only the tracked DB. 24h event-driven check, About
  'Update' entry, post-boot status toast (js/lib/update-check.js, js/main.js).
- tag-builder: NSFW toggle styling + NSFW Actions category, card/list view toggle,
  colon-bearing thumbnail serve fix, model-scoped Styles/templates preset matching,
  styles carry their own header + negative prompt.
- sidebar/onboarding/asset-browser: Windows asset drop + minor UI.
2026-06-29 18:30:22 -07:00
chrmc40 94821f9fca NSFW toggle: clearer labelled active button (drop ambiguous 🔞) 2026-06-29 14:30:58 -07:00
chrmc40 1e2733f5a5 Add NSFW filter toggle, NSFW Actions category, and card/list view toggle
- NSFW hide toggle (🔞) beside Tags/Natural-Language: hides designated NSFW
  groups + leaked NSFW items from the picker browser only; build state /
  round-trip / emit untouched. Manifest-driven, default hidden.
- NSFW Actions category: surfaces the dormant nsfw_action bucket (451 acts)
  as a toggle-gated 🔞 category; emits like a normal action. Backend already
  existed; frontend-only.
- Card/list view toggle (▦/☰) in the browser header: compact list rows with a
  tiny left thumb, persisted; pure CSS restyle, works in every view.
2026-06-29 14:00:41 -07:00
chrmc40 34b7cc6050 Remove illegal/unsafe content + fix character round-trip recognition
Safety: delete 19 curated tag-builder items that should not exist at all
(non-consent, bestiality, guro, and minor-sexualization tags across
appearance/expression/nsfw_action/cast items), per a content-safety audit.
Also: add /characters/identity-index so the picker recognizes all 1,486
normalized characters in existing prompts (was capped at 200).
2026-06-29 09:59:00 -07:00
chrmc40 5c57f1411a Fix slow first-open of the tag-builder picker
The default 'all' view mounts ~4,200 cards at once; almost all are off-screen.
Add content-visibility:auto so the browser defers layout/paint of off-screen
cards until they scroll into view. Initial open is now noticeably faster;
behaviour is unchanged (cards stay queryable/scrollable/findable).
2026-06-29 08:28:42 -07:00
chrmc40 0b057f1f17 Remove dead v1 Tag Builder tree
Delete the legacy v1 Tag Builder (components, entry, bridge, constants, build
artifact) and its 'Tag Builder (Legacy)' right-click menu item. Fully superseded
by v2 'Add Tags'/'Edit Tags', which are untouched. ~3,000 lines of source and a
~155 KB bundle removed; shared modules kept.
2026-06-29 08:00:53 -07:00
chrmc40 0649ac1031 tag-builder: infinite-scroll the character rail
The rail capped at the top 60 by popularity with no way to browse the rest of a
narrowed category (anime/video_game). Add loadMoreCharacters + an
IntersectionObserver sentinel that appends the next page on scroll.
2026-06-28 23:10:30 -07:00
chrmc40 3b996851b4 tag-builder H6: debounce the card-grid filter to fix the typing freeze
The All-view filter re-rendered thousands of card DOM nodes synchronously on
every keystroke. Drive the filter off a debouncedQuery that lags the input by
200ms so the grid updates ~5x/sec while typing instead of per keypress; the
input stays instant, category switches clear it, jumpToTag stays synchronous.
2026-06-28 22:54:26 -07:00
chrmc40 f0b47753fa tag-builder Wave A: backend stability + cleanup + customizer/timer frontend fixes
Backend:
- H4 get_db reconnect storm: gate the one-time schema/normalize/reconcile helpers
  behind a process-level flag so the ~11,529-row reconcile stops re-running on the
  asyncio loop on every spurious mtime reopen.
- H5 tag_search write-on-read: cache last-good fingerprint (return it on transient
  lock instead of zeros -> no spurious 5-10 min re-embed) + mtime-gate the query.
- Remove dead /clothing/assemble + /furniture/assemble routes.
- Escape LIKE %/_ in 3 character-prefix lookups; NULL-guard /props/assemble.
- New POST /tag-builder/maintenance (idempotent orphan cleanup + alias dedup).

Frontend:
- Customizer output-mode: thread real isNaturalMode into the 3 customizers; preview
  matches the actual emit per mode; focus checkbox disabled (not silent no-op) in
  tag mode.
- Event-driven timers: drop 3 setTimeout(0) click-outside deferrals + the 1100ms
  flash timer (animationend instead).
2026-06-28 22:44:30 -07:00
chrmc40 4d8539ad92 tag-builder quick-wins: fix guaranteed-500s, ranking poison, paginator, FK orphans, dead code
- error_response import (NameError 500 on /detect-outfit & /detect-pose) + guard float(threshold)
- clamp per_page on /characters (0 -> ZeroDivisionError 500; huge -> full-table dump)
- fix /outfits & /poses paginator param-bind order
- get_db PRAGMA foreign_keys=ON; one-time orphan cleanup (358 rows)
- _safe_thumb_segment reject ':' (Windows drive-letter THUMBS_ROOT escape)
- findRegionBlocks depth-tracks braces so inline {a|b} wildcards don't corrupt region inserts
- delete poisoning danbooru_tags 'TAG' header row; add 10 indexes
- drop dead character_series.character_count column + work_queue table
- remove orphaned tag-builder-conflict-resolver.js
2026-06-28 21:43:59 -07:00
chrmc40 9fd6498ba6 Publish snapshot: v1->v2 character port + accumulated fixes
- Tag-builder: port ~1,477 v1 characters into the v2 chip format so the
  character picker shows 1,486 characters (was 9); 1,390 carry rich per-chip
  descriptions restructured from each character's own bio. Adds
  scripts/port_v1_characters_to_v2.py.
- Ideogram: rewrite caption to the real Ideogram-4 schema + broaden refusal
  detection; sampler updates.
- Pose-studio, regional-detailer, attention-couple: assorted fixes.
- Add validate_templates / test_regions / test_crop_windows scripts.
2026-06-28 20:49:04 -07:00
chrmc40 e4b970d2b6 Publish snapshot: image editor suite, Krea 2 templates, sidebar fixes
- Image editor: layers with masks/blend modes, lightweight groups, Camera Raw
  scoped to the selected layer, full-frame i2i, Copy Merged, Photoshop keyboard
  shortcuts, and a large batch of Photoshop-parity bug fixes.
- LoadImage right-click "Open in PromptChain editor" bridge (edit -> lineage
  child re-pointed onto the node).
- Krea 2 Turbo/Realism templates and editor modal integration; remove the
  krea2 Text-to-Image 3D Regional template.
- ControlNet depth + 3D-pose: wire Poser true-depth straight into Apply
  ControlNet on pose paths.
- Sidebar: drag-to-LoadImage now uploads to the input root so the widget value
  is a valid bare filename; "Copy as path" emits native Windows backslashes.
- Contributor/relicensing docs and packaging tweaks.
2026-06-28 11:58:31 -07:00
chrmc40 deb1ed1eb3 Krea 2 Realism (i2i modal): make the Realism checkbox behave as a preset
Ticking Realism on a Krea 2 Turbo i2i edit now drops the author's
ClownsharKSampler_Beta recipe defaults (sampler/steps/cfg/denoise) into
the dials, while still honoring any value the user has guided away from
- the same preset pattern as the 'engine' picker. Unticking restores the
engine defaults. Realism still always swaps in the abliterated encoder,
wan VAE, and the projector+realism LoRAs regardless of sampler choice.
2026-06-27 17:35:59 -07:00
chrmc40 f8a7c2718f Krea 2 Realism: restore the author's ClownsharKSampler_Beta recipe (t2i/i2i templates + i2i modal); declare RES4LYF as a required prerequisite (install via ComfyUI Manager) rather than substituting a built-in sampler. 2026-06-27 16:45:33 -07:00
chrmc40 b91025aab6 Krea 2 Realism: installable for all users — drop RES4LYF (built-in res_multistep/beta sampler), add 'Krea 2 Realism' install pack (abliterated encoder + realism LoRA downloads + repo-bundled projector LoRA), gate the editor inpaint/i2i/upscale toggle on installed assets. 2026-06-27 16:06:43 -07:00
chrmc40 2924fcd9e2 Krea 2 Realism recipe: t2i/i2i templates + inpaint/i2i/upscale editor-modal toggles (abliterated encoder, realism/bypass LoRAs, ClownsharKSampler in i2i; seam-safe qwen VAE in masked/tiled modes). Plus full-frame i2i editor button, Krea 2 Turbo style-LoRA picker, and viewer/model-settings updates. 2026-06-27 15:31:10 -07:00
chrmc40 fd3bf0c675 Krea 2 RAW soft-render fix + USDU-NoUpscale node preview/model routing
- Krea 2 RAW soft/plastic renders: wire ConditioningKrea2Rebalance (mult 2.0,
  HD-softened per-layer taps) + bf16 base into the plain raw t2i/i2i templates
  (was highdetail-only); negative kept empty (RAW shares the Qwen3-VL encoder,
  near-inert on negatives).
- Node preview panel + model indicator now recognise UltimateSDUpscaleNoUpscale
  as a sampler (added to all four KSAMPLER_TYPES sets) — tile-upscale workflows
  stream live TAESD/progress to the panel and resolve their model instead of
  showing 'no model'.
2026-06-27 00:28:40 -07:00
chrmc40 097697cc76 Krea 2 (RAW + Turbo) integration + VAE-Utils vendored pack + modal polish
- Krea 2 RAW + Turbo: model configs, prompts, and templates (t2i/i2i, highdetail,
  turbo-t2i-3d-regional) — 3D-poser depth control bridges into Krea 2 via SDXL i2i
- Bundled ComfyUI-VAE-Utils pack: tiled detail-VAE decode + 2x latent-upscale weights
- Upscale/inpaint engines: native qwen_image_vae for krea2 sectional passes, euler the
  krea2 default sampler, real per-engine Steps/CFG defaults, CN-less tile denoise caps,
  krea2 resolution-shift sync
- Model-settings + install-section wiring for the new models and bundled pack
2026-06-26 20:01:54 -07:00
chrmc40 de699b78b8 Z-Image: regional 3D-poser attention couple + pickable upscale/inpaint engines + true-depth fix
- PromptChain_ZImageRegionalCouple: $name{} per-character regional conditioning on
  Z-Image's joint attention (DiT analog of AttentionCouple); base+turbo 3D-regional templates.
- Z-Image as a pickable UPSCALE engine + 'use current model' INPAINT (source path traces
  CLIPLoader/lumina2); family-aware so base=dpmpp_sde/cfg4, turbo=res_multistep/cfg1.3/0.7.
- PoseStudio true-depth fix: range from posed bones (was bind-box -> figures under-exposed).
- Base model config + templates aligned to dpmpp_sde/cfg4; user-saved templates keep their
  settings (lockSettings) without freezing model-swap.
- Edit-modal region-upscale: first-apply blank-layer fix (mask snapshot vs deselect race).
2026-06-23 23:24:55 -07:00
chrmc40 cc861e0200 Sync to 0.1.2: onboarding install-UX (progress bars + live rate + Cancel); .comfyignore/size hygiene; strip leaked dev paths 2026-06-22 21:58:20 -07:00
chrmc40 799c3f5448 Sync to registry release 0.1.1: pyproject + requirements (Registry manifest), .comfyignore, RIFE-only Frame-Interpolation, S1 (no runtime pip/git), comfy node validate fixes, insightface>=1.0 pin 2026-06-22 20:18:51 -07:00
chrmc40 92d70d9c46 Ideogram 4: add architecture label to the model picker
Registers Ideogram / Ideogram 4 in the model enum so the New Workflow picker
shows a proper "Ideogram" group. Completes the Ideogram 4 integration already
in this repo: local-model recognition, text-to-image template, prompt-template
library, and the JSON-envelope caption + auto-retry sampler that work around the
model's built-in safety-block false positives.
2026-06-19 15:53:45 -07:00
chrmc40 ad4a5a5004 Lineage picker overhaul + Ideogram 4 integration
Viewer lineage picker: centered tidy tree with per-row overflow bundles,
you-are-here orientation (auto-center, active-path highlight, off-branch dimming),
upscale provenance badges, always-visible fork markers, focus/isolate a branch,
multi-select batch delete with confirm, and per-family expansion persistence.

Ideogram 4 model integration: preset, prompts, t2i template, fingerprint
detection, and caption/sampler nodes.
2026-06-19 15:47:13 -07:00
chrmc40 68cbef51ec Lineage subway tree view + viewer/modal polish
- Lineage "subway" lanes: branch columns, spine + S-curve connectors, per-node
  expand/fold, header expand-all toggle, right-click Copy Path
- Lineage fixes: show family when an image is opened by file path; new-gen banner
  moved off the lineage header to top-center; transparent scrollbar corner;
  hover-only branch controls; stale-refetch staleness guard + edge-keyed
  connectors + anomaly instrumentation
- Modal-setup persistence: 3D scene, inpaint mask, prompt, upscale dials restore
  across reopen
- Re-pose modal: auto-restore last setup, Re-Apply, pan/zoom + before/after Compare
- Upscale modal: before/after Compare wipe
- Pose Studio: name-your-file scene export; $name{} block rename mirroring
- docs: README wordmark hero
2026-06-18 22:06:57 -07:00
chrmc40 4a3eb29968 Per-image modal setup persistence (Re-pose / Inpaint / Upscale)
Render modals now remember and restore the user's last setup per image,
surviving close/reopen and restart, via a server-side sidecar keyed by image
content hash.

- New core/modal_setup_api.py sidecar (sibling of edit-docs): POST(merge per
  kind)/GET/DELETE, manifest + binary planes, LRU budget, tombstone-aware.
- Re-pose: AUTO-restores recipe/model/prompt/strength and the full 3D pose on
  open (seed-before-mount), lineage-aware so a re-posed result/edit resumes its
  source's setup. Plus a Re-Apply button.
- Inpaint: restores engine/mode/dials, the PuLID/Style-Reference cluster, the
  prompt, and the painted mask (alpha plane).
- Upscale: restores dials + prompt via an opt-in chip, doc-dims keyed.
- Also: before/after Compare wipe on Upscale + Re-pose; Fit/Compare controls
  relocated with click-fix + double-click-to-fit.
2026-06-18 16:14:29 -07:00
chrmc40 52998132b5 3D Poser: name-your-file modal on scene export, matched to the sidebar Rename modal; Pose Studio mirrors $name{} block renames from the prompt back to the figure 2026-06-18 10:52:38 -07:00
chrmc40 026f51721e Image editor: Del/Backspace deletes the selection even with a slider/select focused
A focused range slider (opacity/feather) or <select> is not a text field, so
Delete/Backspace there now still removes the lasso selection instead of being
swallowed.
2026-06-17 21:50:17 -07:00
chrmc40 8e3dceae99 ComfyUI-PromptChain
A prompt-authoring and image-iteration suite for ComfyUI.
2026-06-17 19:35:25 -07:00