75 Commits

Author SHA1 Message Date
DJ 472152801f fix(common): add missing appearance properties and fix Revealer content detection
Add default values for sizes.elevationMargin, font.family.numbers, and
font.variableAxes.main to prevent undefined property errors when these
aren't specified in user config.

Fix Revealer widget using contentChildren instead of children, which
caused content items to not be detected properly.
2025-12-31 19:07:20 -05:00
DJ 114f029638 fix(regionSelector): wrap notify command in subshell braces
Fix shell command execution in snip-to-clipboard pipeline where the
notify-send command could fail silently due to improper command grouping.
2025-12-31 18:55:25 -05:00
DJ 9eb5fb32e1 Add related projects to README.md 2025-12-20 21:31:44 -05:00
DJ ab7c3e643c fix(appearance): correctly load matugen colors from JSON file
- Add QtCore import for StandardPaths API
- Fix defaultMatugenPath to use writableLocation() and strip file:// prefix
- Change matugenFile.text to text() (it's a function, not property)
- Add onFileChanged: reload() for live color updates when wallpaper changes

Previously, hypr-lens was always using hardcoded fallback colors because
FileView.text was being accessed as a property instead of called as a
function, resulting in empty content.
2025-12-20 21:22:10 -05:00
DJ aa839445dd docs(readme): center badges in header
Wrap badge images in centered paragraph to align with the rest of the
header elements (logo, title, tagline, nav links).
2025-12-20 17:14:10 -05:00
DJ f79b8ff409 Update README.md 2025-12-20 17:02:58 -05:00
DJ c216760a9a Update README.md 2025-12-20 17:02:46 -05:00
DJ 4ac27e475c Update README.md 2025-12-20 17:01:28 -05:00
DJ a331c67fca docs(changelog): add v1.5.0 - developer setup and contributor docs 2025-12-20 12:53:51 -05:00
DJ 7b25fa0442 docs(readme): add Development link to nav 2025-12-20 12:37:03 -05:00
DJ 3446e3f619 chore: add dev-setup.sh for contributor workflow
Creates symlinks from install dirs to repo for live editing.
Also adds wiki/ to .gitignore for local wiki editing.
2025-12-20 12:36:48 -05:00
DJ e9f6a22c6e refactor(installer): remove dev-only symlink handling
Symlink detection was only relevant for development workflow.
Regular users always get files copied - this cleans up the code path.
2025-12-20 12:36:36 -05:00
DJ f4c3d5e7d3 fix(installer): handle symlinked install directories gracefully
Add symlink detection to prevent "same file" errors when QML modules
or scripts directories are symlinked to the repo (common for dev setups).

- Add is_symlink_to_source() helper function
- Skip copy operations when destination symlinks to source
- Show appropriate success message for symlinked directories
- Apply check to both install and update mode operations
2025-12-20 00:05:58 -05:00
DJ d02a2bbf99 Update CHANGELOG.md 2025-12-19 19:41:03 -05:00
DJ a1326070e2 fix(notifications): proper notify-send execution and consistent behavior
- Add & disown to notify-send for proper background execution
- Clean notification format: action as title, path as body
- Swappy now respects copyAlsoSaves setting (saves clipboard if true)
- Remove auto-save from swappy; clipboard-focused by default
- Consistent messaging: "Copied to clipboard" vs "Copied & saved"
2025-12-19 19:40:37 -05:00
DJ eb1c95dde1 docs(changelog): update notification feature with swappy watcher details 2025-12-19 18:42:48 -05:00
DJ 9dcd6fe4c4 feat(screenshots): instant swappy notifications with file watcher
- Add background file watcher that monitors for saves while swappy is open
- Notifications fire instantly when user clicks Save (not after close)
- Supports multiple saves - each triggers a notification
- Consistent notification format: "hypr-lens" title with message in body
- Watcher polls file mtime every 0.3s with minimal overhead
- Properly cleans up watcher process when swappy closes
2025-12-19 18:42:14 -05:00
DJ e3e9f4d134 feat(screenshots): add notifications for copy and save operations
Visual feedback via notify-send when screenshots are:
- Copied to clipboard
- Saved to disk (shows full path)
- Failed to save (error notification)

Swappy edit mode shows notification only when file is saved,
silent when user cancels or uses swappy's clipboard copy.
2025-12-19 18:30:20 -05:00
DJ 71a3c3ecdd docs(changelog): add code quality note to 1.4.0 2025-12-19 18:30:02 -05:00
DJ 52b5a1e5a4 refactor: extract save path helpers and remove obsolete JSONC handling
- Extract resolveSavePath() and buildSaveSetup() in SnipCommands.qml
  to eliminate duplicate save path logic between Copy and Edit commands
- Remove unnecessary sed JSONC comment stripping from record.sh since
  config format is now plain JSON
2025-12-19 18:20:28 -05:00
DJ 43ead1c508 docs(changelog): reorder versions to reverse chronological
Versions now display newest-first (1.4.0 → 1.0.0) following Keep a
Changelog convention. Added consistent separators between entries.
2025-12-19 18:16:33 -05:00
DJ c616efa0cc fix(screenshots): save to configured path with tilde expansion
Fixes #1 - Screenshots now properly save to disk when savePath is configured.

Changes:
- Changed config format from JSONC to JSON for reliable parsing
- Added tilde (~) expansion for all save paths
- Edit mode (swappy) now saves to configured savePath via -o flag
- Default paths: ~/Pictures/hypr-lens, ~/Videos/hypr-lens
- Added copyAlsoSaves option for users who want Copy to also save
- Copy mode (left-click) now clipboard-only by default
- Updated documentation and changelog

Closes #1
2025-12-19 18:12:08 -05:00
DJ 9c97ec1364 fix(region-selector): add missing services import for MonitorButton tooltip
- Add import "../../services" to access Translation singleton
- Simplify tooltip text to static string for clarity
2025-12-16 02:52:35 -05:00
DJ c53a7976b4 docs: clarify compatibility for other distros
Add note that NixOS, Fedora, and other distros can manually install
by handling dependencies themselves. The QML components are distro-agnostic,
only the installer script is Arch-centric.
2025-12-16 01:14:52 -05:00
DJ a1138a57c8 feat(region-selector): add right-click to edit on monitor buttons
Add ability to right-click monitor buttons in the region selector toolbar
to capture the full monitor and open swappy for editing, mirroring the
existing right-click behavior for region selection.

Changes:
- MonitorButton: add editRequested signal and altAction handler
- OptionsToolbar: add editFullMonitor signal propagation
- RegionSelection: add editFullMonitor() function, fix action override logic

Refactors included:
- Use enum keys in commandBuilders for self-documenting code
- Extract circle bounding box calculation to RegionDragState
2025-12-16 00:45:05 -05:00
sleepingsage 17734941d1 Update issue templates 2025-12-14 00:01:30 -05:00
sleepingsage 14024271f9 Remove Unreleased section from CHANGELOG
Removed 'Unreleased' section from CHANGELOG.
2025-12-09 20:25:46 -05:00
sleepingsage efc451832c Clean up CHANGELOG by removing version links
Removed unreleased version links from CHANGELOG.
2025-12-09 20:25:20 -05:00
sleepingsage c08b04a26c Fix formatting and update version headers in CHANGELOG 2025-12-09 20:24:45 -05:00
DJ c0abd5416b Update README.md 2025-12-09 20:21:08 -05:00
DJ 5c0b94eb58 Update README.md 2025-12-09 20:20:50 -05:00
DJ db30259587 Create CHANGELOG.md 2025-12-09 20:19:52 -05:00
sleepingsage 4faaa8d020 Update Stargazers chart colors in README.md 2025-12-09 16:26:39 -05:00
DJ 2ddce4faa7 Update hypr-lens.svg 2025-12-09 15:45:27 -05:00
sleepingsage 966845cf2a Replace image source in README.md 2025-12-09 15:10:28 -05:00
DJ 1fd38208f2 Create hypr-lens.svg 2025-12-09 15:09:42 -05:00
sleepingsage 66fdd6bada Update stargazers chart with new parameters 2025-12-09 11:36:41 -05:00
DJ 9780607878 chore: remove video assets from tracking (now on GitHub CDN) 2025-12-08 23:11:33 -05:00
DJ ba7052f748 Update .gitignore 2025-12-08 23:10:29 -05:00
DJ e69dd045fa Update .gitignore 2025-12-08 23:09:40 -05:00
sleepingsage 9e049e2c86 Replace demo links in README.md
Updated demo links in the README file.
2025-12-08 23:07:11 -05:00
DJ b69324f510 fix(assets): re-encode demo videos to H.264 for GitHub compatibility
HEVC/H.265 videos don't play on GitHub. Re-encoded to H.264 with
significant size reduction (7MB -> 432KB for largest file).
2025-12-08 23:05:58 -05:00
sleepingsage fe28ee4e63 Update demo links in README.md
Updated demo links in the README file.
2025-12-08 23:04:36 -05:00
sleepingsage 0043e325d5 Clean up README by removing unnecessary content
Removed shield images and demo links from README.
2025-12-08 23:00:09 -05:00
DJ 4570886402 Changed to web friendly name 2025-12-08 22:58:08 -05:00
DJ 72f351c655 Fixed video format 2025-12-08 22:55:42 -05:00
DJ 50ff4807b2 Update Timeline 1.mov 2025-12-08 22:55:42 -05:00
sleepingsage 7ee41fee9d Add demo section with to README
Updated the README to include a demo section with links to screenshots.
2025-12-08 22:43:00 -05:00
DJ c2eea3fbfe Add video demo assets 2025-12-08 22:34:57 -05:00
DJ 5e6beeb01b refactor(region-selector): extract utilities and reduce duplication
- Create ActionConfig.qml singleton for centralized action metadata
- Create RegionUtils.js with parsing, clamping, and sorting utilities
- Extract MonitorButton.qml component for reusability
- Consolidate 5 action methods into single openWithAction()
- Replace switch statements with table-driven command building
- Improve control animations using State/Transition pattern

Reduces ~70 lines of duplicated code while improving maintainability.
2025-12-08 21:45:24 -05:00