Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2088 commits
Select commit Hold shift + click to select a range
bb3131c
fw/comm/ble/ancs: keep alive-check timer alive after failed recovery
jplexer May 20, 2026
e9fa12b
services/light: clear user-controlled flag on backlight setting toggle
jplexer May 20, 2026
5c653d2
fw/applib/voice: reset backlight on mic window disappear
jplexer May 20, 2026
50e3ed2
fw/services/clock: drop legacy localtime->UTC pivot
jplexer May 21, 2026
3decc70
agents: ask for short and concise comments
gmarull May 21, 2026
ac2bbf6
notifications: add status bar style preference
jplexer May 21, 2026
02bb9ed
fw/services/alarms: add sound/tone fields to AlarmConfig
spr4bhu May 6, 2026
ecbf869
fw/services/alarms: add alarm_tones library with 4 tones
spr4bhu May 6, 2026
52be42d
fw/popups: play tone alongside vibration on alarm fire
spr4bhu May 6, 2026
51100bb
fw/apps/alarms: add sound and vibration to alarm detail menu
spr4bhu May 6, 2026
374b19e
fw/apps/alarms: default new alarms to sound off
spr4bhu May 6, 2026
084943f
fw/apps/alarms: clamp tone index in sound submenu
spr4bhu May 7, 2026
6925760
vibe_pattern: Anchor pattern timing to RTC
jplexer May 21, 2026
43e6b3b
fw/services/alarms: rewrite reveille tone to match the vibe score
jplexer May 21, 2026
7a45c23
fw/services/alarms: declare paired vibe score per tone
jplexer May 21, 2026
8cdeb37
fw/popups/alarm_popup: drive sound loop off vibe timer for paired tones
jplexer May 21, 2026
666ad80
fw/services/data_logging: chain flush to avoid KernelBG watchdog
jplexer May 21, 2026
a714073
fw/services/speaker: serialize public API and refill with a mutex
gmarull May 22, 2026
80bbcec
bluetooth-fw/nimble: re-sync NimBLE when host enabled but driver stat…
gmarull May 22, 2026
ed9f4b9
fw/popups/phone_ui: fit caller-id frame to font height
jplexer May 21, 2026
9c56b5a
fw/comm/ble/ancs: resubscribe when Notification Source goes silent
jplexer May 20, 2026
a00a26c
tools: add memfault_download_coredumps script
jplexer May 22, 2026
ad958f1
drivers/display: Log LCDC IRQs for coredumps
jplexer May 22, 2026
9460c52
docs: Prohibit issue references in code comments
jplexer May 22, 2026
d2b9e66
drivers/backlight: add backlight_refresh() to recover from silent chi…
jplexer May 20, 2026
dfe8a16
services/light: refresh backlight on no-op wake transitions
jplexer May 20, 2026
b322142
kconfig: switch to CONFIG_SPEAKER
jplexer May 21, 2026
69f73eb
drivers: Move audio code into drivers/speaker
jplexer May 21, 2026
91d6d03
kconfig: add OTP flash support
jplexer May 21, 2026
c47b6f1
kconfig: switch to CONFIG_PBLBOOT
jplexer May 21, 2026
af52993
treewide: Move software features to Kconfig
jplexer May 21, 2026
336c315
kconfig: add IS_BIGBOARD and update code
jplexer May 21, 2026
34efcfb
platform: Remove unused QEMU CPU helper
jplexer May 21, 2026
a525c78
wscript: Inline QEMU SPI flash args
jplexer May 21, 2026
d2d4057
platform: drop MIN_SDK_VERSION define
jplexer May 21, 2026
66e8f31
kconfig: add per-board Kconfig and BOARD_FAMILY symbols
jplexer May 21, 2026
afededb
treewide: migrate PLATFORM_ / BOARD_ to CONFIG_BOARD[_FAMILY]_
jplexer May 21, 2026
ce481ae
wscript: drop legacy PLATFORM_/BOARD_ define injection
jplexer May 21, 2026
bff367b
wscript: drop platform/ in favor of direct Kconfig env reads
jplexer May 21, 2026
1cb8230
fw: stop runaway long-press when modal steals focus
jplexer May 22, 2026
c3e7e1f
sdk: regenerate message key files when keys change
jplexer May 22, 2026
62c39fa
display settings: display the actual scaling type under Legacy Apps
aveao May 22, 2026
41df3a0
fw/drivers/ambient: add event-gated continuous sampling API
jplexer May 21, 2026
dcb88c8
fw/services/light: prime ALS across wake interaction windows
jplexer May 20, 2026
9ee6121
fw/apps/settings: prime ALS while the Backlight submenu is open
jplexer May 20, 2026
3989013
fw/board/obelix: retune ALS thresholds for 99ms IT regime
jplexer May 22, 2026
9d2b3e3
fw/board/getafix: retune ALS thresholds for 99ms IT regime
jplexer May 22, 2026
c05605c
fw/kernel/core_dump: capture LCPU RAM in coredumps
gmarull May 25, 2026
c4dc154
bluetooth-fw/nimble: crash on host reset to capture LCPU state
gmarull May 25, 2026
e91786b
third_party/nimble/transport/hci_sf32lb52: block on ACL pool exhaustion
gmarull May 25, 2026
e566b4c
fw/comm/ble: bound GATT notification handoff to keep HCI RX draining
gmarull May 25, 2026
181f844
fw/services/hrm: drop events when subscriber queue is full
gmarull May 25, 2026
6478d8a
Revert "fw/board/getafix: retune ALS thresholds for 99ms IT regime"
jplexer May 26, 2026
18c6494
Revert "fw/board/obelix: retune ALS thresholds for 99ms IT regime"
jplexer May 26, 2026
b728afe
Revert "fw/apps/settings: prime ALS while the Backlight submenu is open"
jplexer May 26, 2026
066f394
Revert "fw/services/light: prime ALS across wake interaction windows"
jplexer May 26, 2026
e235267
Revert "fw/drivers/ambient: add event-gated continuous sampling API"
jplexer May 26, 2026
2ae1b77
Revert "fw/services/light: linearly ramp dynamic backlight intensity"
jplexer May 26, 2026
7aca582
i18n: improve Italian (it_IT) translation
blu8 May 26, 2026
e55d267
applib/status_bar_layer: add large-bold clock mode
aveao May 22, 2026
d047293
notifications: add "Big & Bold" status bar style
aveao May 22, 2026
d11f4b8
fw/popups/notifications: render Big & Bold status bar
aveao May 22, 2026
af66718
notification settings: reword Status Bar setting to Clock Style
aveao May 22, 2026
552b151
tools: Add symbol download and cache for coredumps
jplexer May 26, 2026
abe78b5
fw/drivers/speaker/sf32lb52: stop leaking DMA handle in audec_init
jplexer May 26, 2026
b1056b7
ci: Add GitHub workflow to mirror to Codeberg
jplexer May 26, 2026
ffad2e5
Revert "ci: Add GitHub workflow to mirror to Codeberg"
jplexer May 26, 2026
bfa509d
fw/timeline: squish watchfaces for quick view
ericmigi May 4, 2026
c3e09f8
fw/timeline: default squish faces off
ericmigi May 4, 2026
2e71565
fw/compositor: detect unobstructed area use
ericmigi May 4, 2026
662666a
fw/timeline: add unsupported face modes
ericmigi May 5, 2026
fb84a20
fw/compositor: shift scaled unsupported faces
ericmigi May 5, 2026
811f445
fw/timeline: rename overlay mode setting
ericmigi May 5, 2026
c9c78ef
fw/settings: sync quick view face mode
ericmigi May 5, 2026
cb2c46f
fw/services/compositor: return after screenshot OOM
jplexer May 26, 2026
4e96010
tools/gdb_scripts: histogram unknown heap blocks by size
jplexer May 26, 2026
f142456
tools/gdb_scripts: cache script dir at load time
jplexer May 26, 2026
959f65e
tools/gdb_scripts: fix TaskTimer recognizer
jplexer May 26, 2026
81c6735
resources/asterix: mark GENERIC_CONFIRMATION_LARGE as builtin
jplexer May 27, 2026
d8424ba
fw/services/clock: skip hourly chime on the first timer tick
gmarull May 27, 2026
c47b308
fw/comm/ble: use slave latency for relaxed connection params
gmarull May 27, 2026
e3ca2da
fw/comm/ble/ancs: reject fake ANCS service instead of asserting
gmarull May 27, 2026
30eee2b
fw/comm/ble/ams: reject fake AMS service instead of asserting
gmarull May 27, 2026
8c1a32a
fw/kernel: pool TaskTimer allocations
jplexer May 28, 2026
6b59842
fw/services/battery: coalesce fuel gauge updates onto KernelBG
jplexer May 28, 2026
1f077ee
fw/popups/alarm_popup: cancel stale steps before re-vibing
jplexer May 28, 2026
611b4ac
services: increase ios notif pref max size
jplexer May 28, 2026
8c68737
fw/drivers/pmic/npm1300: configure NTCHOT charge-stop temperature
gmarull May 28, 2026
0fccbe5
fw/services/data_logging: flush on re-open ACK
jplexer May 28, 2026
6effaf9
fw/apps/prf/recovery_first_use: drop dead non-QR layout
gmarull May 28, 2026
4eb9a87
resources/prf: drop LAUNCH_APP and MOBILE_APP_ICON
gmarull May 28, 2026
325c619
resources/prf: remove orphan download_app_fu assets
gmarull May 28, 2026
5cefc27
fw/apps/system/settings: remove stale legal URL
gmarull May 28, 2026
ee53389
tools: remove obsolete upload lang pack tool
gmarull May 28, 2026
7d72e5d
fw/services/settings: recreate file on bad magic, not just remove
jplexer May 28, 2026
0ccdb1b
fw/comm/ble/ppogatt: rediscover on stale meta handle
jplexer May 28, 2026
84f1ef0
fw/services/analytics: track backlight intensity and timeout settings
gmarull May 28, 2026
01187ea
fw/services/notifications: add system-wide speaker volume preference
jplexer May 28, 2026
ae5e322
fw/services/speaker: scale playback by system volume preference
jplexer May 28, 2026
cad6ad2
fw/apps/settings: add Volume row to Sounds & Haptics
jplexer May 28, 2026
bdbfded
fw/drivers/task_watchdog: capture stuck task PC in immediate-coredump…
jplexer May 28, 2026
0aa016e
third_party/memfault: split Unexpected Reset by hardware cause
jplexer May 28, 2026
95b0b1e
fw: fall back to non-zero PC for HardFault reboot reasons
jplexer May 28, 2026
72ccee8
fw: capture caller LR for Assert/EventQueueFull, add Memfault fallbacks
jplexer May 28, 2026
112910d
fw/kernel/fault_handling: capture PC for Stack Overflow reboot reason
jplexer May 28, 2026
7f4d2f2
fw/applib: drop dead PLATFORM_TINTIN guards
gmarull May 28, 2026
cda7139
tests: drop dead PLATFORM_TINTIN and PLATFORM_SNOWY defines
gmarull May 28, 2026
b4b01f8
checkers: remove standalone clang static-analyzer plugins
gmarull May 28, 2026
d367dd0
build: drop applib-targets and the build_applib waf variant
gmarull May 28, 2026
38e3852
resources/prf: drop unused test images and typo'd codepoints
gmarull May 28, 2026
7658afb
resources/normal: remove tintin board tree
gmarull May 28, 2026
885b8f4
resources/normal/base: remove orphan image assets
gmarull May 28, 2026
8d44f7c
resources/normal: remove orphan board-tree assets
gmarull May 28, 2026
876a391
resources/normal: drop cross-board duplicate orphans
gmarull May 28, 2026
7f5424f
resources/normal/base/pbf: drop fonts duplicated under common/base/pbf
gmarull May 28, 2026
8201162
resources/normal/base/images: drop unreferenced source SVGs
gmarull May 28, 2026
298fd7e
tools/font: fix bit polarity in pbf_extract/pbf_repack
jplexer May 29, 2026
f175f1a
resources/fonts: fix inverted +/H/M glyphs in LECO_36_BOLD_NUMBERS
jplexer May 29, 2026
0eee131
tools/font: fix bit polarity in ttf2png
jplexer May 29, 2026
0ca31d5
resources/fonts: regenerate LECO fonts with ASCII printable coverage
jplexer May 29, 2026
c565680
fw/health: use SI unit strings (km, mi, h, min) for distance and dura…
jplexer May 29, 2026
7c8a484
fw/apps/demo/font_test: add font browser for LECO test coverage
jplexer May 29, 2026
4131723
tests/fixtures: refresh stale system resource snapshot
jplexer May 29, 2026
00bdcb2
fw/drivers/touch/cst816: recover when touch IC cannot communicate wit…
gmarull May 29, 2026
8cdf72d
fw/applib: expose quick launch button and action to apps
FWeynschenk May 31, 2026
27622a3
apps/launch_reason_demo: show quick launch button and action
FWeynschenk Jun 1, 2026
cc47081
fw/resource: map system resources zero-copy on XIP flash
jplexer Jun 1, 2026
d1708d3
fw/resource: cache resolved app resource entries
jplexer Jun 1, 2026
58f4018
bluetooth-fw/nimble: crash instead of abandoning a timed-out host start
gmarull Jun 1, 2026
f3ac9b8
bluetooth-fw/nimble: drop now-redundant host start reconciliation
gmarull Jun 1, 2026
d437284
tools/readcore: tolerate erased-flash terminator padding
jplexer Jun 1, 2026
02a44b2
fw/kernel/core_dump: dump LCPU RAM last and only when its domain is up
jplexer Jun 1, 2026
56eeca9
fw/applib/graphics: only pre-load glyph bitmaps when rendering
jplexer Jun 1, 2026
83efa32
applib: Add Moddable debug flag and bump SDK
jplexer Jun 1, 2026
dacd9d3
bluetooth: Increase SW_REVISION_LEN to 8
jplexer Jun 1, 2026
fac6968
fw/services/analytics: actually pack the native heartbeat record
gmarull Jun 2, 2026
7c0ee9e
treewide: convert more wscripts to wscript_build
jplexer Jun 1, 2026
69b93fc
waftools/kconfig: fix menuconfig
jplexer Jun 1, 2026
9ac0d91
bluetooth-fw: select controller via Kconfig and use wscript_build
jplexer Jun 1, 2026
f9b9615
build: move non-build commands to own tool (pbl)
jplexer Jun 1, 2026
592046e
fw/boards: tweak battery capacity hours
gmarull Jun 2, 2026
8751072
flash_region: rename MFG_STATE partition to MFG_BATTERY_STATE
gmarull Jun 3, 2026
738e64d
flash_region: add MFG_RESULTS partition
gmarull Jun 3, 2026
64fc759
mfg: persist test results to MFG_RESULTS flash
gmarull Jun 3, 2026
8757476
mfg: add menu entry to reset MFG_RESULTS
gmarull Jun 3, 2026
52388c4
drivers/vibe: fix AW86225 F0 calibration math and trim writes
gmarull Jun 3, 2026
ac86abc
mfg: persist AW86225 vibration calibration across reboots
gmarull Jun 3, 2026
5b197cf
mfg: retry vibration calibration up to 3 times
gmarull Jun 3, 2026
1cb8cb4
fw/apps/prf/mfg_als: tweak getafix ALS range
gmarull Jun 3, 2026
3908935
tools: Remove maybe_import_internal helper
jplexer Jun 2, 2026
8519e4e
voice: Remove debug and codec test support
jplexer Jun 2, 2026
0375ef6
build: Remove internal SDK build option
jplexer Jun 2, 2026
5ecb2f6
build: move lang commands from wscript to pbl
jplexer Jun 2, 2026
32e689a
build: convert applib wscript to wscript_build
jplexer Jun 2, 2026
b7cd65e
build: convert src/idl wscripts to wscript_build
jplexer Jun 2, 2026
485ed8d
build: move sdk wscript to wscript_build
jplexer Jun 2, 2026
ae94819
build: move stored_apps wscript to wscript_build
jplexer Jun 2, 2026
5938bdc
build: move tests wscript to wscript_build
jplexer Jun 2, 2026
923d860
test_images: remove backslash from filename
ck-telecom Jun 3, 2026
b7bed6d
ci: bump GitHub Actions to Node 24 runtimes
gmarull Jun 3, 2026
ad07673
ci: drop configure-aws-credentials for log hash upload
gmarull Jun 3, 2026
3c3bd1a
fw/touch: honor global kill switch for gestures and sensor power
gmarull Jun 5, 2026
e802b28
bluetooth: advertise BR/EDR Not Supported on BLE-only watches
yoxcu Jun 5, 2026
916fdbf
bluetooth-fw/nimble: report persistent bond state in pairing service
gmarull Jun 5, 2026
8c9f017
fw/coredump: wake LCPU during dump so BLE crashes capture its RAM
gmarull Jun 5, 2026
ef599d9
tools/gitlint: enforce Signed-off-by matches commit author
gmarull Jun 9, 2026
0c300ca
fw/applib: undef alloca before redefining it again
imax9000 Jun 7, 2026
e25a7f8
tools/snowy_colors: convert to py3 and update header template
imax9000 Jun 7, 2026
ccc3eb6
tools/snowy_colors: re-order fields in GColorFromRBGA macro
imax9000 Jun 7, 2026
c499ae9
tools/gitlint: enforce author name has at least 2 words
gmarull Jun 9, 2026
3d92f77
tools/gitlint: block configurable author email domains
gmarull Jun 9, 2026
20bba04
apps/system/timeline: fix watchface launch arguments
soxfox42 Jun 8, 2026
6e608bd
apps/system/timeline: fix past/future swap when timeline full launche…
soxfox42 Jun 8, 2026
274a4b1
apps/system/timeline: correct transition animation direction during s…
soxfox42 Jun 8, 2026
c345835
shell: move Timeline Past next to Timeline Future
soxfox42 Jun 8, 2026
086c1ed
build: migrate debug options to Kconfig
gmarull Jun 9, 2026
8fc2b3b
build: migrate --mfg to CONFIG_MFG
gmarull Jun 9, 2026
fbb949a
build: migrate logging options to Kconfig
gmarull Jun 9, 2026
8290f12
build: migrate --sdkshell to Kconfig
gmarull Jun 9, 2026
b29fc88
build: migrate compiler options to Kconfig
gmarull Jun 9, 2026
d57dc5b
build: migrate RECOVERY_FW define to Kconfig
gmarull Jun 9, 2026
7e713e1
fw: update stale configure-flag mentions in comments
gmarull Jun 9, 2026
7289a22
fw/drivers/speaker/nrf5: apply volume across codec power states
jplexer Jun 10, 2026
c6517fb
bluetooth-fw/nimble: hand ATT errors back as raw spec codes
jplexer Jun 10, 2026
4ce6853
fw/comm/ble/ancs: raise fetched title length to 128 bytes
jplexer Jun 10, 2026
6fec49a
fw/services/notifications: match ANCS subtitle in filtering rules
jplexer Jun 10, 2026
3e547bd
fw/popups/phone_ui: stop the ring vibe loop after 90 seconds
jplexer Jun 10, 2026
39f7af9
build: update pbl for Kconfig env migration
gmarull Jun 11, 2026
e928499
moddable: update to newest moddable sdk
jplexer Jun 11, 2026
db32a3c
third_party: update freertos submodule
jplexer Jun 9, 2026
be4d98d
fw/syscall: run unprivileged tasks' syscalls on a dedicated stack
jplexer Jun 9, 2026
6b66799
fw/syscall: report dedicated syscall-stack high-water via analytics
jplexer Jun 9, 2026
21e2f1a
fonts: drop redundant SoftBank PUA duplicate emoji
Mearman Jun 10, 2026
d8edc38
fonts: drop stray Cyrillic glyph from emoji fonts
Mearman Jun 10, 2026
846a1ca
test: re-enable passing quarantined unit tests
Mearman Jun 10, 2026
e1f6f8d
test/pebble_actions: strip UTF-8 BOM from stubs_common.h
Mearman Jun 10, 2026
c0a4b8d
test/ui: re-enable snapshot tests after round-display migration
Mearman Jun 10, 2026
a1abc9a
test/graphics: re-enable graphics tests after display migration
Mearman Jun 10, 2026
c9f2e26
test/comm_session: re-enable session and receive-router tests
Mearman Jun 10, 2026
0e8c888
test: re-enable wakeup, battery-ui-fsm and system-theme tests
Mearman Jun 10, 2026
bb18204
test/comm/ble: port gap_le_advert test to bt_driver advertising
Mearman Jun 10, 2026
aecaca0
test/comm/ble: port GATT and ANCS tests to bt_driver
Mearman Jun 11, 2026
d185896
test: re-enable kickstart and emoji-font snapshot tests
Mearman Jun 11, 2026
f45b4b2
test/services: re-enable runtime service tests
Mearman Jun 11, 2026
9f125ae
test: re-enable app-menu, battery-monitor and timezone tests
Mearman Jun 11, 2026
c474aca
test/graphics: re-enable draw_text_flow on the round display
Mearman Jun 11, 2026
2ca9554
test/graphics: re-quarantine pixel-diff tests that only passed on sta…
Mearman Jun 11, 2026
987c3ec
ci: keep going after a failing test so all failures are reported
Mearman Jun 11, 2026
199f8bb
test/services: drop duplicate app-fetch enum globals that break GNU ld
Mearman Jun 11, 2026
4799d9c
test/libc: re-quarantine floor and pow, they don't build on glibc
Mearman Jun 11, 2026
0618133
fw/system: add Zephyr-style log modules
gmarull Jun 11, 2026
2303f20
fw/services/activity: define activity log module
gmarull Jun 11, 2026
673e61b
bluetooth-fw/nimble: replace LOG_DOMAIN_BT with a bt log module
gmarull Jun 11, 2026
1ff66d2
fw/drivers/imu: define IMU log module, adopt it in lis2dw12
gmarull Jun 11, 2026
a93e6eb
tools/log_hashing: adopt Zephyr-like dehashed log format
gmarull Jun 11, 2026
91ec166
fw: make the log task prefix optional via Kconfig
gmarull Jun 11, 2026
feb3a28
resources: add Ukrainian localization for uk-UA
OleksandrPanforov Jun 10, 2026
0b87535
sdk: require pebble-tool 5.0.38
jplexer Jun 11, 2026
294c2af
tests/wscript: add -fno-common to host test CFLAGS
Mearman Jun 11, 2026
34f5f8d
libc/math: fix include order in floor.c and un-quarantine tests
Mearman Jun 11, 2026
69eb758
build/arm-gcc: add reproducibility flags to firmware toolchain
Mearman Jun 11, 2026
5f34924
tests/wscript: add floating-point determinism flags to host test CFLAGS
Mearman Jun 11, 2026
d545bf5
libc/math: replace pow test host-libm oracle with reference table
Mearman Jun 11, 2026
a6d58b6
libc/math: replace log test host-libm oracle with reference table
Mearman Jun 11, 2026
488aa14
tests/libc/math: ruff format reference generators
Mearman Jun 12, 2026
715407e
treewide: adopt per-module log levels across services and drivers
gmarull Jun 11, 2026
bd133af
fw/services/touch: drop TOUCH_DEBUG log wrapper
gmarull Jun 11, 2026
730ca5a
fw/voice: drop VOICE_LOG and VOICE_SPEEX_LOG wrappers
gmarull Jun 11, 2026
c8c4938
fw: drop ACCEL_LOG_DEBUG log wrapper
gmarull Jun 11, 2026
cfe4306
fw/drivers/qemu: drop QEMU_LOG_* log wrappers
gmarull Jun 11, 2026
5483b6d
fw/comm/ble: drop BLE_LOG wrappers, adopt bt log module
gmarull Jun 11, 2026
bf36639
fw/system: drop unused log domains
gmarull Jun 11, 2026
fcee757
fw: switch default log level to info
gmarull Jun 11, 2026
8164082
fw/comm/ble: drop TI advertising workaround getters
gmarull Jun 12, 2026
4ed8e06
flake.nix: add missing deps for qemu-pebble and sftool
jplexer Jun 12, 2026
edb42be
workflows: add nix check
jplexer Jun 12, 2026
94a0183
flake.nix: fix dev shell evaluation on aarch64-linux
jplexer Jun 12, 2026
1794282
third_party/hal_sifli: build HAL modules granularly via Kconfig
gmarull Jun 12, 2026
7e188c7
fw/services/settings: abort file rewrite cleanly on OOM
jplexer Jun 12, 2026
3ea26dc
fw/kernel: double the KernelMain stack to 4 KiB
jplexer Jun 12, 2026
d2cd45a
fw/process_management: double the app stack to 4 KiB
jplexer Jun 12, 2026
5bfaf13
comm/ble: implement GATT service-changed indication
Mearman Jun 11, 2026
2623924
test/comm/ble: re-enable gatt_service_changed_server with bt_driver f…
Mearman Jun 11, 2026
bbb872b
bluetooth-fw/nimble/gatt: adopt module-based logging
Mearman Jun 12, 2026
e4badb9
comm/ble: pass device address to bt_driver_gatt_send_changed_indication
Mearman Jun 12, 2026
4e62594
drivers/imu/lis2dw12: move config parameters to Kconfig
gmarull Jun 15, 2026
3184e8d
build: discover board options dynamically
gmarull Jun 15, 2026
e679cc7
build: migrate boards to revisions
gmarull Jun 15, 2026
e9d4aaf
build: adopt board-declared, west-style runners
gmarull Jun 15, 2026
9e76b7f
drivers/touch/cst816: reset chip after prolonged idle
gmarull Jun 15, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
70 changes: 70 additions & 0 deletions .agents/skills/working-with-qemu/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
name: working-with-qemu
description: Use when building, launching, debugging, or capturing screenshots of PebbleOS under QEMU.
---

# Working with QEMU

PebbleOS can run under a custom QEMU version shipped with the PebbleOS SDK.

## Configure & build

```sh
./pbl configure --board $BOARD
./pbl build
```

where `$BOARD` is any of the `qemu_*` boards:

- `qemu_emery`
- `qemu_flint`
- `qemu_gabbro`

QEMU boards target a specific platform, e.g. `qemu_emery` targets the Emery platform, which is the platform used by Pebble Time 2.

## Launch

```sh
./pbl qemu
```

The launched QEMU exposes:

- Interactive QEMU monitor on the launching terminal (`-monitor stdio`)
- Programmatic socket monitor (`-monitor unix:build/qemu-mon.sock`)
- Serial console over TCP on `localhost:12345` (console) and `localhost:12344` (pebble-tool)

UART1 output is also captured to `build/uart1.log`.

## Console

```sh
./pbl console
```

Requires QEMU to be running.
Uses the TCP serial port to connect to the QEMU console, and provides a prompt for sending commands and receiving responses.

## Screenshot

```sh
./pbl screenshot # defaults to build/screenshot.png
./pbl screenshot --screenshot-output /tmp/foo.png
```

Requires QEMU to be running.
Uses the programmatic socket monitor to capture a screenshot of the QEMU display and save it to disk.
Useful to validate or iterate on UI changes.

## Interaction

Keyboard input is captured by QEMU, so you can interact with the PebbleOS UI.
Keys can also be send programmatically over the socket monitor using the `sendkey` command.
They key mapping is:

| QEMU key | PebbleOS key |
| -------- | ------------ |
| `left` | `back` |
| `right` | `select` |
| `up` | `up` |
| `down` | `down` |
1 change: 1 addition & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ UseTab: Never
PointerAlignment: Right
ColumnLimit: 100
SortIncludes: Never
AllowShortFunctionsOnASingleLine: Empty
---
1 change: 1 addition & 0 deletions .claude/CLAUDE.md
1 change: 1 addition & 0 deletions .claude/skills
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# PebbleOS code owners.
#
# Everything is currently owned by the maintainers below. As the project
# grows, ownership may be split by area.

* @gmarull @jplexer
59 changes: 0 additions & 59 deletions .github/workflows/build-bootloader.yml

This file was deleted.

102 changes: 65 additions & 37 deletions .github/workflows/build-firmware.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,58 @@ on:
branches: [main]
pull_request:
branches: [main]
paths:
- '.github/workflows/build-firmware.yml'
- 'resources/**'
- 'sdk/**'
- 'src/**'
- 'stored_apps/**'
- 'tools/**'
- 'third_party/**'
- 'waftools/**'
- 'waf'
- 'wscript'

jobs:
build:
changes-firmware:
runs-on: ubuntu-24.04
permissions:
pull-requests: read
outputs:
should-build: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
steps:
- uses: dorny/paths-filter@v4
if: github.event_name == 'pull_request'
id: filter
with:
filters: |
src:
- '.github/workflows/build-firmware.yml'
- 'boards/**'
- 'platform/**'
- 'resources/**'
- 'sdk/**'
- 'src/**'
- 'stored_apps/**'
- 'tools/**'
- 'third_party/**'
- 'waftools/**'
- 'waf'
- 'wscript'

build-firmware:
needs: changes-firmware
if: needs.changes-firmware.outputs.should-build == 'true'
runs-on: ubuntu-24.04

container:
image: ghcr.io/pebble-dev/pebbleos-docker:v1
image: ghcr.io/coredevices/pebbleos-docker:v5

strategy:
matrix:
board: ["snowy_bb2", "spalding_bb2", "silk_bb2", "asterix", "obelix", "obelix_bb"]
board:
- asterix
- obelix@dvt
- obelix@pvt
- getafix@evt
- getafix@dvt
- getafix@dvt2

steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"

- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
Expand All @@ -48,16 +71,14 @@ jobs:
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}

- name: Node modules cache
uses: actions/cache@v4
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('third_party/jerryscript/jerryscript/js_tooling/package.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Set artifact board name
id: artifact_board
run: echo "NAME=$(printf '%s' "$BOARD" | tr @ _)" >> "$GITHUB_OUTPUT"
env:
BOARD: ${{ matrix.board }}

- name: Configure
run: ./waf configure --board ${{ matrix.board }}
run: ./waf configure --board '${{ matrix.board }}'

- name: Build
run: ./waf build
Expand All @@ -66,9 +87,9 @@ jobs:
run: ./waf bundle

- name: Store
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: firmware-${{ matrix.board }}
name: firmware-${{ steps.artifact_board.outputs.NAME }}
path: |
build/**/*.elf
build/**/*.pbz
Expand All @@ -77,17 +98,24 @@ jobs:
- name: Get Build ID
id: build_id
run: |
echo "BUILD_ID=$(arm-none-eabi-readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
echo "BUILD_ID=$(readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"

- name: Upload log hash dictionary
uses: Noelware/s3-action@2.3.1
if: ${{ github.event_name == 'push' }}
with:
access-key-id: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
secret-key: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
endpoint: ${{ vars.LOG_HASH_BUCKET_ENDPOINT }}
bucket: ${{ vars.LOG_HASH_BUCKET_NAME }}
files: |
build/src/fw/tintin_fw_loghash_dict.json
path-format: ${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json

if: ${{ github.event_name == 'push' && github.repository == 'coredevices/PebbleOS' }}
env:
AWS_ACCESS_KEY_ID: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
AWS_DEFAULT_REGION: us-east-1
run: |
pip install awscli
aws s3 cp build/src/fw/tintin_fw_loghash_dict.json \
"s3://${{ vars.LOG_HASH_BUCKET_NAME }}/${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json" \
--endpoint-url "${{ vars.LOG_HASH_BUCKET_ENDPOINT }}"

build-firmware-status:
needs: [changes-firmware, build-firmware]
if: always()
runs-on: ubuntu-24.04
steps:
- if: needs.build-firmware.result == 'failure' || needs.build-firmware.result == 'cancelled'
run: exit 1
Loading