Commit Graph

884 Commits

Author SHA1 Message Date
Martín Lucas Golini
9894231d04 - Fixed emscripten build
- Added .github/workflows/eepp-emscripten-build-check.yml
  - Mirrors Linux CI structure.
  - Uses Premake 5 beta6.
  - Pins Emscripten 4.0.1.
  - Caches EMSDK system libraries.
  - Builds with all available cores.

- Completed Premake 5 Emscripten support:
  - Native wasm32 platform.
  - Correct .html application targets.
  - Asset preloading restored from Premake 4.
  - SDL2 supplied through Emscripten instead of native -lSDL2.
  - Static archives emitted under libs/emscripten/wasm32/.
  - Unsupported shared-library projects excluded.

- Modernized projects/emscripten/make.sh.
2026-07-25 00:47:18 -03:00
Martín Lucas Golini
6b277e508b migrate fonts to scoped resource ownership
- 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
2026-07-24 01:54:51 -03:00
Martín Lucas Golini
574b6b9014 move nine-patches into scoped catalogs
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.
2026-07-22 22:07:00 -03:00
Martín Lucas Golini
2d8693295c add shared WebView resource cache:
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.
2026-07-22 02:22:38 -03:00
Martín Lucas Golini
f7dba042df Replace DrawableSearcher with scoped drawable resolution:
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.
2026-07-21 23:50:58 -03:00
Martín Lucas Golini
a3d78a1217 Implemented Built-in Scientific Calculator in the universal bar for ecode (SpartanJ/ecode#701). 2026-07-02 18:51:12 -03:00
Martín Lucas Golini
d939766355 Disable glew by default (entering deprecation). 2026-06-23 22:54:44 -03:00
Martín Lucas Golini
3117a3e098 🤷 2026-06-12 17:51:01 -03:00
Martín Lucas Golini
7928980286 Mh? 2026-06-12 17:10:00 -03:00
Martín Lucas Golini
a01068e56b Maybe now? 2026-06-12 16:40:51 -03:00
Martín Lucas Golini
96cee9d1c4 This should make premake5 configuration beta8 friendly.
Improvement for: SpartanJ/ecode#913.
2026-06-12 14:43:35 -03:00
Martín Lucas Golini
a81f99e0a5 Try fix ecode arm64 MSVC nightly build. 2026-06-12 01:51:08 -03:00
Martín Lucas Golini
4005d2ccc5 Fix MSBuild path. 2026-06-12 00:11:44 -03:00
Martín Lucas Golini
7ec44b1547 Added pending SDL3 script support for MSVC and mingw. It can now be built without previously installing SDL3 manually, it resolves the dependency the same way we do for SDL2.
Scripts now accept the CLI argument: `--backend=sdl3` to force building with SDL3 backend. ecode build script will just generate the package with SDL3.
2026-06-08 21:42:42 -03:00
Martín Lucas Golini
d8fa49be37 Fix xvfb-run-eepp, update unit-tests.md. 2026-06-07 22:12:28 -03:00
Martín Lucas Golini
972be7c12f Fix run_gdb_tests.sh 2026-05-31 13:51:52 -03:00
Martín Lucas Golini
c2b1a91d90 Added the pending flex support tests.
Added xvfb-run-eepp with better defaults than xvfb-run, updated documentation.
2026-05-31 13:14:30 -03:00
Martín Lucas Golini
b00547655d Some mingw build fixes for my local build. 2026-05-14 19:27:16 -03:00
Martín Lucas Golini
02a9c3708b Pump internal remote SDL2 version. 2026-05-07 20:11:07 -03:00
Martín Lucas Golini
393a784e8f Merge branch 'develop' into feature/sdl3 2026-05-02 14:45:56 -03:00
Martín Lucas Golini
dea87f345e Disable ASAN leak detection when run unit-tests with xvfb-run (because the tool leaks all X11 windows). 2026-04-24 12:00:45 -03:00
Martín Lucas Golini
6e65ef31f2 Merge branch 'develop' into feature/sdl3 2026-04-23 17:57:31 -03:00
Martín Lucas Golini
9c80091bba Fix Android build.
Add Brotli support to Compression, IOStreamInflate and HTTP client.
2026-04-09 01:43:25 -03:00
Martín Lucas Golini
7d09138bb0 Add woff2 font format support.
Try again luck with the test that it's failing in macOS...
2026-04-09 00:54:22 -03:00
Martín Lucas Golini
461965f73d Fix SpartanJ/ecode#868. 2026-04-03 13:24:08 -03:00
Martín Lucas Golini
0f8bacf6dd Fix br element tag.
Fix gumbo dependency in ecode.
Fix crash in StyleSheet::getStyleSheetStyleByAtRule.
Plus some minor nits.
2026-03-29 20:18:19 -03:00
Martín Lucas Golini
b7726b8767 Should fix MSVC build.
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`.
2026-03-29 15:11:41 -03:00
Martín Lucas Golini
26a97be74d Added HTML native linting.
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.
2026-03-29 14:31:26 -03:00
Martín Lucas Golini
e1f64d3d51 Tests should pass with these changes. 2026-03-29 01:04:50 -03:00
Martín Lucas Golini
47dca8a803 Some clean up. 2026-03-27 12:11:34 -03:00
Martín Lucas Golini
5429b15e04 More ACP client WIP, finishing the protocol implementation. 2026-03-23 14:25:44 -03:00
Martín Lucas Golini
9c966ac427 ACP Improvements phase 2 ready. 2026-03-23 13:22:17 -03:00
Martín Lucas Golini
163841c98c ACP list sessions and some refactor WIP. 2026-03-21 23:32:18 -03:00
Martín Lucas Golini
9409a82092 Added syntax highlighting for WebAssembly Text Format (SpartanJ/ecode#842) and WebAssembly Interface Types (SpartanJ/ecode#844).
Improvements in SyntaxTokenizer TextMate compatability.
Fixed debugging types definition scripts.
2026-03-16 01:11:23 -03:00
Martín Lucas Golini
a1bc99d619 Added amalgamate.py to generate an eepp.hpp single header include (issue #172).
Added `find_missing_includes.py` that checks if all the header files of each module in the "general" module includes are included.
With this I udpated the pending includes in the modules.
2026-03-14 17:55:26 -03:00
Martín Lucas Golini
4718a52423 Migrated from robin_hood to unordered_dense (for UnorderedMap and UnorederedSet).
Added support for SmallVector using svector (and we are already using it in a couple of places).
Added debug symbol inspector script for the new SmallVector in project/scripts/debug.
Added tilde support for files and folders passed as parameters from the CLI in ecode (and added FileSystem::expandTilde).
Fixed a bug in "light-dark" parsing.
2026-03-14 15:13:41 -03:00
Martín Lucas Golini
99f4711408 Fix Android build. 2026-03-05 10:32:15 -03:00
Martín Lucas Golini
d6fa55a696 Added UIMarkdownView and Markdown class (integrated md4c into eepp).
Fixes in HTML rendering.
Fix deadlock in Http pool shutdown.
2026-03-05 01:31:25 -03:00
Martín Lucas Golini
f6a33a408a Should fix windows build. 2026-02-28 13:05:52 -03:00
Martín Lucas Golini
cfc6b546ac Added native support for YAML linting (SpartanJ/ecode#829). 2026-02-28 12:29:56 -03:00
Martín Lucas Golini
8cd44ed8c5 Do not reconstruct user config files if the configuration file is broken, just notify the user that it's broken. Worst case scenario will have to reset it, addresses SpartanJ/ecode#827. 2026-02-27 01:19:55 -03:00
Martín Lucas Golini
7851181230 Add Haiku ecode nightly (not tested!). 2026-02-08 16:56:26 -03:00
Martín Lucas Golini
caebfc4d81 premake projects now enable text shaping by default. 2026-01-08 19:23:22 -03:00
Martín Lucas Golini
d9d0a3539b A couple of minor changes. 2025-12-31 15:18:26 -03:00
Martín Lucas Golini
2ce608ff09 Add Android and iOS CI (not tested). 2025-12-31 14:45:27 -03:00
Martín Lucas Golini
c08687c9fe Fix iOS build. 2025-12-31 13:17:32 -03:00
Martín Lucas Golini
2c70227c09 Fix Android build. 2025-12-21 20:28:27 -03:00
Martín Lucas Golini
9fbb16dee3 I guess this should work and fix the issues on ecode MSVC build. 2025-12-14 20:38:47 -03:00
Martín Lucas Golini
7cb012be90 Fix eepp.dll path. 2025-12-14 20:02:23 -03:00
Martín Lucas Golini
1116575774 Adds ecode nightly build MSVC arm64 target. 2025-12-14 19:40:00 -03:00