diff --git a/docs/regions.md b/docs/regions.md index 23858f37..55079a4e 100644 --- a/docs/regions.md +++ b/docs/regions.md @@ -36,6 +36,10 @@ For China, the builder installs `archlinuxcn-keyring` using the existing Arch tr The China profile provides repository defaults only. Language is a separate installer choice, not part of a region: a Chinese speaker outside China keeps global mirrors, and a China install in English still gets the regional ones. +## Additions on the omarchycn branch + +The `cn` profile here also carries developer mirrors: `environment.conf`, `cargo.toml`, `gemrc` and `maven-settings.xml`. `install/config/region.sh` links them into `/etc` and `/.cargo` for `cn`, removes only its own links for `global`, and refuses to replace a regular file it did not create. It reads the marker during installation; `omarchy region cn|global` passes the region it switches to. The region also gates _Install > China Apps_ and _Setup > Claude Code API_. Language stays out of every region: `omarchy language en|zh` owns `LANG`. + ## Remaining release validation Unit tests cover region/channel independence, the timezone mapping, generated pacman contents, repeat application, and refresh ordering; refresh itself is exercised only inside the sudo-boundary sandbox. They do not establish live mirror availability, real package trust, or successful offline installation. Before distribution, build from matching local checkouts on an x86_64 builder and run the disposable-VM acceptance workflow in `agents/skills/acceptance-tests.md`. diff --git a/manual/02-getting-started.md b/manual/02-getting-started.md index f442d3aa..9c096c8c 100644 --- a/manual/02-getting-started.md +++ b/manual/02-getting-started.md @@ -22,11 +22,11 @@ The full-disk encryption won't allow you to enter the password from a Bluetooth ### Installing in China -The installer's first screen asks for your region. Pick _China_ for Chinese package mirrors, a Chinese system language and input method, and Chinese developer mirrors and apps. See [China](52-china.md). +The installer's first screen asks for your language; pick _Chinese_ for a Chinese installer and system. The timezone you pick later decides the region: `Asia/Shanghai` brings Chinese package and developer mirrors and the China apps. See [China](52-china.md). ### Installing for another owner -If you're setting up a machine for someone else — a family member, a new employee, a buyer — you shouldn't be answering the personal questions on their behalf. Hit `Ctrl + C` on the very first screen of the installer (the region and keyboard selection), and Omarchy will offer to prepare the machine for another owner instead. The system installs right away, but all the personal setup — keyboard layout, username, password — is deferred until the machine boots for the first time. The drive is still encrypted by default, and the password the new owner picks on that first boot becomes the encryption password too. (A machine you've already been using can be handed over without a reinstall too — see [resetting the computer](48-security.md).) +If you're setting up a machine for someone else — a family member, a new employee, a buyer — you shouldn't be answering the personal questions on their behalf. Hit `Ctrl + C` on the very first screen of the installer (the language and keyboard selection), and Omarchy will offer to prepare the machine for another owner instead. The system installs right away, but all the personal setup — keyboard layout, username, password — is deferred until the machine boots for the first time. The drive is still encrypted by default, and the password the new owner picks on that first boot becomes the encryption password too. (A machine you've already been using can be handed over without a reinstall too — see [resetting the computer](48-security.md).) ### Unattended installs diff --git a/manual/51-unattended-installs.md b/manual/51-unattended-installs.md index b8f8901f..d35f419e 100644 --- a/manual/51-unattended-installs.md +++ b/manual/51-unattended-installs.md @@ -10,7 +10,7 @@ The files are exactly what the installer's own wizard writes, so the easiest way | File | Required | Purpose | |------|----------|---------| -| `user_configuration.json` | Yes | Disk, hostname, timezone, keyboard, and region (`omarchy_install.region`, `global` or `cn`) | +| `user_configuration.json` | Yes | Disk, hostname, timezone (which picks the region unless `omarchy_install.region` names one), keyboard, and language (`locale_config.sys_lang`) | | `user_credentials.json` | Yes | Username and password hash | | `user_full_name.txt` | No | Git full name | | `user_email_address.txt` | No | Git email | diff --git a/manual/52-china.md b/manual/52-china.md index be4d8a17..65cae778 100644 --- a/manual/52-china.md +++ b/manual/52-china.md @@ -1,24 +1,28 @@ # China -Omarchy is built to work in mainland China without a VPN. Pick _China_ on the first screen of the installer, the region picker that comes before the keyboard layout, and the machine comes up ready: Chinese menus and system language, a Chinese input method, Chinese package mirrors, and the Chinese software people actually need. +Omarchy works in mainland China without a VPN. Two installer answers set a machine up for China, and each stands on its own: -## What China sets up +- **Language.** The installer's first screen asks for English or Simplified Chinese. Chinese puts the installer, the system language (`LANG=zh_CN.UTF-8`), the menus and the desktop shell in Chinese. +- **Region.** The timezone you pick decides the region. `Asia/Shanghai`, `Asia/Urumqi` and their older names select China; any other timezone is Global. The summary screen shows _Region: cn_ before anything touches the disk. + +A Chinese speaker abroad keeps the global mirrors, and an English install in Shanghai still gets the China mirrors. + +## What the China region sets up | Area | China | Global | |------|-------|--------| -| Omarchy and Arch packages | `pkgs.omarchy.cn` and the `*-mirror.omarchy.cn` mirrors first, the `.org` servers behind them, then USTC; the ArchLinuxCN repository | `.org` servers only | -| Language | `LANG=zh_CN.UTF-8`, Chinese menu labels | English | -| Input method | Fcitx5 with [Rime Ice](https://github.com/iDvel/rime-ice) and the Wanxiang grammar model; `Ctrl + Space` toggles between Chinese and English | Fcitx5 compose only | +| Arch packages | The channel's `.omarchy.cn` mirror first, its `.omarchy.org` mirror behind it, and the ArchLinuxCN repository with its keyring | `.omarchy.org` mirrors | +| Omarchy packages | `pkgs.omarchy.org` | `pkgs.omarchy.org` | | Developer mirrors | npm, PyPI and uv, Go, rustup and crates.io, RubyGems and Bundler, Maven | Upstream registries | | Software | _Install > China Apps_ and _Setup > Claude Code API_ | Hidden | -Chinese text renders in the right Noto CJK variant everywhere: Simplified for Chinese, Traditional for Taiwan and Hong Kong, Japanese and Korean for those languages. That works in both regions. +pacman tries the `.cn` mirror first. If it is unreachable or lacks a package, pacman falls through to `.org`, which works for anyone with their own VPN. The installer carries the China packages on the ISO, so a China install needs no network. -Every package mirror lists the `.cn` server first and the `.org` server second. If the `.cn` mirror is unreachable, or a package is missing there, pacman falls through to `.org`, which works for anyone with their own VPN, and then to the USTC Arch mirror. The ArchLinuxCN community repository is enabled too. +## Chinese input -## Input +The keyboard screen comes right after the language. After choosing Chinese it opens on _Chinese (Simplified, Pinyin)_; keep it and Fcitx5 Pinyin is ready at first login. `Ctrl + Shift + Space` switches Chinese input on and off. Add or change an input language later under _Setup > Input Language_. See [Keyboard, Mouse, Trackpad](34-keyboard-mouse-trackpad.md). -The installer sets up Rime Ice offline, from data bundled on the ISO, so Chinese input works the moment you log in. Rime is the active input method and `Ctrl + Space` switches to plain US keyboard input and back. The input method is installed by [rime-ice-installer](https://github.com/manateelazycat/rime-ice-installer); run `rime-ice-installer` again any time to adjust it. +Chinese text renders in the right Noto CJK variant everywhere: Simplified for Chinese, Traditional for Taiwan and Hong Kong, Japanese and Korean for those languages. ## Developer mirrors @@ -32,10 +36,12 @@ _Install > China Apps_ installs WeChat, QQ, Feishu, DingTalk, Tencent Meeting an _Setup > Claude Code API_ points Claude Code at DeepSeek, Kimi Code, GLM, MiniMax or any Anthropic-compatible endpoint. Pick a provider, paste its API key and confirm the model. The answers land in the `env` block of `~/.claude/settings.json`. Kimi Code (`kimi`) and Dim Agent (`dim`) are preinstalled in every region; see [AI](17-ai.md). -## Switching regions +## Switching later -_Setup > Region_ switches an installed machine either way, or run `omarchy region cn` or `omarchy region global` from a terminal. Switching to China first runs a full system update, so the input method installs against current packages, then installs the input method packages, records the region, moves the package mirrors to `.cn`, adds ArchLinuxCN and downloads Rime Ice. If the packages fail to install, the machine stays Global; if the Rime Ice download fails, China stays selected and running the switch again finishes it. The language and the developer mirrors follow at the next login, so the switch then offers to log out at once. +_Setup > Region_, or `omarchy region cn` and `omarchy region global`, switches the region. China runs a full system update, trusts the ArchLinuxCN keyring, records the region, moves pacman to the `.cn` mirrors and links the developer mirrors. Global moves pacman back to `.org` and removes the developer mirrors, China Apps and the Claude Code API setup. The developer mirrors change at the next login, so the switch offers to log out. -Switching to Global moves packages back to the `.org` servers, the language back to English, and removes the developer mirrors, China Apps and the Claude Code API setup. It keeps the input method and the CJK fonts, so you can still type and read Chinese. `omarchy update` never changes the region or the language; only these switches do. +_Setup > Language_, or `omarchy language zh` and `omarchy language en`, switches the system language. The menus and the desktop shell follow at the next login, so it offers to log out too. -A machine prepared for another owner keeps the region picked in the installer, and a factory reset returns a machine to the region it was installed with. Neither carries the input method's offline data, so pick _Setup > Region > China_ once the machine is online; that setup downloads Rime Ice from GitHub. +Neither switch touches the other, the input methods or the CJK fonts. `omarchy update` never changes the region or the language. + +A machine prepared for another owner keeps the language picked in the installer but installs Global, since its timezone is only set on first boot. Switch it under _Setup > Region_ once it is online. diff --git a/plans/omarchycn.md b/plans/omarchycn.md index 7f4bd4ab..3dec8f6c 100644 --- a/plans/omarchycn.md +++ b/plans/omarchycn.md @@ -23,11 +23,9 @@ These replace the 2026-10-05 decisions where they disagree. ## Shipping prerequisites -- The region screen, Rime bundling and local `rime-ice-installer` build exist only on the `omarchycn` branches: a China-ready ISO is built by running `./bin/omarchy-iso-make --local-source ../omarchy ../omarchy-pkgs` from `omarchy-iso/` until they are merged and published. -- omarchy-pkgs PR 265 (rime-ice-installer) must merge, with `omarchy-offline.patch` upstreamed to manateelazycat/rime-ice-installer, before non-local ISO builds can list it. -- omarchy-iso PR 210 (stop passing `offline` to archinstall 4.5's `sanity_check`) is cherry-picked on `omarchy-iso/omarchycn`; the edge snapshot already ships archinstall 4.5. -- A local-source ISO builds `omarchy-dev` and `omarchy-settings-dev` under the published version number, so the next edge release would replace them with builds that lack the China code. Until these branches ship upstream, the ISO pins the local builds with `IgnorePkg`, a `pre-refresh-pacman` hook and an ALPM hook that aborts any transaction replacing them (omarchy-iso README). Pinned machines get no Omarchy updates. -- `stable-mirror.omarchy.cn`, `rc-mirror.omarchy.cn` and `mirror.omarchy.cn` must resolve for Arch packages to come from China; until then pacman falls through to `.org`. +- The region profile and timezone mapping wait on omarchy #13690 and omarchy-iso #241; input methods on omarchy #14433 (omarchy-iso #237 is merged). The language screen, CJK console, Chinese UI, developer mirrors, China apps and Claude Code API exist only on the `omarchycn` branches: build a test ISO with `./bin/omarchy-iso-make --local-source ../omarchy ../omarchy-pkgs` from `omarchy-iso/`. +- A local-source ISO builds `omarchy-dev` and `omarchy-settings-dev` under the published version number, so the next edge release would replace them with builds that lack this code. Until these branches ship upstream, the ISO pins the local builds with `IgnorePkg`, a `pre-refresh-pacman` hook and an ALPM hook that aborts any transaction replacing them (omarchy-iso README). Pinned machines get no Omarchy updates. +- `stable-mirror.omarchy.cn`, `rc-mirror.omarchy.cn` and `mirror.omarchy.cn` resolve and serve `core.db` (checked 2026-10-09). ## Tasks