Commit graph

408 commits

Author SHA1 Message Date
66bf61887f feat: add Sonar, Splynx, and VISP billing integrations 2026-02-14 20:18:57 -06:00
02474c529f ui: major redesign - NOC dashboard, consolidated nav, dense tables, flat alerts 2026-02-14 20:15:07 -06:00
8752dfec49 fix: netbox url field type, gaiia ipRange→block, remove unknown webhook log 2026-02-14 17:44:01 -06:00
a3730db579 i18n: add Spanish locale with full translations, language selector, and locale hook 2026-02-14 17:44:01 -06:00
243b773e39 i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
2709ab4674 Fix integration API key field: read from saved credentials like NetBox 2026-02-14 16:31:05 -06:00
b8a625005c Fix NetBox config: show saved URL/API token when opening Configure 2026-02-14 16:29:32 -06:00
712174cc47 Fix NetBox test connection: read URL/token from form, not just saved state 2026-02-14 16:15:59 -06:00
d640fab660 Fix invite form alignment on members tab 2026-02-14 16:12:15 -06:00
b49d177b97 Fix trace page Access on Device struct, limit dashboard insights to 4 2026-02-14 16:10:52 -06:00
bcc93cc1b5 Limit dashboard insights to 4, unlock dokku 2026-02-14 16:10:52 -06:00
82dd75d2e9 Fix Gaiia webhook (no signature), sites page with table + insights 2026-02-14 16:07:26 -06:00
3049411337 Dashboard: timezone-aware timestamps, site health as table, remove dead code 2026-02-14 16:07:26 -06:00
2cbf6db8de Dashboard redesign: tighter layout, table alerts, less wasted space 2026-02-14 16:07:26 -06:00
a91e5f9be5 Dashboard makeover: more breathing room, cleaner layout
- Stat cards: 4-column grid with larger text (text-4xl) and rounded-xl
- Split stats into primary (health/uptime/devices/alerts) and secondary rows
- Main content: 2/3 + 1/3 split instead of cramped 3/5 + 2/5
- Increased gaps throughout (gap-5, gap-10, mt-10 between sections)
- Cards use rounded-xl, p-5 for more padding
- Config changes + activity in proper list layout with dividers
- Quick actions moved to bottom with separator
- Filter pills use rounded-full with stronger active state
- Removed 'Command Center' header, cleaner org name + subtitle
- Better empty states with more whitespace
2026-02-14 15:01:49 -06:00
7b72ed3164 PagerDuty two-way sync: webhook receiver for resolve/acknowledge
- POST /api/v1/webhooks/pagerduty/:organization_id endpoint
- HMAC-SHA256 signature verification (optional, via webhook_secret)
- incident.resolved → resolve_alert_silent (no re-notify to PagerDuty)
- incident.acknowledged → acknowledge_alert_silent (no re-notify)
- Matches alerts via dedup_key format: towerops-alert-<uuid>
- Webhook secret configurable in org settings PagerDuty panel
- Setup instructions in UI for PagerDuty Generic Webhooks (v3)
2026-02-14 14:58:58 -06:00
06f9b7e60b Fix format_response_time crash on non-numeric input 2026-02-14 14:53:17 -06:00
61f803afe5 Add language user setting (default: English) 2026-02-14 14:53:17 -06:00
d1cd608ae9 feat: actionable insights with fix-it buttons, proper pluralization via gettext
- Gaiia 'not tracked' insight: Map to Gaiia inventory + View reconciliation buttons
- Gaiia 'ghost' insight: Clean up stale mappings button
- Gaiia 'mismatch' insight: Review mismatches button
- Fixed device(s) → proper ngettext pluralization
- Fixed Towerops → TowerOps capitalization
2026-02-14 14:46:19 -06:00
44e9d20d35 fix: NetBox sync direction cards now clickable via phx-click instead of hidden radio buttons 2026-02-14 14:41:30 -06:00
47f9ee703f fix: NetBox sync direction/checkboxes now reactive - track config in socket assigns instead of reading from saved credentials 2026-02-14 14:30:46 -06:00
3190f07ee5 ui: major integrations tab polish - accent bars, brand colors, better status display, cleaner configure panels 2026-02-14 14:25:53 -06:00
db40a3e5b7 feat: show human-readable sync status messages for integrations
- Added last_sync_message field to integrations schema
- Gaiia sync: shows item counts on success, friendly error on failure
- Preseem sync: shows AP/device counts on success, friendly error on failure
- Error messages translated from technical errors to user-friendly text
- Message displayed on integration card next to status badge
- Exposed in REST API response
2026-02-14 14:11:02 -06:00
5917190efe feat: add NetBox integration with sync direction, entity selection, and filtering
- Three sync modes: NetBox→TowerOps (pull), TowerOps→NetBox (push), Bidirectional
- Configurable entity sync: devices, sites, IP addresses, interfaces
- Optional filters by device role, site, and tag (comma-separated)
- NetBox client with test connection, CRUD operations
- Radio card UI for sync direction, checkbox cards for entity selection
- Credentials stored encrypted (URL, API token, sync config)
2026-02-14 14:09:01 -06:00
a028695d3b
format 2026-02-14 13:57:25 -06:00
35fc993db0 ui: remove border above nav tabs on org and user settings 2026-02-14 13:57:03 -06:00
ea7d82a489 fix: make Configure button toggle - clicking again collapses the form 2026-02-14 13:48:22 -06:00
00a0e73821 fix: only show Gaiia webhook config when Configure is clicked 2026-02-14 13:45:18 -06:00
392b1e135c fix: trace page crash - detected_at → changed_at to match ConfigChangeEvent schema 2026-02-14 13:44:07 -06:00
9b5647a055 fix: Gaiia webhook secret is user-pasted from Gaiia, not auto-generated; update setup instructions 2026-02-14 13:34:32 -06:00
86acb04353 feat: add help sections for insights, map, API tokens, REST/GraphQL APIs; remove Gaiia webhook secret UI, update setup to use All Events 2026-02-14 13:33:27 -06:00
596b404baf docs: add Network Insights, Network Map, API Tokens, REST API, and GraphQL API sections to help page 2026-02-14 13:32:48 -06:00
5df5c97c45 feat: add geographic location to sites with geocoding, address fields, and Leaflet.js network map 2026-02-14 13:07:14 -06:00
74f112642d feat: make network insights actionable with affected device links and metadata 2026-02-14 13:07:14 -06:00
146f5745cf
fix: resolve compilation errors, test failures, and credo issues
- Escape HEEx template braces in GraphQL/API docs with raw(~S[...])
- Fix test assertions for updated marketing copy and UI text
- Extract helper functions in GraphQL resolvers to reduce nesting depth
- Create shared ErrorHelpers module for API controllers
- Fix ETS race condition in brute force whitelist cache for async tests
- Fix property test generators to use ASCII instead of printable unicode
- Add alert_severity helper to site_live/show
- Update accounts fixtures for explicit user confirmation
2026-02-14 12:23:10 -06:00
9d437a8119 ux: improve PagerDuty integration clarity
- Replace terse helper text with step-by-step setup guide in config form
- Add what-gets-synced breakdown when PagerDuty is enabled
- Clear visual hierarchy with numbered steps and inline callout
2026-02-14 11:28:57 -06:00
bb4ff232e3 feat: add PagerDuty Events API v2 integration with 2-way alert sync 2026-02-14 11:28:57 -06:00
75f64d0109 docs: add concrete docker-compose example to remote pollers help section
Show the actual docker-compose.yml with agent + watchtower setup.
Emphasize lightweight nature and auto-updates.
2026-02-14 11:28:57 -06:00
f326eb5dd4 feat: require email verification before first login
- Remove auto-confirmation on registration (register_user and register_user_with_organization)
- Add deliver_user_confirmation_instructions/2 and confirm_user/1 to Accounts context
- Add verify_email_token_query/2 and by_user_and_contexts_query/2 to UserToken
- Make deliver_confirmation_email public in UserNotifier
- Send confirmation email after registration in both flows
- Block unconfirmed users at password login with helpful message
- Add UserConfirmationController with confirm/resend routes
- Add resend confirmation link to login page
- Update test fixtures to confirm users after registration
2026-02-14 11:28:57 -06:00
b897330a7e docs: add integrations and org settings sections to in-app help page 2026-02-14 11:28:57 -06:00
95ce9ad06d refactor: org settings into tabbed interface with integrations 2026-02-14 11:28:57 -06:00
c37ae76ceb fix: device index uses device_role instead of nonexistent device_type, last_checked_at instead of last_seen_at; make TimescaleDB migrations conditional for dev/test 2026-02-14 10:13:03 -06:00
715a20dd09 fix: dashboard activity feed uses correct field names (summary/timestamp instead of description/inserted_at) 2026-02-14 09:57:37 -06:00
9e7ee5099d refactor: fix all credo strict issues, format all code, fix broken routes
- Fix broken route paths in dashboard (/discovery, /subscribers/trace, /config-changes)
- Fix insights empty state settings link (org-scoped route)
- Add underscores to all 86400 literals across 6 files
- Alphabetize aliases in search.ex and agent_channel.ex
- Extract changelog parser helper to reduce nesting
- Extract dashboard impact calculation to reduce nesting
- Refactor agent_channel config change detection (pattern match, extract function)
- Combine double Enum.reject into single call in trace.ex
- Fix line length in trace.ex search query
- Replace length/1 > 0 with != [] in trace_live
- Run mix format on all files
2026-02-13 19:34:40 -06:00
493b1e8001 fix: correct broken route paths in dashboard and insights templates 2026-02-13 19:27:32 -06:00
bc128388ba feat: add loading skeletons and page transitions 2026-02-13 19:18:28 -06:00
ad6e9b91a3 feat: add global CSS polish — transitions, hover effects, scrollbar styling, status pulse 2026-02-13 19:17:38 -06:00
bfe552cb47 feat: enhance dashboard with uptime, quick actions, mini activity feed 2026-02-13 19:13:04 -06:00
88b5b55a01 feat: enhance activity feed with real-time updates, time grouping, search 2026-02-13 19:12:49 -06:00
314ed610d3 feat: add polished empty states across all pages 2026-02-13 19:11:54 -06:00