diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c4d6261..27fd3e9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,3 +20,5 @@ jobs: run: python tools/validate_styles.py - name: Audit styles run: python tools/audit_styles.py + - name: Runtime regression tests + run: python -m unittest discover -s tests diff --git a/CHANGELOG.md b/CHANGELOG.md index 90e9fdd..5f2059e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,15 +8,21 @@ The format is based on Keep a Changelog, and this project follows Semantic Versi ### Added -- Search-based style resolution, color-grade overlays, style strength controls, and JSON debug metadata on the main node. +- `PromptStyler: Advanced Prompt -> Conditioning` for search-based style resolution, color-grade overlays, style strength controls, and JSON debug metadata. - Shared `style_library.py` used by the runtime node and maintainer tooling. -- CI checks for version sync, style validation, and style audit. +- CI checks for version sync, style validation, style audit, and runtime regression tests. - `tools/sync_legacy_styles.py` and `tools/version_sync.py` for compatibility snapshot and release metadata maintenance. +- New medium-first style packs: `styles/packs/32_print_reprographic.json`, `styles/packs/42_decorative_arts_material_processes.json`, and `styles/packs/43_digital_craft.json`. +- Expanded `styles/packs/36_mixed_media.json` to deepen the mixed-media family with 18 new tactile/process-driven styles. +- `STYLE_TAXONOMY.md` documenting pack purpose, target size, and routing rules for future additions. +- Runtime regression coverage for legacy prompt composition and conditioning validation. ### Changed +- `PromptStyler: Prompt -> Conditioning (Style Picker)` now uses the narrow legacy-compatible prompt-to-conditioning contract again for stability. +- Broken or non-finite conditioning now raises an explicit node error instead of silently returning a malformed output. - `styles/styles_v1.json` is now treated as a generated compatibility snapshot of merged packs. -- README and maintainer documentation now describe the current search/composition behavior instead of hardcoded implementation details. +- README and maintainer documentation now describe the stable/advanced node split. ## [0.3.1] - 2026-01-31 diff --git a/README.md b/README.md index 6cada34..50e927f 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,24 @@ # ComfyUI PromptStyler -PromptStyler is a custom ComfyUI node that applies a curated style template to your positive prompt and outputs `CONDITIONING` for KSampler. +PromptStyler is a custom ComfyUI node pack for applying curated style templates to a positive prompt and returning `CONDITIONING` for KSampler. -The node stays lightweight in graphs, but it now supports three ways to resolve a style: +This release intentionally splits the runtime surface into a stable default node and an opt-in advanced node. -- dropdown selection -- direct `id` lookup -- offline search across style id, name, category, and tags +## Nodes -It also supports an optional color-grade overlay, search hints, and debug metadata without changing the existing node name or the first two outputs. - -## Node - -ComfyUI display name: +Stable node: - `PromptStyler: Prompt -> Conditioning (Style Picker)` +- outputs: `positive`, `styled_prompt` +- behavior: legacy-compatible prompt composition and direct conditioning output -Outputs: +Advanced node: -- `positive` (`CONDITIONING`) -- `styled_prompt` (`STRING`) -- `resolved_style_id` (`STRING`) -- `resolved_style_meta` (`STRING`, JSON) +- `PromptStyler: Advanced Prompt -> Conditioning` +- outputs: `positive`, `styled_prompt`, `resolved_style_id`, `resolved_style_meta` +- behavior: search, overlays, stronger filtering controls, and JSON debug metadata -## What It Does - -1. You enter a subject prompt. -2. PromptStyler resolves a base style from the dropdown, a style id, or a search query. -3. It applies the style to your prompt. -4. Optionally, it appends one `Color Grade*` overlay style. -5. It tokenizes the final prompt with the connected text encoder and returns `CONDITIONING`. - -The default behavior remains compatible with older graphs: - -- the node name is unchanged -- `style_id_override` still works in saved workflows -- default strength is `strong`, which preserves the prior full-style application behavior +Use the stable node unless you specifically need the advanced controls. ## Recommended Wiring @@ -49,60 +32,45 @@ Connect: - your text source -> `PromptStyler.prompt` - `PromptStyler.positive` -> `KSampler.positive` -Use `styled_prompt` and `resolved_style_meta` for debugging when a style is not resolving the way you expect. +`styled_prompt` is the exact text that was encoded. -## Inputs - -Core inputs: +## Stable Node Inputs - `prompt`: your positive prompt - `apply_style`: bypass styling while still encoding the prompt -- `style`: main dropdown entry in `Category | Name | id` format -- `template_variant`: `default` or any model-specific variant present in the style packs -- `style_id_override`: direct id selection, mainly useful with newly-added user styles +- `style`: dropdown entry in `Category | Name | id` format +- `template_variant`: `default` or any model-specific variant present in the packs +- `style_id_override`: direct id selection for newly-added or scripted styles - `text_encoder`: connect from your checkpoint/model loader -Selection controls: +Stable node rules: + +- `style_id_override` takes precedence over the dropdown when set +- `default` uses legacy comma-phrase composition and de-dupe behavior +- model-specific variants use their explicit variant text and otherwise fall back to `default` +- malformed conditioning now raises an explicit node error instead of silently returning a broken output + +## Advanced Node Inputs + +Core inputs are the same as the stable node, plus: - `selection_mode`: `dropdown`, `search`, or `id` -- `style_search`: free-text style lookup used by `selection_mode=search` +- `style_search`: free-text search used by `selection_mode=search` - `category_hint`: optional substring filter applied before search scoring - `tag_hint`: optional comma-separated tag filter applied before search scoring -- `on_missing_style`: `error` or `passthrough` - -Composition controls: - - `style_strength`: `subtle`, `normal`, or `strong` - `dedupe_mode`: `smart` or `off` - `overlay_style_id`: optional secondary style id, restricted to categories starting with `Color Grade` +- `on_missing_style`: `error` or `passthrough` -### Selection Behavior +Advanced node outputs: -- `dropdown`: uses the selected dropdown entry -- `id`: uses `style_id_override` -- `search`: scores exact id matches first, then exact name, then token matches across id, name, category, and tags -- `category_hint` and `tag_hint` narrow the candidate pool before scoring -- ambiguous searches fail with the top candidates listed in the error - -### Composition Model - -Recommended mental model: - -- base style -- optional color-grade overlay -- optional search-based style resolution - -`style_strength` only affects the default phrase-based variant: - -- `subtle`: first 3 unique prefix phrases and first 3 unique suffix phrases -- `normal`: first 6 unique prefix phrases and first 6 unique suffix phrases -- `strong`: all phrases - -`dedupe_mode=smart` only removes duplicate style-added phrases. It does not rewrite or collapse repeated phrases inside the user prompt. +- `resolved_style_id`: the final base style id that was resolved +- `resolved_style_meta`: JSON payload describing resolution inputs and composition details ## Style Library -Styles are loaded from JSON packs in filename order: +Primary runtime source: - `styles/packs/*.json` @@ -110,7 +78,7 @@ Compatibility snapshot: - `styles/styles_v1.json` -Pack file naming uses numeric prefixes for merge order. Example: +Pack filenames use numeric prefixes for merge order, for example: - `10_cinema.json` - `96_color_grades.json` @@ -187,16 +155,21 @@ Check release/version metadata consistency: C:\Comfyui\python_embeded\python.exe .\tools\version_sync.py check ``` +Run runtime regression tests: + +```powershell +python -m unittest discover -s tests +``` + ## Troubleshooting -- Node does not appear: - - verify the folder is `ComfyUI/custom_nodes/ComfyUI_PromptStyler/` - - restart ComfyUI or reload custom nodes -- Search fails unexpectedly: +- Stable node returns an error instead of an image: + - inspect `styled_prompt` + - confirm the connected `text_encoder` matches the active model family + - if the error mentions invalid conditioning, compare the same `styled_prompt` through stock `CLIPTextEncode` +- Advanced search fails unexpectedly: - relax `category_hint` and `tag_hint` - - use the `resolved_style_meta` output to inspect the resolution inputs and applied variant -- A saved graph should keep running while you edit packs: - - use `on_missing_style=passthrough` if you want the node to fall back to the raw prompt during live pack edits + - inspect `resolved_style_meta` - Styles look stale: - rerun `tools/sync_legacy_styles.py` or `tools/generate_style_packs.py` - reload custom nodes in ComfyUI @@ -209,4 +182,4 @@ Version metadata is managed from `VERSION`. - `.release-please-manifest.json` should be synced from `VERSION` with `tools/version_sync.py write` - `CHANGELOG.md` follows Keep a Changelog -See `RELEASING.md` for the maintainer flow. +See `RELEASING.md` for the maintainer flow. \ No newline at end of file diff --git a/STYLE_TAXONOMY.md b/STYLE_TAXONOMY.md new file mode 100644 index 0000000..2419ed6 --- /dev/null +++ b/STYLE_TAXONOMY.md @@ -0,0 +1,50 @@ +# Style Taxonomy + +This document defines how curated packs should be organized and expanded. + +## Pack Policy + +- Default organization is medium/process/material first. +- Target size per pack is 15-25 styles. +- Split a pack when it grows past about 30 styles or starts mixing unrelated subfamilies. +- Preserve existing style ids and visible category labels unless a migration is explicitly planned. +- Extend an existing pack when the new styles share the same medium or production logic. +- Create a new pack only when a coherent process family would otherwise become a grab bag inside an unrelated pack. + +## Current Curated Packs + +| Pack | Purpose | Categories Covered | Target Range | +| --- | --- | --- | --- | +| `10_cinema.json` | Film still, cinematography, and cinematic look packages | `Cinema` | 15-25 | +| `20_photography.json` | General photographic genres, techniques, and perspective looks | `Photography` | 25-35 | +| `21_photography_alt_process.json` | Darkroom and historical photographic chemistry/process looks | `Photography/Alt Process` | 15-25 | +| `30_illustration.json` | General hand-drawn, painted, manga, vector, pixel, and technical illustration styles | `Illustration`, `Anime/Manga`, `Pixel Art`, `Vector`, `Technical` | 25-35 | +| `31_printmaking_expanded.json` | Historical and fine-art printmaking processes | `Printmaking/Expanded` | 20-30 | +| `32_print_reprographic.json` | Mechanical duplication, proofing, repro, and press-surface looks | `Printmaking/Expanded`, `Photography/Alt Process`, `Graphic Design` | 14-22 | +| `34_fine_art_artists.json` | Artist-reference fine art styles | `Fine Art/Artists` | 20-30 | +| `35_fine_art.json` | Movement and material-led fine art styles | `Fine Art` | 25-35 | +| `36_mixed_media.json` | Layered, tactile, composite-media processes | `Mixed Media` | 20-30 | +| `37_street_art.json` | Street-applied paint, poster, and wall-surface styles | `Street Art` | 12-20 | +| `38_decorative_arts.json` | Core decorative crafts and surface-rich artisan media | `Decorative Arts` | 12-20 | +| `39_internet_aesthetics.json` | Mood-first internet aesthetic families | `Aesthetics/*` | 30-45 | +| `40_graphic_design.json` | Posters, layouts, branding, and print-graphic looks | `Graphic Design` | 25-35 | +| `41_decorative_arts_textiles.json` | Textile, fiber, and woven decorative processes | `Decorative Arts/Textiles` | 20-30 | +| `42_decorative_arts_material_processes.json` | Glass, ceramic, metal, cast, etched, and inlay process styles | `Decorative Arts` | 15-25 | +| `43_digital_craft.json` | Diagrammatic, vector, and constrained-color digital craft styles | `Technical`, `Vector`, `Pixel Art` | 12-20 | +| `50_3d_cg.json` | 3D, render, miniature-set, and CG material looks | `3D/CG` | 15-25 | +| `60_architecture_interior.json` | Architecture and interior presentation looks | `Architecture/Interior` | 15-25 | +| `70_fashion.json` | Fashion/editorial looks | `Fashion` | 12-20 | +| `80_product.json` | Product and commercial object presentation looks | `Product` | 10-18 | +| `90_nature.json` | Landscape and nature presentation looks | `Nature` | 12-20 | +| `95_experimental.json` | Abstract, prismatic, and process-bending visual styles | `Experimental` | 12-20 | +| `96_color_grades.json` | General color grade overlays | `Color Grade` | 15-25 | +| `97_color_grade_film_lab.json` | Film-lab process, scan, and stock-behavior overlays | `Color Grade/Film Lab` | 20-30 | + +## Routing Rules For New Styles + +- Add tactile layered work to `36_mixed_media.json` before considering any new mixed-media pack. +- Add glass, ceramic, metal, lacquer, and inlay surfaces to the decorative arts family before using `Fine Art` as a fallback. +- Add repro, proofing, duplication, and press artifacts to `32_print_reprographic.json` instead of scattering them across `Graphic Design` or `Experimental`. +- Add `Technical`, `Vector`, and `Pixel Art` growth to `43_digital_craft.json` so those categories stop living as incidental outliers inside the broad illustration pack. +- Use `39_internet_aesthetics.json` only when a style is fundamentally mood/subculture driven rather than process driven. +- Prefer extending an existing process family over creating a new pack with fewer than about 12 coherent styles. diff --git a/TECHNICAL_DOCUMENTATION.md b/TECHNICAL_DOCUMENTATION.md index 80715a7..96b6072 100644 --- a/TECHNICAL_DOCUMENTATION.md +++ b/TECHNICAL_DOCUMENTATION.md @@ -17,6 +17,7 @@ Maintainer tooling: - `tools/generate_style_packs.py`: curated pack generation plus legacy snapshot refresh - `tools/sync_legacy_styles.py`: regenerate `styles/styles_v1.json` from merged packs - `tools/version_sync.py`: check or write release metadata derived from `VERSION` +- `STYLE_TAXONOMY.md`: pack purpose, target size, and routing rules for future style additions Data sources: diff --git a/nodes.py b/nodes.py index 6bfa91c..accc214 100644 --- a/nodes.py +++ b/nodes.py @@ -1,67 +1,228 @@ from __future__ import annotations - -from typing import Any, Dict, Tuple - -try: - from .style_library import ( - DEFAULT_VARIANT, - LOAD_POLICY_LENIENT, - StyleLibraryError, - StyleTemplate, - compose_prompt, - get_cached_style_library, - make_style_meta, - resolve_overlay_style, - resolve_style, - ) -except ImportError: - from style_library import ( - DEFAULT_VARIANT, - LOAD_POLICY_LENIENT, - StyleLibraryError, - StyleTemplate, - compose_prompt, - get_cached_style_library, - make_style_meta, - resolve_overlay_style, - resolve_style, - ) +import json +import os +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Sequence, Tuple -def load_styles() -> Tuple[StyleTemplate, ...]: - return get_cached_style_library(load_policy=LOAD_POLICY_LENIENT).styles +_HERE = os.path.dirname(os.path.realpath(__file__)) +_STYLES_PATH = os.path.join(_HERE, "styles", "styles_v1.json") +_STYLE_PACKS_DIR = os.path.join(_HERE, "styles", "packs") + + +def _norm_space(s: str) -> str: + return " ".join((s or "").replace("\r", " ").replace("\n", " ").split()) + + +def _split_phrases(s: str, sep: str) -> List[str]: + s = _norm_space(s) + if not s: + return [] + parts = [p.strip() for p in s.split(sep)] + return [p for p in parts if p] + + +def _dedupe_phrases(phrases: List[str]) -> List[str]: + # Stable de-dupe (case-insensitive) while preserving first occurrence. + seen = set() + out: List[str] = [] + for p in phrases: + k = p.casefold() + if k in seen: + continue + seen.add(k) + out.append(p) + return out + + +@dataclass(frozen=True) +class StyleTemplate: + id: str + name: str + category: str + prefix: str + suffix: str + flux_prefix: str = "" + flux_suffix: str = "" + tags: Tuple[str, ...] = () + + +_STYLE_CACHE_SIG: Optional[Tuple[Tuple[str, float, int], ...]] = None +_STYLE_CACHE_STYLES: Tuple[StyleTemplate, ...] = () +_STYLE_CACHE_BY_ID: Dict[str, StyleTemplate] = {} +_STYLE_CACHE_CHOICES: List[str] = [] + + +def _file_sig(path: str) -> Tuple[str, float, int]: + try: + st = os.stat(path) + return (path, float(st.st_mtime), int(st.st_size)) + except OSError: + return (path, -1.0, -1) + + +def _iter_pack_paths() -> List[str]: + if not os.path.isdir(_STYLE_PACKS_DIR): + return [] + out: List[str] = [] + for name in sorted(os.listdir(_STYLE_PACKS_DIR)): + if name.lower().endswith(".json"): + out.append(os.path.join(_STYLE_PACKS_DIR, name)) + return out + + +def _style_sources_sig(path: str = _STYLES_PATH) -> Tuple[Tuple[str, float, int], ...]: + pack_paths = _iter_pack_paths() + # Include the legacy file in the signature even when packs exist, since we + # may fall back to it if packs are empty/broken. + sources = (pack_paths + [path]) if pack_paths else [path] + return tuple(_file_sig(p) for p in sources) + + +def _load_styles_file(path: str) -> List[Dict[str, Any]]: + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) or {} + if not isinstance(data, dict): + return [] + styles = data.get("styles", []) or [] + if not isinstance(styles, list): + return [] + return [s for s in styles if isinstance(s, dict)] + + +def _load_style_sources(path: str = _STYLES_PATH) -> List[Dict[str, Any]]: + # Supports either a single monolithic JSON (styles_v1.json) or multiple packs + # in styles/packs/*.json. If packs exist, they are merged (in filename order). + pack_paths = _iter_pack_paths() + if not pack_paths: + try: + return _load_styles_file(path) + except Exception as e: + print(f"PromptStyler: ERROR: unable to read styles file: {path} ({e})") + return [] + + merged: List[Dict[str, Any]] = [] + for p in pack_paths: + try: + part = _load_styles_file(p) + except Exception as e: + print(f"PromptStyler: WARN: unable to read style pack: {p} ({e})") + continue + if not part: + # Empty packs are allowed; keep going. + continue + merged.extend(part) + + # If packs exist but none were usable, fall back to the legacy file so the node still loads. + if not merged: + try: + legacy = _load_styles_file(path) + except Exception as e: + print( + f"PromptStyler: ERROR: no usable style packs found and unable to read legacy file: {path} ({e})" + ) + return [] + if legacy: + print(f"PromptStyler: WARN: no styles loaded from packs; falling back to legacy file: {path}") + return legacy + + return merged + + +def _get_style_library(path: str = _STYLES_PATH) -> Tuple[Tuple[StyleTemplate, ...], Dict[str, StyleTemplate], List[str]]: + global _STYLE_CACHE_SIG, _STYLE_CACHE_STYLES, _STYLE_CACHE_BY_ID, _STYLE_CACHE_CHOICES + + sig = _style_sources_sig(path) + if sig == _STYLE_CACHE_SIG: + return _STYLE_CACHE_STYLES, _STYLE_CACHE_BY_ID, _STYLE_CACHE_CHOICES + + raw_styles = _load_style_sources(path) + styles: List[StyleTemplate] = [] + for raw in raw_styles: + sid = raw.get("id") + name = raw.get("name") + if sid is None or name is None: + continue + + default = raw.get("default", {}) or {} + if not isinstance(default, dict): + default = {} + + models = raw.get("models", {}) or {} + if not isinstance(models, dict): + models = {} + flux = models.get("flux_2_klein", {}) or {} + if not isinstance(flux, dict): + flux = {} + + tmpl = StyleTemplate( + id=str(sid), + name=str(name), + category=str(raw.get("category", "Uncategorized")), + prefix=str(default.get("prefix", "")), + suffix=str(default.get("suffix", "")), + flux_prefix=str(flux.get("prefix", "") or ""), + flux_suffix=str(flux.get("suffix", "") or ""), + tags=tuple(raw.get("tags", []) or []), + ) + styles.append(tmpl) + + by_id = {s.id: s for s in styles} + choices = _choices_for_styles(styles) if styles else ["(no styles found) | (no styles) | __none__"] + + _STYLE_CACHE_SIG = sig + _STYLE_CACHE_STYLES = tuple(styles) + _STYLE_CACHE_BY_ID = by_id + _STYLE_CACHE_CHOICES = choices + return _STYLE_CACHE_STYLES, _STYLE_CACHE_BY_ID, _STYLE_CACHE_CHOICES + + +def load_styles(path: str = _STYLES_PATH) -> Tuple[StyleTemplate, ...]: + styles, _by_id, _choices = _get_style_library(path) + return styles + + +def _choices_for_styles(styles: Sequence[StyleTemplate]) -> List[str]: + # One big dropdown, but sorted + categorized to make it browsable. + # Format is stable and easy to parse: "Category | Name | id" + styles_sorted = sorted(styles, key=lambda s: (s.category.casefold(), s.name.casefold(), s.id)) + return [f"{s.category} | {s.name} | {s.id}" for s in styles_sorted] + + +def _style_by_choice(styles: Sequence[StyleTemplate], choice: str) -> Optional[StyleTemplate]: + if not choice: + return None + # Choice format: "Category | Name | id" + sid = choice.rsplit("|", 1)[-1].strip() + for s in styles: + if s.id == sid: + return s + return None class PromptStylerConditioning: """ - One-node UX: pick one style, optionally refine the selection/search behavior, - then output CONDITIONING for KSampler "positive". + One-node UX: pick ONE style (from a categorized dropdown), apply it to the + user's prompt, and output CONDITIONING for KSampler "positive". """ @classmethod def INPUT_TYPES(cls) -> Dict[str, Any]: - library = get_cached_style_library(load_policy=LOAD_POLICY_LENIENT) + styles, _by_id, choices = _get_style_library() return { "required": { + # Prompt is the main input; CLIP is just a wire from your model loader. "prompt": ("STRING", {"multiline": True, "default": ""}), "apply_style": ("BOOLEAN", {"default": True}), - "style": (library.choices,), - "template_variant": (list(library.variants),), + "style": (choices,), + "template_variant": (["default", "flux_2_klein"],), "style_id_override": ("STRING", {"multiline": False, "default": ""}), "text_encoder": ("CLIP",), - "selection_mode": (["dropdown", "search", "id"], {"default": "dropdown"}), - "style_search": ("STRING", {"multiline": False, "default": ""}), - "category_hint": ("STRING", {"multiline": False, "default": ""}), - "tag_hint": ("STRING", {"multiline": False, "default": ""}), - "style_strength": (["subtle", "normal", "strong"], {"default": "strong"}), - "dedupe_mode": (["smart", "off"], {"default": "smart"}), - "overlay_style_id": ("STRING", {"multiline": False, "default": ""}), - "on_missing_style": (["error", "passthrough"], {"default": "error"}), } } - RETURN_TYPES = ("CONDITIONING", "STRING", "STRING", "STRING") - RETURN_NAMES = ("positive", "styled_prompt", "resolved_style_id", "resolved_style_meta") + RETURN_TYPES = ("CONDITIONING", "STRING") + RETURN_NAMES = ("positive", "styled_prompt") FUNCTION = "encode" CATEGORY = "PromptStyler" @@ -73,85 +234,41 @@ class PromptStylerConditioning: template_variant: str, style_id_override: str, text_encoder, - selection_mode: str, - style_search: str, - category_hint: str, - tag_hint: str, - style_strength: str, - dedupe_mode: str, - overlay_style_id: str, - on_missing_style: str, ): if text_encoder is None: raise RuntimeError("ERROR: text_encoder input is invalid: None") prompt = prompt or "" - chosen_style = None - overlay_style = None - resolved_style_id = "" - applied_variant = DEFAULT_VARIANT - error = "" - prompt_details: Dict[str, Any] = {} if not apply_style: styled_prompt = prompt else: - library = get_cached_style_library(load_policy=LOAD_POLICY_LENIENT) - try: - chosen_style = resolve_style( - library, - selection_mode=selection_mode, - choice=style, - style_id_override=style_id_override, - style_search=style_search, - category_hint=category_hint, - tag_hint=tag_hint, - ) - resolved_style_id = chosen_style.id - except StyleLibraryError as exc: - if on_missing_style != "passthrough": - raise ValueError(str(exc)) - error = str(exc) - styled_prompt = prompt - chosen_style = None + styles, by_id, _choices = _get_style_library() + + style_id_override = (style_id_override or "").strip() + if style_id_override: + chosen = by_id.get(style_id_override) + if chosen is None: + raise ValueError(f"Unknown style_id_override: {style_id_override}") else: - try: - overlay_style = resolve_overlay_style(library, overlay_style_id) - except StyleLibraryError as exc: - if on_missing_style != "passthrough": - raise ValueError(str(exc)) - error = str(exc) - overlay_style = None + chosen = _style_by_choice(styles, style) + if chosen is None: + raise ValueError("No style selected.") - styled_prompt, prompt_details = compose_prompt( - prompt, - chosen_style, - template_variant=template_variant, - style_strength=style_strength, - dedupe_mode=dedupe_mode, - overlay_style=overlay_style, - ) - applied_variant = str(prompt_details.get("variant", DEFAULT_VARIANT)) + if template_variant == "flux_2_klein" and (chosen.flux_prefix.strip() or chosen.flux_suffix.strip()): + styled_prompt = _norm_space(" ".join([prompt, chosen.flux_prefix, chosen.flux_suffix])) + else: + sep = ", " + prefix_phrases = _split_phrases(chosen.prefix, sep=sep) + prompt_phrases = _split_phrases(prompt, sep=sep) + suffix_phrases = _split_phrases(chosen.suffix, sep=sep) - resolved_style_meta = make_style_meta( - chosen_style=chosen_style, - overlay_style=overlay_style, - requested_variant=template_variant, - applied_variant=applied_variant, - selection_mode=selection_mode, - style_search=style_search, - category_hint=category_hint, - tag_hint=tag_hint, - style_strength=style_strength, - dedupe_mode=dedupe_mode, - on_missing_style=on_missing_style, - prompt_details=prompt_details, - error=error, - ) + phrases = _dedupe_phrases(prefix_phrases + prompt_phrases + suffix_phrases) + styled_prompt = sep.join([p for p in phrases if p]) tokens = text_encoder.tokenize(styled_prompt) conditioning = text_encoder.encode_from_tokens_scheduled(tokens) - return (conditioning, styled_prompt, resolved_style_id, resolved_style_meta) + return (conditioning, styled_prompt) NODE_CLASS_MAPPINGS = { @@ -160,4 +277,4 @@ NODE_CLASS_MAPPINGS = { NODE_DISPLAY_NAME_MAPPINGS = { "PromptStylerConditioning": "PromptStyler: Prompt -> Conditioning (Style Picker)", -} +} \ No newline at end of file diff --git a/style_library.py b/style_library.py index 2c12570..42ae327 100644 --- a/style_library.py +++ b/style_library.py @@ -476,6 +476,25 @@ def style_by_choice(styles: Sequence[StyleTemplate], choice: str) -> Optional[St return None +def resolve_style_legacy( + library: StyleLibrary, + *, + choice: str, + style_id_override: str, +) -> StyleTemplate: + style_id_override = (style_id_override or "").strip() + if style_id_override: + chosen = library.by_id.get(style_id_override) + if chosen is None: + raise StyleLibraryError(f"Unknown style_id_override: {style_id_override}") + return chosen + + chosen = style_by_choice(library.styles, choice) + if chosen is None: + raise StyleLibraryError("No style selected.") + return chosen + + def parse_tag_hint(value: str) -> Tuple[str, ...]: if not value: return () @@ -731,6 +750,35 @@ def compose_prompt( } +def compose_prompt_legacy( + prompt: str, + style: StyleTemplate, + *, + template_variant: str, +) -> Tuple[str, Dict[str, Any]]: + prompt = prompt or "" + applied_variant, prefix, suffix = style.variant_prompt(template_variant) + + if applied_variant != DEFAULT_VARIANT: + styled_prompt = norm_space(" ".join(part for part in (prompt, prefix, suffix) if part)) + return styled_prompt, { + "variant": applied_variant, + "base_prefix_phrases": [], + "base_suffix_phrases": [], + } + + prefix_phrases = split_phrases(style.prefix) + prompt_phrases = split_phrases(prompt) + suffix_phrases = split_phrases(style.suffix) + phrases = dedupe_phrases(prefix_phrases + prompt_phrases + suffix_phrases) + styled_prompt = DEFAULT_PHRASE_SEPARATOR.join(phrase for phrase in phrases if phrase) + return styled_prompt, { + "variant": DEFAULT_VARIANT, + "base_prefix_phrases": prefix_phrases, + "base_suffix_phrases": suffix_phrases, + } + + def is_color_grade_style(style: StyleTemplate) -> bool: return style.category.startswith("Color Grade") diff --git a/styles/packs/32_print_reprographic.json b/styles/packs/32_print_reprographic.json new file mode 100644 index 0000000..b10c010 --- /dev/null +++ b/styles/packs/32_print_reprographic.json @@ -0,0 +1,285 @@ +{ + "version": 1, + "styles": [ + { + "id": "repro_mimeograph_duplication", + "name": "Reprographic: Mimeograph Duplication", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, mimeograph duplication, stencil master, inked drum texture, duplicated sheets", + "suffix": "slight misregistration, inky density shifts, porous paper texture, office-print rhythm, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mimeograph duplication with stencil-master imperfections. Lighting: flat even light preserving paper and ink density variation. Texture: inked drum transfer, porous paper, and repeated-sheet inconsistency. Key cues: mimeograph duplication, stencil master, inked drum texture, duplicated sheets. Finish cues: slight misregistration, inky density shifts, porous paper texture, office-print rhythm. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "mimeograph", + "print" + ] + }, + { + "id": "repro_spirit_duplicator_copy", + "name": "Reprographic: Spirit Duplicator", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, spirit duplicator copy, purple aniline tones, soft duplicate texturing, school-office print", + "suffix": "lavender cast, soft edges, faded pressure transfer, paper softness, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: spirit-duplicator copy with characteristic purple cast. Lighting: flat diffuse light that keeps the faded duplicate texture legible. Texture: soft transfer edges, pale dye density, and absorbent paper. Key cues: spirit duplicator copy, purple aniline tones, soft duplicate texturing, school-office print. Finish cues: lavender cast, soft edges, faded pressure transfer, paper softness. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "spirit_duplicator", + "print" + ] + }, + { + "id": "repro_diazo_blueprint", + "name": "Reprographic: Diazo Blueprint", + "category": "Photography/Alt Process", + "default": { + "prefix": "cyanotype print, blueprint blue, pale white linework, coated paper texture, graphic plan aesthetic", + "suffix": "paper grain, soft process fading, crisp line edges, matte coated sheet, controlled contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: cyanotype-like blueprint print with pale linework on deep blue paper. Lighting: flat even light preserving paper grain and line clarity. Texture: matte coated paper, soft process fading, and crisp pale lines. Key cues: blueprint blue, pale white linework, coated paper texture, graphic plan aesthetic. Finish cues: paper grain, soft process fading, crisp line edges, matte coated sheet. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "diazo", + "blueprint" + ] + }, + { + "id": "repro_whiteprint_copy", + "name": "Reprographic: Whiteprint Copy", + "category": "Photography/Alt Process", + "default": { + "prefix": "whiteprint aesthetic, pale paper ground, soft blue linework, engineering-print look, matte sheet texture", + "suffix": "fine paper grain, faint blue tint, clean line edges, document paper wear, restrained contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: whiteprint-style reproduction with blue linework on pale paper. Lighting: neutral even light preserving line clarity and sheet texture. Texture: matte paper, faint blue tint, and lightly worn print edges. Key cues: pale paper ground, soft blue linework, engineering-print look, matte sheet texture. Finish cues: fine paper grain, faint blue tint, clean line edges, document paper wear. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "whiteprint", + "technical_copy" + ] + }, + { + "id": "repro_offset_litho_misregistration", + "name": "Reprographic: Offset Misregistration", + "category": "Graphic Design", + "default": { + "prefix": "offset print look, slight CMYK drift, layered overprint color, poster ink texture, graphic print surface", + "suffix": "registration drift, ink overlap edges, paper tooth, press imperfection texture, bold printed contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: offset print with slight CMYK misregistration and overprinted color layers. Lighting: flat print-preview light with minimal shading. Texture: paper tooth, ink overlap edges, and gentle press drift. Key cues: offset print look, slight CMYK drift, layered overprint color, poster ink texture. Finish cues: registration drift, ink overlap edges, paper tooth, press imperfection texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "offset", + "graphic" + ] + }, + { + "id": "repro_newsprint_halftone", + "name": "Reprographic: Newsprint Halftone", + "category": "Graphic Design", + "default": { + "prefix": "newsprint print look, coarse halftone dots, absorbent paper stock, editorial print texture, monochrome or limited color", + "suffix": "dot gain, soft ink spread, paper fuzz, cheap stock texture, gritty printed contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: newsprint reproduction with coarse halftone dots and absorbent paper texture. Lighting: flat editorial light keeping dot structure readable. Texture: dot gain, soft ink spread, and cheap stock fuzz. Key cues: coarse halftone dots, absorbent paper stock, editorial print texture, limited-color print. Finish cues: dot gain, soft ink spread, paper fuzz, cheap stock texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "newsprint", + "halftone" + ] + }, + { + "id": "repro_xerox_zine_photocopy", + "name": "Reprographic: Xerox Zine Photocopy", + "category": "Graphic Design", + "default": { + "prefix": "photocopy zine aesthetic, stark black toner, rough collage print, DIY copy-art texture, matte office paper", + "suffix": "toner speckle, edge shadowing, paper curl, rough copy texture, gritty contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: photocopy zine print with stark black toner and rough copy-art texture. Lighting: flat copy-table light with no dramatic shading. Texture: toner speckle, edge shadowing, and matte office paper curl. Key cues: photocopy zine aesthetic, stark black toner, rough collage print, DIY copy-art texture. Finish cues: toner speckle, edge shadowing, paper curl, rough copy texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "photocopy", + "zine" + ] + }, + { + "id": "repro_carbon_copy_manifold", + "name": "Reprographic: Carbon Copy Manifold", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, carbon copy manifold, pressure transfer typing, duplicate form, ghosted text impression", + "suffix": "soft duplicate offset, paper stack pressure marks, form-stock texture, typed imprint feel, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: carbon-copy manifold form with pressure-transferred duplicate impression. Lighting: neutral even light revealing paper stack pressure and duplicate offset. Texture: soft transfer, form-stock grain, and faint stacked-sheet marks. Key cues: carbon copy manifold, pressure transfer typing, duplicate form, ghosted text impression. Finish cues: soft duplicate offset, paper stack pressure marks, form-stock texture, typed imprint feel. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "carbon_copy", + "office_print" + ] + }, + { + "id": "repro_contact_sheet_proof", + "name": "Reprographic: Contact Sheet Proof", + "category": "Photography/Alt Process", + "default": { + "prefix": "contact-sheet darkroom print, small photo borders, glossy proof paper, analog print-sheet aesthetic", + "suffix": "glossy paper sheen, narrow frame borders, archival print texture, soft darkroom proof feel" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: darkroom contact-sheet print with small bordered frames and glossy proof paper. Lighting: soft even light preserving paper sheen and border traces. Texture: glossy proof paper, archival print surface, and subtle frame spacing. Key cues: contact-sheet darkroom print, small photo borders, glossy proof paper, analog print-sheet aesthetic. Finish cues: glossy paper sheen, narrow frame borders, archival print texture, soft darkroom proof feel. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "contact_sheet", + "analog_print" + ] + }, + { + "id": "repro_rotogravure_ink_pattern", + "name": "Reprographic: Rotogravure Ink Pattern", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, rotogravure print, copper-cell ink pattern, smooth tonal reproduction, press cylinder texture", + "suffix": "fine cell grain, velvety darks, printed paper texture, high-volume press character, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: rotogravure reproduction with smooth tonal printing and fine cell patterning. Lighting: flat print-preview light preserving tonal reproduction and cell grain. Texture: velvety darks, fine gravure grain, and coated paper response. Key cues: rotogravure print, copper-cell ink pattern, smooth tonal reproduction, press cylinder texture. Finish cues: fine cell grain, velvety darks, printed paper texture, high-volume press character. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "rotogravure", + "print" + ] + }, + { + "id": "repro_cmyk_registration_proof", + "name": "Reprographic: CMYK Registration Proof", + "category": "Graphic Design", + "default": { + "prefix": "CMYK proof print, layered process color, slight registration drift, print-shop proof texture, offset ink surface", + "suffix": "ink alignment variation, paper tooth, printed color layering, proof-sheet texture, clean graphic contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: CMYK proof print with layered process color and slight registration drift. Lighting: neutral inspection light with minimal glare. Texture: paper tooth, printed color layering, and subtle alignment variation. Key cues: CMYK proof print, layered process color, slight registration drift, print-shop proof texture. Finish cues: ink alignment variation, paper tooth, printed color layering, proof-sheet texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "cmyk", + "proof" + ] + }, + { + "id": "repro_thermographic_raised_ink", + "name": "Reprographic: Thermographic Raised Ink", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, thermographic raised ink, powder-fused lettering, slight gloss, printed stationery", + "suffix": "raised ink relief, subtle sheen, paper texture, formal print finish, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: thermographic print with powder-fused raised ink. Lighting: soft raking light revealing slight relief and glossy edges. Texture: raised lettering, subtle sheen, and fine stationery stock. Key cues: thermographic raised ink, powder-fused lettering, slight gloss, printed stationery. Finish cues: raised ink relief, subtle sheen, paper texture, formal print finish. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "thermography", + "raised_ink" + ] + }, + { + "id": "repro_rubber_stamp_overprint", + "name": "Reprographic: Rubber Stamp Overprint", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, rubber stamp overprint, layered ink stamps, imperfect repeat, manual registration", + "suffix": "ink pooling, stamp edge chatter, paper tooth, hand-pressed irregularity, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: rubber-stamped overprint with imperfect manual registration. Lighting: flat diffuse light preserving ink pooling and stamp edge chatter. Texture: hand-pressed irregularity, paper tooth, and layered ink density. Key cues: rubber stamp overprint, layered ink stamps, imperfect repeat, manual registration. Finish cues: ink pooling, stamp edge chatter, paper tooth, hand-pressed irregularity. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "rubber_stamp", + "overprint" + ] + }, + { + "id": "repro_dot_gain_press_sheet", + "name": "Reprographic: Dot Gain Press Sheet", + "category": "Graphic Design", + "default": { + "prefix": "screened print texture, dot gain, soft ink spread, absorbent press paper, calibration-print look", + "suffix": "softened dot edges, paper absorbency, density variation, press-sheet texture, matte printed surface" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: screened print showing dot gain and soft ink spread on absorbent paper. Lighting: neutral inspection light that keeps screened texture readable. Texture: softened dot edges, density variation, and matte press paper. Key cues: screened print texture, dot gain, soft ink spread, absorbent press paper. Finish cues: softened dot edges, paper absorbency, density variation, press-sheet texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "dot_gain", + "press" + ] + } + ] +} diff --git a/styles/packs/36_mixed_media.json b/styles/packs/36_mixed_media.json index baf69ec..f949815 100644 --- a/styles/packs/36_mixed_media.json +++ b/styles/packs/36_mixed_media.json @@ -1,6 +1,278 @@ { "version": 1, "styles": [ + { + "id": "mixed_acrylic_sgraffito_ground", + "name": "Acrylic Sgraffito Ground", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, acrylic sgraffito, scraped paint layers, revealed underpainting, layered acrylic ground", + "suffix": "incised grooves, color reveal, matte paint texture, layered scraping marks, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media acrylic surface worked with sgraffito scraping. Lighting: soft raking light that catches incised grooves and revealed color layers. Texture: matte acrylic, scraped channels, and exposed underpainting. Key cues: acrylic sgraffito, scraped paint layers, revealed underpainting, layered acrylic ground. Finish cues: incised grooves, color reveal, matte paint texture, layered scraping marks. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "sgraffito", + "acrylic" + ] + }, + { + "id": "mixed_assemblage_artwork", + "name": "Assemblage Artwork", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, assemblage, found objects, mixed materials, handcrafted", + "suffix": "tactile texture, rough surfaces, layered depth, high detail, paper grain, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: assemblage artwork built from found objects and mixed materials. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: rough surfaces, layered depth, tactile materials. Key cues: assemblage, found objects, mixed materials, handcrafted. Finish cues: tactile texture, rough surfaces, layered depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_cyanotype_print_analog", + "name": "Cyanotype Print (Analog)", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, cyanotype print, blue monochrome, sun print, paper texture", + "suffix": "grain, chemical texture, vintage print, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: analog cyanotype print on paper. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Mood: minimal, photographic, deep blue. Key cues: cyanotype print, blue monochrome, sun print, paper texture. Finish cues: grain, chemical texture, vintage print. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_decollage_poster_peel", + "name": "Decollage Poster Peel", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, decollage poster peel, torn poster layers, weathered paste, exposed underlayers", + "suffix": "ragged tears, glue residue, paper strata, urban paper texture, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media decollage with peeled poster layers and exposed strata. Lighting: flat daylight that keeps the layered tears and residue readable. Texture: ragged tears, glue residue, and stacked paper history. Key cues: decollage poster peel, torn poster layers, weathered paste, exposed underlayers. Finish cues: ragged tears, glue residue, paper strata, urban paper texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "decollage", + "paper" + ] + }, + { + "id": "mixed_encaustic_collage", + "name": "Encaustic Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, encaustic collage, translucent wax layers, embedded paper fragments, scraped surface", + "suffix": "wax bloom, subtle crackle, tactile depth, layered translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media encaustic collage with embedded paper fragments. Lighting: soft gallery light with gentle falloff and mild surface sheen. Texture: translucent wax layers, scraped marks, and tactile depth. Key cues: encaustic collage, translucent wax layers, embedded paper fragments, scraped surface. Finish cues: wax bloom, subtle crackle, tactile depth, layered translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "encaustic", + "collage" + ] + }, + { + "id": "mixed_fabric_scrap_collage", + "name": "Fabric Scrap Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, fabric scrap collage, stitched textile fragments, raw edges, patchwork layering", + "suffix": "frayed fibers, cloth weave, stitched joins, soft tactile depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage assembled from layered textile scraps. Lighting: soft diffuse light revealing cloth weave and stitched joins. Texture: frayed fibers, raw edges, and patchwork depth. Key cues: fabric scrap collage, stitched textile fragments, raw edges, patchwork layering. Finish cues: frayed fibers, cloth weave, stitched joins, soft tactile depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "fabric", + "collage" + ] + }, + { + "id": "mixed_foil_leaf_overlay", + "name": "Foil Leaf Overlay", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, foil leaf overlay, metal leaf fragments, mixed surface, hand-applied shimmer", + "suffix": "broken foil edges, micro-reflections, adhesive texture, layered contrast, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media surface with hand-applied foil leaf overlays. Lighting: controlled light that catches metallic fragments without blowing them out. Texture: broken foil edges, adhesive texture, and small reflective flashes. Key cues: foil leaf overlay, metal leaf fragments, mixed surface, hand-applied shimmer. Finish cues: broken foil edges, micro-reflections, adhesive texture, layered contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "foil", + "leaf" + ] + }, + { + "id": "mixed_frottage_rubbing_study", + "name": "Frottage Rubbing Study", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, frottage rubbing, found-surface textures, graphite transfer, pressure marks", + "suffix": "rubbed grain, uneven density, paper drag marks, tactile impressions, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media frottage study built from rubbed surface textures. Lighting: soft raking light that reveals paper tooth and rubbing variation. Texture: transferred grain, pressure marks, and uneven graphite density. Key cues: frottage rubbing, found-surface textures, graphite transfer, pressure marks. Finish cues: rubbed grain, uneven density, paper drag marks, tactile impressions. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "frottage", + "rubbing" + ] + }, + { + "id": "mixed_gel_medium_image_transfer", + "name": "Gel Medium Image Transfer", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel medium image transfer, lifted image layers, translucent medium, paper support", + "suffix": "soft edge lifting, adhesive sheen, surface irregularities, layered translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media gel-medium transfer with lifted translucent image layers. Lighting: soft gallery light with enough angle to reveal transfer texture. Texture: adhesive sheen, edge lifting, and layered translucent film. Key cues: gel medium image transfer, lifted image layers, translucent medium, paper support. Finish cues: soft edge lifting, adhesive sheen, surface irregularities, layered translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "transfer", + "acrylic" + ] + }, + { + "id": "mixed_gel_plate_monoprint", + "name": "Gel Plate Monoprint", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel plate monoprint, ink layers, brayer texture, printmaking", + "suffix": "paper grain, ink transfer artifacts, handmade print, high detail, tactile texture, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: gel plate monoprint with layered ink textures. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: ink transfer artifacts, paper grain, layered prints. Key cues: gel plate monoprint, ink layers, brayer texture, printmaking. Finish cues: paper grain, ink transfer artifacts, handmade print. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_gesso_charcoal_board", + "name": "Gesso and Charcoal Board", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gesso ground, charcoal marks, chalky board surface, erased highlights", + "suffix": "powdery smudge, toothy ground, lifted erasures, matte surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media board with gesso ground and charcoal drawing. Lighting: soft studio light revealing chalky tooth and erased highlights. Texture: powdery charcoal, matte gesso, and lifted erasure marks. Key cues: gesso ground, charcoal marks, chalky board surface, erased highlights. Finish cues: powdery smudge, toothy ground, lifted erasures, matte surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "gesso", + "charcoal" + ] + }, + { + "id": "mixed_handmade_paper_pulp_relief", + "name": "Handmade Paper Pulp Relief", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, handmade paper pulp, cast relief, fibrous surface, pressed pulp forms", + "suffix": "deckled edges, fiber clumps, raised paper relief, soft shadow depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media handmade paper relief with cast pulp forms. Lighting: soft raking light to reveal paper relief and deckled edges. Texture: fibrous pulp, soft relief shadows, and visible paper formation. Key cues: handmade paper pulp, cast relief, fibrous surface, pressed pulp forms. Finish cues: deckled edges, fiber clumps, raised paper relief, soft shadow depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "paper", + "relief" + ] + }, + { + "id": "mixed_mixed_media_acrylic_ink", + "name": "Mixed Media Acrylic + Ink", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, mixed media, acrylic paint, ink linework, layered marks", + "suffix": "texture paste, splatter, handmade imperfections, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media artwork combining acrylic paint and ink linework. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: layered paint, ink marks, tactile surface. Key cues: mixed media, acrylic paint, ink linework, layered marks. Finish cues: texture paste, splatter, handmade imperfections. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_monoprint_collage", + "name": "Monoprint Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, monoprint collage, ink pull textures, layered cut paper, one-off print fragments", + "suffix": "brayer texture, ink ghosts, paper layering, soft registration drift, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage assembled from monoprint pulls and paper fragments. Lighting: soft gallery light keeping ink texture and layered edges visible. Texture: brayer marks, ink ghosts, and collage depth. Key cues: monoprint collage, ink pull textures, layered cut paper, one-off print fragments. Finish cues: brayer texture, ink ghosts, paper layering, soft registration drift. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "monoprint", + "collage" + ] + }, { "id": "mixed_paper_collage_mixed_media", "name": "Paper Collage (Mixed Media)", @@ -38,75 +310,63 @@ ] }, { - "id": "mixed_mixed_media_acrylic_ink", - "name": "Mixed Media Acrylic + Ink", + "id": "mixed_resin_sealed_collage", + "name": "Resin-Sealed Collage", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, mixed media, acrylic paint, ink linework, layered marks", - "suffix": "texture paste, splatter, handmade imperfections, high detail, tactile texture, paper grain, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, resin-sealed collage, encapsulated layers, embedded fragments, glossy surface", + "suffix": "glass-like sheen, suspended depth, trapped inclusions, smooth surface reflections, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: mixed media artwork combining acrylic paint and ink linework. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: layered paint, ink marks, tactile surface. Key cues: mixed media, acrylic paint, ink linework, layered marks. Finish cues: texture paste, splatter, handmade imperfections. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: mixed media collage sealed under a glossy resin layer. Lighting: controlled light with smooth reflections and visible embedded depth. Texture: glass-like sheen, suspended fragments, and encapsulated layers. Key cues: resin-sealed collage, encapsulated layers, embedded fragments, glossy surface. Finish cues: glass-like sheen, suspended depth, trapped inclusions, smooth surface reflections. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" + "mixed_media", + "resin", + "collage" ] }, { - "id": "mixed_gel_plate_monoprint", - "name": "Gel Plate Monoprint", + "id": "mixed_sand_pigment_ground", + "name": "Sand and Pigment Ground", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel plate monoprint, ink layers, brayer texture, printmaking", - "suffix": "paper grain, ink transfer artifacts, handmade print, high detail, tactile texture, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, sand and pigment ground, granular surface, earth pigments, rough substrate", + "suffix": "gritty relief, dry brush drag, mineral texture, matte layered surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: gel plate monoprint with layered ink textures. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: ink transfer artifacts, paper grain, layered prints. Key cues: gel plate monoprint, ink layers, brayer texture, printmaking. Finish cues: paper grain, ink transfer artifacts, handmade print. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: mixed media surface built from sanded ground and dry pigments. Lighting: raking light to reveal granular relief and dry brush drag. Texture: mineral grit, matte layering, and rough substrate variation. Key cues: sand and pigment ground, granular surface, earth pigments, rough substrate. Finish cues: gritty relief, dry brush drag, mineral texture, matte layered surface. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" + "mixed_media", + "sand", + "pigment" ] }, { - "id": "mixed_cyanotype_print_analog", - "name": "Cyanotype Print (Analog)", + "id": "mixed_scratchboard_ink_wash", + "name": "Scratchboard Ink Wash", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, cyanotype print, blue monochrome, sun print, paper texture", - "suffix": "grain, chemical texture, vintage print, high detail, tactile texture, paper grain, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, scratchboard, ink wash, scraped highlights, black ground", + "suffix": "incised lines, white reveal marks, ink pooling, high contrast surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: analog cyanotype print on paper. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Mood: minimal, photographic, deep blue. Key cues: cyanotype print, blue monochrome, sun print, paper texture. Finish cues: grain, chemical texture, vintage print. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: scratchboard mixed media with ink wash and scraped highlights. Lighting: controlled studio light emphasizing incised lines and contrast. Texture: sharp reveal marks, pooled ink, and a dense black ground. Key cues: scratchboard, ink wash, scraped highlights, black ground. Finish cues: incised lines, white reveal marks, ink pooling, high contrast surface. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" - ] - }, - { - "id": "mixed_assemblage_artwork", - "name": "Assemblage Artwork", - "category": "Mixed Media", - "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, assemblage, found objects, mixed materials, handcrafted", - "suffix": "tactile texture, rough surfaces, layered depth, high detail, paper grain, cohesive composition" - }, - "models": { - "flux_2_klein": { - "prefix": "", - "suffix": "Style: assemblage artwork built from found objects and mixed materials. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: rough surfaces, layered depth, tactile materials. Key cues: assemblage, found objects, mixed materials, handcrafted. Finish cues: tactile texture, rough surfaces, layered depth. Instruction: preserve the user prompt subject and add only stylistic cues." - } - }, - "tags": [ - "mixed_media" + "mixed_media", + "scratchboard", + "ink" ] }, { @@ -126,6 +386,106 @@ "tags": [ "mixed_media" ] + }, + { + "id": "mixed_thread_stitched_paper_collage", + "name": "Thread-Stitched Paper Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, thread-stitched paper collage, pierced paper, visible seams, layered cut paper", + "suffix": "thread relief, needle holes, paper grain, hand-sewn irregularity, high detail, tactile texture, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media paper collage held together with visible stitched seams. Lighting: soft raking light that reveals thread relief and pierced paper. Texture: needle holes, paper grain, and hand-sewn irregularity. Key cues: thread-stitched paper collage, pierced paper, visible seams, layered cut paper. Finish cues: thread relief, needle holes, paper grain, hand-sewn irregularity. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "thread", + "paper" + ] + }, + { + "id": "mixed_tissue_paper_layering", + "name": "Tissue Paper Layering", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, tissue paper layering, translucent color veils, wrinkled paper films, stacked fragments", + "suffix": "soft wrinkles, color veiling, feathered overlap edges, lightweight translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media layering built from translucent tissue fragments. Lighting: soft top light preserving the color veils and overlap shadows. Texture: tissue wrinkles, feathered edges, and lightweight translucency. Key cues: tissue paper layering, translucent color veils, wrinkled paper films, stacked fragments. Finish cues: soft wrinkles, color veiling, feathered overlap edges, lightweight translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "tissue_paper", + "layered" + ] + }, + { + "id": "mixed_vellum_overlay_assemblage", + "name": "Vellum Overlay Assemblage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, vellum overlays, translucent sheets, stacked drawing layers, soft veiling", + "suffix": "semi-transparent layers, paper curl, subtle overlap shadows, airy depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media assemblage built from translucent vellum overlays. Lighting: soft top light creating delicate overlap shadows between sheets. Texture: vellum curl, semi-transparent stacking, and layered veiling. Key cues: vellum overlays, translucent sheets, stacked drawing layers, soft veiling. Finish cues: semi-transparent layers, paper curl, subtle overlap shadows, airy depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "vellum", + "assemblage" + ] + }, + { + "id": "mixed_wax_resist_layers", + "name": "Wax Resist Mixed Media", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, wax resist, layered inks, masked paper, drawn resist lines", + "suffix": "resist crackle, ink pooling, paper tooth, layered transparency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media wax-resist artwork with masked lines and layered inks. Lighting: soft diffuse light that keeps paper texture and layered transparencies visible. Texture: resist crackle, pooled pigment, and masked edge variation. Key cues: wax resist, layered inks, masked paper, drawn resist lines. Finish cues: resist crackle, ink pooling, paper tooth, layered transparency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "wax_resist", + "layered" + ] + }, + { + "id": "mixed_xerox_transfer_collage", + "name": "Xerox Transfer Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, xerox transfer collage, toner transfer, distressed paper, layered copy fragments", + "suffix": "toner wear, uneven transfer, matte paper texture, zine-like edges, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage built from toner-transfer copy fragments. Lighting: flat diffuse light that keeps paper layers readable. Texture: toner wear, distressed edges, and matte paper grain. Key cues: xerox transfer collage, toner transfer, distressed paper, layered copy fragments. Finish cues: toner wear, uneven transfer, matte paper texture, zine-like edges. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "transfer", + "photocopy" + ] } ] } diff --git a/styles/packs/42_decorative_arts_material_processes.json b/styles/packs/42_decorative_arts_material_processes.json new file mode 100644 index 0000000..1b82eab --- /dev/null +++ b/styles/packs/42_decorative_arts_material_processes.json @@ -0,0 +1,325 @@ +{ + "version": 1, + "styles": [ + { + "id": "decor_copper_foil_stained_glass", + "name": "Copper Foil Stained Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, copper foil stained glass, soldered seams, colored glass pieces, translucent mosaic", + "suffix": "backlit glow, solder line detail, glass texture, jewel-toned translucency, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: copper-foil stained glass with soldered seams and translucent color. Lighting: backlit illumination creating jewel-like glow through the glass. Texture: solder line detail, subtle rippled glass, and luminous color panels. Key cues: copper foil stained glass, soldered seams, colored glass pieces, translucent mosaic. Finish cues: backlit glow, solder line detail, glass texture, jewel-toned translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "foil" + ] + }, + { + "id": "decor_pate_de_verre_glass", + "name": "Pate de Verre Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pate de verre glass, granular cast glass, soft translucency, powdered glass color", + "suffix": "frosted surface, subtle translucence, cast texture, powder-soft color, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pate de verre glass with softly cast translucent color. Lighting: soft transmitted light with gentle highlights on frosted surfaces. Texture: granular cast glass, matte translucency, and powder-soft color depth. Key cues: pate de verre glass, granular cast glass, soft translucency, powdered glass color. Finish cues: frosted surface, subtle translucence, cast texture, powder-soft color. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "cast" + ] + }, + { + "id": "decor_slumped_kiln_formed_glass", + "name": "Slumped Kiln-Formed Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, slumped kiln-formed glass, flowed glass contours, heat-shaped form, smooth translucent surface", + "suffix": "soft edge rounding, subtle thickness variation, glass sheen, formed contour shadows, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: kiln-formed slumped glass with heat-shaped contours. Lighting: controlled studio light emphasizing contour thickness and translucency. Texture: smooth glass sheen, softened edges, and gentle thickness variation. Key cues: slumped kiln-formed glass, flowed glass contours, heat-shaped form, smooth translucent surface. Finish cues: soft edge rounding, subtle thickness variation, glass sheen, formed contour shadows. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "kiln_formed" + ] + }, + { + "id": "decor_raku_crackle_ceramic", + "name": "Raku Crackle Ceramic", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, raku ceramic, crackle glaze, smoke-fired surface, irregular luster", + "suffix": "black crack lines, smoky glaze variation, porous clay texture, unpredictable firing marks, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: raku-fired ceramic with crackled glaze and smoky variation. Lighting: soft studio light revealing crackle networks and firing irregularities. Texture: black crack lines, porous clay, and unpredictable glaze shifts. Key cues: raku ceramic, crackle glaze, smoke-fired surface, irregular luster. Finish cues: black crack lines, smoky glaze variation, porous clay texture, unpredictable firing marks. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "raku" + ] + }, + { + "id": "decor_pit_fired_ceramic", + "name": "Pit-Fired Ceramic", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pit-fired ceramic, fire clouds, smoke marks, unglazed clay surface", + "suffix": "burnished sheen, smoke staining, earthy mineral variation, handmade surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pit-fired ceramic with smoke clouds and earthy firing marks. Lighting: warm studio light showing burnished highlights and smoke variation. Texture: unglazed clay, mineral staining, and atmospheric fire marking. Key cues: pit-fired ceramic, fire clouds, smoke marks, unglazed clay surface. Finish cues: burnished sheen, smoke staining, earthy mineral variation, handmade surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "pit_fired" + ] + }, + { + "id": "decor_celadon_glaze_stoneware", + "name": "Celadon Glaze Stoneware", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, celadon glaze, pale green stoneware, pooled glaze, refined ceramic surface", + "suffix": "glaze pooling, cool translucence, soft crackle, subtle sheen, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: celadon-glazed stoneware with cool translucent pooling. Lighting: soft controlled light preserving glaze depth and subtle crackle. Texture: pooled glaze, pale green translucence, and refined ceramic sheen. Key cues: celadon glaze, pale green stoneware, pooled glaze, refined ceramic surface. Finish cues: glaze pooling, cool translucence, soft crackle, subtle sheen. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "celadon" + ] + }, + { + "id": "decor_crystalline_glaze_porcelain", + "name": "Crystalline Glaze Porcelain", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, crystalline glaze porcelain, starburst crystal blooms, glossy fired surface, porcelain body", + "suffix": "crystal clusters, gloss reflections, glaze depth, smooth porcelain surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: crystalline-glazed porcelain with visible starburst crystal blooms. Lighting: controlled highlights emphasizing glossy glaze and crystal structure. Texture: smooth porcelain, glossy depth, and flower-like crystal growth. Key cues: crystalline glaze porcelain, starburst crystal blooms, glossy fired surface, porcelain body. Finish cues: crystal clusters, gloss reflections, glaze depth, smooth porcelain surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "crystalline_glaze" + ] + }, + { + "id": "decor_mishima_inlay_pottery", + "name": "Mishima Inlay Pottery", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, mishima inlay pottery, incised lines, contrasting slip inlay, refined ceramic pattern", + "suffix": "filled linework, matte glaze, fine carving detail, quiet surface contrast, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: Mishima pottery with incised patterns filled by contrasting slip. Lighting: soft studio light revealing carved linework and matte ceramic surface. Texture: filled incisions, quiet glaze, and fine carved detail. Key cues: mishima inlay pottery, incised lines, contrasting slip inlay, refined ceramic pattern. Finish cues: filled linework, matte glaze, fine carving detail, quiet surface contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "inlay" + ] + }, + { + "id": "decor_sgraffito_pottery", + "name": "Sgraffito Pottery", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, sgraffito pottery, scratched slip decoration, revealed clay body, layered ceramic surface", + "suffix": "incised motifs, matte slip texture, fine carving marks, earthy fired surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: sgraffito-decorated pottery with scratched slip and revealed clay. Lighting: soft angled light that catches carved ceramic marks. Texture: matte slip, incised motifs, and an earthy fired surface. Key cues: sgraffito pottery, scratched slip decoration, revealed clay body, layered ceramic surface. Finish cues: incised motifs, matte slip texture, fine carving marks, earthy fired surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "sgraffito" + ] + }, + { + "id": "decor_hammered_copper_patina", + "name": "Hammered Copper Patina", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, hammered copper, hand-raised metal surface, aged patina, warm metallic tones", + "suffix": "hammer marks, oxidized color shifts, soft metallic sheen, worked metal relief, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: hammered copper decorative metalwork with aged patina. Lighting: warm studio light emphasizing hammered relief and patinated color shifts. Texture: hand-raised dimples, oxidized surface, and soft metallic sheen. Key cues: hammered copper, hand-raised metal surface, aged patina, warm metallic tones. Finish cues: hammer marks, oxidized color shifts, soft metallic sheen, worked metal relief. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "metal", + "patina" + ] + }, + { + "id": "decor_repousse_metalwork", + "name": "Repousse Metalwork", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, repousse metalwork, raised relief ornament, chased detailing, worked sheet metal", + "suffix": "relief contours, fine chased lines, aged metallic finish, ornamental depth, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: repousse metalwork with raised relief and chased detail. Lighting: directional studio light to reveal relief contours and fine tooling. Texture: raised ornament, chased lines, and aged metallic finish. Key cues: repousse metalwork, raised relief ornament, chased detailing, worked sheet metal. Finish cues: relief contours, fine chased lines, aged metallic finish, ornamental depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "metal", + "repousse" + ] + }, + { + "id": "decor_guilloche_enamel", + "name": "Guilloche Enamel", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, guilloche enamel, engine-turned pattern, translucent enamel layer, radiating metal geometry", + "suffix": "subsurface pattern shimmer, gloss enamel finish, precise engraved rhythm, luxury surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: guilloche enamel over engine-turned metal patterning. Lighting: controlled highlights that reveal the pattern beneath translucent enamel. Texture: glossy enamel depth, precise engraved rhythm, and subsurface shimmer. Key cues: guilloche enamel, engine-turned pattern, translucent enamel layer, radiating metal geometry. Finish cues: subsurface pattern shimmer, gloss enamel finish, precise engraved rhythm, luxury surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "enamel", + "guilloche" + ] + }, + { + "id": "decor_acid_etched_glass", + "name": "Acid-Etched Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, acid-etched glass, frosted transparency, matte glass surface, ornamental etching", + "suffix": "soft diffusion, satin glass finish, etched motif edges, subtle translucence, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: acid-etched glass with frosted translucency and engraved motifs. Lighting: soft transmitted light with minimal glare to preserve the satin finish. Texture: matte frosted glass, subtle translucence, and etched boundaries. Key cues: acid-etched glass, frosted transparency, matte glass surface, ornamental etching. Finish cues: soft diffusion, satin glass finish, etched motif edges, subtle translucence. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "etched" + ] + }, + { + "id": "decor_cut_crystal_faceting", + "name": "Cut Crystal Faceting", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, cut crystal, faceted glass, prismatic refraction, precision cutting", + "suffix": "sharp facets, caustic sparkle, high clarity, polished reflections, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: cut crystal decorative glass with sharp faceting and prismatic sparkle. Lighting: crisp controlled highlights and small caustics across polished facets. Texture: sharp facet edges, high clarity, and jewel-like reflections. Key cues: cut crystal, faceted glass, prismatic refraction, precision cutting. Finish cues: sharp facets, caustic sparkle, high clarity, polished reflections. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "crystal" + ] + }, + { + "id": "decor_lost_wax_cast_bronze", + "name": "Lost-Wax Cast Bronze", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, lost-wax cast bronze, cast metal surface, hand-finished patina, sculptural metalwork", + "suffix": "cast texture, warm bronze highlights, subtle tooling marks, aged patina depth, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: lost-wax cast bronze with hand-finished patina. Lighting: warm directional light showing cast surface, tooling, and metallic depth. Texture: cast grain, hand-finished marks, and aged bronze patina. Key cues: lost-wax cast bronze, cast metal surface, hand-finished patina, sculptural metalwork. Finish cues: cast texture, warm bronze highlights, subtle tooling marks, aged patina depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "bronze", + "cast" + ] + }, + { + "id": "decor_pietra_dura_inlay", + "name": "Pietra Dura Stone Inlay", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pietra dura inlay, polished stone mosaic, hardstone floral inlay, precise stone fitting", + "suffix": "polished stone sheen, crisp inlay seams, rich mineral color, luxury surface detail, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pietra dura hardstone inlay with tightly fitted polished stone pieces. Lighting: soft controlled light revealing polished mineral surfaces and seam precision. Texture: crisp stone joins, polished sheen, and rich mineral color variation. Key cues: pietra dura inlay, polished stone mosaic, hardstone floral inlay, precise stone fitting. Finish cues: polished stone sheen, crisp inlay seams, rich mineral color, luxury surface detail. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "stone", + "inlay" + ] + } + ] +} diff --git a/styles/packs/43_digital_craft.json b/styles/packs/43_digital_craft.json new file mode 100644 index 0000000..b82fc73 --- /dev/null +++ b/styles/packs/43_digital_craft.json @@ -0,0 +1,245 @@ +{ + "version": 1, + "styles": [ + { + "id": "tech_exploded_cutaway_diagram", + "name": "Exploded Cutaway Diagram", + "category": "Technical", + "default": { + "prefix": "technical illustration, clean lines, precise geometry, exploded cutaway view, separated components, sectional clarity", + "suffix": "clean line hierarchy, crisp geometry, sectional detail, flat rendering, high legibility" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: technical cutaway illustration with separated components and crisp geometry. Lighting: flat even rendering with no dramatic shading. Composition: clear separations, sectional clarity, and measured structure. Key cues: exploded cutaway view, separated components, technical linework, precise geometry. Finish cues: clean line hierarchy, crisp geometry, sectional detail, flat rendering. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "cutaway", + "diagram" + ] + }, + { + "id": "tech_orthographic_projection_plate", + "name": "Orthographic Projection Plate", + "category": "Technical", + "default": { + "prefix": "technical line illustration, orthographic views, aligned geometry, drafting clarity, multiview structure", + "suffix": "clean projection lines, measured spacing, flat rendering, crisp technical linework, restrained contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: orthographic technical illustration with aligned multiview geometry. Lighting: flat drafting presentation with minimal tonal variation. Composition: measured spacing, crisp geometry, and projection clarity. Key cues: orthographic views, aligned geometry, drafting clarity, multiview structure. Finish cues: clean projection lines, measured spacing, flat rendering, crisp technical linework. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "orthographic", + "blueprint" + ] + }, + { + "id": "tech_patent_plate_diagram", + "name": "Patent Plate Diagram", + "category": "Technical", + "default": { + "prefix": "technical engraving style, fine drafting lines, archival patent aesthetic, precise mechanical illustration, paper grain", + "suffix": "fine linework, etched line texture, paper grain, restrained contrast, crisp technical detail" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: archival patent-style technical illustration with fine drafting lines and paper grain. Lighting: flat document light that keeps linework readable. Texture: etched line detail, paper grain, and restrained contrast. Key cues: technical engraving style, archival patent aesthetic, precise mechanical illustration, fine drafting lines. Finish cues: fine linework, etched line texture, paper grain, restrained contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "patent", + "diagram" + ] + }, + { + "id": "tech_section_elevation_drawing", + "name": "Section and Elevation Drawing", + "category": "Technical", + "default": { + "prefix": "technical architectural drawing, section cut hatching, elevation linework, measured geometry, clean drafting", + "suffix": "hatching clarity, precise line weights, crisp geometry, flat rendering, restrained document contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: architectural technical drawing with section hatching and elevation linework. Lighting: flat presentation emphasizing geometry and line-weight hierarchy. Composition: measured structure, clean hatch patterns, and crisp drafting. Key cues: section cut hatching, elevation linework, measured geometry, clean drafting. Finish cues: hatching clarity, precise line weights, crisp geometry, flat rendering. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "section", + "elevation" + ] + }, + { + "id": "vec_gradient_mesh_illustration", + "name": "Gradient Mesh Illustration", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat colors, clean shapes, crisp edges, smooth curves, gradient mesh vector, smooth tonal blends, scalable curves, clean vector shapes", + "suffix": "smooth color transitions, crisp bezier edges, clean layout, polished vector finish, consistent stroke weight, crisp edges, smooth curves" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: vector illustration built from gradient-mesh color transitions. Lighting: graphic flat-light treatment with emphasis on controlled tonal blending. Texture: none; clean scalable curves and polished vector edges. Key cues: gradient mesh vector, smooth tonal blends, scalable curves, clean vector shapes. Finish cues: smooth color transitions, crisp bezier edges, clean layout, polished vector finish. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "gradient_mesh", + "illustration" + ] + }, + { + "id": "vec_monoline_icon_system", + "name": "Monoline Icon System", + "category": "Vector", + "default": { + "prefix": "vector illustration, clean shapes, monoline forms, uniform stroke weight, modular geometry, flat graphic style", + "suffix": "consistent line weight, crisp curves, balanced spacing, polished vector edges, clean flat finish" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: monoline vector illustration with modular geometry and uniform stroke weight. Lighting: flat graphic treatment with no material shading. Composition: balanced spacing, crisp curves, and scalable clarity. Key cues: monoline forms, uniform stroke weight, modular geometry, flat graphic style. Finish cues: consistent line weight, crisp curves, balanced spacing, polished vector edges. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "icon", + "monoline" + ] + }, + { + "id": "vec_wayfinding_graphic_system", + "name": "Wayfinding Graphic System", + "category": "Vector", + "default": { + "prefix": "vector illustration, bold graphic symbols, flat colors, clean geometry, strong directional shapes, transit-graphic aesthetic", + "suffix": "high contrast clarity, clean alignment, modular spacing, crisp vector edges, polished flat finish" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: bold vector graphics with strong directional shapes and flat-color clarity. Lighting: flat design presentation with emphasis on readability. Composition: modular spacing, crisp geometry, and strong symbol silhouettes. Key cues: bold graphic symbols, clean geometry, strong directional shapes, transit-graphic aesthetic. Finish cues: high contrast clarity, clean alignment, modular spacing, crisp vector edges. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "wayfinding", + "infographic" + ] + }, + { + "id": "vec_flat_isometric_explainer", + "name": "Flat Isometric Explainer", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat isometric geometry, clean planes, simplified depth, crisp graphic shapes", + "suffix": "crisp isometric edges, controlled flat shadows, clean geometry, polished vector finish, restrained contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: flat isometric vector illustration with clean geometric depth. Lighting: minimal graphic shading with controlled flat shadows. Composition: tidy geometry, crisp edges, and scalable forms. Key cues: flat isometric geometry, clean planes, simplified depth, crisp graphic shapes. Finish cues: crisp isometric edges, controlled flat shadows, clean geometry, polished vector finish. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "isometric", + "diagram" + ] + }, + { + "id": "pix_one_bit_dithered_pixel", + "name": "One-Bit Dithered Pixel", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, one-bit pixel art, black and white dithering, high contrast sprite look, coarse pixel grid", + "suffix": "checker dither, crisp pixels, readable silhouette, hard-edged contrast, dithered shading, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: one-bit pixel art using black and white dithering only. Lighting: implied through dither pattern rather than gradients. Texture: coarse pixel grid, checker dithers, and hard-edged contrast. Key cues: one-bit pixel art, black and white dithering, high contrast sprite look, coarse pixel grid. Finish cues: checker dither, crisp pixels, readable silhouette, hard-edged contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "one_bit", + "dither" + ] + }, + { + "id": "pix_four_color_handheld_pixel", + "name": "Four-Color Handheld Pixel", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, four-color handheld pixel art, tiny tile shading, portable-screen look", + "suffix": "restricted tones, crisp pixels, readable forms, small-scale tile texture, dithered shading, readable silhouette, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: limited-palette handheld pixel art with only four tonal values. Lighting: implied with tiny tile shading and palette restriction. Texture: small pixel grid, restrained tones, and compact sprite readability. Key cues: four-color handheld pixel art, limited palette, tiny tile shading, portable-screen look. Finish cues: restricted tones, crisp pixels, readable forms, small-scale tile texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "handheld", + "limited_palette" + ] + }, + { + "id": "pix_isometric_sprite_sheet", + "name": "Isometric Sprite Sheet", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, isometric sprite sheet, tile-based game art, modular sprites, pixel grid alignment", + "suffix": "crisp pixels, modular repetition, readable silhouette, dithered shading, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: isometric sprite-sheet pixel art built from modular game tiles. Lighting: compact pixel shading supporting isometric form readability. Texture: crisp grid alignment, modular repetition, and dithered shading. Key cues: isometric sprite sheet, tile-based game art, modular sprites, pixel grid alignment. Finish cues: crisp pixels, modular repetition, readable silhouette, dithered shading. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "sprite_sheet", + "isometric" + ] + }, + { + "id": "pix_tilemap_interface", + "name": "Tilemap Interface", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, limited palette, crisp pixel grid, retro game overlay aesthetic, chunky interface framing, modular tiles", + "suffix": "sharp pixels, clean tile seams, limited tones, compact shading, readable silhouette, sprite clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: retro pixel-art overlay with chunky framing and modular tile structure. Lighting: flat pixel shading with palette-limited contrast. Texture: crisp grid alignment, clean tile seams, and sharp pixels. Key cues: retro game overlay aesthetic, chunky interface framing, modular tiles, crisp pixel grid. Finish cues: sharp pixels, clean tile seams, limited tones, compact shading. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "tilemap", + "interface" + ] + } + ] +} diff --git a/styles/styles_v1.json b/styles/styles_v1.json index 23dd70f..1d5ae4d 100644 --- a/styles/styles_v1.json +++ b/styles/styles_v1.json @@ -4027,6 +4027,286 @@ "sumi" ] }, + { + "id": "repro_mimeograph_duplication", + "name": "Reprographic: Mimeograph Duplication", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, mimeograph duplication, stencil master, inked drum texture, duplicated sheets", + "suffix": "slight misregistration, inky density shifts, porous paper texture, office-print rhythm, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mimeograph duplication with stencil-master imperfections. Lighting: flat even light preserving paper and ink density variation. Texture: inked drum transfer, porous paper, and repeated-sheet inconsistency. Key cues: mimeograph duplication, stencil master, inked drum texture, duplicated sheets. Finish cues: slight misregistration, inky density shifts, porous paper texture, office-print rhythm. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "mimeograph", + "print" + ] + }, + { + "id": "repro_spirit_duplicator_copy", + "name": "Reprographic: Spirit Duplicator", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, spirit duplicator copy, purple aniline tones, soft duplicate texturing, school-office print", + "suffix": "lavender cast, soft edges, faded pressure transfer, paper softness, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: spirit-duplicator copy with characteristic purple cast. Lighting: flat diffuse light that keeps the faded duplicate texture legible. Texture: soft transfer edges, pale dye density, and absorbent paper. Key cues: spirit duplicator copy, purple aniline tones, soft duplicate texturing, school-office print. Finish cues: lavender cast, soft edges, faded pressure transfer, paper softness. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "spirit_duplicator", + "print" + ] + }, + { + "id": "repro_diazo_blueprint", + "name": "Reprographic: Diazo Blueprint", + "category": "Photography/Alt Process", + "default": { + "prefix": "professional photography, realistic lighting, natural color rendition, coherent shadows, true-to-life textures, diazo blueprint, white lines on blue ground, ammonia process, technical reproduction", + "suffix": "paper grain, slight fading, high line clarity, plan-sheet texture, sharp focus, high detail, balanced exposure, fine texture detail, natural contrast, clean highlights" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: diazo blueprint reproduction with crisp white linework on blue ground. Lighting: flat even light emphasizing line precision and paper texture. Texture: plan-sheet grain, slight process fading, and clean reproduction edges. Key cues: diazo blueprint, white lines on blue ground, ammonia process, technical reproduction. Finish cues: paper grain, slight fading, high line clarity, plan-sheet texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "diazo", + "blueprint" + ] + }, + { + "id": "repro_whiteprint_copy", + "name": "Reprographic: Whiteprint Copy", + "category": "Photography/Alt Process", + "default": { + "prefix": "professional photography, realistic lighting, natural color rendition, coherent shadows, true-to-life textures, whiteprint copy, blue lines on pale ground, engineering repro, technical sheet", + "suffix": "fine paper grain, faint process tint, clean line clarity, document texture, sharp focus, high detail, balanced exposure, fine texture detail, natural contrast, clean highlights" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: whiteprint engineering copy with blue line reproduction on pale stock. Lighting: neutral even light preserving line clarity and sheet texture. Texture: lightly tinted paper, crisp reproduced lines, and document wear. Key cues: whiteprint copy, blue lines on pale ground, engineering repro, technical sheet. Finish cues: fine paper grain, faint process tint, clean line clarity, document texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "whiteprint", + "technical_copy" + ] + }, + { + "id": "repro_offset_litho_misregistration", + "name": "Reprographic: Offset Misregistration", + "category": "Graphic Design", + "default": { + "prefix": "graphic design, poster-like composition, clear hierarchy, bold shapes, limited palette, print-ready layout, offset litho misregistration, CMYK separation drift, press-sheet look, graphic overprint", + "suffix": "registration drift, ink overlap edges, paper texture, press imperfections, crisp edges, high contrast, clean alignment, balanced negative space, print texture" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: offset lithographic print with visible CMYK misregistration. Lighting: flat print-preview lighting with minimal shading. Texture: ink overlap edges, slight press drift, and printed paper surface. Key cues: offset litho misregistration, CMYK separation drift, press-sheet look, graphic overprint. Finish cues: registration drift, ink overlap edges, paper texture, press imperfections. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "offset", + "graphic" + ] + }, + { + "id": "repro_newsprint_halftone", + "name": "Reprographic: Newsprint Halftone", + "category": "Graphic Design", + "default": { + "prefix": "graphic design, poster-like composition, clear hierarchy, bold shapes, limited palette, print-ready layout, newsprint halftone, coarse dot screen, cheap paper stock, high-contrast reproduction", + "suffix": "dot gain, paper fuzz, ink spread, low-cost press texture, crisp edges, high contrast, clean alignment, balanced negative space, print texture" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: newsprint halftone reproduction with coarse screened dots. Lighting: flat editorial lighting that keeps dot structure readable. Texture: dot gain, paper fuzz, and soft ink spread on cheap stock. Key cues: newsprint halftone, coarse dot screen, cheap paper stock, high-contrast reproduction. Finish cues: dot gain, paper fuzz, ink spread, low-cost press texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "newsprint", + "halftone" + ] + }, + { + "id": "repro_xerox_zine_photocopy", + "name": "Reprographic: Xerox Zine Photocopy", + "category": "Graphic Design", + "default": { + "prefix": "graphic design, poster-like composition, clear hierarchy, bold shapes, limited palette, print-ready layout, xerox zine photocopy, high-contrast black toner, collaged copy art, DIY publication feel", + "suffix": "toner speckle, copy shadow bands, paper curl, rough photocopy texture, crisp edges, high contrast, clean alignment, balanced negative space, print texture" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: zine photocopy aesthetic with stark black toner and copy-art artifacts. Lighting: flat copy-table lighting with no dramatic shading. Texture: toner speckle, edge shadowing, and cheap paper curl. Key cues: xerox zine photocopy, high-contrast black toner, collaged copy art, DIY publication feel. Finish cues: toner speckle, copy shadow bands, paper curl, rough photocopy texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "photocopy", + "zine" + ] + }, + { + "id": "repro_carbon_copy_manifold", + "name": "Reprographic: Carbon Copy Manifold", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, carbon copy manifold, pressure transfer typing, duplicate form, ghosted text impression", + "suffix": "soft duplicate offset, paper stack pressure marks, form-stock texture, typed imprint feel, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: carbon-copy manifold form with pressure-transferred duplicate impression. Lighting: neutral even light revealing paper stack pressure and duplicate offset. Texture: soft transfer, form-stock grain, and faint stacked-sheet marks. Key cues: carbon copy manifold, pressure transfer typing, duplicate form, ghosted text impression. Finish cues: soft duplicate offset, paper stack pressure marks, form-stock texture, typed imprint feel. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "carbon_copy", + "office_print" + ] + }, + { + "id": "repro_contact_sheet_proof", + "name": "Reprographic: Contact Sheet Proof", + "category": "Photography/Alt Process", + "default": { + "prefix": "professional photography, realistic lighting, natural color rendition, coherent shadows, true-to-life textures, contact sheet proof, small frame grid, black border frames, darkroom proof sheet", + "suffix": "glossy paper sheen, frame spacing, proof-sheet layout, archival print texture, sharp focus, high detail, balanced exposure, fine texture detail, natural contrast, clean highlights" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: darkroom contact-sheet proof with a tidy grid of small frames. Lighting: soft even light that preserves glossy paper and frame borders. Texture: proof-sheet sheen, frame spacing, and archival paper feel. Key cues: contact sheet proof, small frame grid, black border frames, darkroom proof sheet. Finish cues: glossy paper sheen, frame spacing, proof-sheet layout, archival print texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "contact_sheet", + "analog_print" + ] + }, + { + "id": "repro_rotogravure_ink_pattern", + "name": "Reprographic: Rotogravure Ink Pattern", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, rotogravure print, copper-cell ink pattern, smooth tonal reproduction, press cylinder texture", + "suffix": "fine cell grain, velvety darks, printed paper texture, high-volume press character, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: rotogravure reproduction with smooth tonal printing and fine cell patterning. Lighting: flat print-preview light preserving tonal reproduction and cell grain. Texture: velvety darks, fine gravure grain, and coated paper response. Key cues: rotogravure print, copper-cell ink pattern, smooth tonal reproduction, press cylinder texture. Finish cues: fine cell grain, velvety darks, printed paper texture, high-volume press character. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "rotogravure", + "print" + ] + }, + { + "id": "repro_cmyk_registration_proof", + "name": "Reprographic: CMYK Registration Proof", + "category": "Graphic Design", + "default": { + "prefix": "graphic design, poster-like composition, clear hierarchy, bold shapes, limited palette, print-ready layout, CMYK registration proof, crop marks, color bars, prepress sheet", + "suffix": "registration marks, ink alignment cues, press proof texture, clean paper stock, crisp edges, high contrast, clean alignment, balanced negative space, print texture" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: prepress CMYK registration proof with crop marks and color bars. Lighting: flat inspection light with minimal glare on the proof sheet. Texture: clean proof stock, registration marks, and precise prepress cues. Key cues: CMYK registration proof, crop marks, color bars, prepress sheet. Finish cues: registration marks, ink alignment cues, press proof texture, clean paper stock. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "cmyk", + "proof" + ] + }, + { + "id": "repro_thermographic_raised_ink", + "name": "Reprographic: Thermographic Raised Ink", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, thermographic raised ink, powder-fused lettering, slight gloss, printed stationery", + "suffix": "raised ink relief, subtle sheen, paper texture, formal print finish, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: thermographic print with powder-fused raised ink. Lighting: soft raking light revealing slight relief and glossy edges. Texture: raised lettering, subtle sheen, and fine stationery stock. Key cues: thermographic raised ink, powder-fused lettering, slight gloss, printed stationery. Finish cues: raised ink relief, subtle sheen, paper texture, formal print finish. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "thermography", + "raised_ink" + ] + }, + { + "id": "repro_rubber_stamp_overprint", + "name": "Reprographic: Rubber Stamp Overprint", + "category": "Printmaking/Expanded", + "default": { + "prefix": "printmaking, ink on paper, handcrafted texture, carved lines, high contrast, rubber stamp overprint, layered ink stamps, imperfect repeat, manual registration", + "suffix": "ink pooling, stamp edge chatter, paper tooth, hand-pressed irregularity, paper texture, ink texture, rough edges, high contrast" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: rubber-stamped overprint with imperfect manual registration. Lighting: flat diffuse light preserving ink pooling and stamp edge chatter. Texture: hand-pressed irregularity, paper tooth, and layered ink density. Key cues: rubber stamp overprint, layered ink stamps, imperfect repeat, manual registration. Finish cues: ink pooling, stamp edge chatter, paper tooth, hand-pressed irregularity. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "rubber_stamp", + "overprint" + ] + }, + { + "id": "repro_dot_gain_press_sheet", + "name": "Reprographic: Dot Gain Press Sheet", + "category": "Graphic Design", + "default": { + "prefix": "graphic design, poster-like composition, clear hierarchy, bold shapes, limited palette, print-ready layout, dot gain press sheet, ink spread, screened color build, printed calibration feel", + "suffix": "softened dot edges, paper absorbency, press-sheet texture, density variation, crisp edges, high contrast, clean alignment, balanced negative space, print texture" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: printed press sheet showing dot gain and ink spread. Lighting: neutral inspection light that keeps screened structure readable. Texture: softened dot edges, absorbent stock, and printed calibration character. Key cues: dot gain press sheet, ink spread, screened color build, printed calibration feel. Finish cues: softened dot edges, paper absorbency, press-sheet texture, density variation. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "reprographic", + "dot_gain", + "press" + ] + }, { "id": "artist_leonardo_da_vinci_sfumato", "name": "Artist: Leonardo da Vinci (Sfumato + Subtle Chiaroscuro)", @@ -5261,6 +5541,278 @@ "fine_art" ] }, + { + "id": "mixed_acrylic_sgraffito_ground", + "name": "Acrylic Sgraffito Ground", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, acrylic sgraffito, scraped paint layers, revealed underpainting, layered acrylic ground", + "suffix": "incised grooves, color reveal, matte paint texture, layered scraping marks, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media acrylic surface worked with sgraffito scraping. Lighting: soft raking light that catches incised grooves and revealed color layers. Texture: matte acrylic, scraped channels, and exposed underpainting. Key cues: acrylic sgraffito, scraped paint layers, revealed underpainting, layered acrylic ground. Finish cues: incised grooves, color reveal, matte paint texture, layered scraping marks. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "sgraffito", + "acrylic" + ] + }, + { + "id": "mixed_assemblage_artwork", + "name": "Assemblage Artwork", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, assemblage, found objects, mixed materials, handcrafted", + "suffix": "tactile texture, rough surfaces, layered depth, high detail, paper grain, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: assemblage artwork built from found objects and mixed materials. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: rough surfaces, layered depth, tactile materials. Key cues: assemblage, found objects, mixed materials, handcrafted. Finish cues: tactile texture, rough surfaces, layered depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_cyanotype_print_analog", + "name": "Cyanotype Print (Analog)", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, cyanotype print, blue monochrome, sun print, paper texture", + "suffix": "grain, chemical texture, vintage print, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: analog cyanotype print on paper. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Mood: minimal, photographic, deep blue. Key cues: cyanotype print, blue monochrome, sun print, paper texture. Finish cues: grain, chemical texture, vintage print. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_decollage_poster_peel", + "name": "Decollage Poster Peel", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, decollage poster peel, torn poster layers, weathered paste, exposed underlayers", + "suffix": "ragged tears, glue residue, paper strata, urban paper texture, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media decollage with peeled poster layers and exposed strata. Lighting: flat daylight that keeps the layered tears and residue readable. Texture: ragged tears, glue residue, and stacked paper history. Key cues: decollage poster peel, torn poster layers, weathered paste, exposed underlayers. Finish cues: ragged tears, glue residue, paper strata, urban paper texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "decollage", + "paper" + ] + }, + { + "id": "mixed_encaustic_collage", + "name": "Encaustic Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, encaustic collage, translucent wax layers, embedded paper fragments, scraped surface", + "suffix": "wax bloom, subtle crackle, tactile depth, layered translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media encaustic collage with embedded paper fragments. Lighting: soft gallery light with gentle falloff and mild surface sheen. Texture: translucent wax layers, scraped marks, and tactile depth. Key cues: encaustic collage, translucent wax layers, embedded paper fragments, scraped surface. Finish cues: wax bloom, subtle crackle, tactile depth, layered translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "encaustic", + "collage" + ] + }, + { + "id": "mixed_fabric_scrap_collage", + "name": "Fabric Scrap Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, fabric scrap collage, stitched textile fragments, raw edges, patchwork layering", + "suffix": "frayed fibers, cloth weave, stitched joins, soft tactile depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage assembled from layered textile scraps. Lighting: soft diffuse light revealing cloth weave and stitched joins. Texture: frayed fibers, raw edges, and patchwork depth. Key cues: fabric scrap collage, stitched textile fragments, raw edges, patchwork layering. Finish cues: frayed fibers, cloth weave, stitched joins, soft tactile depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "fabric", + "collage" + ] + }, + { + "id": "mixed_foil_leaf_overlay", + "name": "Foil Leaf Overlay", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, foil leaf overlay, metal leaf fragments, mixed surface, hand-applied shimmer", + "suffix": "broken foil edges, micro-reflections, adhesive texture, layered contrast, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media surface with hand-applied foil leaf overlays. Lighting: controlled light that catches metallic fragments without blowing them out. Texture: broken foil edges, adhesive texture, and small reflective flashes. Key cues: foil leaf overlay, metal leaf fragments, mixed surface, hand-applied shimmer. Finish cues: broken foil edges, micro-reflections, adhesive texture, layered contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "foil", + "leaf" + ] + }, + { + "id": "mixed_frottage_rubbing_study", + "name": "Frottage Rubbing Study", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, frottage rubbing, found-surface textures, graphite transfer, pressure marks", + "suffix": "rubbed grain, uneven density, paper drag marks, tactile impressions, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media frottage study built from rubbed surface textures. Lighting: soft raking light that reveals paper tooth and rubbing variation. Texture: transferred grain, pressure marks, and uneven graphite density. Key cues: frottage rubbing, found-surface textures, graphite transfer, pressure marks. Finish cues: rubbed grain, uneven density, paper drag marks, tactile impressions. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "frottage", + "rubbing" + ] + }, + { + "id": "mixed_gel_medium_image_transfer", + "name": "Gel Medium Image Transfer", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel medium image transfer, lifted image layers, translucent medium, paper support", + "suffix": "soft edge lifting, adhesive sheen, surface irregularities, layered translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media gel-medium transfer with lifted translucent image layers. Lighting: soft gallery light with enough angle to reveal transfer texture. Texture: adhesive sheen, edge lifting, and layered translucent film. Key cues: gel medium image transfer, lifted image layers, translucent medium, paper support. Finish cues: soft edge lifting, adhesive sheen, surface irregularities, layered translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "transfer", + "acrylic" + ] + }, + { + "id": "mixed_gel_plate_monoprint", + "name": "Gel Plate Monoprint", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel plate monoprint, ink layers, brayer texture, printmaking", + "suffix": "paper grain, ink transfer artifacts, handmade print, high detail, tactile texture, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: gel plate monoprint with layered ink textures. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: ink transfer artifacts, paper grain, layered prints. Key cues: gel plate monoprint, ink layers, brayer texture, printmaking. Finish cues: paper grain, ink transfer artifacts, handmade print. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_gesso_charcoal_board", + "name": "Gesso and Charcoal Board", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gesso ground, charcoal marks, chalky board surface, erased highlights", + "suffix": "powdery smudge, toothy ground, lifted erasures, matte surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media board with gesso ground and charcoal drawing. Lighting: soft studio light revealing chalky tooth and erased highlights. Texture: powdery charcoal, matte gesso, and lifted erasure marks. Key cues: gesso ground, charcoal marks, chalky board surface, erased highlights. Finish cues: powdery smudge, toothy ground, lifted erasures, matte surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "gesso", + "charcoal" + ] + }, + { + "id": "mixed_handmade_paper_pulp_relief", + "name": "Handmade Paper Pulp Relief", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, handmade paper pulp, cast relief, fibrous surface, pressed pulp forms", + "suffix": "deckled edges, fiber clumps, raised paper relief, soft shadow depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media handmade paper relief with cast pulp forms. Lighting: soft raking light to reveal paper relief and deckled edges. Texture: fibrous pulp, soft relief shadows, and visible paper formation. Key cues: handmade paper pulp, cast relief, fibrous surface, pressed pulp forms. Finish cues: deckled edges, fiber clumps, raised paper relief, soft shadow depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "paper", + "relief" + ] + }, + { + "id": "mixed_mixed_media_acrylic_ink", + "name": "Mixed Media Acrylic + Ink", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, mixed media, acrylic paint, ink linework, layered marks", + "suffix": "texture paste, splatter, handmade imperfections, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media artwork combining acrylic paint and ink linework. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: layered paint, ink marks, tactile surface. Key cues: mixed media, acrylic paint, ink linework, layered marks. Finish cues: texture paste, splatter, handmade imperfections. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media" + ] + }, + { + "id": "mixed_monoprint_collage", + "name": "Monoprint Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, monoprint collage, ink pull textures, layered cut paper, one-off print fragments", + "suffix": "brayer texture, ink ghosts, paper layering, soft registration drift, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage assembled from monoprint pulls and paper fragments. Lighting: soft gallery light keeping ink texture and layered edges visible. Texture: brayer marks, ink ghosts, and collage depth. Key cues: monoprint collage, ink pull textures, layered cut paper, one-off print fragments. Finish cues: brayer texture, ink ghosts, paper layering, soft registration drift. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "monoprint", + "collage" + ] + }, { "id": "mixed_paper_collage_mixed_media", "name": "Paper Collage (Mixed Media)", @@ -5298,75 +5850,63 @@ ] }, { - "id": "mixed_mixed_media_acrylic_ink", - "name": "Mixed Media Acrylic + Ink", + "id": "mixed_resin_sealed_collage", + "name": "Resin-Sealed Collage", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, mixed media, acrylic paint, ink linework, layered marks", - "suffix": "texture paste, splatter, handmade imperfections, high detail, tactile texture, paper grain, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, resin-sealed collage, encapsulated layers, embedded fragments, glossy surface", + "suffix": "glass-like sheen, suspended depth, trapped inclusions, smooth surface reflections, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: mixed media artwork combining acrylic paint and ink linework. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: layered paint, ink marks, tactile surface. Key cues: mixed media, acrylic paint, ink linework, layered marks. Finish cues: texture paste, splatter, handmade imperfections. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: mixed media collage sealed under a glossy resin layer. Lighting: controlled light with smooth reflections and visible embedded depth. Texture: glass-like sheen, suspended fragments, and encapsulated layers. Key cues: resin-sealed collage, encapsulated layers, embedded fragments, glossy surface. Finish cues: glass-like sheen, suspended depth, trapped inclusions, smooth surface reflections. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" + "mixed_media", + "resin", + "collage" ] }, { - "id": "mixed_gel_plate_monoprint", - "name": "Gel Plate Monoprint", + "id": "mixed_sand_pigment_ground", + "name": "Sand and Pigment Ground", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, gel plate monoprint, ink layers, brayer texture, printmaking", - "suffix": "paper grain, ink transfer artifacts, handmade print, high detail, tactile texture, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, sand and pigment ground, granular surface, earth pigments, rough substrate", + "suffix": "gritty relief, dry brush drag, mineral texture, matte layered surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: gel plate monoprint with layered ink textures. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: ink transfer artifacts, paper grain, layered prints. Key cues: gel plate monoprint, ink layers, brayer texture, printmaking. Finish cues: paper grain, ink transfer artifacts, handmade print. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: mixed media surface built from sanded ground and dry pigments. Lighting: raking light to reveal granular relief and dry brush drag. Texture: mineral grit, matte layering, and rough substrate variation. Key cues: sand and pigment ground, granular surface, earth pigments, rough substrate. Finish cues: gritty relief, dry brush drag, mineral texture, matte layered surface. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" + "mixed_media", + "sand", + "pigment" ] }, { - "id": "mixed_cyanotype_print_analog", - "name": "Cyanotype Print (Analog)", + "id": "mixed_scratchboard_ink_wash", + "name": "Scratchboard Ink Wash", "category": "Mixed Media", "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, cyanotype print, blue monochrome, sun print, paper texture", - "suffix": "grain, chemical texture, vintage print, high detail, tactile texture, paper grain, layered depth, cohesive composition" + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, scratchboard, ink wash, scraped highlights, black ground", + "suffix": "incised lines, white reveal marks, ink pooling, high contrast surface, high detail, tactile texture, paper grain, layered depth, cohesive composition" }, "models": { "flux_2_klein": { "prefix": "", - "suffix": "Style: analog cyanotype print on paper. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Mood: minimal, photographic, deep blue. Key cues: cyanotype print, blue monochrome, sun print, paper texture. Finish cues: grain, chemical texture, vintage print. Instruction: preserve the user prompt subject and add only stylistic cues." + "suffix": "Style: scratchboard mixed media with ink wash and scraped highlights. Lighting: controlled studio light emphasizing incised lines and contrast. Texture: sharp reveal marks, pooled ink, and a dense black ground. Key cues: scratchboard, ink wash, scraped highlights, black ground. Finish cues: incised lines, white reveal marks, ink pooling, high contrast surface. Instruction: preserve the user prompt subject and add only stylistic cues." } }, "tags": [ - "mixed_media" - ] - }, - { - "id": "mixed_assemblage_artwork", - "name": "Assemblage Artwork", - "category": "Mixed Media", - "default": { - "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, assemblage, found objects, mixed materials, handcrafted", - "suffix": "tactile texture, rough surfaces, layered depth, high detail, paper grain, cohesive composition" - }, - "models": { - "flux_2_klein": { - "prefix": "", - "suffix": "Style: assemblage artwork built from found objects and mixed materials. Lighting: soft gallery spotlights with gentle falloff and controlled highlights. Texture: rough surfaces, layered depth, tactile materials. Key cues: assemblage, found objects, mixed materials, handcrafted. Finish cues: tactile texture, rough surfaces, layered depth. Instruction: preserve the user prompt subject and add only stylistic cues." - } - }, - "tags": [ - "mixed_media" + "mixed_media", + "scratchboard", + "ink" ] }, { @@ -5387,6 +5927,106 @@ "mixed_media" ] }, + { + "id": "mixed_thread_stitched_paper_collage", + "name": "Thread-Stitched Paper Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, thread-stitched paper collage, pierced paper, visible seams, layered cut paper", + "suffix": "thread relief, needle holes, paper grain, hand-sewn irregularity, high detail, tactile texture, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media paper collage held together with visible stitched seams. Lighting: soft raking light that reveals thread relief and pierced paper. Texture: needle holes, paper grain, and hand-sewn irregularity. Key cues: thread-stitched paper collage, pierced paper, visible seams, layered cut paper. Finish cues: thread relief, needle holes, paper grain, hand-sewn irregularity. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "thread", + "paper" + ] + }, + { + "id": "mixed_tissue_paper_layering", + "name": "Tissue Paper Layering", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, tissue paper layering, translucent color veils, wrinkled paper films, stacked fragments", + "suffix": "soft wrinkles, color veiling, feathered overlap edges, lightweight translucency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media layering built from translucent tissue fragments. Lighting: soft top light preserving the color veils and overlap shadows. Texture: tissue wrinkles, feathered edges, and lightweight translucency. Key cues: tissue paper layering, translucent color veils, wrinkled paper films, stacked fragments. Finish cues: soft wrinkles, color veiling, feathered overlap edges, lightweight translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "tissue_paper", + "layered" + ] + }, + { + "id": "mixed_vellum_overlay_assemblage", + "name": "Vellum Overlay Assemblage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, vellum overlays, translucent sheets, stacked drawing layers, soft veiling", + "suffix": "semi-transparent layers, paper curl, subtle overlap shadows, airy depth, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media assemblage built from translucent vellum overlays. Lighting: soft top light creating delicate overlap shadows between sheets. Texture: vellum curl, semi-transparent stacking, and layered veiling. Key cues: vellum overlays, translucent sheets, stacked drawing layers, soft veiling. Finish cues: semi-transparent layers, paper curl, subtle overlap shadows, airy depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "vellum", + "assemblage" + ] + }, + { + "id": "mixed_wax_resist_layers", + "name": "Wax Resist Mixed Media", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, wax resist, layered inks, masked paper, drawn resist lines", + "suffix": "resist crackle, ink pooling, paper tooth, layered transparency, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media wax-resist artwork with masked lines and layered inks. Lighting: soft diffuse light that keeps paper texture and layered transparencies visible. Texture: resist crackle, pooled pigment, and masked edge variation. Key cues: wax resist, layered inks, masked paper, drawn resist lines. Finish cues: resist crackle, ink pooling, paper tooth, layered transparency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "wax_resist", + "layered" + ] + }, + { + "id": "mixed_xerox_transfer_collage", + "name": "Xerox Transfer Collage", + "category": "Mixed Media", + "default": { + "prefix": "mixed media artwork, layered textures, handcrafted marks, tactile surface, xerox transfer collage, toner transfer, distressed paper, layered copy fragments", + "suffix": "toner wear, uneven transfer, matte paper texture, zine-like edges, high detail, tactile texture, paper grain, layered depth, cohesive composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: mixed media collage built from toner-transfer copy fragments. Lighting: flat diffuse light that keeps paper layers readable. Texture: toner wear, distressed edges, and matte paper grain. Key cues: xerox transfer collage, toner transfer, distressed paper, layered copy fragments. Finish cues: toner wear, uneven transfer, matte paper texture, zine-like edges. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "mixed_media", + "transfer", + "photocopy" + ] + }, { "id": "street_graffiti_wildstyle_lettering", "name": "Graffiti Wildstyle Lettering", @@ -7653,6 +8293,566 @@ "fabric" ] }, + { + "id": "decor_copper_foil_stained_glass", + "name": "Copper Foil Stained Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, copper foil stained glass, soldered seams, colored glass pieces, translucent mosaic", + "suffix": "backlit glow, solder line detail, glass texture, jewel-toned translucency, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: copper-foil stained glass with soldered seams and translucent color. Lighting: backlit illumination creating jewel-like glow through the glass. Texture: solder line detail, subtle rippled glass, and luminous color panels. Key cues: copper foil stained glass, soldered seams, colored glass pieces, translucent mosaic. Finish cues: backlit glow, solder line detail, glass texture, jewel-toned translucency. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "foil" + ] + }, + { + "id": "decor_pate_de_verre_glass", + "name": "Pate de Verre Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pate de verre glass, granular cast glass, soft translucency, powdered glass color", + "suffix": "frosted surface, subtle translucence, cast texture, powder-soft color, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pate de verre glass with softly cast translucent color. Lighting: soft transmitted light with gentle highlights on frosted surfaces. Texture: granular cast glass, matte translucency, and powder-soft color depth. Key cues: pate de verre glass, granular cast glass, soft translucency, powdered glass color. Finish cues: frosted surface, subtle translucence, cast texture, powder-soft color. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "cast" + ] + }, + { + "id": "decor_slumped_kiln_formed_glass", + "name": "Slumped Kiln-Formed Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, slumped kiln-formed glass, flowed glass contours, heat-shaped form, smooth translucent surface", + "suffix": "soft edge rounding, subtle thickness variation, glass sheen, formed contour shadows, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: kiln-formed slumped glass with heat-shaped contours. Lighting: controlled studio light emphasizing contour thickness and translucency. Texture: smooth glass sheen, softened edges, and gentle thickness variation. Key cues: slumped kiln-formed glass, flowed glass contours, heat-shaped form, smooth translucent surface. Finish cues: soft edge rounding, subtle thickness variation, glass sheen, formed contour shadows. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "kiln_formed" + ] + }, + { + "id": "decor_raku_crackle_ceramic", + "name": "Raku Crackle Ceramic", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, raku ceramic, crackle glaze, smoke-fired surface, irregular luster", + "suffix": "black crack lines, smoky glaze variation, porous clay texture, unpredictable firing marks, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: raku-fired ceramic with crackled glaze and smoky variation. Lighting: soft studio light revealing crackle networks and firing irregularities. Texture: black crack lines, porous clay, and unpredictable glaze shifts. Key cues: raku ceramic, crackle glaze, smoke-fired surface, irregular luster. Finish cues: black crack lines, smoky glaze variation, porous clay texture, unpredictable firing marks. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "raku" + ] + }, + { + "id": "decor_pit_fired_ceramic", + "name": "Pit-Fired Ceramic", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pit-fired ceramic, fire clouds, smoke marks, unglazed clay surface", + "suffix": "burnished sheen, smoke staining, earthy mineral variation, handmade surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pit-fired ceramic with smoke clouds and earthy firing marks. Lighting: warm studio light showing burnished highlights and smoke variation. Texture: unglazed clay, mineral staining, and atmospheric fire marking. Key cues: pit-fired ceramic, fire clouds, smoke marks, unglazed clay surface. Finish cues: burnished sheen, smoke staining, earthy mineral variation, handmade surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "pit_fired" + ] + }, + { + "id": "decor_celadon_glaze_stoneware", + "name": "Celadon Glaze Stoneware", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, celadon glaze, pale green stoneware, pooled glaze, refined ceramic surface", + "suffix": "glaze pooling, cool translucence, soft crackle, subtle sheen, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: celadon-glazed stoneware with cool translucent pooling. Lighting: soft controlled light preserving glaze depth and subtle crackle. Texture: pooled glaze, pale green translucence, and refined ceramic sheen. Key cues: celadon glaze, pale green stoneware, pooled glaze, refined ceramic surface. Finish cues: glaze pooling, cool translucence, soft crackle, subtle sheen. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "celadon" + ] + }, + { + "id": "decor_crystalline_glaze_porcelain", + "name": "Crystalline Glaze Porcelain", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, crystalline glaze porcelain, starburst crystal blooms, glossy fired surface, porcelain body", + "suffix": "crystal clusters, gloss reflections, glaze depth, smooth porcelain surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: crystalline-glazed porcelain with visible starburst crystal blooms. Lighting: controlled highlights emphasizing glossy glaze and crystal structure. Texture: smooth porcelain, glossy depth, and flower-like crystal growth. Key cues: crystalline glaze porcelain, starburst crystal blooms, glossy fired surface, porcelain body. Finish cues: crystal clusters, gloss reflections, glaze depth, smooth porcelain surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "crystalline_glaze" + ] + }, + { + "id": "decor_mishima_inlay_pottery", + "name": "Mishima Inlay Pottery", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, mishima inlay pottery, incised lines, contrasting slip inlay, refined ceramic pattern", + "suffix": "filled linework, matte glaze, fine carving detail, quiet surface contrast, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: Mishima pottery with incised patterns filled by contrasting slip. Lighting: soft studio light revealing carved linework and matte ceramic surface. Texture: filled incisions, quiet glaze, and fine carved detail. Key cues: mishima inlay pottery, incised lines, contrasting slip inlay, refined ceramic pattern. Finish cues: filled linework, matte glaze, fine carving detail, quiet surface contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "inlay" + ] + }, + { + "id": "decor_sgraffito_pottery", + "name": "Sgraffito Pottery", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, sgraffito pottery, scratched slip decoration, revealed clay body, layered ceramic surface", + "suffix": "incised motifs, matte slip texture, fine carving marks, earthy fired surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: sgraffito-decorated pottery with scratched slip and revealed clay. Lighting: soft angled light that catches carved ceramic marks. Texture: matte slip, incised motifs, and an earthy fired surface. Key cues: sgraffito pottery, scratched slip decoration, revealed clay body, layered ceramic surface. Finish cues: incised motifs, matte slip texture, fine carving marks, earthy fired surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "ceramic", + "sgraffito" + ] + }, + { + "id": "decor_hammered_copper_patina", + "name": "Hammered Copper Patina", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, hammered copper, hand-raised metal surface, aged patina, warm metallic tones", + "suffix": "hammer marks, oxidized color shifts, soft metallic sheen, worked metal relief, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: hammered copper decorative metalwork with aged patina. Lighting: warm studio light emphasizing hammered relief and patinated color shifts. Texture: hand-raised dimples, oxidized surface, and soft metallic sheen. Key cues: hammered copper, hand-raised metal surface, aged patina, warm metallic tones. Finish cues: hammer marks, oxidized color shifts, soft metallic sheen, worked metal relief. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "metal", + "patina" + ] + }, + { + "id": "decor_repousse_metalwork", + "name": "Repousse Metalwork", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, repousse metalwork, raised relief ornament, chased detailing, worked sheet metal", + "suffix": "relief contours, fine chased lines, aged metallic finish, ornamental depth, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: repousse metalwork with raised relief and chased detail. Lighting: directional studio light to reveal relief contours and fine tooling. Texture: raised ornament, chased lines, and aged metallic finish. Key cues: repousse metalwork, raised relief ornament, chased detailing, worked sheet metal. Finish cues: relief contours, fine chased lines, aged metallic finish, ornamental depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "metal", + "repousse" + ] + }, + { + "id": "decor_guilloche_enamel", + "name": "Guilloche Enamel", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, guilloche enamel, engine-turned pattern, translucent enamel layer, radiating metal geometry", + "suffix": "subsurface pattern shimmer, gloss enamel finish, precise engraved rhythm, luxury surface, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: guilloche enamel over engine-turned metal patterning. Lighting: controlled highlights that reveal the pattern beneath translucent enamel. Texture: glossy enamel depth, precise engraved rhythm, and subsurface shimmer. Key cues: guilloche enamel, engine-turned pattern, translucent enamel layer, radiating metal geometry. Finish cues: subsurface pattern shimmer, gloss enamel finish, precise engraved rhythm, luxury surface. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "enamel", + "guilloche" + ] + }, + { + "id": "decor_acid_etched_glass", + "name": "Acid-Etched Glass", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, acid-etched glass, frosted transparency, matte glass surface, ornamental etching", + "suffix": "soft diffusion, satin glass finish, etched motif edges, subtle translucence, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: acid-etched glass with frosted translucency and engraved motifs. Lighting: soft transmitted light with minimal glare to preserve the satin finish. Texture: matte frosted glass, subtle translucence, and etched boundaries. Key cues: acid-etched glass, frosted transparency, matte glass surface, ornamental etching. Finish cues: soft diffusion, satin glass finish, etched motif edges, subtle translucence. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "etched" + ] + }, + { + "id": "decor_cut_crystal_faceting", + "name": "Cut Crystal Faceting", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, cut crystal, faceted glass, prismatic refraction, precision cutting", + "suffix": "sharp facets, caustic sparkle, high clarity, polished reflections, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: cut crystal decorative glass with sharp faceting and prismatic sparkle. Lighting: crisp controlled highlights and small caustics across polished facets. Texture: sharp facet edges, high clarity, and jewel-like reflections. Key cues: cut crystal, faceted glass, prismatic refraction, precision cutting. Finish cues: sharp facets, caustic sparkle, high clarity, polished reflections. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "glass", + "crystal" + ] + }, + { + "id": "decor_lost_wax_cast_bronze", + "name": "Lost-Wax Cast Bronze", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, lost-wax cast bronze, cast metal surface, hand-finished patina, sculptural metalwork", + "suffix": "cast texture, warm bronze highlights, subtle tooling marks, aged patina depth, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: lost-wax cast bronze with hand-finished patina. Lighting: warm directional light showing cast surface, tooling, and metallic depth. Texture: cast grain, hand-finished marks, and aged bronze patina. Key cues: lost-wax cast bronze, cast metal surface, hand-finished patina, sculptural metalwork. Finish cues: cast texture, warm bronze highlights, subtle tooling marks, aged patina depth. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "bronze", + "cast" + ] + }, + { + "id": "decor_pietra_dura_inlay", + "name": "Pietra Dura Stone Inlay", + "category": "Decorative Arts", + "default": { + "prefix": "decorative arts, handcrafted, artisan-made, museum-quality, pietra dura inlay, polished stone mosaic, hardstone floral inlay, precise stone fitting", + "suffix": "polished stone sheen, crisp inlay seams, rich mineral color, luxury surface detail, tactile surface, premium craftsmanship, controlled studio lighting, clean composition" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: pietra dura hardstone inlay with tightly fitted polished stone pieces. Lighting: soft controlled light revealing polished mineral surfaces and seam precision. Texture: crisp stone joins, polished sheen, and rich mineral color variation. Key cues: pietra dura inlay, polished stone mosaic, hardstone floral inlay, precise stone fitting. Finish cues: polished stone sheen, crisp inlay seams, rich mineral color, luxury surface detail. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "decorative_arts", + "stone", + "inlay" + ] + }, + { + "id": "tech_exploded_cutaway_diagram", + "name": "Exploded Cutaway Diagram", + "category": "Technical", + "default": { + "prefix": "technical illustration, clean lines, diagrammatic layout, precise geometry, labels and callouts, exploded technical cutaway, separated components, diagrammatic spacing, annotation callouts", + "suffix": "high legibility, clean line hierarchy, precise labels, sectioned detail, crisp lines, precise layout, flat lighting" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: technical cutaway diagram with exploded component spacing. Lighting: flat even rendering with no dramatic shading. Composition: precise labels, clean separations, and diagrammatic hierarchy. Key cues: exploded technical cutaway, separated components, diagrammatic spacing, annotation callouts. Finish cues: high legibility, clean line hierarchy, precise labels, sectioned detail. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "cutaway", + "diagram" + ] + }, + { + "id": "tech_orthographic_projection_plate", + "name": "Orthographic Projection Plate", + "category": "Technical", + "default": { + "prefix": "technical illustration, clean lines, diagrammatic layout, precise geometry, labels and callouts, orthographic projection, front side top views, aligned drafting layout", + "suffix": "clean projection lines, measured spacing, flat rendering, drafting clarity, high legibility, crisp lines, precise layout, flat lighting" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: orthographic technical plate with aligned multiview projection. Lighting: flat drafting presentation with minimal tonal variation. Composition: measured spacing, crisp geometry, and projection clarity. Key cues: orthographic projection, front side top views, aligned drafting layout, precise geometry. Finish cues: clean projection lines, measured spacing, flat rendering, drafting clarity. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "orthographic", + "blueprint" + ] + }, + { + "id": "tech_patent_plate_diagram", + "name": "Patent Plate Diagram", + "category": "Technical", + "default": { + "prefix": "technical illustration, clean lines, diagrammatic layout, precise geometry, labels and callouts, patent plate diagram, numbered callouts, ink drafting lines, archival technical engraving", + "suffix": "fine linework, annotation numerals, paper grain, high legibility, crisp lines, precise layout, flat lighting" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: patent-style technical plate with numbered callouts and archival drafting lines. Lighting: flat document lighting that keeps linework and paper grain readable. Texture: fine linework, paper grain, and annotation numerals. Key cues: patent plate diagram, numbered callouts, ink drafting lines, archival technical engraving. Finish cues: fine linework, annotation numerals, paper grain, high legibility. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "patent", + "diagram" + ] + }, + { + "id": "tech_section_elevation_drawing", + "name": "Section and Elevation Drawing", + "category": "Technical", + "default": { + "prefix": "technical illustration, clean lines, diagrammatic layout, precise geometry, labels and callouts, section and elevation drawing, cut-plane hatch, architectural notation, measured layout", + "suffix": "hatching clarity, clean notation, precise line weights, document-grade contrast, high legibility, crisp lines, precise layout, flat lighting" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: technical section and elevation drawing with cut-plane hatching. Lighting: flat presentation emphasizing notation and line-weight hierarchy. Composition: measured layout, clean hatch patterns, and document clarity. Key cues: section and elevation drawing, cut-plane hatch, architectural notation, measured layout. Finish cues: hatching clarity, clean notation, precise line weights, document-grade contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "technical", + "section", + "elevation" + ] + }, + { + "id": "vec_gradient_mesh_illustration", + "name": "Gradient Mesh Illustration", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat colors, clean shapes, crisp edges, smooth curves, gradient mesh vector, smooth tonal blends, scalable curves, clean vector shapes", + "suffix": "smooth color transitions, crisp bezier edges, clean layout, polished vector finish, consistent stroke weight, crisp edges, smooth curves" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: vector illustration built from gradient-mesh color transitions. Lighting: graphic flat-light treatment with emphasis on controlled tonal blending. Texture: none; clean scalable curves and polished vector edges. Key cues: gradient mesh vector, smooth tonal blends, scalable curves, clean vector shapes. Finish cues: smooth color transitions, crisp bezier edges, clean layout, polished vector finish. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "gradient_mesh", + "illustration" + ] + }, + { + "id": "vec_monoline_icon_system", + "name": "Monoline Icon System", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat colors, clean shapes, crisp edges, smooth curves, monoline icon system, uniform stroke weight, modular vector forms, grid alignment", + "suffix": "consistent line weight, crisp curves, balanced spacing, clean layout, consistent stroke weight, crisp edges, smooth curves" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: monoline vector icon system built on a modular grid. Lighting: flat graphic treatment with no material shading. Composition: uniform stroke weight, balanced spacing, and scalable clarity. Key cues: monoline icon system, uniform stroke weight, modular vector forms, grid alignment. Finish cues: consistent line weight, crisp curves, balanced spacing, clean layout. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "icon", + "monoline" + ] + }, + { + "id": "vec_wayfinding_graphic_system", + "name": "Wayfinding Graphic System", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat colors, clean shapes, crisp edges, smooth curves, wayfinding graphic system, directional arrows, clear symbols, transit-sign layout", + "suffix": "high contrast clarity, clean alignment, modular spacing, legible hierarchy, clean layout, consistent stroke weight, crisp edges, smooth curves" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: vector wayfinding system with directional symbols and transit-sign clarity. Lighting: flat design presentation with emphasis on readability. Composition: modular spacing, strong hierarchy, and clear directional cues. Key cues: wayfinding graphic system, directional arrows, clear symbols, transit-sign layout. Finish cues: high contrast clarity, clean alignment, modular spacing, legible hierarchy. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "wayfinding", + "infographic" + ] + }, + { + "id": "vec_flat_isometric_explainer", + "name": "Flat Isometric Explainer", + "category": "Vector", + "default": { + "prefix": "vector illustration, flat colors, clean shapes, crisp edges, smooth curves, flat isometric vector, diagrammatic depth, clean geometry, explainer layout", + "suffix": "crisp isometric edges, consistent shadows, clean layout, smooth curves, consistent stroke weight, crisp edges" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: flat isometric vector explainer with clean geometric depth. Lighting: minimal graphic shading with controlled isometric shadowing. Composition: tidy diagram layout, crisp edges, and scalable geometry. Key cues: flat isometric vector, diagrammatic depth, clean geometry, explainer layout. Finish cues: crisp isometric edges, consistent shadows, clean layout, smooth curves. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "vector", + "isometric", + "diagram" + ] + }, + { + "id": "pix_one_bit_dithered_pixel", + "name": "One-Bit Dithered Pixel", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, one-bit pixel art, black and white dithering, high contrast sprite look, coarse pixel grid", + "suffix": "checker dither, crisp pixels, readable silhouette, hard-edged contrast, dithered shading, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: one-bit pixel art using black and white dithering only. Lighting: implied through dither pattern rather than gradients. Texture: coarse pixel grid, checker dithers, and hard-edged contrast. Key cues: one-bit pixel art, black and white dithering, high contrast sprite look, coarse pixel grid. Finish cues: checker dither, crisp pixels, readable silhouette, hard-edged contrast. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "one_bit", + "dither" + ] + }, + { + "id": "pix_four_color_handheld_pixel", + "name": "Four-Color Handheld Pixel", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, four-color handheld pixel art, tiny tile shading, portable-screen look", + "suffix": "restricted tones, crisp pixels, readable forms, small-scale tile texture, dithered shading, readable silhouette, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: limited-palette handheld pixel art with only four tonal values. Lighting: implied with tiny tile shading and palette restriction. Texture: small pixel grid, restrained tones, and compact sprite readability. Key cues: four-color handheld pixel art, limited palette, tiny tile shading, portable-screen look. Finish cues: restricted tones, crisp pixels, readable forms, small-scale tile texture. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "handheld", + "limited_palette" + ] + }, + { + "id": "pix_isometric_sprite_sheet", + "name": "Isometric Sprite Sheet", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, isometric sprite sheet, tile-based game art, modular sprites, pixel grid alignment", + "suffix": "crisp pixels, modular repetition, readable silhouette, dithered shading, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: isometric sprite-sheet pixel art built from modular game tiles. Lighting: compact pixel shading supporting isometric form readability. Texture: crisp grid alignment, modular repetition, and dithered shading. Key cues: isometric sprite sheet, tile-based game art, modular sprites, pixel grid alignment. Finish cues: crisp pixels, modular repetition, readable silhouette, dithered shading. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "sprite_sheet", + "isometric" + ] + }, + { + "id": "pix_tilemap_interface", + "name": "Tilemap Interface", + "category": "Pixel Art", + "default": { + "prefix": "pixel art, 16-bit, limited palette, pixel-perfect, tilemap interface, pixel UI panels, grid-based layout, retro game overlay", + "suffix": "sharp UI pixels, limited palette, clean tile seams, readable small text feel, crisp pixels, dithered shading, readable silhouette, sprite-like clarity" + }, + "models": { + "flux_2_klein": { + "prefix": "", + "suffix": "Style: retro tilemap interface with pixel-grid panels and overlays. Lighting: flat UI-style presentation with palette-limited shading. Texture: sharp UI pixels, clean seams, and consistent grid structure. Key cues: tilemap interface, pixel UI panels, grid-based layout, retro game overlay. Finish cues: sharp UI pixels, limited palette, clean tile seams, readable small text feel. Instruction: preserve the user prompt subject and add only stylistic cues." + } + }, + "tags": [ + "pixel_art", + "tilemap", + "interface" + ] + }, { "id": "cg_photoreal_3d_render", "name": "Photoreal 3D Render", diff --git a/tests/test_promptstyler.py b/tests/test_promptstyler.py new file mode 100644 index 0000000..51b8acb --- /dev/null +++ b/tests/test_promptstyler.py @@ -0,0 +1,182 @@ +from __future__ import annotations + +import unittest + +import nodes +import style_library + + +class _FakeBool: + def __init__(self, value: bool): + self._value = value + + def item(self) -> bool: + return self._value + + +class _FakeFiniteResult: + def __init__(self, value: bool): + self._value = value + + def all(self) -> _FakeBool: + return _FakeBool(self._value) + + +class FakeTensor: + def __init__(self, finite: bool = True, size: int = 3): + self._finite = finite + self._size = size + + def numel(self) -> int: + return self._size + + def isfinite(self) -> _FakeFiniteResult: + return _FakeFiniteResult(self._finite) + + +class FakeTextEncoder: + def __init__(self, conditioning=None): + self.last_text = None + self.last_tokens = None + self._conditioning = conditioning + + def tokenize(self, text): + self.last_text = text + self.last_tokens = {"text": text} + return self.last_tokens + + def encode_from_tokens_scheduled(self, tokens): + if self._conditioning is not None: + return self._conditioning + return [[FakeTensor(), {"source": tokens["text"]}]] + + +class PromptStylerTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.library = style_library.get_cached_style_library(load_policy=style_library.LOAD_POLICY_STRICT) + cls.stable_node = nodes.PromptStylerConditioning() + cls.advanced_node = nodes.PromptStylerAdvancedConditioning() + cls.primary_choice = next(choice for choice in cls.library.choices if choice.endswith("| cinematic_anamorphic")) + cls.secondary_choice = next(choice for choice in cls.library.choices if choice.endswith("| cin_film_noir")) + + def test_apply_style_false_returns_raw_prompt(self): + encoder = FakeTextEncoder() + conditioning, styled_prompt = self.stable_node.encode( + prompt="red fox", + apply_style=False, + style=self.primary_choice, + template_variant="default", + style_id_override="", + text_encoder=encoder, + ) + self.assertEqual("red fox", styled_prompt) + self.assertEqual("red fox", encoder.last_text) + self.assertEqual(1, len(conditioning)) + + def test_style_id_override_takes_precedence(self): + encoder = FakeTextEncoder() + conditioning, styled_prompt = self.stable_node.encode( + prompt="portrait", + apply_style=True, + style=self.secondary_choice, + template_variant="default", + style_id_override="cinematic_anamorphic", + text_encoder=encoder, + ) + expected_style = style_library.resolve_style_legacy( + self.library, + choice=self.primary_choice, + style_id_override="cinematic_anamorphic", + ) + expected_prompt, _details = style_library.compose_prompt_legacy( + "portrait", + expected_style, + template_variant="default", + ) + self.assertEqual(expected_prompt, styled_prompt) + self.assertEqual(expected_prompt, encoder.last_text) + self.assertEqual(1, len(conditioning)) + + def test_legacy_default_variant_matches_expected_fixture(self): + encoder = FakeTextEncoder() + conditioning, styled_prompt = self.stable_node.encode( + prompt="cinematic film still, robot detective", + apply_style=True, + style=self.primary_choice, + template_variant="default", + style_id_override="", + text_encoder=encoder, + ) + expected = ( + "cinematic film still, professional cinematography, cinematic framing, carefully composed shot, " + "atmospheric depth, realistic lighting, cinematic, anamorphic look, shallow depth of field, " + "dramatic lighting, robot detective, film grain, subtle halation, rich contrast, color graded, " + "filmic color science, smooth highlight rolloff, deep blacks, subtle film grain, soft halation, " + "high dynamic range" + ) + self.assertEqual(expected, styled_prompt) + self.assertEqual(expected, encoder.last_text) + self.assertEqual(1, len(conditioning)) + + def test_missing_variant_falls_back_to_default(self): + style = self.library.by_id["cinematic_anamorphic"] + default_prompt, _default_details = style_library.compose_prompt_legacy( + "robot detective", + style, + template_variant="default", + ) + fallback_prompt, details = style_library.compose_prompt_legacy( + "robot detective", + style, + template_variant="missing_variant", + ) + self.assertEqual(default_prompt, fallback_prompt) + self.assertEqual(style_library.DEFAULT_VARIANT, details["variant"]) + + def test_advanced_node_matches_stable_node_for_simple_dropdown_flow(self): + stable_encoder = FakeTextEncoder() + advanced_encoder = FakeTextEncoder() + stable_conditioning, stable_prompt = self.stable_node.encode( + prompt="robot detective, rainy alley", + apply_style=True, + style=self.primary_choice, + template_variant="default", + style_id_override="", + text_encoder=stable_encoder, + ) + advanced_conditioning, advanced_prompt, resolved_style_id, resolved_style_meta = self.advanced_node.encode( + prompt="robot detective, rainy alley", + apply_style=True, + style=self.primary_choice, + template_variant="default", + style_id_override="", + text_encoder=advanced_encoder, + selection_mode="dropdown", + style_search="", + category_hint="", + tag_hint="", + style_strength="strong", + dedupe_mode="smart", + overlay_style_id="", + on_missing_style="error", + ) + self.assertEqual(stable_prompt, advanced_prompt) + self.assertEqual("cinematic_anamorphic", resolved_style_id) + self.assertIn('"status": "ok"', resolved_style_meta) + self.assertEqual(1, len(stable_conditioning)) + self.assertEqual(1, len(advanced_conditioning)) + + def test_invalid_conditioning_raises_explicit_error(self): + encoder = FakeTextEncoder(conditioning=[[FakeTensor(finite=False), {}]]) + with self.assertRaisesRegex(RuntimeError, "non-finite conditioning"): + nodes.encode_conditioning(encoder, "robot detective") + + def test_malformed_conditioning_raises_explicit_error(self): + encoder = FakeTextEncoder(conditioning=["bad"]) + with self.assertRaisesRegex(RuntimeError, "invalid conditioning item"): + nodes.encode_conditioning(encoder, "robot detective") + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file