Commit Graph

22 Commits

Author SHA1 Message Date
Nikhil
32530ec418 fix: default extract base to BASE_COMMIT (#922)
* fix: default extract base to BASE_COMMIT

* fix: address review feedback for PR #922
2026-05-02 15:12:17 -07:00
Nikhil
d189b50b03 fix: package bundled Lima guest agent (#813)
* fix(build): upload Lima runtime files

* fix(build): stage Lima prefix resources

* fix(vm): resolve bundled Lima prefix

* docs(build): document Lima runtime packaging

* chore: self-review fixes

* fix: address review feedback for PR #813
2026-04-24 12:03:26 -07:00
Nikhil
461dcd29e8 fix: upload Lima resources under vendor prefix (#805) 2026-04-23 17:19:45 -07:00
Nikhil
ecba7de221 fix: address PR review comments for 0422-ws3_lima_resources (#780)
- Guard uploaded_keys append with !dry_run so the rollback list
  never contains keys for objects that were never written.
- Prefer GITHUB_ACTOR over local OS username for manifest.uploaded_by;
  manifest.json is CDN-fronted so leaking a developer's login is
  unnecessary (falls back to 'local').
- Extend test_windows_has_no_stale_third_party to cover bun.exe/rg.exe
  too, matching the macOS forbidden-set pattern.
2026-04-22 10:47:25 -07:00
Nikhil
123a13fe62 feat(build): swap podman server resources for Lima (WS3) (#778)
* feat(build): swap podman server resources for Lima (WS3)

- Upload limactl (arm64 + x64) to R2 via new 'browseros upload lima' CLI.
- Rewrite scripts/build/config/server-prod-resources.json: 2 Lima entries,
  12 podman-family entries removed.
- Update codesign metadata (server_binaries.py) to add limactl, drop podman
  family. Sign modules need no edits (data-driven).
- Delete orphaned podman-{vfkit,krunkit} entitlement plists.
- Release-gating note in browseros-agent/CLAUDE.md: don't cut releases off
  dev between this commit and WS6 landing (OpenClaw still invokes podman).

* fix: address review comments for 0422-ws3_lima_resources

- Tighten _find_limactl_member to match exactly .../bin/limactl via
  Path.parts, avoiding incidental matches like 'xbin/limactl'.
- Fall back USER -> USERNAME -> 'unknown' for uploaded_by so Windows
  shells don't all record 'unknown'.
- Comment the broad except in upload_lima to explain why rollback
  must fire for any mid-loop failure.

* chore: drop bun + rg from Windows sign list

These executables are already absent from server-prod-resources.json (no
Windows entries shipped); keeping them in the sign list produces
"Binary not found" warnings on every Windows build.
2026-04-22 10:40:53 -07:00
Nikhil
8de2bf984f feat: build linux x64 + arm64 in a single invocation (#652)
`release.linux.yaml` now declares `architecture: [x64, arm64]` and the
runner loops the entire pipeline once per architecture. depot_tools
fetches both Linux sysroots automatically — `git_setup` idempotently
ensures `target_cpus = ['x64', 'arm64']` is in `.gclient` before
`gclient sync`, so cross-compiling arm64 from an x64 host just works.

The resolver returns `List[Context]` (single-element for the common
single-arch case), and `build/cli/build.py` loops `execute_pipeline` over
the per-arch contexts. Modules stay 100% arch-agnostic — no new
orchestration module, no new YAML schema beyond the list form.

Also fix a cross-compile bug in `build/modules/package/linux.py`: the
appimagetool binary must match the BUILD machine's arch (it executes
locally), not the target arch. Split into a host-keyed
`LINUX_HOST_APPIMAGETOOL` lookup vs the existing target-keyed
`LINUX_ARCHITECTURE_CONFIG`. Target arch is still passed to appimagetool
via the `ARCH` env var.

- build/common/resolver.py: scalar OR list `architecture` -> List[Context]
- build/cli/build.py: loop pipeline per arch, log multi-arch headers
- build/config/release.linux.yaml: `architecture: [x64, arm64]`
- build/modules/setup/git.py: idempotent `target_cpus` edit on Linux
- build/modules/package/linux.py: host vs target appimagetool split
- build/modules/package/linux_test.py: cover the host/target split
2026-04-06 13:08:06 -07:00
Nikhil
b035278ad9 fix: OTA binary discovery for artifact-extracted structure (#411)
* fix: support artifact-extracted directory structure in OTA binary discovery

The download_resources system now extracts server binaries into
platform-specific subdirectories (e.g., darwin-arm64/resources/bin/),
but the OTA module only looked for flat binary names. This adds
find_server_binary() which checks both layouts, keeping backward
compatibility with --binaries while supporting the new structure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: download server binaries from R2 instead of requiring --binaries

Remove the --binaries flag from `ota server release`. The module now
downloads artifact zips from artifacts/server/latest/ in R2, extracts
them, then signs and packages as before. This eliminates the need to
have mono build output locally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:20:08 -07:00
Nikhil
478a35e4ef feat: chromium 145 upgrade (#362)
* feat: new apply --force

* chore: update chromium version

* feat: chromium 145 updated patches

* fix: disable series patches for nwo

* chore: bump offset + version

---------

Co-authored-by: Nikhil <shadowfax@mac.local.meter>
2026-02-11 14:03:02 -08:00
Nikhil
c4f3e93778 feat: new download resources (#289) 2026-01-06 17:38:21 -08:00
Nikhil
90512e58df feat: cli support for server ota (#286)
* feat: ota release

* chore: clean-up old binaries

* fix: ota cli sub-commands, path fixes

* chore: browseros server binary update

* fix: add sparkle sign_update path as ENV

* fix: CLOUDFLARE_API_TOKEN to env

* fix: use same upload r2 module

* feat: upload appcast is separate

* feat: write sparkle sign in python

* fix: handle appcast update

* fix: add missing sparkle.py file

* fix: remove redudant cli options in ota

* chore: 0.0.37 macos signed release

* chore: linux browseros server ota

* fix: copy binaries to temp file and then sign
2026-01-06 13:51:18 -08:00
Nikhil
888d4bbf50 feat: improve extension installer + updater (#278)
* feat: new extension installer + bundle support

* feat: support bundle extension download in cli

* chore: update release yaml to include new bundle_extensions module
2025-12-31 16:35:21 -08:00
Nikhil
8cbfbf7769 fix: sparkle build flag (#260)
* fix: enable sparkle build flag

* feat: cli new apply changed command for dev cli

* fix: sparkle patch fix

* fix: dev cli changed minor fix

* fix: dev cli - for download add --output support
2025-12-19 10:27:56 -08:00
Nikhil
63cbbeaa86 feat: mac sparkle fixes and browseros path refactor (#258)
* patch: fix sparkle build

* fix: update browseros_server binary path after refactor

* fix: sparkle + browseros server build patch

* fix: build.py --prep dont apply series patches

* fix: build cli -- in prep configure too

* fix: cli annotate -- only add description

* fix: features.yaml update for new paths

* fix: more patch fixes

* fix: sparkle pointer exclusion

* fix: remove su-updater

* fix: sparkle update notification
2025-12-18 16:26:34 -08:00
Nikhil Sonti
eca4f1e8e7 fix: release-cli improvements to better list release 2025-12-18 10:52:52 -08:00
Nikhil
320de09753 fix: cli improvements (#230)
* fix: feature support add-update

* feat: feature name validation
2025-12-11 11:00:15 -08:00
Nikhil Sonti
4618611265 feat: download module in release cli 2025-12-09 09:27:29 -08:00
Nikhil
ffb1dfdf2a cli improvements (#222)
* feat: support annotate

* feat: extract supports --feature

* feat: support classify in dev cli
2025-12-06 17:04:00 -08:00
Nikhil Sonti
df47acf2fd fix: minor arg issue 2025-12-06 15:31:46 -08:00
Nikhil
2901e73547 patches & fixes for 0.31.1 release (#219)
* chore: new browseros-server binaries

* bugfix: was writing chromium_patches/ in wrong location

* patch: ntp footer disabled by default

* patch: browseros alpha flag

* patch: add log for port saving

* chore: increment PATCH

* feat: use packages/browseros as root_dir properly in context.py
2025-12-05 16:39:56 -08:00
Nikhil
1523335d19 cli improvements, new release cli (#215)
* feat: new upload to r2, better semantic app name, sparkle signing as part of build

* feat: consistent artifact naming

* minor: add additional logging in build.py

* minor

* feat: better notify, so it's not too verbose

* refactor: rename R2UploadModule to just UploadModule

* fix: sparkle signature uplaod.py

* minor: debugging

* fix: sparkle update and metadata for release artificats

* feat: v1 release module

* feat: new release cli with modules/

* minor: env update
2025-12-03 17:39:25 -08:00
Nikhil Sonti
a11e0ed7ff clean-up: removed old build files 2025-12-03 13:24:48 -08:00
Nikhil
24e9cfd8f2 chromium 142 upgrade, new cli (#214)
* refactor 1: new typer based cli and browseros cli module

* refactor 2: fixes to context.py

* refactor 3: common/ and notify

* new sign and package module

* update .gitignore

* refactor 5: dev.py and modules for each

* refactor 6: clean-up old files

* refactor 7: organise modules fruther

* refactor 8: renaming nxtscape to browseros

* refactor 9: dev.py remove cli load

* fix: pyproject.toml

* fix: typer pretty exception disable

* refactor 10: cli/build.py set to primary

* refactor 10: cli/build.py set to primary, move OS detection

* refactor: context split, env and module dataclass

* reactor: clean and git moved ot new module type

* refactor: compile and configure

* reactor: sign and package module update

* refactor: new build.py cli

* 'refactor: remove reducant OS checks

* refactor: rename BuildContext to Context

* refactor: rename BuildModule to CommandModule

* refactor: dev.py to use the new modules

* build.py: improve help output

* remove old patching way

* clean-up: remove old build.py stuff

* refactor: move to proper yaml parsing

* clean-up: remove legacy args gating

* fix: patches issues

* fix: clean-up build.py and ars resolver

* minor: gitignore

* fix: patches.py issue

* support universal build

* fix: ENV variable and YAMLs

* fix: move compile to folder to avoid compflics

* fixes: more env fixes

* fix: build_type override in CLI fix

* fix: universal clean all archs before starting

* fix: universal build type constants

* fix: linter, extract options

* fix: linter

* fix: remove chromium_src as a not a conflicting flag

* fix: support chromium_src from cli in config mode

* fix: notify with better messages

* feat: new apply patch with --reset-to feature

* feat: refactor apply and extract into separate sub modules

* 142 patches working (#211)

* updates to build.py apply/patch

* removed all old patches

* 142 build update

* fix: get updated patches from main to 142

* fix: correct patches dir

* fix: import path

* add pyright

* fix: setup pyright

* fix: new updated patches from 137 rebased on 142

* feat: new extract_patch command

* fix: add mising side_panel build patch

* fix: extension uninstall for browseros

* fix: prefs fix

* fix: ota extension updater patch fix

* fix: llm hub and chat

* feat: unvisersal module also package individual archs

* fix: add browseros-server binaries

* fix: attach color for notify

* fix: attachment for slack

* fix: update chromium version to 142.0.7444.175

* feat: add new icons needed

* fix: disable settings in menu

* fix: uv add build-backend

* minor: chromium version bump

* clean-up: removed old files of extnesion and sidepanel

* fix: product logo generate and assets.car and appicon.icns

* feat: few chromium UI fixes

* fix: update features.yaml

* fix: features.yaml path in context

* refactor: rename to get_patches_dir()

* feat: show browserOS version in about page

* fix: copy browseros_version on the build time and rename other to offset

* bump offset

* fix: update features.yaml

* feat: load env from .env files too

* fix: enable split view

* clean-up: removed old prefs

* fix: minor import issue

* fix: linux flag update
2025-12-03 13:09:23 -08:00