browseros: Add version 0.36.1#16863
Conversation
WalkthroughAdds a new Scoop-style Windows manifest Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Your changes did not pass all checks. Please address the issues in the manifest and comment starting with Invalid manifests
|
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/browseros.json(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
📚 Learning: 2025-11-29T22:02:34.868Z
Learnt from: Ra2-IFV
Repo: ScoopInstaller/Extras PR: 16672
File: bucket/chromium-clang.json:12-12
Timestamp: 2025-11-29T22:02:34.868Z
Learning: In the chromium-clang.json manifest (bucket/chromium-clang.json), the extract_dir value "chrome-win32" is a fixed name determined by the upstream Chromium_Clang archive structure and should not be changed, even though the manifest targets 64-bit architecture.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-19T13:58:23.389Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Applied to files:
bucket/browseros.json
🪛 GitHub Actions: Pull Requests
bucket/browseros.json
[error] 1-1: Invalid manifests: 'browseros' failed manifest checks during bucket/browseros.json processing.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (2)
bucket/browseros.json (2)
26-39: LGTM: Post-install migration logic and configuration are well-implemented.The post-install script correctly handles the migration from a non-portable install by:
- Checking if the persist directory is empty before copying
- Only copying if the source data exists
- Using the correct path for BrowserOS user data
The shortcuts and persistence configuration follow standard conventions for Chromium-based browsers. The extensive testing mentioned in the PR objectives (copy persistent data, update from v0.33.0.1, uninstall, app runs, correct persistent data usage) confirms the functionality.
21-25: Verify that "Chrome-bin" matches the actual directory inside chrome.7z in the BrowserOS v0.34.0 installer.The extract directory name must match the upstream archive structure. Download and inspect the BrowserOS v0.34.0 installer to confirm the correct directory path, similar to how the chromium-clang manifest was validated.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
bucket/browseros.json (1)
33-39: Autoupdate configuration is functional.The URL template correctly uses version variables to match the GitHub release pattern. The absence of a hash block (following the previous review discussion about unavailable
.sha256files) means Scoop will compute hashes by downloading installers, which is acceptable.Optional: Explicitly set hash mode to "none" for faster autoupdate checks
If you prefer slightly faster autoupdate checks (avoiding downloads just to compute hashes), you can explicitly set hash mode:
"autoupdate": { "architecture": { "64bit": { - "url": "https://github.com/browseros-ai/BrowserOS/releases/download/v$majorVersion.$minorVersion.$patchVersion/BrowserOS_v$version_x64_installer.exe#/dl.7z" + "url": "https://github.com/browseros-ai/BrowserOS/releases/download/v$majorVersion.$minorVersion.$patchVersion/BrowserOS_v$version_x64_installer.exe#/dl.7z", + "hash": { + "mode": "none" + } } } }However, this means users won't get hash verification during updates. The current approach (computing hashes by download) provides verification at the cost of speed.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/browseros.json(1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
📚 Learning: 2025-11-29T22:02:34.868Z
Learnt from: Ra2-IFV
Repo: ScoopInstaller/Extras PR: 16672
File: bucket/chromium-clang.json:12-12
Timestamp: 2025-11-29T22:02:34.868Z
Learning: In the chromium-clang.json manifest (bucket/chromium-clang.json), the extract_dir value "chrome-win32" is a fixed name determined by the upstream Chromium_Clang archive structure and should not be changed, even though the manifest targets 64-bit architecture.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-19T13:58:23.389Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-16T15:59:21.258Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16349
File: bucket/fvim.json:45-49
Timestamp: 2025-10-16T15:59:21.258Z
Learning: In Scoop manifests, the `autoupdate.url` and `autoupdate.architecture.<arch>.url` fields must be valid URIs according to the JSON schema (defined with `"format": "uri"`). Variables like `$matchUrlx64` that contain only path segments must be combined with a base URL (e.g., `https://github.com/.../releases/download/`) to form a complete valid URI.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-09-05T09:41:52.653Z
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds in recent versions uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format. This was confirmed by a working 10.0.0 update with valid hash.
Applied to files:
bucket/browseros.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (5)
bucket/browseros.json (5)
1-8: LGTM! Metadata is correct.The version, description, homepage, and license fields are properly formatted. The license identifier correctly uses the non-deprecated SPDX identifier "AGPL-3.0-or-later" as addressed in the previous review.
9-14: LGTM! Architecture configuration is correct.The 64-bit architecture block is properly structured with a valid GitHub release URL and verified SHA-256 hash. The
#/dl.7zfragment correctly instructs Scoop to treat the installer executable as a 7z archive.
18-23: LGTM! Post-install script correctly implements portable mode migration.The script appropriately checks for existing user data before copying from the standard Windows location, preventing data loss and supporting seamless migration to Scoop's portable installation.
31-32: LGTM! Persistence and version checking are correctly configured.The
persistdirective ensures user data survives updates, andcheckver: "github"appropriately monitors GitHub releases for new versions.
24-30: Verify the executable name matches the extracted archive contents.The shortcut references
chrome.exe, which is standard for Chromium-based browsers. However, confirm that the extracted archive actually containschrome.exeafter ExtractDir is applied, as some Chromium forks may rename the executable. If the archive uses a different executable name, update the shortcut target accordingly.
|
Is it necessary to add the Lines 41 to 43 in c26e5aa |
|
Thank you, I guess it makes sense to add it to be consistent with other (chrome-based) browsers. |
|
/verify |
|
All changes look good. Wait for review from human collaborators. browseros
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
bucket/browseros.json (1)
5-5: Consider using SPDX license expression format.The license field uses a comma-separated string. While functional, SPDX expressions are preferred for clarity and machine-readability.
♻️ Proposed fix for license format
- "license": "AGPL-3.0-only, BSD-3-Clause", + "license": "AGPL-3.0-only OR BSD-3-Clause",Alternatively, use an array format:
"license": ["AGPL-3.0-only", "BSD-3-Clause"],
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/browseros.json
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: haussmann
Repo: ScoopInstaller/Extras PR: 16863
File: bucket/browseros.json:15-17
Timestamp: 2025-12-21T13:49:44.001Z
Learning: In Scoop manifests, when a URL uses a fragment like `#/dl.7z`, Scoop automatically extracts the archive after download. For nested archives (like BrowserOS), the downloaded installer may contain another archive (e.g., `chrome.7z`) that requires explicit extraction via the installer script using `Expand-7zipArchive`. The installer script should reference the inner archive name, not the outer `dl.7z`.
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds in recent versions uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format. This was confirmed by a working 10.0.0 update with valid hash.
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format.
Learnt from: Ra2-IFV
Repo: ScoopInstaller/Extras PR: 16672
File: bucket/chromium-clang.json:12-12
Timestamp: 2025-11-29T22:02:34.868Z
Learning: In the chromium-clang.json manifest (bucket/chromium-clang.json), the extract_dir value "chrome-win32" is a fixed name determined by the upstream Chromium_Clang archive structure and should not be changed, even though the manifest targets 64-bit architecture.
📚 Learning: 2025-11-29T22:02:34.868Z
Learnt from: Ra2-IFV
Repo: ScoopInstaller/Extras PR: 16672
File: bucket/chromium-clang.json:12-12
Timestamp: 2025-11-29T22:02:34.868Z
Learning: In the chromium-clang.json manifest (bucket/chromium-clang.json), the extract_dir value "chrome-win32" is a fixed name determined by the upstream Chromium_Clang archive structure and should not be changed, even though the manifest targets 64-bit architecture.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-12-21T13:49:44.001Z
Learnt from: haussmann
Repo: ScoopInstaller/Extras PR: 16863
File: bucket/browseros.json:15-17
Timestamp: 2025-12-21T13:49:44.001Z
Learning: In Scoop manifests, when a URL uses a fragment like `#/dl.7z`, Scoop automatically extracts the archive after download. For nested archives (like BrowserOS), the downloaded installer may contain another archive (e.g., `chrome.7z`) that requires explicit extraction via the installer script using `Expand-7zipArchive`. The installer script should reference the inner archive name, not the outer `dl.7z`.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-19T13:58:23.389Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-16T15:59:21.258Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16349
File: bucket/fvim.json:45-49
Timestamp: 2025-10-16T15:59:21.258Z
Learning: In Scoop manifests, the `autoupdate.url` and `autoupdate.architecture.<arch>.url` fields must be valid URIs according to the JSON schema (defined with `"format": "uri"`). Variables like `$matchUrlx64` that contain only path segments must be combined with a base URL (e.g., `https://github.com/.../releases/download/`) to form a complete valid URI.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-09-05T09:41:52.653Z
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds in recent versions uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format. This was confirmed by a working 10.0.0 update with valid hash.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-13T09:37:06.093Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16328
File: bucket/winutil.json:0-0
Timestamp: 2025-10-13T09:37:06.093Z
Learning: When reviewing code in Scoop manifests, always verify the actual file content if the diff appears incomplete or unusual, as diff context can be truncated or displayed incorrectly. The pattern `[string[]](...).ForEach{...}` is commonly used in post_uninstall scripts across the Extras repository.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-10-15T11:54:31.320Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16341
File: bucket/foxit-pdf-reader.json:47-50
Timestamp: 2025-10-15T11:54:31.320Z
Learning: In bucket/foxit-pdf-reader.json and bucket/foxit-reader.json, the checkver script uses MaximumRedirection 1 (not 0) for Invoke-WebRequest to properly handle Foxit's backend redirect behavior when parsing the Location header for version detection.
Applied to files:
bucket/browseros.json
📚 Learning: 2025-09-05T09:41:52.653Z
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format.
Applied to files:
bucket/browseros.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (8)
bucket/browseros.json (8)
12-14: LGTM: Nested archive extraction is correctly implemented.The installer script properly handles the nested archive structure by extracting
chrome.7z(the inner archive) with the correct extract directory. This aligns with the documented learning for BrowserOS manifests.Based on learnings, the installer script correctly references the inner archive name (
chrome.7z) rather than the outer archive (dl.7z).
15-20: LGTM: Portable mode migration logic is sound.The post-install script correctly implements a one-time migration from the system-installed User Data to the portable location, only when the portable directory is empty and system data exists. This prevents unintended overwrites.
21-23: LGTM: Environment variable configuration is appropriate.Setting
CHROME_EXECUTABLEis consistent with other Chromium-based browser manifests in the Extras bucket and was discussed in the PR as intentional.
24-30: LGTM: Shortcut configuration correctly enforces portable mode.The shortcut properly launches BrowserOS with the
--user-data-dirflag pointing to the persisted User Data directory, ensuring portable operation.
31-31: LGTM: Persistence configuration is correct.The
User Datadirectory is properly marked for persistence, ensuring user data survives updates and reinstalls.
32-35: LGTM: Version detection pattern is correctly structured.The checkver configuration properly captures both the tag and version from the release assets, enabling accurate autoupdate functionality.
8-8: The URL is valid and working correctly. The GitHub API confirms that the latest release has tagv0.36.0with the asset filenameBrowserOS_v0.36.1_x64_installer.exe, which matches the current URL exactly. The current URL returns HTTP 302 (redirect), indicating successful resolution, while "corrected" alternatives with matching tag/filename combinations return 404 errors and do not exist at GitHub.Likely an incorrect or invalid review comment.
36-42: No action needed for autoupdate hash block.BrowserOS releases do not include hash files (SHA256SUMS, checksums, etc.), so the autoupdate block is correctly configured without hash extraction. Manual hash updates are not feasible without upstream hash data.
Likely an incorrect or invalid review comment.
|
/verify |
|
All changes look good. Wait for review from human collaborators. browseros
|
z-Fng
left a comment
There was a problem hiding this comment.
Thanks for your contribution!
The manifest will update automatically as the package updates, as long as the upstream releases new packages that follow the same pattern defined in the manifest. If there are any other changes, feel free to submit a PR.
Closes #16840
Relates to browseros-ai/BrowserOS#256
Checkver OK
Autoupdate OK:
Confirmed Virustotal OK
https://www.virustotal.com/gui/url/e9cf378ff23ca7d944f31e74e1e6c7fff6bbaff13f2997b0d6267f1fef33d1c3
Everything ok, SHA-256 matches as well.
Tests
~\scoop\persist\browserosSummary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.