-
-
Notifications
You must be signed in to change notification settings - Fork 36
feat: add osd-flash for screenshot indicators #322
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
sassman
wants to merge
40
commits into
main
Choose a base branch
from
feat/osd-flash-for-screenshots
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
…tors - also restructure threading and messaging so that we can broadcast events between threads (e.g. screenshots) Signed-off-by: Sven Kanoldt <[email protected]>
Enable cleaner architecture by splitting into workspace with skylight-osd crate for on-screen display functionality.
Signed-off-by: Sven Kanoldt <[email protected]>
- also add a README.md explaining a quickstart and the API and the examples - fix glitch with one particular but random white border showing up Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
…new abstraction Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
…se backend internals in the prelude module Signed-off-by: Sven Kanoldt <[email protected]>
- Add layout module (Padding, Margin, Border, BoxModel) - Add style module (Paint, TextStyle) - Add background() and corner_radius() to OsdFlashBuilder - Add examples: battery, equalizer, radar, sierpinski - Fix canvas trait to use ref parameters - Fix content bounds and center positioning
- Add a keyframe based API to the OsdWindowBuilder - interpolates numerical values of color and scale between the phases of keyframes - has change detection based on object order in the keyframe "drawing" - based on the the architecture at `.planning/osd-flash-animation-architecture.md` the documentation is on a module level at `crates/osd-flash/src/animation/mod.rs` - Add a pulsing animation example (crates/osd-flash/examples/recording_indicator_pulse.rs) - todo: there is a small flickering, so we explore if double buffering from CALayer might help us
Add `osd-flash-indicator` feature flag (enabled by default) that: - Uses dual cfg guard (target_os + feature) for proper platform handling - Falls back to NoopPresenter when disabled or on non-macOS - Removes osd-flash from dependency tree when disabled This provides a rollback strategy if OSD issues arise: cargo build --release --no-default-features Also adds --no-default-features CI testing to verify rollback path.
… animations Signed-off-by: Sven Kanoldt <[email protected]>
…ngs for the core-animation examples Signed-off-by: Sven Kanoldt <[email protected]>
- we are just about to overhaul osd-flash and simplify it greatly Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Tests failed on CI because the stop timer started before capture began. On slow CI machines, timeout expired before all frames were captured. TestApi now sends Stop when the last frame is returned, removing timing dependency entirely.
- Remove duplicate show_recording_indicator() call in presenter - Move RecordingStarted event from countdown loop to fire once after countdown
…rate to objc2- crates for t-rec Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Signed-off-by: Sven Kanoldt <[email protected]>
Replace anyhow with custom Error enum for better API stability: - Add Error::NotOnMainThread for thread safety violations - Add Error::NoScreenAvailable for missing display - Replace panics with proper error propagation in apply_position
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds on-screen display (OSD) flash indicators for visual feedback during recording:
crates/osd-flashcrate with GPU-accelerated animations via Core Animationosd-flash-indicator(disabled by default)Dependencies
Changes
crates/osd-flash/- New OSD flash librarycrates/t-rec/- Integrationosd-flash-indicatorfeature flagTest plan
cargo buildworkscargo build --features osd-flash-indicatorworks