| Date | Message | Author |
| 2026-09-24 | feat(motion): a DE-wide animations switch every easing asks | Lucas Galante |
| 2026-09-24 | feat(vk): SceneDraw::prelit — a fill whose colours already carry their lighting | Lucas Galante |
| 2026-09-24 | fix(graph): a node against the pane's right edge keeps its name | Lucas Galante |
| 2026-09-24 | docs: the standard app — root plate, rungs, and the spacing ladder | Lucas Galante |
| 2026-09-24 | Demo on the presets; scripts/style-audit, the conformance check | Lucas Galante |
| 2026-09-24 | The spacing ladder: root, pane and control rungs, and presets that pick one | Lucas Galante |
| 2026-09-24 | The standard root plate: PlateSpec::window, PaintCtx::root_plate, root_plate_inset | Lucas Galante |
| 2026-09-24 | feat(parameters): the code row is an editor — gutter, selection, indent, undo, apply on ctrl+enter | Lucas Galante |
| 2026-09-24 | feat(vk): compute jobs run many passes in one submission, with ping-pong | Lucas Galante |
| 2026-09-24 | feat(vk): the compute-job API — ComputeDevice, Kernel, Binding | Lucas Galante |
| 2026-09-22 | Dropdown: the open menu reserves its plate's relief wall | Lucas Galante |
| 2026-09-22 | Context menu: PAD-aware row_at / row_y, the drag veto knows the menu, Clear | Lucas Galante |
| 2026-09-22 | Text occlusion: a popover's labels are clipped only by popovers above it | Lucas Galante |
| 2026-09-22 | Graph: the node body has a size of its own, off the pitch | Lucas Galante |
| 2026-09-22 | Graph: one grid pitch per axis; nodes centred on the lattice crossings | Lucas Galante |
| 2026-09-21 | ParametersBg: the scrollbar rides the pane's centre line | Lucas Galante |
| 2026-09-21 | Context menu: size the plate from the label as the renderer shapes it | Lucas Galante |
| 2026-09-21 | Context menu: an even pad on every side | Lucas Galante |
| 2026-09-21 | ColorSelector: keep the alpha checker out of the legacy plain-quad view | Lucas Galante |
| 2026-09-21 | ParametersBg: labels inline beside their controls (style.surface.param.label_layout) | Lucas Galante |
| 2026-09-21 | Context menu: a control-scale corner, style.surface.menu.corner_radius | Lucas Galante |
| 2026-09-21 | Popovers compress their backdrop: style.surface.menu.compression | Lucas Galante |
| 2026-09-21 | Plate roll: a shade line on the far edges, the glint's dark counterpart | Lucas Galante |
| 2026-09-21 | Plate crest is light-facing: the far edges of a raised plate shade dark | Lucas Galante |
| 2026-09-21 | ParametersBg: a trackpad gesture is the pane's from anywhere, overflowing or not | Lucas Galante |
| 2026-09-20 | ParametersBg: a trackpad gesture over an overflowing pane scrolls it from anywhere | Lucas Galante |
| 2026-09-20 | UiContext::note_scroll_event: the wheel-gesture bookkeeping as a call hosts can make | Lucas Galante |
| 2026-09-20 | ParametersBg: report a value change inside tick separately from animation | Lucas Galante |
| 2026-09-20 | ParametersBg: a gesture the pane acquired is not captured by a control sliding under the pointer | Lucas Galante |
| 2026-09-20 | Prim::Fill (a material's flat fill) and parameter-row floors with their own compression | Lucas Galante |
| 2026-09-20 | Frost: the near-black guard follows the lift ratio, continuous in compression | Lucas Galante |
| 2026-09-20 | Frost: compression 0 is the identity — the near-black guard only runs with compression | Lucas Galante |
| 2026-09-20 | Prim::Grout: flat colour outside a field of rounded cells; the graph grid uses it | Lucas Galante |
| 2026-09-20 | Graph: flat grid lines over the plate, in place of the relief lattice | Lucas Galante |
| 2026-09-20 | Graph: the grid relief is gated on visibility, not uniform_background | Lucas Galante |
| 2026-09-20 | Graph: the grid is relief carved into the plate, not tinted quads | Lucas Galante |
| 2026-09-20 | Graph: grid cells are the pane's plate, the gaps an overlay | Lucas Galante |
| 2026-09-20 | cce-relief: the material sliders seed from and write to the --config target | Lucas Galante |
| 2026-09-10 | test: read the live style instead of pinning it, everywhere left | Lucas Galante |
| 2026-09-10 | test(layout): let the vstack flow read the live style, never pin it | Lucas Galante |
| 2026-09-20 | Named materials in config, and cce-relief edits the finish and the frost (RFC material, step 4) | Lucas Galante |
| 2026-09-20 | docs(rfc-material): the step-3 control — default recipe pixel-identical to pre-step-3 | Lucas Galante |
| 2026-09-20 | docs: RFC material step 3 done, measured; examples/frost_pair is the visual test | Lucas Galante |
| 2026-09-20 | A well floor is cut into its host's material (RFC material, step 3c) | Lucas Galante |
| 2026-09-20 | A frosted flat fill is a zero-depth plate batch (RFC material, step 3b) | Lucas Galante |
| 2026-09-20 | The frost recipe rides the plate's push block, not the window (RFC material, step 3a) | Lucas Galante |
| 2026-09-20 | docs: RFC material step 2 done; CLAUDE.md says where a plate's material now lives | Lucas Galante |
| 2026-09-20 | No widget writes the frost sentinel by hand (RFC material, step 2d) | Lucas Galante |
| 2026-09-20 | ControlPlate has a face of Material, or none (RFC material, step 2c) | Lucas Galante |
| 2026-09-20 | The plate prims carry a Material (RFC material, step 2b) | Lucas Galante |
| 2026-09-20 | PlateSpec carries a Material, not a colour and a flag (RFC material, step 2a) | Lucas Galante |
| 2026-09-20 | Drop two empty stray log files | Lucas Galante |
| 2026-09-20 | material: the type, the Finish rename, and one encoding function (RFC step 1) | Lucas Galante |
| 2026-09-20 | docs: RFC — Material, what a plate is made of | Lucas Galante |
| 2026-09-20 | feat(plate): rim refraction — the roll bends what you see through it | Lucas Galante |
| 2026-09-20 | docs(plate): the tint that backdrop_compression converges on, and the hex trap | Lucas Galante |
| 2026-09-19 | feat(plate): backdrop_compression, a frosted plate's legibility control | Lucas Galante |
| 2026-09-19 | fix(test): per-thread style writes for the registry and colours too | Lucas Galante |
| 2026-09-19 | fix(test): style setters are per-thread under cfg(test), ending the flake | Lucas Galante |
| 2026-09-19 | test: move the CLAUDE.md size check out of src/, where it counted itself | Lucas Galante |
| 2026-09-19 | test: fail when CLAUDE.md's line-count figures drift from the source | Lucas Galante |
| 2026-09-19 | docs: the icons fallback is ~/projects/cce/cce-icons/svg, not ~/Dropbox | Lucas Galante |
| 2026-09-19 | control-plate: a flat stance, for a control made of its pane's material | Lucas Galante |
| 2026-09-19 | Widgets: bound every string to the box it was given | Lucas Galante |
| 2026-09-19 | Sections: one content inset, and nothing draws outside its box | Lucas Galante |
| 2026-09-19 | CLAUDE.md: what a reconnect does to GPU handles | Lucas Galante |
| 2026-09-19 | ImageView: say that a borrowed id dies with its renderer | Lucas Galante |
| 2026-09-19 | A bundled glyph belongs to a renderer, not to the process | Lucas Galante |
| 2026-09-19 | dropdown: a per-widget face for the trigger plate | Lucas Galante |
| 2026-09-19 | Every app holds its window open for the compositor's close dissolve | Lucas Galante |
| 2026-09-19 | scroll-region: the raise is a cross-fade, not a flip | Lucas Galante |
| 2026-09-18 | Button::new_icon: any bundled cce-icons glyph as a plateless icon button | Lucas Galante |
| 2026-09-18 | fix(menu): draw context-menu labels in the menu font | Lucas Galante |
| 2026-09-15 | docs(input): note gesture chords in the window-manager domain | Lucas Galante |
| 2026-09-14 | chore(examples): carve_union_demo takes its size from CCE_DEMO_W/H | Lucas Galante |
| 2026-09-14 | fix(ramp): smooth ramps are a monotone cubic, not per-segment smoothstep | Lucas Galante |
| 2026-09-14 | fix(relief): lattice crossings meet as hips, not a flat lozenge | Lucas Galante |
| 2026-09-14 | fix(relief): mitre the union carve's outer corners like the lattice's | Lucas Galante |
| 2026-09-14 | fix(relief): mitre the lattice wall's outer edge instead of offsetting it | Lucas Galante |
| 2026-09-14 | feat(relief): Prim::CarveUnion — several boxes carved or raised as one wall | Lucas Galante |
| 2026-09-14 | feat(relief): Prim::Lattice — a periodic well field carved as one surface | Lucas Galante |
| 2026-09-11 | perf(runner): sleep between ticks while idle instead of turning every 16 ms | Lucas Galante |
| 2026-09-11 | feat(toggle): the sliding plate is the only style, and it lives in a well | Lucas Galante |
| 2026-09-10 | fix(button_strip): record last_scale on the horizontal path too, or tick redraws every frame | Lucas Galante |
| 2026-09-10 | perf(vk): a streaming path for images that change every frame | Lucas Galante |
| 2026-09-09 | test(layout): resolve unit slots without touching the process metric | Lucas Galante |
| 2026-09-09 | feat(heightfield): export the relief as a height field, in millimetres | Lucas Galante |
| 2026-09-09 | feat(relief): a real depth axis — pinned heights, and light split from depth | Lucas Galante |
| 2026-09-09 | feat(treelist): show unit-suffixed lengths as lengths | Lucas Galante |
| 2026-09-09 | feat(units): lengths with units, and the display metric they resolve through | Lucas Galante |
| 2026-09-09 | feat(separator): in relief, a groove carved into the plate | Lucas Galante |
| 2026-09-09 | fix(adapter): a subtree painter's detached label is drawn | Lucas Galante |
| 2026-09-09 | fix(treelist): the fields are arranged in the content rect, not the block | Lucas Galante |
| 2026-09-09 | feat(group): a member's detached label is in the hull | Lucas Galante |
| 2026-09-09 | fix(group): a fitted frame stops on the plate's edge on every side; the tab never covers a member | Lucas Galante |
| 2026-09-09 | feat(layout): control_relief is read live; set_control_relief switches it | Lucas Galante |
| 2026-09-09 | feat(group): headroom — the room a titled lasso takes above its hull | Lucas Galante |
| 2026-09-09 | fix(group): count a labelled member's strip once | Lucas Galante |
| 2026-09-09 | style: flat wells share one frame and no floor | Lucas Galante |
| 2026-09-09 | style: one canvas well for every opening you look into | Lucas Galante |
| 2026-09-09 | style: one label font, InfoBox as a plate, Ramp pegs sized to their plot | Lucas Galante |
| 2026-09-09 | fix(window_runner): exit when the compositor is gone instead of rejoining its successor | Lucas Galante |
| 2026-09-09 | feat(focus): navigation by group — members walk together, chords jump between runs | Lucas Galante |
| 2026-09-08 | feat(group): a lasso around registered widgets, fitted to its plate on request | Lucas Galante |
| 2026-09-08 | fix(focus): a widget parked off-screen is not a stop | Lucas Galante |
| 2026-09-08 | feat(focus): focus_stepped tells a caching app to rebuild; CCE_FOCUS_DEBUG | Lucas Galante |
| 2026-09-08 | fix(focus): the ring survives the flat-host bridge | Lucas Galante |
| 2026-09-08 | fix(focus): list rows and menu items are not Tab stops | Lucas Galante |
| 2026-09-08 | feat(range-slider): the focused end's swell is the one that lights | Lucas Galante |
| 2026-09-08 | feat(focus): RangeSlider is a well — one stop, two ends | Lucas Galante |
| 2026-09-08 | feat(focus): ButtonStrip, Breadcrumb and Slider take their places in the walk | Lucas Galante |
| 2026-09-08 | fix(focus): reading order buckets stops into rows; a focused Toggle lights its label | Lucas Galante |
| 2026-09-08 | feat: keyboard navigation in plate terms | Lucas Galante |
| 2026-09-08 | feat(layout): radii configured per rung — style.control.corner_radius | Lucas Galante |
| 2026-09-08 | feat(paint): ControlPlate — one spec for every control face | Lucas Galante |
| 2026-09-08 | docs: the surface vocabulary — plates, wells and seams | Lucas Galante |
| 2026-09-08 | feat(color-selector): the swatch sits inside the control's recess | Lucas Galante |
| 2026-09-08 | feat(spinbox): the wheel steps the value | Lucas Galante |
| 2026-09-08 | feat: the Paginator panel and the ColorSelector swatch round too | Lucas Galante |
| 2026-09-08 | feat(widgets): the square-cornered leaves round like the rest of the toolkit | Lucas Galante |
| 2026-09-08 | feat(slider): export the band profile and painter | Lucas Galante |
| 2026-09-08 | feat(label)!: one control-label convention, no label-in-recess tabs | Lucas Galante |
| 2026-09-08 | feat(slider)!: the band is the only slider style | Lucas Galante |
| 2026-09-08 | feat(layout)!: wells carve inside their rect; strategies place blocks (label row + control) | Lucas Galante |
| 2026-09-08 | feat(layout)!: strategies place content boxes; the label hangs in the gap; the gap is a control height | Lucas Galante |
| 2026-09-08 | feat(layout)!: one spacing rule — occupied heights, one gap, one label inset, one text inset | Lucas Galante |
| 2026-09-08 | feat(widgets): the relief idiom for the controls still drawn flat | Lucas Galante |
| 2026-09-08 | feat(layout): a labeled control's preferred height counts the label its rect eats; Toggle::with_slide | Lucas Galante |
| 2026-09-08 | feat(layout): one fallback height for text controls, one for tracks; defaults for the sizeless widgets | Lucas Galante |
| 2026-09-08 | chore(color): drop the checkbox colour keys nothing reads since the square style went | Lucas Galante |
| 2026-09-08 | feat(checkbox)!: the ring-and-dot mark is the only style | Lucas Galante |
| 2026-09-08 | feat(checkbox): a round style — the ring-and-dot mark cce-list drew by hand | Lucas Galante |
| 2026-09-06 | Rename the internal backplate vocabulary to root plate (cce-ui RFC 7a-4) | Lucas Galante |
| 2026-09-06 | Remove the backplate read-aliases and deprecated backplate_* getters (7a-3) | Lucas Galante |
| 2026-09-06 | feat(params): widen the row pitch from 8 to 14px | Lucas Galante |
| 2026-09-06 | feat(relief): flush trough for the slide toggle glider and the params-pane dropdown | Lucas Galante |
| 2026-09-05 | feat(float3): three standard Slider rows instead of the bespoke flat track | Lucas Galante |
| 2026-09-05 | feat(paint): per-plate corner exponent — `plate_shaped` draws a true circle | Lucas Galante |
| 2026-09-04 | fix(shader): keep a focused plate's accent ring off its carved wells | Lucas Galante |
| 2026-09-04 | fix(runner): tick the widget roster once per frame, not twice | Lucas Galante |
| 2026-09-03 | feat(scroll): smooth scrolling — shared ScrollMotion behind every scrolling widget | Lucas Galante |
| 2026-09-03 | fix(config): keep string-list nodes as lists across the JSON round trip | Lucas Galante |
| 2026-09-03 | fix(tessellate): floor the plate/bevel corner cap at zero | Lucas Galante |
| 2026-09-03 | config: get_app_name strips the kernel's " (deleted)" marker | Lucas Galante |
| 2026-09-03 | feat: undo/redo — History<T>, runner routing, TextBox edit history | Lucas Galante |
| 2026-09-03 | shader2d: the tinted focus ring ends at its silhouette | Lucas Galante |
| 2026-09-03 | render_widget: replay the paint walk in the widget's own order | Lucas Galante |
| 2026-09-03 | dropdown: opt-in menu that replaces the trigger | Lucas Galante |
| 2026-09-03 | text_box: clamp click-to-index to the real text, not the shaped placeholder | Lucas Galante |
| 2026-09-02 | treelist: drop the hardcoded header background fill | Lucas Galante |
| 2026-09-02 | treelist: paint container border as a true ring, not fill-plus-cover | Lucas Galante |
| 2026-09-01 | backend: gate near_roll_fallback_tests on debug_assertions too | Lucas Galante |
| 2026-09-01 | spreadsheet: negate wheel deltas to the ScrollRegion sign convention | Lucas Galante |
| 2026-09-01 | text: multiline TextBox reads shaped per-line offsets; normalize Basic-shaping starts | Lucas Galante |
| 2026-09-01 | text: the runner shapes every registered widget, so carets stop drifting per-path | Lucas Galante |
| 2026-09-01 | scroll-region: self-contained sink-behind layering + notify_scrolled | Lucas Galante |
| 2026-09-01 | scroll-region: shared raise/sink scrollbar activity + edge inset | Lucas Galante |
| 2026-09-01 | feat: context menus support separator rows | Lucas Galante |
| 2026-09-01 | docs: record the scroll-virtualization sweep rationale in the RFC | Lucas Galante |
| 2026-09-01 | scroll-region: max_scroll/max_scroll_x are pub | Lucas Galante |
| 2026-09-01 | feat: shared ScrollRegion + intersection virtualization contract | Lucas Galante |
| 2026-08-31 | fix: the breadcrumb hover wash fills the segment's silhouette | Lucas Galante |
| 2026-08-30 | chore: example that fires the near-roll fallback warning | Lucas Galante |
| 2026-08-30 | feat: debug builds warn when a near-roll carve loses grouping | Lucas Galante |
| 2026-08-30 | docs: record the carve-grouping rationale in the RFC | Lucas Galante |
| 2026-08-30 | fix(frost): snapshot for every fill prim, and a blur you can see | Lucas Galante |
| 2026-08-30 | feat: frosted menus — dropdowns and menubar popovers blur what they cover | Lucas Galante |
| 2026-08-30 | feat(engine): report in-surface popover rects to the compositor | Lucas Galante |
| 2026-08-30 | fix: a pressed choice row claims the params focus like every other row | Lucas Galante |
| 2026-08-30 | feat: dropping a node on a wire splices it in | Lucas Galante |
| 2026-08-29 | fix: ASCII text in a monospaced face shapes Basic — no ligatures | Lucas Galante |
| 2026-08-29 | feat: the shared context menu paints itself as a lit plate | Lucas Galante |
| 2026-08-29 | fix: a closed dropdown takes Enter only when it is focused | Lucas Galante |
| 2026-08-28 | fix: the well's bevel is the far side of nested-control seams | Lucas Galante |
| 2026-08-28 | feat: the spinbox speaks the DE relief language | Lucas Galante |
| 2026-08-28 | fix: the textpick picker fills its well to the seam | Lucas Galante |
| 2026-08-28 | fix: the textpick picker is a flush inset control, not a raised island | Lucas Galante |
| 2026-08-28 | fix: the breadcrumb claims its plate, not the column beneath it | Lucas Galante |
| 2026-08-28 | feat: parameter rows breathe on an 8px pitch | Lucas Galante |
| 2026-08-28 | feat: the raised breadcrumb face is frosted glass | Lucas Galante |
| 2026-08-28 | feat: the breadcrumb run takes a raised stance | Lucas Galante |
| 2026-08-28 | feat: Prim::DropletScrim — the droplet silhouette, filled flat and feathered | Lucas Galante |
| 2026-08-27 | icons: default to ~/projects/cce, the workspace's new home | Lucas Galante |
| 2026-08-27 | feat: fill-less roll overlay — negative Plate depth (MODE_ROLL) | Lucas Galante |
| 2026-08-27 | style: the breadcrumb's face follows the dropdown's fill knob | Lucas Galante |
| 2026-08-27 | graph: cell_corner_radius is pure geometry — no display gating | Lucas Galante |
| 2026-08-27 | glow: superellipse corners — one corner family with cells and plates | Lucas Galante |
| 2026-08-27 | plates: a fill-less tinted plate is a pure focus ring | Lucas Galante |
| 2026-08-27 | carves: the focus glint uses the plate's monotonic roll profile | Lucas Galante |
| 2026-08-27 | carves: a tinted carve renders the wrapped glint alone — one focus language | Lucas Galante |
| 2026-08-27 | plates: focused = the specular line itself, tinted, wrapped all four sides | Lucas Galante |
| 2026-08-27 | plates: the tint wash follows the corner arcs — inset-SDF band | Lucas Galante |
| 2026-08-27 | plates: quieter tint wash, quadratic falloff — no sharp inner contour | Lucas Galante |
| 2026-08-26 | plates: the tinted roll is a wash, not a painted frame | Lucas Galante |
| 2026-08-26 | plates: an accent-tinted plate tints its WHOLE rolled edge | Lucas Galante |
| 2026-08-26 | paint: Prim::Glow — a per-vertex-alpha feathered aura | Lucas Galante |
| 2026-08-26 | graph: drop_target_cell_rect — the cell an in-flight node drag lands on | Lucas Galante |
| 2026-08-26 | feat: ButtonKind::MenuItem — a row that lets its menu own the relief | Lucas Galante |
| 2026-08-26 | breadcrumb: hit() claims only the segment run | Lucas Galante |
| 2026-08-26 | spreadsheet: horizontal scrolling — columns floor at a readable width | Lucas Galante |
| 2026-08-26 | spreadsheet: ellipsis only when it says more than a clipped glyph | Lucas Galante |
| 2026-08-26 | perf: only re-send an input region when it changes | Lucas Galante |
| 2026-08-26 | spreadsheet: ellipsize what the column clamp would cut | Lucas Galante |
| 2026-08-26 | spreadsheet: per-column text clamps; the pane is a subtree painter | Lucas Galante |
| 2026-08-26 | Fix config test flake: serialize tests that mutate global color state | Lucas Galante |
| 2026-08-26 | paint: Paint::paint_ui — the ui-aware hook paint_self runs; ParametersBg completes it | Lucas Galante |
| 2026-08-26 | feat: drag-and-drop destination support (wl_data_device) | Lucas Galante |
| 2026-08-25 | rfc: files' detach retired by product choice (cce-files@f2a89d5); its answers stand | Lucas Galante |
| 2026-08-25 | rfc: Phase 7 complete — CSD packaging and spec-emission questions answered by cce-files@805be06 | Lucas Galante |
| 2026-08-25 | rfc: 7b-2's cce-cloud overlay-silhouette question closed (cce-cloud@4829451) | Lucas Galante |
| 2026-08-25 | 7b fix: plate_spec double-spanned every window corner | Lucas Galante |
| 2026-08-25 | 7c-2: draw_corner_dot earned; RFC — cce-files adopts the affordance | Lucas Galante |
| 2026-08-25 | 7c-1: widget::plate_dock — the plate-corner affordance protocol | Lucas Galante |
| 2026-08-25 | 7b-2: window_silhouette_radius; RFC — nine clients migrated | Lucas Galante |
| 2026-08-25 | 7b-1: PlateSpec — plates carry their role; DemoApp migrates | Lucas Galante |
| 2026-08-25 | 7a-2: backplate_* wrappers deprecated — Phase 7a complete | Lucas Galante |
| 2026-08-25 | rfc: 7a-2 caller worklist made explicit | Lucas Galante |
| 2026-08-25 | 7a-1: style.surface.plate.root.* — the canonical root-plate vocabulary | Lucas Galante |
| 2026-08-25 | rfc: Phase 7 — droplet push-constant coupling noted as an invariant | Lucas Galante |
| 2026-08-25 | rfc: Phase 7 (PROPOSED) — plate unification, backplate becomes a role | Lucas Galante |
| 2026-08-25 | parameters: the textpick button is a raised island in the well's trough | Lucas Galante |
| 2026-08-25 | dropdown: popover_anchor — the menu can hang off a larger control | Lucas Galante |
| 2026-08-25 | droplet: contact shadow (DropletSpec::shadow) | Lucas Galante |
| 2026-08-25 | droplet: continuous dome shading and a bottom-weighted rim caustic | Lucas Galante |
| 2026-08-25 | parameters: the textpick picker is a button nested in the box's recess | Lucas Galante |
| 2026-08-25 | parameters: textpick rows — a text box with a completion picker | Lucas Galante |
| 2026-08-25 | fix: raise a client's fd limit so dmabuf feedback cannot exhaust it | Lucas Galante |
| 2026-08-25 | graph: the designer's meta (per-node preferences) node has no geometry toggle | Lucas Galante |
| 2026-08-25 | button: an icon face has a rect and an opacity a flat host can read | Lucas Galante |
| 2026-08-24 | spreadsheet: click a column header to sort (asc → desc → natural) | Lucas Galante |
| 2026-08-24 | droplet: shared spec parser + silhouette resolve, refr/ghost knobs | Lucas Galante |
| 2026-08-24 | droplet: core density (DropletSpec::core) | Lucas Galante |
| 2026-08-24 | droplet: superellipse silhouette curves (DropletSpec::curve) | Lucas Galante |
| 2026-08-24 | graph: the geometry toggle is a single-color circle | Lucas Galante |
| 2026-08-24 | droplet: continuous bottom arc (DropletSpec::bow) | Lucas Galante |
| 2026-08-24 | droplet: attach-radius taper and belly-off — the oval dewdrop | Lucas Galante |
| 2026-08-24 | color selector: no field face at all — frame over the host plate | Lucas Galante |
| 2026-08-24 | scene: Prim::Droplet — a hanging water-drop material (shader mode 10) | Lucas Galante |
| 2026-08-24 | relief: the flat-path bridge carries Button and Toggle carves too | Lucas Galante |
| 2026-08-24 | color selector: colorless text field | Lucas Galante |
| 2026-08-24 | text: flat-path widgets shape, so selection and caret stop drifting | Lucas Galante |
| 2026-08-24 | graph: cells and cell cursors share the node corner radius | Lucas Galante |
| 2026-08-24 | dropdown/params: pane dropdowns animate, and releases stop leaking through | Lucas Galante |
| 2026-08-24 | fix: sample user images as sRGB, not UNORM | Lucas Galante |
| 2026-08-24 | relief: the flat-path bridge carves a TextBox's well too | Lucas Galante |
| 2026-08-24 | graph: session nodes carry no geometry toggle, like utility nodes | Lucas Galante |
| 2026-08-23 | graph: double-click detection survives the host's per-event node re-sync | Lucas Galante |
| 2026-08-22 | feat: the DE's font families come from config.kdl, not fontconfig | Lucas Galante |
| 2026-08-22 | toggle: no color of its own — the control inherits its plate | Lucas Galante |
| 2026-08-22 | feat(config): runtime_dir() / cce_runtime_dir() XDG helpers | Lucas Galante |
| 2026-08-21 | feat: map grid_cell_width/height config paths onto the compositor IPC | Lucas Galante |
| 2026-08-21 | shader2d: relief band contours tightened to true parallels of the arc | Lucas Galante |
| 2026-08-21 | config/layout: shared-only reads + window_corner_radius | Lucas Galante |
| 2026-08-21 | Dropdown: menu-button mode drops the selected-row marker | Lucas Galante |
| 2026-08-21 | MenuBar: menu buttons get the dropdown-trigger trough on horizontal bars | Lucas Galante |
| 2026-08-21 | MenuBar: context-dropdown trigger gets the DE-wide closed-dropdown trough | Lucas Galante |
| 2026-08-20 | Dropdowns: transparent face by default, trough offered to flat hosts | Lucas Galante |
| 2026-08-20 | UiContext::popover_owner_at — press priority for open popovers | Lucas Galante |
| 2026-08-20 | painter: append_widget_plate_radii — caller-supplied plate corner radii | Lucas Galante |
| 2026-08-20 | the (ramp) config value type: RampPreview widget + cce-ramp --key editing | Lucas Galante |
| 2026-08-20 | graph: grid cells wear the desktop grid's superellipse corners | Lucas Galante |
| 2026-08-19 | feat: shaped_cluster_offsets — renderer-exact text metrics for hand-rolled fields | Lucas Galante |
| 2026-08-19 | fix: multiline TextBox selection/caret grid uses the shaped advance, not inked extent | Lucas Galante |
| 2026-08-19 | style: the breadcrumb shares the dropdown's corner-radius knob | Lucas Galante |
| 2026-08-19 | restyle: the breadcrumb is a flush inset plate, like the dropdown | Lucas Galante |
| 2026-08-18 | cce-relief: Cancel button replaces Reset | Lucas Galante |
| 2026-08-18 | relief_spec: the (relief) config value type + cce-relief --key editing | Lucas Galante |
| 2026-08-18 | tessellator: anti-alias rounded-rect corner fans | Lucas Galante |
| 2026-08-18 | runner: pin grid surfaces to buffer scale 1 | Lucas Galante |
| 2026-08-18 | fix: a grid app keeps its current size on a you-choose configure | Lucas Galante |
| 2026-08-17 | feat: grid-layer client support — Application::grid + grid_patch events | Lucas Galante |
| 2026-08-17 | config: drop the retired desktop cell_corner_radius reload mapping | Lucas Galante |
| 2026-08-17 | fix: predict from the knob curve only when a LUT is actually installed | Lucas Galante |
| 2026-08-16 | feat: Application::utility() — declare a content-shaped window | Lucas Galante |
| 2026-08-16 | Cargo.lock: png as a direct dependency | Lucas Galante |
| 2026-08-16 | Add icon module: XDG icon-theme lookup + themed upload | Lucas Galante |
| 2026-08-15 | rename: refer to cce-mail, not cce-email | Lucas Galante |
| 2026-08-15 | refactor: stack cce-relief's sliders; size the window to its content | Lucas Galante |
| 2026-08-15 | feat: port the plate branch; predict the edge roll (partly) | Lucas Galante |
| 2026-08-15 | feat: cce-relief gains an edge selector | Lucas Galante |
| 2026-08-15 | feat: cce-relief draws the real prim under the prediction | Lucas Galante |
| 2026-08-15 | feat: cce-relief predicts pixels — the real shading model, shared | Lucas Galante |
| 2026-08-15 | feat: cce-bevel becomes cce-relief, with a shape picker | Lucas Galante |
| 2026-08-15 | feat: Prim::Trough — one lighting pass for the flush inset seam | Lucas Galante |
| 2026-08-15 | feat: CCE_PLATE_DEBUG also reports who closed the grouping window | Lucas Galante |
| 2026-08-14 | feat: CCE_PLATE_DEBUG — say which carves group and which fall back | Lucas Galante |
| 2026-08-14 | refactor: dispatch plate modes by equality; assert the push-constant budget | Lucas Galante |
| 2026-08-14 | fix: Groove degrades on the legacy path; one Prim forwarding match | Lucas Galante |
| 2026-08-14 | docs: name the family "relief primitives", not "bevels" | Lucas Galante |
| 2026-08-14 | style: the segment run hugs the well's bevel on three sides | Lucas Galante |
| 2026-08-14 | feat: breadcrumb segments abut on a slanted seam | Lucas Galante |
| 2026-08-14 | fix: TreeList unlinks its rename editor, which was eating row clicks forever after | Lucas Galante |
| 2026-08-14 | feat: UiContext::unregister_widget, so rebuilt widget Vecs can drop their old ids | Lucas Galante |
| 2026-08-14 | fix: a click places the caret; only keyboard focus selects all | Lucas Galante |
| 2026-08-14 | fix: identify the tracked cloud popup by exe, not by comm | Lucas Galante |
| 2026-08-14 | chore: refresh Cargo.lock against the current dependency graph | Lucas Galante |
| 2026-08-13 | deps: depend on cosmic-text directly, dropping glyphon and wgpu | Lucas Galante |
| 2026-08-13 | docs: point at the relocated workspace guide | Lucas Galante |
| 2026-08-13 | build: install via ccebuild instead of hand-listing binaries | Lucas Galante |
| 2026-08-13 | test: pin the shared glyph-shader vertex layout at compile time | Lucas Galante |
| 2026-08-13 | fix: describe vertex location 4 on the image pipeline | Lucas Galante |
| 2026-08-13 | Survive compositor connection loss: reconnect instead of exiting | Lucas Galante |
| 2026-08-13 | feat: Button takes keyboard focus — Enter/Space activation + a focus ring | Lucas Galante |
| 2026-08-13 | docs: 6w's accounts/storage ctrl-nav NB is resolved | Lucas Galante |
| 2026-08-13 | docs: popover occlusion verified after the coverage-scan memo | Lucas Galante |
| 2026-08-12 | perf: memoize is_coordinate_covered — O(n^2) hover dispatch was starving the loop | Lucas Galante |
| 2026-08-12 | debug: trace main-loop dispatch duration under CCE_PRESENT_DEBUG | Lucas Galante |
| 2026-08-12 | fix: 200ms vsync-paced render warm-down after activity — hover tracks the cursor | Lucas Galante |
| 2026-08-12 | chore: CCE_PRESENT_DEBUG traces the frame-callback lifecycle | Lucas Galante |
| 2026-08-12 | fix: InteractiveListItem hover flips report handled — repaint immediately | Lucas Galante |
| 2026-08-11 | match_key_shortcut: honor the alt modifier | Lucas Galante |
| 2026-08-11 | vk: include boundary images in the blur-behind snapshot | Lucas Galante |
| 2026-08-10 | KeyEvent: carry the alt modifier | Lucas Galante |
| 2026-08-10 | docs: finish the cce-system-settings -> cce-system-interface rename | Lucas Galante |
| 2026-08-10 | fix: tree rows and chevrons are cut off by the recessed well's bevel | Lucas Galante |
| 2026-08-06 | fix: overflow rim is right/bottom-only — trigger re-click toggles again | Lucas Galante |
| 2026-08-06 | feat: runtime overflow margin — popovers extend past the window edge | Lucas Galante |
| 2026-08-06 | feat: relief scrollbar for multiline TextBox; painter shared | Lucas Galante |
| 2026-08-06 | feat: TreeList scrollbar in the relief bevel style | Lucas Galante |
| 2026-08-06 | feat: outside presses always close open popovers (engine-level) | Lucas Galante |
| 2026-08-06 | feat: demo + cce-bevel popovers on the direct PaintCtx path | Lucas Galante |
| 2026-08-06 | fix: popover coverage for the ungated TreeList press | Lucas Galante |
| 2026-08-06 | style: segment buttons ride inside the full-width well | Lucas Galante |
| 2026-08-06 | feat: breadcrumb segments are individual beveled buttons | Lucas Galante |
| 2026-08-06 | feat: the dropdown expands its ACTUAL button surface into the menu | Lucas Galante |
| 2026-08-05 | feat: dropdown trigger grows into the menu as one continuous surface | Lucas Galante |
| 2026-08-05 | feat: Dropdown popover expands/contracts like the status-interface menus | Lucas Galante |
| 2026-08-05 | fix: config cache invalidates on per-app override edits too | Lucas Galante |
| 2026-08-04 | Wire copy button and treelist chevrons to the cce-icons set | Lucas Galante |
| 2026-08-04 | feat: rasterize_svg — public SVG-to-RGBA helper, extracted from upload_icon | Lucas Galante |
| 2026-08-04 | feat: cce-bevel --config <path> retargets save and seeding at any config file | Lucas Galante |
| 2026-08-04 | feat: BevelPreview widget + the (bevel) config type's shared machinery | Lucas Galante |
| 2026-08-04 | fix: off-viewport windows deadlocked in the FIFO present throttle | Lucas Galante |
| 2026-08-04 | fix: dropped resize request wedged the pending extent, freezing all presents | Lucas Galante |
| 2026-08-04 | fix: carve-host plates are a stack, not a single slot | Lucas Galante |
| 2026-08-04 | fix: frame-callback starvation froze apps that went off-screen | Lucas Galante |
| 2026-08-03 | refactor: drop the opacity dialog — the per-app config keeps the knob | Lucas Galante |
| 2026-08-03 | feat: cce-bevel persists plate opacity to its per-app config | Lucas Galante |
| 2026-08-03 | feat: cce-bevel transparency dialog | Lucas Galante |
| 2026-08-03 | feat: band-style slider gets capsule ends | Lucas Galante |
| 2026-08-03 | fix: cce-bevel opening shrink-wraps the proportional section | Lucas Galante |
| 2026-08-03 | feat: numbered axes on the cce-bevel cutaway | Lucas Galante |
| 2026-08-03 | fix: cce-bevel cutaway keeps proportional axes | Lucas Galante |
| 2026-08-03 | feat: cce-bevel edits one profile at a time behind a selector | Lucas Galante |
| 2026-08-03 | feat: per-slider band-style override — cce-bevel adopts it | Lucas Galante |
| 2026-08-03 | feat: cce-bevel shows lit cross-sections shaped by sliders, not ramps | Lucas Galante |
| 2026-08-02 | fix: pointer Leave mid-gesture ends held drags with synthetic releases | Lucas Galante |
| 2026-08-01 | feat: cce-bevel — the relief-material control interface | Lucas Galante |
| 2026-08-01 | feat: config-persisted relief profiles | Lucas Galante |
| 2026-08-01 | chore: drop leftover bulge_h local in paint_band | Lucas Galante |
| 2026-08-01 | feat: Ramp rework — key pad, hover-scroll steering, foam-cell pegs | Lucas Galante |
| 2026-08-01 | feat: Slider2D — a two-axis pad control | Lucas Galante |
| 2026-08-01 | feat: overflow-margin mode — buffer larger than the window geometry | Lucas Galante |
| 2026-08-01 | fix: don't clear hover on pointer Leave while a button is held | Lucas Galante |
| 2026-08-01 | feat: feathered-edge AA for lines, arcs, and circle silhouettes | Lucas Galante |
| 2026-08-01 | feat: label-less sections carve tabless wells under relief styling | Lucas Galante |
| 2026-08-01 | feat: SectionContext::well_top() — the content-box top edge for exact insets | Lucas Galante |
| 2026-07-31 | feat: Escape dismisses the shared context menu — toolkit-wide default | Lucas Galante |
| 2026-07-31 | fix: spinbox rows in ParametersBg render their chrome again | Lucas Galante |
| 2026-07-31 | feat: adjustable wire width; wires are LINE_LIST edge meshes (polygon-mode LINE is driver-broken) | Lucas Galante |
| 2026-07-31 | feat: per-slider display precision — slider:min:max:decimals | Lucas Galante |
| 2026-07-31 | feat: per-draw opacity on SceneDraw | Lucas Galante |
| 2026-07-31 | feat: Application::handle_pinch — first-class trackpad pinch hook | Lucas Galante |
| 2026-07-31 | fix: wireframe pass draws both facet sets — culling is winding-unreliable in LINE mode | Lucas Galante |
| 2026-07-31 | feat: ColorSelector opens the picker at the control (place-next hint) | Lucas Galante |
| 2026-07-31 | fix: slider scroll feel — kill the quantize snap-back, calibrate trackpad rate, add scroll tracing | Lucas Galante |
| 2026-07-31 | fix: slider wheel scrolling glides like the DE's scroll surfaces; param rows own their wheel | Lucas Galante |
| 2026-07-31 | fix: trackpad scrolling on sliders converts pixels at 15/notch, not 120 | Lucas Galante |
| 2026-07-31 | feat: surface window keyboard focus to apps (handle_focus_change) | Lucas Galante |
| 2026-07-31 | fix: present only the exact extent the logical size and scale call for | Lucas Galante |
| 2026-07-30 | rename: launch cce-color-editor as the color picker (was cce-colors) | Lucas Galante |
| 2026-07-30 | fix: standalone build + green tests — complete ArcShaded, fence app_chord doc | Lucas Galante |
| 2026-07-30 | fix: don't let the resume output bounce halve windows or crash the bar | Lucas Galante |
| 2026-07-30 | refactor: drop toggle button_color/button_opacity — state colors own the slide button | Lucas Galante |
| 2026-07-30 | feat: toggle button_color alpha is its opacity; state color keys win over border fallback | Lucas Galante |
| 2026-07-30 | feat: optional style.control.toggle.button_color — recolors only the slide button | Lucas Galante |
| 2026-07-30 | fix: overlay wires pass at equal depth — the camera-facing lattice vanished | Lucas Galante |
| 2026-07-30 | fix: scene light is azimuthal wrap-shaded — a vertical light anchors nothing | Lucas Galante |
| 2026-07-30 | feat: flat-shaded world lighting in the raster 3D pass | Lucas Galante |
| 2026-07-30 | fix: band slider scroll latch + wider halo + ungated pane forwarding | Lucas Galante |
| 2026-07-30 | fix: the params pane swallows every wheel over it | Lucas Galante |
| 2026-07-30 | fix: band slider accepts scrolls spatially — no gesture-initiator gate | Lucas Galante |
| 2026-07-30 | feat: band slider sits in a shape-conforming recessed well | Lucas Galante |
| 2026-07-30 | feat: band slider wheel-capture halo conforms to the drawn shape | Lucas Galante |
| 2026-07-30 | refactor: relief material lives at style.surface.relief; add section depth key | Lucas Galante |
| 2026-07-30 | refactor: section style keys live at style.container.section | Lucas Galante |
| 2026-07-30 | fix: slide toggle label is fixed left — text shows through the glider | Lucas Galante |
| 2026-07-30 | feat: slide toggle button is glass — translucent fill, unconditional bevel | Lucas Galante |
| 2026-07-30 | feat: opt-in 'slide' toggle style — half-width button gliding with the state | Lucas Galante |
| 2026-07-30 | feat: opt-in 'band' slider style — full-range band swelling at the value | Lucas Galante |
| 2026-07-29 | feat: Prim::Boss carries a specular tint like Recess | Lucas Galante |
| 2026-07-29 | feat: Spreadsheet pane wears the parameter plate's fill and bevel | Lucas Galante |
| 2026-07-29 | feat: TextBox focus = tinted recess rim; uniform background | Lucas Galante |
| 2026-07-29 | tune: darken the focused carve's complementary shadow (0.38 -> 0.22) | Lucas Galante |
| 2026-07-29 | feat: complementary shadow tint on focused carves; app-drivable rim flag | Lucas Galante |
| 2026-07-28 | style: drop the focus wash on multiline TextBoxes | Lucas Galante |
| 2026-07-28 | feat: focus lights the TreeList recess rim instead of washing the tree | Lucas Galante |
| 2026-07-28 | feat: relief-style sections fill their allocated rect — layout gap IS the visual gap | Lucas Galante |
| 2026-07-28 | feat: section_relief hatch — hosts can render SectionContext frames as sunken wells | Lucas Galante |
| 2026-07-28 | chore: drop the CONFIGURE_NEW_SIZE debug eprintln from the configure handler | Lucas Galante |
| 2026-07-27 | feat: MenuBar dropdowns paint in the Dropdown widget's popover idiom | Lucas Galante |
| 2026-07-27 | feat: per-widget TextBox line-wrap override (with_line_wrap) | Lucas Galante |
| 2026-07-27 | fix: multiline TextBox focus click places caret instead of select-all | Lucas Galante |
| 2026-07-24 | feat: taller ramp rows in the params pane | Lucas Galante |
| 2026-07-24 | feat: GraphController::node_at — topmost node under a point | Lucas Galante |
| 2026-07-24 | feat: param_plate_fill helper + share blur snapshot across a run | Lucas Galante |
| 2026-07-24 | feat: live color picking — the picker streams while it stays open | Lucas Galante |
| 2026-07-24 | feat: params plate tint is config- and runtime-settable | Lucas Galante |
| 2026-07-24 | feat: custom edge profile — a second ramp LUT for the plate roll | Lucas Galante |
| 2026-07-24 | feat: truncate the plate roll's descent at 0.8 of the quadrant | Lucas Galante |
| 2026-07-24 | feat: ease the blur kernel stride back to 2.5px | Lucas Galante |
| 2026-07-24 | feat: stronger blur-behind — full frost, wider kernel | Lucas Galante |
| 2026-07-24 | feat: blur-behind plates sample the real frame-so-far | Lucas Galante |
| 2026-07-24 | feat: wider params scrollbar, inset further from the pane edge | Lucas Galante |
| 2026-07-24 | fix: section carve's top-right corner renders round | Lucas Galante |
| 2026-07-24 | feat: rounder section corners on a taller title tab | Lucas Galante |
| 2026-07-23 | feat: axis numbers on the ramp graph's gridlines | Lucas Galante |
| 2026-07-23 | fix: tab's right wall ends at the fillet tangent — it ghosted through the arc | Lucas Galante |
| 2026-07-23 | feat: concave fillets — composed carves get rounded inside corners | Lucas Galante |
| 2026-07-23 | fix: composed carve pieces crossfade at interior seams — walls notched | Lucas Galante |
| 2026-07-23 | style: wider graph-to-strip gap in the ramp; section corner radius doubled | Lucas Galante |
| 2026-07-23 | feat: labeled sliders carve their label tab too — the section idiom | Lucas Galante |
| 2026-07-23 | refactor: labeled dropdown's tab is a plain carve-out — the section idiom | Lucas Galante |
| 2026-07-23 | feat: ramp graph reads as an opening cut through the plate | Lucas Galante |
| 2026-07-23 | refactor: labeled dropdown inset rises only over the label — a text-width tab | Lucas Galante |
| 2026-07-23 | fix: labeled inset's top slope stays inside the inset — it washed upward | Lucas Galante |
| 2026-07-23 | feat: labeled dropdowns expand their inset upward — label rides the slope | Lucas Galante |
| 2026-07-23 | feat: icon-face buttons + upload_icon; ramp delete becomes the x icon tile | Lucas Galante |
| 2026-07-23 | feat: ramp curve draws as a vector polyline; control strip re-laid | Lucas Galante |
| 2026-07-23 | feat: cce-ramp — a standalone popup hosting the Ramp widget | Lucas Galante |
| 2026-07-23 | fix: bevel-profile LUT tapers to zero at the band's ends — faces faceted | Lucas Galante |
| 2026-07-23 | feat: ramp-defined bevel profiles — carve walls reshape from a user curve | Lucas Galante |
| 2026-07-23 | feat: params sections pack controls on a narrow channel; tab fuses to body | Lucas Galante |
| 2026-07-23 | feat: targeted CJK/emoji fallback fonts + resolvable generic families | Lucas Galante |
| 2026-07-23 | fix: ListRow skips the border idiom — rows were painted the button border color | Lucas Galante |
| 2026-07-23 | chore: export get_text_buffer_laid_out through engine | Lucas Galante |
| 2026-07-23 | fix: exempt ListRow buttons from the raised inset-plate relief | Lucas Galante |
| 2026-07-22 | feat: per-draw wire tint + depth-biased wireframe pipeline | Lucas Galante |
| 2026-07-22 | style: steeper rocker tilt | Lucas Galante |
| 2026-07-22 | feat: graph ports float outside their node and hover-highlight reliably | Lucas Galante |
| 2026-07-22 | fix: rocker faces are lit by the DE light, not a hardcoded wash | Lucas Galante |
| 2026-07-22 | style: rocker faces reflect the DE light | Lucas Galante |
| 2026-07-22 | fix: edge-suppressed carves never group into a plate's CSG features | Lucas Galante |
| 2026-07-22 | style: rocker toggle halves are flat steps, not tilted planes | Lucas Galante |
| 2026-07-22 | fix: section labels follow the title tab; tighter control inset | Lucas Galante |
| 2026-07-22 | style: params pane gains real horizontal breathing room | Lucas Galante |
| 2026-07-22 | style: rocker toggle faces carry beveled edges | Lucas Galante |
| 2026-07-22 | fix: collapsed sections keep their label and match the expanded tab inset | Lucas Galante |
| 2026-07-22 | fix: ColorSelector paints a control-height well, not its whole rect | Lucas Galante |
| 2026-07-22 | style: section title centers within the tab carve itself | Lucas Galante |
| 2026-07-22 | style: section tab carve is one title-box height | Lucas Galante |
| 2026-07-22 | style: section recess is a text-width tab flowing into the body | Lucas Galante |
| 2026-07-22 | style: section carves merge title and body into one recess | Lucas Galante |
| 2026-07-22 | feat: CCE_FORCE_SCALE — forced-scale mode for scale-1 foreign compositors | Lucas Galante |
| 2026-07-21 | fix: fall back to system fonts when the bundled fonts dir yields nothing | Lucas Galante |
| 2026-07-21 | style: rocker toggles pivot as flat angled faces, not stepped plateaus | Lucas Galante |
| 2026-07-21 | feat: rocker toggles — state half raised, other recessed, gradient gone | Lucas Galante |
| 2026-07-21 | feat: beveled plate borders with a specular tint (focused-pane highlight) | Lucas Galante |
| 2026-07-21 | style: widen the params-pane section-to-section gap (2x ROW_GAP) | Lucas Galante |
| 2026-07-21 | feat: params-pane sections carve as inset wells under control_relief | Lucas Galante |
| 2026-07-21 | feat: wireframe scene pipeline (SceneDraw::wireframe) | Lucas Galante |
| 2026-07-21 | fix: params-pane reliefs and thumbs exclude the detached top label | Lucas Galante |
| 2026-07-21 | fix: serve the params sliders' fill, readout, and thumb to legacy hosts | Lucas Galante |
| 2026-07-21 | feat: node-domain opacity for the graph (style.surface.graph.node.opacity) | Lucas Galante |
| 2026-07-21 | fix: span-correct concentric radii for corner_frame nesting | Lucas Galante |
| 2026-07-21 | feat: corner_frame concentric adjustment applies to the inset relief | Lucas Galante |
| 2026-07-21 | style: recess the Breadcrumb, no background fill | Lucas Galante |
| 2026-07-21 | style: tighten the inset_plate groove to a V | Lucas Galante |
| 2026-07-21 | feat: flush inset relief for buttons and dropdowns | Lucas Galante |
| 2026-07-21 | feat: backplate_padding + backplate_gap config keys | Lucas Galante |
| 2026-07-21 | style: recess the TreeList like a text box well | Lucas Galante |
| 2026-07-21 | feat: ImageView widget over Prim::Image, demoed in the gallery | Lucas Galante |
| 2026-07-21 | feat: fit_rect image-fitting helper (Contain with max_upscale / Stretch) | Lucas Galante |
| 2026-07-21 | refactor: remove PreviewState (moved into cce-files) | Lucas Galante |
| 2026-07-21 | fix: char-boundary-safe truncation in the preview pane | Lucas Galante |
| 2026-07-20 | chore: drop unneeded mut on the corner-stroke closure | Lucas Galante |
| 2026-07-20 | feat: ParametersBg reliefs view — control_relief for legacy-view hosts | Lucas Galante |
| 2026-07-20 | fix: window-corner clip gets the curvature-matched span, like plates | Lucas Galante |
| 2026-07-20 | fix: window-corner cut follows the squircle family too, with AA feather | Lucas Galante |
| 2026-07-20 | fix: rounded-rect clip follows the squircle corner family, with AA feather | Lucas Galante |
| 2026-07-20 | feat: control_relief — DE-wide default for the demo's relief styling | Lucas Galante |
| 2026-07-20 | feat: sphere-lit slider thumb — Prim::Sphere, shader mode 5 | Lucas Galante |
| 2026-07-20 | fix: one shared height for the demo's control row | Lucas Galante |
| 2026-07-20 | feat: sunken slider track — carve a well instead of raising a ridge | Lucas Galante |
| 2026-07-20 | feat: soften the plate-to-bar transition wall | Lucas Galante |
| 2026-07-20 | fix: pair set_buffer_scale with a matching-size present; exit on fatal protocol errors | Lucas Galante |
| 2026-07-20 | feat: per-pixel SDF-lit plate system — CSG carves, squircle corners, control reliefs | Lucas Galante |
| 2026-07-19 | feat: light the plate face — the flat-fill-to-object fix | Lucas Galante |
| 2026-07-19 | feat: narrow the default bevel_width from 14 to 9.3 logical px | Lucas Galante |
| 2026-07-19 | fix: paint bevel shading as light/shadow overlays with a curvature term | Lucas Galante |
| 2026-07-18 | feat: shade bevels as surfaces — gradient roll-off, rims vs steps, Plate | Lucas Galante |
| 2026-07-18 | feat: add a Recess paint primitive and a recessed MenuBar | Lucas Galante |
| 2026-07-18 | feat: csd_resize_borders hook, off by default | Lucas Galante |
| 2026-07-18 | feat: config keys for the graph grid's cell gaps | Lucas Galante |
| 2026-07-18 | feat: draw each params section as one continuous outline | Lucas Galante |
| 2026-07-18 | feat: left-align button and toggle labels in the params pane | Lucas Galante |
| 2026-07-18 | fix: make the toggle gradient fade perceptually even | Lucas Galante |
| 2026-07-18 | fix: even out the params pane's section gaps | Lucas Galante |
| 2026-07-18 | feat: clicking a params section title collapses the section | Lucas Galante |
| 2026-07-18 | fix: size menu-button dropdowns to their display text, not the widest option | Lucas Galante |
| 2026-07-18 | fix: lay text out against the extent the frame will actually render at | Lucas Galante |
| 2026-07-17 | fix: breadcrumb segments abut as one continuous path string | Lucas Galante |
| 2026-07-17 | fix: measure section titles in the parsed label font, not the spec string | Lucas Galante |
| 2026-07-17 | fix: section title box measures the real label run so long titles fit | Lucas Galante |
| 2026-07-17 | feat: param sections box their title and connect it to the content box | Lucas Galante |
| 2026-07-17 | fix: StatusBar implements Paint::text_font — the walk re-fonts prim labels | Lucas Galante |
| 2026-07-17 | fix: StatusBar paint prim carries the configured statusbar font family | Lucas Galante |
| 2026-07-17 | feat: statusbar styling moves to style.surface.statusbar | Lucas Galante |
| 2026-07-17 | fix: TreeList add-key button width derives from label + button padding | Lucas Galante |
| 2026-07-17 | fix: align_text_y drops its hardcoded -2px nudge — true vertical centering | Lucas Galante |
| 2026-07-17 | feat: toggle state half fades in a gradient instead of a border | Lucas Galante |
| 2026-07-17 | feat: parameter panel bool rows are Toggles instead of Checkboxes | Lucas Galante |
| 2026-07-16 | feat: rounded-rect clipping so plate children cut off at rounded corners | Lucas Galante |
| 2026-07-16 | refactor: CSD title-bar move is opt-in | Lucas Galante |
| 2026-07-16 | feat: split the implicit CSD title-bar move into an opt-out hook | Lucas Galante |
| 2026-07-16 | feat: param scrollbar sits an eighth of the pane width in from the right | Lucas Galante |
| 2026-07-16 | fix: sunk param scrollbar ignores hover; only scrolling raises it | Lucas Galante |
| 2026-07-16 | feat: param scrollbar sinks behind the pane plate when idle | Lucas Galante |
| 2026-07-16 | feat: tools-only MCP server module so apps expose actions to AI agents | Lucas Galante |
| 2026-07-16 | feat(scene): circular clips, text alpha, adaptive fans — designer migration prereqs | Lucas Galante |
| 2026-07-16 | feat: rounded_quads getter so legacy plain-quad hosts get control backgrounds | Lucas Galante |
| 2026-07-16 | fix: map ISO_Left_Tab to NamedKey::Tab so Shift+Tab chords reach apps | Lucas Galante |
| 2026-07-16 | feat(input): app_chord helper for per-app binding resolution | Lucas Galante |
| 2026-07-16 | feat(input): pointer input settings in input.kdl with per-app scroll overrides | Lucas Galante |
| 2026-07-16 | feat: input.kdl — domain-scoped keybindings | Lucas Galante |
| 2026-07-16 | feat(engine): defaulted Application hooks for renderer-owning apps | Lucas Galante |
| 2026-07-15 | feat(treelist): clip row text at its column edge | Lucas Galante |
| 2026-07-15 | fix(context): self-heal a stale drag grab on the next fresh press | Lucas Galante |
| 2026-07-15 | fix(spinbox): -/+ clicks step visibly while in edit mode | Lucas Galante |
| 2026-07-14 | perf: share the Vulkan instance process-wide and cache WGSL compiles | Lucas Galante |
| 2026-07-14 | feat(vk): à-trous denoiser for the path tracer | Lucas Galante |
| 2026-07-14 | feat(vk): tier-2 hardware ray queries + CCE_VK_DEVICE selection (phase 4) | Lucas Galante |
| 2026-07-14 | feat(vk): RtOffscreen — headless path-traced rendering (phase 3 seam) | Lucas Galante |
| 2026-07-14 | feat(vk): tier-1 compute path tracer (RT-renderer phase 2) | Lucas Galante |
| 2026-07-14 | fix(vk): retain staged text vertices across frames | Lucas Galante |
| 2026-07-14 | feat: VkCore split + user images in the 2D pass (RT-renderer phase 1) | Lucas Galante |
| 2026-07-14 | refactor: the wgpu API surface retires — cce_ui is Vulkan-only | Lucas Galante |
| 2026-07-14 | feat: raw-Vulkan (ash) backend — VkRenderer moves in, the engine runner renders on it | Lucas Galante |
| 2026-07-13 | feat(process): CloudPopup + CloudPopupTracker — the shared cce-cloud popup pattern | Lucas Galante |
| 2026-07-13 | docs(rfc): ctrl-nav re-verified on the live session post-restart (0-diff round-trips) | Lucas Galante |
| 2026-07-13 | docs(rfc): ctrl-nav spot-check passed — modifier injection (cce 114ef89) + the utf8 control-transform bug it caught (ec511f4) | Lucas Galante |
| 2026-07-13 | fix(backend): ctrl+letter shortcuts get the keysym, not the control-transformed utf8 | Lucas Galante |
| 2026-07-13 | docs(rfc): inert panel-move scaffolding recorded as deleted (cce-designer 00e148a) | Lucas Galante |
| 2026-07-13 | docs(rfc): designer HTTP menu holes fixed — menu_click validated, menu_action added | Lucas Galante |
| 2026-07-13 | docs(rfc): SpreadsheetResize passed — the collapsed-pane report was a misdiagnosis | Lucas Galante |
| 2026-07-13 | docs(rfc): TI ControlPanel scrollbar thumb drag spot-check passed | Lucas Galante |
| 2026-07-13 | docs(rfc): spot-check pending notes updated with the 2026-07-13 pass results | Lucas Galante |
| 2026-07-13 | fix(backend): route pointer Enter's position to handle_pointer_move | Lucas Galante |
| 2026-07-13 | fix(context): multi-root press dispatch no longer wipes the armed drag target | Lucas Galante |
| 2026-07-13 | refactor(painter)!: the paint walk takes shared borrows — slice 5, the retype program is complete | Lucas Galante |
| 2026-07-13 | refactor(widget)!: draggable/is_dragging leave WidgetHost — 49->47 (the CP endgame) | Lucas Galante |
| 2026-07-13 | docs(rfc): the designer event redesign recorded — AppDrag split, deferral closed | Lucas Galante |
| 2026-07-13 | refactor(widget)!: as_ptr/as_ptr_mut leave WidgetHost — 50->48 | Lucas Galante |
| 2026-07-13 | refactor(widget)!: children/parent leave WidgetHost — no trait method returns a raw pointer (52->50) | Lucas Galante |
| 2026-07-13 | refactor(context)!: propagate_event roots are WidgetIds — the plumbing retype | Lucas Galante |
| 2026-07-13 | refactor(widget): dead Control subtrait deleted (6bd value-shrink rider) | Lucas Galante |
| 2026-07-13 | refactor(widget)!: the value/polling block leaves WidgetHost — 59->52 (6bd) | Lucas Galante |
| 2026-07-12 | refactor(widget): dead widgets FontPreview / LayoutPreview / Sidebar deleted | Lucas Galante |
| 2026-07-12 | fix(widget): ramp preset selection lands — eager child registration made coverage occlude the composite | Lucas Galante |
| 2026-07-12 | fix(widget): ramps complete their internal forwarding and unlink (6bd self-routing, the TreeList rule) | Lucas Galante |
| 2026-07-12 | fix(widget): TreeList is self-routing — its embedded children unlink from the ctx tree (the recorded 6as routing latents) | Lucas Galante |
| 2026-07-12 | docs(rfc): record the direct-dispatch collapse — WidgetHost 67->59 | Lucas Galante |
| 2026-07-12 | refactor(widget)!: the direct-dispatch block collapses into handle_event (6bd) | Lucas Galante |
| 2026-07-12 | docs(rfc): routed-events tail complete; direct-dispatch collapse designed | Lucas Galante |
| 2026-07-12 | fix(widget): routed drags reach the Input drag hooks — the silent-drop gap | Lucas Galante |
| 2026-07-12 | docs(rfc): the flip is DONE — Element deleted, WidgetHost is the trait | Lucas Galante |
| 2026-07-12 | refactor(widget)!: Element is DELETED — the trait is WidgetHost (6bd flip) | Lucas Galante |
| 2026-07-12 | refactor(widget)!: base() is guaranteed — the flip part 1 (6bd) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bd batch 4 — tree-link methods landed pre-flip, Element 69->67 | Lucas Galante |
| 2026-07-12 | refactor(widget)!: set_parent/add_child off Element — linking is a tree op (6bd) | Lucas Galante |
| 2026-07-12 | docs(rfc): parent-pointer snapshot change landed early — all five were dead | Lucas Galante |
| 2026-07-12 | refactor(widget)!: stored parent pointers retired — the 6bd pre-flip snapshot change | Lucas Galante |
| 2026-07-12 | docs(rfc): record the second 6bd shrink batch — Element 73->69 | Lucas Galante |
| 2026-07-12 | refactor(widget)!: second Element shrink batch — 4 methods off (6bd) | Lucas Galante |
| 2026-07-12 | docs(rfc): record the first 6bd shrink batch — Element 79->73, bridge gone | Lucas Galante |
| 2026-07-12 | refactor(widget)!: first Element shrink batch — 6 methods off, bridge deleted (6bd) | Lucas Galante |
| 2026-07-12 | docs(rfc): 6bd phases 2+3 dissolve into the flip; measured WidgetHost blueprint recorded | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bd phase 1 — ContextAction enum landed | Lucas Galante |
| 2026-07-12 | refactor(widget)!: context-menu actions become one enum method (6bd phase 1) | Lucas Galante |
| 2026-07-12 | docs(rfc): the Element endgame design (6bd) — WidgetHost trait replacement, four phases | Lucas Galante |
| 2026-07-12 | refactor(widget): fold zero-override container hooks (6bc census round) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bc slice 3 — dead container child storage deleted | Lucas Galante |
| 2026-07-12 | refactor(widget): delete dead container child-ptr storage (Phase 6bc slice 3) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bc slices 1+2 — focus, popovers, context-menu id-keyed | Lucas Galante |
| 2026-07-12 | refactor(widget)!: popovers + context-menu target keyed by WidgetId (Phase 6bc slice 2) | Lucas Galante |
| 2026-07-12 | refactor(widget)!: focus stores keyed by WidgetId (Phase 6bc slice 1) | Lucas Galante |
| 2026-07-12 | docs(rfc): the 6bc borrowed-pointer retype design — WidgetId is the handle | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bb part 3 — no owned type-erased widget storage remains | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bb part 2 — roster phase complete, no erased roster storage remains | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6bb — designer roster concretely typed | Lucas Galante |
| 2026-07-12 | refactor(widget)!: serialize_widgets takes dyn refs, not boxes (Phase 6bb) | Lucas Galante |
| 2026-07-12 | docs(rfc): record the 6ba dyn-surface census — the trait IS the machinery surface | Lucas Galante |
| 2026-07-12 | docs(rfc): Phase 6az COMPLETE — Element has one production implementor | Lucas Galante |
| 2026-07-12 | refactor(widget)!: ButtonStrip onto the narrow traits — Element has ONE implementor (Phase 6az complete) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6az part 6 — cce-test-interface raw-impl-free | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6az part 5 — cce-designer raw-impl-free | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6az parts 3+4 — cce-cloud raw-impl-free | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6az part 2 — settings ScrollBar on the narrow traits | Lucas Galante |
| 2026-07-12 | docs(rfc): record Phase 6az start — app-local Element impls onto narrow traits | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6ay part 2 — Canvas + Viewport3D app-side; ButtonStrip is the last raw impl | Lucas Galante |
| 2026-07-12 | refactor(widget)!: Canvas + Viewport3D move into cce-designer (Phase 6ay part 2) | Lucas Galante |
| 2026-07-12 | docs(rfc): record Phase 6ay — JsonLayoutWidget moved app-side | Lucas Galante |
| 2026-07-12 | refactor(widget)!: JsonLayoutWidget moves into cce-cloud; Justification stays (Phase 6ay) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6ax part 2 — Container deleted | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE Container — both consumers dissolved (Phase 6ax part 2) | Lucas Galante |
| 2026-07-12 | docs(rfc): record Phase 6ax — dead raw-widget sweep | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE Header, VBox, HBox, Svg — zero constructors (Phase 6ax) | Lucas Galante |
| 2026-07-12 | docs(rfc): record the 6aw capability-system deletion | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE the as_*_controller capability system (Phase 6aw) | Lucas Galante |
| 2026-07-12 | docs(rfc): controller-capability decision resolved — option 2, Switcher deleted (6aw) | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE Switcher — zero constructors (Phase 6aw) | Lucas Galante |
| 2026-07-12 | docs(rfc): record Phase 6av — ScrollBar deleted, ScrollBox off Element | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE ScrollBar (moved into settings); ScrollBox demoted off Element (Phase 6av) | Lucas Galante |
| 2026-07-12 | docs(rfc): record the 6au stranded-method fold | Lucas Galante |
| 2026-07-12 | refactor(widget): fold check_out_of_bounds + transform_event_for_child (6au follow-up) | Lucas Galante |
| 2026-07-12 | docs(rfc): record Phase 6au — Layer + Page deleted, Paginator pages folded | Lucas Galante |
| 2026-07-12 | refactor(widget)!: DELETE Layer + Page; Paginator's empty page stack folds away (Phase 6au) | Lucas Galante |
| 2026-07-12 | docs(rfc): record 6as gallery/type-deletion and the 6at constant-fold sweep | Lucas Galante |
| 2026-07-12 | refactor(widget): constant-fold and delete the dead backplate/plate flags (Phase 6at) | Lucas Galante |
| 2026-07-11 | refactor(widget)!: DELETE Backplate, Plate, List, ControlPanel, SectionContainer(+SectionHeader) (Phase 6as) | Lucas Galante |
| 2026-07-11 | docs(rfc): leaf sweep complete — every widget on the narrow traits | Lucas Galante |
| 2026-07-11 | refactor(ramp)!: Ramp + ColorRamp onto the narrow traits — every widget is across (Phase 6as) | Lucas Galante |
| 2026-07-11 | refactor(color-selector): ColorSelector onto the narrow traits (Phase 6as leaf sweep) | Lucas Galante |
| 2026-07-11 | refactor(font-selector): FontSelector onto the narrow traits (Phase 6as leaf sweep) | Lucas Galante |
| 2026-07-11 | refactor(keybind): KeybindRecorder onto the narrow traits (Phase 6as leaf sweep) | Lucas Galante |
| 2026-07-11 | refactor(trackpad): Trackpad onto the narrow traits (Phase 6as leaf sweep) | Lucas Galante |
| 2026-07-11 | docs(rfc): controller-pair retirement scope corrected — live capability dispatch, needs design | Lucas Galante |
| 2026-07-11 | docs(rfc): record TreeList across — Phase 6as; known-latent routing items noted | Lucas Galante |
| 2026-07-11 | refactor(treelist)!: TreeList onto the narrow traits — the last widget is across (Phase 6as) | Lucas Galante |
| 2026-07-11 | docs(rfc): record Phase 6as teardown progress + staged TreeList conversion plan | Lucas Galante |
| 2026-07-11 | feat(model): Input hooks for the tree context-menu actions (TreeList conversion prep) | Lucas Galante |
| 2026-07-11 | refactor(widget): delete five call-less Element methods (Phase 6as prep) | Lucas Galante |
| 2026-07-11 | docs(rfc): record Phase 6ar — per-widget text getters deleted; text has one path | Lucas Galante |
| 2026-07-11 | refactor(widget)!: DELETE the per-widget text getters from Element (Phase 6ar) | Lucas Galante |
| 2026-07-11 | docs(rfc): record Phase 6aq — walk getter-use consolidated; 6ap consumer-audit corrected | Lucas Galante |
| 2026-07-11 | refactor(scene): consolidate the walk's text-getter use to one fonted default (Phase 6aq) | Lucas Galante |
| 2026-07-11 | docs(rfc): record Phase 6ap — designer off the getters; all app-side getter consumers gone | Lucas Galante |
| 2026-07-11 | docs(rfc): record Phase 6ao — hand-aggregate apps off the getters; display-manager UAF fixed | Lucas Galante |
| 2026-07-11 | feat(painter): append_widget_text — subtree text prims for hand-aggregate hosts | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6an — render_widget text off the getters via the paint walk | Lucas Galante |
| 2026-07-10 | refactor(layout): render_widget emits text via the paint walk, not the legacy getters | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6am — dead widgets deleted; text-getter deletion gated on designer + render_widget + 4 apps | Lucas Galante |
| 2026-07-10 | refactor(widget): delete dead SplitBox / MultiControl / KeybindsControl — no app constructs them | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6al — legacy view*/text_items/text_areas deleted; single paint path is the only frame | Lucas Galante |
| 2026-07-10 | refactor(engine): delete the legacy view*/text_items/text_areas path — display_list is the only frame | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ak — status-interface across; ALL SIX legacy-path apps done; trait deletion unblocked | Lucas Galante |
| 2026-07-10 | feat(label): StyledLabel::into_prim + LabelPrim — emit a measured label as a display-list Text prim | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6aj — layout-interface across; boxed-text feature consumed | Lucas Galante |
| 2026-07-10 | feat(scene): boxed text prims — word-wrap + h/v alignment for placed text boxes | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ai — email across (4 of 6); flip fixed invisible text | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ah — display-manager across; Dropbox-revert repo hazard | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ag — authenticator across; the flip fixed invisible text | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6af — test-interface across; migration recipe for the remaining five | Lucas Galante |
| 2026-07-10 | feat!: delete the global widget::popovers registry (Phase 6ae, legacy deletion part 1) | Lucas Galante |
| 2026-07-10 | feat: DemoApp — the demo rewritten as the reference Application (Phase 6ad) | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ac — data-editor routed; routed-events/scene-layout item complete | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6ab — text-editor on routed events + scene-solver layout | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6aa — data-editor SplitBox dissolved; TreeList deferred to Element deletion | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6z — files' List dissolved; app embedded-base-free | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6y — files' SplitBoxes + pane containers dissolved | Lucas Galante |
| 2026-07-10 | feat(engine)!: delete the render-only xdg popup path (Phase 6x) | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6w — settings SectionContainer dissolved; app embedded-base-free | Lucas Galante |
| 2026-07-10 | docs(rfc): record Phase 6v — settings List/ScrollBox dissolved; inner wheel + scrollbar fixed | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6u — settings Switcher+Page dissolved; System page revived | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6t — settings popovers in-frame; draws_own_popovers; popup-path endgame | Lucas Galante |
| 2026-07-09 | feat(engine): Application::draws_own_popovers — opt out of the render-only xdg popup | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6s — settings root+StatusBar dissolved; corner_frame; popup-anchor note | Lucas Galante |
| 2026-07-09 | feat(dropdown): app-owned corner_frame — concentric cut without a Backplate ancestor | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6r — colors + files roots dissolved; tuple-order contract | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6q — cce-fonts fully embedded-base-free | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6p — fonts root+Plates dissolved; app-owned dispatch | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6o — cce-graph embedded-base-free | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6n — graph root dissolved; input holes; re-park rule | Lucas Galante |
| 2026-07-09 | fix(input): popover areas veto window drags; render-only popups take no input | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6m — root-Backplate dissolution recipe (data-editor first) | Lucas Galante |
| 2026-07-09 | feat(context): drag_allowed_at — window dragging for dissolved root Backplates | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6l — TextAttrs + cce-fonts flip; all ten adopters across | Lucas Galante |
| 2026-07-09 | feat(scene): TextAttrs — italic/weight on display-list text prims | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6k — load_system_fonts hook; fonts-flip blocker is style/weight prims | Lucas Galante |
| 2026-07-09 | feat(engine): Application::load_system_fonts — system fonts in the render FontSystem | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6j — cce-graph flip; image-quad latent loss fixed | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6i — 6d trap fixed in the walk; cce-data-editor flip | Lucas Galante |
| 2026-07-09 | feat(scene): walk text for legacy containers and subtree painters (6d trap fix) | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6h — cce-text-editor flip + Paint::text_font | Lucas Galante |
| 2026-07-09 | feat(scene): Paint::text_font — per-widget content font on the paint walk | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6g — dl-text popover clamp + cce-system-settings flip | Lucas Galante |
| 2026-07-09 | feat(engine): popover-occlusion clamp for display-list text | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6f — cce-files flips display_list_text; app-side occlusion pattern | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 6e — cce-colors flips display_list_text; app-side FontSystem hazard | Lucas Galante |
| 2026-07-09 | feat(scene): paint walk carries per-widget fonts and clip rects (Phase 6d) | Lucas Galante |
| 2026-07-09 | feat(engine): display_list receives frame size and scale (Phase 6) | Lucas Galante |
| 2026-07-09 | docs(rfc): Phase 6 plan — definition of done, 6a/6b recorded, per-app order | Lucas Galante |
| 2026-07-09 | feat(engine): display-list text — Prim::Text carries font+bounds, backend renders it (Phase 6a) | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 5t — deferred leaves migrated; Phase 5 complete | Lucas Galante |
| 2026-07-09 | feat(widget): migrate the deferred leaves — Float3, LayoutPreview, PreviewState, StatusBar (Phase 5t) | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 5s — ParametersBg migrated | Lucas Galante |
| 2026-07-09 | feat(widget): migrate ParametersBg (Phase 5s) | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 5r — Paginator migrated | Lucas Galante |
| 2026-07-09 | feat(widget): migrate Paginator (Phase 5r) | Lucas Galante |
| 2026-07-09 | docs(rfc): record Phase 5q — TextBox migrated | Lucas Galante |
| 2026-07-09 | feat(widget): migrate TextBox (Phase 5q) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5p — Dropdown migrated | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Dropdown (Phase 5p) | Lucas Galante |
| 2026-07-08 | docs(rfc): designer A/B for Phase 5o verified (HTTP-API-driven, pixel-equivalent) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5o — MenuBar migrated, Menu deleted | Lucas Galante |
| 2026-07-08 | feat(widget): migrate MenuBar; delete dead Menu (Phase 5o) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5n — container concern + Switcher/ContentBg | Lucas Galante |
| 2026-07-08 | feat(widget): the container concern + first containers: Switcher, ContentBg (Phase 5n) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5m — Graph + dual-geometry escape hatch | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Graph + the legacy dual-geometry escape hatch (Phase 5m) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5l — Spreadsheet + tick/scroll surface | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Spreadsheet + the tick/scroll adapter surface (Phase 5l) | Lucas Galante |
| 2026-07-08 | docs(rfc): record Phase 5k — controller capabilities + Breadcrumb/Node | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Node — Param + Geom controller capabilities (Phase 5k) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Breadcrumb — first controller widget (Phase 5k) | Lucas Galante |
| 2026-07-08 | feat(widget): controller-capability forwarding on the adapter (Phase 5k) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate InteractiveListItem (Phase 5j) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate InfoBox, FontPreview, Sidebar, Splitter, Panel, Spinbox (Phase 5i) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Slider + RangeSlider; EventCtx + drag hooks + direct-dispatch fixes (Phase 5h) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Label (Phase 5g) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Button, the widest-radius widget (Phase 5f) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Checkbox + Toggle, the first interactive widgets (Phase 5e) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate Separator, StatusDot, UsageBar leaves (Phase 5d) | Lucas Galante |
| 2026-07-08 | feat(widget): migrate ProgressBar to the narrow traits (Phase 5c) | Lucas Galante |
| 2026-07-08 | feat(widget): Input concern trait + adapter event forwarding (Phase 5b) | Lucas Galante |
| 2026-07-08 | docs: add CLAUDE.md (crate guide for Claude Code) | Lucas Galante |
| 2026-07-08 | feat(widget): narrow Layout/Paint traits + Adapted bridge (Phase 5a) | Lucas Galante |
| 2026-07-07 | feat(scene): Animated<T> animation primitive - tween + spring + easing (Phase 4) | Lucas Galante |
| 2026-07-07 | feat(scene): render() always builds a DisplayList - single paint path for all apps (Phase 3) | Lucas Galante |
| 2026-07-07 | feat(scene): paint_root_into for composing multiple top-level widgets (Phase 3) | Lucas Galante |
| 2026-07-07 | feat(scene): renders_own_subtree escape hatch for legacy subtree painters (Phase 3) | Lucas Galante |
| 2026-07-07 | fix(scene): leaf widgets emit their own all_rounded_quads in paint_self (Phase 3) | Lucas Galante |
| 2026-07-07 | feat(scene): route render() through the DisplayList behind an opt-in (Phase 3 backend) | Lucas Galante |
| 2026-07-07 | feat(scene): border/bevel/arc prims; paint_self mirrors push_widget_vertices (Phase 3) | Lucas Galante |
| 2026-07-07 | feat(scene): paint walk — one traversal of the widget tree to a DisplayList (Phase 3) | Lucas Galante |
| 2026-07-07 | feat(scene): DisplayList + PaintCtx clip/transform stack (Phase 3 foundation) | Lucas Galante |
| 2026-07-07 | feat(scene): Dropdown::intrinsic_size (content-sized leaf set complete) | Lucas Galante |
| 2026-07-07 | feat(scene): Plate engine_layout hook for bridge-driven layout (Phase 2b) | Lucas Galante |
| 2026-07-07 | feat(scene): Button::intrinsic_size (content-sizing fan-out, Phase 2b) | Lucas Galante |
| 2026-07-07 | feat(scene): content sizing — Label::intrinsic_size + engine proof (Phase 2b) | Lucas Galante |
| 2026-07-07 | feat(scene): opaque-leaf boundary + parent-supplied child styles; SplitBox hooks (Phase 2b) | Lucas Galante |
| 2026-07-07 | feat(scene): widget<->layout-engine bridge + Element layout hooks (Phase 2b) | Lucas Galante |
| 2026-07-07 | feat(scene): stack + grid layout modes and flex shrink | Lucas Galante |
| 2026-07-07 | feat(scene): hand-rolled two-phase layout engine (Phase 2a) | Lucas Galante |
| 2026-07-07 | docs: RFC for the cce-ui core rebuild | Lucas Galante |
| 2026-07-07 | feat(scene): generational node arena + arena-backed widget tree (Phase 1) | Lucas Galante |
| 2026-07-07 | perf: remove per-frame text-area debug logging from render() | Lucas Galante |
| 2026-07-07 | fix(widget): make SplitBox aggregate its children like a real container | Lucas Galante |
| 2026-07-07 | feat(engine): opt-in wlr-layer-shell support for Application | Lucas Galante |
| 2026-07-07 | feat(config,ipc): typed config accessors and a shared IPC socket module | Lucas Galante |
| 2026-07-07 | refactor(color): use shared hex parsers in internal widgets | Lucas Galante |
| 2026-07-07 | feat(color): add public hex color parsers (single source of truth) | Lucas Galante |
| 2026-07-07 | feat(widget): add SplitBox container widget | Lucas Galante |
| 2026-07-07 | fix: default UI font to Berkeley Mono instead of the uninstalled "Outfit" | Lucas Galante |
| 2026-07-07 | feat: add create_font_system_with_system_fonts variant | Lucas Galante |
| 2026-07-07 | feat(config): add cached_config/cached_config_content helpers | Lucas Galante |
| 2026-07-07 | refactor: drop hardcoded /home/lsgalante HOME fallback | Lucas Galante |
| 2026-07-07 | feat(config): add config_home/data_home/cce_config_dir XDG helpers | Lucas Galante |
| 2026-07-07 | refactor: resolve bundled font/icon dirs via helpers, not hardcoded paths | Lucas Galante |
| 2026-07-07 | refactor: resolve font dir via $CCE_FONTS_DIR / $HOME instead of hardcoded path | Lucas Galante |
| 2026-07-06 | style: adjust List rect to encompass the search box inside the list container background and borders | Lucas Galante |
| 2026-07-06 | feat: optionally integrate search box at bottom of List element | Lucas Galante |
| 2026-07-06 | Optimize load_recent_files by avoiding synchronous disk existance checks on UI thread | Lucas Galante |
| 2026-07-06 | Remove superceded get_input_path function and replace calls with get_config_path | Lucas Galante |
| 2026-07-06 | Refactor font config getters and parsers in layout.rs to exact key match | Lucas Galante |
| 2026-07-06 | Populate overlay_rects in window_runner text_areas using active popovers from ui_context | Lucas Galante |
| 2026-07-06 | Complete config exact key matching, dynamic list row auto-scaling, and font database validator warnings | Lucas Galante |
| 2026-07-06 | Fix list_font parsing to not be overwritten by list_font_color | Lucas Galante |
| 2026-07-06 | Implement widget_font for List to support style.data.list.font setting | Lucas Galante |
| 2026-07-06 | Unify ColumnarList and List into a single List widget with dynamic columns support | Lucas Galante |
| 2026-07-06 | Implement ColumnarList widget and automatic scroll clipping bounds check | Lucas Galante |
| 2026-07-06 | Support input.touchpad.natural_scroll mapping and horizontal panning direction inversion | Lucas Galante |
| 2026-07-06 | Round tree row and bottom separator corners at the bottom of the container | Lucas Galante |
| 2026-07-06 | Support style.control.button.font mapping and button layout font resolution | Lucas Galante |
| 2026-07-06 | Position Add Key button next to search bar with a popover | Lucas Galante |
| 2026-07-06 | Fix dropdown text fade-out logic so it only fades when text overflows | Lucas Galante |
| 2026-07-06 | Allow ButtonStrip to inherit menubar font and configure MenuBar menus to use it | Lucas Galante |
| 2026-07-06 | Optimize KDL annotation lookup with batch API | Lucas Galante |
| 2026-07-06 | Implement vertical scrolling, scrollbar dragging, and clipping of scrolled out elements in ParametersBg | Lucas Galante |
| 2026-07-06 | Add bounds hit test check to Viewport3D mouse_wheel | Lucas Galante |
| 2026-07-06 | Refactor 3D Viewport into standalone Viewport3D widget | Lucas Galante |
| 2026-07-05 | Expose VStack context fields and fix row layout Y tracking | Lucas Galante |
| 2026-07-05 | Implement Font config centralization and LRU cache in cce-ui | Lucas Galante |
| 2026-07-05 | Remove text line height scaling multiplier (set to 1.0) in cce-ui | Lucas Galante |
| 2026-07-05 | Use dynamic control font size in Dropdown text layout calculation | Lucas Galante |
| 2026-07-05 | Use center_text_y layout helper for dropdown text and arrow alignment | Lucas Galante |
| 2026-07-05 | Apply optical centering offset of -1.0px to dropdown text and arrow | Lucas Galante |
| 2026-07-05 | Vertically center text and arrow in Dropdown using mathematical bounding box center | Lucas Galante |
| 2026-07-05 | Refactor and fix scale factor sidebar scaling bug | Lucas Galante |
| 2026-07-05 | feat: add support for checkbox styling config keys | Lucas Galante |
| 2026-07-05 | feat: add support for style.control.textbox... config styling mappings | Lucas Galante |
| 2026-07-05 | feat: add spinbox background_color, button_color, button_hover_color, and text_color KDL styling properties | Lucas Galante |
| 2026-07-05 | feat: draw spinbox text box background and border fully underneath buttons | Lucas Galante |
| 2026-07-05 | fix: implement set_rect override for RangeSlider to fix negative height offset bug | Lucas Galante |
| 2026-07-05 | feat: add rangeslider height KDL configuration support | Lucas Galante |
| 2026-07-05 | fix: implement toggled/untoggled split border rendering for Toggle in all_rounded_quads | Lucas Galante |
| 2026-07-05 | feat: add toggle background_color configuration and fix border rendering in all_rounded_quads | Lucas Galante |
| 2026-07-05 | feat: add progressbar height KDL configuration support | Lucas Galante |
| 2026-07-05 | fix: implement progressbar background and fill rendering as rounded quads | Lucas Galante |
| 2026-07-05 | feat: add config-backed color keys for progressbar and rangeslider controls | Lucas Galante |
| 2026-07-05 | fix: render every character individually in dropdown to avoid spacing mismatches | Lucas Galante |
| 2026-07-05 | fix: set fade alpha target to 1.0 to match opaque background override | Lucas Galante |
| 2026-07-05 | fix: make dropdown background opaque to prevent subpixel anti-aliasing artifacts on transparent surfaces | Lucas Galante |
| 2026-07-05 | clean: remove temporary test_berkeley_mono_measure unit test | Lucas Galante |
| 2026-07-05 | fix: implement mathematical cell-width metrics for mono-spaced text fading | Lucas Galante |
| 2026-07-05 | fix: return the actual drawn track background color in Ramp::color | Lucas Galante |
| 2026-07-05 | fix: dynamically query parent widget color for exact background blending | Lucas Galante |
| 2026-07-05 | fix: blend transparent dropdown background with control panel color for text fade-out | Lucas Galante |
| 2026-07-05 | fix: enforce sequential spacing constraints for all faded characters to prevent overlaps | Lucas Galante |
| 2026-07-05 | fix: ensure faded characters do not overlap prefix string bounds | Lucas Galante |
| 2026-07-05 | fix: skip rendering heavily faded characters to prevent dark background artifacts | Lucas Galante |
| 2026-07-05 | fix: parse font family name to prevent proportional fallback and set fade width to 24px | Lucas Galante |
| 2026-07-05 | fix: change dropdown label fade-out width from 40px to 12px to preserve spacing on all readable text | Lucas Galante |
| 2026-07-05 | fix: compute dropdown label character positions using prefix layout advance metrics to preserve spacing and kerning | Lucas Galante |
| 2026-07-05 | feat: add character-by-character color fadeout for long dropdown labels | Lucas Galante |
| 2026-07-05 | feat: make vec2i configuration entries lossless in roundtrips | Lucas Galante |
| 2026-07-05 | feat: add config.kdl keys style.control.control_panel.{color,border_color,padding,gap} for cce-ui | Lucas Galante |
| 2026-07-05 | fix: change ControlPanel background to ramp_background_color to provide a solid dark backdrop for child controls | Lucas Galante |
| 2026-07-05 | fix: change ControlPanel background color to list_bg_color to enhance child control vibrancy and contrast | Lucas Galante |
| 2026-07-05 | fix: set correct layout heights for ControlPanel widgets and add missing Enable and Bevel toggles | Lucas Galante |
| 2026-07-05 | fix: remove duplicate background and borders from ControlPanel extra_quads to prevent opacity overlap on children | Lucas Galante |
| 2026-07-05 | feat: position labels manually and make dropdowns/slider label-less for full blue background fill | Lucas Galante |
| 2026-07-05 | feat: render Ramp container background/border as rounded quads to prevent clipping children | Lucas Galante |
| 2026-07-05 | feat: adjust Ramp dropdown layout heights to 40.0 for proper border rendering | Lucas Galante |
| 2026-07-05 | feat: scale Ramp graph height dynamically based on widget height | Lucas Galante |
| 2026-07-05 | feat: enclose dropdown controls inside Ramp element container border and make them width-responsive | Lucas Galante |
| 2026-07-05 | feat: implement preferred_height for Ramp widget to allocate space for dropdowns | Lucas Galante |
| 2026-07-05 | feat: constrain dropdown popovers within Ramp parent element borders | Lucas Galante |
| 2026-07-05 | Implement ReverseMosaicLayout with proportional scaling | Lucas Galante |
| 2026-07-05 | Implement MosaicLayout using dynamic 2D Guillotine Bin Packing | Lucas Galante |
| 2026-07-05 | Merge PageLayout and ContainerLayout traits, unify Page widget layout | Lucas Galante |
| 2026-07-05 | Refactor layouts to use localized state instead of global thread-local statics | Lucas Galante |
| 2026-07-05 | Refactor run to instantiate App after first roundtrip so correct scale factor is set during new() | Lucas Galante |
| 2026-07-05 | Support right-aligned titles in MenuBar and resolve rounded corners overlapping bugs | Lucas Galante |
| 2026-07-05 | Introduce delegate_wl_callback macro helper to streamline frame callback throttling in custom window event loops | Lucas Galante |
| 2026-07-05 | Implement configuration support and unit tests for column_gap | Lucas Galante |
| 2026-07-05 | Adjust ColumnLayout to dynamically factor in widget label_offset when advancing height | Lucas Galante |
| 2026-07-05 | Support row-based side-by-side control groups in ColumnLayout and refactor ControlPanel to use H-rows | Lucas Galante |
| 2026-07-05 | Refactor ControlPanel layout to use ColumnLayout and fix status bar font parsing and text alignment | Lucas Galante |
| 2026-07-04 | Support layout positioning for Bevel Depth spinbox inside ControlPanel container | Lucas Galante |
| 2026-07-04 | Support window_manager.bevel_depth configuration key and dynamically evaluate bevel depth in push_plate_bevel_vertices | Lucas Galante |
| 2026-07-04 | Shrink backplate background bounding box by bevel thickness when bevel is enabled to avoid overlapping seams | Lucas Galante |
| 2026-07-04 | Prioritize bevel rendering over solid border in push_widget_vertices to avoid rendering overlapping flat borders | Lucas Galante |
| 2026-07-04 | Update plate bevel rendering to shade the plate's base color directly and retain its alpha | Lucas Galante |
| 2026-07-04 | Integrate bevel rendering capability natively into Backplate container widget | Lucas Galante |
| 2026-07-04 | Add Line Type dropdown (Linear/Bezier) to Ramp element with cubic Hermite spline interpolation | Lucas Galante |
| 2026-07-04 | Support window_manager.light_source_position configuration and evaluate dynamic bevel shading in push_plate_bevel_vertices | Lucas Galante |
| 2026-07-04 | Implement half-borders for Toggle widget and support style.control.toggle.border_color in KDL | Lucas Galante |
| 2026-07-04 | Exclude rounded child background from flat quads in ControlPanel::extra_quads | Lucas Galante |
| 2026-07-04 | Implement rounded corners and child solid borders in ControlPanel | Lucas Galante |
| 2026-07-04 | Fix ScrollBox mouse input consuming and clean up logging | Lucas Galante |
| 2026-07-04 | Implement full draggable/popover coordinate translation delegation on ControlPanel | Lucas Galante |
| 2026-07-04 | Implement ScrollBox delegation and spacing updates for ControlPanel | Lucas Galante |
| 2026-07-04 | Create and register ControlPanel container widget class in cce-ui | Lucas Galante |
| 2026-07-04 | Increase float Ramp curve resolution to 600 slices for smooth visual line rendering | Lucas Galante |
| 2026-07-04 | Implement custom hit_test for Ramp element to correctly capture clicks inside child dropdown popover region | Lucas Galante |
| 2026-07-04 | Configure preset dropdown in float Ramp to expand downward by default | Lucas Galante |
| 2026-07-04 | Enable preset dropdown in float Ramp to always open upward | Lucas Galante |
| 2026-07-04 | Add preset dropdown with selectable ramp presets (Linear, Bevel Raised/Sunken, Peak, Valley) to the float Ramp control | Lucas Galante |
| 2026-07-04 | Implement change tracking and tick methods for ColorRamp and Ramp elements | Lucas Galante |
| 2026-07-04 | Draw border around ramp elements and enclose all controls inside them | Lucas Galante |
| 2026-07-04 | Implement set_rect for ProgressBar to account for label offset | Lucas Galante |
| 2026-07-04 | Implement set_rect for Dropdown to account for label offset | Lucas Galante |
| 2026-07-04 | Rename color ramp to ColorRamp and implement Houdini-style float Ramp | Lucas Galante |
| 2026-07-04 | Implement new Houdini-style Ramp control element and styling keys | Lucas Galante |
| 2026-07-04 | Add open_upward layout direction setting to Dropdown widget | Lucas Galante |
| 2026-07-04 | Implement set_rect override for Slider to isolate label height | Lucas Galante |
| 2026-07-04 | Add support for button_height configuration | Lucas Galante |
| 2026-07-04 | Implement dropdown upward opening, dynamic sizing, and section container fixes | Lucas Galante |
| 2026-07-04 | Fix: respect widget visibility in Element::all_rounded_quads default implementation | Lucas Galante |
| 2026-07-04 | Support configurable plate blur setting in config.kdl, defaulting to false | Lucas Galante |
| 2026-07-04 | Support configurable plate color and border styles in config.kdl | Lucas Galante |
| 2026-07-04 | fix: round bottom corners of Graph widget extra quads to preserve window corner rounding | Lucas Galante |
| 2026-07-04 | feat: support textbox background and background_edit color configuration keys | Lucas Galante |
| 2026-07-04 | Support output display brightness settings type annotations and tests | Lucas Galante |
| 2026-07-03 | test: add regression test for section collapsing under query filters | Lucas Galante |
| 2026-07-03 | Fix keybind detection and type annotation reading for the delete key | Lucas Galante |
| 2026-07-03 | feat: expose graph_node_delete style mapping and keybind tag support | Lucas Galante |
| 2026-07-03 | feat: implement grid_snap_enabled getter for graph image snapping | Lucas Galante |
| 2026-07-03 | fix: implement rect bounds method on Graph Element to fix pixel clipping | Lucas Galante |
| 2026-07-03 | fix: draw rounded_quads before quads to prevent background overlaying foreground elements | Lucas Galante |
| 2026-07-03 | feat: implement native Wayland touchpad pinch gestures using zwp_pointer_gestures_v1 | Lucas Galante |
| 2026-07-03 | fix: sync modifier key states in update_modifiers and mouse_wheel events | Lucas Galante |
| 2026-07-03 | Fix text invisibility in cce-files by defaulting to system monospace font when generic sans-serif query fails to match | Lucas Galante |
| 2026-07-03 | feat: support style.data.list.font_color in configuration and widgets | Lucas Galante |
| 2026-07-03 | Fix render_widget to draw all_rounded_quads and fix unquoted KDL section identifiers | Lucas Galante |
| 2026-07-03 | Add right-click Copy Path context menu to Breadcrumb widget | Lucas Galante |
| 2026-07-03 | feat: add support for Ctrl-scroll pinch zoom on Graph canvas | Lucas Galante |
| 2026-07-03 | Support collapsing tree sections when search filters are active | Lucas Galante |
| 2026-07-03 | feat: implement load_recent_files and save_recent_files helpers using app recent-files.kdl | Lucas Galante |
| 2026-07-03 | Implement recursive all_rounded_quads for Backplate to fix child selection highlighting | Lucas Galante |
| 2026-07-03 | fix: draw Graph elements in all_rounded_quads to prevent Backplate coverage | Lucas Galante |
| 2026-07-03 | feat: support custom fonts for Graph and Node elements in cce-ui | Lucas Galante |
| 2026-07-03 | feat: support app-specific configuration files override | Lucas Galante |
| 2026-07-03 | Optimize font loading and vertical status bar text alignment/spacing | Lucas Galante |
| 2026-07-03 | Add vertical text formatting support using IS_VERTICAL global flag | Lucas Galante |
| 2026-07-03 | Fix status bar modules click resize hover logic | Lucas Galante |
| 2026-07-03 | Fix status bar modules cursor resize hover logic, add color tests, improve dropdown rendering, and treelist editing | Lucas Galante |
| 2026-07-03 | Apply srgb_to_linear to color previews in TreeList to match widget rendering | Lucas Galante |
| 2026-07-03 | Allow window dragging from menubar and statusbar empty background areas | Lucas Galante |
| 2026-07-03 | Added style.data.textbox.placeholder_text_color configuration property key | Lucas Galante |
| 2026-07-03 | Added style.control.dropdown.color key to the dropdown domain | Lucas Galante |
| 2026-07-03 | Added support for separators in Dropdown widget | Lucas Galante |
| 2026-07-03 | Added style.surface.backplate.menubar and style.surface.backplate.statusbar styling domains | Lucas Galante |
| 2026-07-03 | Added style.data.textbox.multiline.border_width configuration support | Lucas Galante |
| 2026-07-03 | Added Cear option to search TextBox context menu | Lucas Galante |
| 2026-07-03 | Merged input.kdl path and configurations into config.kdl | Lucas Galante |
| 2026-07-03 | Skipped flat background quads for Backplate and Plate when rounded corners are active | Lucas Galante |
| 2026-07-03 | Added select_and_show_key and scroll_to_selected_key support to TreeList | Lucas Galante |
| 2026-07-03 | Called reload_config inside lazy_init_style_registry to initialize static style locks at startup | Lucas Galante |
| 2026-07-03 | Moved style.data.textbox.line_wrap to style.data.textbox.multiline.line_wrap and restricted to multiline textboxes | Lucas Galante |
| 2026-07-03 | Added update_on_type to TextBox to support real-time character-by-character search updates in TreeList | Lucas Galante |
| 2026-07-03 | Implemented scroll dragging directly in on_cursor_moved of ScrollBox to support all Wayland window clients | Lucas Galante |
| 2026-07-03 | Added scroll changes sync to TreeList::tick to trigger text layout updates during dragging | Lucas Galante |
| 2026-07-03 | Delegated drag lifecycle events (draggable, drag_begin, drag_update, drag_end) from TreeList to ScrollBox | Lucas Galante |
| 2026-07-03 | Reset scrollbar_dragging to false on mouse release or clicking away to prevent blocking tree item interactions | Lucas Galante |
| 2026-07-03 | Prevented hover and click events on tree rows when cursor is over or dragging the scrollbar | Lucas Galante |
| 2026-07-03 | Implemented scrollbar click-to-jump and drag-to-scroll functionality in ScrollBox | Lucas Galante |
| 2026-07-03 | Extended tree row backgrounds and separator lines symmetrically to the right edge of the list container | Lucas Galante |
| 2026-07-02 | Finalized logical pixel offset scaling on text shaping coordinates cache inside TextBox | Lucas Galante |
| 2026-07-02 | Scaled cached character offsets by DPI scale_factor to convert shaper physical coordinates back to logical pixels | Lucas Galante |
| 2026-07-02 | Implemented prepare_text on TreeList to delegate font shaper offset calculations to the search box child | Lucas Galante |
| 2026-07-02 | Implemented exact glyphon-shaping character offset measurement and mouse click index mapping inside TextBox, resolving all font fallback and monospace caret/selection misalignment issues | Lucas Galante |
| 2026-07-02 | Aligned single-line TextBox caret vertical coordinate in all_rounded_quads method | Lucas Galante |
| 2026-07-02 | Aligned single-line TextBox caret vertical coordinate with text y alignment | Lucas Galante |
| 2026-07-02 | Made TreeList container border static to prevent dynamic focus colors from tinting the semi-transparent background | Lucas Galante |
| 2026-07-02 | Added option to hide ScrollBox background and disabled it in TreeList to expose tree_background_color | Lucas Galante |
| 2026-07-02 | Fixed searchbox mouse click focus propagation | Lucas Galante |
| 2026-07-02 | Added style.data.tree.open_search configuration support for tree searchbox keybind | Lucas Galante |
| 2026-07-02 | Added focus_search method to TreeList | Lucas Galante |
| 2026-07-02 | Add search box to TreeList in cce-ui | Lucas Galante |
| 2026-07-02 | Migrate all input configurations and keybindings to input.kdl | Lucas Galante |
| 2026-07-02 | Support loading and saving keybindings to keybinds.kdl | Lucas Galante |
| 2026-07-02 | Refactor ScrollingList to List and fix window decoration blur and styling | Lucas Galante |
| 2026-07-01 | Add public getters for grid properties on Graph widget | Lucas Galante |
| 2026-07-01 | Fix popover rendering support in MenuBar | Lucas Galante |
| 2026-07-01 | Fix KDL type annotation quoting for special chars and add desktop_grid_scale mapping | Lucas Galante |
| 2026-07-01 | Preserve type annotations in KDL config serialization by tracking key path | Lucas Galante |
| 2026-07-01 | Remove flaky test_real_config_kdl from cce-ui tests | Lucas Galante |
| 2026-07-01 | Update desktop solid color config key mapping in layout.rs | Lucas Galante |
| 2026-07-01 | Update unit tests for type annotations and add test_real_config_kdl | Lucas Galante |
| 2026-07-01 | Populate and display type annotations in Type column | Lucas Galante |
| 2026-07-01 | Fix tree header label bounds using index mapping | Lucas Galante |
| 2026-07-01 | Add Key, Type and Value headers to TreeList | Lucas Galante |
| 2026-07-01 | Support connector_activation_radius style configuration | Lucas Galante |
| 2026-07-01 | Add size and color settings for node wire connectors | Lucas Galante |
| 2026-07-01 | Add Delete key option to TreeList context menu | Lucas Galante |
| 2026-07-01 | Implement style.data.textbox.line_wrap configuration and horizontal scrolling support | Lucas Galante |
| 2026-07-01 | Fix slider mouse wheel hit test to match entire widget bounds | Lucas Galante |
| 2026-07-01 | Fix graph node text label disappearance when partially cut off on the left | Lucas Galante |
| 2026-07-01 | Fix color space handling, add Oklab conversions and fix notifier/designer color mismatches | Lucas Galante |
| 2026-07-01 | Implement dynamic scrollbar layering (behind on idle, on top on scroll) and tree opacity/blur configurations | Lucas Galante |
| 2026-07-01 | Implement customizable scrollbar style configurations (width, track_color, thumb_color) under style.control.scrollbar | Lucas Galante |
| 2026-07-01 | Completely implement and fix TreeList::all_rounded_quads body for items and separators | Lucas Galante |
| 2026-07-01 | Fix text label color space conversion and correct sRGB colors in tree configuration | Lucas Galante |
| 2026-07-01 | Fix separator, item background, and cursor visibility in rounded tree/spinbox elements | Lucas Galante |
| 2026-07-01 | Expose and support all color styling keys in style.data.tree domain | Lucas Galante |
| 2026-07-01 | Fix tree container and spinbox corner radius config pick-up and styling | Lucas Galante |
| 2026-07-01 | Implement StyleRegistry, CornerRadii struct, and standardized rounded border rendering across all widgets | Lucas Galante |
| 2026-07-01 | Use engine-rendered rounded backgrounds and solid borders for ScrollingList and TreeList to correctly apply corner_radius configuration key | Lucas Galante |
| 2026-07-01 | Add right-click context menu with expand/collapse options to domain headers in TreeList | Lucas Galante |
| 2026-07-01 | Add style.data namespace support and tree.corner_radius config key | Lucas Galante |
| 2026-07-01 | Support nested key_bindings inside input node in config.kdl | Lucas Galante |
| 2026-07-01 | Map built-in keybindings to cce control spawn commands in UI | Lucas Galante |
| 2026-07-01 | Implement hierarchical keybindings and dynamic TextBox text measurement | Lucas Galante |
| 2026-07-01 | Remove JSON config fallback support and write keybindings as KDL | Lucas Galante |
| 2026-07-01 | Support dynamic update of style font inside TextBox | Lucas Galante |
| 2026-07-01 | Rename style.surfaces keys to style.surface | Lucas Galante |
| 2026-07-01 | Fix selection highlight layout order overlap with rounded corners | Lucas Galante |
| 2026-07-01 | Add vertical scrolling and mouse wheel support to TextBox | Lucas Galante |
| 2026-07-01 | Implement right-click context menu with key path label, Copy Key, and Copy Value on TreeList rows | Lucas Galante |
| 2026-07-01 | Support custom display text and trigger always-on-click for Dropdown as a menu button | Lucas Galante |
| 2026-06-30 | Fix Backplate corner rounding under negative alpha/blur and prevent duplicate square background quad drawing | Lucas Galante |
| 2026-06-30 | Implement dynamic rounded corners for MenuBar and StatusBar widgets | Lucas Galante |
| 2026-06-29 | Support style.surfaces.backplate.color, blur, and corner_radius configuration properties | Lucas Galante |
| 2026-06-29 | Fix panic during popup layout by safely checking popover_rect return option | Lucas Galante |
| 2026-06-29 | Implement Z-index sorting in propagate_event_impl and registry query fallback in is_coordinate_covered | Lucas Galante |
| 2026-06-29 | Register popovers in thread-local ACTIVE_POPOVERS to allow Wayland popup subsurface creation | Lucas Galante |
| 2026-06-29 | Add get_kdl_type_annotation helper and update_kdl_in_memory type-preservation | Lucas Galante |
| 2026-06-29 | Add unit test for spinbox click event handling | Lucas Galante |
| 2026-06-29 | Add unit test for spinbox_button_padding config parsing | Lucas Galante |
| 2026-06-29 | Add support for style.spinbox.button_padding | Lucas Galante |
| 2026-06-29 | Rearrange spinbox button layout to put minus and plus on the right | Lucas Galante |
| 2026-06-29 | clean: remove style.background.color and legacy TOML-related migration logic | Lucas Galante |
| 2026-06-29 | Rename desktop.background to desktop.background_color | Lucas Galante |
| 2026-06-29 | Implement text fade-out and bounds clipping for long values in FontSelector | Lucas Galante |
| 2026-06-29 | Remove temporary test_kdl_syntax test | Lucas Galante |
| 2026-06-29 | Pass alpha flag to cce-colors when running with alpha, and set just_changed inside tick | Lucas Galante |
| 2026-06-29 | Support KDL color type mapping to rgb and rgba based on length | Lucas Galante |
| 2026-06-29 | Map style.status.background_color and background_blur, and remove box_opacity mapping | Lucas Galante |
| 2026-06-29 | Remove style.border domain layout variables and mapping mechanisms | Lucas Galante |
| 2026-06-29 | Remove fourth column separator and position unselected color preview inside the third column | Lucas Galante |
| 2026-06-29 | Introduce (font) type signature in TreeList labels for font properties | Lucas Galante |
| 2026-06-29 | Add vertical column dividers and unselected color leaf preview to TreeList | Lucas Galante |
| 2026-06-29 | Fix tree widget click event interaction by explicitly implementing blocks_backplate_drag on TreeList and ScrollBox | Lucas Galante |
| 2026-06-29 | Implement TreeList widget and display key type signatures | Lucas Galante |
| 2026-06-29 | Refactor path parsing to Option C config structure and add focus-on-right-click support for TextBox | Lucas Galante |
| 2026-06-29 | Group configuration styling properties into nested nodes (Option C) | Lucas Galante |
| 2026-06-29 | Transition from JSON to KDL format configuration | Lucas Galante |
| 2026-06-29 | Support drawing TextBox selection highlights when not actively editing | Lucas Galante |
| 2026-06-29 | Add standardized XDG portal file dialog module using rfd | Lucas Galante |
| 2026-06-29 | Fix titlebar drag check to exclude clicks on active widgets | Lucas Galante |
| 2026-06-29 | Support XDG Base Directory specification for config paths | Lucas Galante |
| 2026-06-28 | Update default color interface command name to cce-colors | Lucas Galante |
| 2026-06-28 | Update app_id check for renamed cce-status | Lucas Galante |
| 2026-06-28 | Update layout section padding to be uniform and align button/keybinds widgets | Lucas Galante |
| 2026-06-28 | Do not clear tick_receivers in clear_hierarchy to preserve dynamic widget behaviors on layout rebuild | Lucas Galante |
| 2026-06-28 | Add last_font tracking to ButtonStrip to trigger SVG label regeneration on font changes | Lucas Galante |
| 2026-06-28 | Always return background color quad in Backplate/Plate all_quads | Lucas Galante |
| 2026-06-28 | Restore default all_quads and implement background quad filtering for rounded children in container all_quads | Lucas Galante |
| 2026-06-28 | Implement range() on Spinbox and override layout_ignore to return true | Lucas Galante |
| 2026-06-28 | Implement all_rounded_quads recursively and skip flat background quads for rounded widgets | Lucas Galante |
| 2026-06-28 | Implement layout_ignore for interactive controls to prevent Plate concentric ring layout overrides | Lucas Galante |
| 2026-06-28 | Configure FontSelector to spawn cce-fonts asynchronously to prevent UI freezing | Lucas Galante |
| 2026-06-28 | Support dynamic scrollinglist_justification and scrollinglist_font for ListRow buttons | Lucas Galante |
| 2026-06-28 | Configure Backplate to dynamically fall back to page_low_color() by default | Lucas Galante |
| 2026-06-28 | Configure Backplate to dynamically retrieve corner radius from config by default | Lucas Galante |
| 2026-06-28 | Add scrollinglist_font and scrollinglist_justification settings to layout config | Lucas Galante |
| 2026-06-28 | Re-export FontSelector from container/scrolling_list module | Lucas Galante |
| 2026-06-28 | style: unify Section/SectionContext side and bottom spacing to scale with section_padding | Lucas Galante |
| 2026-06-28 | feat: implement independent widget fonts for Button, ButtonStrip, Labels, Dropdown, TextBox, Spinbox, and Slider | Lucas Galante |
| 2026-06-28 | Support global font_selector_font configuration and render FontSelector widgets using it | Lucas Galante |
| 2026-06-28 | Support solid borders in render_widget to fix Toggle borders on manually laid-out pages | Lucas Galante |
| 2026-06-28 | Expose ParametersBg collections and scan them all in get_child_widget_for_quad to fix Toggle borders rendering in manual layouts | Lucas Galante |
| 2026-06-28 | Draw solid border on top of extra quads when bounds match the child widget, restoring Toggle extra_quads background | Lucas Galante |
| 2026-06-28 | Fix Toggle border rendering by removing redundant full-size extra quad | Lucas Galante |
| 2026-06-28 | Add placeholder examples to KeybindRow text inputs | Lucas Galante |
| 2026-06-28 | Customize Toggle widget background and border style | Lucas Galante |
| 2026-06-28 | Implement atomic config writes and rolling configuration backups | Lucas Galante |
| 2026-06-27 | Implement slider corner radius configuration | Lucas Galante |
| 2026-06-27 | Fix Spinbox and Slider change propagation by setting just_changed = true | Lucas Galante |
| 2026-06-27 | feat: Route scroll navigation keys to hovered scrollable widgets if they are not focused | Lucas Galante |
| 2026-06-27 | fix: Map PageUp, PageDown, Home, End keysyms in wayland window runner | Lucas Galante |
| 2026-06-27 | feat: Add Page Up, Page Down, Home, and End keys to scrolling interfaces | Lucas Galante |
| 2026-06-26 | fix: check surfaces window_opacity prior to legacy layout-level fallback keys in active_backplate_opacity | Lucas Galante |
| 2026-06-26 | Fix slider scroll events not propagating change status | Lucas Galante |
| 2026-06-26 | fix: strip (deleted) suffix from resolved app name in MultiControl config path | Lucas Galante |
| 2026-06-26 | fix: enforce 5ms minimum threshold for scroll sequence updates | Lucas Galante |
| 2026-06-26 | feat: implement multi-control reordering, scrolled page hit-testing, and slider scroll locks | Lucas Galante |
| 2026-06-26 | Remove nested section padding clamp of 8.0px to align nested child section borders with parent widgets under any configured padding | Lucas Galante |
| 2026-06-26 | Align grid-aligned widgets with sub-section borders by applying padding inset in SectionContext::widget | Lucas Galante |
| 2026-06-26 | Enable scrolling on RangeSlider by implementing mouse_wheel | Lucas Galante |
| 2026-06-26 | fix: immediately retry get_current_texture on surface configure to avoid skipped frames during resize | Lucas Galante |
| 2026-06-26 | Re-export link_parent_child under widget namespace | Lucas Galante |
| 2026-06-26 | feat: render node port connectors as circles with hover highlights | Lucas Galante |
| 2026-06-26 | Register and link Paginator children in the layout phase to prevent hierarchy reset drag interference | Lucas Galante |
| 2026-06-26 | Fix sidebar page tabs clicking by registering Paginator as Widget and implementing wants_tick | Lucas Galante |
| 2026-06-26 | Fix backplate drag interfering with pointer events on scrolled widgets and apply UI updates | Lucas Galante |
| 2026-06-26 | Initialize last_col to usize::MAX and apply spacing to all columns when empty | Lucas Galante |
| 2026-06-26 | Fix grid layout spacing vertical alignment, scroll bar crash, and duplicate headers | Lucas Galante |
| 2026-06-26 | Implement layout() in Switcher to propagate layout pass to active child | Lucas Galante |
| 2026-06-26 | Revamp cce-ui event handling with decoupling, coordinate relativization, pointer grabbing, and semantic drag/hover/focus events | Lucas Galante |
| 2026-06-26 | widget: introduce ContainerLayout strategies and SectionContainer | Lucas Galante |
| 2026-06-25 | Register Paginator internal sidebar_menu and pages in widget_registry to prevent window-drag swallowing on sidebar click | Lucas Galante |
| 2026-06-25 | Change cursor icon to resize cursors when hovering over resize border zones of CSD windows | Lucas Galante |
| 2026-06-25 | Resolve window dragging issue on backplate click by introducing blocks_backplate_drag | Lucas Galante |
| 2026-06-25 | Fix cce-ui compilation and pointer comparison warnings for scrollbar | Lucas Galante |
| 2026-06-25 | Create ScrollBar widget and integrate automatically into Page objects | Lucas Galante |
| 2026-06-25 | Add nested page navigation/submenu support in JsonLayoutWidget | Lucas Galante |
| 2026-06-25 | Update active_backplate_opacity to read new config keys with legacy fallback | Lucas Galante |
| 2026-06-24 | refactor: rename Window widget to Backplate to avoid OS window naming collision | Lucas Galante |
| 2026-06-24 | Restrict window drag to non-interactive area and fix test | Lucas Galante |
| 2026-06-24 | Optimize performance: cache text labels and styled labels | Lucas Galante |
| 2026-06-24 | refactor: modernize and systematize workspace logging | Lucas Galante |
| 2026-06-24 | Implement window opacity per window layout mode | Lucas Galante |
| 2026-06-24 | fix: disable CSD drag/resize for cce-status-interface | Lucas Galante |
| 2026-06-24 | perf: implement TextBufferCache and scroll event coalescing to avoid redundant font shaping and paint overhead | Lucas Galante |
| 2026-06-24 | Fix window move and resize seat lookup fallback | Lucas Galante |
| 2026-06-24 | Support default draggable Window objects via ui_context provider | Lucas Galante |
| 2026-06-22 | Implement ImagePreviewData and update PreviewState for image preview support | Lucas Galante |
| 2026-06-22 | Implement Wayland frame callback throttling to resolve window flickering | Lucas Galante |
| 2026-06-22 | Add config metadata and display file/key info in widget context menu | Lucas Galante |
| 2026-06-22 | Move common config reading/writing logic into cce-ui | Lucas Galante |
| 2026-06-22 | Refactor Paginator to use Page instead of Plate | Lucas Galante |
| 2026-06-22 | fix: resolve color selector executable location dynamically | Lucas Galante |
| 2026-06-22 | feat: implement CPU bounds clipping for Window descendants | Lucas Galante |
| 2026-06-22 | Add process::spawn_detached helper to automatically reap child processes | Lucas Galante |
| 2026-06-21 | Implement reactive updates, event propagation, layout and clipping improvements | Lucas Galante |
| 2026-06-21 | Decouple measurement SVG canvas height from button size with safety buffer to prevent clipping | Lucas Galante |
| 2026-06-21 | Implement dynamic exact-width measuring pass for vertical ButtonStrip labels | Lucas Galante |
| 2026-06-21 | Increase estimate_width safety scaling factor to 1.30 to completely prevent clipping | Lucas Galante |
| 2026-06-21 | Fix button overlapping and text clipping by scaling estimate_width by 1.15 | Lucas Galante |
| 2026-06-21 | Add vertical safety buffer to prevent clipping of rotated labels in ButtonStrip | Lucas Galante |
| 2026-06-21 | Dynamically calculate sidebar_w based on button sizes in Paginator | Lucas Galante |
| 2026-06-21 | Update ButtonStrip to support dynamic button padding changes and exact text sizing at 0 padding | Lucas Galante |
| 2026-06-21 | Use cce-ui Paginator widget instead of MenuBar vertical page switcher | Lucas Galante |
| 2026-06-21 | Recreate Paginator widget as a simple layout switcher with vertical ButtonStrip | Lucas Galante |
| 2026-06-21 | Remove Paginator widget and tab margin spinboxes | Lucas Galante |
| 2026-06-21 | layout: align vertical menubar y_offset and padding with button_padding configuration | Lucas Galante |
| 2026-06-21 | layout: fix text cutoff in menubar buttons by using actual menubar font-size and button_padding | Lucas Galante |
| 2026-06-21 | layout: calculate menubar button sizes based on text labels instead of parent space | Lucas Galante |
| 2026-06-21 | feat: support global window_corner_radius configuration | Lucas Galante |
| 2026-06-21 | feat: add scrollinglist entry background and highlight color configuration | Lucas Galante |
| 2026-06-20 | cce-ui: Implement PreviewState as a self-contained custom widget implementing Element | Lucas Galante |
| 2026-06-20 | cce-ui: Add PreviewState as a generic display state object | Lucas Galante |
| 2026-06-20 | feat(layout): add custom column span support in AdaptiveGrid | Lucas Galante |
| 2026-06-20 | Separate window_opacity and menubar_opacity configuration in cce-ui | Lucas Galante |
| 2026-06-20 | fix: update spacing logic to accumulate offset instead of flattening columns height | Lucas Galante |
| 2026-06-20 | style: cap parent section columns count to 2 to improve layout readability | Lucas Galante |
| 2026-06-20 | feat: render nested sections side-by-side in 2+ column parents and restrict nested controls to single column | Lucas Galante |
| 2026-06-19 | Update AdaptiveGrid to support wide-spanning sections | Lucas Galante |
| 2026-06-19 | cce-ui: Remove ccec config path and fix child widget font propagation | Lucas Galante |
| 2026-06-19 | Implement standardized flex layouts (ColumnLayout, RowLayout) in cce-ui | Lucas Galante |
| 2026-06-19 | Robust scrollbar thumb height calculation to prevent clamp panics | Lucas Galante |
| 2026-06-19 | Clean up compiler warnings | Lucas Galante |
| 2026-06-19 | Migrate configuration from TOML to JSON | Lucas Galante |
| 2026-06-19 | Add BREADCRUMB_FONT layout static, parsing, getter/setter, and override widget_font in Breadcrumb | Lucas Galante |
| 2026-06-19 | Implement adaptive grid layout for SectionContext | Lucas Galante |
| 2026-06-19 | Implement editable KeybindsControl widget | Lucas Galante |
| 2026-06-19 | Fix sticky menubar button highlights on window leave and mouse release | Lucas Galante |
| 2026-06-19 | Use read_opacity_if_configured for sidebar_bg_color | Lucas Galante |
| 2026-06-19 | Fix hex color parsers to be quote-resilient | Lucas Galante |
| 2026-06-19 | Rename clear-inspector-v1 protocol to cce-inspector-v1 | Lucas Galante |
| 2026-06-18 | Read window color from /surfaces/window_color | Lucas Galante |
| 2026-06-18 | Parse window_opacity config and use it for page and sidebar backgrounds | Lucas Galante |
| 2026-06-18 | Migrate configuration from TOML to JSON | Lucas Galante |
| 2026-06-18 | Restrict vertical icon splitting in ButtonStrip to single-character icons | Lucas Galante |
| 2026-06-18 | Add page and layer background color and opacity support | Lucas Galante |
| 2026-06-18 | cce-ui: add support for toggle corner radius and plate opacity/corner radius layout parameters | Lucas Galante |
| 2026-06-18 | Implement engine-level CSD window dragging and resizing | Lucas Galante |
| 2026-06-18 | Set buffer scale directly on active popup surface to resolve 2x initial scale glitch | Lucas Galante |
| 2026-06-18 | Round up popup dimensions to integer values to prevent Wayland buffer/scale protocol errors | Lucas Galante |
| 2026-06-18 | Implement JsonLayoutWidget as_ptr_mut and add null target pointer safety checks for context menus | Lucas Galante |
| 2026-06-18 | Fix remaining missing as_ptr/as_ptr_mut widget overrides and apply strict anchor rect bounds clamping | Lucas Galante |
| 2026-06-18 | Fix spinbox right-click crash and implement missing container pointer casts | Lucas Galante |
| 2026-06-18 | Introduce Window container widget in cce-ui | Lucas Galante |
| 2026-06-18 | Fix spinbox right-click crash and Wayland popup sizing bugs | Lucas Galante |
| 2026-06-17 | Fix context menu dangling pointer crash, resolve mutability UB, and migrate application config from TOML to JSON | Lucas Galante |
| 2026-06-17 | Support context menu in active_popup surface and completely disable main canvas overlay text clipping | Lucas Galante |
| 2026-06-17 | Disable popover text clipping so Wayland popup naturally draws over underlying text on z axis | Lucas Galante |
| 2026-06-17 | Allow partial text overlap with overlays by moving left boundary instead of collapsing | Lucas Galante |
| 2026-06-17 | Close context menu on Escape key press in demo | Lucas Galante |
| 2026-06-17 | Fix overlay text clipping to only affect overlapping Y ranges | Lucas Galante |
| 2026-06-16 | Implement standalone widget styling support for MultiControl and add Dropdown corner radius config and spinbox control | Lucas Galante |
| 2026-06-16 | Add font_selector_corner_radius configuration support to layout and FontSelector widget | Lucas Galante |
| 2026-06-16 | Implement MultiControl widget, Popover menus, and standardize vertical text alignment across cce-ui | Lucas Galante |
| 2026-06-16 | Fix disappearing color previews: increase extra_corners check tolerance to 1.5 | Lucas Galante |
| 2026-06-16 | Add color_selector_corner_radius setting and implement it on ColorSelector widget | Lucas Galante |
| 2026-06-16 | Add textbox_corner_radius layout setting and TextBox styling | Lucas Galante |
| 2026-06-16 | Rename GridLayout to AdaptiveGrid | Lucas Galante |
| 2026-06-16 | Remove column layout capability from Plate and Paginator | Lucas Galante |
| 2026-06-16 | Implement button padding in layout and use it in ButtonStrip | Lucas Galante |
| 2026-06-16 | layout: make button size dependent on text length in ButtonStrip | Lucas Galante |
| 2026-06-16 | Optimize widget serialization and throttle inspector state updates to compositor | Lucas Galante |
| 2026-06-16 | Refactor parameters panel layout to use native widget labels and full-width widgets | Lucas Galante |
| 2026-06-16 | feat: propagate selective corner rounding flags to GPU vertex generator | Lucas Galante |
| 2026-06-16 | Restrict rounded corner calculation to visual area (excl. label offset) and make Spinbox base background transparent | Lucas Galante |
| 2026-06-16 | Implement rounded_corners for Spinbox widget to enable rounded corners on outer buttons | Lucas Galante |
| 2026-06-16 | Rearrange Spinbox layout and expose corner radius property | Lucas Galante |
| 2026-06-15 | Revert window_runner text scale factor to 1.0 and implement automated TextItem::new constructor | Lucas Galante |
| 2026-06-15 | Fix HiDPI scale rendering for text areas in window runner | Lucas Galante |
| 2026-06-15 | Fix text rendering over popovers by clipping normal text areas in window_runner.rs | Lucas Galante |
| 2026-06-15 | Add popover_bg_color configuration and use it for dropdown/menu popovers | Lucas Galante |
| 2026-06-15 | Support dynamic breadcrumb background color and render its background box | Lucas Galante |
| 2026-06-15 | Implement ScrollingList background color configuration and fix Makefile install target path | Lucas Galante |
| 2026-06-15 | Standardize vertical text alignment and center TextBox vertically with TEXT_LINE_HEIGHT_MULTIPLIER | Lucas Galante |
| 2026-06-15 | Rename paginator_tab_label_color to menubar_tab_label_color | Lucas Galante |
| 2026-06-15 | Support dynamic PageLayout strategies on Page container widget | Lucas Galante |
| 2026-06-13 | Refactor UI layout, update widgets (button, checkbox, color_selector, dropdown, graph) and window runner | Lucas Galante |
| 2026-06-10 | Add gap width spinbox, layout improvements, and switcher/page/layer container widgets | Lucas Galante |
| 2026-06-09 | Implement ButtonStrip widget and integrate with MenuBar and Paginator | Lucas Galante |
| 2026-06-09 | Fix duplicate overlapping menu bar titles when hidden | Lucas Galante |
| 2026-06-09 | Refactor and adapt widgets to use UiContext and scale factor | Lucas Galante |
| 2026-06-06 | Refactor widgets to Element trait, split widget.rs, and implement FontSelector (modified: src/color.rs, src/engine.rs, src/layout.rs and 8 others) | Lucas Galante |
| 2026-06-05 | feat: add scale module, custom vertex rendering, Column/Grid/Radial layout strategies, and Plate widget | Lucas Galante |
| 2026-06-03 | Update paginator rotated tab sizing and layout parameters | Lucas Galante |
| 2026-06-03 | Make ColorSelector.editing public to allow other layout applications to query hover/focus states | Lucas Galante |
| 2026-06-03 | Move trackpad panning handling to Graph widget | Lucas Galante |
| 2026-06-03 | Remove active tab underline indicator in Paginator horizontal mode | Lucas Galante |
| 2026-06-03 | Add horizontal top-tabs option to Paginator widget | Lucas Galante |
| 2026-06-03 | Implement frosted glass blur effect for Dropdown popover and include recent UI enhancements | Lucas Galante |
| 2026-06-02 | Update system configuration and interface modules | Lucas Galante |
| 2026-06-01 | Introduce strongly-typed LogicalPosition and LogicalSize to avoid scaling mismatches | Lucas Galante |
| 2026-06-01 | Add clear-inspector-v1 protocol and widget serialization support in clear-ui | Lucas Galante |
| 2026-05-29 | Update system configuration and interface modules | Lucas Galante |
| 2026-05-28 | fix: allow special characters in TextBox | Lucas Galante |
| 2026-05-28 | feat: add password masking support to TextBox | Lucas Galante |
| 2026-05-28 | Update system configuration and interface modules | Lucas Galante |
| 2026-05-26 | Update system configuration and interface modules | Lucas Galante |
| 2026-05-26 | Update system configuration and interface modules | Lucas Galante |
| 2026-05-26 | feat: implement TextItem and StyledLabel with strikethrough in clear-ui library | Lucas Galante |
| 2026-05-25 | Update system configuration and interface modules | Lucas Galante |
| 2026-05-25 | Migrate from winit to smithay-client-toolkit and calloop | Lucas Galante |
| 2026-05-24 | Update components and system settings | Lucas Galante |
| 2026-05-23 | layout: add declarative row layout helper to Section | Lucas Galante |
| 2026-05-23 | Implement parameters row layout, hit test, and hover alignment | Lucas Galante |
| 2026-05-23 | Style adjustment: enhance transparency and fine-tune colors | Lucas Galante |
| 2026-05-22 | Implement vertical scrolling and scrolling velocity/inertia in Spreadsheet widget | Lucas Galante |
| 2026-05-22 | Implement scroll wheel support on sliders and demo app | Lucas Galante |
| 2026-05-22 | Close MenuBar submenu when clicking on an already open menu heading | Lucas Galante |
| 2026-05-22 | Support custom slider ranges and dynamic menu items updating | Lucas Galante |
| 2026-05-22 | Update parameter UI widgets and slider support | Lucas Galante |
| 2026-05-21 | Add Breadcrumb widget, Section layout helper, and unit tests | Lucas Galante |
| 2026-05-20 | Remove taffy, add origin-relative Column layout system | Lucas Galante |
| 2026-05-19 | Add Toggle, Checkbox, Slider, and ProgressBar widgets | Lucas Galante |
| 2026-05-19 | Initial commit: clear-ui GPU-accelerated UI framework | Lucas Galante |