Commit Graph

586 Commits

Author SHA1 Message Date
Louis King 4c6f8d19e8 Updated gitignore 2026-05-18 21:37:34 +01:00
JingleManSweep 452a1a270b Merge pull request #217 from ipnet-mesh/fix/packet-capture-typo
Updates
2026-05-18 21:19:38 +01:00
Louis King bd21044c84 Updates 2026-05-18 21:12:22 +01:00
JingleManSweep 8f9cc8219b Merge pull request #216 from ipnet-mesh/chore/packet-capture-tweaks
Updates
2026-05-18 21:09:08 +01:00
Louis King 994ecb61aa Updates 2026-05-18 21:06:47 +01:00
JingleManSweep f2ebaacb22 Merge pull request #215 from ipnet-mesh/chore/add-meshrank-contrib
Updated meshcore-packet-capture contrib example to support MeshRank
2026-05-18 16:43:49 +01:00
Louis King 59c24dd64a Updated meshcore-packet-capture contrib example to support MeshRank 2026-05-18 16:41:46 +01:00
JingleManSweep 9f184da07e Merge pull request #214 from ipnet-mesh/feat/sqlite3-docker-image
feat: add sqlite3 CLI to Docker image for database debugging
2026-05-17 16:45:11 +01:00
Louis King 66f3578bfe feat: add sqlite3 CLI to Docker image for database debugging
Operators can now exec into containers to inspect and query the SQLite
database directly without ad-hoc package installs that are lost on restart.
2026-05-17 16:43:05 +01:00
JingleManSweep cdb0c4ab4c Merge pull request #213 from ipnet-mesh/fix/advertisement-frequency
feat: add route type tracking and flood-only defaults for advertisements
v0.10.5
2026-05-15 21:06:59 +01:00
Louis King ec897e21e8 fix: improve advert type badge and observer count UX
- Move route type badge left of observer count on mobile cards
- Hide route type badge when unknown instead of showing 'Unknown'
- Change observer count badge to badge-primary for visibility
- Remove satellite dish icon from observer count badge
2026-05-15 21:05:08 +01:00
Louis King 9afff5bc70 feat: add route type tracking and flood-only defaults for advertisements
Track advertisement route type (flood/transport_flood/direct/transport_direct)
and node advert timestamp to distinguish zero-hop from flood adverts, improve
deduplication with 300s buckets, and default all dashboard/ad-API queries to
flood-only (including NULL for historical records).
2026-05-15 20:55:48 +01:00
JingleManSweep 2d5bea2460 Merge pull request #212 from ipnet-mesh/fix/recent-adverts-timestamps
fix: add public_key filter to advertisements API
2026-05-15 19:20:52 +01:00
Louis King f716e34bf5 fix: add public_key filter to advertisements API endpoint
The node detail page sends a public_key query param when fetching
recent advertisements, but the API silently ignored it (FastAPI
ignores unknown query params). This returned the 10 most recent ads
network-wide instead of for the specific node, making all dates
appear as today.
2026-05-15 19:18:35 +01:00
JingleManSweep 282281c52d Merge pull request #211 from ipnet-mesh/fix/node-retention-foreign-key
fix: enable async SQLite FK enforcement and clean up orphaned node relations
v0.10.4
2026-05-15 16:46:31 +01:00
Louis King 78d54b76e0 fix: enable async SQLite FK enforcement and clean up orphaned node relations
The async SQLAlchemy engine was missing PRAGMA foreign_keys=ON, causing
ondelete="CASCADE" constraints to be silently ignored when the collector
deleted inactive nodes. This left orphaned rows in user_profile_nodes,
event_observers, and node_tags, which crashed the API with AttributeError
when accessing assoc.node.public_key on null relationships.

- Add FK PRAGMA listener to async engine (database.py)
- Add null-guard in _build_adopted_nodes() and refactor list_profiles()
- Add cleanup_orphaned_node_relations() covering all 3 dependent tables
- Integrate orphan cleanup into scheduled retention cycle (subscriber.py)
- Add --node-cleanup/--node-cleanup-days flags to CLI cleanup command
- Fix truncate cascade warning to include user_profile_nodes/event_observers
- Add FK PRAGMA to test fixtures for cascade verification
- Add upgrade note to docs/upgrading.md
2026-05-15 16:43:38 +01:00
JingleManSweep 19d04b2a3b Merge pull request #208 from ipnet-mesh/chore/add-hub-networks-readme
docs: add MeshCore Hub Networks section and reorder translation alert
v0.10.3
2026-05-11 22:12:52 +01:00
Louis King 8fa56337bf docs: use bullet list for networks and move section after Overview 2026-05-11 22:10:57 +01:00
Louis King 13e915feef docs: separate UK and non-UK networks onto own lines 2026-05-11 22:07:52 +01:00
Louis King 0168d98990 docs: add MeshCore Hub Networks section and move translation alert to Contributing 2026-05-11 22:05:28 +01:00
JingleManSweep 4dae1a2e0a Merge pull request #203 from ipnet-mesh/renovate/tailwindcss-monorepo
chore(deps): update tailwindcss monorepo to v4.3.0
2026-05-11 22:02:20 +01:00
renovate[bot] b234183ad3 chore(deps): update tailwindcss monorepo to v4.3.0 2026-05-11 20:34:36 +00:00
JingleManSweep 069afca74c Merge pull request #207 from ipnet-mesh/chore/member-operator-fixes
fix: member count badge and operator-only filter dropdowns
2026-05-11 21:33:47 +01:00
Louis King 6385f22ac3 fix: member count badge and operator-only filter dropdowns
- Fix Members page badge showing higher count than displayed profiles
  by counting operators + members instead of all profiles
- Filter dropdowns on Nodes, Advertisements, and Map pages to show
  only operators (since only operators can adopt nodes)
- Add roles field to /map/data profiles for client-side filtering
- Add all_operators and filter_operator_label i18n keys (en, nl)
- Fix flash banner test isolation from .env NETWORK_ANNOUNCEMENT
2026-05-11 21:30:59 +01:00
JingleManSweep 92f56fa24b Merge pull request #206 from ipnet-mesh/feat/flash-banner
feat: add network announcement flash banner
v0.10.2
2026-05-09 12:29:47 +01:00
Louis King dd36a240ba feat: add network announcement flash banner with Markdown support
Add NETWORK_ANNOUNCEMENT env var that displays a dismissible flash banner
on every page when set. Announcement text supports Markdown (bold, italic,
links, inline code) rendered to HTML server-side at startup.
2026-05-09 12:27:20 +01:00
JingleManSweep 46b9c37eb9 Merge pull request #205 from ipnet-mesh/chore/hide-test-users
feat: hide users with test OIDC role from public views
v0.10.1
2026-05-09 00:33:24 +01:00
Louis King cee487ef42 feat: hide users with test OIDC role from public views
Add OIDC_ROLE_TEST config var (default: 'test') to exclude test users
from dashboard stats, member counts, and the Members page. Uses
server-side filtering with exclude_test query param (default: true) and
client-side defense-in-depth filter in members.js.

- Add oidc_role_test to WebSettings in config.py
- Exclude test users from operator/member count queries in dashboard.py
- Add exclude_test param to GET /api/v1/user/profiles in user_profiles.py
- Filter test users client-side in members.js via role_names.test config
- Wire oidc_role_test into app.state and frontend config in web/app.py
- Document OIDC_ROLE_TEST in AGENTS.md and .env.example
2026-05-09 00:31:03 +01:00
JingleManSweep bbc51531b5 Merge pull request #204 from ipnet-mesh/fix/members-profile
fix: allow role-less OIDC users to save their own profile
2026-05-08 23:51:53 +01:00
Louis King 829971c174 fix: allow role-less OIDC users to save their own profile
The web proxy's endpoint access mapping previously required one of
(admin/operator/member) roles for PUT /api/v1/user/profile. This
blocked OIDC users with no assigned roles from saving their own profile.

Add an _AUTHENTICATED sentinel access level that grants access to any
logged-in user regardless of roles, and apply it to the profile PUT
endpoint. The API layer already enforces owner-only checks via
RequireUserOwner, so the proxy role gate was redundant.
2026-05-08 23:49:21 +01:00
JingleManSweep fbb2ebc9c6 Merge pull request #201 from ipnet-mesh/chore/prerelease-tidying
docs: sync documentation with source code before release
v0.10.0
2026-05-06 19:26:04 +01:00
Louis King e034dfe81d docs: sync documentation with source code before release
Remove stale members.yaml references (post-members-refactor), add
missing env vars to AGENTS.md (API_HOST, WEB_HOST, CORS_ORIGINS,
NETWORK_*), fix project structure tree, add backward-compat note for
MQTT_TOPIC_PREFIX, and update nl.json/i18n.md members section.
2026-05-06 19:23:35 +01:00
JingleManSweep 3c343eb2fe Merge pull request #200 from ipnet-mesh/chore/markdown-parsing-map-filters
feat: improve markdown prose styling, map popup overlay, and collapsible filters
2026-05-06 19:04:56 +01:00
Louis King 9a65018235 chore: update web dashboard screenshot 2026-05-06 19:02:34 +01:00
Louis King 2f4a388a4c feat: improve markdown prose styling, map popup overlay, and collapsible filters
- Add .prose > :first-child margin-top:0 to eliminate double-spacing before headings
- Add nested list CSS (circle/square bullets, lower-alpha/roman numbering)
- Replace map popup <p>/space-y-1 layout with CSS grid for aligned label-value pairs
- Convert map filter card to collapsible <details> with state persistence
- Add nested list HTML output tests and markdown features docs
2026-05-06 19:02:18 +01:00
JingleManSweep c43da6ddf1 Merge pull request #199 from ipnet-mesh/chore/fix-members-count-widget
fix: include operators in members count widget
2026-05-06 18:22:22 +01:00
Louis King 93b5558654 fix: include operators in members count on homepage widget 2026-05-06 18:06:28 +01:00
JingleManSweep 497cd8393e Merge pull request #198 from ipnet-mesh/feature/new-members-widget
feat: replace MeshCore card with Members widget and add footer branding
2026-05-06 15:14:59 +01:00
Louis King 981c49e7fa feat: replace MeshCore card with Members widget and add footer branding 2026-05-06 15:11:58 +01:00
JingleManSweep 8e577cdf40 Merge pull request #197 from ipnet-mesh/chore/update-radio-info-display
feat: replace flat radio config list with icon tile grid on homepage
2026-05-06 13:36:26 +01:00
Louis King 6167b24591 feat: replace flat radio config list with icon tile grid on homepage
Replace the label:value list in the Network Info panel with a 3×2 grid of
compact tiles, each showing a themed cyan icon, label, and value. Adds 5 new
SVG icon functions and a --color-radio CSS custom property with dark/light variants.
2026-05-06 13:33:24 +01:00
JingleManSweep 1efa3e1f7b Merge pull request #196 from ipnet-mesh/chore/fix-qr-code-z-index
fix: increase mobile dropdown z-index to render above QR code on node detail page
2026-05-06 12:37:30 +01:00
Louis King 2ea3e70ec7 fix: increase mobile dropdown z-index to render above QR code on node detail page 2026-05-06 12:35:18 +01:00
JingleManSweep 361d5f712a Merge pull request #195 from ipnet-mesh/chore/ui-feedback-20250505
feat: restructure mobile navbar and increase dropdown sizes
2026-05-05 22:27:01 +01:00
JingleManSweep a1f0b354b2 Merge branch 'main' into chore/ui-feedback-20250505 2026-05-05 22:25:11 +01:00
Louis King 9c3611059a feat: restructure mobile navbar — move hamburger to right, increase dropdown sizes
Move mobile hamburger menu from navbar-start to navbar-end so it stays
right-aligned regardless of logo width. Mobile nav items are now rendered
via JS (renderMobileNav) using icon functions instead of duplicated inline
SVGs. Increase dropdown widths (w-52→w-56), icon sizes (h-4→h-5), and add
larger mobile tap targets via CSS media query.
2026-05-05 22:23:16 +01:00
JingleManSweep 71493d3516 Merge pull request #193 from ipnet-mesh/feat/mobile-sort-time-default
feat: default nodes sort by last_seen + mobile sort controls
2026-05-05 19:30:44 +01:00
Louis King 8dc6ccdad0 feat: change default nodes sort to last_seen DESC and add mobile sort controls
- Change API and frontend default sort from name/asc to last_seen/desc
- Add mobileSortSelect() shared component for native select dropdown
- Add mobile sort select to nodes, advertisements, and messages pages
- Add i18n sort labels for all three list pages
- Update sort tests for new default with staggered timestamps
2026-05-05 19:28:28 +01:00
JingleManSweep 73469b714f Merge pull request #191 from ipnet-mesh/renovate/esbuild-0.x
chore(deps): update dependency esbuild to ^0.28.0
2026-05-05 18:43:41 +01:00
renovate[bot] 3bcf691a5a chore(deps): update dependency esbuild to ^0.28.0 2026-05-05 17:41:36 +00:00