Commit Graph

38 Commits

Author SHA1 Message Date
pe1hvh
52d15c83a7 feat: add offline BBS (Bulletin Board System) for emergency mesh communication(#V1.14.0)
Implements a fully offline Bulletin Board System for use on MeshCore
mesh networks, designed for emergency communication organisations
(NoodNet Zwolle, NoodNet OV, Dalfsen).

New files:
- services/bbs_service.py: SQLite-backed persistence layer with
  BbsMessage dataclass, BbsService (post/read/purge) and
  BbsCommandHandler (!bbs post/read/help mesh command parser).
  Whitelist enforcement via sender public key (silent drop on
  unknown sender). Per-channel configurable regions, categories
  and retention period.
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Region filter is conditionally visible based on channel config.

Modified files:
- config.py: BBS_CHANNELS configuration block added (ch 2/3/4).
  Version bumped to 1.14.0.
- services/bot.py: MeshBot accepts optional bbs_handler parameter.
  Incoming !bbs commands are routed to BbsCommandHandler before
  keyword matching; no changes to existing bot behaviour.
- gui/dashboard.py: BbsPanel registered as standalone panel with
  📋 BBS drawer menu item.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage: ~/.meshcore-gui/bbs/bbs_messages.db (SQLite, stdlib only).
No new external dependencies.
2026-03-14 17:09:08 +01:00
pe1hvh
7d61b7ddd2 feat: add offline BBS (Bulletin Board System) for emergency mesh communication(#v1.14.0)
Implements a fully offline Bulletin Board System for use on MeshCore
mesh networks, designed for emergency communication organisations
(NoodNet Zwolle, NoodNet OV, Dalfsen).

New files:
- services/bbs_service.py: SQLite-backed persistence layer with
  BbsMessage dataclass, BbsService (post/read/purge) and
  BbsCommandHandler (!bbs post/read/help mesh command parser).
  Whitelist enforcement via sender public key (silent drop on
  unknown sender). Per-channel configurable regions, categories
  and retention period.
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Region filter is conditionally visible based on channel config.

Modified files:
- config.py: BBS_CHANNELS configuration block added (ch 2/3/4).
  Version bumped to 1.14.0.
- services/bot.py: MeshBot accepts optional bbs_handler parameter.
  Incoming !bbs commands are routed to BbsCommandHandler before
  keyword matching; no changes to existing bot behaviour.
- gui/dashboard.py: BbsPanel registered as standalone panel with
  📋 BBS drawer menu item.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage: ~/.meshcore-gui/bbs/bbs_messages.db (SQLite, stdlib only).
No new external dependencies.
2026-03-14 16:47:34 +01:00
pe1hvh
395db80c97 feat: add offline BBS (Bulletin Board System) for emergency mesh communication(#v1.14.0)
Implements a fully offline Bulletin Board System for use on MeshCore
mesh networks, designed for emergency communication organisations
(NoodNet Zwolle, NoodNet OV, Dalfsen).

New files:
- services/bbs_service.py: SQLite-backed persistence layer with
  BbsMessage dataclass, BbsService (post/read/purge) and
  BbsCommandHandler (!bbs post/read/help mesh command parser).
  Whitelist enforcement via sender public key (silent drop on
  unknown sender). Per-channel configurable regions, categories
  and retention period.
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Region filter is conditionally visible based on channel config.

Modified files:
- config.py: BBS_CHANNELS configuration block added (ch 2/3/4).
  Version bumped to 1.14.0.
- services/bot.py: MeshBot accepts optional bbs_handler parameter.
  Incoming !bbs commands are routed to BbsCommandHandler before
  keyword matching; no changes to existing bot behaviour.
- gui/dashboard.py: BbsPanel registered as standalone panel with
  📋 BBS drawer menu item.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage: ~/.meshcore-gui/bbs/bbs_messages.db (SQLite, stdlib only).
No new external dependencies.
2026-03-14 16:38:33 +01:00
pe1hvh
21e266ceb5 feat: add offline BBS with GUI configuration and persistent storage(#v1.14.0)
Implements a fully offline Bulletin Board System for emergency mesh
communication (NoodNet Zwolle, NoodNet OV, Dalfsen and similar
organisations).

New files:
- services/bbs_config_store.py: Manages ~/.meshcore-gui/bbs/bbs_config.json.
  Thread-safe, atomic writes. Created on first run. Channels are
  enabled and configured at runtime via the GUI — no code changes
  required.
- services/bbs_service.py: SQLite persistence at
  ~/.meshcore-gui/bbs/bbs_messages.db. WAL-mode enabled so multiple
  simultaneous instances (e.g. 800 MHz + 433 MHz) share the same
  bulletin board safely. BbsCommandHandler parses !bbs post/read/help
  mesh commands with live config from BbsConfigStore. Whitelist
  enforcement via sender public key (silent drop on unknown key).
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Settings section lists all active device channels; per channel:
  enable toggle, categories, regions, retention and key whitelist.
  Changes take effect immediately without restart.

Modified files:
- services/bot.py: MeshBot accepts optional bbs_handler; !bbs commands
  are routed to BbsCommandHandler before keyword matching.
- config.py: BBS_CHANNELS removed (config now lives in bbs_config.json).
  Version bumped to 1.14.0.
- gui/dashboard.py: BbsConfigStore and BbsService instantiated and
  shared across handler and panel. BBS drawer menu item added.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage layout:
  ~/.meshcore-gui/bbs/bbs_config.json   — channel configuration
  ~/.meshcore-gui/bbs/bbs_messages.db   — SQLite message store

No new external dependencies (SQLite is stdlib).
2026-03-14 08:43:50 +01:00
pe1hvh
430628c945 feat: add offline BBS with GUI configuration and persistent storage(#v1.14.0)
Implements a fully offline Bulletin Board System for emergency mesh
communication (NoodNet Zwolle, NoodNet OV, Dalfsen and similar
organisations).

New files:
- services/bbs_config_store.py: Manages ~/.meshcore-gui/bbs/bbs_config.json.
  Thread-safe, atomic writes. Created on first run. Channels are
  enabled and configured at runtime via the GUI — no code changes
  required.
- services/bbs_service.py: SQLite persistence at
  ~/.meshcore-gui/bbs/bbs_messages.db. WAL-mode enabled so multiple
  simultaneous instances (e.g. 800 MHz + 433 MHz) share the same
  bulletin board safely. BbsCommandHandler parses !bbs post/read/help
  mesh commands with live config from BbsConfigStore. Whitelist
  enforcement via sender public key (silent drop on unknown key).
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Settings section lists all active device channels; per channel:
  enable toggle, categories, regions, retention and key whitelist.
  Changes take effect immediately without restart.

Modified files:
- services/bot.py: MeshBot accepts optional bbs_handler; !bbs commands
  are routed to BbsCommandHandler before keyword matching.
- config.py: BBS_CHANNELS removed (config now lives in bbs_config.json).
  Version bumped to 1.14.0.
- gui/dashboard.py: BbsConfigStore and BbsService instantiated and
  shared across handler and panel. BBS drawer menu item added.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage layout:
  ~/.meshcore-gui/bbs/bbs_config.json   — channel configuration
  ~/.meshcore-gui/bbs/bbs_messages.db   — SQLite message store

No new external dependencies (SQLite is stdlib).
2026-03-14 08:37:10 +01:00
pe1hvh
d24d38f543 feat: add offline BBS with GUI configuration and persistent storage(#v1.14.0)
Implements a fully offline Bulletin Board System for emergency mesh
communication (NoodNet Zwolle, NoodNet OV, Dalfsen and similar
organisations).

New files:
- services/bbs_config_store.py: Manages ~/.meshcore-gui/bbs/bbs_config.json.
  Thread-safe, atomic writes. Created on first run. Channels are
  enabled and configured at runtime via the GUI — no code changes
  required.
- services/bbs_service.py: SQLite persistence at
  ~/.meshcore-gui/bbs/bbs_messages.db. WAL-mode enabled so multiple
  simultaneous instances (e.g. 800 MHz + 433 MHz) share the same
  bulletin board safely. BbsCommandHandler parses !bbs post/read/help
  mesh commands with live config from BbsConfigStore. Whitelist
  enforcement via sender public key (silent drop on unknown key).
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Settings section lists all active device channels; per channel:
  enable toggle, categories, regions, retention and key whitelist.
  Changes take effect immediately without restart.

Modified files:
- services/bot.py: MeshBot accepts optional bbs_handler; !bbs commands
  are routed to BbsCommandHandler before keyword matching.
- config.py: BBS_CHANNELS removed (config now lives in bbs_config.json).
  Version bumped to 1.14.0.
- gui/dashboard.py: BbsConfigStore and BbsService instantiated and
  shared across handler and panel. BBS drawer menu item added.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage layout:
  ~/.meshcore-gui/bbs/bbs_config.json   — channel configuration
  ~/.meshcore-gui/bbs/bbs_messages.db   — SQLite message store

No new external dependencies (SQLite is stdlib).
2026-03-14 08:23:06 +01:00
pe1hvh
e3bd422dfd feat: add offline BBS (Bulletin Board System) for emergency mesh communication(#v1.14.0)
Implements a fully offline Bulletin Board System for use on MeshCore
mesh networks, designed for emergency communication organisations
(NoodNet Zwolle, NoodNet OV, Dalfsen).

New files:
- services/bbs_service.py: SQLite-backed persistence layer with
  BbsMessage dataclass, BbsService (post/read/purge) and
  BbsCommandHandler (!bbs post/read/help mesh command parser).
  Whitelist enforcement via sender public key (silent drop on
  unknown sender). Per-channel configurable regions, categories
  and retention period.
- gui/panels/bbs_panel.py: Dashboard panel with channel selector,
  region/category filters, scrollable message list and post form.
  Region filter is conditionally visible based on channel config.

Modified files:
- config.py: BBS_CHANNELS configuration block added (ch 2/3/4).
  Version bumped to 1.14.0.
- services/bot.py: MeshBot accepts optional bbs_handler parameter.
  Incoming !bbs commands are routed to BbsCommandHandler before
  keyword matching; no changes to existing bot behaviour.
- gui/dashboard.py: BbsPanel registered as standalone panel with
  📋 BBS drawer menu item.
- gui/panels/__init__.py: BbsPanel re-exported.

Storage: ~/.meshcore-gui/bbs/bbs_messages.db (SQLite, stdlib only).
No new external dependencies.
2026-03-14 08:05:30 +01:00
pe1hvh
64b6c62125 Merge pull request #26 from pe1hvh/bugfix/v1.13.5
fix: route back-button and map popup flicker (#1.13.5)
2026-03-14 05:34:01 +01:00
pe1hvh
71a5ebca74 fix: route back-button and map popup flicker (#1.13.5)
- Replace two fixed-destination back-buttons on the route page with a
  single arrow_back button using window.history.back(), so navigation
  always returns to the calling screen (Messages or Archive).

- Guard setIcon() and setPopupContent() in applyDevice/applyContacts
  behind isPopupOpen() to prevent popup flickering on the 500 ms
  update tick.

- Set fadeAnimation: false and markerZoomAnimation: false on both
  Leaflet map instances (main map and route map) to eliminate popup
  flash on first click, particularly noticeable on Raspberry Pi.
2026-03-14 05:25:07 +01:00
pe1hvh
4227f00e04 Merge pull request #25 from pe1hvh/hotfix/room
v1.13.1 → v1.13.4 — Bugfix series with significant performance gains
2026-03-13 07:31:33 +01:00
pe1hvh
5dc4bb1ee9 Update CHANGELOG.md 2026-03-13 07:24:46 +01:00
pe1hvh
5cd13f2d98 HotFixRoomServer 2026-03-13 04:01:33 +01:00
pe1hvh
02e37bad16 Revert 2026-03-13 03:58:19 +01:00
pe1hvh
34d512ef16 RoomServerFix 2026-03-13 03:45:32 +01:00
pe1hvh
3d16b1586a HotFix5 2026-03-12 21:50:26 +01:00
pe1hvh
3e7b44f8ad HotFix5 2026-03-12 21:30:44 +01:00
pe1hvh
a8e148f1a6 HotFix3 2026-03-12 21:19:40 +01:00
pe1hvh
8774f6c036 Update shared_data.py 2026-03-12 20:24:48 +01:00
pe1hvh
bf031f857f HotFix 2026-03-12 18:12:13 +01:00
pe1hvh
11dac3e875 hOTfIX 2026-03-12 18:00:42 +01:00
pe1hvh
3cf14f8758 HotFix 2026-03-12 17:50:44 +01:00
pe1hvh
49c8fb338e HotFixRoom 2026-03-12 16:40:58 +01:00
pe1hvh
dbecf7ac24 HotFixRoomServer 2026-03-12 16:23:56 +01:00
pe1hvh
97edf22efb HotFixRoomServer 2026-03-12 16:00:26 +01:00
pe1hvh
72167ba130 HotFix3 2026-03-12 14:26:38 +01:00
pe1hvh
637551cdad HotFix1 2026-03-12 13:49:47 +01:00
pe1hvh
ec1c36373e Update dashboard.py 2026-03-12 13:37:24 +01:00
pe1hvh
c30eb5a467 HotFixPerformance 2026-03-12 13:15:58 +01:00
pe1hvh
794f08c780 HotFix3 2026-03-12 06:20:40 +01:00
pe1hvh
d2a63c784a HotFix2 2026-03-12 06:12:16 +01:00
pe1hvh
fa7417d33e HotFix 2026-03-12 06:02:31 +01:00
pe1hvh
b5fc0ec388 v1.13.2 BugFix 2026-03-11 05:54:48 +01:00
pe1hvh
51f6456da9 v1.13.2 BugFix 2026-03-11 05:37:55 +01:00
pe1hvh
dd39793f69 Update config.py 2026-03-10 05:07:14 +01:00
pe1hvh
00b70d6448 Add image to README for visual enhancement
Added an image to enhance the README and provide visual context.
2026-03-09 18:10:32 +01:00
pe1hvh
fc60756c91 Update README with new image and requirements
Added a new image to the README and updated requirements.
2026-03-09 18:08:18 +01:00
pe1hvh
f3e5fcb949 Revise CHANGELOG for version 1.13.1 updates
Updated CHANGELOG for version 1.13.1 to reflect changes in message icon consistency and related fixes.
2026-03-09 18:06:42 +01:00
pe1hvh
d8a7947c6b Initial clean code 2026-03-09 17:53:29 +01:00