d2d13cbe41Fixed a few HTML+CSS parsing errors. Fixed a crash when loading fonts from web. Add support for scientific notation in stylesheet lengths.
Martín Lucas Golini
2026-05-11 00:51:43 -03:00
a38ffe2532Inherit UIHTMLInput from UIHTMLWidget.
Martín Lucas Golini
2026-05-10 14:26:47 -03:00
cafdefbf4aFix auto-size for HTML images. Added visibility property support. Fix display: none. Added figure and figcaption HTML tags.
Martín Lucas Golini
2026-05-10 01:55:19 -03:00
24bc5edd72Fixes in whitespace collapsing, added white-space-collapse to the CSS specification.
Martín Lucas Golini
2026-05-09 21:26:16 -03:00
792bae6da2Make UITextNode easily debuggable by setting its position and size.
Martín Lucas Golini
2026-05-09 20:05:35 -03:00
23b14ba2feFix unit-tests (ups). Fix an issue when setting an invalid color to the terminal display. Update efsw.
Martín Lucas Golini
2026-05-09 19:52:06 -03:00
9255cf8c35Nit in UITextNode.
Martín Lucas Golini
2026-05-09 19:26:52 -03:00
10fa8f7411Fix ex and ch units.
Martín Lucas Golini
2026-05-09 02:22:06 -03:00
f4f30c9979Improve line-height support (add correct percentage support).
Martín Lucas Golini
2026-05-09 01:56:55 -03:00
bc071bd88dAdd line-height and text-indent support.
Martín Lucas Golini
2026-05-09 01:38:43 -03:00
0c3df503b4Fix in background sizing when using pixel-density != 1. Updated new background tests due to the windowing size issues in the macOS CI.
Martín Lucas Golini
2026-05-09 00:30:33 -03:00
e94550a049ui: Full HTML background property support + whitespace collapsing rewrite Part 1: CSS background properties (UINodeDrawable, LayerDrawable) Add BackgroundMode (Native / Html) to UINodeDrawable. When Html mode is active, background rendering follows CSS/HTML semantics (repeat defaults to repeat, clip plane always enabled, etc.). Native mode preserves the original eepp behavior (no-repeat by default, clip only when repeating). Add per-layer background-origin, background-clip, background-attachment with fromText parsers and CSS property registration. background-origin controls the reference box for position/percentage resolution. background-clip enables per-layer content-box clipping. background-attachment: fixed anchors the background to the scene root; local is stubbed (needs per-widget scroll offset plumbing). Replace the single Repeat enum with RepeatX / RepeatY enums supporting two-value repeat (e.g. "repeat no-repeat", "space round"). Implement space and round repeat rendering in LayerDrawable::draw(). Fix background-size: contain to scale up (not just down) like HTML. Rewrite the comma-separated multi-layer background shorthand parser with /size separator, box keyword disambiguation, and attachment keywords. UINode::{getBackground} detects UI_HTML_ELEMENT flag and lazily sets BackgroundMode::Html. Add golden image test: 20-tile image atlas via background: url(bnp.png) pos / size no-repeat with browser-comparable HTML. Part 2: HTML whitespace collapsing (HTMLFormatter → UIRichText) Move whitespace collapsing from parse time to layout time. Previously HTMLFormatter::collapseXmlWhitespace ran on the pugixml DOM before CSS was resolved, using tag-name heuristics for inline/block detection. This caused whitespace between elements with display: inline-block (via CSS) to be incorrectly stripped. The new pipeline preserves raw whitespace in UITextNode widgets (after internal whitespace collapsing via UIRichText::collapseInternalWhitespace) and defers boundary stripping to UIRichText::rebuildRichText, where every widget's computed CSSDisplay is available via UIWidget::isInlineDisplay(). - UIWidget::isInlineDisplay() returns true for text nodes and widgets with CSSDisplay::Inline | InlineBlock, used by boundary logic. - UITextNode::isWhitespaceOnly() identifies collapsible text nodes. - findLogicalPrev/Next walks up through inline ancestors to find the correct boundary element, matching HTML's whitespace transparency rule. - Boundary stripping: leading/trailing spaces removed at block edges, preserved between inline-level siblings. - Double-space prevention: when adding text that starts with a space, peeks at the last SpanBlock in RichText if it ends with a space, the leading space is stripped. This prevents consecutive spaces when whitespace nodes are separated by empty inline elements. - UITextNode::mLayoutCharCount syncs the character index between rebuildRichText (where boundary-stripped text is added) and positionRichTextChildren (where widgets are mapped to render spans), fixing hitbox alignment for all text-bearing widgets. Remove HTMLFormatter::collapseXmlWhitespace, isInlineNode, hasSignificantText, getLogicalPrev, getLogicalNext, and the precomputeDisplayStyles hack (~200 lines removed). HTMLFormatter now only exposes HTMLtoXML. Other fixes - Remove @import url(https://fonts.googleapis.com/css?family=Lato) from ensoft.css (async HTTP use-after-free in test suite). - BlockLayouter::positionRichTextChildren skips whitespace-only text nodes when advancing the character index. - Fix in DrawableSearcher not finding already loaded textures.
Martín Lucas Golini
2026-05-08 22:13:07 -03:00
7452cbf492Fix mingw build on openSUSE.
Martín Lucas Golini
2026-05-08 18:01:41 -03:00
a870a278bbForgot to update versioning. A couple of minor nits.
Martín Lucas Golini
2026-05-08 16:50:46 -03:00
8f13e62dd7Slightly debounce UICodeEditorSplitter::addEditorPositionToNavigationHistory.
Martín Lucas Golini
2026-05-06 22:48:57 -03:00
dc603d4275Some rendering optimizations.
Martín Lucas Golini
2026-05-05 01:42:54 -03:00
336afe90d7Fixed a rendering bug in the terminal emulator when updated line only updated spaces. Added an optimization for scene loading. Do not allow the spell checker renderer to try to render on too long lines.
Martín Lucas Golini
2026-05-04 19:30:56 -03:00
19c0f15196Merge branch 'feature/sdl3' into develop
Martín Lucas Golini
2026-05-04 12:21:19 -03:00
02b6076ceemojoAL SDL3
Martín Lucas Golini
2026-05-04 11:47:54 -03:00
9e3c13903dImprove percentage resolution in HTML elements.
Martín Lucas Golini
2026-05-03 19:49:38 -03:00
da30372aaeRemove concepts dependency, switch temporally Linux nightly to clang.
Martín Lucas Golini
2026-05-03 19:40:56 -03:00
03a798820dFix percentage resolution when parent is WrapContent (only for height's, for width we need to do some extra changes in layouters, added a plan to fix it later).
Martín Lucas Golini
2026-05-03 12:32:27 -03:00
7150633c1aFixes in URI implementation to handle some special cases, added some tests too. Fix flaky test. Renamed tests to have consistent naming.
Martín Lucas Golini
2026-05-03 02:22:37 -03:00
ecf7c20262Fix foreground-radius definition.
Martín Lucas Golini
2026-05-03 00:48:13 -03:00
2dcc787ed7Fix top + bottom and left + right html element expanding.
Martín Lucas Golini
2026-05-03 00:33:32 -03:00
a698348abdImprove font loading and URL handling in external CSS.
Martín Lucas Golini
2026-05-02 23:55:45 -03:00
fcb2cca844Fixes for position: sticky, absolute and fixed.
Martín Lucas Golini
2026-05-02 19:41:10 -03:00
393a784e8fMerge branch 'develop' into feature/sdl3
Martín Lucas Golini
2026-05-02 14:45:56 -03:00
89329123fbAdded UIWebView and ui_html now uses that.
Martín Lucas Golini
2026-05-02 14:45:07 -03:00
1bd29d5df2Should fix windows build.
Martín Lucas Golini
2026-05-02 01:50:58 -03:00
3226efdb24Do not allow to set width and height of html and body from CSS since they need to have very specific sizing.
Martín Lucas Golini
2026-05-02 01:47:08 -03:00
307d9249acAdd float and clear support. Fixes in Base64 implementation. Fixes in remote image loading.
Martín Lucas Golini
2026-05-02 01:12:13 -03:00
d54fd398f6Fix bad includes. Add very hacky and basic overflow support.
Martín Lucas Golini
2026-05-01 19:06:36 -03:00
e765160a44Merge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-05-01 18:52:57 -03:00
157bc2962fAdded HTML forms support. Added cookies support (now it's possible to login in websites). Improved redirect handling in HTTP client. Fix in Node::find* and UIWidget::find* functions to ignore closing nodes. Fix in Node min width and height handling with pixel scale different than 1.
Martín Lucas Golini
2026-05-01 18:52:46 -03:00
6849401968Merge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-05-01 11:30:29 -03:00
d64638d989Out of flow positioning fixes.
Martín Lucas Golini
2026-05-01 11:30:22 -03:00
ff96ef10c5fix and update french translations (#177)
Pierre Dittgen
2026-05-01 15:51:41 +02:00
717f3c1b9bFix in StyleSheetPropertiesParser::readPropertyValue.
Martín Lucas Golini
2026-05-01 03:16:39 -03:00
eafdb240eaTry an alternative.
Martín Lucas Golini
2026-05-01 02:55:58 -03:00
1cd57f3b65Try fix issue with ubuntu ppa repo.
Martín Lucas Golini
2026-05-01 02:17:13 -03:00
936938b71fAdded an option to set dynamic theming in the UICodeEditor.
Martín Lucas Golini
2026-05-01 01:07:06 -03:00
fc45707cd1Fix padding and margin in empty spans with children.
Martín Lucas Golini
2026-05-01 00:37:28 -03:00
12b1ff0d62Create the code element with the correct tag.
Martín Lucas Golini
2026-04-30 20:59:13 -03:00
76de6553b4Introducing UITextNode, a native text node representation within the eepp UI hierarchy. This solves issues where text content incorrectly intercepts CSS structural pseudo-classes (like :nth-child and :first-of-type) because it was previously wrapped in standard UIWidget components (UITextSpan). In standard web browsers, a Node represents anything in the DOM (including text), whereas an Element represents an HTML tag. CSS selectors strictly filter by Element. Currently, eepp's CSS engine (StyleSheetSpecification) evaluates selectors directly against Node sibling counts (getNodeIndex(), getChildCount()). By distinguishing between "Widgets" (Elements) and "Text Nodes" at the node level, we updated these selectors to count only true structural elements, matching web standards with zero performance overhead.
Martín Lucas Golini
2026-04-30 20:57:32 -03:00
2b5d08d3b0UITextSpan now inherits from UIRichText, if it's inline-block it will behave as a block otherwise it will continue behaving as inline. This improves inline-block behavior and it's much close to the specification.
Martín Lucas Golini
2026-04-30 16:49:03 -03:00
10b8ed8622Fix incorrect wrap in inline-blocks.
Martín Lucas Golini
2026-04-30 13:31:36 -03:00
6691d9c174Improvements for ul and ol. Added a few tags: dl, dt, dd. Load style tags inside UIRichText blocks. Added display: list-item.
Martín Lucas Golini
2026-04-30 12:58:05 -03:00
bcdd88d1e6Fix french translation xml corrupted by accident.
Martín Lucas Golini
2026-04-29 14:54:24 -03:00
04d69e2871Several HTML widgets fixes.
Martín Lucas Golini
2026-04-29 14:07:56 -03:00
4ab9942e37Merge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-04-29 13:05:37 -03:00
ae0fd6bc2bFixes for absolute positioning and some minor details.
Martín Lucas Golini
2026-04-29 13:05:29 -03:00
80faf01cf4Tolerate a minor difference in border visual tests due to graphics drivers behaving slightly different to render rounded corners.
Martín Lucas Golini
2026-04-29 02:03:52 -03:00
84331ad9ad1024x653 px width seems to be the upper limit to create windows on macOS CI, no idea why.
Martín Lucas Golini
2026-04-29 01:16:13 -03:00
dcd8ecee55Split borders tests into two to fit in 650px height, which seems to be the maximum height we can use in macOS CI worker.
Martín Lucas Golini
2026-04-29 00:56:01 -03:00
e1d9642dc6Simulate content-box for HTML compat layer.
Martín Lucas Golini
2026-04-29 00:28:11 -03:00
f765eae28dGreatly improve borders rendering, added a few tests. Fixed UIStyle::getProperty, now respects specificity. Fixed StyleSheetPropertiesParser::addProperty when inserted an already existing property.
Martín Lucas Golini
2026-04-28 21:52:31 -03:00
350bc8a95dFix strong being created as b by accident.
Martín Lucas Golini
2026-04-28 01:52:34 -03:00
c65122e120UITextSpan drawBorder fix when span has padding.
Martín Lucas Golini
2026-04-28 01:28:25 -03:00
7c2fad64bcAdd font shorthand parser (a simplified version to what we can support now).
Martín Lucas Golini
2026-04-28 01:14:04 -03:00
f6e284c6f5Move Default Block-Level Margins from Stylesheet to Widget Construction. This is needed in order to have working rules line: * { margin: 0; } with low specificity.
Martín Lucas Golini
2026-04-28 00:11:18 -03:00
bbd91d2399Added support for margin and padding in text spans.
Martín Lucas Golini
2026-04-27 23:58:13 -03:00
ab712cd5c8Correctly set HTML img alt text color.
Martín Lucas Golini
2026-04-27 16:48:31 -03:00
24cf3ad6c7Added UISvg (for embedded svg in XML) and UIHTMLImage (to handle HTML img, although still WIP).
Martín Lucas Golini
2026-04-27 16:41:37 -03:00
939ce02a3aSupport "inherit" keyword in CSS properties.
Martín Lucas Golini
2026-04-27 10:53:53 -03:00
82a93dada4Added UIHTMLListItem to handle list items properly.
Martín Lucas Golini
2026-04-27 01:38:37 -03:00
41e979d314CSS Position (Out of Flow) implementation. Added a few plan descriptions that I want to implement later.
Martín Lucas Golini
2026-04-26 21:50:34 -03:00
ca3e2e2020If a full directory path is pasted in the File Name input and it's opened it will try to first open that directory, if valid it will open (SpartanJ/ecode#872).
Martín Lucas Golini
2026-04-26 18:33:52 -03:00
4660257857Remove ellipsis from some actions / commands (SpartanJ/ecode#892).
Martín Lucas Golini
2026-04-26 17:37:36 -03:00
926bf3102fFixes for Haiku build.
Martín Lucas Golini
2026-04-26 14:29:27 -03:00
34a5cb5e34Merge branch 'develop'
Martín Lucas Golini
2026-04-26 12:52:33 -03:00
009140f798Update efsw and SOIL2.
Martín Lucas Golini
2026-04-26 01:26:27 -03:00
d93b03f624Pump versions. Add keybindings to the ecode markdown viewer. Optimization in BlockLayouter. Hack to display code in <pre><code> HTML elements.
Martín Lucas Golini
2026-04-26 01:12:42 -03:00
d8596bbdcdMerge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-04-25 20:48:35 -03:00
c6bf311766Merge branch 'feature/css-display' into develop
Martín Lucas Golini
2026-04-25 20:48:10 -03:00
8a9bc2cd47Some HTML rendering fixes. Most important is the media query is correctly processed when combining style sheets.
Martín Lucas Golini
2026-04-25 20:47:51 -03:00
1970b8bbe9WIP CSS Display support.
Martín Lucas Golini
2026-04-25 17:27:45 -03:00
5e85425f27Fix bug that blocked horizontal scroll on lines larger than the viewport when horizontal scrollbar was disabled.
Martín Lucas Golini
2026-04-25 13:41:59 -03:00
3715933d7aFix folder not closing when a terminal has focus (SpartanJ/ecode#890). Fix release notes in nightly.
Martín Lucas Golini
2026-04-25 11:41:30 -03:00
bc37296f66Added kerning cache in FontTrueType.
Martín Lucas Golini
2026-04-25 02:03:21 -03:00
c76f9bf3c2Merge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-04-25 01:19:35 -03:00
18ff217a11Don't lock the editor while matching brackets.
Martín Lucas Golini
2026-04-25 01:13:50 -03:00
1a2d4b1473Fix in AI Assistant keybindings.
Martín Lucas Golini
2026-04-25 00:31:06 -03:00
f21972fd75Merge remote-tracking branch 'origin/develop' into develop
Martín Lucas Golini
2026-04-24 19:36:38 -03:00
dea87f345eDisable ASAN leak detection when run unit-tests with xvfb-run (because the tool leaks all X11 windows).
Martín Lucas Golini
2026-04-24 12:00:45 -03:00
6e65ef31f2Merge branch 'develop' into feature/sdl3
Martín Lucas Golini
2026-04-23 17:57:31 -03:00
0bb3f1157fAuto-Close brackets improvements: 1. Word boundary behavior: Typing an opening bracket directly preceding an alphanumeric character prevents auto-closing. (e.g. typing ( before word correctly inserts ( without closing it). 2. Whitespace boundary behavior: Typing an opening bracket before a space triggers normal auto-closing. 3. Forward unbalanced brackets: Typing an opening bracket when there's an unmatched closing bracket ahead on the same line prevents auto-closing (so typing ( when the line is () ) doesn't insert an extra )). 4. Balanced brackets: Regular auto-closing when brackets are completely matched. 5. Quote balancing: If the line already has balanced quotes and your cursor is right before a quote, typing a quote will just overwrite/step over the right quote instead of adding a new pair.
Martín Lucas Golini
2026-04-23 16:12:25 -03:00
8fef89138bChange the Update Tag step in CI.
Martín Lucas Golini
2026-04-21 17:07:23 -03:00
9ccd79b2a7Upgrade softprops/action-gh-release
Martín Lucas Golini
2026-04-21 12:56:32 -03:00
eec7eeb284Fix a possible dead-lock during closing. Update to actions/checkout@v6.
Martín Lucas Golini
2026-04-21 00:20:39 -03:00
7307b524f4Fix UISceneNode::solveRelativePath. Some fixes in LLM Chat UI, also added the option to display the reasoning (display_reasoning).
Martín Lucas Golini
2026-04-20 01:42:12 -03:00
7ec6e3cf1fGreatly improved signature help rendering, now allows to render in multi-line with text-wrapped and it's enabled by default. Added new options for the Auto Complete Plugin: * **max_signature_helper_width**: The maximum width in stylesheet length of the signature helper (default value: "90%"). * **max_suggestion_documentation_width**: The maximum width in stylesheet length of the currently selected suggestion item documentation (default value: "100%"). * **signature_help_multi_line**: Enables the signature help to be rendered in multiple lines if needed (wraps text), otherwise it will render in a single line and ensure the current parameter is visible. * **suggestion_documentation**: Enables the suggestion item documentation.
Martín Lucas Golini
2026-04-19 00:52:03 -03:00
878307df78Ups, forgot to export the new class in Windows build.
Martín Lucas Golini
2026-04-18 15:55:59 -03:00
4180e9d7c3Separate the box placement logic into an static class UIPlacementUtils so it can be used in different cases (SpartanJ/ecode#874).
Martín Lucas Golini
2026-04-18 15:24:27 -03:00
da1bbda8c7Much better documentation placement in the auto-complete suggestions function/method documentation (SpartanJ/ecode#874).
Martín Lucas Golini
2026-04-18 13:27:03 -03:00
18be45681dPrevent miss-matching new/delete when using ASAN.
Martín Lucas Golini
2026-04-17 18:22:40 -03:00