Control: tags -1 - moreinfo Dear Boyuan,
Thank you very much for reviewing 2.0.1-1 and catching these two issues. I have resolved both and uploaded the updated 2.0.1-1 source package to Debian Mentors: dget -x https://mentors.debian.net/debian/pool/main/v/vielotus/vielotus_2.0.1-1.dsc Upstream v2.0.1 tag (commit 858d776d007c6b0d518c20016dea9ba809f49603): https://github.com/stevedat/VieLotus-IM/tree/v2.0.1 Summary of fixes: 1. Fixed Telex + Smart Bilingual regression (`off -> off` and `please turn off -> please turn off`): - In the previous 2.0.1 build, the repeated-modifier escape flag (`m_telexToneEscape`) prevented `shouldRestoreRawEnglish()` from restoring `off` in default/English contexts (turning `off` into `of`), and `ass`, `diff`, and `err` were missing from `11_extended_english_escapes.txt`. - `shouldRestoreRawEnglish()` in `Sources/VieLotusCoreWindows/WindowsNativeEngine.cpp` now restores `off` under Smart Bilingual (both standalone `off -> off` and in phrases such as `please turn off -> please turn off`), and `ass`, `diff`, and `err` have been added to `Sources/VieLotusCoreWindows/lexicon/11_extended_english_escapes.txt`. - Added explicit regression tests for `off` and `please turn off` across both the C++ engine and Linux C-ABI preedit/commit flows. 2. Made `vielotus_2.0.1.orig.tar.xz` and the `v2.0.1` upstream tag 100% identical (`Sources/VieLotusCAPI/include/vielotus.h`): - `scripts/build_debian_source_pkg.sh` previously packed the unsanitized monorepo `vielotus.h` still containing the seven unimplemented suggestion/loopback declarations that had been removed in the tagged upstream repository. - `scripts/build_debian_source_pkg.sh` now strips those declarations identically, and all 48 files in `vielotus_2.0.1.orig.tar.xz` match the `v2.0.1` tag (`858d776d007c6b0d518c20016dea9ba809f49603`) byte-for-byte. Please let me know if anything else is needed. Thank you again for your time and sponsorship review! Best regards, Dat Tran (Steve Dat) On Mon, Nov 2, 2026 at 8:45 AM Boyuan Yang <[email protected]> wrote: > X-Debbugs-CC: [email protected] [email protected] > > Hi, > > 在 2026/11/1 20:17, Dat Tran 写道: > > Control: tags -1 - moreinfo > > Control: retitle -1 RFS: vielotus/2.0.1-1 [ITP] -- VieLotusIM (Sen Viet) > next-gen Vietnamese input method > > > > Dear Boyuan, > > > > Thank you very much for testing 2.0.0-1 on sid/amd64 and for pointing > out the > > DFSG #2 issue together with the FTP Team and debian-legal references. > > > > You are completely right: publishing a pre-filtered/obfuscated C++ > engine and > > shipping precomputed 64-bit FNV-1a hex tables without their underlying > > plaintext wordlists and generator does not meet DFSG #2 (preferred form > for > > modification). > > > > I have resolved this upstream in release v2.0.1 and uploaded an updated > source > > package (2.0.1-1) to Debian Mentors: > > > > dget -x > https://mentors.debian.net/debian/pool/main/v/vielotus/vielotus_2.0.1-1.dsc > < > https://mentors.debian.net/debian/pool/main/v/vielotus/vielotus_2.0.1-1.dsc > > > > > > Upstream v2.0.1 tag: > > > https://github.com/stevedat/VieLotus-IM/tree/v2.0.1/Sources/VieLotusCoreWindows > < > https://github.com/stevedat/VieLotus-IM/tree/v2.0.1/Sources/VieLotusCoreWindows > > > > > > Summary of changes and how the Linux/desktop C++ core is maintained and > built: > > > > 1. Direct, unobfuscated C++20 maintenance source (MIT / Expat): > > - `Sources/VieLotusCoreWindows/WindowsNativeEngine.{h,cpp}` is now > published > > and maintained directly in its unobfuscated human-readable form > (semantic > > struct, function, and table names, inline comments, zero > pre-publication > > filtering or identifier mangling). > > - Relationship to the rest of the project: our macOS/iOS app uses a > separate > > Apple-platform Swift implementation (`InputMethodKit` / `UIKit` / > > `NaturalLanguage`), whereas the Linux (IBus / Fcitx5) and Windows > (TSF) > > engine in `Sources/VieLotusCoreWindows/` is a standalone > zero-dependency > > C++20 implementation maintained directly in C++20 (there is no > > Swift-to-C++ transpiler or code generator producing > > `WindowsNativeEngine.cpp`). > > - We have permanently retired the old obfuscation policy for the > C++20 > > desktop/Linux engine. > > > > 2. Plaintext UTF-8 (Unicode NFC) wordlists, historical provenance & > offline > > generator (all Expat / MIT): > > - Prior to v2.0.1, `WindowsNativeEngine.cpp` embedded 12 precomputed > sorted > > 64-bit FNV-1a lookup arrays (2,008 entries in total) inline without > > committing the plaintext wordlists alongside the C++ file. > > - For v2.0.1, all 12 phonotactic and bilingual collision-escape > tables > > (2,008 / 2,008 entries, verified 100% bit-for-bit with zero hash > > collisions against the pre-2.0.1 tables) have been consolidated, > audited, > > and committed as human-editable UTF-8 (Unicode NFC) plaintext > wordlists at: > > `Sources/VieLotusCoreWindows/lexicon/00_initial_onsets.txt` .. > > > `Sources/VieLotusCoreWindows/lexicon/11_extended_english_escapes.txt` > > Starting with v2.0.1, these `.txt` files are the sole canonical > upstream > > maintenance source for the C++20 engine's lexical tables. Full > per-table > > provenance, reconstitution notes, and format invariants are > documented in > > `Sources/VieLotusCoreWindows/lexicon/README.md` and > `debian/copyright`. > > - Added the deterministic, offline Python 3 generator (standard > library > > only, no external dependencies, no network access): > > `Sources/VieLotusCoreWindows/scripts/generate_lexicon_hashes.py` > > which validates UTF-8, strict Unicode NFC normalization, lowercase > BMP > > codepoints, duplicate freedom, and zero 64-bit FNV-1a collisions > before > > emitting sorted lookup arrays. > > > > 3. Non-shadowable build-time regeneration & removal of binary fallback > in CMake: > > - `CrossPlatform/capi-native/CMakeLists.txt` (with `python3:any` in > > `debian/control` `Build-Depends`) regenerates > > > > `${CMAKE_CURRENT_BINARY_DIR}/generated/VieLotusLexicon/WindowsNativeLexiconGenerated.inc` > > directly from `lexicon/*.txt` during every build, and > > `WindowsNativeEngine.cpp` includes it via > > `#include <VieLotusLexicon/WindowsNativeLexiconGenerated.inc>`. > > - No `.inc` file sits alongside `WindowsNativeEngine.cpp` and > `prebuilt/` is > > not added to compiler include paths on Linux/Debian builds, so > edits to > > `lexicon/*.txt` deterministically take effect on rebuild (verified > via `-H` > > include traces and wordlist-mutation rebuild tests). > > - Removed the legacy prebuilt `.deb` extraction fallback from > > `CrossPlatform/capi-native/CMakeLists.txt`; CMake now fails > immediately > > with `FATAL_ERROR` if any C++20 source file, wordlist, or > generator script > > is missing. > > > > Please let me know if there are any remaining questions or further > adjustments > > needed for DFSG review. Thank you again for your time and guidance. > > > Thank you for addressing the source-code concerns. That new version would > sort out > my major concerns. > > However, I would like to see the two following extra issues solved before > sponsorship: > > > 1. Telex input regression > > With the default Telex configuration and Smart Bilingual enabled, in > my tests v2.0.1 changes: > > off -> of > please turn off -> please turn of > > Both inputs were correct in the previously reviewed 2.0.0 package. > Please fix this regression. > > > 2. Source tarball and upstream tag mismatch > > The submitted orig tarball differs from the v2.0.1 tag at commit > 41e8892a96bebc12beee364e59983f46960ba4c5 in: > > Sources/VieLotusCAPI/include/vielotus.h > > The tarball still declares seven unimplemented suggestion/loopback > APIs that have already been removed from the tagged header. > Please make the release tag and orig tarball consistent. > > Please prepare an updated package with these fixes. Thanks for your > work on this project. > > > Best, > Boyuan Yang >

