Skip to content

Releases: fcastello/router-sync

Release v1.2.1

Choose a tag to compare

@fcastello fcastello released this 11 Aug 22:52

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 /32 wins over /25 over /24); match and delete rules by from <cidr> so equal-length policies do not clobber each other.

Changed

  • Documented the /8–/32 → 2000–2024 priority map in README and ARCHITECTURE.

1.2.0 - 2026-08-11

Added

  • MCP policy server — optional streamable HTTP endpoint on the API (/mcp by default) for listing/creating/updating/deleting routing policies; optional bearer token via api.mcp.bearer_token or ROUTER_SYNC_MCP_TOKEN.
  • Shared policies service — internal/policies used 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 — favorite field persisted in NATS; pinned section on Policies and Devices.
  • Policy tags — tags array on policies (API + NATS); tag filter on Policies and Devices; one-time migration from browser localStorage.
  • Policy description — inline edit on Policies and Devices (stored in NATS).
  • Display names — inline rename on Policies; Devices uses policy.name from 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-meta localStorage 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 legacy interface on API startup.
  • Router state API — GET /api/v1/routers, per-host interfaces, routes, and ip rule snapshots.
  • Per-service logging — GET/PUT /api/v1/logging/level/{service_id} for api, agent.r1, agent.r2, etc.
  • Agent behavior — watches providers/policies (providers.> / policies.>), applies ip rule at priority 2000–2032, installs priority-10 suppress_prefixlength rule on start.
  • State collector — reports all routing tables (not only main) via RouteListFiltered.
  • 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_id conflict resolution on provider and policy updates.

Changed

  • Entry point moved to cmd/router-sync/main.go; removed monolithic main.go and internal/sync package (replaced by internal/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 (was info in 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

Choose a tag to compare

@fcastello fcastello released this 11 Aug 22:12

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 (/mcp by default) for listing/creating/updating/deleting routing policies; optional bearer token via api.mcp.bearer_token or ROUTER_SYNC_MCP_TOKEN.
  • Shared policies service — internal/policies used 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 — favorite field persisted in NATS; pinned section on Policies and Devices.
  • Policy tags — tags array on policies (API + NATS); tag filter on Policies and Devices; one-time migration from browser localStorage.
  • Policy description — inline edit on Policies and Devices (stored in NATS).
  • Display names — inline rename on Policies; Devices uses policy.name from 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-meta localStorage 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 legacy interface on API startup.
  • Router state API — GET /api/v1/routers, per-host interfaces, routes, and ip rule snapshots.
  • Per-service logging — GET/PUT /api/v1/logging/level/{service_id} for api, agent.r1, agent.r2, etc.
  • Agent behavior — watches providers/policies (providers.> / policies.>), applies ip rule at priority 2000–2032, installs priority-10 suppress_prefixlength rule on start.
  • State collector — reports all routing tables (not only main) via RouteListFiltered.
  • 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_id conflict resolution on provider and policy updates.

Changed

  • Entry point moved to cmd/router-sync/main.go; removed monolithic main.go and internal/sync package (replaced by internal/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 (was info in 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

Choose a tag to compare

@fcastello fcastello released this 29 May 12:41

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

v1.0.0

Choose a tag to compare

@fcastello fcastello released this 28 May 20:00

Changelog

  • 4111081 Add web UI, runtime log level API, and routing sync improvements.
  • f99d396 Split into API and agent modes with live router state and UI.

Release v0.1.0

Choose a tag to compare

@fcastello fcastello released this 11 Jul 17:13
chore: bump version to 0.1.0

Release v0.0.2

Choose a tag to compare

@fcastello fcastello released this 11 Jul 16:53
chore: bump version to 0.0.2

Release v0.0.1

Choose a tag to compare

@fcastello fcastello released this 11 Jul 16:26

[Unreleased]

v0.0.1 - 2025-07-11

Chore

  • reset version to 0.0.1
  • bump version to 0.1.2
  • bump version to 0.1.1

Feat

  • initial commit - router synchronization service with NATS.io integration