- Add CONTACT_CLEANUP_ENABLED and CONTACT_CLEANUP_DAYS settings
- Implement remove_contact and schedule_remove_contact on device classes
- During contact sync, remove stale contacts from companion node
- Stale contacts (not advertised for > N days) not published to MQTT
- Update Python version to 3.13 across project config
- Remove brittle config tests that assumed default env values
Add documentation for the new MESHCORE_DEVICE_NAME environment variable
that was introduced in this PR. Updates include:
- Added to .env.example with description
- Added to Interface Settings table in README.md
- Added to CLI Reference examples in README.md
- Added to Interface configuration table in PLAN.md
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Co-authored-by: JingleManSweep <jinglemansweep@users.noreply.github.com>
Co-Authored-By: Claude <noreply@anthropic.com>
- Add meshcore_device_name field to InterfaceSettings
- Implement set_name() method in device interface (real and mock)
- Update receiver to set device name during initialization if configured
- Add --device-name CLI option with MESHCORE_DEVICE_NAME env var support
- Device name is set after time sync and before advertisement broadcast
Fixes#37🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: JingleManSweep <jinglemansweep@users.noreply.github.com>
Changed the startup advertisement from flood=False to flood=True
so that the device name is broadcast to the mesh network.
Fixes#38
Co-authored-by: JingleManSweep <jinglemansweep@users.noreply.github.com>
Update map node labels to show the full display name (friendly_name tag
→ advertised node name → public key prefix) instead of just the 2-char
public key prefix. This makes node labels consistent with the rest of
the site and easier to identify at a glance.
The backend already computes the correct display name in map.py:96-101,
so this change just uses that computed name in the label.
Co-authored-by: JingleManSweep <jinglemansweep@users.noreply.github.com>
Display relative time since last seen (e.g., '2m', '1h', '2d') in node
labels on the map page. This makes it easier to quickly identify how
recently nodes were active without opening the popup.
- Add formatRelativeTime() function to calculate time difference
- Update createNodeIcon() to include relative time in label
- Adjust icon size to accommodate additional text
- Format: keyPrefix (timeAgo) e.g., 'ab (5m)'
Fixes#33
Co-authored-by: JingleManSweep <jinglemansweep@users.noreply.github.com>