kterm 1.3.0
kterm: ^1.3.0 copied to clipboard
kterm is a fast and fully-featured terminal emulator for Flutter applications, with support for mobile and desktop platforms.
1.3.0 - 2026-06-22 #
Bug Fixes #
- Fix Ctrl+letter combinations (Ctrl+U/A/E/C, etc.) being silently dropped in Kitty Keyboard Protocol mode — sends raw ASCII control characters for shell backward compatibility
- Fix Kitty Keyboard Protocol push/pop flag stack:
CSI > + n uandCSI > - usequences now correctly parse intermediate bytes (+/-) instead of stripping them - Fix
_KittyKeyboardEncoderWrapper.flagsreturning default values (wrapper now delegatesflagsto the inner encoder via super constructor) - Fix
_updateKittyKeyboardEncoderlazy init skipping the first push/pop call - Fix KeyUp events sending empty strings to
onOutputwhen Kitty encoder cannot encode the key - Fix modifier+letter keys (Alt+A, Meta+U, etc.) being dropped when Kitty encoder returns empty — fall back to standard keytab input
- Fix copy/paste/select-all shortcuts not working in Kitty mode (checked before Kitty dispatch now)
- Fix unknown CSI intermediate bytes in
>+sequences accidentally triggeringsetKittyMode
Code Quality #
- Refactor
_handleKeyEvent(180+ lines) into clean dispatcher: extract_handleKittyKeyEventand_tryKeyInputhelper, eliminating 3 duplicate keyInput patterns - Add
.pubignoreto exclude test, example, media, docs from published package
Documentation #
- Update AGENTS.md with comprehensive Kitty Keyboard Protocol architecture, test commands, and known limitations
- Fix README: correct Flutter version requirement to
>=3.19.0, fix screenshot URLs pointing to oldxterm.dartrepo, remove misleading "What's new in 3.0.0" section from fork - Fix README: merge duplicated "Key Features" and "Features" sections
Tests #
- Add CSI parser tests: push/pop with
+/-intermediate bytes (5 tests) - Add Terminal integration tests: push/pop flag stack, Ctrl+letter control codes via keyInput (9 tests, all 26 Ctrl+A–Z verified)
1.2.0 - 2025-07-11 #
Bug Fixes #
- Fix
_evictIfNeededmemory eviction loop: while condition now checks future memory state (current + required > target) instead of current memory, preventing leaked memory under 50% threshold - Fix
OverlayPortal.targetsRootOverlaydeprecation: replace withOverlayPortal(Flutter 3.33+) - Fix
handleTextSizeQuerydead code: remove unreachablecommand == 133branch
Code Quality #
- Migrate lint config from
package:lints/recommended.yamltopackage:flutter_lints/flutter.yaml(+30 Flutter-specific rules) - Fix 12 info-level lint issues:
unnecessary_library_name,unintended_html_in_doc_comment,avoid_print,sort_child_properties_last,prefer_const_constructors_in_immutables,sized_box_for_whitespace,avoid_unnecessary_containers - Add DCS (Kitty Remote Control), text size query, and shell integration test coverage (+19 tests)
- Add
_evictIfNeededLRU eviction edge-case tests: count limit, memory threshold, 50% target stop, LRU ordering (+4 tests) - Add
pointer_input_test.dartcompleting 100% test coverage for all 73lib/src/source files (+14 tests) - Fix
analysis_options.yaml: remove staledeprecated_member_use: ignore - Sync
AGENTS.mdCI command list with.github/workflows/dart-ci.yml
Bug Fixes #
- Fix SGR 38/48/58 malformed color recovery: incomplete color spec no longer causes subsequent params to be misparsed
- Add CSI params size limit (256) to prevent OOM from malformed sequences
- Remove dead code
case 10061000in DECSET handler
1.1.10 - 2026-05-18 #
Bug Fixes #
- Fix
Future.delayedzombie callback in graphics manager test: replace withtester.pump - Fix
gesture_detector.dartdouble-tap timer disposal on widget dispose
Code Quality #
- Fix test isolation: eliminate async callback leaks across test files
- Add
run_test.shunified test runner with smoke/full/golden/fuzz modes - Add
Makefilewith convenient targets:make test,make smoke,make golden,make fuzz - Add gesture detector timer cleanup verification (already had
dispose, confirmed correct)
1.1.9 - 2026-05-15 #
Bug Fixes #
- Fix example imports: replace removed
xterm.dartwithkterm.dartacross 6 files - Fix
withOpacitydeprecation: migrate towithValues(alpha:)(Flutter 3.27+)
Code Quality #
- Add
publish_to: 'none'to suppress invalid_dependency warning (zmodem_lbp git dep) - Add ZModem protocol decoding tests: ZMPHDR frame type parsing, file info header (29 new assertions across 7 tests)
- Clean up
AGENTS.mdwith accurate test commands