Skip to content

forge-again v1.7.11

Choose a tag to compare

@logan71f100 logan71f100 released this 16 Aug 22:35
· 23 commits to main since this release

The progress bar now names the stage a run is really in, a run can stop at its first preview so a bad composition is caught in seconds, and the test suite can no longer write into your saved session.

Features

  • Pause after the first preview. A checkbox under the seed row stops a run as soon as there is something to look at, and the generate box becomes ✕ Cancel | ▶ Resume — catching a composition that is going wrong in the first few steps rather than after a full sampling pass. The pause runs on the sampler thread, deliberately: the other route to a preview runs on the HTTP thread, and blocking there would freeze the progress endpoint and take the Resume button down with it. It is armed per run from the UI rather than as a setting, so it travels with the request and arming it in one tab cannot stop a run started from another. Interrupt, Skip and Stop all break it, so a paused run stays cancellable. Verified end to end: a real generation paused at its first preview and resumed to completion.
  • The progress bar says which stage the run is in. "Queuing" used to be the answer to several different questions — the words came from whatever the API happened to put in textinfo, so a task the server had never heard of read as Waiting... (as though the server were waiting) and the model load read as Queued... (as though nothing had started). It now walks Sending…Waiting for the server…Accepted — 1 of 3 in queueLoading <checkpoint>…Encoding prompt… → the percentage. The distinction matters with more than one person on a server, where a queue is a normal state rather than a symptom: the server marks a task accepted the instant it enters the handler, and the wait after that is somebody else's run.
  • The load stages are reported, not guessed. Freeing VRAM, loading the checkpoint, hashing it on first sight, applying LoRAs and encoding the prompt each say so. Everything between the click and the first sampling step used to be invisible from the browser, and on a large GGUF that is the longest silent stretch of a run.

Fixes

  • The test suite no longer writes into your saved session. The harness copied config.json to a temp file so a run could never touch personal settings, but the session file sat at a fixed path — and the UI tier opens img2img, clicks around inside it and uploads a 128×128 image. All of that was faithfully captured into the real session, so a later restore opened and rebuilt an img2img tab that had never been configured. The session path is now redirected for test runs, and the check that watches it looks at the harness's own copy.
  • A legacy session no longer claims every tab was edited. Restoring only tabs you configured relies on knowing where edits happened, and a session written before that was recorded had no such record. Treating every tab in it as edited re-admitted precisely the tabs the rule exists to drop — permanently, since restoring re-marked them. It no longer guesses: a tab re-earns its place the moment it is actually touched.
  • A paused run reads as one sentence. The paused bar was three fragments run together — the client's label, the server's status text saying the same thing in other words, and the percentage left standing from the last step before the pause, which made a stopped run look like a moving one.

Upgrading

Pull and restart. JavaScript changes need a real server restart rather than a browser reload — the cache-buster is baked into the page at UI-creation time. No configuration or model changes are required, and the new pause checkbox is off by default, so nothing about an ordinary generation changes until you tick it.