{"release":{"tag":{"name":"v0.4.25","path":"/firepython/mycloud/tags/v0.4.25","tree_path":"/firepython/mycloud/tree/v0.4.25","message":"# FusionCloud 0.4.25 Release Notes\n\n- Date: 2026-07-22\n- Channel: Stable preview responsiveness and Windows identity release\n- Scope: Windows stable installer, Linux x64/ARM64 manual packages, and Docker/NAS amd64/ARM64 images. Windows also includes launcher, Host, installer, and shortcut behavior. A stable macOS package is not published in 0.4.25: cross-built runtime/web artifacts receive structure checks only, while a real Mac install, signing/notarization, and mount live test are not available for this release.\n\n## Customer-visible improvements\n\n- FusionCloud keeps eligible images that the user has already opened in a persistent local preview cache. Closing or restarting the app no longer discards those previews.\n- A cloud thumbnail appears immediately while the full-resolution image loads in the background. A later open uses the validated local copy when available.\n- The default policy removes an item after 45 days without access. Advanced settings expose the enable switch, inactivity window, total capacity, reserved free disk space, per-image limit, current usage, hit/miss counters, and a manual clear action.\n- Windows executables and the installer carry the FusionCloud brand icon. A new desktop shortcut uses the icon embedded in `FusionCloud.exe`; an in-place update refreshes the shortcut target but preserves a user-selected icon location.\n\n## Why this release exists\n\nRepeated preview waits made the desktop app feel as if it forgot work that had already been completed. The same continuity problem appeared in desktop shortcuts: users manually repaired the missing identity, then the updater replaced their choice. This release treats both as durable user-owned state instead of temporary UI decoration.\n\n## Security, privacy, and resource controls\n\n- Only JPEG, PNG, GIF, WebP, BMP, TIFF, and ICO previews with a provider hash or an exact size-plus-modification identity are eligible. SVG and weak identities are not served through the same-origin image preview route.\n- Bytes are streamed to the first viewer while being written to a temporary file. A cache entry becomes visible only after content length, image magic, optional MD5/SHA1/SHA256, account state, disk reserve, and capacity checks pass, followed by an atomic publish.\n- The cache identity contains hashes rather than file names, paths, credentials, or provider tokens. The cache root is private to the captured desktop owner, LocalSystem, and administrators on Windows, and mode `0700` on Unix.\n- Removing an account purges that account's cached bytes before deleting the account record. A manual clear advances the cache generation so an older in-flight request cannot repopulate content afterward.\n- Defaults are 45 inactive days, 8 GiB total capacity, 5 GiB reserved free disk, and 256 MiB per image. Cleanup is LRU-like, bounded per maintenance slice, and skips active readers.\n- This is clean/rebuildable cache, not offline pinning. The release does not prefetch folders, persist video ranges, or cache object-storage content speculatively.\n- The persistent layer covers eligible full-resolution images after they are opened. File-grid thumbnails remain provider-managed short-lived cache in 0.4.25, so a first open or a restarted thumbnail grid can still require the network.\n\n## Verification gates before publication\n\n- CodeGraph call-chain and impact evidence for preview streaming, account deletion, runtime cleanup, image viewer behavior, and the production WPF installer shortcut path.\n- Focused cache security/lifecycle tests, frontend progressive-preview tests, shortcut icon policy tests, full solution build/test, product-web test/build, and benchmark gates.\n- Installed 0.4.24 and the exact final 0.4.25 use the same real cloud image and must return identical full bytes/SHA256. Candidate cold `MISS` reads are interleaved AB/BA with full-response `BYPASS` controls in the same provider/network window; the median paired total/first-byte overhead may regress by at most 5%. Five same-process warm reads must improve by at least 80%; across at least three Windows service restarts the first-read total P50 and every local-hit first byte must stay within 150 ms. The benchmark must prove `MISS/BYPASS/HIT/HIT` plus a persistent inventory.\n- Final Windows installer: clean install, embedded icon extraction, desktop shortcut icon, custom icon preservation across `--update /SILENT`, service health/version, rollback boundary, and uninstall residue.\n- The two installed live reports must be cryptographically bound to this release's exact installer SHA256, version, and merged-main commit before any Gitee upload.\n- Final Linux x64/ARM64 packages declare the native libraries still required by the self-contained .NET runtime. The release gate includes structure/install-layout checks plus disposable-systemd `.deb` fresh install, public 0.4.18-to-0.4.25 `.deb` upgrade, clean tar installation and uninstallation, architecture rejection, dependency failure, package-manager ownership rejection, unsafe-privileged-path rejection, and injected-health-failure rollback proof. The architecture-bound tar helper checks dpkg ownership, FUSE3, systemd, ICU/OpenSSL and the other native libraries before mutating the host. The tar uninstaller refuses every dpkg-managed state, including unpacked or half-configured packages, and never executes lifecycle code from the mutable installed tree; it removes only fixed program/service paths while preserving `/etc/mycloud` and `/var/lib/mycloud`. The public 0.4.18 tar lineage is not treated as a safe in-place upgrade: it created group/world-writable privileged directories, so 0.4.25 stops before service mutation and requires the documented backup/inspection migration or a clean reinstall. Final Docker tar must pass `docker load`, health, mount/read/unmount business E2E. macOS cross-build/structure evidence is recorded separately and cannot be counted as a stable-release PASS.\n- Gitee publication itself is now fail-closed: release assets are described by a deterministic manifest, uploads default to rollout `0` on `master`, existing tags/assets are rejected unless explicitly allowed, and the public release is not considered complete until the manifest, `SHA256SUMS.txt`, asset list, sizes, and SHA256 values are re-downloaded and verified.\n- A stable Gitee upload first remains `published_pending_public_verification`; deployed Windows clients now reject every non-`active` lifecycle state even when a force-install ID or minimum-version rule is present. Public verification must match the exact asset set and merged commit before metadata can be finalized as `active`, still at rollout `0`.\n- Only after local artifact proof may release assets be published to Gitee and re-downloaded for size/SHA256 verification. Admin sync, rollout, manifest exposure, and public download-page updates are the final steps.\n\n{\"schema_version\": 2, \"version\": \"0.4.25\", \"tag_name\": \"v0.4.25\", \"channel\": \"stable\", \"status\": \"published_pending_public_verification\", \"rollout_percent\": 0, \"min_version\": \"0.0.0.0\", \"release_commit\": \"5f3ffe48fb28ef9dee3836bd4713385e499994c0\", \"asset_manifest_name\": \"release-asset-manifest-v0.4.25.json\", \"asset_manifest_sha256\": \"67d75e353bd08a44bb791bc36f243a6d17f8eb07c781989ffc780838518ff003\", \"sha256sums_name\": \"SHA256SUMS.txt\", \"sha256\": \"ef42ed39352c31647b0d6179f6a80a3c31a402fa6869c8fa59d8821ec7c33006\", \"asset_name\": \"FusionCloud.Installer.exe\"}","commit":{"id":"02d22bf5c02768dc72ef316c5c337e70c0f76701","short_id":"02d22bf","title":"update README.md.","title_markdown":"update README.md.","description":"\nSigned-off-by: firepython \u003C14670431+firepython@user.noreply.gitee.com\u003E","description_markdown":"Signed-off-by: firepython ","message":"update README.md.\n\nSigned-off-by: firepython \u003C14670431+firepython@user.noreply.gitee.com\u003E","message_markdown":"update README.md.\nSigned-off-by: firepython ","detail_path":"/firepython/mycloud/commit/02d22bf5c02768dc72ef316c5c337e70c0f76701","commits_path":"/firepython/mycloud/commits/02d22bf5c02768dc72ef316c5c337e70c0f76701","tree_path":"/firepython/mycloud/tree/02d22bf5c02768dc72ef316c5c337e70c0f76701","author":{"name":"firepython","email":"14670431+firepython@user.noreply.gitee.com","username":"firepython","user_path":"/firepython","enterprise_user_path":null,"image_path":"no_portrait.png#firepython-firepython","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"committer":{"name":"Gitee GPG Bot","email":"noreply@gitee.com","username":"gitee-bot","user_path":"/gitee-bot","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1677201213385506226/10186697_gitee-bot_1639518846.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"authored_date":"2026-03-02T02:50:32+00:00","committed_date":"2026-03-02T02:50:32+00:00","signature":null,"build_state":null},"archive_path":"/firepython/mycloud/repository/archive/v0.4.25","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"v0.4.25","path":"/firepython/mycloud/releases/tag/v0.4.25","tag_path":"/firepython/mycloud/tree/v0.4.25","project_id":45348555,"created_at":"2026-07-23T12:34:58+08:00","is_prerelease":false,"description":"# FusionCloud 0.4.25 Release Notes\n\n- Date: 2026-07-22\n- Channel: Stable preview responsiveness and Windows identity release\n- Scope: Windows stable installer, Linux x64/ARM64 manual packages, and Docker/NAS amd64/ARM64 images. Windows also includes launcher, Host, installer, and shortcut behavior. No macOS asset is published in 0.4.25. A real Mac install, signing/notarization, and mount live test were not performed, so macOS is outside this stable release's verified platform scope.\n\n## Windows replacement build (2026-07-24)\n\nThe first Windows 0.4.25 installer was withdrawn after a cloud-computer manual\nupgrade exposed a file-sharing race. The repaired installer remains version\n0.4.25 because the original build is not considered a mature 0.4.25 release.\nIts source commit, build time, byte size, and SHA256 identify the replacement\nunambiguously. The replacement `release_commit` identifies the repaired Windows\nsource; Linux and Docker/NAS 0.4.25 assets retain their previously verified\nbytes and immutable attachment identities rather than being rebuilt from that\ncommit.\n\n- A manually launched installer now recognizes the machine's existing\n  `FusionCloud.Runtime` service even without the internal `--update` flag.\n  An explicit `/DIR` remains authoritative; otherwise the valid SCM\n  `ImagePath` is preferred over the elevated account's HKCU registration, so\n  an existing `D:\\fusioncloud` installation is not silently redirected after\n  over-the-shoulder UAC.\n- The installer repeatedly takes fresh process snapshots and requires three\n  consecutive quiet observations after retiring the launcher, Host, runtime,\n  and packaged rclone inside the selected installation. Momentary availability\n  of port 5174 is no longer treated as proof that files are replaceable.\n- Transient sharing and lock violations trigger bounded automatic retirement\n  and retry. Diagnostics record the relative file, attempt, HRESULT, and\n  recovery outcome; a persistent lock produces an actionable Chinese message.\n- File replacement remains journaled. Journal creation, copied-state marking,\n  commit, interrupted recovery, and rollback tolerate bounded transient locks.\n  The old service restarts only after durable rollback succeeds; otherwise the\n  service stays stopped and the journal remains for safe recovery.\n- Process termination revalidates PID, name, and full executable path\n  immediately before the kill. A same-named process outside the selected\n  installation is never terminated.\n- Existing autostart customization is tri-state preserved when the registry\n  value is custom or unreadable. Upgrade-time desktop shortcut behavior keeps\n  the previously selected custom icon.\n- `cloud189data`, accounts, databases, persistent preview content, and mounted\n  cloud data remain outside the replacement payload. Affected users should\n  install the repaired 0.4.25 over the same directory and must not delete their\n  existing data tree.\n\nClients on 0.4.24 or earlier can receive the repaired 0.4.25 installer after\nthe Windows channel is restored. A machine that already reports 0.4.25 treats\nthe same semantic version as `already_latest`, so it cannot receive the\nreplacement automatically; if that machine needs this installer repair, the\nuser must download and run the repaired 0.4.25 installer manually over the\nexisting directory.\n\nThe replacement Windows asset may be restored only after the merged-main\ninstaller passes a real interactive in-place upgrade, a real exclusive-file\nlock/recovery benchmark, service and mount recovery, data/cache inventory\ncomparison, custom shortcut-icon preservation, repeat installation, and\ntransaction cleanup. The same public bytes must then be re-downloaded and\nverified against the replacement size and SHA256 before admin sync, manifest\nexposure, or website restoration.\n\n## Customer-visible improvements\n\n- FusionCloud keeps eligible images that the user has already opened in a persistent local preview cache. Closing or restarting the app no longer discards those previews.\n- A cloud thumbnail appears immediately while the full-resolution image loads in the background. A later open uses the validated local copy when available.\n- The default policy removes an item after 45 days without access. Advanced settings expose the enable switch, inactivity window, total capacity, reserved free disk space, per-image limit, current usage, hit/miss counters, and a manual clear action.\n- Windows executables and the installer carry the FusionCloud brand icon. A new desktop shortcut uses the icon embedded in `FusionCloud.exe`; an in-place update refreshes the shortcut target but preserves a user-selected icon location.\n\n## Why this release exists\n\nRepeated preview waits made the desktop app feel as if it forgot work that had already been completed. The same continuity problem appeared in desktop shortcuts: users manually repaired the missing identity, then the updater replaced their choice. This release treats both as durable user-owned state instead of temporary UI decoration.\n\n## Security, privacy, and resource controls\n\n- Only JPEG, PNG, GIF, WebP, BMP, TIFF, and ICO previews with a provider hash or an exact size-plus-modification identity are eligible. SVG and weak identities are not served through the same-origin image preview route.\n- Bytes are streamed to the first viewer while being written to a temporary file. A cache entry becomes visible only after content length, image magic, optional MD5/SHA1/SHA256, account state, disk reserve, and capacity checks pass, followed by an atomic publish.\n- The cache identity contains hashes rather than file names, paths, credentials, or provider tokens. The cache root is private to the captured desktop owner, LocalSystem, and administrators on Windows, and mode `0700` on Unix.\n- Removing an account purges that account's cached bytes before deleting the account record. A manual clear advances the cache generation so an older in-flight request cannot repopulate content afterward.\n- Defaults are 45 inactive days, 8 GiB total capacity, 5 GiB reserved free disk, and 256 MiB per image. Cleanup is LRU-like, bounded per maintenance slice, and skips active readers.\n- This is clean/rebuildable cache, not offline pinning. The release does not prefetch folders, persist video ranges, or cache object-storage content speculatively.\n- The persistent layer covers eligible full-resolution images after they are opened. File-grid thumbnails remain provider-managed short-lived cache in 0.4.25, so a first open or a restarted thumbnail grid can still require the network.\n\n## Verification gates before publication\n\n- CodeGraph call-chain and impact evidence for preview streaming, account deletion, runtime cleanup, image viewer behavior, and the production WPF installer shortcut path.\n- Focused cache security/lifecycle tests, frontend progressive-preview tests, shortcut icon policy tests, full solution build/test, product-web test/build, and benchmark gates.\n- Installed 0.4.24 and the exact final 0.4.25 use the same real cloud image and must return identical full bytes/SHA256. Candidate cold `MISS` reads are interleaved AB/BA with full-response `BYPASS` controls in the same provider/network window; the median paired total/first-byte overhead may regress by at most 5%. Five same-process warm reads must improve by at least 80%; across at least three Windows service restarts the first-read total P50 and every local-hit first byte must stay within 150 ms. The benchmark must prove `MISS/BYPASS/HIT/HIT` plus a persistent inventory.\n- Final Windows installer: clean install, embedded icon extraction, desktop shortcut icon, custom icon preservation across `--update /SILENT`, service health/version, rollback boundary, and uninstall residue.\n- The two installed live reports must be cryptographically bound to this release's exact installer SHA256, version, and merged-main commit before any Gitee upload.\n- Final Linux x64/ARM64 packages declare the native libraries still required by the self-contained .NET runtime. The release gate includes structure/install-layout checks plus disposable-systemd `.deb` fresh install, public 0.4.18-to-0.4.25 `.deb` upgrade, clean tar installation and uninstallation, architecture rejection, dependency failure, package-manager ownership rejection, unsafe-privileged-path rejection, and injected-health-failure rollback proof. The architecture-bound tar helper checks dpkg ownership, FUSE3, systemd, ICU/OpenSSL and the other native libraries before mutating the host. The tar uninstaller refuses every dpkg-managed state, including unpacked or half-configured packages, and never executes lifecycle code from the mutable installed tree; it removes only fixed program/service paths while preserving `/etc/mycloud` and `/var/lib/mycloud`. The public 0.4.18 tar lineage is not treated as a safe in-place upgrade: it created group/world-writable privileged directories, so 0.4.25 stops before service mutation and requires the documented backup/inspection migration or a clean reinstall. Final Docker tar must pass `docker load`, health, mount/read/unmount business E2E. No macOS asset is included in 0.4.25; without real Mac installation, signing/notarization, and mount verification, macOS is not counted as a stable-release PASS.\n- Gitee publication itself is now fail-closed: release assets are described by a deterministic manifest, uploads default to rollout `0` on `master`, existing tags/assets are rejected unless explicitly allowed, and the public release is not considered complete until the manifest, `SHA256SUMS.txt`, asset list, sizes, and SHA256 values are re-downloaded and verified.\n- A stable Gitee upload first remains `published_pending_public_verification`; deployed Windows clients now reject every non-`active` lifecycle state even when a force-install ID or minimum-version rule is present. Public verification must match the exact asset set and merged commit before metadata can be finalized as `active`, still at rollout `0`.\n- Only after local artifact proof may release assets be published to Gitee and re-downloaded for size/SHA256 verification. Admin sync, rollout, manifest exposure, and public download-page updates are the final steps.\n\n{\"schema_version\":2,\"version\":\"0.4.25\",\"tag_name\":\"v0.4.25\",\"channel\":\"stable\",\"status\":\"active\",\"rollout_percent\":0,\"min_version\":\"0.0.0.0\",\"release_commit\":\"008984decfd5509214743cd1e5db885226eaf44d\",\"asset_manifest_name\":\"release-asset-manifest-v0.4.25.json\",\"asset_manifest_sha256\":\"25e95460d25d5d8e87fa60513deeedfecb430f4441cff64e8da9f074b5af4dc1\",\"sha256sums_name\":\"SHA256SUMS.txt\",\"sha256\":\"2166427bae4d6477d4d972af2e1477cda2edcd725f68733bedbd15356157e5fb\",\"asset_name\":\"FusionCloud.Installer.exe\",\"force_install_ids\":[]}","author":{"name":"firepython","username":"firepython","path":"/firepython","avatar_url":"no_portrait.png#firepython-firepython"},"attach_files":[{"download_url":"/firepython/mycloud/attach_files/2946942/download/fusioncloud-docker-0.4.25-amd64.tar.gz.part01","name":"fusioncloud-docker-0.4.25-amd64.tar.gz.part01","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-amd64.tar.gz.part01","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946943/download/fusioncloud-docker-0.4.25-amd64.tar.gz.part01.sha256","name":"fusioncloud-docker-0.4.25-amd64.tar.gz.part01.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-amd64.tar.gz.part01.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946949/download/fusioncloud-docker-0.4.25-amd64.tar.gz.part02","name":"fusioncloud-docker-0.4.25-amd64.tar.gz.part02","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-amd64.tar.gz.part02","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946950/download/fusioncloud-docker-0.4.25-amd64.tar.gz.part02.sha256","name":"fusioncloud-docker-0.4.25-amd64.tar.gz.part02.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-amd64.tar.gz.part02.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946951/download/fusioncloud-docker-0.4.25-amd64.tar.gz.sha256","name":"fusioncloud-docker-0.4.25-amd64.tar.gz.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-amd64.tar.gz.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946952/download/fusioncloud-docker-0.4.25-arm64.tar.gz.part01","name":"fusioncloud-docker-0.4.25-arm64.tar.gz.part01","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-arm64.tar.gz.part01","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946953/download/fusioncloud-docker-0.4.25-arm64.tar.gz.part01.sha256","name":"fusioncloud-docker-0.4.25-arm64.tar.gz.part01.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-arm64.tar.gz.part01.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946955/download/fusioncloud-docker-0.4.25-arm64.tar.gz.part02","name":"fusioncloud-docker-0.4.25-arm64.tar.gz.part02","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-arm64.tar.gz.part02","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946956/download/fusioncloud-docker-0.4.25-arm64.tar.gz.part02.sha256","name":"fusioncloud-docker-0.4.25-arm64.tar.gz.part02.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-arm64.tar.gz.part02.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946957/download/fusioncloud-docker-0.4.25-arm64.tar.gz.sha256","name":"fusioncloud-docker-0.4.25-arm64.tar.gz.sha256","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/fusioncloud-docker-0.4.25-arm64.tar.gz.sha256","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946958/download/install-linux-amd64.sh","name":"install-linux-amd64.sh","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/install-linux-amd64.sh","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946961/download/install-linux-arm64.sh","name":"install-linux-arm64.sh","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/install-linux-arm64.sh","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946963/download/mycloud_0.4.25_amd64.deb","name":"mycloud_0.4.25_amd64.deb","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/mycloud_0.4.25_amd64.deb","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946966/download/mycloud_0.4.25_arm64.deb","name":"mycloud_0.4.25_arm64.deb","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/mycloud_0.4.25_arm64.deb","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946969/download/mycloud_0.4.25_linux-amd64.tar.gz","name":"mycloud_0.4.25_linux-amd64.tar.gz","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/mycloud_0.4.25_linux-amd64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946974/download/mycloud_0.4.25_linux-arm64.tar.gz","name":"mycloud_0.4.25_linux-arm64.tar.gz","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/mycloud_0.4.25_linux-arm64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946975/download/uninstall-linux-amd64.sh","name":"uninstall-linux-amd64.sh","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/uninstall-linux-amd64.sh","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2946976/download/uninstall-linux-arm64.sh","name":"uninstall-linux-arm64.sh","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/uninstall-linux-arm64.sh","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2950042/download/FusionCloud.Installer.exe","name":"FusionCloud.Installer.exe","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/FusionCloud.Installer.exe","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2950043/download/SHA256SUMS.txt","name":"SHA256SUMS.txt","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/SHA256SUMS.txt","censor_failed":false,"censor_tip":null},{"download_url":"/firepython/mycloud/attach_files/2950044/download/release-asset-manifest-v0.4.25.json","name":"release-asset-manifest-v0.4.25.json","cli_download_url":"https://gitee.com/firepython/mycloud/releases/download/v0.4.25/release-asset-manifest-v0.4.25.json","censor_failed":false,"censor_tip":null}],"zip_download_url":"/firepython/mycloud/releases/tag/v0.4.25.zip","tar_download_url":"/firepython/mycloud/releases/tag/v0.4.25.tar.gz"}}}