Commit Graph

383 Commits

Author SHA1 Message Date
Jason Staack
d9acd6bc66 docs: clarify terminology and expand acronyms in user guide 2026-03-16 08:57:22 -05:00
Jason Staack
d0eae197dc docs: clarify terminology and expand acronyms in README 2026-03-16 08:57:17 -05:00
Jason Staack
398dc99466 docs: correct technical details and version references
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 08:57:04 -05:00
Jason Staack
5e2e560bb0 docs: correct port numbers, memory limits, and version references
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 08:56:40 -05:00
Jason Staack
144fb8b32d fix: resolve React Compiler lint errors
- WifiPanel: revert useEffect back to useState initializer (avoids
  synchronous setState in effect)
- Device detail: avoid Date.now() during render for push alert check

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 23:34:58 -05:00
Jason Staack
874542f802 fix: mount RollbackAlert, fix WifiPanel useEffect, remove unused PoolPanel prop
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:17:07 -05:00
Jason Staack
091c19c434 fix: remove unreachable kms_service import in notification_service
kms_service.py does not exist and Transit encryption was never
implemented for SMTP passwords, making the decrypt_transit code path
unreachable. Remove it entirely and leave only the Fernet fallback.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:15:39 -05:00
Jason Staack
0adcb52efc fix: handle SSH bridge write errors in poller
Add error checking to all three write calls in bridge.go. A write
failure now terminates that goroutine's copy loop and triggers cancel,
which lets the other goroutines clean up naturally.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:15:22 -05:00
Jason Staack
f49f5f739b fix: remove dead code (toast stubs, unused Redis key, tunnel manager fields)
- Remove 7 no-op exported stubs from toast.tsx (ToastProvider, ToastViewport,
  Toast, ToastTitle, ToastDescription, ToastClose, useToasts) — nothing imports them
- Remove fwFailKey variable and its Set() call from worker.go — the
  firmware:check-failed Redis key was never read anywhere
- Remove unused deviceStore and credCache fields from tunnel.Manager struct
  and drop corresponding parameters from NewManager(); update call site in
  main.go and all test usages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:12:56 -05:00
Jason Staack
83e59ed8d7 fix: write device status to Redis, check Set() errors, use cached version fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:10:52 -05:00
Jason Staack
461bfcd89b fix: update version string from v8.0 to v9.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:10:21 -05:00
Jason Staack
14ff8a54ca fix: add logging to silent error handlers, check maintenance windows for online events
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:09:30 -05:00
Jason Staack
f1625a85a1 fix: correct start year from 1998 to 1997 in blog post
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 22:54:18 -05:00
Jason Staack
74d3da0346 fix: use docs-content class for consistent light theme on SEO pages
4 pages had custom inline styles using landing-page CSS variables
(--text-primary etc) which render as light-on-dark. Switched all
pages to use the shared docs-content class which uses --docs-*
variables for the light theme.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:33:11 -05:00
Jason Staack
478760dee4 fix: add docs-page class to SEO doc pages for consistent light theme
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:31:10 -05:00
Jason Staack
27b4073487 docs: update quickstart to use setup.py wizard
Replace the old manual docker compose steps with the setup wizard
that handles .env, OpenBao, image builds, and stack startup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:26:50 -05:00
Jason Staack
9d5ddf2e14 feat(seo): add MikroTik problem-focused doc pages and update README
Create 5 SEO documentation pages targeting engineer search queries:
- /docs/mikrotik-configuration-drift
- /docs/mikrotik-router-backup-automation
- /docs/manage-multiple-mikrotik-routers
- /docs/mikrotik-router-monitoring
- /docs/mikrotik-centralized-management

Each page: 800-1200 words, problem-first structure, practical
engineer language, internal cross-links, proper meta/OG tags.

Update README intro to highlight fleet monitoring, config drift
detection, safe pushes, backup management, and topology.

Add GitHub topics: mikrotik, routeros, network-management,
network-automation, router-monitoring, router-fleet-management,
msp-tools, network-infrastructure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:23:59 -05:00
Jason Staack
409fb000b5 fix(a11y): add focus trap, Escape key, and dialog role to mobile sidebar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:10:32 -05:00
Jason Staack
42216ea326 fix(a11y): add keyboard support and aria-expanded to audit log rows
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:10:17 -05:00
Jason Staack
2e9584d2c7 fix(a11y): add keyboard nav to fleet table rows, fix ARIA, add scope
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:10:08 -05:00
Jason Staack
c0f6f84677 fix(a11y): add aria-live to password strength, role=meter to signal bar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:09:48 -05:00
Jason Staack
608a42a376 fix(a11y): add role=alert to form error messages 2026-03-15 21:08:36 -05:00
Jason Staack
bf2002f8be fix(a11y): restore keyboard access to forgot-password, add role=alert to error 2026-03-15 21:08:19 -05:00
Jason Staack
9ce4c9aa60 fix(a11y): add aria-label to collapsed sidebar links, aria-current to active 2026-03-15 21:08:09 -05:00
Jason Staack
b07659e2c2 fix(a11y): add aria-labels to unlabeled controls and table headers 2026-03-15 21:08:02 -05:00
Jason Staack
9ad5438860 fix(a11y): add focus ring to dialog close button 2026-03-15 21:07:01 -05:00
Jason Staack
5d3463b633 fix(a11y): improve color contrast for WCAG AA compliance
- Darken --text-muted in light mode (6.2:1 on white)
- Brighten --text-muted in dark mode (4.6:1 on surface)
- Split status colors: darker variants for light mode, bright for dark
- All text colors now meet WCAG AA 4.5:1 minimum

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 21:05:51 -05:00
Jason Staack
def4392c93 fix(a11y): WCAG 2.1 AA compliance fixes for website
Contrast:
- Increase --text-muted from #64748B to #8494A7 (~5.3:1 on dark bg)
- Darken --docs-text-muted from #94A3B8 to #6B7B8D (~5.3:1 on white)
- Increase sidebar section title opacity from 0.5 to 0.7

Keyboard & focus:
- Add skip navigation link to both pages
- Make screenshot images keyboard-focusable (tabindex, role=button)
- Add visible lightbox close button with focus styles
- Fix search input focus: proper outline instead of outline:none

Structure:
- Fix heading hierarchy: single h1 per page, demote sections to h2/h3
- Replace sidebar h4 headings with p.sidebar-section-title
- Add aria-labels to all nav landmarks (main, sidebar, footer)
- Fix broken footer anchor links (#security-model, #api-endpoints)

Accessibility:
- Add sr-only label for docs search input
- Add aria-label to back-to-top button
- Change nav logo SVG from aria-label to aria-hidden (redundant)
- Add role=dialog and aria-label to lightbox
- Fix docs.html theme-color meta to #FAFBFC (matches light theme)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:53:50 -05:00
Jason Staack
f96d561343 feat(seo): add MikroTik keyword section and update CTA anchor text
- Add fleet management summary section below hero for keyword clarity
- Update hero CTA to "Get Started Managing MikroTik Routers"
- Targets: MikroTik fleet management, manage MikroTik routers, etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:37:54 -05:00
Jason Staack
1e54326610 fix(seo): shorten meta description, add alt text, apple-touch-icon
- Shorten meta description to ~120 chars (was ~165)
- Add alt text to lightbox placeholder image
- Add apple-touch-icon.png (180x180) and link tag
- Canonical tag already correct (https://theotherdude.net/)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:26:43 -05:00
Jason Staack
4907001720 docs: add wireless monitoring to README, user guide, API ref, and website
Document the Wireless tab, wireless alert rules, APs Needing Attention
dashboard card, and wireless-issues API endpoints across all docs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:21:43 -05:00
Jason Staack
24cf57d2ca fix: remove unused WirelessIssue type import
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:09:56 -05:00
Jason Staack
7a563fecd2 fix: resolve ruff lint and formatting issues
Remove unused timedelta import from test_wireless_api.py and
auto-format metrics.py to pass ruff format check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:09:14 -05:00
Jason Staack
afb20f1f56 test: verify default wireless alert rules are seeded on tenant creation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:08:26 -05:00
Jason Staack
1869f25220 test: add integration tests for wireless-issues API endpoints
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:07:57 -05:00
Jason Staack
09a3fdcfeb feat: add APs Needing Attention dashboard card
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:06:25 -05:00
Jason Staack
5ed98f043e feat: add wireless-issues API client functions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:04:57 -05:00
Jason Staack
8bffe3b4d0 feat: add wireless-issues API endpoints for dashboard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:03:36 -05:00
Jason Staack
7ef849550c feat: seed default wireless alert rules on tenant creation 2026-03-15 20:02:00 -05:00
Jason Staack
3600a8e0ce feat: wire WirelessTab into device detail monitor section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:00:07 -05:00
Jason Staack
d227700e54 feat(website): update screenshot carousel with new images
Add device health and interface traffic screenshots, update alt text
and captions to match new demo data, reorder for better storytelling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:43:55 -05:00
Jason Staack
88132651d8 feat(website): add device health metrics screenshot
CPU, memory, disk, and temperature charts for bowling-ap-01

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:41:55 -05:00
Jason Staack
1f8fdeba28 feat(website): update screenshots with demo data
New screenshots from seeded Lebowski-themed demo deployment:
- Login page
- Dashboard (Lebowski Lanes with events, bandwidth, health)
- Dashboard (The Stranger's Ranch - multi-tenant)
- Device list with models, status, uptime
- Device detail with interface traffic charts (ether1, ether2, SFP)
- Alerts page with warnings and criticals
- Alert rules configuration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:39:03 -05:00
Jason Staack
e01ce33094 docs: update quick start to use setup.py wizard
Replace manual 6-step docker compose instructions with python3 setup.py
in README, website landing page, and docs page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:47:08 -05:00
Jason Staack
e3215812d8 docs: update Go version to 1.25 in docs page tech stack
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:44:35 -05:00
Jason Staack
52757cedcf fix(docs): add Blog link to docs page nav and footer, fix Features href
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:44:12 -05:00
Jason Staack
562bfdaf82 fix(website): reduce nav links on mobile to prevent overflow
- At 768px: hide Architecture and Screenshots links
- At 480px: show only Docs, Blog, and Get Started CTA

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:35:27 -05:00
Jason Staack
facfbf0969 fix(blog): correct background — ISPs and MSPs since 1998, not WiFi
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:32:43 -05:00
Jason Staack
5dd1b2f156 feat(website): add blog with first post "Why This Exists"
- Blog index at /blog/ with post listing
- First post: project origin story, support expectations, SaaS teaser
- Add Blog link to main site nav and footer
- Update sitemap with blog URLs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:31:37 -05:00
Jason Staack
90f937ddeb fix(seo): update sitemap dates, keywords, and structured data
- Update sitemap lastmod to 2026-03-15
- Add WinBox browser, VPN, CA, reports, SRP-6a to keywords
- Add VPN onboarding and PDF reports to schema.org featureList

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:18:52 -05:00