Commit Graph

666 Commits

Author SHA1 Message Date
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
d939766355 Disable glew by default (entering deprecation). 2026-06-23 22:54:44 -03:00
Martín Lucas Golini
02a9c3708b Pump internal remote SDL2 version. 2026-05-07 20:11:07 -03:00
Martín Lucas Golini
461965f73d Fix SpartanJ/ecode#868. 2026-04-03 13:24:08 -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
caebfc4d81 premake projects now enable text shaping by default. 2026-01-08 19:23:22 -03:00
Martín Lucas Golini
c69740d886 Added a copy_ecode_assets.sh script to simplify ecode build scripts across platforms.
Modified find_most_recent_sdl2.sh script to search for an specific CPU architecture version of the SDL2 library.
2025-12-12 01:25:24 -03:00
Martín Lucas Golini
276c481f00 Added support to OpenType SVG font files in FontTrueType. 2025-11-16 00:52:45 -03:00
Martín Lucas Golini
2008b57033 Added SheenBidi segmentation. 2025-11-10 00:53:28 -03:00
Martín Lucas Golini
fcce822350 Add LRUCache and use it in TextLayouter. 2025-11-06 01:17:28 -03:00
Martín Lucas Golini
97a89902e2 Added Open in New Window and Move to New Window as tab right-click options and Edit options (SpartanJ/ecode#629).
Added `Move Tab to Start` and `Move Tab to End` in tab right-click options (SpartanJ/ecode#630).
Added `--profile` CLI option (SpartanJ/ecode#634).
Added `--disable-plugins` CLI option (SpartanJ/ecode#635).
Moved `crashes` directory to profile directory (SpartanJ/ecode#639).
Added `Settings -> Terminal -> Close Terminal Tab on Exit` (SpartanJ/ecode#643).
2025-09-10 01:35:11 -03:00
Martín Lucas Golini
54aaeb4931 Spell-checked the whole project. 2025-08-22 01:33:51 -03:00
Martín Lucas Golini
4b4a5f3491 More work on the Spell-Checker (SpartanJ/ecode#515).
Spell-Checked a lot of code.
2025-08-21 01:43:42 -03:00
Martín Lucas Golini
dbb36cdcf4 Fix Objective-C highlighter.
Added Objective-C++ highlighter (SpartanJ/ecode#616).
Replaced "Treat .h file as C++" in favor of "Treat .h files as..." with multiple options, including auto-detection (SpartanJ/ecode#614).
Refresh semantic-highlighting after syntax highlighter change.
2025-08-17 16:56:12 -03:00
Martín Lucas Golini
a1959fd149 Fix a memory leak in the debugger session where memory was never released after session due to cyclic references in ModelVariableNode.
Fix an incorrect std::move in `DebuggerClientDap::variables` which could have caused incorrect states.
Fix invalid memory access in `LSPDocumentClient::requestSemanticHighlighting`.
2025-08-10 17:34:32 -03:00
Clemens Schmid
e5bd1dc3e1 added curry language definition for syntax highlighting (#138)
* added curry language definition for syntax highlighting

* fixed comment syntax definition for Haskell, Elm, and Curry
2025-08-06 14:19:58 -03:00
Martín Lucas Golini
d7973b33e5 Pump SDL2. 2025-07-27 23:17:01 -03:00
Martín Lucas Golini
5cc94842e1 Add DAP multi-session support and add Node.js debugging support. 2025-06-22 01:48:17 -03:00
Martín Lucas Golini
2fb80cd94a WIP trying to support vscode-js-debug. 2025-06-20 22:18:30 -03:00
Martín Lucas Golini
f5dd8d08d9 Merge remote-tracking branch 'origin/develop' into develop 2025-06-04 21:02:46 -03:00
Martín Lucas Golini
cec4fa6e72 Add webp image format support (load and save).
Fix bug introduced in the last commit for UIDataBind initialization.
Change gmake2 in favor of gmake when using premake5 since it has been depreated in premake5-beta6 (hopefully I did not miss anything).
2025-06-04 21:02:38 -03:00
Alexander Meshcheryakov
06bf7e8b7d exec to avoid extra shell process while ecode runs (#122) 2025-06-04 01:40:09 -03:00
Martín Lucas Golini
c156b53e4b Rename "keyword2" to "type" and "keyword3" to "parameter".
Added some String overloaded functions.
2025-06-01 20:07:23 -03:00
Martín Lucas Golini
821e7f50dd SyntaxTokenizer: improve the stack-based pattern matching to support include / repositories.
Added some *very basic* support for some *very basic* TextMate grammars, `$language.tmLanguage.json` files are now parsed and supported internally. Full support is not currently possible, and might never be. This is to facilitate converting grammars to ecode format.
Updated python linter and formatter to the latest ruff version.
2025-05-07 21:17:07 -03:00
Martín Lucas Golini
fe84f10794 Improve tokenizer for closing sub-syntaxes.
Allow adding alternative names to languages.
2025-05-02 23:57:08 -03:00
Martín Lucas Golini
2c19b74d2a Fix AppImage generation from within the docker container. 2025-04-26 16:05:20 -03:00
Martín Lucas Golini
994e298fab Try building Linux x86_64 nightly within an Ubuntu 20.04 docker container. 2025-04-26 14:13:26 -03:00
Martín Lucas Golini
53609f3870 Allow patching glibc to an older version during ecode build, enabled this feature in linux nightly. 2025-04-25 00:27:40 -03:00
Martín Lucas Golini
3c4b2698c3 Add new OpenAI and Google models.
Pump eepp and ecode versions.
Try to fix a minor bug in Plugin Manager window.
2025-04-19 00:15:47 -03:00
Martín Lucas Golini
d0f4a2eeea Fix some issues with RegEx captures.
Added Janet syntax highlighting (SpartanJ/ecode#394).
Fixes in syntax highlighter to C++ converter.
2025-04-12 17:55:05 -03:00
Martín Lucas Golini
1368ed30d3 Enable text-shaper in nightly builds. 2025-03-29 11:59:18 -03:00
Martín Lucas Golini
584dfdfc59 Try fix nightly. 2025-03-28 16:48:32 -03:00
Martín Lucas Golini
bce702bf9f Update to the latest SDL2 version (2.32.2).
Fix user manually set fallback-font (default fallback font will be always loaded).
2025-03-28 15:38:43 -03:00
Martín Lucas Golini
8ac5e1e2e8 Refactor in SyntaxDefinition and related classes.
Minor improvements in CPP, CSS, xit syntax highlighting.
AI Assistant / LLM Chat now can restore previous opened chats and states (last model used, panel split), can have private conversations, can clone a previous conversation, plus some visual improvements.
Fixed a bug in tab widget splitting.
2025-03-26 23:55:29 -03:00
Martín Lucas Golini
d8aa670d12 Some minor fixes in debugger and gitplugin.
Minor visual improvement in status bar.
2025-03-14 00:30:53 -03:00
Martín Lucas Golini
277f410ad0 WIP supporting more debuggers. 2025-01-20 19:43:56 -03:00
Martín Lucas Golini
84f1740d2b Fix incorrectly adding watches of subfolders of currently loading directory.
WIP process id picker.
2025-01-19 01:34:15 -03:00
Martín Lucas Golini
b340fcbbf9 Some refactor. 2025-01-12 00:36:14 -03:00
Martín Lucas Golini
403005301d More improvements to debugger. 2025-01-08 01:51:38 -03:00
Martín Lucas Golini
a96e033b81 More WIP. 2025-01-03 00:00:10 -03:00
Martín Lucas Golini
469ca05e9f Refactor how App is exposed. Expose more functionality to the Plugins. 2024-12-31 19:01:32 -03:00
Martín Lucas Golini
9fc6078c61 Merge branch 'develop' into debugger 2024-12-29 23:50:46 -03:00
Martín Lucas Golini
793e87af5c Allow to split editors views by dragging tabs into the tab widget corners. 2024-12-29 23:50:24 -03:00
Martín Lucas Golini
d07bb2572c More WIP. 2024-12-28 13:16:03 -03:00
Martín Lucas Golini
a15e461cc8 Speed up load time by loading asynchronously some resources before window creation and avoiding creating some of the largest submenues in settings menu. 2024-12-22 22:23:44 -03:00
Martín Lucas Golini
c4daa30880 Fixes for multi-cursor.
Fixes for file extensions (improperly filtering file extensions).
Added very basic tests for TextDocument multi-cursor.
Add .txt files into projects (register .txt extension as Plain Text).
2024-12-20 20:22:50 -03:00
Martín Lucas Golini
772934c2f4 Pump SDL2 version. 2024-11-17 20:28:27 -03:00