Description
I didn't know what to put for battery or battery mah, so I first tried -- for both as a similar module has: but I cannot save. Enter a 0 for battery mah gives an error in server.log. Typing 1, every thing is fine. Some boards, like this one and a sibling board from the same manufacturer, does not have a battery integrated. These fields probably do not need to be required, and general input sanitation on these fields would be beneficial.
Secondary, the fields "Bands" and "Firmware" would probably be better suited as checkboxes or a drop down list or some other specific list of known list of values.
Steps to Reproduce
- Go to 'Catalog'
- Click on 'Manage Catalog'
- Click on '+Add Item'
- Enter a '0'
- See error
Expected Behavior
To be able to not have this field required and protect the application from not being able to load due to a value.
Actual Behavior
Application will not start due to the "invalid" database value.
Screenshots
Environment
- OS: macOS 26
- Browser: Chrome 153
- App Version: 1.3.5
Additional Context
2026-09-15 16:00:15,411 [INFO] backend.app.lifecycle: PID file written: pid=48166, port=8321
2026-09-15 16:00:15,545 [INFO] __main__: SRTM manager initialized (srtm=/Users/scott/Library/Application Support/MeshCommunityPlanner/srtm, sdf=/Users/scott/Library/Application Support/MeshCommunityPlanner/sdf)
2026-09-15 16:00:15,621 [INFO] __main__: Database initialized at /Users/scott/Library/Application Support/MeshCommunityPlanner/db/mesh_planner.db
2026-09-15 16:00:17,988 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:00:18,793 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:00:40,775 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:00:41,386 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:01:37,992 [INFO] backend.app.api.error_handlers: Validation error on POST /api/catalog/devices: [{'type': 'greater_than', 'loc': ('body', 'battery_capacity_mah'), 'msg': 'Input should be greater than 0', 'input': 0, 'ctx': {'gt': 0}}]
2026-09-15 16:02:17,762 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:02:18,363 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:02:18,394 [INFO] __main__: Database connection closed
2026-09-15 16:02:18,397 [INFO] backend.app.lifecycle: Shutdown cleanup complete
2026-09-15 16:02:31,011 [INFO] backend.app.lifecycle: PID file written: pid=48233, port=8322
2026-09-15 16:02:31,141 [INFO] __main__: SRTM manager initialized (srtm=/Users/scott/Library/Application Support/MeshCommunityPlanner/srtm, sdf=/Users/scott/Library/Application Support/MeshCommunityPlanner/sdf)
2026-09-15 16:02:31,216 [INFO] __main__: Database initialized at /Users/scott/Library/Application Support/MeshCommunityPlanner/db/mesh_planner.db
2026-09-15 16:02:33,315 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:02:33,601 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:02:33,862 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:02:34,139 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:02:37,367 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.dev "HTTP/1.1 307 Temporary Redirect"
2026-09-15 16:02:37,914 [INFO] httpx: HTTP Request: HEAD https://map.meshcore.io/ "HTTP/1.1 200 OK"
2026-09-15 16:02:38,010 [INFO] __main__: Database connection closed
2026-09-15 16:02:38,019 [INFO] backend.app.lifecycle: Shutdown cleanup complete
Description
I didn't know what to put for battery or battery mah, so I first tried -- for both as a similar module has: but I cannot save. Enter a 0 for battery mah gives an error in server.log. Typing 1, every thing is fine. Some boards, like this one and a sibling board from the same manufacturer, does not have a battery integrated. These fields probably do not need to be required, and general input sanitation on these fields would be beneficial.
Secondary, the fields "Bands" and "Firmware" would probably be better suited as checkboxes or a drop down list or some other specific list of known list of values.
Steps to Reproduce
Expected Behavior
To be able to not have this field required and protect the application from not being able to load due to a value.
Actual Behavior
Application will not start due to the "invalid" database value.
Screenshots
Environment
Additional Context