No description
- Create internal/config package with Load() function for all env vars - Validate types (string, bool, int, enum, URL) and ranges - Collect all validation errors before returning (fail fast) - Log non-sensitive values at INFO on startup (MQTT_PASSWORD masked) - Return error slice; main() logs each error and exits(1) - Unit tests for valid/invalid cases Env vars validated: - SPAXEL_BIND_ADDR (string, default '0.0.0.0:8080') - SPAXEL_DATA_DIR (string, default '/data') - SPAXEL_STATIC_DIR (string, default '/dashboard') - SPAXEL_MDNS_ENABLED (bool, default true) - SPAXEL_MDNS_NAME (string, default 'spaxel') - SPAXEL_LOG_LEVEL (enum: debug|info|warn|error, default 'info') - SPAXEL_FUSION_RATE_HZ (int, range [1,20], default 10) - SPAXEL_REPLAY_MAX_MB (int, range [10,10000], default 360) - SPAXEL_INSTALL_SECRET (string, optional, 32+ chars if set) - SPAXEL_NTP_SERVER (string, default 'pool.ntp.org') - SPAXEL_MQTT_BROKER (string, optional, must be valid URL if set) - SPAXEL_MQTT_USERNAME (string, optional) - SPAXEL_MQTT_PASSWORD (string, optional, never logged) - TZ (string, default 'UTC', validated via time.LoadLocation) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .beads | ||
| .marathon | ||
| dashboard | ||
| docs | ||
| firmware | ||
| mothership | ||
| .dockerignore | ||
| .gitignore | ||
| .needle-predispatch-sha | ||
| .needle.yaml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| PROGRESS.md | ||
| VERSION | ||