83 Commits

Author SHA1 Message Date
Jason Staack
e1d81b40ac fix: cap NATS JetStream streams to prevent OOM crash
WIRELESS_REGISTRATIONS stream had a 256MB MaxBytes cap in a 256MB
container — guaranteed to crash under load. ALERT_EVENTS and
OPERATION_EVENTS had no byte limit at all.

- Reduce WIRELESS_REGISTRATIONS MaxBytes from 256MB to 128MB
- Add 16MB MaxBytes cap to ALERT_EVENTS and OPERATION_EVENTS
- Bump NATS container memory limit from 256MB to 384MB
- Add restart: unless-stopped to NATS in base compose
- Bump version to 9.8.2

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 07:52:07 -05:00
Jason Staack
b1ac1cce24 feat: v9.8.1 pre-built Docker images and GHCR release workflow
Setup.py now asks whether to pull pre-built images from GHCR
(recommended) or build from source. Pre-built mode skips the
15-minute compile step entirely.

- Add .github/workflows/release.yml (builds+pushes 4 images on tag)
- Add docker-compose.build.yml (source-build overlay)
- Switch docker-compose.prod.yml from build: to image: refs
- Add --build-mode CLI arg and wizard step to setup.py
- Bump version to 9.8.1 across all files
- Document TOD_VERSION env var in CONFIGURATION.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:33:12 -05:00
Jason Staack
023e45c908 fix(website): update status version to 9.8.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 13:02:49 -05:00
Jason Staack
a9e3c79cca blog: SNMP Works (And the UI Got Out of the Way)
v9.8 release post covering SNMP support, UI simplification,
limitations, and where the project is heading.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:59:00 -05:00
Jason Staack
4b0cc056bd fix(website): restore MikroTik prominence, add SNMP as feature line item
MikroTik is the product. SNMP is a feature. Restored firmware management
and SRP-6a to feature list. SNMP added as one line, not a replacement.
Titles stay MikroTik-first.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:56:22 -05:00
Jason Staack
2cc139bc0e docs(website): add SNMP support to homepage for v9.8.0
Updated title, meta descriptions, OG/Twitter cards, structured data,
tagline, and feature list to reflect multi-vendor SNMP monitoring.
MikroTik remains prominent — SNMP is positioned alongside it.
Version bumped to 9.8.0 in structured data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:54:55 -05:00
Jason Staack
6e874505eb chore: bump version to 9.7.2 · plain
Warm Precision UI redesign, task-based navigation, interaction system,
website and docs restyled. 30+ commits on warm-precision-redesign
branch, merged to main.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:50:29 -05:00
Jason Staack
1a7c790515 fix(blog): dial back image filter — lighter sepia, higher opacity 2026-03-21 15:43:56 -05:00
Jason Staack
cb1de32269 fix(blog): blend lawyer image into warm precision palette with sepia/multiply 2026-03-21 15:41:43 -05:00
Jason Staack
f45236857f fix(website): restore hover/click screenshots, widen setup box, remove hint text 2026-03-21 15:39:48 -05:00
Jason Staack
3b5e2cad01 fix(website): simplify screenshots — plain images with captions, no interactivity 2026-03-21 15:38:15 -05:00
Jason Staack
e8151845ed fix(website): fix dark nav header on blog, add interactive screenshots
- Remove site-nav--dark class from all pages (blog, homepage)
- Add nav color overrides to all blog pages (light background, dark text)
- Homepage: hover screenshots to swap dark/light, click to expand both
  side by side in overlay

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:36:08 -05:00
Jason Staack
5b78cd9869 docs(website): apply Warm Precision styling to all blog pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:32:59 -05:00
Jason Staack
28035eb5dd docs(website): apply Warm Precision styling to docs page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:29:38 -05:00
Jason Staack
18a176c89a fix(website): fix code block wrapping in setup section 2026-03-21 15:29:02 -05:00
Jason Staack
ce894505dc fix(website): show both light and dark mode screenshots side by side 2026-03-21 15:27:00 -05:00
Jason Staack
c13d7f0f7c docs(website): rewrite homepage per Warm Precision redesign direction
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:23:07 -05:00
Jason Staack
cc34877b76 docs(website): update analytics disclaimer to reflect engagement tracking
Changed "analytics pixel to count page views" to "analytics to measure
page views and engagement" across all 22 site pages to accurately
describe the updated telemetry script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 08:36:23 -05:00
Jason Staack
c9ca0d376c fix(api): increase memory/workers for 500-device scale, add blog post
API container was OOM-killed under 500-device mock load due to debug
logging, single worker, and 512MB limit. Bumped to info logging,
2 workers, and 1GB. New blog post documents the incident.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 07:33:35 -05:00
Jason Staack
4e917ac819 blog: add "Why I'm Not Posting This on Reddit" post
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:35:44 -05:00
Jason Staack
00e30cbfcd feat(blog): add post announcing 250-device free tier cap
New blog post explaining the BSL license change from 1,000 to 250
devices. Updates blog index with new entry. Includes resized
lawyer.png hero image.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:37:22 -05:00
Jason Staack
0693e0898b fix(website): make site-nav--light dark for Deep Space, bump cache
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 18:12:55 -05:00
Jason Staack
81a0bac97d fix(website): cache-bust style.css for Deep Space deploy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:52:09 -05:00
Jason Staack
cf11b29f49 fix(website): replace remaining Outfit font references in blog inline styles
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:42:59 -05:00
Jason Staack
2eddc545d2 feat(website): replace screenshots with fresh 100-device fleet images
Swap 9 old screenshots for 8 new ones showing fleet dashboard, traffic,
firmware management, config templates, device detail, interface
utilization, device health, and traffic analytics. Update carousel
markup with Deep Space card styling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:42:20 -05:00
Jason Staack
4f8ab7f0d0 feat(website): retheme to Deep Space design system with local fonts
Replace CSS variables, hardcoded colors, font families, syntax token
colors, and banner styling. Swap Google Fonts for self-hosted Manrope
and IBM Plex Mono woff2 files. Update theme-color meta tags and remove
testing-banner--light variant across all 19 HTML files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:41:17 -05:00
Jason Staack
8d8779951c feat(website): retake all screenshots with 100-device demo data
12 hours of mock device polling produced rich metrics data.
Dashboards show real bandwidth, device counts, and events.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 07:29:59 -05:00
Jason Staack
e7af5e85ab feat(seo): add 6 targeted SEO pages for high-intent search phrases
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:39:48 -05:00
Jason Staack
31d224ca58 feat(seo): add open source MikroTik management page, update sitemap
New SEO page targeting "open source mikrotik management" keyword.
Added to sitemap with 0.8 priority. Cross-linked from existing
centralized management page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:25:46 -05:00
Jason Staack
b925d534bc feat(seo): add open source keywords, update sitemap, add cross-links
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:23:12 -05:00
Jason Staack
67caecd52c blog: add "Found a Bug Running 100 Simulated Routers"
Fourth blog post covering a NATS JetStream memory issue found
during 100-device simulation testing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 06:14:30 -05:00
Jason Staack
0c8a473796 fix(website): retake config editor screenshot with device selected
Shows gw-bowling-alley config tree with RouterOS menu hierarchy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 19:57:29 -05:00
Jason Staack
412f9c2530 feat(website): update screenshots for Deep Space theme with new tenants
Replace all screenshots with Deep Space dark theme captures.
New tenants: Lebowski Lanes, MXC Studios, Irken Empire.
Login screenshot now shows Secret Key fields.
Remove old Stranger's Ranch screenshot.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 19:49:26 -05:00
Jason Staack
ddcea97dd0 blog: add "What You Can Do With It Today (And What You Can't)"
Third blog post covering current capabilities, limitations, and
design philosophy. Factual inventory of what works, what's rough,
and what's missing entirely.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 19:06:22 -05:00
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
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
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
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