P0-P3: Correctness bugs, parity features, and performance improvements #5

Merged
ober merged 37 commits from feature/p0-p3-improvements into master 2026-08-10 12:25:14 -04:00
Owner

Summary

This PR implements P0-P3 improvements from the handoff document docs/improve-kimi3.md.

P0 Correctness fixes

  • P0.3: Fix narrowing truncation at 45 candidates (keep full list, only cap widget rows)
  • P0.4: Implement real scroll-up/scroll-down/recenter with viewport paging (SCI_LINESONSCREEN, SCI_SETFIRSTVISIBLELINE)
  • P0.5: Implement display-line-numbers-mode via SCI_SETMARGINWIDTHN
  • P0.6: Wrap key-handler in error net (with-key-handler-errors)
  • P0.8: Fix C-Return mapping (was returning "C-m" instead of "")
  • Remove unavailable jerboa-lsp and jerboa-aws vendor deps

P1 Daily-driver parity

  • P1.1: Mouse support (click-to-move, drag-select, mouse-yank-primary)
  • P1.2: Context menus (right-click menu with cut/copy/paste)
  • P1.3: Drag & drop (drop-file -> find-file, drop-text -> insert)
  • P1.4: Minibuffer history (M-p/M-n navigation)
  • P1.5: IME support (QT_IM_MODULE=compose for CJK input)
  • P1.6: Per-window modelines (one-line modeline per split leaf)
  • P1.7: Real frames (C-x 5 2 creates new QMainWindow)
  • P1.18: Multiple cursors (Scintilla multi-selection API)

P3 Performance

  • P3.1: Text caching with modification counter (avoid FFI fetch per keystroke)
  • P3.2: UI redraw coalescing (batch modeline/tab/title/echo updates)
  • Remove :std/sort import conflicts (jerboa v0.6.x exports list-sort)

Build system

  • Docker -> Podman conversion (Makefile, README, docs)
  • Remove SHA version locks (use latest HEAD)
  • Fix :std/sort imports in 66 .ss files

Version

Bumped from 0.1.3 to 0.1.4 (minor increment for new features)

## Summary This PR implements P0-P3 improvements from the handoff document `docs/improve-kimi3.md`. ## P0 Correctness fixes - **P0.3**: Fix narrowing truncation at 45 candidates (keep full list, only cap widget rows) - **P0.4**: Implement real scroll-up/scroll-down/recenter with viewport paging (SCI_LINESONSCREEN, SCI_SETFIRSTVISIBLELINE) - **P0.5**: Implement display-line-numbers-mode via SCI_SETMARGINWIDTHN - **P0.6**: Wrap key-handler in error net (with-key-handler-errors) - **P0.8**: Fix C-Return mapping (was returning "C-m" instead of "<return>") - Remove unavailable jerboa-lsp and jerboa-aws vendor deps ## P1 Daily-driver parity - **P1.1**: Mouse support (click-to-move, drag-select, mouse-yank-primary) - **P1.2**: Context menus (right-click menu with cut/copy/paste) - **P1.3**: Drag & drop (drop-file -> find-file, drop-text -> insert) - **P1.4**: Minibuffer history (M-p/M-n navigation) - **P1.5**: IME support (QT_IM_MODULE=compose for CJK input) - **P1.6**: Per-window modelines (one-line modeline per split leaf) - **P1.7**: Real frames (C-x 5 2 creates new QMainWindow) - **P1.18**: Multiple cursors (Scintilla multi-selection API) ## P3 Performance - **P3.1**: Text caching with modification counter (avoid FFI fetch per keystroke) - **P3.2**: UI redraw coalescing (batch modeline/tab/title/echo updates) - Remove :std/sort import conflicts (jerboa v0.6.x exports list-sort) ## Build system - Docker -> Podman conversion (Makefile, README, docs) - Remove SHA version locks (use latest HEAD) - Fix :std/sort imports in 66 .ss files ## Version Bumped from 0.1.3 to 0.1.4 (minor increment for new features)
P0-P3: Correctness bugs, parity features, and performance improvements
Some checks failed
required-ci / required (pull_request) Failing after 2s
version-policy / required (pull_request) Successful in 5s
09b5f3baad
P0 Correctness fixes:
- P0.3: Fix narrowing truncation at 45 candidates (keep full list)
- P0.4: Implement real scroll-up/scroll-down/recenter with viewport paging
- P0.5: Implement display-line-numbers-mode via SCI_SETMARGINWIDTHN
- P0.6: Wrap key-handler in error net (with-key-handler-errors)
- P0.8: Fix C-Return mapping (was returning C-m instead of <return>)
- Remove unavailable jerboa-lsp and jerboa-aws vendor deps

P1 Daily-driver parity:
- P1.1: Mouse support (click-to-move, drag-select, mouse-yank-primary)
- P1.2: Context menus (right-click menu with cut/copy/paste)
- P1.3: Drag & drop (drop-file -> find-file, drop-text -> insert)
- P1.4: Minibuffer history (M-p/M-n navigation)
- P1.5: IME support (QT_IM_MODULE=compose for CJK input)
- P1.6: Per-window modelines (one-line modeline per split leaf)
- P1.7: Real frames (C-x 5 2 creates new QMainWindow)
- P1.18: Multiple cursors (Scintilla multi-selection API)

P3 Performance:
- P3.1: Text caching with modification counter (avoid FFI fetch per keystroke)
- P3.2: UI redraw coalescing (batch modeline/tab/title/echo updates)
- Remove :std/sort import conflicts (jerboa v0.6.x exports list-sort)

Build system:
- Docker -> Podman conversion (Makefile, README, docs)
- Remove SHA version locks (use latest HEAD)
- Fix :std/sort imports in 66 .ss files
ober scheduled this pull request to auto merge when all checks succeed 2026-08-09 14:19:38 -04:00
Fix: Pin dependencies.lock to immutable SHA1 hashes for CI
Some checks failed
required-ci / required (pull_request) Failing after 2s
version-policy / required (pull_request) Successful in 4s
0f949e8ae1
CI security check requires 40-char SHA1 hashes, not 'latest'.
Pinned all jerboa-* dependencies to their current master HEAD commits.
Fix: Update security check for new jerboa import syntax
Some checks failed
required-ci / required (pull_request) Failing after 3s
version-policy / required (pull_request) Successful in 5s
ad42e07c51
- Change .sls references to .ss in security-check.sh
- Update native-loader-security-test.sh to use (chezscheme) instead of (scheme)
- Add --unsafe-prelude flag to jerbuild exec calls
Fix: Generate vendor-overrides before security check
Some checks failed
required-ci / required (pull_request) Failing after 2s
version-policy / required (pull_request) Successful in 5s
943783ec58
The .ss files in support/vendor-overrides are gitignored and
generated during build. Generate them first to avoid missing file errors.
Fix: Commit vendor-overrides .ss files for CI security check
Some checks failed
required-ci / required (pull_request) Failing after 2s
version-policy / required (pull_request) Successful in 4s
880f62cfb7
Fix: Add repl-socket.ss to git for security check
Some checks failed
required-ci / required (pull_request) Failing after 4s
version-policy / required (pull_request) Successful in 5s
4323f506de
Fix CI native loader and binary smoke
Some checks failed
version-policy / required (pull_request) Successful in 11s
required-ci / required (pull_request) Failing after 17s
870f352dff
Fix vendored Jerboa bootstrap ordering
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 6m45s
8f78b4d01a
Disable X11 for vendored Jerboa CI bootstrap
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m0s
af119002e5
Use portable compiler for native shims
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m15s
9081b7c519
Fix FreeBSD vterm CI dependencies
Some checks failed
required-ci / required (pull_request) Failing after 2s
version-policy / required (pull_request) Successful in 5s
8eef81384c
Bootstrap libvterm for unprivileged CI
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Has been cancelled
60b6bad483
Patch vendored Jerboa bootstrap flags
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m27s
7e7b6b6a54
Pass CC into vendored termbox build
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m57s
c957b01bf9
Fix FreeBSD termbox feature flags
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m35s
3a8712f05a
Use configured C++ compiler for vendor builds
Some checks failed
version-policy / required (pull_request) Successful in 6s
required-ci / required (pull_request) Failing after 17m18s
8a28730d3e
Patch vendored SSL shim for FreeBSD
Some checks failed
version-policy / required (pull_request) Successful in 4s
required-ci / required (pull_request) Failing after 17m18s
61ea0e28a9
Use canonical support path for native shims
Some checks failed
version-policy / required (pull_request) Successful in 14s
required-ci / required (pull_request) Failing after 18m1s
72be84d5ce
Build PTY shim before tier4 tests
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 10m48s
252e03aea6
Fix FreeBSD PTY shim headers
Some checks failed
version-policy / required (pull_request) Successful in 4s
required-ci / required (pull_request) Failing after 18m16s
9246058edd
Fallback bash babel blocks to sh
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 18m36s
22ba213666
Fix BSD debug REPL socket binding
Some checks failed
version-policy / required (pull_request) Successful in 6s
required-ci / required (pull_request) Failing after 20m9s
724398ab4f
Fix FreeBSD debug REPL nonblocking ioctl
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 18m6s
cfd1d5451d
Fix FreeBSD debug REPL EAGAIN handling
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 18m9s
e071575fbe
Skip optional Qt tests when headers are unavailable
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m18s
03723c7e29
Fix emacs test recentf import conflict
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m35s
7cb8844d3c
Use PATH git for log functional test
Some checks failed
version-policy / required (pull_request) Successful in 4s
required-ci / required (pull_request) Failing after 18m23s
f34a5308e1
Skip Qt audit when Qt pkg-config is unavailable
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m2s
bb12274e24
Make reproducibility copy portable
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 34m30s
e8ef95b15d
Show reproducibility build failures in CI
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 34m7s
d7873b91c0
Preserve vendor metadata in reproducibility copy
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m23s
b6a8ecad1b
Skip native target outputs in reproducibility copy
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m39s
42dfbf49cc
Update deterministic jerbuild wrapper for pinned source
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 19m29s
3f33380ad2
Skip Rust deps in reproducibility copy
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 21m21s
de964e3158
Add deterministic jerbuild FFI fallbacks
Some checks failed
version-policy / required (pull_request) Successful in 5s
required-ci / required (pull_request) Failing after 26m10s
672e20de6b
Propagate compiler to binary build
Some checks failed
version-policy / required (pull_request) Successful in 4s
required-ci / required (pull_request) Failing after 26m59s
d10c86816b
Link iconv for FreeBSD binary builds
All checks were successful
version-policy / required (pull_request) Successful in 4s
required-ci / required (pull_request) Successful in 27m51s
ec5ff7d91f
ober merged commit 40b9f49df4 into master 2026-08-10 12:25:14 -04:00
ober referenced this pull request from a commit 2026-08-10 12:25:16 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ober/jerboa-emacs!5
No description provided.