-
Incorporate low-level window configurations:
1- Use
SetPropW()
from the Windows API to prevent Shell's fullscreen auto-detection and ensure taskbar z-order maintains its position even when the window occupies the entire screen.2- Use
SetWindowLongPtrA()
from the Windows API to add theWS_EX_TOOLWINDOW
extended style to the Tauri window. This prevents videos or streams from pausing when a window covers the entire screen.3- Using Windows API disable window opening/closing transitions for the region selection window.
-
While recording remove the crosshair at the center.
-
Handle errors properly (eg. hotkey register conflict)
-
For video capture force height and width region selection area to snap to even numbers (because YUV420 pixel format does not offer precise dimensions).
-
Implement default values for input fields in the settings, ensuring a seamless user experience for first-time users.
- Encode raw frames into H264 data.
- Mux the H264 data to mp4.
- Implement audio capture.
- Implement persistent settings (utilize tauri-plugin-store for persistent key value storage).
- Implement customizable hotkeys (video capture Start/Stop, screenshot and quickshot).
- Implement a recording controls that's always below the region selection area that provides the option to mute/unmute audio, button to select the entire screen and a record button.
- Implement a recording widget that shows elapsed time and a button to stop recording (escape hotkey should also stop recording by default)
- Implement an option to enable snapping video region selection area to common resolutions (144p, 240p, 360p).
- Support hardware encoding NVEnc and AMF (Nvidia/AMD GPU encoding).
- Implement an option to send image capture to Excalidraw before cropping for sketching.
- Show height and width of selected area.
- Implement backend integration to process and store the selected output path from the frontend file/directory picker dialog.
- Implement backend integration to control encoder settings from front-end (CRF, Bitrate, Preset, Tune, Profile, and enable Fast Start for playback).
- Optimize screen capture via DXGI Desktop Duplication API for performance (minimize frame skip).
- Optimize frame encoding for performance (minimize unnecessary operations).
- Unspaghettify codebase (code refactoring).
- Refactor thread spawning, ensuring complete async integration, addressing synchronization, errors, blocking, concurrency, and back-pressure.
- Improve the frontend UI design (HTML/JS/CSS)
- Update the color scheme to support both light and dark modes, aligning with OS preferences and enhancing readability and contrast.
- Redesign the navigation bar for a more intuitive user experience, emphasizing key features.
- Reorganize the overall layout to prioritize user flow and ease of access to main features.
- Streamline styles and UI components for consistency across all pages/modules.
- Introduce new input fields as necessary, ensuring they're intuitive and user-friendly. Coordinate with backend for integration, and if corresponding functionality doesn't exist, implement it.
- Implement interactive tooltips or helper guides for new input fields to assist users.
- Add inline comments throughout the codebase to clarify function, method purposes, highlighting any complexities or nuances.
- Create a developer's guide detailing the architecture, data flow, and best practices for extending or modifying the application.
- Draft a comprehensive user manual or FAQ for the application, covering installation, basic usage, troubleshooting, and advanced features.