Commit Graph

63 Commits

Author SHA1 Message Date
Jason Staack
21563132e1 feat: replace Cloudflare analytics with self-hosted pixel, clarify privacy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 19:19:58 -05:00
Jason Staack
5717b3deb4 docs: add Deep Space UI redesign implementation plan
22 tasks across 4 phases: tokens/fonts, component restyling, layout
restructure (ContextStrip + sidebar), page-level polish. Includes
responsive spot-check and WCAG contrast audit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:13:57 -05:00
Jason Staack
d191ac2be3 blog: add "This Is Not Stable Software" post
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:03:12 -05:00
Jason Staack
421808e0ac docs: add Deep Space UI redesign spec
Full visual overhaul spec — new color system, typography (Manrope + IBM
Plex Mono), component language, layout restructure with Context Strip,
and 4-phase implementation plan. WCAG AA compliant in both modes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:58:49 -05:00
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
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
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
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
Jason Staack
b98a19de8d fix(website): fix footer rendering on mobile Firefox
- Add flex-wrap to .footer-links so links wrap instead of overflow
- Retarget .footer-link to .footer-links a (links had no class)
- Add responsive gap rules at 768px and 480px breakpoints

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:59:51 -05:00
Jason Staack
948ffa778b fix(website): fix scroll-spy selector to match bare hash hrefs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:59:18 -05:00
Jason Staack
e2c5cdc9a0 feat(website): replace feature bullet list with 8-card grid
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:59:01 -05:00
Jason Staack
9085d90b93 fix(ci): use TRUNCATE CASCADE for test cleanup, remove superpowers docs
- TRUNCATE CASCADE reliably cleans all test data regardless of FK order
- Remove docs/superpowers/ from git tracking (already in .gitignore)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 06:27:34 -05:00
Jason Staack
eba87b1889 docs: add VPN per-tenant isolation design spec 2026-03-14 12:43:53 -05:00
Jason Staack
6fb0796e14 docs: add SaaS tiers and invite system design spec 2026-03-14 12:33:10 -05:00
Jason Staack
c7c9f4d71e docs: add setup script implementation plan
7-task plan covering database rename, login page fix, setup.py
wizard with OpenBao bootstrap, sequential builds, and health checks.
Also fixes spec OpenBao timeout to 60s.
2026-03-14 09:52:58 -05:00
Jason Staack
1d1d5d4694 docs: add setup script design spec
Design for setup.py — interactive production setup wizard that
auto-generates secrets, bootstraps OpenBao, builds images sequentially,
and verifies service health.
2026-03-14 09:45:15 -05:00
Jason Staack
970501e453 feat: implement Remote WinBox worker, API, frontend integration, OpenBao persistence, and supporting docs 2026-03-14 09:05:14 -05:00
Jason Staack
8cce0ef750 docs: add v9.5 remote access to website docs
WinBox tunnels, SSH terminal, NATS request-reply architecture,
session management, security notes, and updated port tables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:02:02 -05:00
Jason Staack
a4e1c78744 docs: update documentation for v9.5 remote access feature
Add tunnel manager, SSH relay, new env vars, security model, and
Remote Access key feature entry across ARCHITECTURE, DEPLOYMENT,
SECURITY, CONFIGURATION, and README.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 15:47:03 -05:00
Jason Staack
c0304da2dd docs: add remote access (v9.5) implementation plan
Six-chunk TDD implementation plan for WinBox TCP tunnels and SSH terminal relay through the Go poller. Covers tunnel manager, SSH relay, API endpoints, infrastructure, frontend, and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:20:04 -05:00
Jason Staack
d16a5c991f docs: add remote access design spec (WinBox tunnels + SSH terminal)
Comprehensive design for v9.5 remote access feature:
- WinBox TCP tunnel through poller with localhost port allocation
- Browser SSH terminal via xterm.js + WebSocket to poller SSH relay
- RBAC enforcement (operator+), audit logging, session tokens
- Infrastructure: nginx WebSocket proxy, Docker port range mapping

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:10:40 -05:00
Jason Staack
bb9176fb9c docs: update docs to reflect recent fixes and actual codebase state
- Fix Go version (1.23 → 1.24), router count (21 → 25), add settings router
- Document vault key decryption on login and refresh token cookie delivery
- Document audit log self-commit behavior for reliability
- Add firmware cache volume and nginx dynamic DNS resolver to deployment guide
- Fix placeholder clone URL to actual repository

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:13:57 -05:00
Jason Staack
b954e0aa2a fix(docs): restore full quick start steps, fix architecture visibility
Restore original 6-step quick start with comments. Increase arch flow
box contrast (bg-deep background, stronger border) and arrow size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:18:53 -05:00
Jason Staack
b280faadf8 docs: update landing page copy from review notes
- Hero: tighter 3-line intro focused on the problem
- What It Does: updated section label
- Safe Config: panic-revert language, fleet-wide templates
- Who This Is For: expanded audience descriptions
- Architecture: new section with vertical flow diagram
- Quick Start: simplified to 3 commands
- CTA: open source + self-hosted, closing tagline
- Slow gradient fill animation from 1.2s to 2s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:16:38 -05:00
Jason Staack
44de8c42c4 fix(docs): extend gradient fill across full hero title
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:11:43 -05:00
Jason Staack
786d494670 fix(docs): fix gradient fill direction so it ends on gradient, not white
Gradient on left half of background, white on right. Animation sweeps
from white to gradient. Uses 'both' fill mode for correct state during
delay and after completion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:10:50 -05:00
Jason Staack
dc6182bbd0 feat(docs): animate gradient fill across hero title on page load
The gradient sweeps left-to-right across "Centralized Management"
after a 0.3s delay, transitioning from plain text to the teal-burgundy
gradient over 1.2s.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:09:23 -05:00
Jason Staack
e2813116da fix(docs): stagger bullet throb so only one pulses at a time per list
Each list gets a dynamically generated keyframe where only 1/N of the
cycle is active. Bullets are staggered 0.8s apart so they take turns
pulsing in sequence, looping forever.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:08:11 -05:00
Jason Staack
a3630c03e6 fix(docs): make bullet throb loop continuously via CSS only
Replace scroll-triggered JS animation with infinite CSS keyframe loop
(2.4s cycle). Remove IntersectionObserver code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:06:34 -05:00
Jason Staack
7126621e83 fix(docs): make bullet throb repeat on every scroll into view
Remove unobserve so bullets reset when scrolled out and throb again
on re-entry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:05:22 -05:00
Jason Staack
040f0335c1 feat(docs): add bullet throb animation on scroll
Teal bullet dots pulse with a staggered throb when list items scroll
into view. Uses IntersectionObserver with 120ms stagger per item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:04:11 -05:00