mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-08-26 17:31:34 +00:00
* feat(region-routing): P1 tagging + region_routes primitive + read/write API + preview launcher - config.py: add Coverage.region_tagging (bool=False); add RegionRouteMatrix dataclass (enabled, cells) above NotificationsConfig; add region_routes field to NotificationsConfig; add explicit hydration branch for region_routes in _dict_to_dataclass mirroring destinations pattern. - coverage_area.py: add MonitoringArea.name (str|None=None, frozen); update areas_from_config to preserve name; refactor inline geom extraction from classify_event_areas into shared _event_geom_json helper; add matching_area_names(geom_json, areas)->list[str] (additive, all named matches, config-order, deduped; gate unchanged); add event_region_names convenience wrapper. - coverage_filter.py: add region_tagging ctor kwarg; stamp event.region/ regions before the gate when region_tagging=True and areas non-empty and not event.regions (never clobbers satpass preset). - pipeline/__init__.py: wire region_tagging into CoverageFilter construction. - notification_routes.py: add GET /notifications/regions (named coverage area names, config-order, deduped); GET /notifications/region-routing (matrix as JSON); POST /notifications/region-routing (explicit RMW — only region_routes changes, toggles/rules/destinations survive). - scripts/preview_dashboard.py: mesh-free launcher — dashboard API only, no mesh connector, no broadcast loop; vite runs separately. All 87 coverage tests pass; 300 total pass; 6 pre-existing failures unchanged (adapter config count mismatch + MeshCore EventType.NEW_CONTACT). * feat(region-routing): manual region x family matrix editor page Adds RegionRoutingMatrix.tsx — a plain editor over the region_routes config primitive. Rows = families (via useFamilies()), cols = regions (from GET /api/notifications/regions). Each cell exposes MT channel (ChannelPicker single + includeDisabled), MC channel name (text input), min_severity select (routine/priority/critical/immediate), and an enabled checkbox. Only cells where MT or MC is set are included in the sparse POST payload. Master enable toggle maps to top-level enabled. MT budget guard warns when more than 7 distinct MT indices are in use. Sticky family column; horizontal scroll for wide region sets. Registers route /region-routing in App.tsx and adds "Region Routing" nav entry (Map icon) under the Meshtastic section in Layout.tsx, immediately after Routing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(region-routing): regions endpoint reads saved (disk) coverage so routing columns are dynamic without a bot restart; preview reloads config after writes * feat(routing): unify MT/MC routing into per-family cards; region routing as an in-card expand; remove rules/destinations UI + standalone page * refactor(routing): move Meshtastic Routing from /notifications to /meshtastic/routing (mirror /meshcore/routing); redirect legacy path * feat(region-routing): dispatcher honors region_routes matrix (authoritative-on-match, per-region cooldown, per-channel dedup); non-matrix path unchanged Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(region-routing): matrix dedup key must match boot-restore 2-tuple form (prevents restart re-broadcast flood); regression test --------- Co-authored-by: Matt Johnson <mj@k7zvx.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
263 lines
2.1 KiB
JSON
263 lines
2.1 KiB
JSON
[
|
|
"3dm",
|
|
"3ds",
|
|
"3g2",
|
|
"3gp",
|
|
"7z",
|
|
"a",
|
|
"aac",
|
|
"adp",
|
|
"afdesign",
|
|
"afphoto",
|
|
"afpub",
|
|
"ai",
|
|
"aif",
|
|
"aiff",
|
|
"alz",
|
|
"ape",
|
|
"apk",
|
|
"appimage",
|
|
"ar",
|
|
"arj",
|
|
"asf",
|
|
"au",
|
|
"avi",
|
|
"bak",
|
|
"baml",
|
|
"bh",
|
|
"bin",
|
|
"bk",
|
|
"bmp",
|
|
"btif",
|
|
"bz2",
|
|
"bzip2",
|
|
"cab",
|
|
"caf",
|
|
"cgm",
|
|
"class",
|
|
"cmx",
|
|
"cpio",
|
|
"cr2",
|
|
"cur",
|
|
"dat",
|
|
"dcm",
|
|
"deb",
|
|
"dex",
|
|
"djvu",
|
|
"dll",
|
|
"dmg",
|
|
"dng",
|
|
"doc",
|
|
"docm",
|
|
"docx",
|
|
"dot",
|
|
"dotm",
|
|
"dra",
|
|
"DS_Store",
|
|
"dsk",
|
|
"dts",
|
|
"dtshd",
|
|
"dvb",
|
|
"dwg",
|
|
"dxf",
|
|
"ecelp4800",
|
|
"ecelp7470",
|
|
"ecelp9600",
|
|
"egg",
|
|
"eol",
|
|
"eot",
|
|
"epub",
|
|
"exe",
|
|
"f4v",
|
|
"fbs",
|
|
"fh",
|
|
"fla",
|
|
"flac",
|
|
"flatpak",
|
|
"fli",
|
|
"flv",
|
|
"fpx",
|
|
"fst",
|
|
"fvt",
|
|
"g3",
|
|
"gh",
|
|
"gif",
|
|
"graffle",
|
|
"gz",
|
|
"gzip",
|
|
"h261",
|
|
"h263",
|
|
"h264",
|
|
"icns",
|
|
"ico",
|
|
"ief",
|
|
"img",
|
|
"ipa",
|
|
"iso",
|
|
"jar",
|
|
"jpeg",
|
|
"jpg",
|
|
"jpgv",
|
|
"jpm",
|
|
"jxr",
|
|
"key",
|
|
"ktx",
|
|
"lha",
|
|
"lib",
|
|
"lvp",
|
|
"lz",
|
|
"lzh",
|
|
"lzma",
|
|
"lzo",
|
|
"m3u",
|
|
"m4a",
|
|
"m4v",
|
|
"mar",
|
|
"mdi",
|
|
"mht",
|
|
"mid",
|
|
"midi",
|
|
"mj2",
|
|
"mka",
|
|
"mkv",
|
|
"mmr",
|
|
"mng",
|
|
"mobi",
|
|
"mov",
|
|
"movie",
|
|
"mp3",
|
|
"mp4",
|
|
"mp4a",
|
|
"mpeg",
|
|
"mpg",
|
|
"mpga",
|
|
"mxu",
|
|
"nef",
|
|
"npx",
|
|
"numbers",
|
|
"nupkg",
|
|
"o",
|
|
"odp",
|
|
"ods",
|
|
"odt",
|
|
"oga",
|
|
"ogg",
|
|
"ogv",
|
|
"otf",
|
|
"ott",
|
|
"pages",
|
|
"pbm",
|
|
"pcx",
|
|
"pdb",
|
|
"pdf",
|
|
"pea",
|
|
"pgm",
|
|
"pic",
|
|
"png",
|
|
"pnm",
|
|
"pot",
|
|
"potm",
|
|
"potx",
|
|
"ppa",
|
|
"ppam",
|
|
"ppm",
|
|
"pps",
|
|
"ppsm",
|
|
"ppsx",
|
|
"ppt",
|
|
"pptm",
|
|
"pptx",
|
|
"psd",
|
|
"pya",
|
|
"pyc",
|
|
"pyo",
|
|
"pyv",
|
|
"qt",
|
|
"rar",
|
|
"ras",
|
|
"raw",
|
|
"resources",
|
|
"rgb",
|
|
"rip",
|
|
"rlc",
|
|
"rmf",
|
|
"rmvb",
|
|
"rpm",
|
|
"rtf",
|
|
"rz",
|
|
"s3m",
|
|
"s7z",
|
|
"scpt",
|
|
"sgi",
|
|
"shar",
|
|
"snap",
|
|
"sil",
|
|
"sketch",
|
|
"slk",
|
|
"smv",
|
|
"snk",
|
|
"so",
|
|
"stl",
|
|
"suo",
|
|
"sub",
|
|
"swf",
|
|
"tar",
|
|
"tbz",
|
|
"tbz2",
|
|
"tga",
|
|
"tgz",
|
|
"thmx",
|
|
"tif",
|
|
"tiff",
|
|
"tlz",
|
|
"ttc",
|
|
"ttf",
|
|
"txz",
|
|
"udf",
|
|
"uvh",
|
|
"uvi",
|
|
"uvm",
|
|
"uvp",
|
|
"uvs",
|
|
"uvu",
|
|
"viv",
|
|
"vob",
|
|
"war",
|
|
"wav",
|
|
"wax",
|
|
"wbmp",
|
|
"wdp",
|
|
"weba",
|
|
"webm",
|
|
"webp",
|
|
"whl",
|
|
"wim",
|
|
"wm",
|
|
"wma",
|
|
"wmv",
|
|
"wmx",
|
|
"woff",
|
|
"woff2",
|
|
"wrm",
|
|
"wvx",
|
|
"xbm",
|
|
"xif",
|
|
"xla",
|
|
"xlam",
|
|
"xls",
|
|
"xlsb",
|
|
"xlsm",
|
|
"xlsx",
|
|
"xlt",
|
|
"xltm",
|
|
"xltx",
|
|
"xm",
|
|
"xmind",
|
|
"xpi",
|
|
"xpm",
|
|
"xwd",
|
|
"xz",
|
|
"z",
|
|
"zip",
|
|
"zipx"
|
|
]
|