eepp framework:
- Add shared cookie jars to UISceneNode and UIWebView, plus versioned
CookieManager persistence, domain clearing, and locking in hasCookie().
- Follow HTTP 303 redirects and merge same-host redirect cookies as
name/value pairs without forwarding Set-Cookie attributes.
- Include Cookie headers in document cache keys while preserving static
resource reuse as cookies change.
- Submit HTML forms with an empty action to the current document URL.
- Extend NavigationRequest with source, mouse buttons, modifiers, and
navigation target; anchors forward this context to the scene.
- Emit OnLinkOpenRequested for middle-click, platform-modifier click,
and explicit new-tab requests, with current-view fallback if unhandled.
- Install the WebView navigation interceptor during construction.
- Dispatch middle clicks to the hovered node without moving keyboard focus.
- Add the clicked target to ContextMenuEvent so applications can extend
context menus through existing events.
- Parse HTML titles, emit TitleEvent, and fix onTitleChanged's payload cast.
- Load declared favicons through the shared image cache, emit
OnFaviconChanged, and ignore responses from superseded navigation.
- Add optional UITabWidgetSplitter tab-bar visibility while split;
keep it disabled by default and respect explicitly hidden tab bars.
- Add Space/Shift+Space scrolling and viewport-sized Page Up/Down steps
to UIScrollView, shared by WebView and Markdown content.
- Implement setEnableDefaultKeybindings() and preserve text-input
priority through normal bubbling without control-type checks.
- Report inserted UICodeEditor text as handled.
- Add UITextView::onFontColorChanged() and synchronize password-mask color.
- Support validated left, middle, and right clicks in the inspector
server and Python client.
ui_html example:
- Use UITabWidgetSplitter for tabs and user-controlled splits.
- Share cookies and the resource cache across tabs; persist cookies
between sessions and open new tabs blank.
- Add Inspect, Clear Domain Cookies, Clear All Cookies, and contextual
Open Link in New Tab actions through menu event subscriptions.
- Open requested links in background tabs and synchronize navigation UI.
- Use document titles and 16dp favicons for tabs, cap width at 200dp,
and truncate long titles with ellipsis.
- Enable tab-bar visibility across split panes.
- Fixed: the selection rectangle now uses the visible password symbols instead of the original text.
Update HTML compatibility and inspector documentation and add regression
coverage for persistence, redirects, cache isolation, navigation, menus,
titles, favicons, password colors, split visibility, and scrolling.
Generate size-aware macOS icons and separate runtime Dock PNGs for ee,
ecode, eterm, eeiv, and eproc. Keep shared PNGs sized for small Linux
icons, and package ecode's macOS runtime icon.
Bump eepp to 5.0.0 (Kittima-attā) and ecode to 0.9.0 (Yanta-lekhā).
Add an opt-in TCP/NDJSON inspector for running eepp applications. It
provides authenticated, UI-thread-safe access to windows, scenes, and
widgets, including nested WebView documents. The v1 protocol supports
queries, trees, properties, focus, input actions, watches, screenshots,
and composed batches with result references and deferred execution.
Add a standard-library Python CLI, protocol documentation, build
entries, and integration tests. The listener remains disabled unless
explicitly enabled.
Fix HTML compatibility issues found while debugging NewsBlur:
- Let explicit flex minimums, including min-width: 0, replace the
automatic content minimum.
- Measure flex lines against the container content box when padding
and explicit dimensions are present.
- Keep promoted positioned descendants of hidden ancestors out of
the paint list.
- Add persistent eproc settings for refresh interval, appearance, fonts,
and renderer options, with a settings button in the main window.
- Collect per-core CPU usage on macOS and FreeBSD for Performance charts.
- Keep the settings search focused in eproc and eterm, and wrap long
setting names.
- Share macOS theme-colored titlebar handling across ecode, eproc,
and eterm.
- Stabilize fixed-size UI tests on Retina displays and prevent macOS
build scripts from starting unlimited jobs when sysctl fails.
Add process columns, GPU metrics, tree mode, multi-process actions,
GUI and tray detection, and persistent filter and table settings.
Add optional column header reordering to eepp table and tree views.
Keep dragged headers in place during refresh and draw them above other
headers. Preserve row selection when sorting and when opening context
menus, and support application items in header context menus.
Refresh eepp and tool icons and add the icon generation script.
Add tests for the process views, icon decoding, and GUI table behavior.
Compute document line changes asynchronously against the repository
baseline and render added, modified, and removed markers in the editor
gutter and minimap.
Keep diff indicators disabled by default to avoid unexpected background
work. Add settings for enabling them and configuring the debounce delay,
with translations for all supported locales.
Handle fully added files, stale asynchronous results, document lifetime,
repository changes, and unsaved edits. Add focused Git diff and document
serialization regression coverage.
Vendor a reduced simdutf build and use it to accelerate String UTF-8 and
UTF-32 conversion and codepoint counting. Preserve efficient scalar and
cached-ASCII paths while reusing output storage for document snapshots.
Add simdutf to the Premake 4, Premake 5, and Android builds.
Fix UIConsole wheel and keyboard scrolling, and repair its text cache by
hashing log entries before moving their strings. Initialize cache hashes
and add regression coverage for scrolling and moved log entries.
Preserve debugger response data when notifying multiple listeners by
copying for all but the final listener. Remove an evaluation-order hazard
when capturing and submitting URIs for asynchronous document loading.
Refs SpartanJ/ecode#955.
Mirror UIMenuBar hierarchies into AppKit while keeping eepp menus as the
source of truth.
Add semantic item activation and menu lifecycle hooks so native actions,
lazy menus, checkboxes, radio buttons, visibility, enabled state, and
submenus preserve existing eepp behavior. Support shortcuts and standard
About, Preferences, Quit, Window, Help, and Services menu integration.
Keep the platform adapter private to the UI implementation and support
safe installation, synchronization, and removal of the native menu.
Migrate ecode away from its hand-written Cocoa menu, assign semantic menu
roles, and populate the UI Language submenu synchronously so it is ready
on its first opening.
Add unit tests covering activation, menu lifecycle, roles, and submenu
preparation.
Refs: SpartanJ/ecode#823
Introduce observable and computed values, typed widget bindings, validation groups, UI properties, commands, and UI-thread delivery.
Add observable vector and list model support for incrementally updated collections, with filtering and source-row mapping.
Modernize the Flight Booker and CRUD examples and add focused data handling and collection examples demonstrating the new APIs.
Organize the UI binding headers under ui/databinding, expand test coverage for notification and lifetime semantics, and document API selection, validation, ownership, threading, and performance behavior.
- replace FontManager with per-ResourceScope FontService instances
- publish font factories into explicit or default resource scopes
- import default resources into UI scene scopes unless explicitly disabled
- keep related font faces strongly owned without hot-path weak_ptr locking
- add cached glyph advance queries without creating texture pages
- fix font picker preview ownership, cleanup, and rapid switching
- selectively evict TextLayout cache entries when referenced fonts unload
- document FontService, ResourceCatalog, and cache invalidation semantics
- migrate examples, tools, benchmarks, and tests to the scoped font API
- expand coverage for font ownership, texture release, and layout caching
Return shared handles from NinePatch creation and remove the process-wide
NinePatchManager singleton.
Extend ResourceCatalog with typed drawable-source ownership and expose
drawable publication, lookup, and removal through ResourceScope. Preserve
separate texture and drawable namespaces for direct typed lookup.
Give each UITheme its own resource catalog and have scene-owned theme
managers explicitly import and remove theme catalogs. Handle registered
themes and default-only themes without leaking stale resource visibility
between scenes.
Update theme loading, Engine teardown, platform source manifests, and
resource ownership tests for the catalog-based model.
Document that remaining singleton resource managers must migrate to
naturally owned catalogs and explicit scope imports instead of becoming
new process-global semantic namespaces.
Introduce WebResourceCache with partitioned sharing, per-document sessions,
navigation generations, leases, and canonical request keys.
Coalesce concurrent document, stylesheet, font, and image requests while
discarding stale navigation subscribers independently. Retain completed
resources with TTL/LRU and byte-budget policies, and periodically prune
expired unleased entries from UIWebView.
Route UISceneNode, UIWebView, UIImage, CSS background images, and remote
drawable resolution through the shared cache. Preserve ResourceScope entries
as explicit overrides and allow multiple WebViews to share a cache partition.
Keep image decode and texture replacement on the guarded graphics-thread
completion path. Exclude volatile Cookie and Referer values from cache
identity while preserving partition isolation and content-affecting variants.
Start TTL retention when the final document lease is released so Back/Forward
navigation can reuse resources regardless of how long the previous page was
open.
Avoid unstable pointers and iterators into unordered_dense storage when
tracking leases and pruning entries. Add ASan regression coverage for dense
map growth, navigation, eviction, partition isolation, request coalescing,
retry behavior, and cache retention.
Fully document cache partitions, sessions, generations, request identity,
ownership, threading, and maintenance behavior.
Add a scene-owned UI::DrawableResolver for resolving file, data, HTTP, and
named drawable references through each UISceneNode's current resource scope.
Move generic texture, atlas region, nine-patch, and sprite lookup into
Graphics::ResourceScope, preserving drawable resolution for pure Graphics
consumers without introducing a UI dependency.
Migrate UI images, sprites, menus, CSS parsing, and tests to the new resolver.
Resolve CSS icons through the requesting node's scene instead of the global
scene, preserving embedded-scene isolation.
Remove the obsolete DrawableSearcher API and update platform project manifests,
tests, and the shared-resource architecture plan.
Scripts now accept the CLI argument: `--backend=sdl3` to force building with SDL3 backend. ecode build script will just generate the package with SDL3.
As for the MingW build I'll check if `--cc=gcc` works in the CI environments, since premake5-beta8 deprecated `--cc=mingw` which was an alias of `gcc`.
Added HTML folding-ranges.
Fixed HTMLFormatter::HTMLtoXML.
Added `TextDocument::toString` and `TextDocument::toUtf8String`.
Fixed incorrect check for emojis in Text.
Fixed potential crash due to CSS parsing issues in StyleSheetSpecification.