Repository navigation
Releases: pixeldj/batchcraft
Release list
batchcraft v1.2.0
batchcraft v1.2.0
This source-only macOS release adds the global Workflow Library (BC-026) and Workflow prompt
copying plus Prompt editing, notes and guarded deletion (BC-027). ComfyUI remains the workflow editor
and generation engine.
Scope: changes since v1.1.0 through main commit
516ed8d1633fdf310c8744de133e74dd6e933fa0 (merged PRs
#10 and
#11), plus the 1.2.0 metadata and release documentation.
See the full comparison and
v1.2.0 Release.
Included
Global Workflow Library
- Browse and search reusable Workflows without selecting a Project. Inspect exact Workflow revisions
and compatible Profile revisions with paged global lists and History. - Create a Workflow from pasted ComfyUI API-format JSON or a JSON-object file, then use the shared
Profile mapper. Cancelling Profile creation retains the saved Workflow. Editor-format conversion
and a competing node editor are not included. - Edit content through new immutable revisions, change logical names/descriptions separately, restore
old content as a new revision, and archive/unarchive families or revisions. Archive retains names;
it is not hard deletion. Profiles retain exact WorkflowVersion targets and never silently retarget. - Import exact Project setups into the global library without switching the active Project or Batch.
Add to Project creates independent Project-owned copies with new identities. Apply to Batch
is a separate guarded action with replacement confirmation and normal Preview invalidation.
Browsing, importing and copying alone preserve the draft and valid Preview. Copies do not follow
future source edits or merge merely because names/content match. - Import from current or historical Run Plan and Result Details, including image-viewer Details.
Historical import creates one global base Workflow plus exactly one Profile, not a concrete
Job's prompt, seed, Image Input or parameter overrides. It creates no intermediate Project copies.
The independent frozen-setup reader can work when execution/outputs are unavailable, but still
verifies immutable files, hashes and registered Project ownership. - Atomic copy and authoring receipts make unchanged retries return the same completed operation;
conflicting operation-ID reuse is rejected. Historical copy receipts can replay after source loss.
Closing a pending dialog stops browser waiting, not an already-running server transaction.
Global lists use 20-row pages and 20 sliding Previous bookmarks without limiting forward paging;
Project-source pickers retain their existing unpaginated contracts. These are UI/read bounds, not an
end-to-end performance guarantee. Unsent dialogs and the inline Added result are not durable recovery
state; successfully persisted copies remain available in their library.
Prompt Management
- Inspect the exact mapped Workflow prompt without changing the Workflow or creating a Prompt.
When no Prompt is selected, Use this prompt explicitly copies nonblank literal text into a new
Project Prompt Template and its first revision, preserving whitespace and placeholders. Review the
editable name first; defaults areWorkflow prompt,Workflow prompt 2, and so on. Missing,
connected or non-string inputs are not guessed. Normal Variable Binding validation still applies. - Edit Prompt on a selected row opens that exact revision. Saving changed text creates a new
revision and replaces only that row, preserving order and Variable Bindings while invalidating
Preview. Changed Project/Batch/selection guards prevent late application; library edits do not
automatically replace Batch selections. Unchanged text does not create another revision. - Mutable general notes belong to Prompt metadata, separate from immutable revision notes.
Name/general-note edits do not create a revision or invalidate Preview. - Delete Prompt permanently deletes a library Prompt and all its revisions after a named warning
and explicit confirmation. Remove it from the current unsaved Batch first. Any Saved Batch reference,
including archived Batches and any revision, blocks deletion until explicitly removed and saved.
No references or Batches are automatically cleared. Frozen Runs/Results remain unchanged; other
browser recovery snapshots keep unavailable exact text as detached resources.
Data And Upgrade Safety
Application version 1.2.0 does not change the v1 historical filesystem formats or browser
working-session Recovery v4. Existing Run bytes and the byte-locked v1 fixture remain unchanged.
BC-026 adds forward SQLite migrations relative to v1.1.0:
0005_global_workflow_library.sql: global catalog and atomic copy receipts.0006_global_workflow_authoring.sql: authoring receipts and bounded family/History indexes.
All previously applied migration bytes are preserved. Release finalization adds no migration,
dependency upgrade, compiler change or durable schema change. A supported v1.1.0 database advances through 0005/0006 on
normal backend startup; it is never reset. Existing Project records and Saved Batch ownership remain
Project-scoped. Maintenance code/build updates do not themselves apply migrations.
Back up the entire data root before upgrading. Finish active Runs and stop
all backends/data users first. Keep SQLite and any -wal/-shm sidecars together with Projects, Assets
and Run outputs; never delete sidecars manually. Unused global library resources are durable SQLite
application state, not a rebuildable historical index and not portable in a Project folder.
Project folders preserve setups captured by Runs, not every unused library item or Saved Batch.
SQLite alone does not preserve historical artifacts.
Rollback is not a code-only downgrade. After migration, restore the matching whole-data backup
deliberately, with consistent older code, dependencies, frontend build and installation metadata.
There is no automatic rollback or data restore. Test migration/restore on a separate copy, never the
only copy of user data. See backup policy,
ADR 0012 and
ADR 0016.
Installation remains source-only on macOS, using Git, uv with Python 3.13 or newer, and npm with Node.js
^22.22.2 || ^24.15.0 || >=26.0.0 (Node 24.15+ in the 24.x line recommended). Retain the source clone
and Git metadata: the installed app is a linked worktree, not a standalone bundle. ComfyUI, models and
custom nodes must be installed separately. For an existing installation, after finishing active Runs
and stopping daily and candidate backends, run from the source checkout:
uv run --directory backend python -m tools.update_daily --fetch --tag v1.2.0The updater confirms the selected revision, takes a timestamped whole-data backup, preserves configuration,
and installs locked dependencies and the built frontend. It leaves the app stopped. Start its app.command
after success; forward migrations run at normal startup. See maintenance instructions.
Verification
Post-metadata local verification passed on macOS using Python 3.14.7 and Node.js 24.19.0:
- 1,503 backend tests and 1,023 frontend tests.
- 56 desktop/mobile Chromium tests in each of Vite and built same-origin modes, with zero retries
and fresh temporary fake-backed data. - Ruff lint/format, mypy, ESLint, TypeScript, production build and frozen lockfile checks.
- 1.2.0 wheel/sdist identity, license and contents checks, plus three frontend distribution checks.
- Artifact-browser security: HTML/SVG download without execution; PNG and six-image queued bursts decode.
The owner explicitly accepted BC-026 and authorized publication and the safe everyday update. BC-027
also retains its recorded owner acceptance and requested default-name follow-up. Publication requires
green hosted checks on the release revision, including checkout/history secret scans; see
GitHub Actions for revision-specific evidence.
Known non-fatal warnings are an upstream Starlette/httpx deprecation and Vite's approximately
577 kB minified chunk warning. No test assertion, retry policy or build threshold was weakened.
No fresh dependency vulnerability audit or new live-ComfyUI, clean-machine, Safari, native-mobile or
Windows-hosted application acceptance is claimed. Fake ComfyUI does not prove model/custom-node
compatibility. The original v1 portability acceptance remains
historical evidence, not a newly repeated owner gate.
Limits
- Single-user local/trusted-LAN operation has no authentication. Do not expose the app to the internet.
- No automatic executor restart recovery, global durable scheduler, Exact Rerun or Recreate Result.
Load Run as Batch restores editable intent and requires fresh Preview; Random requests fresh seeds. - Stop-after-current does not interrupt ComfyUI; Stop waiting detaches local observation.
- No automatic synchronization of global and Project copies or export of unused global resources in
v1 Project folders./object_info, LoRA discovery and workflow images remain outside this scope. - Historical CSV remains raw data; import spreadsheet columns as text with formula evaluation disabled.
License And Security
batchcraft remains GPL-3.0-only; dependencies retain their own licenses. This release bundles no
dependency environment, browser, models or custom nodes. Distribution checks verify artifact identity,
license bytes and reviewed contents, not complete downstream distri...
batchcraft v1.1.0
batchcraft v1.1.0
This source-only macOS release adds appearance settings,
Project-wide historical browsing, safe installation maintenance, and Explicit seed range shorthand.
ComfyUI remains the workflow editor and generation engine.
Scope: changes from v1.0.0 through main commit f6e9f74261f6ef5633cfbdcc6e606115dc0e7009,
plus the 1.1.0 application metadata and release documentation. See the
full comparison and
v1.1.0 Release.
Included
Appearance
PR #6 adds Settings with System, Light, and Dark modes
and nine palettes: Jipiti, GitHub, Synthwave, Solarized, Dracula, Nord,
Monokai, Gruvbox, and Catppuccin. Jipiti preserves the original look. These are curated
light/dark adaptations, not exact upstream theme implementations. Mode and palette apply immediately
and persist independently per browser origin; they do not change Batch intent, Preview, or Run state.
Narrow layouts also account for non-overlay scrollbars.
Project Gallery And Runs
PR #7 completes the accepted scope of
BC-007:
- Batch, Gallery, and Runs navigation preserves the editable draft, valid in-memory Preview, and
current-Run monitoring. A compact monitor identifies the frozen Run's actual Project and Batch.
Cold loads still require a fresh Preview; review URLs never silently switch Project. - Gallery holds one page of up to 48 Results and Runs one page of up to 25 Runs, with
Previous/Next navigation, bounded cursor bookmarks, and a bounded frozen-Run cache. Browsing no longer
loads every Run's Results; detailed provenance is fetched only for the selected owning Run. - Search Run names/notes, sort newest/oldest deterministically, and filter by Run, historical Batch,
status, execution availability, dates, source Saved Batch, Prompt identity/revision, exact frozen
Workflow/Profile revisions, seed, typed parameter equality/Base/override, Image Input slot Asset/Base,
or Asset use in any slot. Job-level predicates combine with same-Job AND; Result filters match
that Result's producing Job. Base,false, zero, and empty strings remain distinct. - Historical choice search and editable filter chips use frozen indexed provenance, not current
mutable libraries. Invalid URL filter intent is rejected rather than silently altered. - Bounded Diagnostics is available independently of Gallery filter matches, with safe messages and
25-row pages. Its Refresh reads the index; Reindex Project is the explicit storage-repair action. - Filter Gallery is available from both historical and current-Run Result Details, including
Details opened inside image inspection. It retains unrelated filters, rejects cap violations without
truncation, and requires a matching verified Project instead of replacing the draft or switching it. - The Project Gallery image viewer uses a compact navigation/Details/Close toolbar without a visible
title. The uncropped image links to its original in a new tab. Narrow and short viewport layouts,
nested dialogs, keyboard navigation, and focus restoration have regression coverage. - History reads the last index immediately and reconciles on review activation and local Run
publication/completion. Identical pages remain stable; changed nonempty pages show History updated
pending Refresh. Failed scans retain known metadata with warnings. Stale images/original links are
disabled until validated, and missing browsing APIs explain when the backend needs restarting.
Explicit Seed Ranges
PR #9 adds inclusive shorthand to the existing
Explicit seed list: 5-10 expands to 5,6,7,8,9,10, while 10-5 descends by one. Mix ranges and
literals separated by commas or newlines; blank items are ignored, and order and duplicates are kept.
Values and endpoints must be integers in 0..9007199254740991 (2^53-1).
New frontend authoring permits at most 10,000 Explicit seeds in total, counted across all items
before allocating expanded seed values. The overall backend Job budget is separate. Invalid input
leaves Seeds incomplete and produces an actionable error without sending a Preview request.
Fixed, Explicit, and Random remain the only modes: there is no fourth mode or configurable Step.
BC-012 is Superseded, not an implemented Increment mode.
Saved Batches and Run snapshots still store numeric Explicit arrays; reload and Load Run as Batch
display newline-separated values. Historical arrays above the authoring cap remain readable in full.
This shorthand introduces no backend compiler, API, SQLite, or durable schema change.
Execution And Test Reliability
PR #7 fixes a production read race between persisted execution state and process-local task ownership.
Run/execution reads conservatively retain active ownership across completion reads so polling cannot
stop on an older nonterminal snapshot. This does not add executor restart recovery or change frozen
Run provenance.
PR #8 separately makes the API tests' functional
completion wait tolerate slower durable file persistence on CI: a configurable 10-second budget,
early failure for unexpected terminal states, and elapsed-time/last-response diagnostics. This is a
test-only wait change, not a production timeout increase, API performance guarantee, or relaxed
expected-status assertion. Earlier intermittent browser-timeout evidence remains historical; these
fixes are not a claim that every intermittent timeout has been explained.
Safe Installation Maintenance
PR #7 adds explicit macOS maintenance commands, run from the source checkout with daily and candidate
backends stopped:
uv run --directory backend python -m tools.refresh_testdefaults to the source checkout's
committed HEAD, excludes uncommitted application edits, replaces only a validated installer-owned
test candidate, and copies the entire offline daily data root without modifying daily data. It retains
the live ComfyUI host but uses loopback access; this is not the fake-backed automated-test instance.uv run --directory backend python -m tools.update_dailyselects stable version tags, takes a full
backup before changing code, installs locked dependencies, and rebuilds the frontend. Fetching tags
requires explicit--fetch;--tag v1.1.0selects this release.
Downgrades are refused.
Both commands validate installation ownership and paths, require confirmation, and leave servers
stopped. An incomplete daily update blocks launch for manual repair. There is no automatic installation,
update, rollback, data restore, or backup pruning. A candidate may retain a live host, but maintenance
itself submits no GPU work. See commands and failure recovery.
Installation And Data Safety
Follow Install From Source (macOS)
with --revision v1.1.0. Git, uv with Python 3.13 or newer, and Node.js/npm satisfying
^22.22.2 || ^24.15.0 || >=26.0.0 are required; Node 24.15+ in the 24.x line is recommended.
Keep the source clone and its Git metadata: the installed application is a pinned linked worktree,
not a standalone application bundle. ComfyUI, models, and custom nodes must be installed separately.
Back up the entire data root before updating an existing installation. Finish active Runs and stop
all backends/data users first. Preserve SQLite and any -wal/-shm sidecars together with Projects,
Assets, and Run outputs. Project folders alone do not preserve mutable libraries or Saved Batches;
SQLite alone does not preserve historical artifacts. Never delete sidecars manually.
Application version 1.1.0 does not change the v1 durable filesystem contract. Format versions,
historical Run bytes, and the byte-locked v1 fixture remain unchanged. Since v1.0.0, additive forward
SQLite migrations 0003_history_browsing and 0004_history_provenance add rebuildable history indexes
and typed provenance. Existing migration bytes are preserved; this release preparation adds no migration.
Migrations apply at the next normal backend launch, not during the maintenance update command.
Older indexes remain basically browsable; advanced filters need successful reconciliation/enrichment,
with Reindex Project available for explicit repair. GET browsing does not rewrite Project files.
Reverting code alone is not a database downgrade. After migration, returning to older code requires
a deliberate restore of its matching whole-data backup and consistent code/dependencies/build, not an
automatic rollback. Test migration and restore on a separate copy, never the only copy of user data.
See backup policy and
ADR 0012.
Validation
Local release-preparation checks passed on macOS on 2026-09-09, with the 1.1.0 metadata changes on
f6e9f74. uv sync --frozen refreshed only the editable application package; installed metadata,
the runtime version lookup, and the API health test agree on 1.1.0. Dependency versions are unchanged.
- Backend: 1,403 pytest tests passed. One upstream Starlette/httpx deprecation warning remains.
- Python quality: Ruff check passed; Ruff format checked 120 files; mypy pa...
batchcraft v1.0.0
batchcraft v1.0.0
The first source-only macOS release of batchcraft, a local-first experiment and batch
orchestration application for ComfyUI. ComfyUI remains the workflow editor and generation engine.
Included
- Project-scoped Prompt Templates, Variable Lists, Workflow Profiles, and Reference Assets.
- Saved Batches with named Image Inputs, typed Workflow Parameters, numeric Ranges, and Linked Parameter Sets.
- Deterministic Preview and frozen Run plans, including stored Random seed assignments.
- Sequential Job execution, Stop-after-current, current Results, and automatically refreshed Project History.
- Copied-Project import, filesystem-backed history recovery, and Load Run as Batch with explicit resource relinking/import.
- Request and expansion budgets, bounded ComfyUI responses, and verified Result downloads.
Installation
Follow Install From Source (macOS)
and select --revision v1.0.0. Git, uv with Python 3.13 or newer, and a supported Node.js/npm version
are required. ComfyUI, custom nodes, and models must be installed separately.
This release distributes source, not a standalone application bundle or prebuilt runtime.
Retain the source clone: the installed app is a pinned Git worktree that depends on its Git metadata.
Do not overwrite an existing installation or data root. Stop active work and make a consistent backup
before deliberately updating an everyday installation.
Validation
Release commit: ed601f626f2d6d81f24f7d40584e35588c0f3303.
The owner accepted clean macOS installation, copied-Project portability, Batch generation, and live Job
execution on candidate 79190eb; the release commit adds documentation and 1.0.0 package metadata.
Local checks passed 1,147 backend tests and 427 frontend tests. Hosted main and tag CI passed tests,
builds, fake-backed Chromium desktop/mobile browser coverage, artifact-security checks, and secret scans.
Dependency audits reported no known advisories for the audited dependency sets; these checks are not a
guarantee against all vulnerabilities or proof of every platform's compatibility.
Known Limits
- Single-user local/trusted-LAN operation without authentication. Do not expose the application to the internet.
- No automatic backend executor restart recovery or Exact Rerun. Load Run as Batch creates a new editable experiment.
- Stop-after-current does not interrupt the active ComfyUI Job. Stop waiting detaches local observation only.
- Automated browser coverage uses Chromium desktop/mobile viewports, not Safari or native mobile/Windows app acceptance.
- Resource budgets do not impose a total process-memory or temporary-download disk quota. HTTP timeouts are inactivity-based.
- Historical CSV is raw data: import spreadsheet columns as text with formula evaluation disabled.
License And Security
batchcraft is licensed under GPL-3.0-only; third-party dependencies retain their own licenses.
The source includes the license and build/install inputs. This release does not bundle models,
custom nodes, browsers, or dependency environments.
Report vulnerabilities privately through the repository's
security advisories, not public issues.
See SECURITY.md for deployment and reporting guidance.