Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
720c082
Add CODEOWNERS
bobrippling Sep 13, 2025
aa0aedc
Tag owners of apps when their app changes
bobrippling Jul 12, 2025
57c36b1
Add authors for bobrippling, thyttan, nxdefiant and a few others
bobrippling Jul 12, 2025
0cbd33b
Permit an "author" field
bobrippling Jul 12, 2025
e8d0321
Fetch master ref
bobrippling Jul 12, 2025
9cb2bb2
Trim down pr-tagging action's permissions
bobrippling Jul 23, 2025
43c82b0
Move author field to below version
bobrippling Sep 13, 2025
7c5ec87
Move PR tagging logic to `pr-tag.js`
bobrippling Sep 13, 2025
8ee46e2
Update README with `author` metadata field
bobrippling Sep 13, 2025
db600c2
Update example apps with `author` field
bobrippling Sep 13, 2025
e8d6da1
pr-tag.js: move to main() function
bobrippling Sep 13, 2025
5805732
pr-tag.js: allow specifying to skip tagging (in PR description)
bobrippling Sep 13, 2025
2872b59
pr-tagging.yml: tweak descriptions
bobrippling Sep 13, 2025
974b2f0
Emit debug info on stderr (so it doesn't get posted)
bobrippling Sep 13, 2025
464901c
pr-tag.js: factor out `fetchGH()`
bobrippling Sep 13, 2025
701eb8e
pr-tag.js: don't retag authors for the same apps
bobrippling Sep 13, 2025
02dce6b
pr-tag.js: "polyfill" `Set.difference`
bobrippling Sep 13, 2025
7894822
pr-tag.js: requote the apps
bobrippling Sep 13, 2025
b0c7b08
pr-tag.js: add `debug()`
bobrippling Sep 14, 2025
e57658e
pr-tag.js: factor out line creation + fix line parsing (multiapp)
bobrippling Sep 14, 2025
5b9a306
pr-tag.js: don't fetch comments / previous tags when
bobrippling Sep 14, 2025
c71f754
pr-tag.js: move comment posting into script
bobrippling Sep 14, 2025
5587ec4
pr-tag.js: add dry-run option
bobrippling Sep 14, 2025
ee77545
Merge branch 'master' into test/app-authors-tag
gfwilliams Sep 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/pr-tagging.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Tag app authors

on:
pull_request:
types: [opened, synchronize]

permissions:
issues: write
pull-requests: write

jobs:
mention-app-authors:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install deps
run: |
sudo apt-get update
sudo apt-get install -y jq nodejs

- name: Fetch relevant refs
run: |
# fetch master and unshallow HEAD
git fetch origin --unshallow

- name: Tag app authors
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
PR_NUM: ${{ github.event.pull_request.number }}
run: node bin/pr-tag.js
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ and which gives information about the app for the Launcher.
"name": "Readable name", // readable name
"shortName": "Short name", // short name for launcher
"version": "0.01", // the version of this app
"author": "name", // name of app author (can be an array - ["author1", "author2"], used for tagging in PRs for the app)
"description": "...", // long description (can contain markdown)
"icon": "icon.png", // icon in apps/
"screenshots" : [ { "url":"screenshot.png" } ], // optional screenshot for app
Expand Down
1 change: 1 addition & 0 deletions apps/_example_app/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "My app's human readable name",
"shortName":"Short Name",
"version":"0.01",
"author": "gfwilliams",
"description": "A detailed description of my great app",
"icon": "app.png",
"tags": "",
Expand Down
1 change: 1 addition & 0 deletions apps/_example_clkinfo/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "My clock info's human readable name",
"shortName":"Short Name",
"version":"0.01",
"author": "gfwilliams",
"description": "A detailed description of my clock info",
"icon": "icon.png",
"type": "clkinfo",
Expand Down
1 change: 1 addition & 0 deletions apps/_example_clock/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "My clock human readable name",
"shortName":"Short Name",
"version":"0.01",
"author": "gfwilliams",
"description": "A detailed description of my clock",
"icon": "icon.png",
"screenshots": [{"url":"screenshot.png"}],
Expand Down
1 change: 1 addition & 0 deletions apps/_example_widget/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "My widget's human readable name",
"shortName":"Short Name",
"version":"0.01",
"author": "gfwilliams",
"description": "A detailed description of my great widget",
"icon": "icon.png",
"type": "widget",
Expand Down
1 change: 1 addition & 0 deletions apps/autoreset/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "autoreset",
"name": "Auto Reset",
"version":"0.02",
"author": "thyttan",
"description": "Sets a timeout to load the clock face. The timeout is stopped and started again upon user input.",
"icon": "app.png",
"type": "bootloader",
Expand Down
1 change: 1 addition & 0 deletions apps/beeptest/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Beep Test",
"shortName": "Beep Test",
"version": "0.01",
"author": "bb0x88",
"description": "Aerobic fitness test created by Léger & Lambert",
"icon": "beeptest.png",
"tags": "health",
Expand Down
1 change: 1 addition & 0 deletions apps/btadv/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "btadv",
"shortName": "btadv",
"version": "0.04",
"author": "bobrippling",
"description": "Advertise & export live heart rate, accel, pressure, GPS & mag data over bluetooth",
"icon": "icon.png",
"tags": "health,tool,sensors,bluetooth",
Expand Down
1 change: 1 addition & 0 deletions apps/bwclklite/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "bwclklite",
"name": "BW Clock Lite",
"version": "0.36",
"author": "thyttan",
"description": "A very minimalistic clock. This version of BW Clock is quicker at the cost of the custom font.",
"readme": "README.md",
"icon": "app.png",
Expand Down
1 change: 1 addition & 0 deletions apps/chess/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Chess",
"shortName": "Chess",
"version": "0.06",
"author": "nxdefiant",
"description": "Chess game based on the [p4wn engine](https://p4wn.sourceforge.net/). Drag on the touchscreen to move the green cursor onto a piece, select it with a single touch and drag the now red cursor around. Release the piece with another touch to finish the move. The button opens a menu.",
"icon": "app.png",
"tags": "game",
Expand Down
1 change: 1 addition & 0 deletions apps/chronlog/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "chronlog",
"name": "Chrono Logger",
"version":"0.01",
"author": "thyttan",
"description": "Record time active on a task, course, work or anything really.",
"icon": "app.png",
"tags": "logging,record,work,tasks",
Expand Down
1 change: 1 addition & 0 deletions apps/clkinfostopw/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "clkinfostopw",
"name": "Stop Watch Clockinfo",
"version":"0.03",
"author": "bobrippling",
"description": "A simple stopwatch, shown via clockinfo",
"icon": "app.png",
"type": "clkinfo",
Expand Down
1 change: 1 addition & 0 deletions apps/confthyttan/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "confthyttan",
"name": "Thyttan's Default Config",
"version":"0.06",
"author": "thyttan",
"description": "A different default set of apps and configurations. Brings many quality of life improvements. Opinionated based on the creators taste. Read more below before installing.",
"icon": "app.png",
"type": "defaultconfig",
Expand Down
1 change: 1 addition & 0 deletions apps/ctrlpad/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Control Panel",
"shortName": "ctrlpad",
"version": "0.02",
"author": "bobrippling",
"description": "Fast access (via a downward swipe) to common functions, such as bluetooth/HRM power and Do Not Disturb",
"icon": "icon.png",
"readme": "README.md",
Expand Down
1 change: 1 addition & 0 deletions apps/delaylock/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "delaylock",
"name": "Delayed Locking",
"version":"0.01",
"author": "thyttan",
"description": "Delay the locking of the screen to 5 seconds after the backlight turns off.",
"icon": "app.png",
"tags": "settings,configuration,backlight,touchscreen,screen",
Expand Down
1 change: 1 addition & 0 deletions apps/dragboard/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "dragboard",
"name": "Dragboard",
"version":"0.10",
"author": "thyttan",
"description": "A library for text input via swiping keyboard",
"icon": "app.png",
"type":"textinput",
Expand Down
1 change: 1 addition & 0 deletions apps/drained/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "drained",
"name": "Drained",
"version": "0.08",
"author": "bobrippling",
"description": "Switches to displaying a simple clock when the battery percentage is low, and disables some peripherals",
"readme": "README.md",
"icon": "icon.png",
Expand Down
1 change: 1 addition & 0 deletions apps/fastreset/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "Fast Reset",
"shortName":"Fast Reset",
"version":"0.03",
"author": "thyttan",
"description": "Reset the watch to the clock face by pressing the hardware button just a little bit longer than a click. If 'Fastload Utils' is installed this will typically be done with fastloading. A buzz acts as indicator.",
"icon": "app.png",
"type": "bootloader",
Expand Down
3 changes: 2 additions & 1 deletion apps/folderlaunch/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "folderlaunch",
"name": "Folder launcher",
"version": "0.04",
"author": "bruceblore",
"description": "Launcher that allows you to put your apps into folders",
"icon": "icon.png",
"type": "launch",
Expand Down Expand Up @@ -45,5 +46,5 @@
{
"url": "screenshot2.png"
}
]
]
}
1 change: 1 addition & 0 deletions apps/gbdiscon/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "Disconnect from Gadgetbridge",
"shortName":"Disconnect Gadgetbridge",
"version":"0.01",
"author": "thyttan",
"description": "Disconnect from your android device by running this app. The app will forward you to your clock face immediately after triggering the command. (Gadgetbridge nightly required until version 82 is released)",
"icon": "app.png",
"tags": "android,gadgetbridge,bluetooth,bt",
Expand Down
1 change: 1 addition & 0 deletions apps/gpsautotime/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "GPS auto time",
"shortName": "GPS auto time",
"version": "0.04",
"author": "nxdefiant",
"description": "A widget that automatically updates the Bangle.js time to the GPS time whenever there is a valid GPS fix.",
"icon": "widget.png",
"type": "widget",
Expand Down
2 changes: 1 addition & 1 deletion apps/gpsmagcourse/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"shortName":"GPS/Compass course",
"icon": "app.png",
"version":"0.01",
"author": "nxdefiant",
"description": "Replaces the GPS course with the compass heading when speed is slow or standing still to avoid the value from jumping randomly. For best experience also install \"Navigation Compass\", although not a requirement (see README).",
"type": "bootloader",
"tags": "outdoors,widget",
Expand All @@ -16,4 +17,3 @@
],
"data": [{"name":"gpsmagcourse.json"}]
}

1 change: 1 addition & 0 deletions apps/hidjoystick/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Bluetooth Joystick",
"shortName": "Joystick",
"version": "0.02",
"author": "nxdefiant",
"description": "Emulates a 2 axis/5 button Joystick using the accelerometer as stick input and buttons 1-3, touch left as button 4 and touch right as button 5. On Bangle.js 2 buttons 2-5 are emulated with the touchscreen.",
"icon": "app.png",
"tags": "bluetooth",
Expand Down
1 change: 1 addition & 0 deletions apps/hrmmar/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"shortName":"HRM MA removal",
"icon": "app.png",
"version":"0.02",
"author": "nxdefiant",
"description": "Removes Motion Artifacts in Bangle.js's heart rate sensor data. **WARNING:** On Bangle.js 2 this has been found to make heart rate readings substantially less accurate in some cases.",
"type": "bootloader",
"tags": "health",
Expand Down
1 change: 1 addition & 0 deletions apps/longpressbuzz/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "Long Press, Buzz!",
"shortName":"LPB",
"version":"0.01",
"author": "thyttan",
"description": "Buzz at boot after a long press to indicate the watch was reinitiated at your command.",
"icon": "app.png",
"type": "bootloader",
Expand Down
1 change: 1 addition & 0 deletions apps/messagesmusic/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name":"Messages Music",
"shortName": "Music",
"version":"0.05",
"author": "thyttan",
"description": "Uses Messages library to push a music message which in turn displays Messages app music controls",
"icon":"app.png",
"type": "app",
Expand Down
1 change: 1 addition & 0 deletions apps/miclock2/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "miclock2",
"name": "Mixed Clock 2",
"version": "0.05",
"author": "nxdefiant",
"description": "White color variant of the Mixed Clock with thicker clock hands for better readability in the bright sunlight, extra space under the clock for widgets and seconds in the digital clock.",
"icon": "clock-mixed.png",
"type": "clock",
Expand Down
1 change: 1 addition & 0 deletions apps/msgtwscr/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "msgtwscr",
"name": "Message Twist to Scroll",
"version":"0.01",
"author": "thyttan",
"description": "Temporarily activate scroll on twist function when a new message triggers the message app.",
"icon": "app.png",
"tags": "messages,tweak,scroll",
Expand Down
1 change: 1 addition & 0 deletions apps/msgwakefup/metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "id": "msgwakefup",
"name": "Message wake on face up",
"version":"0.02",
"author": "thyttan",
"description": "Temporarily activate wake on face up function when a new message is auto displayed.",
"icon": "app.png",
"tags": "messages,tweak",
Expand Down
1 change: 1 addition & 0 deletions apps/myprofile/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"icon": "app.png",
"type": "settings",
"version":"0.02",
"author": "nxdefiant",
"description": "Configure your personal profile. All settings are optional and only stored on the watch.",
"readme": "README.md",
"tags": "tool,utility",
Expand Down
1 change: 1 addition & 0 deletions apps/pace/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "pace",
"name": "Pace",
"version": "0.06",
"author": "bobrippling",
"description": "Show pace and time running splits",
"icon": "app.png",
"tags": "run,running,fitness,outdoors",
Expand Down
3 changes: 2 additions & 1 deletion apps/podadrem/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
"name": "Podcast Addict Remote",
"shortName": "PA Remote",
"version": "0.11",
"author": "thyttan",
"description": "Control Podcast Addict on your android device.",
"readme": "README.md",
"type": "app",
"tags": "remote,podcast,podcasts,radio,player,intent,intents,gadgetbridge,podadrem,pa remote",
"tags": "remote,podcast,podcasts,radio,player,intent,intents,gadgetbridge,podadrem,pa remote",
"icon": "app.png",
"screenshots" : [ {"url":"screenshot1.png"}, {"url":"screenshot2.png"} ],
"supports": ["BANGLEJS2"],
Expand Down
1 change: 1 addition & 0 deletions apps/popconlaunch/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Popcon Launcher",
"shortName": "Popcon",
"version": "0.05",
"author": "bobrippling",
"description": "Launcher modification - your launchers will display your favourite (popular) apps first. Overrides `readJSON`, may slow down your watch",
"readme": "README.md",
"icon": "app.png",
Expand Down
1 change: 1 addition & 0 deletions apps/promenu/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "promenu",
"name": "Pro Menu",
"version": "0.15",
"author": "bobrippling",
"description": "Replace the built in menu function. Supports Bangle.js 1 and Bangle.js 2.",
"icon": "icon.png",
"type": "bootloader",
Expand Down
1 change: 1 addition & 0 deletions apps/recorder/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "Recorder",
"shortName": "Recorder",
"version": "0.48",
"author": "bobrippling",
"description": "Record GPS position, heart rate and more in the background, then download to your PC.",
"icon": "app.png",
"tags": "tool,outdoors,gps,widget,clkinfo",
Expand Down
1 change: 1 addition & 0 deletions apps/rep/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "rep",
"name": "Rep",
"version":"0.03",
"author": "bobrippling",
"description": "Time running reps, using a rep schedule/program uploaded via the app loader",
"icon": "app.png",
"tags": "run,running,fitness,outdoors",
Expand Down
1 change: 1 addition & 0 deletions apps/runplus/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "runplus",
"name": "Run+",
"version": "0.30",
"author": "thyttan",
"description": "Displays distance, time, steps, cadence, pace and more for runners. Based on the Run app, but extended with additional screens for heart rate interval training and individual stat focus.",
"icon": "app.png",
"tags": "run,running,fitness,outdoors,gps,karvonen,karvonnen",
Expand Down
3 changes: 2 additions & 1 deletion apps/scrolly/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"icon": "app.png",
"screenshots" : [ { "url":"screenshot.gif" } ],
"version":"0.01",
"author": "retcurve",
"description": "Scrolly is a simple app designed to display scrolling text across your screen in a clean and dynamic way. Perfect for announcements or just for fun!",
"readme":"README.md",
"type": "app",
Expand All @@ -15,7 +16,7 @@
{"name":"scrolly.app.js","url":"app.js"},
{"name":"scrolly.img","url":"app-icon.js","evaluate":true}
],
"data": [
"data": [
{"name":"scrolly.json"}
]
}
1 change: 1 addition & 0 deletions apps/sevenmin/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "Seven minute workout",
"shortName": "7 min wo",
"version": "0.02",
"author": "thyttan",
"description": "A basic implementation of the famous consice workout",
"icon": "icon.png",
"type":"app",
Expand Down
1 change: 1 addition & 0 deletions apps/sleepphasealarm/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"name": "SleepPhaseAlarm",
"shortName": "SleepPhaseAlarm",
"version": "0.18",
"author": "nxdefiant",
"description": "Uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments (ESS, see https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time when you are almost already awake.",
"icon": "app.png",
"tags": "tool,alarm",
Expand Down
1 change: 1 addition & 0 deletions apps/sportmode/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"shortName":"Sport mode",
"icon": "app.png",
"version":"0.01",
"author": "nxdefiant",
"description": "Allows to set the sport mode of the Heart rate monitor in app settings.",
"type": "bootloader",
"tags": "health",
Expand Down
1 change: 1 addition & 0 deletions apps/spotrem/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"id": "spotrem",
"name": "Remote for Spotify",
"version": "0.13",
"author": "thyttan",
"description": "Control spotify on your android device.",
"readme": "README.md",
"type": "app",
Expand Down
Loading
Loading