Skip to content

Version 2.0

Choose a tag to compare

@Rogala Rogala released this 12 Apr 19:58
· 1 commit to main since this release

New features

Loupe — magnifier that follows the cursor, active only with a single image. Key 8.

Difference mode — overlays two images using CSS difference blend. Pixels that match go black; differences glow. Key D.

Tile comparison — splits the shared image zone into a 2×2 / 3×3 / 4×4 checkerboard. Each tile shows either L or R image; hovering a tile fades in the opposite image at 55% opacity so you can see both at once. Key Q, popup for grid size.

Annotation — freehand pencil layer drawn on a separate canvas on top of media. Choose colour and brush size. Clears automatically when deactivated. Key A.

Save screen — exports the current view (all media + annotation if active) as a timestamped PNG. Key S.

Behaviour changes

  • Mutual exclusion — Split view, Difference, Tile and Annotation disable each other; only one mode can be active at a time.
  • Loupe is restricted to single-media view and is incompatible with Annotation.
  • Annotation auto-disables during video playback.
  • Zoom via scroll now works even when the annotation canvas overlay is present.
  • Tile button — first click activates and opens the grid-size popup; second click deactivates.
  • H key toggles Help open and closed (second press closes).
  • Media limit capped at 32 files.

Renamed

Old New Key
Import Open O
Export view Save screen S

I18N

  • Locales restructured: shared keys (k_playback, k_view, etc.) resolve at runtime so each locale file has no duplicated strings.
  • APP_NAME, APP_VERSION, APP_FOOT extracted as constants — one place to update.
  • Help modal split into two columns (Playback left, View + New + Other right).
  • Help shown automatically on first visit via localStorage.

Bug fixes

  • Drag-and-drop onto the canvas now works for all file types (p5 passes MIME strings; normalised to 'video'/'image' before use).
  • Seek slider no longer resets isSeeking on mouseup before videos finish seeking; timecode updates correctly when paused.
  • windowResized stub removed; canvas resizing is handled entirely by ResizeObserver.
  • Dead variables isPanning, lastMX, lastMY removed.
  • Export canvas now uses a stable id="p5-canvas" so the annotation canvas is never captured instead of the media canvas.