Commit Graph

482 Commits

Author SHA1 Message Date
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
Jason Staack
ff09382e3a fix(docs): center content sections to match hero layout
Section labels, titles, descriptions, and closing statements are now
centered. Bullet lists remain left-aligned within their centered
container for readability. Fixes visual disconnect between centered
hero and left-justified content sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:00:34 -05:00
Jason Staack
0aa09260db docs: rewrite landing page with operator-focused copy
Replace marketing-heavy hero, feature cards, and architecture diagram
with straightforward copy aimed at real MikroTik operators. New sections:
What It Does, Safe Configuration, Built for Real Operators, Designed for
Scale, and Open Source CTA.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:58:21 -05:00
Jason Staack
5fbff03dea docs: simplify architecture diagram, remove tech stack badges
Replace verbose ASCII architecture in README with clean linear flow.
Remove tech stack badge grid from landing page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:54:49 -05:00
Jason Staack
28870a61a3 docs: add early access / testing disclaimer
Banner on landing page, docs page, and GitHub README warning that the
software is in active development and not yet ready for production use.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:49:24 -05:00
Jason Staack
a3d2172797 fix(backend): change APP_BASE_URL default from port 5173 to 3000
Password reset email links pointed to Vite dev port instead of the
Docker frontend port.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:39:04 -05:00
Jason Staack
837ab6f8fa fix(backend): parse CLI command string into RouterOS API command + args
execute_cli was passing the full CLI string (e.g. '/ping address=8.8.8.8
count=4') as a single command to the Go poller. go-routeros expects the
command path and args separately. Now splits into command + prefixed args.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:05:05 -05:00
Jason Staack
394be01145 fix(frontend): default ping/traceroute target to 8.8.8.8
The target input showed "8.8.8.8" as placeholder text but the actual
value was empty. Clicking Ping/Traceroute silently returned because
the empty target guard fired. Users saw the placeholder and assumed
the tool was broken.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:57:10 -05:00
Jason Staack
a3cc35c4b7 fix(frontend): generate Emergency Kit PDF client-side with actual Secret Key
The server-generated PDF had a placeholder for the Secret Key that was
never filled in client-side, making the Emergency Kit useless. Users
who relied on it could not recover their Secret Key on new devices.

Now generates the PDF entirely client-side via browser print dialog,
with the real Secret Key embedded. No server round-trip, key never
leaves the browser.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:47:50 -05:00
Jason Staack
6c7dfe02f5 fix(frontend): show Secret Key field when IndexedDB key is stale
When a user logs in from a browser with an outdated Secret Key in
IndexedDB (e.g. after server rebuild/re-enrollment), the SRP handshake
fails with 401 but the Secret Key input field was never shown — leaving
the user stuck with no way to enter their current key.

Now detects stale-key 401s and prompts for manual Secret Key entry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:30:09 -05:00
Jason Staack
32965857e7 fix: wire up empty-state Add Device button to open dialog
The FleetTable empty state navigated with ?add=true but the devices page
never read that param. Now it opens the AddDeviceForm when add=true is
in the search params.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:12:01 -05:00
Jason Staack
2605a97331 fix: use user.user_id instead of user.id in SMTP settings save
CurrentUser object uses user_id attribute, not id. Caused AttributeError
on PUT /api/settings/smtp.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:08:21 -05:00
Jason Staack
f7a53e60da fix: SMTP TLS logic was inverted — plain SMTP incorrectly used STARTTLS
When use_tls=false, the old logic set start_tls=true for any port != 25,
which broke plain SMTP servers like Mailpit. Now:
- Port 465: implicit TLS
- use_tls=true on other ports: STARTTLS
- use_tls=false: plain SMTP (no TLS)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:03:54 -05:00
Jason Staack
2461582cb3 fix: use relative paths for bind-mount volumes
Absolute paths (/Volumes/ssd01/mikrotik/docker-data/) are machine-specific
and won't work on any other system. Use ./docker-data/ so the repo works
wherever it's cloned.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:51:33 -05:00
Jason Staack
9510e56ced fix: use working dev defaults in .env.example
- POSTGRES_PASSWORD and DB URLs now match what docker-compose.override.yml
  and init-postgres.sql actually use (postgres/postgres, app_password)
- CREDENTIAL_ENCRYPTION_KEY is now valid base64 (32 bytes) so the API
  actually starts instead of crashing on the Pydantic validator
- JWT_SECRET_KEY is a dev-only value (insecure defaults check skips dev)
- Added quick-start comment block with login credentials

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:46:33 -05:00
Jason Staack
8949a36454 fix: bump Node to 20 in frontend Dockerfile for Vite 7 compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:39:51 -05:00
Jason Staack
d30df957e2 fix: rename network from 'mikrotik' to 'tod' to match overlay compose files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:35:49 -05:00
staack
4cb887b8fa ci: add feature request issue template 2026-03-09 17:50:45 -05:00
staack
343d376b65 ci: add bug report issue template 2026-03-09 17:50:36 -05:00
staack
6473401fe3 ci: add issue template config 2026-03-09 17:50:25 -05:00
Jason Staack
a57e1f6cfe docs: add Code of Conduct
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 12:59:05 -05:00
Jason Staack
e2a28cf161 docs: add licensing and support contact info
- Update README license section with 1,000 device free tier
- Add license@theotherdude.net and support@theotherdude.net
- Add Licensing and Support links to both page footers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 20:28:46 -05:00
Jason Staack
ed21661994 docs(license): update Additional Use Grant — free production use up to 1,000 devices
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 20:24:23 -05:00
Jason Staack
d020336c9a feat(seo): add Organization schema linking site to GitHub repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 20:22:05 -05:00
Jason Staack
7227760d1a feat(analytics): add Cloudflare Web Analytics snippet
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 20:18:36 -05:00
Jason Staack
4c8ab8df4e feat(seo): add Google Search Console verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:59:28 -05:00
Jason Staack
7994fc1f1e docs: update storage recommendation wording
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:54:55 -05:00
Jason Staack
5984188ca3 feat(website): add GitHub nav link and git clone to quick start
- Add GitHub link to nav bar on both index and docs pages
- Add git clone + cd commands to Quick Start terminal block

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:53:12 -05:00
Jason Staack
9030a1b3e9 fix(seo): add OG image, docs footer, GitHub link, and sitemap dates
- Add 1200x630 og-image.png with rug rosette branding
- Add og:image and twitter:image to docs.html
- Upgrade docs.html twitter:card from summary to summary_large_image
- Add og:locale to docs.html
- Add footer with nav links to docs.html
- Add GitHub repo link to both page footers
- Update sitemap.xml lastmod to 2026-03-09

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:39:39 -05:00
Jason Staack
b840047e19 feat: The Other Dude v9.0.1 — full-featured email system
ci: add GitHub Pages deployment workflow for docs site

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:30:44 -05:00