Egill 0.1.0+20261015.1 -- 15 October 2026
https://egill.goblinreactor.com/

The source snapshot includes locked dependencies under vendor/ and a Cargo
configuration for offline builds. No proprietary WP executables or private
documents are included. See LICENSE, NOTICE and THIRD-PARTY-NOTICES.txt.

Native builds
-------------
Rust 1.88+ and a C linker are required. Release builds used Rust 1.98.0 on
Apple Silicon macOS and Rust 1.98.1 on Ubuntu 26.04 x86-64 and AArch64.
The archive's rust-toolchain.toml pins the source compiler. Set
RUSTUP_TOOLCHAIN to an installed compatible version when using rustup.
Python packaging and tests need Python 3.11+; the editor itself does not.

  cargo test --release --locked --offline --all-targets
  PYTHONPATH=python python3 -m unittest discover -s python/tests
  PYTHONPATH=python python3 -m wp51_tools.package --release --output dist
  PYTHONPATH=python python3 -m wp51_tools.pty_smoke target/release/egill
  PYTHONPATH=python python3 -m wp51_tools.pty_exit target/release/egill
  PYTHONPATH=python python3 -m wp51_tools.pty_document target/release/egill

Published macOS minimum deployment target: 11.0, Apple Silicon.
Published Ubuntu binaries require glibc >= 2.43 and libgcc_s.so.1.
Build from source on older distributions to target their installed libc.

Loongson ABI 1.0
---------------
The native Loongson release targets Kylin V10 SP1, LoongArch64 ABI 1.0,
glibc 2.28, interpreter /lib64/ld.so.1. It is NOT an ABI 2.0 binary.
Compiler: Loongnix Rust 1.99.0 ABI 1.0 (2026-10-09), GCC 15.2.0.
Toolchain: https://ftp.loongnix.cn/toolchain/rust/rust-1.99/2026-10-09/abi1.0/
Verify the vendor's .sha256 file before installing that toolchain.
Use the ABI-compatible rustc and cargo directly on PATH.

  export CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=/opt/loongson-gcc-15.2.0/bin/gcc
  cargo test --release --locked --offline --all-targets --features crossterm/libc
  PYTHONPATH=python python3 -m wp51_tools.package --release --features crossterm/libc --output dist

Crossterm's libc feature preserves the original terminal settings on this
older kernel. The default Rustix termios path changes input baud-rate flags
on exit and fails Egill's terminal-state regression test. Run all three PTY
suites above against the feature-enabled binary. No upstream crates are patched.

reMarkable 2
------------
Cross-built for ARMv7 hard-float, Cortex-A7, with Zig and the official SDK
5.8.203 sysroot (firmware 3.28.0.172, glibc 2.39). The Rust target is
armv7-unknown-linux-gnueabihf. The ELF interpreter is /lib/ld-linux-armhf.so.3.
Verified on a physical reMarkable 2 running firmware 3.28.0.172: native
document round trips, Unicode editing and saves, and terminal restoration
over SSH with none/Kitty/Sixel/Braille modes. On-screen Inkline rendering
was not visually tested. A compatible terminal and keyboard, or an SSH
terminal session, are required.

  export EGILL_REMARKABLE_SYSROOT=/path/to/sdk/sysroot
  export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER="$PWD/packaging/release/remarkable-cc"
  export RUSTFLAGS='-C target-cpu=cortex-a7'
  PYTHONPATH=python python3 -m wp51_tools.package --release --target armv7-unknown-linux-gnueabihf --output dist

Use `egill --display epaper notes.wp` for the black-on-white theme. It does
not control the display waveform or replace the tablet's existing UI.

Installation
------------
Verify the archive's SHA-256, extract it, and run its install.sh.
The installer uses ~/.local/share/egill/<bundle> and ~/.local/bin/egill.
EGILL_PREFIX overrides ~/.local. Existing release directories are retained;
an existing unrelated executable is not replaced. Add ~/.local/bin to PATH.
Run `egill --version` to verify the selected release.

Publication
-----------
packaging/web/build.py assembles the static page, per-file checksums,
SHA256SUMS and release.json from the five platform archives and source.
Publish releases first, then the page and its assets, with rsync to
hail::distribution/egill.goblinreactor.com/. Keep old release directories.
Hail's nginx configuration is packaging/web/egill.nginx.conf and proxies
the existing distribution backend at 192.168.1.11:8888/egill.goblinreactor.com/.
Cloudflare handles public HTTPS. Validate nginx configuration before reload.
