Codex identified critical issues preventing release. All issues resolved:
1. FIXED: LXC container detection reliability
- Added 4 detection methods (was 2):
* Method 1: /.dockerenv (Docker)
* Method 2: /proc/1/cgroup with more patterns (Docker/LXC)
* Method 3: /run/systemd/container (systemd containers)
* Method 4: /proc/1/environ container markers
- Tested on LXC container (debian-go): detection confirmed working
2. FIXED: False positives from proxy outages
- Now distinguishes "not configured" vs "temporarily down"
- Checks if /usr/local/bin/pulse-sensor-proxy exists
- If binary exists but socket missing = transient issue (no banner)
- If binary missing and SSH keys present = legacy setup (show banner)
3. FIXED: Banner guidance insufficient
- Added "Go to Nodes →" button that navigates to /settings/nodes
- Users now have direct path to fix the issue
- Banner message remains clear and concise
4. ADDED: Telemetry for removal criteria tracking
- Backend logs: "Legacy SSH configuration detected" (WARN level)
- Frontend logs: Banner shown/dismissed events to console
- Enables data-driven removal per criteria: <1% for 30+ days
- Log format: detection_type=legacy_ssh_migration for easy filtering
Testing:
- Created fake SSH key in /etc/pulse/.ssh/ on LXC container
- Verified detection triggered (legacySSHDetected: true)
- Verified telemetry logged: "Legacy SSH configuration detected"
- Removed fake key, verified detection cleared (null values)
- Container detection working via /run/systemd/container
Ready for release per Codex review.
|
||
|---|---|---|
| .. | ||
| alerts.go | ||
| auth.go | ||
| config_handlers.go | ||
| csrf_store.go | ||
| demo_middleware.go | ||
| diagnostics.go | ||
| DO_NOT_EDIT_FRONTEND_HERE.md | ||
| docker_agents.go | ||
| frontend_embed.go | ||
| guest_metadata.go | ||
| middleware.go | ||
| notifications.go | ||
| oidc_handlers.go | ||
| oidc_service.go | ||
| rate_limit_config.go | ||
| ratelimit.go | ||
| README.md | ||
| recovery_tokens.go | ||
| router.go | ||
| router_integration_test.go | ||
| security.go | ||
| security_oidc.go | ||
| security_setup_fix.go | ||
| session_store.go | ||
| settings.go | ||
| system_settings.go | ||
| types.go | ||
| updates.go | ||
Internal API Package
This directory contains the API server implementation for Pulse.
Important Note About frontend-modern/
The frontend-modern/ subdirectory that appears here is:
- AUTO-GENERATED during builds
- NOT the source code - just a build artifact
- IN .gitignore - never committed
- REQUIRED BY GO - The embed directive needs it here
Frontend Development Location
👉 Edit frontend files at: /opt/pulse/frontend-modern/src/
Why This Structure?
Go's //go:embed directive has limitations:
- Cannot use
../paths to access parent directories - Cannot follow symbolic links
- Must embed files within the Go module
This is a known Go limitation and our structure works around it.