Skip to content

v0.3.0 Wave 13: projector CSS filter panel (invert, brightness, contrast, saturation, sepia, hue-rotate) - #12

Merged
900Labs merged 5 commits into
masterfrom
wave-13/projector-filters
Jul 29, 2026
Merged

900Labs merged 5 commits into
masterfrom
wave-13/projector-filters

Conversation

@900Labs

@900Labs 900Labs commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Summary

Wave 13 adds a projector compensation filter panel to the presenter. Six CSS filters (invert, brightness, contrast, saturation, sepia, hue-rotate) apply to the audience window in real time, with debounced persistence to the deck.

What changed

Model (slides-core)

  • ProjectorFilters struct (invert, brightness, contrast, saturation, sepia, hue_rotate) added to PresenterSettings with #[serde(default)]. Old decks default to neutral (no filtering).

Desktop (apps/desktop/)

  • Filter toggle button in the presenter toolbar opens a popover with 6 slider/checkbox controls + a reset button.
  • CSS filter: string applied to the audience window's slide container via style:filter. Only non-default properties included (e.g. brightness(1) omitted).
  • Slider changes debounced into a single set_presenter_settings call.
  • ProjectorFiltersDto added to the snapshot DTOs.

Test results

  • 302 workspace tests pass.
  • npm run check (svelte-check): 0 errors, 0 warnings.
  • scripts/verify-local.sh: green. scripts/verify-public-release.sh: green.

What a reviewer should verify

  1. Filter application — the CSS string only includes non-default properties.
  2. Persistence — settings persist on the deck via SetPresenterSettings.
  3. No XSS — no new @html in the filter panel code.

Remaining v0.3.0 items

  • ODP import/export
  • macOS .app release (CI/CD)

@900Labs
900Labs merged commit bb8555c into master Jul 29, 2026
8 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