Repository navigation
Releases: fcastello/router-sync
Releases · fcastello/router-sync
Release list
Release v1.2.1
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
1.2.1 - 2026-08-11
Fixed
- Prefix-length ip rule priorities — agents reconcile stale priorities on sync (
priority = 2000 + (32 − prefixLen)so/32wins over/25over/24); match and delete rules byfrom <cidr>so equal-length policies do not clobber each other.
Changed
- Documented the
/8–/32→2000–2024priority map in README and ARCHITECTURE.
1.2.0 - 2026-08-11
Added
- MCP policy server — optional streamable HTTP endpoint on the API (
/mcpby default) for listing/creating/updating/deleting routing policies; optional bearer token viaapi.mcp.bearer_tokenorROUTER_SYNC_MCP_TOKEN. - Shared policies service —
internal/policiesused by REST handlers and MCP tools.
Changed
- Go toolchain bumped to 1.24 (module + Docker builder image).
- Documentation and API examples anonymized (generic provider/interface/IP samples; keep
r1/r2).
1.1.0 - 2026-05-29
Added
- Policy favorites —
favoritefield persisted in NATS; pinned section on Policies and Devices. - Policy tags —
tagsarray on policies (API + NATS); tag filter on Policies and Devices; one-time migration from browserlocalStorage. - Policy description — inline edit on Policies and Devices (stored in NATS).
- Display names — inline rename on Policies; Devices uses
policy.namefrom NATS. - Policies UX — default route and nav item; compact + form for new policies.
Changed
- Devices page aligned with Policies (search, sort, favorites, card layout).
device-metalocalStorage reduced to migration-only helpers.
Fixed
- Devices page no longer shows stale browser-only display names.
1.0.0 - 2026-05-28
First stable release of the split API + agent architecture with a standalone web UI.
Added
- Single binary, two modes —
--mode=api(HTTP + NATS only) and--mode=agent(NET_ADMIN, host network, kernel routing). - NATS JetStream KV — three buckets:
router-sync(providers/policies),router-sync-state(60s TTL heartbeats),router-sync-logging(per-service log levels). - Per-router provider interfaces —
interfaces: {r1: eth0, r2: eth1}with automatic migration from legacyinterfaceon API startup. - Router state API —
GET /api/v1/routers, per-host interfaces, routes, andip rulesnapshots. - Per-service logging —
GET/PUT /api/v1/logging/level/{service_id}forapi,agent.r1,agent.r2, etc. - Agent behavior — watches providers/policies (
providers.>/policies.>), appliesip ruleat priority 2000–2032, installs priority-10suppress_prefixlengthrule on start. - State collector — reports all routing tables (not only
main) viaRouteListFiltered. - Web UI (Vite + React) — Dashboard, Routers, Devices, Policies, Providers, Settings; traffic allocation counts enabled policies only.
- Prometheus metrics — API on
:18080/metrics, agent on:18082/metrics. - Active/active writes — generation +
writer_idconflict resolution on provider and policy updates.
Changed
- Entry point moved to
cmd/router-sync/main.go; removed monolithicmain.goandinternal/syncpackage (replaced byinternal/agent). - API server no longer depends on
router.Manager; all read paths use NATS KV. - Default API listen address
:18080; agent metrics/health on:18082. - Default log level
warn(wasinfoin older configs). - Dockerfile and Makefile build
./cmd/router-sync. - README, ARCHITECTURE.md, and BLOG.md rewritten for the new deployment model.
Removed
- Combined “sync service on every router that also serves HTTP” deployment model.
0.1.0 - 2025-07-11
Added
- Linux installer with systemd unit.
Changed
- Release tooling and contributing guide updates.
0.0.2 - 2025-07-11
Changed
- Changelog and release workflow updates.
0.0.1 - 2025-07-11
Added
- Initial router synchronization service with NATS.io integration, REST API, and policy-based routing.
Release v1.2.0
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
1.2.0 - 2026-08-11
Added
- MCP policy server — optional streamable HTTP endpoint on the API (
/mcpby default) for listing/creating/updating/deleting routing policies; optional bearer token viaapi.mcp.bearer_tokenorROUTER_SYNC_MCP_TOKEN. - Shared policies service —
internal/policiesused by REST handlers and MCP tools.
Changed
- Go toolchain bumped to 1.24 (module + Docker builder image).
- Documentation and API examples anonymized (generic provider/interface/IP samples; keep
r1/r2).
1.1.0 - 2026-05-29
Added
- Policy favorites —
favoritefield persisted in NATS; pinned section on Policies and Devices. - Policy tags —
tagsarray on policies (API + NATS); tag filter on Policies and Devices; one-time migration from browserlocalStorage. - Policy description — inline edit on Policies and Devices (stored in NATS).
- Display names — inline rename on Policies; Devices uses
policy.namefrom NATS. - Policies UX — default route and nav item; compact + form for new policies.
Changed
- Devices page aligned with Policies (search, sort, favorites, card layout).
device-metalocalStorage reduced to migration-only helpers.
Fixed
- Devices page no longer shows stale browser-only display names.
1.0.0 - 2026-05-28
First stable release of the split API + agent architecture with a standalone web UI.
Added
- Single binary, two modes —
--mode=api(HTTP + NATS only) and--mode=agent(NET_ADMIN, host network, kernel routing). - NATS JetStream KV — three buckets:
router-sync(providers/policies),router-sync-state(60s TTL heartbeats),router-sync-logging(per-service log levels). - Per-router provider interfaces —
interfaces: {r1: eth0, r2: eth1}with automatic migration from legacyinterfaceon API startup. - Router state API —
GET /api/v1/routers, per-host interfaces, routes, andip rulesnapshots. - Per-service logging —
GET/PUT /api/v1/logging/level/{service_id}forapi,agent.r1,agent.r2, etc. - Agent behavior — watches providers/policies (
providers.>/policies.>), appliesip ruleat priority 2000–2032, installs priority-10suppress_prefixlengthrule on start. - State collector — reports all routing tables (not only
main) viaRouteListFiltered. - Web UI (Vite + React) — Dashboard, Routers, Devices, Policies, Providers, Settings; traffic allocation counts enabled policies only.
- Prometheus metrics — API on
:18080/metrics, agent on:18082/metrics. - Active/active writes — generation +
writer_idconflict resolution on provider and policy updates.
Changed
- Entry point moved to
cmd/router-sync/main.go; removed monolithicmain.goandinternal/syncpackage (replaced byinternal/agent). - API server no longer depends on
router.Manager; all read paths use NATS KV. - Default API listen address
:18080; agent metrics/health on:18082. - Default log level
warn(wasinfoin older configs). - Dockerfile and Makefile build
./cmd/router-sync. - README, ARCHITECTURE.md, and BLOG.md rewritten for the new deployment model.
Removed
- Combined “sync service on every router that also serves HTTP” deployment model.
0.1.0 - 2025-07-11
Added
- Linux installer with systemd unit.
Changed
- Release tooling and contributing guide updates.
0.0.2 - 2025-07-11
Changed
- Changelog and release workflow updates.
0.0.1 - 2025-07-11
Added
- Initial router synchronization service with NATS.io integration, REST API, and policy-based routing.
v1.1.0
Changelog
- b5c7cfd feat(ui): align Devices page with Policies (favorites, search, sort)
- aec4ad1 feat(ui): inline edit of policy display names on Policies page
- 92ff439 feat(ui): make Policies the default route and first nav item
- f1ca578 feat(ui): replace policy create card with compact + button form
- 539e60d feat: persist policy favorites in NATS and show pinned section in UI
- 225d316 feat: persist policy tags and description in NATS KV
- 73e38d2 fix(ui): sync Devices display names with NATS policy.name