Skip to content

Changelog

curveo edited this page May 12, 2026 · 10 revisions

Changelog


v1.0

Initial release — full feature set

Bug fixes

  • v-if / v-show bare expressionsv-if="count > 0" évalue correctement. Les expressions nues sans {{ }} étaient toujours vraies.
  • String comparisonstatus == 'ready' fait une comparaison string. Les deux côtés étaient convertis en double et tout comparait à 0 == 0.
  • RHS model resolutiona == b avec deux clés modèle compare les valeurs résolues.
  • Quote-aware operator parsing — un opérateur dans un littéral quoté (status == 'a > b') n'est plus interprété comme opérateur de comparaison.
  • Clé absente — une clé absente du modèle vaut "", pas 0. missing == 0 retourne false.
  • Commentaires CSS multilignes/* ... */ sur plusieurs lignes correctement supprimés.
  • rgba() alpha clamping — les valeurs hors [0, 1] sont clampées au lieu de wrapper.
  • margin-top: auto cascade — une règle plus spécifique peut réinitialiser auto en valeur px.
  • Transition memory leak — les transitions n'étaient jamais supprimées après leur fin.
  • Couleur transparente animable0x00000000 est maintenant une valeur cible valide pour les animations.
  • DragContext.render() safety — position et shader color restaurés via try/finally.
  • VirtualList.mouseScrolled() — scroll consommé uniquement si la liste a réellement bougé.
  • Hot Reload double activationactivate() ne spawne plus plusieurs threads watcher.
  • Hot Reload path traversal — les resourceId contenant ../ hors assets/ lèvent une SecurityException.

Core pipeline

  • TesseraTemplateRenderer — HTML → widget tree pipeline
  • TesseraCssParser — CSS parser with full selector support
  • TesseraModel — flat key-value data binding with {{ }} expressions
  • TesseraScreen base class with automatic event wiring
  • TesseraTemplate — resource-location based template loading
  • TesseraHotReload — cache invalidation and disk-watch for development
  • TesseraPalette — copper-patina design system

Layout

  • Flexbox engine — flex-grow, flex-shrink, flex-basis, flex-wrap
  • justify-content, align-items, align-self, margin-top: auto
  • gap, padding, margin, width, height, min/max-width/height
  • Grid layout — <grid cols="N"> and grid-template-columns
  • position: absolute with top, left, right, bottom offsets
  • overflow: hidden, box-sizing, z-index, order
  • calc() expressions for width and height

Visual styling

  • background, border, border-color, border-radius, opacity
  • color, font-size, font-weight, text-align, text-decoration, white-space
  • corner-dot-size, corner-dot-color
  • Pseudo-states: :hover, :active, :focus, :disabled, :nth-child
  • CSS variables — :root { --var: value; } and var(--name)
  • @media (min-width / max-width) queries

CSS Animations

  • transition — smooth hover interpolation for background, border-color, color
  • @keyframes — named animations with from, %, to stops
  • animationduration, easing, delay, iterations, alternate
  • TesseraEasing — cubic-Bézier easing (Newton-Raphson + bisection)
  • TesseraAnimationEngine — per-widget animation state via WeakHashMap

Widgets

  • TesseraPanel, TesseraLabel, TesseraButton
  • TesseraInput, TesseraTextArea
  • TesseraCheckbox, TesseraSlider, TesseraDropdown
  • TesseraBadge, TesseraIcon
  • TesseraTabPanel — tabbed container
  • TesseraVirtualList — efficient scrolling list (visible rows only)
  • TesseraItemSlot, TesseraItemGrid, TesseraInventoryPicker

HTML tags

<col>, <row>, <grid>, <div>, <section>, <article>, <main>, <nav>, <header>, <footer>, <label>, <button>, <input>, <textarea>, <checkbox>, <slider>, <select>, <option>, <h1><h6>, <p>, <span>, <strong>, <b>, <em>, <i>, <a>, <badge>, <ul>, <ol>, <li>, <hr>, <tabs>, <tab>, <virtual-list>, <table>, <thead>, <tbody>, <tfoot>, <tr>, <td>, <th>, <img>, <icon>, <item-slot>

Data binding & directives

  • {{ expr }} — inline expressions with ternary, string concatenation, t:key translations
  • v-for="item in list" — repeat element for each model entry
  • v-if="expr" — conditional rendering
  • v-show="expr" — conditional visibility (preserves layout space)
  • data-i18n="key" — Minecraft i18n translation binding
  • {{ t:key }} — inline translation syntax

Component system

  • <template name="..."> — define reusable components
  • <slot> / <slot name="..."> — named and default slot injection
  • TesseraComponentRegistry — global component store

Drag and Drop

  • draggable="true" and drag-payload HTML attributes
  • TesseraDropZoneaccepts(), onDrop(), dropBounds()
  • Drag ghost rendered by renderTesseraOverlays()

Clone this wiki locally