Skip to content

docs: public README, CHANGELOG, CONTRIBUTING; mixed typing on by default - #6

Merged
lmanchu merged 7 commits into
masterfrom
readme-public
Sep 13, 2026
Merged

lmanchu merged 7 commits into
masterfrom
readme-public

Conversation

@lmanchu

@lmanchu lmanchu commented Sep 13, 2026

Copy link
Copy Markdown
Owner

What

Stacked on #5. The README a visitor sees, plus the one product default that has to match it.

  • README.md (was README.markdown): what Bopomix is in one sentence, a three-step install with no Terminal (dmg → installer app → add the input source once in System Settings), what it does, the four defaults switches, privacy, current limits, how to contribute. Chinese first, English summary at the end.
  • CHANGELOG.md: everything technical that used to sit in the README — the P1 rules, the 4-letter completion threshold and the measurement behind it, the learning rules, the rename and migration behaviour, the eval numbers, known issues.
  • CONTRIBUTING.md: build, the two test suites (serial, wrapped in check_plist_unchanged.sh), building a private eval corpus with BOPOMIX_EVAL_CORPUS, what a PR should carry; defers to AGENTS.md for architecture.
  • MixedScriptEnabled now defaults to true. It was opt-in during dogfooding; a product called 混打注音 that does not mix by default would be misleading. Turning it off still restores upstream behaviour exactly.

The install section describes the signed-and-notarized dmg that the release tooling (next PR) will produce; until v0.1.0 ships, building from source per CONTRIBUTING.md is the way in.

Verification

Full suite, serial, with the new default: 255 XCTest (2 corpus tests skipped) + 87 Swift Testing, PLIST_UNCHANGED / DATA_FOLDER_UNCHANGED. README links checked against the tree.

🤖 Generated with Claude Code

lmanchu and others added 4 commits September 13, 2026 20:10
Everything here is a private trace, not a behavior change: the maintainer's
name, local absolute paths, the out-of-repo private corpus location, and a
planning document that only ever existed on one machine.

- Person: "Lman" -> "the maintainer" / 「維護者」 in comments, .gitignore,
  tools/eval docs, and the review reports. Copyright lines keep the real
  name; so do the lmanchu GitHub URLs and the bundle id.
- Paths: /Users/lman/... -> ~/... or a description; a scratch-directory
  script reference loses its path.
- Design notes: ~/.claude/plans/zhuyin-ime-personal.md (and its bare
  filename) never existed in this repo, so every reference now reads "the
  design notes". The README sentence citing it is gone.
- Eval corpus: the two XCTest eval measurements read BOPOMIX_EVAL_CORPUS
  and XCTSkip when it is unset or missing, instead of hardcoding
  ~/Dev/mixime-private/eval200.tsv. check_plist_unchanged.sh forwards the
  variable as TEST_RUNNER_BOPOMIX_EVAL_CORPUS, which is the only spelling
  xcodebuild passes to the test host. build_corpus.py defaults to the
  gitignored eval-corpus/ directory; .gitignore's comment no longer names
  a private repo path.

docs/REVIEW-* and docs/REVERIFY-* keep their content and conclusions
verbatim -- only the private details inside them changed.

Verified: xcodebuild build succeeds; the suite is 255 tests green under
check_plist_unchanged.sh both with and without BOPOMIX_EVAL_CORPUS
(2 skipped without it), PLIST_UNCHANGED and DATA_FOLDER_UNCHANGED each
time, and BASELINE.md's numbers regenerate identically apart from latency.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…odenames

Follow-up to the previous scrub. The review reports quote samples of the
maintainer's private eval corpus verbatim, which leaked colleague names and
the customers/partners those notes are about; the shipped tech word list
carried the maintainer's own product codenames.

- Corpus token dumps and frequency counts in docs/REVIEW-P3-2026-09-11.md
  and docs/REVERIFY-P3-2026-09-12.md now use stable placeholders:
  people become <name-N>, the maintainer's company/customers/partners
  become <company-N>, their products become <product-N>. The same word
  always maps to the same placeholder, so the counts and the "how many of
  these are real proper nouns" conclusions still read correctly. Generic
  global brands already in the shipped lexicon (google, computex, Stripe,
  Apple, Electron) stay as they are.
- Source/Data/latin-tech-seed.txt: dropped irisgo, tachikoma, hermes,
  gloria, apollo, argus, wells and magi. The first two are private names
  that exist nowhere else; the other six are internal system codenames
  that were outranking the whole dictionary for words a public user has no
  reason to want boosted. All six remain available from latin-words.txt.
  Ranks are explicit per row, so the resulting gaps change nothing.
- tools/eval/build_corpus.py: the synthetic-padding token list no longer
  names the maintainer's company, and says to swap in your own.

Verified: xcodebuild build succeeds; 255 tests green under
check_plist_unchanged.sh without BOPOMIX_EVAL_CORPUS (2 skipped), with
PLIST_UNCHANGED and DATA_FOLDER_UNCHANGED; the built app's bundled
latin-tech-seed.txt no longer contains any of the removed terms.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
README.markdown becomes README.md and is rewritten for someone deciding
whether to try Bopomix: one sentence on what it does, a three-step install
(dmg, installer app, add the input source once in System Settings), what it
does, the four defaults switches, privacy, current limits, where to
contribute. Chinese first with an English summary. Every number, threshold
experiment, learning rule and migration detail that used to live in the
README moves to CHANGELOG.md. CONTRIBUTING.md covers building, running the
two test suites (serially, wrapped in check_plist_unchanged.sh), building a
private eval corpus and what a PR must carry, and points at AGENTS.md for
the rest.

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
Mixed typing is what Bopomix is for; shipping it off would make the
product name a lie. `defaults write io.github.lmanchu.inputmethod.bopomix
MixedScriptEnabled -bool false` still turns it off, and every mixedScript
code path still short-circuits to upstream behaviour when it is off. No
test depended on the old default (255 XCTest + 87 Swift Testing pass
unchanged, PLIST_UNCHANGED).

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
lmanchu and others added 3 commits September 13, 2026 20:48
The CHANGELOG said mixed typing "adds 2.6 ms per sentence"; 2.6 ms is the
headless CLI's total per-sentence time, not a delta. The only on/off
comparison on record (BASELINE.md, pure-Chinese rows) puts the difference
at about 0.3 ms, so say that and cite it. AGENTS.md still carried
upstream's macOS 14.7 / Xcode 15.3 floor while CONTRIBUTING.md and the
old README said macOS 26 / Xcode 26; state the toolchain actually used and
note that the older floor is unverified for this fork.

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
The README read as "McBopomofo plus two features". Reworded so the
product is described on its own terms: what it does, what stays familiar,
and one line saying the engine and Chinese dictionary come from McBopomofo.
Upstream is now named three times in each language: that line, the
first-launch import note, and the credits. Also tells first-time
installers to log out and back in if the input source list does not show
Bopomix, which is when macOS rescans ~/Library/Input Methods.

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
@lmanchu
lmanchu changed the base branch from scrub-private to master September 13, 2026 22:34
@lmanchu
lmanchu merged commit 3083107 into master Sep 13, 2026
1 of 4 checks passed
@lmanchu
lmanchu deleted the readme-public branch September 13, 2026 22:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant