From 5b6e8d7b931eed00e37c484d22e5eef4c916b48a Mon Sep 17 00:00:00 2001 From: kellylford Date: Sat, 10 Oct 2026 09:56:42 -0500 Subject: [PATCH] Point the updater, release checks and docs at TheIdeaPlace/rssquick The repo moved from kellylford to the TheIdeaPlace org. Installed copies keep finding updates through GitHub's redirect; this makes the next release use the new address directly. Bundle ids are unchanged. Co-Authored-By: Claude Opus 5.5 --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/workflows/release.yml | 2 +- CLAUDE.md | 2 +- CODE_OF_CONDUCT.md | 2 +- CONTRIBUTING.md | 2 +- Directory.Build.props | 2 +- README.md | 6 +++--- RELEASE-NOTES-v1.0.md | 2 +- SECURITY.md | 2 +- build/publish.ps1 | 2 +- docs/privacy.html | 2 +- docs/store/LISTING.md | 4 ++-- ios/README.md | 4 ++-- ios/WhatToTest.txt | 2 +- ios/scripts/asc.py | 2 +- macos/Sources/RSSQuickCore/FeedLoader.swift | 2 +- macos/Sources/RSSQuickCore/ReleaseCheck.swift | 4 ++-- macos/Tests/RSSQuickCoreTests/ReleaseCheckTests.swift | 4 ++-- macos/Tests/RSSQuickUITests/UpdateNoticeTests.swift | 2 +- macos/build/make-dmg.sh | 2 +- src/RSSQuick/Services/AppUpdater.cs | 2 +- src/RSSQuick/Services/FeedLoader.cs | 2 +- src/RSSQuick/Services/ReleaseCheck.cs | 4 ++-- tests/RSSQuick.Tests/ReleaseCheckTests.cs | 4 ++-- tests/RSSQuick.Tests/UpdateOfferTests.cs | 2 +- 25 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 79c7af0..870b65a 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: true contact_links: - name: Question or general feedback - url: https://github.com/kellylford/rssquick/discussions + url: https://github.com/TheIdeaPlace/rssquick/discussions about: Ask a question or share an idea that is not a bug report. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 31f3b9c..5385910 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: package: runs-on: windows-latest # Runs in the `azure-signing` environment so the OIDC token's subject is - # repo:kellylford/rssquick:environment:azure-signing, which is what the Azure federated + # repo:TheIdeaPlace@340125137/rssquick@1046409088:environment:azure-signing (numeric-id form; moved from kellylford on 2026-10-10), which is what the Azure federated # credential trusts - the tenant does not accept wildcard tag subjects. The same arrangement # as QuickMail. It is only there to match that claim: add no protection rules to it, or every # run will wait for approval. Signing itself still happens only on v* tags, below. diff --git a/CLAUDE.md b/CLAUDE.md index 2824ef4..bc4f4c4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,7 +116,7 @@ Both artefacts are **self-contained single-file** builds, so neither needs .NET The installer is Velopack's, and it is what makes an installed copy update itself. `build/publish.ps1` runs `vpk pack` over the same single-file build the portable ZIP holds, installing per-user into `%LocalAppData%\RSSQuick` (no UAC prompt, and no prompt to update either), and renames Setup.exe to the `RSSQuick--setup-win-.exe` pattern the Inno Setup installer used. The update feed — `.nupkg` packages plus `releases.*.json`, `assets.*.json` and `RELEASES*` for both channels — goes on the GitHub release alongside the downloads; `release.yml` lists each file with `fail_on_unmatched_files`, so a change in what vpk writes fails the release rather than publishing one installed copies cannot read. It also runs `vpk download github` first, so each release carries a delta against the last. -**Code signing** is Azure Artifact Signing, the same account (`kellylford`) and certificate profile (`kellyford-public`) as QuickMail, on `v*` tags only. There is no certificate in the repository or in a secret: the release job runs in the `azure-signing` environment, `azure/login` trades its OIDC token for Azure credentials (the federated credential trusts the subject `repo:kellylford/rssquick:environment:azure-signing`), and the signing tools use that session. The job runs `publish.ps1 -Step Publish`, signs `RSSQuick.exe` in `artifacts/staging` with `azure/artifact-signing-action`, then `-Step Package -AzureSignFile`, where vpk signs Setup, the updater and its launcher stub, and skips the program because it is already signed. Signing between the steps is what gets a signed program into the portable ZIP. A last step fails the release if any downloadable `.exe`, the program inside either ZIP, or any program inside a full update package is not validly signed. Never add protection rules to the `azure-signing` environment; it exists only to match the OIDC subject. +**Code signing** is Azure Artifact Signing, the same account (`kellylford`) and certificate profile (`kellyford-public`) as QuickMail, on `v*` tags only. There is no certificate in the repository or in a secret: the release job runs in the `azure-signing` environment, `azure/login` trades its OIDC token for Azure credentials (the federated credential `gh-rssquick-immutable` trusts the subject `repo:TheIdeaPlace@340125137/rssquick@1046409088:environment:azure-signing`; the repo moved from kellylford to the TheIdeaPlace org on 2026-10-10), and the signing tools use that session. The job runs `publish.ps1 -Step Publish`, signs `RSSQuick.exe` in `artifacts/staging` with `azure/artifact-signing-action`, then `-Step Package -AzureSignFile`, where vpk signs Setup, the updater and its launcher stub, and skips the program because it is already signed. Signing between the steps is what gets a signed program into the portable ZIP. A last step fails the release if any downloadable `.exe`, the program inside either ZIP, or any program inside a full update package is not validly signed. Never add protection rules to the `azure-signing` environment; it exists only to match the OIDC subject. Installed copies read the feed from the latest *published* release. `release.yml` makes a draft, so nothing updates until a person has checked the build and published it. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index aaf9185..171193c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -4,4 +4,4 @@ This project follows the [Contributor Covenant](https://www.contributor-covenant By taking part you agree to keep this a welcoming, respectful place for everyone, whatever their background or level of experience. -To report a concern, contact Kelly Ford through a private GitHub message or through the [issue tracker](https://github.com/kellylford/rssquick/issues). +To report a concern, contact Kelly Ford through a private GitHub message or through the [issue tracker](https://github.com/TheIdeaPlace/rssquick/issues). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 407ba17..4873e4b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,6 +52,6 @@ Two details that have caused real bugs and are easy to reintroduce: ## Reporting bugs -Use the [issue templates](https://github.com/kellylford/rssquick/issues/new/choose). There is a dedicated accessibility template; please use it for anything involving a screen reader, braille display, magnifier, or keyboard-only use. Those are treated as bugs rather than enhancements, and you do not need to work out the cause — describing what you heard or could not reach is the useful part. +Use the [issue templates](https://github.com/TheIdeaPlace/rssquick/issues/new/choose). There is a dedicated accessibility template; please use it for anything involving a screen reader, braille display, magnifier, or keyboard-only use. Those are treated as bugs rather than enhancements, and you do not need to work out the cause — describing what you heard or could not reach is the useful part. Security issues go through [SECURITY.md](SECURITY.md) instead, not the public tracker. diff --git a/Directory.Build.props b/Directory.Build.props index c5aec6f..76c5933 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -42,7 +42,7 @@ script reads it, and it lands in the executable's file version from here. --> <_VersionFromFile>$([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)VERSION')) $(_VersionFromFile.Trim()) - https://github.com/kellylford/rssquick + https://github.com/TheIdeaPlace/rssquick git diff --git a/README.md b/README.md index 9555186..1808b09 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ focus lands and what the status bar says, so it does not quietly break. ## Download -Everything is on the [Releases page](https://github.com/kellylford/rssquick/releases). Each +Everything is on the [Releases page](https://github.com/TheIdeaPlace/rssquick/releases). Each release also carries files ending in `.nupkg` and `.json` and a file called `RELEASES`; those are for installed copies to update themselves, and you do not need them. @@ -217,10 +217,10 @@ for all users, in Program Files, is left for you to remove from Installed Apps. ## Found a problem? -Please open an [accessibility issue](https://github.com/kellylford/rssquick/issues/new/choose) +Please open an [accessibility issue](https://github.com/TheIdeaPlace/rssquick/issues/new/choose) for anything to do with a screen reader, braille display, magnifier or keyboard use. You do not need to work out the cause; describing what you heard, or what you could not reach, is the -useful part. Bugs and ideas are welcome on the [issue tracker](https://github.com/kellylford/rssquick/issues) +useful part. Bugs and ideas are welcome on the [issue tracker](https://github.com/TheIdeaPlace/rssquick/issues) too. Security issues go through the [security policy](SECURITY.md). ## Building from source diff --git a/RELEASE-NOTES-v1.0.md b/RELEASE-NOTES-v1.0.md index 38ff037..274003e 100644 --- a/RELEASE-NOTES-v1.0.md +++ b/RELEASE-NOTES-v1.0.md @@ -17,4 +17,4 @@ - If .NET 8.0 Runtime is missing, you’ll be prompted to install it ## Feedback & Contributions -- Found a bug? Have an idea? Visit the [GitHub Issues page](https://github.com/kellylford/rssquick/issues) to get involved! +- Found a bug? Have an idea? Visit the [GitHub Issues page](https://github.com/TheIdeaPlace/rssquick/issues) to get involved! diff --git a/SECURITY.md b/SECURITY.md index 473391b..955f2e0 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,7 +4,7 @@ **Please do not open a public GitHub issue for a security vulnerability.** -Use GitHub's private vulnerability reporting: on the [Security tab](https://github.com/kellylford/rssquick/security) of this repository, choose **Report a vulnerability**. If you cannot use that, send a private message to [@kellylford](https://github.com/kellylford) on GitHub. +Use GitHub's private vulnerability reporting: on the [Security tab](https://github.com/TheIdeaPlace/rssquick/security) of this repository, choose **Report a vulnerability**. If you cannot use that, send a private message to [@kellylford](https://github.com/kellylford) on GitHub. Please include: diff --git a/build/publish.ps1 b/build/publish.ps1 index cd73d67..6d19b29 100644 --- a/build/publish.ps1 +++ b/build/publish.ps1 @@ -147,7 +147,7 @@ in its status bar and offers the download page. RSS.opml in this folder is the feed list loaded at startup. Replace it with your own, or use the "Import OPML File" button to load a different one. -Source and issues: https://github.com/kellylford/rssquick +Source and issues: https://github.com/TheIdeaPlace/rssquick "@ | Set-Content -Path (Join-Path $outDir 'README-PORTABLE.txt') -Encoding UTF8 } diff --git a/docs/privacy.html b/docs/privacy.html index fa5273f..c2cfb68 100644 --- a/docs/privacy.html +++ b/docs/privacy.html @@ -139,7 +139,7 @@

Changes

Questions

-

RSS Quick is free, open source software by Kelly Ford. Email support@theideaplace.net, or ask a question or report a problem on RSS Quick's GitHub issues page, where you can also read every line of its source code.

+

RSS Quick is free, open source software by Kelly Ford. Email support@theideaplace.net, or ask a question or report a problem on RSS Quick's GitHub issues page, where you can also read every line of its source code.

diff --git a/docs/store/LISTING.md b/docs/store/LISTING.md index 10f65f7..2c52426 100644 --- a/docs/store/LISTING.md +++ b/docs/store/LISTING.md @@ -59,11 +59,11 @@ https://theideaplace.net/projects/RSSQuick/privacy.html ## Website -https://github.com/kellylford/rssquick +https://github.com/TheIdeaPlace/rssquick ## Support contact -support@theideaplace.net (issues also at https://github.com/kellylford/rssquick/issues) +support@theideaplace.net (issues also at https://github.com/TheIdeaPlace/rssquick/issues) ## Copyright diff --git a/ios/README.md b/ios/README.md index 79c8f63..b212e8c 100644 --- a/ios/README.md +++ b/ios/README.md @@ -140,8 +140,8 @@ macOS, and Apple rejects App Store builds made on one. Both are driven by ```bash # Keychain Access -> login -> My Certificates -> "Apple Distribution: Kelly Ford (P887QF74N8)" # (it must have a private key under it) -> Export -> dist.p12, with a password. -base64 -i dist.p12 | gh secret set IOS_DIST_CERT_P12 -R kellylford/rssquick -gh secret set IOS_DIST_CERT_PASSWORD -R kellylford/rssquick # paste the export password +base64 -i dist.p12 | gh secret set IOS_DIST_CERT_P12 -R TheIdeaPlace/rssquick +gh secret set IOS_DIST_CERT_PASSWORD -R TheIdeaPlace/rssquick # paste the export password rm dist.p12 ``` diff --git a/ios/WhatToTest.txt b/ios/WhatToTest.txt index 3bef900..0b5147f 100644 --- a/ios/WhatToTest.txt +++ b/ios/WhatToTest.txt @@ -22,4 +22,4 @@ What to try - Import an OPML file exported from another feed reader, and make it your default. - Try it with a braille display, and with larger text sizes. -Tell us what you find with the Send Beta Feedback option in TestFlight, or at https://github.com/kellylford/rssquick/issues. Anything about VoiceOver, braille or reading is especially welcome. You do not need to know the cause; what you heard, or could not reach, is the useful part. +Tell us what you find with the Send Beta Feedback option in TestFlight, or at https://github.com/TheIdeaPlace/rssquick/issues. Anything about VoiceOver, braille or reading is especially welcome. You do not need to know the cause; what you heard, or could not reach, is the useful part. diff --git a/ios/scripts/asc.py b/ios/scripts/asc.py index 8ffbdf1..ed4fcf5 100644 --- a/ios/scripts/asc.py +++ b/ios/scripts/asc.py @@ -198,7 +198,7 @@ def fit_whats_new(text, limit=4000): """ if len(text) <= limit: return text - more = "\n\nThe full list is in CHANGELOG.md at https://github.com/kellylford/rssquick" + more = "\n\nThe full list is in CHANGELOG.md at https://github.com/TheIdeaPlace/rssquick" cut = text[: limit - len(more)] last_bullet = cut.rfind("\n- ") if last_bullet > 0: diff --git a/macos/Sources/RSSQuickCore/FeedLoader.swift b/macos/Sources/RSSQuickCore/FeedLoader.swift index 4cdf96b..fd4c2a7 100644 --- a/macos/Sources/RSSQuickCore/FeedLoader.swift +++ b/macos/Sources/RSSQuickCore/FeedLoader.swift @@ -59,7 +59,7 @@ public enum FeedLoader { configuration.urlCache = nil configuration.httpAdditionalHeaders = [ // Some publishers reject requests with no User-Agent, or serve them a challenge page. - "User-Agent": "RSSQuick/1.1 (\(platform); +https://github.com/kellylford/rssquick)", + "User-Agent": "RSSQuick/1.1 (\(platform); +https://github.com/TheIdeaPlace/rssquick)", "Accept": "application/rss+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.9, */*;q=0.5", // Most feeds are served compressed and are several times smaller for it. "Accept-Encoding": "gzip, deflate", diff --git a/macos/Sources/RSSQuickCore/ReleaseCheck.swift b/macos/Sources/RSSQuickCore/ReleaseCheck.swift index e9fd468..f6a840c 100644 --- a/macos/Sources/RSSQuickCore/ReleaseCheck.swift +++ b/macos/Sources/RSSQuickCore/ReleaseCheck.swift @@ -27,7 +27,7 @@ public struct AvailableRelease: Sendable, Equatable { /// The Windows version is `src/RSSQuick/Services/ReleaseCheck.cs`. The two answer the same /// questions, and their tests should change together. public enum ReleaseCheck { - public static let latestReleaseAPI = URL(string: "https://api.github.com/repos/kellylford/rssquick/releases/latest")! + public static let latestReleaseAPI = URL(string: "https://api.github.com/repos/TheIdeaPlace/rssquick/releases/latest")! /// The end of the disk image's name, which `build/make-dmg.sh` gives every release. public static let macAssetSuffix = "-macos.dmg" @@ -40,7 +40,7 @@ public enum ReleaseCheck { configuration.urlCache = nil configuration.httpAdditionalHeaders = [ // GitHub's API refuses requests with no User-Agent. - "User-Agent": "RSSQuick (+https://github.com/kellylford/rssquick)", + "User-Agent": "RSSQuick (+https://github.com/TheIdeaPlace/rssquick)", "Accept": "application/vnd.github+json", ] return URLSession(configuration: configuration) diff --git a/macos/Tests/RSSQuickCoreTests/ReleaseCheckTests.swift b/macos/Tests/RSSQuickCoreTests/ReleaseCheckTests.swift index 393dfa5..30236e7 100644 --- a/macos/Tests/RSSQuickCoreTests/ReleaseCheckTests.swift +++ b/macos/Tests/RSSQuickCoreTests/ReleaseCheckTests.swift @@ -15,7 +15,7 @@ struct ReleaseCheckTests { asset: String = "RSSQuick-1.3.0-macos.dmg", draft: Bool = false, prerelease: Bool = false, - page: String = "https://github.com/kellylford/rssquick/releases/tag/v1.3.0" + page: String = "https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0" ) -> String { """ { @@ -43,7 +43,7 @@ struct ReleaseCheckTests { #expect(found == AvailableRelease( version: "1.3.0", - page: URL(string: "https://github.com/kellylford/rssquick/releases/tag/v1.3.0")!)) + page: URL(string: "https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0")!)) } @Test("The release that is running is not offered") diff --git a/macos/Tests/RSSQuickUITests/UpdateNoticeTests.swift b/macos/Tests/RSSQuickUITests/UpdateNoticeTests.swift index 42f1b39..c847440 100644 --- a/macos/Tests/RSSQuickUITests/UpdateNoticeTests.swift +++ b/macos/Tests/RSSQuickUITests/UpdateNoticeTests.swift @@ -12,7 +12,7 @@ import RSSQuickCore struct UpdateNoticeTests { private static let release = AvailableRelease( version: "1.3.0", - page: URL(string: "https://github.com/kellylford/rssquick/releases/tag/v1.3.0")!) + page: URL(string: "https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0")!) private static let notice = "RSS Quick 1.3.0 is available. Download RSS Quick 1.3.0 in the RSS Quick menu opens its page" diff --git a/macos/build/make-dmg.sh b/macos/build/make-dmg.sh index e84e329..9f23e56 100755 --- a/macos/build/make-dmg.sh +++ b/macos/build/make-dmg.sh @@ -74,7 +74,7 @@ REQUIREMENTS macOS 13 Ventura or newer, on either Apple silicon or Intel. -https://github.com/kellylford/rssquick +https://github.com/TheIdeaPlace/rssquick READ rm -f "$dmg" diff --git a/src/RSSQuick/Services/AppUpdater.cs b/src/RSSQuick/Services/AppUpdater.cs index 06cafa7..214ab6b 100644 --- a/src/RSSQuick/Services/AppUpdater.cs +++ b/src/RSSQuick/Services/AppUpdater.cs @@ -34,7 +34,7 @@ public sealed record UpdateOffer(string Version, Uri Page, bool ReadyToInstall); /// public sealed class AppUpdater : IDisposable { - public const string RepositoryUrl = "https://github.com/kellylford/rssquick"; + public const string RepositoryUrl = "https://github.com/TheIdeaPlace/rssquick"; private readonly UpdateManager? _manager; diff --git a/src/RSSQuick/Services/FeedLoader.cs b/src/RSSQuick/Services/FeedLoader.cs index 3db8570..ed9272c 100644 --- a/src/RSSQuick/Services/FeedLoader.cs +++ b/src/RSSQuick/Services/FeedLoader.cs @@ -72,7 +72,7 @@ private static HttpClient CreateClient() }; // Some publishers reject requests with no User-Agent, or serve them a challenge page. - client.DefaultRequestHeaders.UserAgent.ParseAdd("RSSQuick/1.1 (+https://github.com/kellylford/rssquick)"); + client.DefaultRequestHeaders.UserAgent.ParseAdd("RSSQuick/1.1 (+https://github.com/TheIdeaPlace/rssquick)"); client.DefaultRequestHeaders.Accept.ParseAdd("application/rss+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.9, */*;q=0.5"); return client; diff --git a/src/RSSQuick/Services/ReleaseCheck.cs b/src/RSSQuick/Services/ReleaseCheck.cs index 37b7de3..7763f3c 100644 --- a/src/RSSQuick/Services/ReleaseCheck.cs +++ b/src/RSSQuick/Services/ReleaseCheck.cs @@ -30,7 +30,7 @@ public sealed record AvailableRelease(Version Version, Uri Page); public static class ReleaseCheck { public static readonly Uri LatestReleaseApi = - new("https://api.github.com/repos/kellylford/rssquick/releases/latest"); + new("https://api.github.com/repos/TheIdeaPlace/rssquick/releases/latest"); private static readonly HttpClient Http = CreateClient(); @@ -38,7 +38,7 @@ private static HttpClient CreateClient() { var client = new HttpClient { Timeout = TimeSpan.FromSeconds(15) }; // GitHub's API refuses requests with no User-Agent. - client.DefaultRequestHeaders.UserAgent.ParseAdd("RSSQuick (+https://github.com/kellylford/rssquick)"); + client.DefaultRequestHeaders.UserAgent.ParseAdd("RSSQuick (+https://github.com/TheIdeaPlace/rssquick)"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github+json")); return client; } diff --git a/tests/RSSQuick.Tests/ReleaseCheckTests.cs b/tests/RSSQuick.Tests/ReleaseCheckTests.cs index c6b453e..cbbf243 100644 --- a/tests/RSSQuick.Tests/ReleaseCheckTests.cs +++ b/tests/RSSQuick.Tests/ReleaseCheckTests.cs @@ -21,7 +21,7 @@ private static string Release( string asset = "RSSQuick-1.3.0-portable-win-x64.zip", bool draft = false, bool prerelease = false, - string page = "https://github.com/kellylford/rssquick/releases/tag/v1.3.0") => $$""" + string page = "https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0") => $$""" { "tag_name": "{{tag}}", "html_url": "{{page}}", @@ -43,7 +43,7 @@ public void A_newer_release_with_a_download_for_this_copy_is_offered() Assert.NotNull(release); Assert.Equal(new Version(1, 3, 0), release.Version); - Assert.Equal("https://github.com/kellylford/rssquick/releases/tag/v1.3.0", release.Page.AbsoluteUri); + Assert.Equal("https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0", release.Page.AbsoluteUri); } [Fact] diff --git a/tests/RSSQuick.Tests/UpdateOfferTests.cs b/tests/RSSQuick.Tests/UpdateOfferTests.cs index 26595ea..168d479 100644 --- a/tests/RSSQuick.Tests/UpdateOfferTests.cs +++ b/tests/RSSQuick.Tests/UpdateOfferTests.cs @@ -16,7 +16,7 @@ namespace RSSQuick.Tests; public class UpdateOfferTests { private static readonly UpdateOffer Downloaded = - new("1.3.0", new Uri("https://github.com/kellylford/rssquick/releases/tag/v1.3.0"), ReadyToInstall: true); + new("1.3.0", new Uri("https://github.com/TheIdeaPlace/rssquick/releases/tag/v1.3.0"), ReadyToInstall: true); private static readonly UpdateOffer Available = Downloaded with { ReadyToInstall = false };