Factory.ai

Open-Source Wikis

/

Stable Diffusion WebUI

/

Lore

AUTOMATIC1111/stable-diffusion-webui

Lore

The story of how stable-diffusion-webui evolved from a single-file 4chan-posted Gradio script into the dominant open-source Stable Diffusion UI. Every event below is anchored to a date derived from git history; speculation is hedged with phrases like "appears to" or "likely".

Eras

The four-thousand-line origin (Aug 2022)

The repository's first public commit is 3324f31e — "first" on 2022-08-22, four days after Stable Diffusion 1.4 was publicly released. The README at that point credited an "Initial Gradio script — posted on 4chan by an Anonymous user." The early commits are largely AUTOMATIC1111 splitting that single script into proper modules, adding GFPGAN, prompt matrix, and grids:

  • b63d0726 adds GFPGAN as a tab and an img2img option.
  • 3395c291 introduces prompt matrix, per-batch seeds, and CSV logging.
  • By the end of August 2022 the project already shipped the txt2img and img2img tabs that are still recognisable today.

The first explosion (Sep–Dec 2022)

Activity peaked at 1,328 commits in October 2022, the highest single month in the project's history. The codebase grew from a hobby project into a community hub. Notable additions:

  • Sep 2022 — Textual Inversion arrived with prompt parsing improvements and the embeddings/ folder.
  • Oct 2022 — The cross-attention layer optimisations (Doggettx, InvokeAI, sub-quadratic) landed in modules/sd_hijack_optimizations.py; xFormers integration followed a few weeks later.
  • Oct 2022 — The Extras tab and the X/Y plot script (precursor of X/Y/Z grid) were added.
  • Nov 2022 — The script and extension system were generalised; scripts/ and the extensions tab appeared.
  • Dec 2022 — Stable Diffusion 2.0 support was added shortly after upstream's release; the configs/v2-inference*.yaml files entered the tree.

Hypernetworks and the training tab (Oct 2022 – early 2023)

Hypernetworks, contributed mostly by AngelBottomless and others, gave the UI a second extra-network primitive after textual-inversion. They were positioned as a "lightweight fine-tune" mechanism:

  • The training tab, dataset preprocessing (BLIP/deepdanbooru autotagging), and learning-rate schedules all date from this period.
  • Hypernetworks have since been deprecated in favour of Lora. The code in modules/hypernetworks/hypernetwork.py is still functional but has not seen meaningful changes in over a year.

The release-tag era begins (Jul 2023)

For the first ~10 months the project did not have version tags; users tracked master directly. The first tag, v1.4.0 on 2023-06-27, marked the start of a release process with dev/release_candidate/master branches. Subsequent tags:

Tag Date Highlights
v1.4.0 2023-06-27 First tagged release
v1.5.0 2023-07-25 SDXL 0.9/1.0 support, refiner, Lora built-in
v1.6.0 2023-08-31 Switch to Gradio 3.41, redesigned UI, image embeddings
v1.7.0 2023-12-16 New samplers, model hash caching, settings reorganisation
v1.8.0 2024-03-02 Restart sampler, generation profiler, perf work
v1.9.0 2024-04-13 Schedulers split from samplers, model loading rewrite
v1.9.4 2024-05-28 Bugfix release
v1.10.0 2024-07-27 Stable Diffusion 3 support, six "Performance N/6" PRs
v1.10.1 2024-07-27 Last commit on master to date

The SDXL retrofit (Jul–Aug 2023)

SDXL's release in July 2023 forced large changes:

Schedulers split off (Apr 2024)

For most of the project's life "sampler" meant both algorithm and sigma schedule (e.g., Euler a Karras). v1.9 separated them:

  • modules/sd_schedulers.py lists schedules (Karras, Exponential, Polyexponential, …) as first-class objects.
  • The UI grew a Schedule Type dropdown next to the Sampler dropdown.
  • get_sampler_and_scheduler() in modules/sd_samplers.py handles backward-compatible parsing of legacy infotext like "Sampler: Euler a Karras".
  • Align Your Steps, KL Optimal, Beta, Normal, Simple and DDIM schedulers all arrived between v1.9 and v1.10.

Stable Diffusion 3 and a quiet ending (Jul 2024)

v1.10 was a major release: SD3 support landed via modules/models/sd3/ and a series of six "Performance" PRs (#15803–#15820) shaved tens of percent off generation time. The last commit on master is 82a973c0 — changelog from 2024-07-27.

Since then the dev branch has continued to receive commits, but no new release has been cut. The project appears to have entered a maintenance phase, with users migrating to forks (notably vladmandic/automatic and the various ComfyUI-style alternatives) for newer model support.

Longest-standing features

These have survived essentially intact since the first month of the project:

  • Prompt attention syntax ((word), [word], (word:1.2)) — the Lark grammar in modules/prompt_parser.py has had additions but the core parser is from Sep 2022.
  • The X/Y plot script — added in October 2022, eventually grew a Z dimension and CSV input. scripts/xyz_grid.py is the largest "user-script" file at ~38 KB.
  • The script callback system — established before the extensions tab existed (Q4 2022) and has only added new callbacks; none have been removed.
  • process_images() shapeStableDiffusionProcessingprocess_images_innerProcessed was introduced in late 2022 and remains the primary contract for both UI and API.

Deprecated or removed features

Feature Introduced Status Replacement
Hypernetworks training ~Oct 2022 Deprecated, still functional Lora
--opt-split-attention-v1 Late 2022 Kept for compatibility --opt-sdp-attention
Aesthetic Gradients Late 2022 Removed from core; lives as external extension
Default sampler "DDIM (compvis)" Early 2023 Removed k-diffusion DDIM
--always-batch-cond-uncond 2022 "does not do anything" — kept as a no-op flag always-on optimisation
dont_fix_second_order_samplers_schedule setting 2023 Removed in v1.10 (#16061)
--max-batch-count 2022 Marked defunct in v1.10 (#16119) settings page
Old hires-fix path 2022 Replaced; legacy path remains as old_hires_fix_first_pass_dimensions() new hires fix

Major rewrites

  • Cross-attention optimiser dispatcher (Q4 2022) — moved from a single if/else ladder to a list of SdOptimization objects in modules/sd_hijack_optimizations.py that scripts can extend via the list_optimizers callback.
  • Lora subsystem (Q3 2023) — collapsed multiple ad-hoc scripts into extensions-builtin/Lora/networks.py plus per-type network_*.py strategies.
  • Model loading (early 2024) — sd_models.py load_model_weights was largely rewritten to support shared text encoders, refiner switching, and SDXL inpainting.
  • Settings tab (v1.6, mid-2023) — switched from a flat list to categorised tabs; settings now declared with section/category metadata in modules/shared_options.py.

Growth trajectory

xychart-beta horizontal
    title "Commits per quarter (selected)"
    x-axis ["2022-Q3", "2022-Q4", "2023-Q1", "2023-Q2", "2023-Q3", "2023-Q4", "2024-Q1", "2024-Q2"]
    y-axis "Commits" 0 --> 2500
    bar [915, 2023, 1193, 1078, 1191, 506, 596, 301]

Roughly half of the project's commits occurred in its first six months. Activity has tapered every year since, in line with the open-source pattern of "the founder gradually pulls back as forks specialise."

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – Stable Diffusion WebUI wiki | Factory