feat(companion): render Sagi 50% larger and crop the artwork's empty padding

SAGI_SIZE (the draggable button's real footprint) and SagiAvatar's default
`size` both go 60 -> 90, and the viewBox drops the exporter's padded
`0 0 1280 1280` canvas for a tight window on the art: the measured bbox over
every path is x 331..1114 / y 173..1044, padded out to a square and raised to
y 106 so the zzz / bang / sparkle mood overlays stay inside and the box keeps
the 1:1 aspect of the square width/height.

Path data is not rescaled, so MAX_PUPIL_SHIFT and the eye/mood
transform-origins in sagi.css stay valid in the original 1280-unit space.
This commit is contained in:
2026-08-20 08:34:18 +07:00
parent ce2797b01f
commit 7c2992fdc8
3 changed files with 16 additions and 5 deletions
@@ -74,7 +74,7 @@ import { sagiPrefs, type SagiPos } from "./prefs";
import type { PointerEvent as ReactPointerEvent } from "react";
// Avatar footprint + edge gap, in px. SIZE matches SagiAvatar's default size.
export const SAGI_SIZE = 60;
export const SAGI_SIZE = 90;
export const SAGI_MARGIN = 16;
const DRAG_THRESHOLD = 5;