Replace the libzip 0.10 fork with upstream 1.12.1. Only zip.h's zipconf.h
include is patched; hand-written config.h/zipconf.h replace CMake's
feature checks, and the platform file backends live in posix/ and win32/.
Port Zip to the current libzip API: read-only opens use ZIP_RDONLY, which
handles UTF-8 paths on Windows, so the fdopen workaround is gone. Remove
the ZIP bounded-open mode and the ZipProvider entry and metadata limits;
archives are limited only by the format and libzip. 65,536-entry InfoZIP
archives now open.
Update Mbed TLS to 3.6.7, libvorbis to 1.3.7, Monocypher to 4.0.3 and
simdutf to 9.2.1, retaining eepp's Mbed TLS configuration (PSA and
TLS 1.3 stay disabled) and the reduced simdutf feature set. Add TLS
certificate/hostname, Vorbis encoder and ZIP range regression tests.
Fix SFTP watch channels on Linux: efsw-agent now exits immediately on
EOF (efsw 0712eec), and a refused agent channel is retried briefly
instead of disabling native watching on the host for five minutes.
Start the SFTP test sshd without PerSourcePenalties on OpenSSH < 9.8,
so the integration tests run on Ubuntu 24.04. CI installs OpenSSH and
requires them.
Fix GCC builds on Linux AArch64 (mojoAL NEON target attributes, the
physics example's signed bitmap) anation.
Keep a NanoSVG libFuzzer target and CI.
Record the updates, checksums and retained patches in the security
audit and inventory.
Async core (EE namespace, documented in docs/articles/async_core.md):
- Add Result<T, E>, Task<T>/TaskSource<T> with continuations and
abandonment, Executor, CancellationToken and SmallUniqueFunction
- Make ThreadPool an Executor with submit() returning a Task; work items
are move-only
- Add Scene::MainThreadExecutor to resume continuations on the UI thread
- Move URI to EE core (eepp/core/uri.hpp) with filesystem helpers
(fromFSPath, getFSPath, getParent); EE::Network::URI remains an alias
- Add System::SHA1 (streaming, modeled on MD5)
- Rename the pack path index to System::PackFileIndex; VirtualFileSystem
is kept as a deprecated alias
eepp-vfs module (src/modules/vfs, documented in docs/articles/vfs.md):
- URI-addressed VirtualFileSystem with pluggable providers: file://,
mem://, res:// (packs) and sftp://
- Async file and directory handles, metadata, space info, capabilities
and IOStream adapters
- Copy/move transfers with progress, cancellation and conflict options
- Change watching through efsw locally, efsw-agent over SSH for sftp://,
and a polling fallback
- VFSDirectoryModel for table views: sorting, name filtering (plain,
glob, regex), type and item-count columns, per-column CSS classes and
lifetime-safe executor delivery
SFTP:
- SSH sessions over libssh2 with ssh_config parsing (Host/Match,
ProxyJump, ProxyCommand), known_hosts verification, ssh-agent, key and
keyboard-interactive authentication, and connection pooling
- Built by default; opt out with --without-vfs-sftp
- Vendor libssh2 1.11.1 with the mbedTLS backend, and add Ed25519 host
and user keys to it through Monocypher 4.0.2 (mbedTLS has no Ed25519)
eefm (src/tools/eefm), a Dolphin-like file manager on eepp-vfs:
- Split panes, each with its own tabs, location bar, history and
filter bar
- Places panel with Places, Remote (saved locations and network mounts)
and Devices (with usage), editable, hideable and reorderable by drag
- Details view with drag and drop, clipboard interoperable with other
file managers, rename, new folder/file, trash (freedesktop, macOS,
Windows) and properties
- Open and Open With from shared-mime-info and desktop entries
- Persisted window, panes, tabs, columns, sort and places
UI and window fixes:
- Keep table column max widths across model updates and give the main
column the remaining width
- Count left margins when laying out push button icon and text
- Add Clipboard::setMimeData, getDataString and getTextMimeTypes
- Report Zip::close/addFile failures and free archives correctly
Tests and tooling:
- Unit tests for the async core, VFS providers, transfers, watching,
the directory model, ssh_config, SFTP (local sshd), the efsw agent
protocol, SHA1 and URI
- Add a VFS benchmark
- Update efsw with efsw-agent and its wire protocol
- Add the eproc process-monitoring application and persistent window/table state
- Implement Linux process, network, GPU, icon, and GUI-window collection
- Add optional process columns, styling, i18n-ready strings, and command copying
- Retain exited processes for one update and color them as ended
- Extend table sizing and header behavior for persisted column layouts
- Organize Linux-specific sources under platform/linux
- Keep unsupported platforms buildable with a startup WIP warning
Decouple GL object sharing between native windows from auxiliary worker-thread context support. Platforms without threaded GL contexts, such as Haiku, must still share textures and other GL resources between their window contexts.
Always configure SDL_GL_SHARE_WITH_CURRENT_CONTEXT according to the requested context settings, while continuing to create the auxiliary thread context only on supported platforms. Explicitly reset the SDL attribute for non-shared contexts to avoid leaking state into subsequent window creation.
Apply the fix to both SDL2 and SDL3 backends. Also link the Haiku unit test executable against libbsd and libnetwork to resolve its PTY and socket dependencies.
Scripts now accept the CLI argument: `--backend=sdl3` to force building with SDL3 backend. ecode build script will just generate the package with SDL3.
TextDucument: push modifications in the document when is being saved, this will allow to "undo" previous changes correctly.
ecode:
Minor fix in LSP protocol implementation. ClosesSpartanJ/ecode#19.
Minor fix in FileSystemListener when no file system model is present.