Skip to content

Feat/window aware mascot - #42

Merged
AlleyBo55 merged 3 commits into
masterfrom
feat/window-aware-mascot
Oct 27, 2026
Merged

AlleyBo55 merged 3 commits into
masterfrom
feat/window-aware-mascot

Conversation

@AlleyBo55

Copy link
Copy Markdown
Owner

No description provided.

…seline

The two art sets disagreed. Emotion and action frames drew Doraemon up to
20% smaller than the Shimeji frames and 6-7 px above the floor, so every
reaction shrank and lifted him. Ceiling frames were 128x184 and got
squashed into 128x128, eleven animations were one repeated frame, and many
sets were pixel copies of each other.

scripts/sprites/build-sprites.mjs regenerates all 218 frames the app uses
from the pristine 1x sources now kept in art/dora-sprites:

- 256x256 RGBA masters shown at 128 CSS px (Lanczos, light unsharp)
- one Doraemon scale across both sets, measured per set against the
  Shimeji frame it was traced from
- grounded groups share one shift that puts the feet on row 255
- ceiling frames cropped to their content instead of squashed
- a dark outline on the generated frames to match the Shimeji line work
- breathing, chewing or bobbing for the eleven static sets
- small procedural manga symbols on 27 sets so look-alikes differ
- the unused Anywhere Door frames (shime38-50) normalized for reuse

Filenames and frame counts are unchanged. The folder grows from 8.9 MB to
13 MB because the masters have four times the pixels.
The engine's world was one rectangle per display. It now also knows every
on-screen app window, front to back, and turns the visible stretch of each
top edge into a ledge:

- falling onto a ledge lands him on it; at the end of one he turns back or
  steps off
- he rides the window he stands on, and falls when it closes, minimises or
  gets covered
- walking into a window's side can start a climb that ends on its top
- some behaviour choices become trips to another window: a jump to low,
  close ledges, otherwise the Take-copter or the new Anywhere Door
  animation
- a held reaction no longer freezes him mid-air; it waits for the landing

Window lists come from the Rust companion, which gains a window probe:
CGWindowListCopyWindowInfo on macOS (bounds only, so no Screen Recording
permission), EnumWindows with DWM frame bounds on Windows, and EWMH
properties on X11. It polls every 150 ms, every 40 ms while windows move,
and only reports changes.

- Kiro desktop mode: Rust pushes snapshots into the companion webview.
- Desktop app: main spawns the binary with --window-probe, maps its native
  space to Electron DIPs and forwards snapshots over IPC. electron-builder
  bundles it from kiro-extension/bin, and the dist scripts build it first.
- The renderer now subtracts the overlay origin when drawing, so the sprite
  sits where the engine thinks he is even when the overlay does not start
  at 0,0 (macOS places it below the menu bar).

Verified on macOS: in both hosts he landed on a test window and stood on
its top edge to the pixel. The Windows and X11 probes only compile so far.
…nstall

- top of the GitHub README: Open VSX badges and a three-click install
- new sections on window walking and the rebuilt sprites in both READMEs
- size figures updated for the 826 KB companion and the 13 MB download
- known limits for the untested Windows and X11 window probes
@AlleyBo55
AlleyBo55 merged commit 85d2c80 into master Oct 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant