Skip to content

v0.1.0

Latest

Choose a tag to compare

@clubanderson clubanderson released this 23 Oct 15:02
· 21 commits to main since this release
cbb92ac

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

Full Changelog: https://github.com/hivecommons/hotshot/commits/v0.1.0