Derive image dimensions from terminal height instead of width. This better
reflects common portrait image viewing on portrait-ish terminal heights, and
guarantees pixelWidth === width * CELL_WIDTH by back-computing char width
from the pixel target — eliminating rounding gaps between the placeholder
Box and the actual Kitty image.
Also remove the now-unused `imageHeight` prop from ImageBox.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
KittyImage now uses fs.writeSync(process.stdout.fd) for all Kitty protocol
sequences (transmit, placement, deletion) instead of Ink's stdout.write,
preventing conflicts with Ink's screen refresh cycle inside Codev's TUI.
Also adds 'term.includes("ghostty")' to detectTerminalCaps() to recognize
Kitty support when running inside tmux with TERM=xterm-ghostty.
Co-Authored-By: Claude Big Pickle <noreply@anthropic.com>
feat: pass pixelWidth/pixelHeight from Image props to Kitty renderer
Previously the test computed accurate pixel dimensions from the original
image's aspect ratio, but the prop chain never forwarded them through
ImageComponentProps -> ImageRenderer -> KittyImage -> useImage, so
KittyImage always computed pixels from resolved chars × cell size (losing
aspect ratio information). Now the full chain forwards pixelWidth/
pixelHeight as overrides, letting the test control exact pixel scaling
while width/height still drive Ink layout and Kitty placement bounds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: reduce blank rows below Kitty images by using placement c=/r= bounds
Kitty placement now passes resolved character dimensions (charWidth,
charHeight) to limit the rendered image area. ImageBox uses pixel-derived
charHeight when loaded to avoid reserving too many Yoga rows.
LocalPicture.test.tsx computes pixelWidth/pixelHeight separately from
character dimensions for correct scaling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
refactor: integrate ink-picture as source directory
- Move ink-picture dependencies from file: reference to direct source integration
- Remove ink-picture's own node_modules, build, package.json, tsconfig.json, biome.json
- Update all ink-picture imports to use src/ink-picture path alias
- Add ink-picture path alias to tsconfig.json
- Add is-unicode-supported, iterm2-version, jimp, node-fetch, sixel as direct deps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>