Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3304 commits
Select commit Hold shift + click to select a range
f94a274
Updated Sparkle from 2.1.0 to 2.3.2
latenitefilms Mar 2, 2023
1f38367
Updated SocketRocket from 0.5.1 to 0.6.0
latenitefilms Mar 2, 2023
6e4d81b
Update Sentry from 7.10.0 to 8.2.0
latenitefilms Mar 2, 2023
7e2666f
Roll back Sparkle to v2.1.0 and Sentry to v7.10.0
latenitefilms Mar 2, 2023
1223771
Add support for Stream Deck Pedal
latenitefilms Mar 2, 2023
3be7ff4
Merge branch 'master' into issue-3399-stream-deck-pedal
latenitefilms Mar 2, 2023
7339f20
Merge pull request #84 from latenitefilms/issue-3399-stream-deck-pedal
latenitefilms Mar 2, 2023
22d9ec2
Add hs.streamdeck:imageSize()
cmsj Mar 2, 2023
c9e50d3
Revert Sentry and Sparkle updates
cmsj Mar 2, 2023
44171fc
Merge remote-tracking branch 'upstream/master'
latenitefilms Mar 2, 2023
aac5d6d
Removed unnecessary files after merge
latenitefilms Mar 2, 2023
1393c85
Preparing for 1.4.17-beta.1
latenitefilms Mar 2, 2023
01a8cbc
Add support for Stream Deck Pedal
latenitefilms Mar 2, 2023
1688862
fix windowHints bugs with utf8 chars
twio142 Jun 21, 2022
c689480
Merge branch 'master' into fasterWindowSwitching
cmsj Mar 6, 2023
e0e8d95
Merge pull request #3237 from kjslag/fasterWindowSwitching
cmsj Mar 6, 2023
d7a1fe7
Prevent hs.httpserver header generation from running on every build i…
cmsj Mar 6, 2023
7a09069
Update Sparkle
cmsj Mar 7, 2023
9c1a810
Update Sentry to 8.3.0 and modify MJAppDelegate to use its new initia…
cmsj Mar 7, 2023
69038b5
Merge pull request #3410 from Hammerspoon/update-sparkle-2.3.2
cmsj Mar 7, 2023
0df0cdf
Merge pull request #3411 from Hammerspoon/update-sentry-8.3.0
cmsj Mar 7, 2023
81f52d2
Merge remote-tracking branch 'upstream/master'
latenitefilms Mar 7, 2023
f2107bd
Actually finish setting deployment target to macOS 11.0 (#3413)
cmsj Mar 8, 2023
08abbc2
This should make no difference at all, but it seems mildly more corre…
cmsj Mar 8, 2023
4595232
Update sentry-cli and make required changes in libbuild.sh (#3415)
cmsj Mar 8, 2023
5271943
Fix various things found by Xcode analyser (#3412)
cmsj Mar 8, 2023
2129996
Render item descriptions via markdown interpreter in doc builder and …
cmsj Mar 8, 2023
c8f5c73
Fix docstrings for Fields in hs.canvas so their full notes are render…
cmsj Mar 8, 2023
5173760
Guard against Shortcuts intent being called with no Lua code. Fixes H…
cmsj Mar 9, 2023
86a4479
Add another IsValid check on hs.ipc:sendMessage() right before we use…
cmsj Mar 9, 2023
bae1374
Merge remote-tracking branch 'upstream/master'
latenitefilms Mar 10, 2023
ce28777
Removed unnecessary files after pod update
latenitefilms Mar 10, 2023
3ca0cb9
Ensure native sockets are closed appropriately in hs.ping. Closes #33…
cmsj Mar 11, 2023
2a95918
Attempt to fix up release note generation and automatic milestone clo…
cmsj Mar 12, 2023
cd53cd7
Add a workflow for manually generating release notes
cmsj Mar 12, 2023
bc08025
Update appcast.xml for 0.9.98
cmsj Mar 12, 2023
1d5a812
Move Dash docset creation to the end of op_release, because it's fragile
cmsj Mar 12, 2023
fe55464
Fix appcast.xml
cmsj Mar 12, 2023
0a4baa6
Maybe actually fix appcast.xml?
cmsj Mar 12, 2023
d341a5b
Disable App Hang tracking in Sentry, it's flooding us with hundreds o…
cmsj Mar 13, 2023
864bbd8
Revert SocketRocket pod update. Closes #3422 (#3424)
cmsj Mar 13, 2023
3a25ff9
Add more arguments to hs.application.find() to allow hs.application.g…
cmsj Mar 13, 2023
3afb41d
Update appcast.xml for 0.9.99
cmsj Mar 13, 2023
b3ffba9
Fix docstrings for hs.websocket
cmsj Mar 14, 2023
c9d612e
Add binary functions to hs.hash for MD5, SHA1, SHA256 and SHA512 (#3428)
cmsj Mar 14, 2023
5b37c61
Update appcast.xml for 0.9.100
cmsj Mar 14, 2023
b9a3c98
Merge remote-tracking branch 'upstream/master'
latenitefilms Mar 17, 2023
7a6eeac
Delete generate_release_notes.yml
latenitefilms Mar 17, 2023
9175b11
Removed unnecessary files from Xcode
latenitefilms Mar 17, 2023
3c4442c
Preparing for v1.4.17
latenitefilms Mar 17, 2023
1352fd6
Fixed typo in hs.midi.newVirtualSource() docs (#3435)
latenitefilms Mar 23, 2023
1973483
skip set languageDictionary for canvas on reload
asmagill Mar 26, 2023
8ea7d10
Fix blockAlert documentation (#3484)
obecker May 8, 2023
4b85730
Merge remote-tracking branch 'upstream/master'
latenitefilms Jun 2, 2023
99e4ca3
Preparing for CommandPost v1.4.18
latenitefilms Jun 2, 2023
de8985b
Added markdown as a requirement
latenitefilms Jun 2, 2023
64cb761
Reverted documentation script changes to match Hammerspoon
latenitefilms Jun 6, 2023
916a8ca
Modified Docs Builder Script to Launch BBEdit on errors
latenitefilms Jun 8, 2023
a106e66
Fixed bug in build script
latenitefilms Jun 9, 2023
edb5d99
Replace IRC badge in README.md with Discord server invite
cmsj Jun 20, 2023
0ccc9d0
Replace another IRC server instance with Discord
cmsj Jun 20, 2023
4d4457b
Merge remote-tracking branch 'upstream/master'
latenitefilms Jul 2, 2023
8fc53af
Preparing for CommandPost v1.4.19
latenitefilms Jul 2, 2023
e130482
Preparing for v1.4.20
latenitefilms Jul 12, 2023
64b38b0
Preparing for CommandPost v1.4.21
latenitefilms Aug 30, 2023
ce1754b
Preparing for CommandPost v1.4.22
latenitefilms Aug 31, 2023
375217c
Preparing for CommandPost 1.4.23-beta.1
latenitefilms Oct 9, 2023
f25001c
Added NSAppDataUsageDescription
latenitefilms Oct 11, 2023
bc45c55
Preparing for CommandPost 1.4.23-beta.2
latenitefilms Oct 11, 2023
5f2212d
Ignore some strict build errors with Xcode 15
cmsj Nov 9, 2023
47e3130
[Ready] hs.watchable -- added alwaysNotify to watcher (#3440)
asmagill Dec 10, 2023
f30eef2
fix(ci): Manage secrets/permissions (#3396)
jsoref Dec 10, 2023
f2af17b
Wrap _powerSources so an empty table doesn't break code (#3449)
asmagill Dec 10, 2023
027142a
add exit call to fix empty space issue (#3466)
avivcarmis Dec 10, 2023
e36bceb
Remove warnings from canvas and toolbar (#3475)
asmagill Dec 10, 2023
c576c7e
Include docs.css in build for built in web help (#3476)
asmagill Dec 10, 2023
5f670c2
Rewrite of hs.hash to simplify adding new hashes (#3483)
asmagill Dec 10, 2023
53ae599
fix `attempt to index a nil value (local 'child')` #3481 (#3485)
shuxiao9058 Dec 10, 2023
6de44c6
add help for setLogLevel and getLogLevel (#3492)
muescha Dec 10, 2023
6b05084
First minimal changes to allow building in Xcode 15 (#3502)
cmsj Dec 10, 2023
11265bd
Fixed mistake in build_docs.py for markdown (#3504)
latenitefilms Dec 10, 2023
00aace7
Update alert.lua: allow window object as parameter (#3542)
muescha Dec 10, 2023
aad8b59
Add getCurrentTrackArtworkURL() to spotify extension (#3546)
vjo Dec 10, 2023
9345f83
Fix hs.network.ping to always call didFinish callback #3530 (#3531)
earwin Dec 10, 2023
8e64256
Update GitHub runners to macOS 13
cmsj Dec 10, 2023
d88f3a9
Document the counterintuitive behaviour of hs.audiodevice objects. Cl…
cmsj Dec 10, 2023
ff82d7a
macOS-13 github actions image doesn't actually use Xcode 15.0.1 by de…
cmsj Dec 10, 2023
116e8f1
Junk commit to test CI
cmsj Dec 10, 2023
4130299
libtimer.so is failing to build in CI, even though it totally should …
cmsj Dec 11, 2023
62edd23
Improve CI build logging slightly, to try and figure out why maxim-lo…
cmsj Dec 11, 2023
747f664
Helps if we don't forcibly override CI xcode versions in our scripts
cmsj Dec 11, 2023
a199654
Attempt to escape commit messages in webhook calls, so they don't exp…
cmsj Dec 11, 2023
42298a3
LuaSkinTests showing up without an NSObject symbol. Maybe link it to …
cmsj Dec 11, 2023
7f2bba4
Bump minimum macOS version to 12.0
cmsj Dec 19, 2023
c317acb
Updates for macOS12.0 - mostly setting extensions to use the Base xcc…
cmsj Dec 19, 2023
cf45b2d
Update various cocoapods
cmsj Dec 19, 2023
fe98228
Make serial tests a little more generic, although they still depend o…
cmsj Dec 19, 2023
70a1cda
Update hs.websocket to not use a deprecated method, and enhance the t…
cmsj Dec 19, 2023
56b5835
Added new Stream Deck XL PID (#3570)
latenitefilms Dec 24, 2023
d4570a4
Merge remote-tracking branch 'upstream/master'
latenitefilms Dec 28, 2023
e56ace5
Updated Cocoapods
latenitefilms Dec 28, 2023
570d30a
Preparing for CommandPost v1.4.23-beta.3
latenitefilms Dec 28, 2023
ab7e7bd
Fixed build issues
latenitefilms Dec 28, 2023
3609622
Updated Copyright
latenitefilms Jan 18, 2024
9a83bd6
Preparing for CommandPost v1.4.23
latenitefilms Jan 18, 2024
45295ce
Reverted changes to hs.dialog
latenitefilms Jan 18, 2024
7291319
Preparing for CommandPost v1.4.24
latenitefilms Jan 18, 2024
6dfca23
Removed warning flags for hs.dialog
latenitefilms Jan 18, 2024
ead9f85
Revert "Removed warning flags for hs.dialog"
latenitefilms Jan 18, 2024
ec465a9
Ignore hs.dialog deprecation warnings
latenitefilms Jan 18, 2024
be5aa46
Preparing for CommandPost 1.4.25-beta.1
latenitefilms Jan 19, 2024
b19b670
Preparing for CommandPost 1.4.25
latenitefilms Jan 19, 2024
039f03e
Preparing for CommandPost 1.4.26
latenitefilms Jan 22, 2024
abda638
Preparing for CommandPost 1.4.27
latenitefilms Jun 21, 2024
b88c52d
fix incorrect link address (#3579)
supersational Aug 5, 2024
8956fc3
Fix grammar in eventtap docs. (#3600)
breyed Aug 5, 2024
3e815df
Allow passing nil as name to hs.pasteboard.callbackWhenChanged (#3616)
Perlence Aug 5, 2024
707e137
Update canvas.lua docs: hs.drawing -> hs.canvas (#3627)
arthurkarganyan Aug 5, 2024
63c8239
fix moving window to space in sonoma (#3638)
asmagill Aug 5, 2024
51d33b2
Pass in fullUrl (#3640)
gvteja Aug 5, 2024
2494a47
Improve layout and wording of the NSUserDefaults resetting startup ke…
cmsj Aug 5, 2024
417b2aa
Update Cocoapods dependencies
cmsj Aug 5, 2024
e0c79fa
Update Lua to 5.4.7 (#3658)
cmsj Aug 5, 2024
4494358
Refactor the way Console Window output is appended, to try and minimi…
cmsj Aug 5, 2024
326b8ed
Update github runner config
cmsj Aug 5, 2024
61c3cf2
Switch to the free macos github runner images
cmsj Aug 5, 2024
e3d8c6d
Make ci pre setup script a bit more ARM resilient
cmsj Aug 5, 2024
b4d7a02
drop an erroneous .lua file and drop ci_nightly xcode version to 15.3…
cmsj Aug 6, 2024
5e6d428
Update appcast.xml for 1.0.0
cmsj Aug 6, 2024
874a031
Quick cleanups relating to the 1.0.0 release
cmsj Aug 6, 2024
1c94c99
Don't get carried away build number
cmsj Aug 6, 2024
3512c30
Bump some python requirements to satisfy dependabot
cmsj Aug 6, 2024
4d74820
Explicitly mention that hs.socket supports UNIX sockets. Closes #2657
cmsj Aug 6, 2024
697024a
Add stale issue action
cmsj Aug 6, 2024
f282812
Allow manual triggering of stale action
cmsj Aug 6, 2024
ec0c6d4
Various updates to github workflows and CI scripts, because they were…
cmsj Aug 7, 2024
ad4d72f
Collapse CI test results into the main job now that the relevant acti…
cmsj Aug 7, 2024
81ff125
Remove all traces of Twitter, and switch to using Brew bundle for dep…
cmsj Aug 7, 2024
00c8eab
Expand CI GITHUB_TOKEN permissions for writing unit test results
cmsj Aug 7, 2024
d75687d
Slightly improve test logging, since our xcode->junit conversion is c…
cmsj Aug 7, 2024
1c19107
Try a different xcode test result reporter
cmsj Aug 7, 2024
7706a41
Lots of CI refactoring, hopefully fixing codecov
cmsj Aug 7, 2024
5ef1e92
Apparently I broke the ci_testbuild.yml
cmsj Aug 7, 2024
4d7722e
Whitespace...
cmsj Aug 7, 2024
f9be452
We probably need to enable Coverage gathering here, to get the info w…
cmsj Aug 7, 2024
916498b
Don't upload .xcresult bundle from the xcresulttool action because we…
cmsj Aug 7, 2024
d6f8f9c
Make homebrew complain less about our Brewfile
cmsj Aug 8, 2024
ec9a8ea
Validate that all arguments provided for an hs.task, are strings. Clo…
cmsj Aug 9, 2024
45fa356
Lua skin additions (#3667)
asmagill Aug 12, 2024
a86a3f4
Add NSUserActivityTypeBrowsingWeb handling
mdbraber May 11, 2024
08cb813
Only return YES when we actually handled a user activity
cmsj Aug 18, 2024
8876fa0
Two build fixes for Sequoia
cmsj Sep 19, 2024
f9e7b5f
Update Cocoapods
cmsj Sep 19, 2024
e303ca7
Bump minimum macOS version to 13
cmsj Sep 19, 2024
b3ca3cf
Fix a deprecation warning in hs.wifi
cmsj Sep 19, 2024
c9fa28e
Bump github actions runner image to macOS15 even though it's in beta
cmsj Nov 9, 2024
d0c7fcf
Bump xcode versions too
cmsj Nov 9, 2024
5395f34
Ensure url scheme/host are in lowercase before passing to hs.urlevent…
cmsj Sep 19, 2024
4b7ea1d
Suppress a suspicious build log entry
cmsj Nov 12, 2024
0ec255c
Except do it properly
cmsj Nov 12, 2024
f184d91
Also add a notarization logging message
cmsj Nov 12, 2024
dbfd067
Fix `package.path`s under `userruntime` w/ unexpanded tilde
habibalamin Oct 11, 2024
ca91c17
Fixed websocket support in `hs.httpserver:start()`
latenitefilms Aug 10, 2024
fa58fd4
Simplified error handling
latenitefilms Aug 12, 2024
844aa09
Support creation of smart magnify events
kriomant Aug 24, 2024
379ff1e
Fix notarization script
cmsj Nov 12, 2024
b30e24d
Switch to a fork of xcresulttool GH action with support for Xcode 16
cmsj Nov 12, 2024
d0f7845
GitHub Actions version matching is weird
cmsj Nov 12, 2024
e9c0559
Add a missed build.sh flag when building for testing
cmsj Nov 14, 2024
4a4f0ce
Fix a UI-off-main-thread bug
cmsj Nov 14, 2024
37057a0
Adapt to changed xcode build settings output when signing dev builds
cmsj Nov 14, 2024
3869eec
Merge remote-tracking branch 'upstream/master'
latenitefilms Nov 17, 2024
a2d604e
Updated Pods
latenitefilms Nov 17, 2024
0375a45
Preparing for CommandPost 1.5.0
latenitefilms Nov 21, 2024
b8f0cd6
Fixed build issues in Xcode project
latenitefilms Nov 21, 2024
251f5af
Add hs.audiodevice:thru() and hs.audiodevice:setThru(thru)
bburky Nov 20, 2024
6edc619
Avoid reentrance when in printReplacement
gitmsr Nov 22, 2024
931d38a
Improved the comments and variable names
gitmsr Nov 28, 2024
a0d1ca3
Merge remote-tracking branch 'upstream/master'
latenitefilms Dec 6, 2024
e81e71c
Preparing for CommandPost 1.5.1
latenitefilms Dec 6, 2024
1211231
Preparing for CommandPost 1.5.2
latenitefilms Dec 18, 2024
cdd19a5
Update LICENSE, fix license year
JasonnnW3000 Jan 1, 2025
20f27e5
window_filter: track applications by PID
mogenson Jan 29, 2025
ad231bd
Fixed Stream Deck Mini Button 1 Callback Trigger
latenitefilms Apr 1, 2025
950a7b1
Fixed Stream Deck Mini Button 1 Callback Trigger
latenitefilms Apr 1, 2025
4bef182
Merge remote-tracking branch 'upstream/master'
latenitefilms May 30, 2025
dc1ff83
silence warning from project noises
algal Jun 3, 2025
317d073
update Sentry podspec from 8.36.0 to 8.52.0
algal Jun 4, 2025
47092cc
update Podfile.lock and pods
algal Jun 4, 2025
dcffc7c
compile fixes in streamdeck and osascript
algal Jun 4, 2025
f080c70
compile fixes in format specifiers
algal Jun 4, 2025
2a571c5
add asserts for unhandled MIKMIDICommandTYpe
algal Jun 4, 2025
a1ce0de
Correct format specifiers
algal Jun 4, 2025
f982bb8
Add assert for unhandled switch case with caps_lock
algal Jun 4, 2025
0c7107f
Update copyrights.
sdegutis Jul 29, 2025
1ffde8c
Merge remote-tracking branch 'upstream/master'
latenitefilms Aug 6, 2025
d8d5d4f
Merge branch 'master' into dev-compile_fixes
latenitefilms Aug 6, 2025
e13b9db
Merge pull request #85 from algal/dev-compile_fixes
latenitefilms Aug 6, 2025
d49828c
Updated Pods
latenitefilms Aug 6, 2025
ce80aab
Renamed to CommandPost Engine
latenitefilms Aug 6, 2025
18de315
Updated Sentry & Sparkle
latenitefilms Aug 6, 2025
73c582e
Xcode updated BuildableName
latenitefilms Aug 6, 2025
c9c408b
Added temporary workaround for Sentry
latenitefilms Aug 6, 2025
8577237
Preparing for CommandPost v2.0.0-beta.1
latenitefilms Aug 6, 2025
100a0e8
Tweaked CommandPost Engine Release Script
latenitefilms Aug 6, 2025
50a141e
Added paid upgrade check
latenitefilms Aug 6, 2025
810db2b
Updated Info.plist
latenitefilms Aug 6, 2025
63720fe
Updated Copyright
latenitefilms Aug 6, 2025
8cfe285
Updated Team ID
latenitefilms Aug 6, 2025
c7fda3a
Revert "Renamed to CommandPost Engine"
latenitefilms Sep 29, 2025
abf6a1f
Revert "Xcode updated BuildableName"
latenitefilms Sep 29, 2025
11049a8
Revert "Tweaked CommandPost Engine Release Script"
latenitefilms Sep 29, 2025
49fbf6a
Revert "Added paid upgrade check"
latenitefilms Sep 29, 2025
bc71f22
Revert "Updated Info.plist"
latenitefilms Sep 29, 2025
7f3b0dc
silence warning from project noises
algal Jun 3, 2025
2971110
update Sentry podspec from 8.36.0 to 8.52.0
algal Jun 4, 2025
e83979e
update Podfile.lock and pods
algal Jun 4, 2025
a9c0f74
compile fixes in streamdeck and osascript
algal Jun 4, 2025
ea249af
compile fixes in format specifiers
algal Jun 4, 2025
374e5fd
add asserts for unhandled MIKMIDICommandTYpe
algal Jun 4, 2025
baca90f
Correct format specifiers
algal Jun 4, 2025
cb566ea
Add assert for unhandled switch case with caps_lock
algal Jun 4, 2025
6d64233
Upgrade Sentry to the latest version
cmsj Nov 18, 2025
f43daa9
Update pods some more
cmsj Nov 18, 2025
f47be0f
Further build fixes
cmsj Nov 18, 2025
82dd24c
Fix Lua stack corruption in window:application() when process terminated
delaneyb Oct 9, 2025
530e084
Reuse [statusItem menu] if possible (fixes #1923)
HealsCodes Aug 12, 2025
5fcc817
The event handler might receive an invalid pid
gitmsr Aug 13, 2025
540faee
add setFrame method that disables enhanced UI during the move
saml-dev Dec 18, 2025
04b4c3b
replace lua setFrame with internal implementation
saml-dev Dec 18, 2025
af91396
Fix typo in logger's documentation
edkolev May 17, 2025
fa0c91a
fixes mouse tracking speed actually being changed; adds trackpad trac…
asmagill Mar 9, 2025
ea1b324
Update appcast.xml for 1.1.0
cmsj Dec 24, 2025
b6b3b22
Announce the completion of a release action, so it doesn't look like …
cmsj Dec 24, 2025
a45cf91
Merge Hammerspoon updates
latenitefilms Jan 18, 2026
ac74c59
Updated Sentry from v8.57.3 to v9.1.0
latenitefilms Jan 18, 2026
a7b3439
Reluctantly switched to new Tahoe-friendly Mac Icon
latenitefilms Jan 18, 2026
d7370a0
Add support for Stream Deck Neo, Module 6, Module 15, and Module 32
shensquared Dec 28, 2025
c6d4e7a
Preparing for CommandPost 1.6.0
latenitefilms Jan 18, 2026
61d0e84
Removed unnecessary header files
latenitefilms Jan 18, 2026
59f2093
Preparing for CommandPost 1.6.1
latenitefilms Jan 23, 2026
cd8ca73
Added LateNite Software Check
latenitefilms Feb 5, 2026
ce2cc8b
Preparing for CommandPost 2.0.0
latenitefilms Feb 5, 2026
0aff6eb
Fixed bug in LateNite App Validation
latenitefilms Feb 5, 2026
3e05c64
Preparing for CommandPost 2.0.1
latenitefilms Feb 8, 2026
246a20a
Preparing for CommandPost 2.0.2
latenitefilms Feb 8, 2026
4b2ba4a
Preparing for CommandPost 2.0.3
latenitefilms Feb 9, 2026
c373d63
Preparing for CommandPost 2.0.4
latenitefilms Feb 10, 2026
6eb9758
Added more upcoming LateNite Apps
latenitefilms Feb 19, 2026
0582713
Preparing for CommandPost 2.0.5
latenitefilms Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 0 additions & 10 deletions .bettercodehub.yml

This file was deleted.

2 changes: 2 additions & 0 deletions .flake8rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[flake8]
ignore = E501
20 changes: 20 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: 'Close stale Issues/PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue needs more information. Please see our request above.'
close-issue-message: 'No information was received, closing this Issue for now.'
stale-issue-label: 'stale'
days-before-issue-stale: 30
days-before-issue-close: 30
only-labels: 'needs-response'
days-before-pr-stale: -1
days-before-pr-close: -1
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ extensions/httpserver/HammerspoonCertTemplate.h

## Build generated
build/
artifacts/
DerivedData/

## Various settings
Expand All @@ -42,3 +43,6 @@ xcuserdata/
*.xccheckout
*.xcscmblueprint

.vscode

Brewfile.lock.json
59 changes: 57 additions & 2 deletions .luacheckrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,57 @@
globals = {"hs", "rawrequire"}
ignore = {"631"}
--
-- These globals can be set and accessed:
--
globals = {
"rawrequire",
}

--
-- These globals can only be accessed:
--
read_globals = {
"hs",
"ls",
"spoon",
}

--
-- Hammerspoon Tests:
--
files["**/test_*.lua"] = {
read_globals = {
"assertFalse",
"assertGreaterThan",
"assertGreaterThanOrEqualTo",
"assertIsAlmostEqual",
"assertIsBoolean",
"assertIsEqual",
"assertIsFunction",
"assertIsNil",
"assertIsNotNil",
"assertIsNumber",
"assertIsString",
"assertIsTable",
"assertIsType",
"assertIsUserdata",
"assertIsUserdataOfType",
"assertLessThan",
"assertLessThanOrEqualTo",
"assertListsEqual",
"assertTableNotEmpty",
"assertTablesEqual",
"assertTrue",
"failure",
"success",
},
ignore = {
"111", -- Setting an undefined global variable
"501" -- Line too long
}
}

--
-- Warnings to ignore:
--
ignore = {
"631" -- Line is too long.
}
1 change: 1 addition & 0 deletions .stickler.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
linters:
flake8:
config: '.flake8rc'
shellcheck:
shell: bash
luacheck:
Expand Down
39 changes: 0 additions & 39 deletions .travis.yml

This file was deleted.

10 changes: 10 additions & 0 deletions Brewfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
tap "a7ex/homebrew-formulae"

brew "coreutils"
brew "jq"
brew "xcbeautify"
brew "gawk"
brew "cocoapods"
brew "gh"
brew "gpg"
brew "a7ex/homebrew-formulae/xcresultparser"
63 changes: 32 additions & 31 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
# Contributing to Hammerspoon

* [How is everything built?](#how-is-everything-built)
* [Making frequent local rebuilds more convenient](#making-frequent-local-rebuilds-more-convenient)
* [Contributing to the core app or LuaSkin](#contributing-to-the-core-app-or-luaskin)
* [Contributing to the extensions](#contributing-to-the-extensions)
* [Writing a new, pure-Lua extension](#writing-a-new-pure-lua-extension)
* [Writing a new mixed Lua/Objective-C extension](#writing-a-new-mixed-luaobjective-c-extension)
* [Documenting your extension](#documenting-your-extension)
* [Constants](#constants)
* [Variables](#variables)
* [Functions](#functions)
* [Methods](#methods)
* [Testing](#testing)
* [Third party extension distribution](#third-party-extension-distribution)
- [Contributing to Hammerspoon](#contributing-to-hammerspoon)
- [How is everything built?](#how-is-everything-built)
- [Making frequent local rebuilds more convenient](#making-frequent-local-rebuilds-more-convenient)
- [Contributing to the core app or LuaSkin](#contributing-to-the-core-app-or-luaskin)
- [Contributing to the extensions](#contributing-to-the-extensions)
- [Writing a new, pure-Lua extension](#writing-a-new-pure-lua-extension)
- [Writing a new mixed Lua/Objective-C extension](#writing-a-new-mixed-luaobjective-c-extension)
- [Documenting your extension](#documenting-your-extension)
- [Constants](#constants)
- [Variables](#variables)
- [Functions](#functions)
- [Methods](#methods)
- [Testing](#testing)
- [Third party extension distribution](#third-party-extension-distribution)

Hammerspoon is composed of three separate logical areas - a Lua runtime wrapper framework called [LuaSkin](http://www.hammerspoon.org/docs/LuaSkin/Classes/LuaSkin/index.html#), the core Hammerspoon app which houses the LuaSkin/Lua runtime and provides the ability to load extensions, and [various extension modules](https://github.com/Hammerspoon/hammerspoon/tree/master/extensions) that [expose system APIs](http://www.hammerspoon.org/docs/) to the user's Lua code.

## How is everything built?

The app itself is built using Xcode. You must open `Hammerspoon.xcworkspace` rather than `Hammerspoon.xcodeproj`. If you open the latter, your build will fail because Xcode will not know about the Cocoapods that Hammerspoon depends on (see our [`Podfile`](https://github.com/Hammerspoon/hammerspoon/blob/master/Podfile) for the current list of required pods).
The app itself is built using Xcode. You must open `Hammerspoon.xcworkspace` rather than `Hammerspoon.xcodeproj`. If you open the latter, your build will fail because Xcode will not know about the Cocoapods that Hammerspoon depends on (see our [`Podfile`](https://github.com/Hammerspoon/hammerspoon/blob/master/Podfile) for the current list of required pods). On versions of macOS prior to Catalina [Python 3](https://www.python.org) will need to be installed for the build to work.

The extension modules are built before the core Hammerspoon binary as target dependencies. Each extension is defined as an Xcode target in its own right, although there is usually no reason to build these targets manually. During the late stages of the build process, a script ([`scripts/copy_extensions_to_bundle.sh`](https://github.com/Hammerspoon/hammerspoon/blob/master/scripts/copy_extensions_to_bundle.sh)) collects all of the compiled extension libraries and their associated Lua components, and inserts them into the final `Hammerspoon.app` bundle.
The extension modules are built before the core Hammerspoon binary as target dependencies. Each extension is defined as an Xcode target in its own right, although there is usually no reason to build these targets manually.

### Making frequent local rebuilds more convenient
[Self-signing your builds](https://github.com/Hammerspoon/hammerspoon/issues/643#issuecomment-158291705) will keep you from having to re-enable permissions for your locally built copy.
Expand All @@ -37,7 +38,7 @@ This is generally very simple in terms of the workflow, but there's less likely
* Make the changes you want
* Push them up to a fork on GitHub
* Propose a Pull Request on GitHub
* Talk to us in #hammerspoon on Freenode if you need any guidance
* Talk to us in #hammerspoon on Libera if you need any guidance

## Contributing to the extensions

Expand All @@ -56,13 +57,13 @@ To create such an extension:
* Clone the Hammerspoon git repository
* cd into the `extensions` directory
* Make a directory for your extension
* Create an `init.lua` to contain your code. It should behave like any normal Lua library - that is to say, your job is to return a table containing functions/methods/constants/etc
* Create a `modulename.lua` to contain your code, giving it the appropriate name. It should behave like any normal Lua library - that is to say, your job is to return a table containing functions/methods/constants/etc
* Ensure you document your API in our preferred format (see the code for almost any existing module for reference)
* Edit `scripts/copy_extensions_to_bundle.sh` and add your module name to the `HS_LUAONLY` section
* In Xcode's Project Navigator, select the Hammerspoon root entry, then choose Hammerspoon from the Targets list and find the "Copy Extension Lua Files" build phase. Add your new Lua file
* Build Hammerspoon and test your extension
* Push your changes up to a fork on GitHub
* Propose a Pull Request on GitHub
* Talk to us in #hammerspoon on Freenode if you need any guidance
* Talk to us in #hammerspoon on Libera if you need any guidance

### Writing a new mixed Lua/Objective-C extension ###

Expand All @@ -74,27 +75,27 @@ To create such an extension:
* Create the directories/files for your extension:
* cd into the `extensions` directory
* Make a directory for your extension
* Create an `init.lua` to load your Objective-C code and contain any additional Lua code. You might find it easier to provide much of your API in Lua and just provide undocumented API from Objective C that does the minimum work possible. The choice is ultimately down to you, depending on the nature of the work the extension is doing.
* Create an `internal.m` to contain your Objective-C code. Please use the LuaSkin methods to do as much work as possible, they are well tested and in most extensions can reduce the amount of Lua C API calls to almost zero. Not all of our extensions have been fully converted to LuaSkin yet (a good example is [`hs.chooser`](https://github.com/Hammerspoon/hammerspoon/blob/master/extensions/chooser/internal.m))
* Right click on the `extensions` group in Xcode's Project Browser and add a new sub-group for your extension, then right click on the sub-group and add your `init.lua` and `internal.m` files (and any supporting `.h`/`.c`/`.m`/etc files)
* The files you've added will probably be made members of the Hammerspoon target. You do not want this; Select each file in the Project Browser and using the File Inspector in the Utilities pane on the right of Xcode's window, deselect them from the maim Hammerspoon target.
* Create a `modulename.lua` to load your Objective-C code and contain any additional Lua code. You might find it easier to provide much of your API in Lua and just provide undocumented API from Objective C that does the minimum work possible. The choice is ultimately down to you, depending on the nature of the work the extension is doing.
* Create a `modulename.m` to contain your Objective-C code. Please use the LuaSkin methods to do as much work as possible, they are well tested and in most extensions can reduce the amount of Lua C API calls to almost zero. Not all of our extensions have been fully converted to LuaSkin yet (a good example is [`hs.chooser`](https://github.com/Hammerspoon/hammerspoon/blob/master/extensions/chooser/internal.m))
* Right click on the `extensions` group in Xcode's Project Browser and add a new sub-group for your extension, then right click on the sub-group and add your `modulename.lua` and `modulename.m` files (and any supporting `.h`/`.c`/`.m`/etc files)
* The files you've added will probably be made members of the Hammerspoon target. You do not want this; Select each file in the Project Browser and using the File Inspector in the Utilities pane on the right of Xcode's window, deselect them from the main Hammerspoon target.
* Configure Xcode to build your extension and include it in the `Hammerspoon.app` bundle:
* Click on the `Hammerspoon` workspace at the very top of the Xcode Project Browser (i.e. the bar on the left)
* Right click on `alert` in the "project and targets list" and choose `Duplicate`, which creates `alert copy` at the bottom of the list.
* Right click on an existing extension target in the "project and targets list" and choose `Duplicate`, which creates `extensionname copy` at the bottom of the list.
* Rename the copy and drag it to the right place in the list (alphabetically)
* Click on the target you just created, remove hs.alert's `internal.m` from the `Compile Sources` build phase, add in the `.m` files from your new module
* Check the `Link Binary With Libraries` section for any frameworks you need to add. Typically this will jsut mean `LuaSkin.framework`, plus any additional system frameworks you need to link against.
* Click on the target you just created, remove hs.alert's `extension.m` from the `Compile Sources` build phase, add in the `.m` files from your new module
* Check the `Link Binary With Libraries` section for any frameworks you need to add. Typically this will just mean `LuaSkin.framework`, plus any additional system frameworks you need to link against.
* Click on the `Hammerspoon` target (not the project), and in the `Target Dependencies` build phase, add the module target you just created
* Click the menu item Product → Scheme → Manage Schemes, find `alert copy`, rename it and move it to the right place in the list of schemes
* Edit `scripts/copy_extensions_to_bundle.sh` and add your module name to the `HS_MODULES` section. *Note*: Some modules may also need to copy extra files into the app bundle, in which case add a "special copier" to the bottom of the script.
* Click the menu item Product → Scheme → Manage Schemes, find `extensionname copy`, rename it and move it to the right place in the list of schemes
* Add your `modulename.lua` to the "Copy Extension Lua Files" build phase on the Hammerspoon target, and your `modulename.dylib` to the "Copy Extension Dylibs" build phase
* Build Hammerspoon and test your extension
* Push your changes up to a fork on GitHub
* Propose a Pull Request on GitHub
* Talk to us in #hammerspoon on Freenode if you need any guidance
* Talk to us in #hammerspoon on Libera if you need any guidance

### Documenting your extension

Both Lua and Objective-C portions of an extension should contain in-line documention of all of the functions they expose to users of the extension.
Both Lua and Objective-C portions of an extension should contain in-line documentation of all of the functions they expose to users of the extension.

The format for docstrings should follow the standard described below. Note that for Lua files, the lines should begin with `---` and for Objective C files, the lines should begin with `///`.

Expand Down Expand Up @@ -169,7 +170,7 @@ The best place to start is in the `Hammerspoon/Hammerspoon Tests` folder in Xcod
* The rest of `HSfoo` should be methods named `testBar`, each of which causes some test action to take place.
* There are some helper macros for use inside the test methods:
* `RUN_LUA_TEST()` will cause a function from `test_foo.lua` to be run, if its name exactly matches the name of the `HSfoo` method
* `SKIP_IN_TRAVIS()` will cause this test to be skipped when running as part of our [Travis](http://www.travis-ci.org) test runs (e.g. because the Travis VMs lack hardware/network resources required to test)
* `SKIP_IN_GITHUB_ACTIONS()` will cause this test to be skipped when running as part of our GitHub Actions test runs (e.g. because the GitHub VMs lack hardware/network resources required to test)

When Hammerspoon detects it is is being run by `XCTest`, it loads a special `init.lua` (`Hammerspoon/Hammerspoon Tests/init.lua`) which provides a number of helper functions, mainly related to asserting state in test functions. These functions will generate Lua errors if a test failure occurs, which will cause Xcode to report the test has failed, with an appropriate backtrace in the logs. Refer to the file for the full list of assertions, but the most useful are:

Expand Down
23 changes: 6 additions & 17 deletions CREDITS.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,10 @@
Hammerspoon is based on Mjolnir by Steven Degutis, which is based on Hydra by Steven Degutis.
Hammerspoon is based on Mjolnir, which is based on Hydra.

The extensions included in Hammerspoon were written by:
* [Steven Degutis](https://github.com/sdegutis/)
* [Aaron Magill](https://github.com/asmagill)
Our maintainers are:
* [Chris Jones](https://github.com/cmsj)
* Peter van Dijk
* Linell Bonnette
* Kepler Project
* Enrique García Cota
* Szymon Kaliski
* Brian Gilbert
* Tristan Hume
* Tyler Mandry
* Alexander Yakushev
* Jake Heinz
* Till Klocke
* Markus Engelbrecht
* [Aaron Magill](https://github.com/asmagill)
* [Chris Hocking](https://github.com/latenitefilms)

The Hammerspon icon was provided by Juerd Waalboer.
Lots of additional extensions/work has been provided by [various contributors](https://github.com/Hammerspoon/hammerspoon/graphs/contributors)

The Hammerspoon icon was provided by Juerd Waalboer.
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"images" : [
{
"filename" : "icon_16x16.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
"filename" : "icon_16x16@2x@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
"filename" : "icon_32x32.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
"filename" : "icon_32x32@2x@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
"filename" : "icon_128x128.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
"filename" : "icon_128x128@2x@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
"filename" : "icon_256x256.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
"filename" : "icon_256x256@2x@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
"filename" : "icon_512x512.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
"filename" : "icon_512x512@2x@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#import <ProExtension/ProExtension.h>
Loading