Skip to content

Release v3.2.0#753

Open
Riey wants to merge 38 commits into
masterfrom
develop
Open

Release v3.2.0#753
Riey wants to merge 38 commits into
masterfrom
develop

Conversation

@Riey

@Riey Riey commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Advance master to the v3.2.0 release commit (tag v3.2.0, develop @ 329e5b7). master is protected, so this PR performs the fast-forward that a direct push cannot.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FT8zVKCvTRgZiMLPpNw8Hs

xnuk and others added 30 commits October 31, 2024 19:24
* Fix rust-toolchain.toml toolchain version

* Remove rust-toolchain.toml profile
* Bump up Github Action Ubuntu version

> This is a scheduled Ubuntu 20.04 retirement. Ubuntu 20.04 LTS runner will
> be removed on 2025-04-15. For more details, see
> actions/runner-images#11101

* Fix ci

* Use ubuntu-22.04 in release.yaml
* Fix spell-check failure

* Fix test for Sebeolsik 390

On typewriters, ㅗ and ㅜ on the right side were used specifically for composing
vowels. But the distinction is no longer meaningful.

Modern IMEs including Windows IME, macOS IME, and ibus-hangul treat 'v' and '/'
the same. Updated the test to reflect this current behavior.
Remove `kime-engine-cffi`
* Bookworm Dockerfiles ADDED

* Added Dockerfile for Ubuntu 24.04

* When Docker Build, Using legacy method.

Because Buildkit  have Error on now.
* Add openSUSE repository

* changelog

---------

Co-authored-by: Riey <creeper844@gmail.com>
* Fix opensuse repo as default

* Add .5.1 suffix to Qt6 input context plugin IID
* Update cargo dependency versions
- strum 0.24 → 0.26
- enumset 1.0 → 1.1
- num-derive 0.3 → 0.4
- xdg 2.2 → 2.5
- ctrlc 3.1 → 3.4
- fontdb 0.11 → 0.23
- criterion 0.4 → 0.8
- pretty_assertions 1.0 → 1.4
- Normalize version format in Cargo.toml files
- bitflags 1.2 → 2.10: add explicit derive macros
- nix 0.26 → 0.30: migrate RawFd to BorrowedFd
- strum 0.26 → 0.27

* Update unmaintained crates
- kime-check: ansi_term → owo-colors
- kime: daemonize → nix::unistd::daemon()

* add PID file locking with Flock

* EWOULDBLOCK error processing

segmentation error message

Co-authored-by: Riey <creeper844@gmail.com>
* Update and replace unmaintained crates with changelog

Update crate versions:
- x11rb 0.11 → 0.13
- xim 0.2 → 0.4
- image 0.24 → 0.25
- imageproc 0.23 → 0.26
- mio 0.7 → 1.0
- egui/eframe 0.20 → 0.33

Replace unmaintained crates:
- rusttype → ab_glyph (font rendering)
- mio-timerfd → timerfd-mio (mio 1.0 compatible)
- unic → unicode-properties (emoji detection)

API migrations:
- kime-xim: Use ab_glyph FontArc/PxScale instead of rusttype
- kime-wayland: Adapt to timerfd-mio API changes
  - TimerFd::new() instead of TimerFd::new(ClockId::Monotonic)
  - set_timeout_oneshot() instead of set_timeout()/disarm()
  - set_timeout_interval(interval, interval) signature change
- kime-candidate-window: Migrate to egui 0.33 API
  - ctx.input(|i| ...) closure pattern
  - ViewportCommand::Close instead of frame.close()
  - ViewportBuilder for window options
  - Arc<FontData> wrapper requirement
- kime-engine-dict: Use unicode_properties::UnicodeEmoji trait

* rustfmt

* Update deny.toml
  - Add NCSA license to allow list
  - Add license clarification for epaint_default_fonts

* adjust egui, xim for MSRV compatibility

- egui/eframe: 0.33 → 0.31 (egui 0.33 requires Rust 1.88, CI uses 1.86)
- imageproc: 0.26 → 0.25 (0.26 requires Rust 1.87)
- xim: 0.4 → 0.5 (0.4 has Feedback::Underline bug)

* Add Unicode-3.0 license to allow list

ICU crates (icu_collections, icu_normalizer, etc.) use Unicode-3.0 license
which is OSI-approved and compatible with GPL-3.0.

* migrate deny.toml
- cargo-deny v0.16+ format

* deny.toml change config

* deny.toml modify

* deny.toml modify 2

* deny.toml modify 3

* crates version config

* crates version config 2

* fix timerfd-mio API usage for timer handling

- Use disarm() directly instead of set_timeout_oneshot(Duration::ZERO)
- Handle timer.read() returning 0 in non-blocking mode (spurious wakeup)
- Add error logging when input_method_v2 fails before falling back to v1

* fix 2
disarm is call unwrap() so rollback to set_timeout_oneshot

* Update changelog (version)
* feat(indicator): Update ksni and deny.toml
* feat(ci): Uses cargo-deny-action@v2
…743)

* fix kwin latest version crash
62e56540 input method commit fix

* fix(wayland): handle KeyState::Repeated for KDE 6.5.5 compatibility

KDE Plasma 6.5.5 upgraded wl_keyboard grab from version 1 to 10,
which introduces KeyState::Repeated (value 2). Previously, kime-wayland
only checked for KeyState::Pressed, causing Repeated events to be
incorrectly treated as Released, leading to crashes.

Changes:
- Handle KeyState::Repeated same as Pressed in input_method_v1/v2
- Only clear repeat timer and state on explicit KeyState::Released
- Update wayland-client/protocols 0.29 → 0.29.5
- Update xkbcommon 0.7.0 → 0.9.0

Fixes intermittent crashes on KDE Plasma 6.5.5

* fix(indicator): Use tokio async I/O for KDE tray icon update

- Replace std::os::unix::net with tokio::net for async Unix socket I/O
- Convert try_terminate_previous_server to async function
- Use tokio::time::timeout for read/write timeouts
- Add assume_sni_available(true) to handle DE initialization timing

This fixes the issue where the tray icon was blank and not updating
on KDE after ksni 0.2 -> 0.3.3 upgrade. The blocking I/O was preventing
the async tray update signals from being processed properly.

* docs CHANGELOG update

* update dependencies

- xkbcommon: 0.7.0 → 0.9.0
- wayland-client: 0.29 → 0.29.5
- wayland-protocols: 0.29 → 0.29.5
- itertools: 0.13 → 0.14
- imageproc: 0.25 → 0.26 (with text feature)
- strum: 0.26 → 0.27
- eframe: 0.31 → 0.33
- egui: 0.31 → 0.33
- bindgen: 0.69.4 → 0.72.1
- cbindgen: 0.26.0 → 0.29.2

* docs CHANGELOG update 2

* update nix dependencies

* tmp_wayland: Fix potential overflow in key repeat timing

* rewrite for wayland-rs 0.31 API with Dispatch trait pattern

BREAKING CHANGE: Complete rewrite of kime-wayland for wayland-rs 0.31+

Major changes:
- Migrate from Filter-based to Dispatch trait pattern (wayland-client 0.31)
- Update wayland-protocols to 0.32 with `unstable` feature for v1 protocol
- Add wayland-protocols-misc 0.3 for zwp_input_method_v2 and zwp_virtual_keyboard_v1
- Remove zwp-virtual-keyboard crate (now included in wayland-protocols-misc)
- Unify v1 and v2 input method handling in single state machine

Technical fixes:
- Add event_created_child! macro for ZwpInputMethodV1 opcode 0 (Activate event)
- Fix fd ownership in WlKeyboard::Keymap (wayland-client 0.31 provides OwnedFd directly)
- Handle KeyState::Repeated (wl_keyboard version 10+) for KDE Plasma 6.5.5
- Use Connection-based API instead of Display

Other dependency updates:
- xdg 2.5 -> 3.0 (API change: remove Result from BaseDirectories methods)
- quick-xml 0.27 -> 0.39 (API change: decode_and_unescape_value takes decoder())

* docs CHANGELOG update 3

* update git ignore and rustfmt

* Delete kime-crash.log

* Update CHANGELOG to modify breaking change label

Removed the BREAKING label from the kime-wayland rewrite entry.
* fix(wayland): bypass key events when input not activated

When grab_activate is false, key press events were not being forwarded
to the compositor, causing shortcuts and input to stop working in apps
like Firefox, rofi, hyprlock, wlogout on wlroots-based compositors
(Niri, Hyprland).

Fixes key handling to match previous behavior:
- V2: forward all keys via vk.key() when not activated
- V1: forward all keys via key_v1() when not activated

* add CHANGELOG

* Update CHANGELOG

* fix logic more simple
* Add meson build system

* Remove cmake build files

* Replace build scripts with meson CI scripts

* Update Dockerfiles for meson, drop EOL distros

* Rewrite release workflow for meson

* nix: fetchCargoVendor, parameterize frontend toggles

* Update README.md, README.ko.md

* Update CHANGELOG.md

* Set default buildtype to release

* ci(release): pin frontends in build-archive to fail fast on missing deps
Riey and others added 4 commits June 27, 2026 04:02
…#749)

The qt6 immodule is version-sensitive (built against Qt private QPA API), so
like qt5 it must ship as per-version artifacts from the build-qt6 matrix rather
than a single build bundled in the generic archive. Disable qt6 in build-archive
(mirroring qt5) so the tarball no longer carries a single-version qt6 plugin.

Extend the build-qt6 matrix with Qt 6.9.3 and 6.10.3 (both installable via
install-qt-action@v4 / aqtinstall) so users on those runtimes get a matching
plugin.

Co-authored-by: Riey <federtek866@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Ubuntu 22.04 (jammy) ships libgtk-4-dev (4.6.9) and qt6-base-dev /
qt6-base-private-dev (6.2.4) in its archives, and Qt 6.2.4 already builds in the
build-qt6 matrix, so the deb package can include gtk4 and qt6 immodules too.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* fix(xim): degrade gracefully when preedit font is missing (#706)

* feat(engine): add SuperL/SuperR keycodes for Right-Super binding (#640)

* fix(hangul): enable ComposeJongseongSsang by default for sebeolsik-3sin-p2 (#646)

* fix(latin): repair malformed dvorak.yaml so Dvorak layout parses (#626)

* fix(hangul): don't consume pass keys so app shortcuts fire (#719)

* style: rustfmt; chore(deps): bump bytes/imageproc/time for cargo-deny
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Riey and others added 4 commits June 27, 2026 13:13
…ses nix rust (fix build-archive rust-src race)
The #719 change made the Hangul KeyValue::Pass arm return false (bypass to
the app) so shortcuts on special chars could fire. But Pass is how layouts
emit literal characters (the sebeolsik number/symbol layer, etc.), so every
Hangul layout's pass keys leaked the raw keystroke instead of being typed.

Shortcut-modified keys (Ctrl/Alt/Super) have no layout entry, so lookup_kv
misses and the caller already passes them through — the special-case bypass
was unnecessary. Revert to committing the pass literal.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.