Skip to content

Voidsec hub/intelligent ptolemy vp3nah - #2491

Open
CypherNova1337 wants to merge 8 commits into
InfiniTimeOrg:mainfrom
CypherNova1337:voidsec-hub/intelligent-ptolemy-vp3nah
Open

CypherNova1337 wants to merge 8 commits into
InfiniTimeOrg:mainfrom
CypherNova1337:voidsec-hub/intelligent-ptolemy-vp3nah

Conversation

@CypherNova1337

Copy link
Copy Markdown

No description provided.

- Add NetRunner watch face with chromatic-aberration time, random
  glitch bursts, HUD lines, seconds sweep, vitals and hex epoch
- Add Matrix digital rain app, tap to cycle color palettes
- Retheme UI with neon cyan/magenta palette and sharp outlined buttons
- Recolor Terminal watch face as a root shell
- Drop Paint, Paddle, 2048, Dice, Metronome and non-cyberpunk watch
  faces from the default build
- Make NetRunner the default watch face
- Document the fork in the README with simulator screenshots
- Badge app shows the handle and a QR code linking to GitHub, keeps
  the screen on while open. QR image is generated by
  tools/badge/generate_badge_qr.py
- Move the handle to src/Identity.h and use it as the BLE device name
- Start heart rate measurement at boot and default the background
  interval to 5 minutes
- Back off background measurement to every 5 minutes when no pulse is
  found, so continuous mode doesn't run the sensor while off the wrist
- Enable heart rate measurement when a background interval is picked
  in settings
- NetRunner shows --- instead of 000 when there is no pulse
- Log every connection that doesn't encrypt with the bonded phone:
  time, address, duration, pairing attempts and failures
- Raise an UNKNOWN LINK notification with vibration when a bond exists
  or pairing fails, 10 seconds after connecting or on disconnect
- Persist the log to /intrusion.dat, keep the last 16 entries
- Add Intrusion Log app with alert toggle and wipe button
- Build CI artifacts for voidsec-hub branches
- Document Gadgetbridge install steps
- Show the answer on the main line after pressing =, clear the operator
  so the next digit starts a new number and the next operator continues
  from the answer
- Ignore presses that land between buttons, which replayed the
  previous key because LVGL keeps it as the active button
- Watch face shows ENV NO WEATHER instead of NO SIGNAL when the phone
  hasn't sent weather in the last 24 hours
- Record wrist movement per minute for the last 24 hours from the
  accelerometer samples the system task already reads
- Score minutes asleep from sustained movement around them, find the
  night as the longest sleep block allowing wake-ups up to an hour
- Treat charging and 2.5 hours of perfect stillness as off the wrist
- Estimate still/light/awake stages and keep average and lowest heart
  rate per night
- Store the last 7 nights in /sleep.dat, finalized hourly and saved
  while the screen is on
- Add Sleep app with hypnogram, stats and history
- Recognize AirTags and Find My accessories separated from their
  owner, SmartTag, Tile, Chipolo, Google Find My Device tags and DULT
  beacons from advertising data
- Alert when a tracker shows up in 3+ scans over 30+ minutes, forget
  trackers not seen for 20 minutes
- Optional automatic passive scan for 8 seconds every 5 minutes,
  setting stored in /trackers.dat, off by default
- Trackers app scans continuously while open and lists trackers by
  signal strength for finding them; the live scan expires on its own
  when the screen turns off
- Remember 32 devices for duplicate filtering while scanning
@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Build size and comparison to main:

Section Size Difference
text 358240B -29744B
data 880B -56B
bss 27624B 4688B

Run in InfiniEmu

The movement-count scoring marked most of a real night as awake. Replace
it with the open methods used by GGIR for wrist accelerometers:

- Record the forearm angle from 5 second averages, keep per-minute
  median angle change and posture changes over 5 degrees
- Find the sleep period with HDCZA: 5 minute rolling median below the
  10th percentile x 15 (0.13-0.5 degrees), drop blocks of 30 minutes or
  less, fill gaps under 60 minutes, keep the longest block
- Score sleep inside it as sustained inactivity: no posture change for
  more than 5 minutes (van Hees 2015)
- Detect non-wear as under 50mg range on 2 of 3 axes for 60 minutes
- Drop the motion-based sleep stages, show time in bed, awake time,
  wake-ups and efficiency instead
- Bump the history file version, nights stored by the old scoring are
  discarded
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant