Files
nilsandClaude Sonnet 5.5 caf2c6b26d Add DNS accounts, Let's Encrypt, password change, reboot, HTTP redirect
- router.dnsProviders: named accounts at DNS providers, used by dynamic
  DNS and certificates (ddclient and lego provider lists in
  pkgs/router-webui/providers.json). Schema 2 migrates router.ddns.
- router.acme: a Let's Encrypt certificate for the web UI via
  security.acme (DNS-01, resolver 1.1.1.1), served and reloaded by the
  web UI; Certificate page.
- Web UI: password change (web UI and root), reboot button, HTTP to HTTPS
  redirect (router.webui.httpPort), grouped menu.
- Latest kernel (linuxPackages_latest); 7.3 and 7.3.0 are the same kernel
  for the reboot hint.
- SPECS.md: wanted later (REST API, GraphQL, MCP).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeFqV9dZrK6nipHkPfyM4F
2026-10-30 19:27:49 +01:00
..

settings.json migrations

settings.json carries a top-level "version" (absent means 0). When a release changes what settings.json may contain (a renamed or removed option, a new default that must be written down), add N.jq here, where N is the next number after the highest one. The file is a jq program that turns a version N-1 document into a version N document; keep unknown keys as they are.

router-update runs the missing ones, in order, on the router's settings.json before it rebuilds, and sets "version" after each. A release's schema version is the number of N.jq files; the build refuses settings that are not at that version, so a router never builds settings its release does not understand.

Example 1.jq, renaming router.wan.interface to router.wan.device:

.router.wan |= (.device = .interface | del(.interface))