Repository navigation
What's Changed
- 🐛 fix: expand tilde in com.apple.screencapture location by @clubanderson in #2
- 🐛 fix: request Apple Events consent properly; honest injection notifications by @clubanderson in #3
- 🌱 Sync workflows from kubestellar/infra by @clubanderson in #1
- 🐛 fix: make injected paths work in GitHub Copilot CLI, not just Claude Code by @clubanderson in #4
- 🐛 fix: restore bracketed path injection for Claude Code, keep Copilot CLI clipboard support by @clubanderson in #5
- 🐛 fix: inject the path format the target CLI understands (Claude vs Copilot) by @clubanderson in #6
- ✨ feat: add Linux and Windows versions of hotshot with setup instructions and installers by @clubanderson in #7
- Rebrand: kubestellar → hivecommons by @clubanderson in #8
- 🔁 rebrand: bundle identifier → io.hivecommons.hotshot by @clubanderson in #9
- ci: use hivecommons/infra reusable PR verifier; fix LICENSE attribution by @clubanderson in #10
- 🐛 ci: grant packages:read to pr-verifier caller by @clubanderson in #11
- 🐛 fix: --help in linux scripts leaked the set line into help output by @hivecommons-hive[bot] in #19
- 🌱 test: add hermetic Linux capture suite by @hivecommons-hive[bot] in #15
- 🐛 fix: close hotshot orgsweep findings by @clubanderson in #22
- 🌱 test: add macOS and Windows unit suites by @clubanderson in #26
- test: Wayland e2e coverage for linux/hotshot-capture.sh [quality] by @hivecommons-hive[bot] in #23
- docs: sync CONTRIBUTING.md check commands with CI [guide] by @hivecommons-hive[bot] in #28
- fix: refuse to type control-character filenames into the terminal (keystroke injection) [sec-check] by @hivecommons-hive[bot] in #30
- 🐛 fix: grant reusable workflow permissions by @clubanderson in #32
- test: hermetic unit suite for linux/install.sh (42 assertions) [quality] by @hivecommons-hive[bot] in #34
- 🌱 chore: add OSPS secret-safe ignore patterns by @clubanderson in #36
- 🐛 fix: run installer tests in CI by @clubanderson in #35
- test: linux capture clipboard degradation ladder + injection-failure paths [quality] by @hivecommons-hive[bot] in #38
- 🌱 hotshot: extract screenshot decisions and roadmap by @clubanderson in #40
- fix: add Dependabot config for github-actions [ci-maintainer] by @hivecommons-hive[bot] in #49
- 🐛 fix: refuse to type control-character paths on Linux and Windows (macOS parity) by @hivecommons-hive[bot] in #44
- [quality] cover scripts/bundle.sh: bundle layout, Info.plist keys, --install kill/relaunch (Refs #45) by @hivecommons-hive[bot] in #46
- [quality] cover windows/install.ps1: install, shortcut+hotkey, uninstall, missing-source paths (0 -> 9 Pester tests) by @hivecommons-hive[bot] in #42
- [scanner] quality: extract ttyScript for testability by @hivecommons-hive[bot] in #52
- fix: never auto-paste when clipboard enrichment fails; decode JPEG clipboards [sec-check] by @hivecommons-hive[bot] in #51
- Bump actions/checkout from 4.2.2 to 7.0.1 in the actions group across 1 directory by @dependabot[bot] in #53
- [quality] cover HotshotCore edge cases: token matching, age boundary, missing dirs by @hivecommons-hive[bot] in #57
- refactor: dedupe terminal target seeding logic [architect] by @hivecommons-hive[bot] in #62
- [quality] cover Get-TargetCli edge cases: lookalikes, cycles, empty process list by @hivecommons-hive[bot] in #64
- ci: wire bundle script checks into CI [scanner] by @hivecommons-hive[bot] in #69
- [scanner] 🌱 ci: enable code coverage in swift by @hivecommons-hive[bot] in #70
- refactor: consolidate UserDefaults boolean preferences [scanner] by @hivecommons-hive[bot] in #71
- ci: restrict copilot-automation triggers to trusted contexts by @hivecommons-hive[bot] in #72
- 🌱 ci: close linked issues when PRs merge to non-default branches by @clubanderson in #73
- test: extract injection AppleScript builders into HotshotCore and cover them by @hivecommons-hive[bot] in #74
- refactor: extract pure CLI/injection decisions from HotshotApp into HotshotCore by @hivecommons-hive[bot] in #75
- fix: bound and redact local diagnostic logging by @hivecommons-hive[bot] in #78
- refactor: extract ClipboardWatcher from HotshotApp by @hivecommons-hive[bot] in #80
- refactor: extract TerminalInjector from HotshotApp by @hivecommons-hive[bot] in #81
- refactor: extract ScreenshotWatcher from HotshotApp and move pure screenshot/clipboard decisions into HotshotCore by @hivecommons-hive[bot] in #85
- fix: only reuse clipboard paths hotshot itself wrote when enriching by @hivecommons-hive[bot] in #87
- ci: gate HotshotCore coverage at a 90% line floor by @hivecommons-hive[bot] in #97
- fix(clipboard): log domain+code for clipboard.save_failed instead of the raw error by @hivecommons-hive[bot] in #96
- test: cover X11 region mode and tool-failure branches in hotshot-capture.sh by @hivecommons-hive[bot] in #95
- fix: never inject macOS's hidden in-progress .Screenshot dotfile by @hivecommons-hive[bot] in #93
- fix: report manual menu injection failures instead of always claiming success by @hivecommons-hive[bot] in #92
- refactor: extract completeInjection helper to dedupe focus/notify blocks by @hivecommons-hive[bot] in #99
- docs: document HOTSHOT_VERBOSE_LOGGING in linux and windows READMEs by @hivecommons-hive[bot] in #102
- ci: do not cancel in-progress CI runs on main pushes by @hivecommons-hive[bot] in #103
- ci: add job timeouts and pin PowerShell module versions by @hivecommons-hive[bot] in #105
- fix: refuse shell metacharacters in the bracketed injection fallback by @hivecommons-hive[bot] in #109
- test(app): move pasteboard/watcher/injector shells into HotshotApp and gate coverage per module by @hivecommons-hive[bot] in #110
- test(app): inject a script runner into TerminalInjector and cover the AppleScript paths by @hivecommons-hive[bot] in #112
- ci: retry Install-Module on transient PSGallery failures by @hivecommons-hive[bot] in #114
- [quality] ci.yml: raise the HotshotApp coverage floor from 60 to 90 by @hivecommons-hive[bot] in #116
- docs: sync CONTRIBUTING.md command list with ci.yml by @hivecommons-hive[bot] in #118
- fix(windows): install HotshotCapture.psm1 alongside hotshot-capture.ps1 by @hivecommons-hive[bot] in #121
- refactor(app): extract InjectionCoordinator from app delegate and test it by @hivecommons-hive[bot] in #122
- docs: describe actual Swift package layout in README by @hivecommons-hive[bot] in #124
- fix(core): refuse '!' in the bracketed injection fallback by @hivecommons-hive[bot] in #126
- docs(runbooks): add injection failure triage runbook by @hivecommons-hive[bot] in #127
- refactor(core): split HotshotCore.swift into per-concern files by @Danathar in #131
- test(windows): cover hotshot-capture.ps1 orchestration with Pester by @hivecommons-hive[bot] in #132
- ci: scope GITHUB_TOKEN permissions for copilot-dco workflow by @hivecommons-hive[bot] in #135
- ci: measure Pester code coverage for HotshotCapture.psm1 by @hivecommons-hive[bot] in #134
- fix: route remaining NSLog diagnostics through diagnosticLine by @hivecommons-hive[bot] in #137
- test(core): cover macOSScreenshotLocation lookup and Desktop fallback by @hivecommons-hive[bot] in #140
- ci: build and validate the release app bundle by @mendezr in #141
- test(windows): cover Get-TargetCli rows with null Name/CommandLine by @hivecommons-hive[bot] in #142
- ci: ratchet coverage floors to measured main by @hivecommons-hive[bot] in #145
- test: extract menu-state and target-tracking logic and cover it by @hivecommons-hive[bot] in #146
- fix(core): skip quarantined downloads in the screenshot watcher by @hivecommons-hive[bot] in #148
- docs: fix broken OpenCode link in README by @hivecommons-hive[bot] in #150
- docs: document scripts/bundle.sh app bundle build by @hivecommons-hive[bot] in #152
- ci: add line-coverage floor for bash suites by @hivecommons-hive[bot] in #154
- ci: wire scripts/shell-coverage.sh into the workflow by @hivecommons-hive[bot] in #155
- docs(runbooks): add release rollback runbook by @hivecommons-hive[bot] in #156
- ci: fix shell-coverage.sh hit parser for ':' no-op commands and guard the extractor by @hivecommons-hive[bot] in #160
- test(linux): drive interpreter-wrapped claude through the capture script end to end by @hivecommons-hive[bot] in #159
- test(windows): drive hotshot-capture.ps1 end to end in a child pwsh by @hivecommons-hive[bot] in #162
- ci: fall back to Install-PSResource when PowerShellGet cannot find a pinned module by @hivecommons-hive[bot] in #163
- docs(runbooks): add postmortem template by @hivecommons-hive[bot] in #164
- test(app): cover ScreenshotWatcher's live DispatchSource and debounce path by @hivecommons-hive[bot] in #165
- fix: respect focus-restore outcome before typing and make screenshot filenames collision-safe by @hivecommons-hive[bot] in #168
- fix: surface NSPasteboard.writeObjects failure in ClipboardWatcher by @hivecommons-hive[bot] in #170
- ci: ratchet HotshotApp Swift coverage floor to 95 by @hivecommons-hive[bot] in #172
- fix(linux): refuse shell metacharacters in bracketed path and resolve Pictures via xdg-user-dir by @hivecommons-hive[bot] in #175
- docs: link runbooks from README and CONTRIBUTING by @hivecommons-hive[bot] in #177
- fix(windows): refuse shell metacharacters in the bracketed injection fallback by @hivecommons-hive[bot] in #179
- test(linux): cover XDG_PICTURES_DIR and xdg-user-dir SHOT_DIR resolution end-to-end by @hivecommons-hive[bot] in #181
- fix(windows): quote plain-form typed path when it contains shell metacharacters by @hivecommons-hive[bot] in #183
- fix(windows): refuse $ and backtick in the plain-form typed path by @hivecommons-hive[bot] in #185
- fix: label a literal-quote plain-form refusal as shell_metachars_refused by @hivecommons-hive[bot] in #187
- fix(linux): label a control-char path control_chars_refused before the metachar check by @hivecommons-hive[bot] in #189
- docs: document the CI coverage floors and scripts/shell-coverage.sh in CONTRIBUTING by @hivecommons-hive[bot] in #193
- refactor: move menu wiring decisions from main.swift into HotshotApp with tests by @hivecommons-hive[bot] in #195
- fix: normalize relative and ~ screenshot directories on Linux and Windows by @hivecommons-hive[bot] in #194
- docs: cover remaining injection and clipboard diagnostic events in runbook by @hivecommons-hive[bot] in #196
- test(linux): cover the bare ~ --dir arm of normalize_shot_dir end-to-end by @hivecommons-hive[bot] in #197
- fix(linux): refuse to type when focus moved during a Wayland capture on sway/hyprland by @hivecommons-hive[bot] in #199
- test(linux): pin fail-closed Wayland focus check when the post-capture IPC query fails by @hivecommons-hive[bot] in #200
- build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 in the actions group by @dependabot[bot] in #201
- test: pin every MenuAction selector to an @objc handler in main.swift by @hivecommons-hive[bot] in #203
- ci: upload Swift coverage report as a CI artifact by @hivecommons-hive[bot] in #205
- ci: export Swift lcov coverage and refresh Pester coverage comment by @hivecommons-hive[bot] in #206
- fix: trust only hotshot's own canonical enriched clipboard path before a Ctrl-V paste by @hivecommons-hive[bot] in #208
- fix: restart the screenshot watcher when the screenshot folder changes by @hivecommons-hive[bot] in #210
- test: pin that restarting the screenshot watcher rebinds to the new folder by @hivecommons-hive[bot] in #211
- docs: add the screenshot.no_terminal event to the injection runbook by @hivecommons-hive[bot] in #212
- test: add a launch smoke for Hotshot.app's delegate by @hivecommons-hive[bot] in #214
- docs: add terminal.tty_unknown and screenshot.location_lookup_failed to the injection runbook by @hivecommons-hive[bot] in #215
- test: guard runbook event names against the diagnostics the binaries emit by @hivecommons-hive[bot] in #217
- fix: pin the screenshot watcher's snapshot to the folder its fd watches by @hivecommons-hive[bot] in #219
- fix(install): canonicalise --prefix to an absolute path by @hivecommons-hive[bot] in #221
- test(install): trace the --prefix canonicalisation cases and cover bare ~ and trailing slash by @hivecommons-hive[bot] in #222
- test(linux): assign condition results before passing them to check in the capture suite by @hivecommons-hive[bot] in #226
- ci: include runbook-events script in shellcheck by @hivecommons-hive[bot] in #228
- test(smoke): make the sleep stub yield real time so the healthy case stops flaking under coverage by @hivecommons-hive[bot] in #230
- docs: link GitHub Copilot CLI to github/copilot-cli by @hivecommons-hive[bot] in #224
- test(windows): run the module, entry script and installer under Windows PowerShell 5.1 by @hivecommons-hive[bot] in #234
- fix(install): honor prefix in hotkey hints by @arteeh in #233
- fix(install): shell-quote the GNOME hotkey command so prefixes with spaces launch by @hivecommons-hive[bot] in #231
- fix(linux): fall back to ~/Pictures when xdg-user-dir PICTURES is unset by @hivecommons-hive[bot] in #238
- ci(shell-coverage): guard the line classifier and floor logic; close <<- heredocs by @hivecommons-hive[bot] in #240
- fix(app): read subprocess output before waitUntilExit to avoid pipe deadlock (#241) by @hivecommons-hive[bot] in #242
- docs: add SECURITY.md with the private reporting channel by @hivecommons-hive[bot] in #236
- test: read defaults output before waitUntilExit in the test helper by @hivecommons-hive[bot] in #244
- test: gate subprocess pipe drain-before-wait ordering by @hivecommons-hive[bot] in #246
- fix(watch): measure the stale-file window from when the capture became visible by @hivecommons-hive[bot] in #248
- docs: add issue forms for bugs, terminal/CLI support requests and features by @hivecommons-hive[bot] in #252
- fix(app): refuse System Events injection when the terminal is not frontmost by @hivecommons-hive[bot] in #254
- test: cover configured macOS screenshot location by @arteeh in #250
- 🌱 Add OWNERS file by @clubanderson in #256
- test: pin issue forms and OWNERS to the code they describe by @hivecommons-hive[bot] in #258
- fix: validate focused accessibility window before casting by @mendezr in #260
- test: guard focused accessibility window type against regressions by @mrbobbytables in #262
- feat(linux): add install.sh --uninstall mirroring install.ps1 -Uninstall by @hivecommons-hive[bot] in #264
- 🐛 fix: exercise the JPEG rung of ClipboardWatcher.pngData with an injectable reader by @hivecommons-hive[bot] in #266
- 🐛 fix(target): fall back to the app name when the focused window title is empty by @hivecommons-hive[bot] in #268
- test: cover appleScriptRunner success mapping and ClipboardWatcher timer tick by @hivecommons-hive[bot] in #270
- 📖 docs: add a Contributing & community section to the README by @hivecommons-hive[bot] in #275
- 📖 docs: add a pull request template that surfaces CONTRIBUTING requirements by @hivecommons-hive[bot] in #274
- 🐛 fix(target): drop the tracked terminal when it quits instead of relaunching it by @hivecommons-hive[bot] in #277
- docs: prepare v0.1.0 release notes and install instructions by @hivecommons-hive[bot] in #279
New Contributors
- @clubanderson made their first contribution in #2
- @hivecommons-hive[bot] made their first contribution in #19
- @dependabot[bot] made their first contribution in #53
- @Danathar made their first contribution in #131
- @mendezr made their first contribution in #141
- @arteeh made their first contribution in #233
- @mrbobbytables made their first contribution in #262
Full Changelog: https://github.com/hivecommons/hotshot/commits/v0.1.0