fixes breakage on windows introduced by #3866.
fork is indeed available on all POSIX systems, but windows isn't one,
so we use the default spawn method on all non-POSIX systems
(nt/windows) instead.
allows for translations using CLI tools like codex, opencode, claude,
and etc.
these CLI tools are run in a temporary directory to prevent agentic tool
usage. you must pass restrictive arguments if you use this option
yourself.
rough sketch of the pipeline:
- generic + platform patches -> `devutils/i18n generate` ->
`i18n/source.gen.json` ("source of truth" for translations)
- `i18n/source.gen.json` -> `devutils/i18n translate` -> machine
translations generated into `i18n/translations/{lang}.json`
- those should be reviewed and fixed up by representative community
members that actually speak the corresponding language
- `i18n/source.gen.json` + `i18n/translations/*` -> `utils/i18n_apply`
-> fingerprints source strings and applies translations into XTB files
fixes#1109
Instead of deleting copies of generic patches when unmerging them
from platform patches, move them back into the shared repository.
This makes it much more pleasant and ergonomic to work on patches
as a merged series, and allows to e.g. refresh existing patches
without having to move them back to the original folder manually.
- locked down and reconfigured component behavior
- set up localization of manifest.json
- todo: split up extensions/browser/extension_registrar.cc
into separate patch and credit brave
- added ui for extension settings to indicate u0 is a helium
component
- migration and services stuff, almost done
- fix ublock re-enabling on next launch when disabled
- more reliably refresh assets.json on pref change
- add ublock pref to settings
- refresh patches
- part 5: pin by default, update incognito preference
our patches are often sorted in logical order, not alphabetically. even if we were to switch to alphabetically sorted patches now, the diff & blame would be completely incomprehensible, and i think we should avoid that.