-
4d62bc9499
feat(09-01): wire retention scheduler into application lifespan
Jason Staack
2026-03-12 23:34:03 -05:00
-
a9f7a45a9b
feat(09-01): implement retention cleanup service with configurable retention period
Jason Staack
2026-03-12 23:33:27 -05:00
-
00bdde9975
test(09-01): add failing tests for retention cleanup service
Jason Staack
2026-03-12 23:32:20 -05:00
-
be41add4e9
feat(08-02): add snapshot download button to config history timeline
Jason Staack
2026-03-12 23:23:55 -05:00
-
8a64596d8b
docs(08-01): complete diff viewer plan
Jason Staack
2026-03-12 23:22:22 -05:00
-
2cf426fa63
feat(08-01): wire diff viewer into config history timeline
Jason Staack
2026-03-12 23:20:52 -05:00
-
dda00fbd23
feat(08-01): add diff viewer component and API client
Jason Staack
2026-03-12 23:20:24 -05:00
-
bd09590c01
docs(07-01): complete config history UI timeline plan
Jason Staack
2026-03-12 23:13:36 -05:00
-
36861fffea
feat(07-01): wire ConfigHistorySection into device detail page
Jason Staack
2026-03-12 23:12:16 -05:00
-
6bd24517ba
feat(07-01): add config history API client and timeline component
Jason Staack
2026-03-12 23:11:46 -05:00
-
e8bf994e7d
docs(06-02): complete snapshot view and diff retrieval plan
Jason Staack
2026-03-12 23:04:48 -05:00
-
af7007df13
feat(06-02): add snapshot view and diff retrieval endpoints
Jason Staack
2026-03-12 23:03:32 -05:00
-
83cd661efc
feat(06-02): add get_snapshot and get_snapshot_diff service functions
Jason Staack
2026-03-12 23:02:58 -05:00
-
7c0aa1b359
docs(06-01): complete config history timeline plan
Jason Staack
2026-03-12 23:01:12 -05:00
-
5c56344d74
feat(06-01): add config-history endpoint with RBAC and main.py registration
Jason Staack
2026-03-12 22:59:37 -05:00
-
f7d5aec4ec
feat(06-01): add config history service with TDD tests
Jason Staack
2026-03-12 22:58:51 -05:00
-
3416cc90a5
docs(05-02): complete structured change parser plan
Jason Staack
2026-03-12 22:38:16 -05:00
-
122b5917f4
feat(05-02): wire change parser into diff service with RETURNING id
Jason Staack
2026-03-12 22:37:09 -05:00
-
b167831105
feat(05-02): implement config change parser for RouterOS diffs
Jason Staack
2026-03-12 22:35:48 -05:00
-
7fddf35fc5
test(05-02): add failing tests for config change parser
Jason Staack
2026-03-12 22:35:19 -05:00
-
4e083a9606
docs(05-01): complete config diff service plan
Jason Staack
2026-03-12 22:34:16 -05:00
-
eb76343d04
feat(05-01): wire diff generation into snapshot subscriber
Jason Staack
2026-03-12 22:32:40 -05:00
-
72d0ae2856
feat(05-01): implement config diff service with Transit decrypt and difflib
Jason Staack
2026-03-12 22:31:28 -05:00
-
79453fa115
test(05-01): add failing tests for config diff service
Jason Staack
2026-03-12 22:30:52 -05:00
-
db5bb3fa96
docs(04-01): complete manual backup trigger plan
Jason Staack
2026-03-12 22:12:33 -05:00
-
00f0a8b507
feat(04-01): add config snapshot trigger endpoint with NATS request-reply
Jason Staack
2026-03-12 22:10:25 -05:00
-
0e664150e7
test(04-01): add failing tests for config snapshot trigger endpoint
Jason Staack
2026-03-12 22:08:13 -05:00
-
0851eced36
feat(04-01): implement BackupResponder with extracted CollectAndPublish
Jason Staack
2026-03-12 22:07:35 -05:00
-
9e102fda20
test(04-01): add failing tests for BackupResponder
Jason Staack
2026-03-12 22:04:44 -05:00
-
bf3fb509ed
docs(03-01): complete config snapshot subscriber plan
Jason Staack
2026-03-12 21:49:43 -05:00
-
0db06419e7
feat(03-01): wire config snapshot subscriber into main.py lifespan
Jason Staack
2026-03-12 21:47:51 -05:00
-
3ab9f27d49
feat(03-01): implement config snapshot subscriber with dedup and encryption
Jason Staack
2026-03-12 21:47:07 -05:00
-
9d8274158a
test(03-01): add failing tests for config snapshot subscriber
Jason Staack
2026-03-12 21:45:41 -05:00
-
d456fe58e9
docs(02-02): complete backup scheduler plan
Jason Staack
2026-03-12 20:57:47 -05:00
-
d34817a36c
feat(02-02): wire BackupScheduler into main.go lifecycle
Jason Staack
2026-03-12 20:55:06 -05:00
-
2653a32d6f
feat(02-02): implement BackupScheduler with per-device goroutines and concurrency control
Jason Staack
2026-03-12 20:54:23 -05:00
-
a884b0945d
test(02-02): add failing tests for BackupScheduler
Jason Staack
2026-03-12 20:52:29 -05:00
-
7ff3178b84
docs(02-01): complete config backup primitives plan
Jason Staack
2026-03-12 20:50:27 -05:00
-
4ae39d2cb3
feat(02-01): add config backup env vars, NATS event, device SSH fields, migration, metrics
Jason Staack
2026-03-12 20:48:12 -05:00
-
f1abb75cab
feat(02-01): add SSH executor with TOFU host key verification and config normalizer
Jason Staack
2026-03-12 20:46:04 -05:00
-
33f888a6e2
docs(02): create phase plan for poller config collection
Jason Staack
2026-03-12 20:39:47 -05:00
-
a7a17a5ecd
feat(01-01): add Alembic migration 027 for config snapshot tables with RLS
Jason Staack
2026-03-12 20:04:18 -05:00
-
8fe275e6f3
feat(01-01): add RouterConfigSnapshot/Diff/Change ORM models and tests
Jason Staack
2026-03-12 20:03:43 -05:00
-
7e2d637e0d
docs: initialize project
Jason Staack
2026-03-12 19:37:09 -05:00
-
70126980a4
docs: map existing codebase
Jason Staack
2026-03-12 19:33:26 -05:00
-
5beede9502
Merge branch 'feature/remote-access'
Jason Staack
2026-03-12 19:04:14 -05:00
-
-
c2eea6847f
fix: WinBox tunnel bind address, port range, and proxy support
Jason Staack
2026-03-12 19:03:53 -05:00
-
8cce0ef750
docs: add v9.5 remote access to website docs
Jason Staack
2026-03-12 17:02:02 -05:00
-
-
acf1790bed
feat: add audit.session.end NATS pipeline for SSH session tracking
Jason Staack
2026-03-12 16:07:10 -05:00
-
7aaaeaa1d1
fix: address spec compliance gaps - tenant check, XFF fallback, rate limiting
Jason Staack
2026-03-12 15:51:14 -05:00
-
a4e1c78744
docs: update documentation for v9.5 remote access feature
Jason Staack
2026-03-12 15:47:03 -05:00
-
d2471278ab
feat(frontend): integrate WinBox and SSH buttons into device page
Jason Staack
2026-03-12 15:45:14 -05:00
-
b76fdb3240
feat(frontend): add SSH terminal component with xterm.js
Jason Staack
2026-03-12 15:43:31 -05:00
-
b3b2f87beb
feat(frontend): add WinBox tunnel button component
Jason Staack
2026-03-12 15:43:03 -05:00
-
79afd2a1ad
feat(frontend): add remote access API client methods
Jason Staack
2026-03-12 15:42:42 -05:00
-
e5a9758f58
chore(frontend): add xterm.js dependencies for SSH terminal
Jason Staack
2026-03-12 15:42:29 -05:00
-
27f4403856
feat(infra): add nginx WebSocket proxy and SSH relay config to compose files
Jason Staack
2026-03-12 15:40:53 -05:00
-
4860fad643
feat(api): add remote access endpoints for WinBox tunnels and SSH sessions
Jason Staack
2026-03-12 15:39:24 -05:00
-
63fa45ffdd
feat(api): add remote access pydantic schemas
Jason Staack
2026-03-12 15:36:36 -05:00
-
cb427272ed
feat(poller): wire tunnel manager and SSH relay into main
Jason Staack
2026-03-12 15:35:55 -05:00
-
c73466c5e0
feat(poller): add SSH relay server with WebSocket-to-PTY bridge
Jason Staack
2026-03-12 15:33:48 -05:00
-
d3d3e36192
feat(poller): add NATS tunnel responder for WinBox tunnel management
Jason Staack
2026-03-12 15:30:34 -05:00
-
7a6ebdca89
feat(poller): add tunnel manager with idle cleanup and status tracking
Jason Staack
2026-03-12 15:28:56 -05:00
-
8105b995ff
feat(poller): add TCP tunnel with bidirectional proxy and activity tracking
Jason Staack
2026-03-12 15:26:47 -05:00
-
d885f9b4b6
feat(poller): add port pool for WinBox tunnel allocation
Jason Staack
2026-03-12 15:25:01 -05:00
-
5f9410fa54
chore(poller): add websocket dependency for remote access
Jason Staack
2026-03-12 15:23:48 -05:00
-
c0304da2dd
docs: add remote access (v9.5) implementation plan
Jason Staack
2026-03-12 15:20:04 -05:00
-
d16a5c991f
docs: add remote access design spec (WinBox tunnels + SSH terminal)
Jason Staack
2026-03-12 15:09:31 -05:00
-
bb9176fb9c
docs: update docs to reflect recent fixes and actual codebase state
Jason Staack
2026-03-12 14:13:57 -05:00
-
6b22741f54
fix: audit logs never persisted + firmware-cache permission denied
Cog
2026-03-11 23:02:36 -05:00
-
21b8ce029f
fix: nginx 502 after API container restart (dynamic DNS resolver)
Cog
2026-03-11 22:28:39 -05:00
-
58597ad4fd
fix: CRLF/BOM line endings + restart policies + gitattributes
Cog
2026-03-11 22:16:42 -05:00
-
57e754bb27
fix: implement vault key decryption on login + fix token refresh via cookie
Cog
2026-03-11 21:56:08 -05:00
-
d0548bec86
fix(crypto): use 27 base-30 chars for Secret Key to prevent data loss
Jason Staack
2026-03-10 14:04:24 -05:00
-
b954e0aa2a
fix(docs): restore full quick start steps, fix architecture visibility
Jason Staack
2026-03-09 23:18:53 -05:00
-
b280faadf8
docs: update landing page copy from review notes
Jason Staack
2026-03-09 23:16:38 -05:00
-
44de8c42c4
fix(docs): extend gradient fill across full hero title
Jason Staack
2026-03-09 23:11:43 -05:00
-
786d494670
fix(docs): fix gradient fill direction so it ends on gradient, not white
Jason Staack
2026-03-09 23:10:50 -05:00
-
dc6182bbd0
feat(docs): animate gradient fill across hero title on page load
Jason Staack
2026-03-09 23:09:23 -05:00
-
e2813116da
fix(docs): stagger bullet throb so only one pulses at a time per list
Jason Staack
2026-03-09 23:08:11 -05:00
-
a3630c03e6
fix(docs): make bullet throb loop continuously via CSS only
Jason Staack
2026-03-09 23:06:34 -05:00
-
7126621e83
fix(docs): make bullet throb repeat on every scroll into view
Jason Staack
2026-03-09 23:05:22 -05:00
-
040f0335c1
feat(docs): add bullet throb animation on scroll
Jason Staack
2026-03-09 23:04:11 -05:00
-
ff09382e3a
fix(docs): center content sections to match hero layout
Jason Staack
2026-03-09 23:00:34 -05:00
-
0aa09260db
docs: rewrite landing page with operator-focused copy
Jason Staack
2026-03-09 22:58:21 -05:00
-
5fbff03dea
docs: simplify architecture diagram, remove tech stack badges
Jason Staack
2026-03-09 22:54:49 -05:00
-
28870a61a3
docs: add early access / testing disclaimer
Jason Staack
2026-03-09 22:49:24 -05:00
-
a3d2172797
fix(backend): change APP_BASE_URL default from port 5173 to 3000
Jason Staack
2026-03-09 22:39:04 -05:00
-
837ab6f8fa
fix(backend): parse CLI command string into RouterOS API command + args
Jason Staack
2026-03-09 22:05:05 -05:00
-
394be01145
fix(frontend): default ping/traceroute target to 8.8.8.8
Jason Staack
2026-03-09 21:57:10 -05:00
-
a3cc35c4b7
fix(frontend): generate Emergency Kit PDF client-side with actual Secret Key
Jason Staack
2026-03-09 21:47:50 -05:00
-
6c7dfe02f5
fix(frontend): show Secret Key field when IndexedDB key is stale
Jason Staack
2026-03-09 21:30:09 -05:00
-
32965857e7
fix: wire up empty-state Add Device button to open dialog
Jason Staack
2026-03-09 21:12:01 -05:00
-
2605a97331
fix: use user.user_id instead of user.id in SMTP settings save
Jason Staack
2026-03-09 21:08:21 -05:00
-
f7a53e60da
fix: SMTP TLS logic was inverted — plain SMTP incorrectly used STARTTLS
Jason Staack
2026-03-09 21:03:54 -05:00
-
2461582cb3
fix: use relative paths for bind-mount volumes
Jason Staack
2026-03-09 20:51:33 -05:00
-
9510e56ced
fix: use working dev defaults in .env.example
Jason Staack
2026-03-09 20:46:33 -05:00
-
8949a36454
fix: bump Node to 20 in frontend Dockerfile for Vite 7 compatibility
Jason Staack
2026-03-09 20:39:51 -05:00
-
d30df957e2
fix: rename network from 'mikrotik' to 'tod' to match overlay compose files
Jason Staack
2026-03-09 20:35:42 -05:00
-
4cb887b8fa
ci: add feature request issue template
staack
2026-03-09 17:50:45 -05:00