Change log from v3.3.12 to v3.3.13: v3.3.12...v3.3.13
- [09d9531] - chore: bump version to 3.3.13
- [1f96f04] - refactor: better dependency retrieval
- [216fdea] - refactor(ci): polish release job
- [f619e82] - chore: upgrade gralde to 9.7.1
- [b64309c] - refactor: migrate keyboard switcher state
- [577e250] - refactor(theme): unify theme loading pipeline and async theme switching
- [6cef61b] - perf: resolve theme files in the external tree by name lookup
- [bbf0311] - refactor(theme): type color keys and pre-compile color tables
- [190f9e8] - refactor(theme): make GeneralStyle defaults a single source of truth
- [25596d4] - chore: warn invalid sync_dir too
- [384d5ab] - refactor(theme): introduce ThemeScope as the runtime theme state
- [ad329f5] - refactor(theme): restyle views in place on scheme switches
- [08de744] - refactor(theme): inject ThemeScope into the UI tree
- [b5172da] - refactor(theme): move LiquidData to the data layer
- [7069e2b] - refactor(theme): make TextKeyboard defaults a single source of truth
- [01409a6] - refactor(theme): resolve keyboard geometry cascade explicitly
- [1d2173c] - refactor(keyboard): decouple key action parsing from the runtime
- [a50eaee] - ci: replace obsoleted nightly release action
- [88b661a] - refactor(theme): keep the source reader faithful to librime
- [aa59454] - chore: upgrade ktlint to 1.8.0
- [50add5c] - chore: upgrade spotless to 8.10.2
- [aacf35d] - chore: apply ktlint with spotless
- [c6866f9] - refactor: parse YAML with kaml instead of a hand-written node model
- [411ed71] - refactor(soundeffect): decode sound effect descriptors with kotlinx.serialization
- [b693a0e] - refactor(theme): scope the font cache to each theme
- [a8e6e5d] - refactor(theme): cache key actions per theme
- [0e1b0bb] - refactor(theme): build liquid keyboard data lazily on the model
- [581afd0] - refactor(theme): model color schemes as plain maps
- [5712620] - refactor(theme): model text key actions as tokens
- [d9001b0] - refactor(theme): decode theme configuration with kotlinx.serialization
- [75844ae] - chore: upgrade boost to 1.92.0
- [fbf93e4] - refactor(sync): drive SAF access through StorageAccess
- [567ada2] - refactor(sync): consolidate the sync helpers into RimeDataSync
- [7907f1c] - refactor(storage): improve display for external data path in Preference
- [b58c394] - chore: remove the gradle workaround
- [acf3903] - chore: install StorageAccess from JitPack
- [1ba0780] - refactor: apply StorageAccess for creating and picking file from SAF
- [03a7380] - chore: update StorageAccess to 2.0.0
- [fda120f] - docs: fix typo of style-lint in pull request template
- [e4934ab] - chore: upgrade gradle to 9.8.1
- [7861378] - refactor(data): move default custom config bootstrap into UserDataManager
- [5edc1d6] - refactor(data): move DataManager to core/data
- [c7f32b6] - perf(data): reuse content digests and widen hash buffer in UserDataManager
- [f1f1923] - chore: upgrade opencc to 1.4.2
- [91750d1] - build: use mutable JNI source directories API
- [12ffd16] - chore: upgrade snappy to 1.3.1
- [b60c329] - perf: initialize input feedback resources on demand
- [a39859c] - Revert "feat(keyboard): support double tap shift to lock caps" (#2163)
- [a2450f9] - build: add a make target for checks
- [90d3844] - ci: gate builds on style, lint, and unit test checks
- [19b0484] - ci: remove redundant submodule fetch
- [57edd25] - refactor(ime): call AutoScaleTextView setter before invalidating caches (#2187)
- [7195206] - build: update Android NDK and build tools
- [c8b3a50] - build: update Android Gradle Plugin to 9.4.1
- [f27ea93] - ci: install CMake via setup-android
- [a2fe7e7] - build(spotless): exclude included build outputs
- [ed54b8d] - build(deps): update spotless to 8.10.3
- [c7c55af] - chore: upgrade librime to latest commit
- [25b39fd] - chore: upgrade cmake to 4.1.2
- [7c55dd1] - chore: upgrade librime-lua and bundled lua
- [b5cad1a] - chore: add 3.3.13 changelog