Two independent obstacles surfaced the first time a version with a hyphen
reached the installer:
- Inno Setup's VersionInfoVersion only accepts digits and dots, so ISCC
aborted on 0.7.1-dev.20261019.<hash>. AppVersion, the output filename and
the versioned DLL directory are free text and keep the full string; only
VersionInfoVersion moves to a separate MyVersionInfo define that
Prepare-PackageFiles.ps1 fills with the part before the hyphen, failing
loudly if what remains is not numeric. Releases pass a bare semver, strip
nothing, and behave exactly as before.
- TsfRoot64 called ApplyPathRedirRulesForCurrentProcess, an Inno Setup 7
support function the windows-2025 runner's 6.7.1 does not have. #925 added
it five hours after the last hosted-compiler run, and every release since
then compiled on the self-hosted Inno 7, so the latent break never fired;
the dev-build's hosted package job is the first to execute that path. The
call was a no-op anyway: with
ArchitecturesInstallIn64BitMode=x64compatible the setup process is 64-bit
on every supported OS, so {sys} already expands to the real System32 and
no WOW64 redirection applies. Expand the constant directly, with the #434
warning in this README updated to name the function explicitly.
* fix(server): drop part-of-speech labels from Ctrl+Enter translation senses
The machine-translated Chinese-to-English glosses prefix each sense with a
label ("n. silver medal", "proper n. Wanshan District"). The candidate
window keeps showing the whole gloss, but splitting it for Ctrl+Enter now
strips the label so it never reaches the committed text.
* feat(installer): build cn-en translations into the local dictionary
build-dictionary.py gains a cn-en-translations stage that loads
sources/cn-en/machine-translations.txt from msime-dictionary into
zh_en_glosses verbatim, keeping every sense instead of the two the ECDICT
derivation keeps. It runs after english-glosses and before
custom-translations, so it overrides ECDICT and custom/translations.txt
still overrides it.
Local full test packages now always build the dictionary from the sibling
msime-dictionary checkout instead of downloading the product-lock release:
Invoke-LocalTest.ps1 and prepare-package-inputs.ps1 call
build-dictionary.py --if-stale, which skips only when out/ was built from
the current clean source commit by the current builder. CI and releases
still take the dictionary from product-lock.json.
The product README was under windows/ after the move, but it was never a component readme: it is the download page, the feature guide and the contribution guide for the whole product, so it goes back to the root and windows/ gets a real component readme.
AGENTS.md at the root now carries the repository map, the component boundaries that used to be cross-repository rules, and the release process, since the scripts that process drives live at the root. The component files keep what is genuinely theirs and say which paths they are relative to. References that named sibling repositories now name sibling directories, and the lock documentation records that Server, the pages, the GUI framework and the installer are no longer inputs to pin.
The script addressed its five source checkouts by hardcoded historical directory names, so MSIME-Windows' release workflow had to stage each repository under a name it no longer uses in order to call this script unmodified. The dependency ran backwards: the orchestration bent to fit the script.
The names are now parameters whose defaults are exactly those historical names, so the workflow keeps working with no change at all, and a caller using the current repository names can pass them instead of renaming directories. The relative paths inside each checkout are unchanged and remain a hard contract.
The package also now carries THIRD_PARTY_NOTICES.txt, taken from the TSF repository root and installed into the program directory. rime-ice is GPL-3.0, requires attribution, and its content forms the bulk of msime.db, so that notice has to reach the user's disk rather than only exist in a source repository. It is asserted rather than copied best-effort, so a missing notice fails packaging instead of silently shipping without it.
Requires metasequoiaime/MSIME-Windows#142, which adds the file this now asserts.
The README described this repository as a local test flow only. Since MSIME-Windows gained a release
workflow it also drives Prepare-PackageFiles.ps1 and Compile-Installer.ps1 unmodified to produce the
MetasequoiaIME_Setup_v<version>.exe that ships, so changing what those scripts expect now breaks
releases with nothing here saying so.
Adds a CI contract section covering the constraints that follow: the eighteen paths
Prepare-PackageFiles.ps1 asserts on are prepared one by one by the workflow, the two local signing
scripts must never run there because they mint a self-signed certificate, the dictionaries come from
a MSIME-Dict release rather than a neighbouring working copy, and the runner's Inno Setup lacks the
Chinese language file the .iss requires.
Also corrects the claim that the version is fixed at 0.0.1. It is the default of
Prepare-PackageFiles.ps1's -TargetVersion; CI passes the real one.