Pattern Forge 1.0f — corresponding source
========================================

This archive is the corresponding source for the Pattern Forge 1.0f (beta) build distributed at
https://moddys.net/moddys-downloads.html and on the Releases page at
https://github.com/ModdySwag/PatternForge . It is offered at no charge, as the licence requires.

What it corresponds to
----------------------
  Version            1.0f (beta)
  Shipped app build  bd3d9cdc  (web build frozen into the installer)
  Installer          PatternForge-Setup-1.0f.exe
                     sha256 b9ff2ac905f1f60db50adc78403c638b26c651d09b3aa8845157901d8a781031
  Download wrapper   PatternForge-Setup-1.0f.exe.zip
                     sha256 3a6f5f17de73daa7fbcac8a13dad9c5f18e8fd95ccd95e569bbef2ad34abb164

Licence
-------
Pattern Forge is built on Strudel (https://strudel.cc), licensed AGPL-3.0-or-later.
The whole of this archive, and the build it corresponds to, are distributed under the same
licence. See LICENSE (the full AGPL-3.0 text) and THIRD-PARTY-NOTICES.md for the vendored
components and their origins. Your own songs and recordings are yours.

What is in here
---------------
  README.md              what the app is, what the desktop build needs, and where builds live
  app-source/            index.html — the application. It is a single self-contained HTML file;
                         opening it in a browser is running the app.
  build.py               assembles the frozen web build from the source tree
  src/                   the application source tree that build.py assembles
  windows/app/           the Electron desktop shell: main.js (window, vendor URL handler,
                         downloads, permissions), preload.js
  windows/installer/     patternforge.iss — the Inno Setup 6 script for the installer
  windows/tools/         build_windows.py (staging + installer build), make_icon.py,
                         install_journey.py (install/upgrade/uninstall proof),
                         take_desktop_shots.mjs (screenshots from the installed app)
  windows/verify/        test_desktop_app.mjs — the 48-check CDP suite run against the installed
                         program, plus its offline lane
  windows/version.json   version metadata used by the build
  windows/vendor/VENDOR.json
                         every third-party file the desktop build carries: upstream URL,
                         version and sha256. The vendor blobs themselves are NOT included here —
                         they are unmodified upstream files, fetched from the URLs in that
                         manifest (there is no point shipping copies of files you can get from
                         their own source of truth).
  LICENSE                AGPL-3.0
  THIRD-PARTY-NOTICES.md notice file shipped inside the installer

How the desktop build is made
-----------------------------
  1. python3 build.py                   -> frozen web build (index.html)
  2. cd windows && python3 tools/build_windows.py
       stages Electron + the frozen build + the vendored files, then runs Inno Setup 6 with
       installer/patternforge.iss to produce out/PatternForge-Setup-1.0f.exe
  3. node verify/test_desktop_app.mjs   -> the verification suite (add --offline for the
       no-network lane), run against the installed program over CDP, not against the source

The desktop shell makes no changes to the application file: the same frozen build that runs at
https://moddys.net/forge/ is the file inside the installer, byte for byte. The shell's only
trick is answering the app's CDN requests from local copies of those exact files.

Contact
-------
  modtech@gmail.com        https://moddys.net/moddys-downloads.html

Deviations: none. This is the exact source of the exact build.
