`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
* chore: bump PATCH and OFFSET
* fix: add AppArmor profile and improve .deb packaging for Ubuntu 23.10+
Ship an AppArmor profile with the .deb package that grants the
`userns` permission, fixing the fatal sandbox crash on Ubuntu 23.10+
and other distros that restrict unprivileged user namespaces via
AppArmor (closes#165).
Also adds: Qt5/Qt6 shim libraries for native file dialogs on KDE,
update-alternatives registration for default browser selection,
prerm cleanup script, and Provides/Recommends metadata.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct CDN download path for .deb and add multi-size icons
Update .deb download path from lowercase "browseros.deb" to "BrowserOS.deb"
to match the URL advertised in README (cdn.browseros.com/download/BrowserOS.deb).
Also install icons at all available sizes instead of only 256x256.
Closes#368
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add multi-size icons and AppStream metainfo to .deb package
Install product icons at all standard hicolor sizes (16, 22, 24, 32,
48, 64, 128, 256) instead of only 256px, so desktop environments can
pick the appropriate resolution for panels, menus, and task switchers.
Ship AppStream metainfo at /usr/share/metainfo/browseros.metainfo.xml
so GNOME Software, KDE Discover, and other software centers can
discover and display BrowserOS in their catalogs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: guard postinst update-alternatives with $1=configure check
Matches prerm's pattern — only register alternatives during normal
configure, not during dpkg error-recovery paths (abort-upgrade, etc.)
where /usr/bin/browseros may not exist yet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* 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
* 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
* 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