Skip to main content

2 posts tagged with "window"

View All Tags

Window State-First Content Renderers (March 2026)

· One min read

@wonderlandlabs-pixi-ux/window now documents a clear state-first pattern for runtime content updates in windows and titlebars.

For dynamic content (toolbar actions, async updates, external events), use this flow:

  1. Mutate window/titlebar state (including custom fields).
  2. Mark the relevant store dirty (markDirty() / isDirty).
  3. Upsert display objects from windowContentRenderer and/or titlebarContentRenderer.

Why this matters

  • Avoids Pixi artifacts from direct display-list mutation outside the refresh/ticker path.
  • Coalesces multiple state changes between ticks into one final render snapshot.
  • Prevents unnecessary add/remove churn when intermediate states cancel out before render.

Refresh-cycle timing

  • windowContentRenderer runs during WindowStore.resolve() via content refresh.
  • titlebarContentRenderer runs during TitlebarStore.resolve().

This keeps content generation deterministic and aligned with the rest of the monorepo rendering model.

Window Drag/Resize + Validator Source Fixes (March 2026)

· One min read

Today we addressed a group of related issues across drag, resizer, window, and the package-validator app:

  • Fixed zoom/scaling delta mismatches for drag + resize interactions by moving pointer-delta math into the correct local coordinate space.
  • Updated resizer drag flow so drag-phase transforms/snapping are committed to current rect state during drag, which keeps handles aligned with snapped geometry before release.
  • Updated window-to-resizer syncing so handle positions follow full window rect changes (x, y, width, height) and use the current window rect for external repositioning.
  • Added validator heartbeat coverage for:
    • scaled drag behavior
    • drag-phase snapping behavior
    • window handle updates during snap drag and external window movement
  • Fixed validator source separation so published mode does not accidentally resolve nested imports back to workspace packages.

Result: published and workspace routes now show meaningful behavioral differences when package versions differ, and interaction fidelity under zoom/scale is consistent.