Commit Graph

556 Commits

Author SHA1 Message Date
Martín Lucas Golini
b02fc1f3a6 Add dynamic AI model catalog and reasoning controls
Fetch and cache the models.dev catalog asynchronously, replacing bundled model lists when catalog data is available while preserving local and user-configured providers.

Update live AI Assistant instances after refresh, defer startup requests until the UI is ready, and cancel in-flight catalog requests during shutdown. Prioritize providers with configured credentials and infer each provider's cheapest title-generation model from catalog pricing.

Add model reasoning metadata, effort controls, request serialization, chat persistence, and localized UI labels. Refresh the bundled fallback models and support API keys for arbitrary catalog providers.

Fix ACP Agent mode message chunks enqueue ordering issue (ACP thought chunks were enqueued twice while answer chunks were enqueued once).

Fix UIDropDownList WrapContent sizing so dropdown width follows its text, skin, and padding, and tighten UIDropDown automatic height sizing.
2026-08-19 01:30:56 -03:00
Martín Lucas Golini
ffabb19d60 Add configurable OpenType font features to text rendering:
Support explicit liga, calt, clig, and dlig shaping features and include
  text hints in layout caching, measurement, drawing, and character
  position calculations.

  Propagate scene-wide font feature defaults through UI text producers,
  with granular widget overrides and recursive cache invalidation. Update
  UICodeEditor and UIConsole to use shaped positioning when font features
  are enabled, including with monospaced fonts.

  Add separate UI and editor font feature settings to ecode, persist them
  as comma-separated OpenType tags, and apply changes immediately. Add
  localized menu labels, reusable Text feature conversion helpers, and
  regression coverage for shaping, positioning, propagation, and parsing.
2026-08-15 02:21:11 -03:00
Martín Lucas Golini
1b901eaa02 Fix external font handling in UIFontPickerDialog
Preserve explicitly selected font styles and correctly reconcile external fonts with the asynchronously loaded system font list.

Group same-family external fonts under the Style column when styles are visible, and expose them as distinct family entries when styles are hidden. Include filenames in localized external-font labels to distinguish alternate
font versions.

Ensure system-listed regular faces remain available after asynchronous loading and add regression coverage for collisions, selection, and hidden style behavior.
2026-08-14 13:52:55 -03:00
Martín Lucas Golini
bf750761ae ecode: add customizable debugger panel layouts
- add a reusable right-side panel managed at the application level
  - migrate debugger tabs to UITabWidgetSplitter instances
  - support moving and splitting debugger tabs across bottom and right panels
  - restrict debugger tab drops to debugger-owned panel targets
  - serialize debugger tab layouts, panel state, and table column widths
  - add pixel and percentage column-width modes to UIAbstractTableView
  - support XML/CSS configuration and an optional width-mode context menu
  - preserve percentage totals across resizing, fit-to-content, minimum widths,
    scrollbar changes, and pixel-density rounding
  - add splitter edge hiding while preserving splitter-always-show precedence
  - use EventConnection ownership for safe widget and controller lifetimes
  - validate serialized splitter layouts with structural limits
  - display project-relative source paths in debugger stack frames
  - add ecode localization strings, CSS documentation, tests, and agent rules
2026-08-14 00:17:29 -03:00
Martín Lucas Golini
6ba7de31d5 Added "Open Folder" button to the take screenshot notification. 2026-08-11 17:51:31 -03:00
Martín Lucas Golini
4789bfb5f9 ecode: add configurable screenshot support
Add an unlocked take-screenshot command and expose it under Settings -> Window with a default Print Screen binding.

Allow configuring the screenshot destination, filename pattern, and output format. Save screenshots under the ecode configuration directory by default, notify users after capture, and provide an action to open the result in the integrated image viewer.

Addresses a request in SpartanJ/ecode#950.
2026-08-11 15:43:22 -03:00
Martín Lucas Golini
6df0c0738f Add font size selection to ecode font picker:
Allow UIFontPickerDialog sections to be hidden and make ecode's UI, editor, and terminal font dialogs select both the font and its size.
Keep external fonts selectable across asynchronous font enumeration, including when they share a family name with a system font, and label them as external. Also normalize UILinearLayout weights across visible children so hidden picker columns release their space correctly.
Update font picker previews, size units, menu labels, translations, and lifetime handling.

Addresses SpartanJ/ecode#944.
2026-08-11 12:38:34 -03:00
Martín Lucas Golini
0bf2b89970 Handle downscaled LCD glyphs with a dedicated resize path before atlas upload. This preserves row stride and RGB coverage, fixing corrupted icon-font glyphs at small sizes.
Add a golden-image regression test covering scaled subpixel glyphs from the Nonicons font.
2026-07-26 00:23:24 -03:00
Martín Lucas Golini
c0debbee9f Rollback to fix rendering. 2026-07-25 20:26:24 -03:00
Martín Lucas Golini
27a57960f4 SubPixel hinting support. 2026-07-25 18:59:20 -03:00
Martín Lucas Golini
ed46508df4 Merge branch 'feature/resource-shared-ownership' into develop 2026-07-25 01:36:21 -03:00
Martín Lucas Golini
b940407102 ecode: The custom fallback font reused the "fallback-font" resource key, replacing the built-in CJK fallback in FontService.
Fix:

  - User fallback now uses "user-fallback-font".
  - Built-in CJK and custom fallback fonts remain registered together.
  - Added and passed a regression test verifying both fallback resources remain in the chain.

Fixes in premake5.lua:

  - Removed obsolete PRECISE_F32=1; Wasm already provides precise float behavior.
  - Moved ENVIRONMENT=worker,web to final application link options.

Fixed MarkdownView not getting the correct CSS style from the base theme.
2026-07-25 01:36:00 -03:00
Martín Lucas Golini
6351332d9b Closes SpartanJ/ecode#939 2026-07-24 10:48:11 -03:00
Martín Lucas Golini
0a7984b17d Register cmake.in.
Detect as function call something like `name ()` in Vala.
2026-07-17 12:30:18 -03:00
Martín Lucas Golini
41f58374bd Pre register new extensions. 2026-07-17 12:18:41 -03:00
Martín Lucas Golini
d04f4502db Fix minor bug in UIFileDialog text input row selection. 2026-06-15 01:32:28 -03:00
Martín Lucas Golini
ff97358695 This should fix a possible but very implausible heap-use-after-free issue in the LSP client. 2026-06-11 02:16:24 -03:00
Martín Lucas Golini
650bbed0c5 Add MiMo support. 2026-06-11 01:57:57 -03:00
Martín Lucas Golini
9bfa128658 Use the new tab position setting for *all* new tabs (SpartanJ/ecode#904). 2026-06-04 16:42:10 -03:00
Martín Lucas Golini
5d0e31e52e Allow to inspect widget style from widget inspector. 2026-06-04 02:00:39 -03:00
Martín Lucas Golini
81d5854dc5 Fix SpartanJ/ecode#908. 2026-05-30 01:50:04 -03:00
Martín Lucas Golini
aa9efcf13b Load CSS default HTML element styles from a CSS file with no specificity. This simplyfies how to setup the HTML defaults. Also set new defaults matching closer HTML spec. 2026-05-24 13:15:31 -03:00
Martín Lucas Golini
97fc336955 Fix: When build is triggered with unsaved files don't display the file save dialog for files that are just in text buffer.
Fix: Ctrl+W does not close the tab in Build Settings: Added Event::OnFocusWithin so the tab widget registers that event to setCurrenWidget in UICodeEditorSplitter.
2026-05-18 01:08:14 -03:00
Martín Lucas Golini
3dadd58ce1 Various fixes for HTML compat layer. 2026-05-16 03:26:55 -03:00
Martín Lucas Golini
eaa82411c3 Improve @font-face font loading.
Added new flag UI_CREATING_NODE that will be used for performance optimizations.
2026-05-12 01:51:35 -03:00
Martín Lucas Golini
4fa495f0e1 Fix CSS parsing issues with media queries and imports.
Added sup and sub html elements.
2026-05-11 19:00:58 -03:00
Martín Lucas Golini
bd9e70fb83 Fixes in how we process the CSS selector specificity.
Fixes in selector rule parser.
Stub implementation for attributes filter in CSS.
Fixes in `background-position` and `background` shorthand parsers.
Added a few HTML elements tags.
Added body default left and right margin.
2026-05-11 14:43:24 -03:00
Martín Lucas Golini
6849401968 Merge remote-tracking branch 'origin/develop' into develop 2026-05-01 11:30:29 -03:00
Martín Lucas Golini
d64638d989 Out of flow positioning fixes. 2026-05-01 11:30:22 -03:00
Pierre Dittgen
ff96ef10c5 fix and update french translations (#177) 2026-05-01 10:51:41 -03:00
Martín Lucas Golini
936938b71f Added an option to set dynamic theming in the UICodeEditor. 2026-05-01 01:07:06 -03:00
Martín Lucas Golini
12b1ff0d62 Create the code element with the correct tag. 2026-04-30 20:59:13 -03:00
Martín Lucas Golini
6691d9c174 Improvements for ul and ol.
Added a few tags: dl, dt, dd.
Load style tags inside UIRichText blocks.
Added `display: list-item`.
2026-04-30 12:58:05 -03:00
Martín Lucas Golini
bcdd88d1e6 Fix french translation xml corrupted by accident. 2026-04-29 14:54:24 -03:00
Martín Lucas Golini
f6e284c6f5 Move Default Block-Level Margins from Stylesheet to Widget Construction. This is needed in order to have working rules line: * { margin: 0; } with low specificity. 2026-04-28 00:11:18 -03:00
Martín Lucas Golini
82a93dada4 Added UIHTMLListItem to handle list items properly. 2026-04-27 01:38:37 -03:00
Martín Lucas Golini
4660257857 Remove ellipsis from some actions / commands (SpartanJ/ecode#892). 2026-04-26 17:37:36 -03:00
Martín Lucas Golini
8a9bc2cd47 Some HTML rendering fixes. Most important is the media query is correctly processed when combining style sheets. 2026-04-25 20:47:51 -03:00
Martín Lucas Golini
18ff217a11 Don't lock the editor while matching brackets. 2026-04-25 01:13:50 -03:00
Martín Lucas Golini
7307b524f4 Fix UISceneNode::solveRelativePath.
Some fixes in LLM Chat UI, also added the option to display the reasoning (`display_reasoning`).
2026-04-20 01:42:12 -03:00
Martín Lucas Golini
3d894eb566 Add Together LLM provider to the AI Assistant plugin. 2026-04-15 01:45:30 -03:00
Martín Lucas Golini
f95f32eeba Add ${relative_dir} useful to solve case mentioned at https://github.com/SpartanJ/ecode/discussions/876 2026-04-15 00:34:49 -03:00
Martín Lucas Golini
4a4da521d9 Change default keybindings using option+key for macOS to make possible to input text with those key combinations. Mostly changes on modifier keys for some operations: status control panels will switch with mod+number and ctrl+number will switch to tab number, also ctrl+tab and ctrl+shift+tab will advance and move to previous tab.
Also: "lsp-symbol-code-action" will default to cmd+return. "format-doc" will default to mod+option+f.
Important: these changes do not *change* any currently configured shortcut, existing users will have to migrate manually, this is intentional to not disrupt current users work flows.
These changes are for the issue: SpartanJ/ecode#877.
2026-04-14 20:56:49 -03:00
Martín Lucas Golini
e2b9b47b21 A couple of nits. 2026-04-13 15:42:27 -03:00
Martín Lucas Golini
57929621df Prevent a crash when signature parameters are incorrect.
"About ecode" close with escape (SpartanJ/ecode#873).
2026-04-08 15:51:35 -03:00
Martín Lucas Golini
5e6c05d0c5 Fixes in Color::isColorString, added some functions to String, refactored a few things in LuaPattern. Fixed a crash while rendering text with only spaces. Improved FunctionString performance. 2026-04-07 00:05:51 -03:00
Martín Lucas Golini
061cb53dbf Fix pt, em, rem, pc, in, cm, mm to follow HTML spec.
Fix hexa color validation in Color::isColorString.
2026-04-05 03:21:57 -03:00
Martín Lucas Golini
c3135e0b84 Deprecate TextInputPassword and its aliases. 2026-04-04 22:03:03 -03:00
Martín Lucas Golini
98088dd44d Add color boxes support (SpartanJ/ecode#825). 2026-04-04 14:11:05 -03:00
Martín Lucas Golini
2a410876a7 Fix "box" shorthand parser.
AI Assistant: Added some new free models.
Fixed a crash in UIWidgetInspector.
2026-04-04 02:42:10 -03:00