Skip to content

feat: CANCEL stops a download on the GET MODS screen - #1133

Merged
vdmkenny merged 1 commit into
OpenReliant:mainfrom
zabka14:feat/cancel-download
Oct 13, 2026
Merged

vdmkenny merged 1 commit into
OpenReliant:mainfrom
zabka14:feat/cancel-download

Conversation

@zabka14

@zabka14 zabka14 commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

While the chosen mod downloads, the INSTALL button reads CANCEL. It stops the download, which deletes its part file, and the panel says CANCELING until the download's thread has stopped. Then the panel shows the mod as it was before, with no failure message, and INSTALL or UPDATE are available again. The button is dimmed while another mod is chosen, and leaving the screen still lets a download go on.

web.Download.cancel asks the thread to stop and keeps the download until it has answered error.Canceled, unlike abandon, so the screen knows when the part file is gone and an install of the same mod started right after can't run into its deletion. Install.cancel and the state cancelled build on it. The test server can hold a transfer after its first byte, which the new tests of web.zig, catalogue.zig and mod_catalogue.zig use.

Left: updates shown on the mods screen (#1041).

Closes #1040

A download that had started ran to its end: only closing the front end
stopped it. While the chosen mod downloads, the INSTALL button now reads
CANCEL and stops the download, which deletes its part file. The screen
keeps polling the download until its thread has stopped, so that an
install of the same mod started right after can't run into the part file
being deleted. The panel says CANCELING meanwhile, then shows the mod as
before, with no failure message.

Closes OpenReliant#1040
@vdmkenny

Copy link
Copy Markdown
Collaborator

Thanks!

@vdmkenny
vdmkenny merged commit 0f7ef45 into OpenReliant:main Oct 13, 2026
4 checks passed
vdmkenny pushed a commit that referenced this pull request Oct 13, 2026
The mods screen now says which of its mods the catalogue offers in a
newer version: the mod is gold in the list, and its panel says UPDATE
AVAILABLE IN GET MODS with the version. The same rule as UPDATE on GET
MODS decides it (`offeredFor`, shared by both screens): not for a folder
copied in by hand, nor for a mod that needs a newer OpenReliant. GET
MODS, opened from the mods screen, chooses the mod the mods screen had
chosen, unfolding its group.

The mods screen reads nothing itself. It has the GET MODS screen read
the repositories in the background as it opens, once per run
(`readInBackground`, `continueReading`), so there is one reader and one
catalogue, kept until RELOAD. A reading GET MODS leaves behind goes on
from the mods screen too.

**The switch.** This makes the mods screen connect to the web, which
only GET MODS did until now. I put it under the existing CHECK FOR
UPDATES setting (`UpdateCheck`, `--no-update-check`), so one switch
covers everything OpenReliant checks for on its own: the release check
and the mods' updates. Unticked, the mods screen reads nothing, but
still shows what GET MODS has read. The docs say that the repository's
server sees the player's address then, as GitHub does for the release
check. Does sharing the switch suit you? The alternatives are a setting
of its own for the mods, or no setting at all, reading whenever the
settings file names a repository. I'm happy to change it to either.

This branch is from `main` and doesn't include #1133 (CANCEL on GET
MODS); both touch `mod_catalogue.zig`, so I'll rebase whichever goes
second.

Closes #1041
vdmkenny pushed a commit that referenced this pull request Oct 13, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.13.0](v0.12.0...v0.13.0)
(2026-10-13)


### Features

* CANCEL stops a download on the GET MODS screen
([#1133](#1133))
([0f7ef45](0f7ef45)),
closes [#1040](#1040)
* definitions of mission source for luau-lsp
([#1143](#1143))
([3232a4b](3232a4b)),
closes [#1142](#1142)
* Luau's own parser reads mission source
([#1134](#1134))
([466f5cd](466f5cd)),
closes [#1132](#1132)
* mission scripts read as statements and lower back to the same bytes
([#1128](#1128))
([3e0b0e8](3e0b0e8)),
closes [#1127](#1127)
* OpenReliant has an icon
([#1161](#1161))
([cb84620](cb84620)),
closes [#670](#670)
* releases list checksums and attest their builds
([#1158](#1158))
([a861aaa](a861aaa)),
closes [#1157](#1157)
* scripts can have a missile home, as the AI's Screamers do
([#1154](#1154))
([f8eec1e](f8eec1e)),
closes [#1119](#1119)
* sltool dte build compiles mission source into a mission file
([#1137](#1137))
([6830dd2](6830dd2)),
closes [#1136](#1136)
* sltool dte decompile writes a mission as Luau source
([#1131](#1131))
([38e85b5](38e85b5)),
closes [#1130](#1130)
* the mods screen says which installed mods have an update
([#1135](#1135))
([a5542d6](a5542d6)),
closes [#1041](#1041)
* the music example replaces the main menu's piece and keeps its loop
point ([#1129](#1129))
([98a5f9a](98a5f9a))
* the reference of mission source, generated from the game's tables
([#1147](#1147))
([e061179](e061179)),
closes [#1146](#1146)
* the Windows executables carry version information and a manifest
([#1156](#1156))
([022abc2](022abc2)),
closes [#1138](#1138)


### Fixes

* GET MODS gives up on stalled servers, never holds up quitting, and
keeps remote links off the player's machine
([#1124](#1124))
([0d05d1e](0d05d1e)),
closes [#1114](#1114)
[#1069](#1069)
[#1070](#1070)
* the scripting API's definitions load in current luau-lsp
([#1141](#1141))
([87fa067](87fa067)),
closes [#1140](#1140)
* the scripting definitions load in luau-lsp's new type solver
([#1152](#1152))
([b049449](b049449)),
closes [#1139](#1139)


### Documentation

* a guide to writing missions, for beginners
([#1149](#1149))
([04289ef](04289ef)),
closes [#1148](#1148)
* the mission guide shows how to change one of the game's missions
([#1151](#1151))
([fb7d9e7](fb7d9e7)),
closes [#1150](#1150)
* why a trigger's code and fields aren't typed by its condition
([#1153](#1153))
([3a08501](3a08501)),
closes [#1144](#1144)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cancel a download in progress on the GET MODS screen

2 participants