All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning and uses the Keep a Changelog format.
- Added Find and Replace for the main source and destination editors with
Ctrl/Command+FandCtrl/Command+H, next/previous navigation, search wrapping, match-case and regular-expression options.- Supports literal replacement, Java regular-expression capture-group replacement, Replace Current, and single-edit Replace All in the editable source editor.
- Includes inline match, wrap, validation, and replacement-count feedback with light and dark theme styling.
- Keeps the read-only destination searchable while disabling replacement controls; the batch preview remains read-only and outside editor search targeting.
- Added Go to Line for the active source or destination editor with
Ctrl/Command+G.- Validates 1-based logical line numbers, centers the requested RichTextFX paragraph, and reports the current line and total line count inline.
- Keeps the panel open after navigation with the line field focused and selected for rapid repeated jumps; Escape and Close restore focus to the active editor.
- Added a Dialog Quotes Fixer for the editable source editor.
- Normalizes ASCII dialog quotes to matching curly or Traditional Chinese corner quote families while preserving existing CJK quotation marks and Latin apostrophes inside words.
- Applies normalization as one undoable RichTextFX document edit, refreshes source metadata, and does not automatically convert or modify the destination editor.
- Added Dialog Quotes Validators for both source and destination editors.
- Conservatively reports reversed, mixed-family, and mixed-level completed quote pairs at logical line boundaries without attempting speculative document-wide quote balancing.
- Presents up to five structured issues in a reusable light/dark-themed dialog, with clipped long-line previews and a target-aware Go to First Suspicious Line action that returns to the editor that was validated.
- Reuses shared editor navigation with Go to Line and includes pure backend tests for normalization, validation, newline handling, issue ordering, summaries, and immutable results.
- Localizes the complete feature UI, including tooltips, status messages, dialog titles, summaries, hints, line labels, counts, and actions, in English, Simplified Chinese, and Traditional Chinese while preserving original document excerpts verbatim.
- Replaced the embedded legacy CLI commands with the current OpenccJava CLI implementations, including current validation, exit-code, help, conversion, Office, PDF, dictionary-generation, and progress behavior.
- Synced the mirrored OpenccJava custom-dictionary API around
DictSlotcanonical names andCustomDictSpec.parse(<slot>:<append|override>:<path>), with strict active-slot validation, CLI delegation, and a deprecatedwithCustomDictFiles(...)forwarding method. - Synced core parity fixes for conversion-plan cache retention, one-shot
OpenCC.convert(...), DeToFu level aliases, and defensiveStarterUnionstate handling. - Update and optimize dictionary data to reduce ambiguity.
- Updated the mirrored
openccjavapackage with forward Taiwan/Hong Kong regional variant phrase slots:- Added
DictSlot.TWVariantsPhrasesandDictSlot.HKVariantsPhrases. - Loads and serializes
tw_variants_phrases/hk_variants_phrasesfromTWVariantsPhrases.txt/HKVariantsPhrases.txt. - Applies forward regional phrase dictionaries before character variants for TW/HK conversions.
- Renamed internal union cache keys from
TwVariantsOnly/HkVariantsOnlytoTwVariantsPair/HkVariantsPair.
- Added
- Updated dictionary JSON serialization and
dictgento use stable field order, optional sorted keys, and the complete dictionary slot list includingTWVariantsPhrases.txtandHKVariantsPhrases.txt.
- Update dictionary data.
- UI retouch.
- Optimized CJK text paragraph reflow.
- Optimized Mouse Hover hints.
- Added
ConversionComboBoxHelperclass and further optimize i18n.
- Fixed
Manual Configlabel update dynamically when UI language selection changed. - Fixed total chars status per UI language.
- Update
NumberingContextfor Word document open as text. - Update openccjava dictionary.
- Optimized
Reflowto handle unclosed dialog and certain quote symbol typo. - Update UI to
Fluent 2theme. - Added
Settingstab. - Update conversion core to
OpenccJava v1.2.1. - Release build with Java 21 for better performance.
- Refactored
OfficeHelperto include a corebyte[]-basedconvert()API for in-memory document processing. - Updated conversion result handling: introduced unified abstract
Resultbase class with concreteFileResultandMemoryResultsubtypes. - Ensured backward compatibility: legacy
Resultreturn type remains valid and unchanged for existing users.
- Add drag-and-drop text support to
TextBoxSource. - Introduced
StarterIndexandUnionCacheto speed up conversion.
-
Static dictionary implementation:
Dictionaries are now loaded once per JVM (lazy-loaded viaDictionaryHolder) and shared by allOpenCCinstances.- Improves startup performance and reduces memory usage for GUI apps (e.g. JavaFX) and helper classes (e.g.
OfficeHelper). - Log messages are emitted on first load:
- INFO when loaded from file system or embedded resource.
- WARNING when falling back to plain-text dictionary sources.
- Improves startup performance and reduces memory usage for GUI apps (e.g. JavaFX) and helper classes (e.g.
-
OpenCC.zhoCheck(String)is now a static method for clarity and consistency.
Existing instance callsmyOpenCC.zhoCheck(text)will no longer compile.
Use one of:OpenCC.zhoCheck(text)– preferred static usage.myOpenCC.zhoCheckInstance(text)– for backward-compatible instance style.
-
Add Starter Length Mask for faster dictionary lookup
OpenCC cc = new OpenCC("s2t");
int result = cc.zhoCheck("汉字");// Preferred static usage
int result = OpenCC.zhoCheck("汉字");
// Or for compatibility with old instance style
OpenCC cc = new OpenCC("s2t");
int result = cc.zhoCheckInstance("汉字");
⚠️ Note: The dictionary is now shared across all OpenCC instances.
Any modification to the dictionary object will affect all instances in the JVM.
- Initial public release of OpenccJavaFX
- Cross-platform JavaFX GUI
- Supports Simplified ↔ Traditional Chinese conversion
- Built using OpenccJava 1.0.0