Commit Graph
87 Commits
Author SHA1 Message Date
sir_melonchenandClaude Opus 5.5 2b04661792 feat: clusters, TSIG keys, zones and records in service and REST API
Implements the M5 endpoints of the contract (ADR 0023): clusters with
member validation, transfer keys and HA credentials, TSIG keys with
audited secret access and rotation, explicit zones and typed records,
the DHCP cluster of networks, the cluster of agents and the default
clusters and HA password file of the generator settings. Revisions are
stored per target with sealed secret files and sealed source secrets
(restored for rollbacks); bundles carry an agent's own target or the
default group. Active leases are adopted as dynamic addresses.

The derivation is called through a temporary adapter until derive
implements the M5 contract.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:47:37 +02:00
sir_melonchenandClaude Opus 5.5 303c4781f8 feat(store): M5 schema for clusters, TSIG keys, zones, records and revision targets
Migration 00005: clusters with members (composite foreign keys keep the
roles of agents, clusters, zones and networks apart), TSIG keys with sealed
secrets, zones with update keys, typed DNS records, the DHCP cluster of a
network, revision files per target with a secret flag and sealed revision
secrets. Repositories for the new tables and for the lease adoption.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:45:34 +02:00
sir_melonchenandClaude Opus 5.5 99c94f1305 feat: HA password file path in the M5 contracts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:21:53 +02:00
sir_melonchenandClaude Opus 5.5 2466b81f04 style: gofmt model
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:20:59 +02:00
sir_melonchenandClaude Opus 5.5 b6775e1dcd feat: M5 contracts for clusters, zones, records, TSIG keys and HA
ADR 0023, generator input and output types per target, and the REST API
for clusters, TSIG keys, zones and records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:20:54 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 29f723612a docs: mark milestone M4 as complete, update project log
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 1m7s
ci / Shell and licence headers (push) Successful in 8s
ci / Go (lint, test, vuln) (push) Successful in 3m16s
ci / Release build (dry run) (push) Successful in 2m26s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 2m6s
ci / Development environment (compose) (push) Successful in 13s
ci / Integration (real BIND and Kea) (push) Successful in 1m55s
release / release (push) Successful in 2m12s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.5.0
2026-10-13 20:52:23 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 7b01f2f2f8 test(e2e): reuse the API session instead of logging in for every step
ci / Protobuf (push) Successful in 18s
ci / Web (lint, test, audit, build) (push) Successful in 1m19s
ci / Release build (dry run) (push) Successful in 2m9s
ci / Integration (real BIND and Kea) (push) Successful in 11m26s
ci / Shell and licence headers (push) Successful in 19s
ci / Go (lint, test, vuln) (push) Successful in 4m46s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 2m7s
ci / Development environment (compose) (push) Successful in 12s
Every api.sh step logged in again and the run hit the login rate limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:35:32 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 d1f4eb999f feat: translate M4 problem codes, record implementation details in ADR 0022
ci / Protobuf (push) Successful in 7s
ci / Web (lint, test, audit, build) (push) Successful in 1m7s
ci / Shell and licence headers (push) Successful in 7s
ci / Go (lint, test, vuln) (push) Successful in 3m17s
ci / Release build (dry run) (push) Successful in 2m29s
ci / End-to-end (server, agents, BIND, Kea) (push) Failing after 2m2s
ci / Development environment (compose) (push) Successful in 12s
ci / Integration (real BIND and Kea) (push) Successful in 3m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:26:52 +02:00
beug.k@beugsiud.de 9e4887601e Merge branch 'worktree-agent-a60dbb92836336cb2' 2026-10-13 20:24:34 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 00b9ffb65b feat(server): operating modes, push deployments, rollback, diff, pending changes and SSE
- PATCH /agents/{id} switches the mode and reconnects the agent
- POST /revisions/{n}/deploy creates pending push deployments, sends
  ApplyRevisionCommand with the deployment ID, re-sends open pushes on
  connect and announces them in GetDesiredState; reports with the ID
  complete the deployment
- POST /revisions/{n}/rollback re-renders the stored generator input
  with the next revision number
- GET /revisions/{n}/diff and GET /config/pending with unified diffs
- GET /events streams agent, deployment, revision and pending events

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:23:47 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 b8a714fb5b feat(server): in-process event bus for live updates
Fan-out to subscribers with bounded buffers; slow subscribers miss
events instead of blocking publishers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:23:46 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 28dc177310 feat(store): migration 00004 for push deployments, target revisions and revision sources
Agents get a target revision (manual mode), revisions store their
generator input (jsonb) for rollbacks, deployments gain the outcomes
pending and superseded, a nullable end and the requesting user. The
duplicate protection now covers agent reports only. Transactions can
register hooks that run after the commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:23:45 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 3879c27f35 fix(web): do not preselect agents that already run a newer revision
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:16:23 +02:00
beug.k@beugsiud.de 519d3a1ff4 Merge branch 'worktree-agent-ace13af6aa36eb177' 2026-10-13 20:13:18 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 70884c9653 test(web): pending changes, diffs, deploy, rollback, mode and live events
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:12:52 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 751fecddd9 feat(web): diff view, pending changes, deploy now and rollback
Revisions page lists the pending audit entries and file diffs above
"Neue Revision". The revision page compares with the previous revision
(or another one, or empty), pushes the revision to selected agents with
a per-agent delivery result, and rolls back by creating a new revision
with the old content.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:12:52 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 2fa3f4db21 feat(web): live updates, pending-changes notice, agent mode switch
Server-sent events from /api/v1/events invalidate the affected queries
(agents, deployments, revisions, pending changes) and reconnect with
backoff; while connected, polling drops to a 60 s fallback. The footer
shows the live status, the header notes how many changes wait to be
deployed. Agents get a mode switch (auto_pull/manual) with their target
revision; deployments show the pending and superseded outcomes and who
requested a push. Translations for all M4 texts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:12:51 +02:00
beug.k@beugsiud.de 92b9e6e015 Merge branch 'worktree-agent-a8916aaf27575ea1e' 2026-10-13 20:12:13 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 9e5cffe964 docs(adr): pushes never go below an agent's active revision
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:12:13 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 e7a0fbb123 test(e2e): pending changes, manual mode with push, diff, rollback, events
New steps before the revoke step: /config/pending reports nothing after
revision 2 and the new address afterwards; the DHCP agent switched to
manual mode stays on revision 2 while the DNS agent reaches 3, and an
explicit push of revision 3 brings it there with a succeeded push
deployment; the diff of revision 3 contains the new host; rolling back
to revision 1 creates revision 4 with SOA serial 4 and without the later
names; /events announces a revision created while listening.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:11:27 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 9a4046e3e2 feat(agent): push deployments by polling, apply each deployment once
- GetDesiredStateResponse.deployment_id set: the desired revision is
  applied as a push with that ID, also in manual mode (ADR 0022).
- The reports of the last 20 push deployments are kept in state.json.
  A resent push with a handled deployment ID is not applied again; its
  report is delivered again unless it is still queued.
- A push already queued with the same deployment ID is not queued twice.
- Reports the server refuses for good (InvalidArgument, NotFound,
  AlreadyExists, FailedPrecondition, OutOfRange) are dropped instead of
  blocking the report queue.
- Tests for polling pushes, resent pushes, mode changes via a new
  Welcome, persistence and bounds of handled deployments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:07:35 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 d5511b3286 feat: M4 contracts for push deployments, diff, rollback and live events
ADR 0022, OpenAPI additions (agent mode, deploy, rollback, diff, pending
changes, server-sent events), deployment_id in GetDesiredStateResponse
for pushes picked up by polling, and the textdiff package (Myers,
unified format).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:53:21 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 866c0cbdcb docs: mark milestone M3 as complete, update project log
ci / Protobuf (push) Successful in 18s
ci / Web (lint, test, audit, build) (push) Successful in 1m15s
ci / Shell and licence headers (push) Successful in 19s
ci / Release build (dry run) (push) Successful in 2m8s
release / release (push) Successful in 2m11s
ci / Go (lint, test, vuln) (push) Successful in 4m16s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 1m48s
ci / Development environment (compose) (push) Successful in 12s
ci / Integration (real BIND and Kea) (push) Successful in 2m42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.4.0
2026-10-13 19:48:09 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 d3e5807a09 test: retry image pulls, executable e2e scripts, fix truncation test
ci / Protobuf (push) Successful in 18s
ci / Web (lint, test, audit, build) (push) Successful in 1m16s
ci / Shell and licence headers (push) Successful in 20s
ci / Release build (dry run) (push) Successful in 2m9s
ci / Go (lint, test, vuln) (push) Successful in 4m19s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 1m49s
ci / Development environment (compose) (push) Successful in 12s
ci / Integration (real BIND and Kea) (push) Successful in 5m12s
Docker Hub timed out on the shared runner; pulls now retry and fall back
to a local image. The e2e scripts were committed without the executable
bit. The truncation test checked letters that the marker itself contains.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:37:53 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 56347ec5ff test: end-to-end test of the agent path, fix first CI findings
ci / Web (lint, test, audit, build) (push) Successful in 1m1s
ci / Shell and licence headers (push) Successful in 7s
ci / Go (lint, test, vuln) (push) Failing after 2m40s
ci / Protobuf (push) Successful in 6s
ci / Release build (dry run) (push) Successful in 2m27s
ci / End-to-end (server, agents, BIND, Kea) (push) Failing after 1m26s
ci / Development environment (compose) (push) Successful in 13s
ci / Integration (real BIND and Kea) (push) Failing after 1m58s
test/e2e runs server, PostgreSQL, BIND and Kea with both agents in
containers (make test-e2e, CI job End-to-end): enrollment with the
command from the API, revision 1 and 2 applied and served by BIND and
Kea, unchanged data creates no revision, revoking disconnects the agent
while BIND keeps serving.

Fixes from the first CI run: quote a spec description containing a
comma, exempt the agent lock-out routes in the route protection test,
whole-second certificate lifetimes, a push replacing queued pulls, the
truncation marker containing the letter checked, and curl|grep -q under
pipefail in the server smoke test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:29:58 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 56892631be feat: wire BIND and Kea roles into the agents, allow revoking agents in read-only mode
ci / Protobuf (push) Successful in 2m18s
ci / Go (lint, test, vuln) (push) Failing after 3m11s
ci / Shell and licence headers (push) Successful in 8s
ci / Web (lint, test, audit, build) (push) Successful in 1m14s
ci / Integration (real BIND and Kea) (push) Successful in 1m42s
ci / Release build (dry run) (push) Failing after 2m24s
ci / Development environment (compose) (push) Successful in 38s
Revoking or deleting an agent and deleting enrollment tokens lock agents
out, a security function that must stay available when the license is
read-only. Translations for the new problem codes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:19:31 +02:00
beug.k@beugsiud.de 31fb8285eb Merge branch 'worktree-agent-a423f65773305d370' 2026-10-13 19:16:01 +02:00
beug.k@beugsiud.de 1a88112ce3 Merge branch 'worktree-agent-af35c8bdd4b0bcf64' 2026-10-13 19:15:16 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 7bbcd28aa6 test(agent/role): run the DNS and DHCP roles against real BIND and Kea
A driver is cross-compiled for the Docker daemon's architecture and
copied with fixture revisions into BIND 9.18/9.20 and Kea 2.6.5/3.2.1
containers (docker cp, no bind mounts or published ports). It runs the
core's pipeline: two revisions apply, broken revisions are rejected,
a failed live check and a failed health check roll back, a failed Kea
reload restores the previous file, and leases added with lease4-add
are listed page by page. make test-integration runs it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:35 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 562f35c10c feat(agent/dhcp): Kea DHCPv4 role over the UNIX control socket
Validate requires exactly kea-dhcp4.conf with this agent's control
socket and runs kea-dhcp4 -t. Activate writes the file atomically and
sends config-reload; on failure the previous file is restored and
reloaded. Health uses status-get (pid, uptime, last reload, socket
state) and checks that the installed file is the expected revision.
Leases pages through lease4-get-page and maps Kea lease states
(default, declined, expired-reclaimed, released) to core lease states.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:34 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 d61b738a8c feat(agent/dns): BIND role with validation, activation and SOA health check
Validate maps ddi-suite*.conf to conf_dir and zones/db.<zone> to
zone_dir, rejects other files and a zone directory that differs from
dns.zone_dir, and runs named-checkconf on a temporary named.conf plus
strict named-checkzone per zone. Activate backs up all touched files,
writes zone files then includes atomically (unchanged files are kept),
never touches existing create-only files, removes files dropped since
the previous revision and the stale journal of a zone that became
managed, runs named-checkconf -z on the live named.conf and then
rndc reconfig and rndc reload; failures restore the backup (and reload
again). Health runs rndc status and compares the SOA serial of every
managed zone (UDP with TCP fallback, authoritative answers only).

golang.org/x/net becomes a direct dependency (dnsmessage).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:34 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 bb13723c2b feat(app): start the agent API next to the HTTP listener
Loads or creates the agent PKI at startup, serves the gRPC agent API on
agent_api.listen with graceful shutdown, exports ddi_agents_connected
and removes old enrollment tokens periodically.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:30 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 53e4cb75d6 fix(agentapi): align keepalive, message size and deployment reports with the agent core
Keepalive MinTime 20 s (agents ping every 30 s, also without a stream),
send limit above bundle.MaxTotalSize, and resent deployment reports
(same agent, revision and start time) are dropped without error and
without touching the agent's state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:30 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 b5e57c3cb7 feat(agent/role): command runner and atomic file helpers for the roles
Shared, role-internal helpers: programs run without a shell, with a
timeout and captured, truncated output quoted in errors; configuration
files are replaced atomically (temp file, fsync, rename, directory sync)
with explicit mode and the owner of the existing file or its directory;
an in-memory backup restores touched files after a failed activation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:14:23 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 4b02c06adf chore: ignore local agent worktrees
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:12:07 +02:00
beug.k@beugsiud.de c6162e00d2 Merge branch 'worktree-agent-a2c569cc905081672' 2026-10-13 19:10:13 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 258919fd12 feat(agentapi): gRPC agent service with mTLS and certificate checks
TLS 1.3 listener that requests client certificates and checks them in
interceptors: Enroll needs a valid one-time token (rate limited per
source IP), RenewCertificate accepts certificates expired up to 30 days,
every other call needs the agent's current, unrevoked certificate.
Connect registers the stream in the hub (pushes, revocation, shutdown);
FetchBundle signs the role's artifacts per agent; lease batches are
deduplicated by sequence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:09:11 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 3065175673 feat(agent): enrollment, server connection and apply pipeline
- CLI: enroll, run, status, version, help (core.Main with a role
  factory); the agent binaries use a placeholder factory until the
  BIND and Kea roles are wired in.
- Enrollment: local ECDSA P-256 key and CSR, TLS 1.3 to the agent API
  with the server chain pinned to the CA fingerprint.
- ServerSource: mTLS gRPC with keepalive, Connect stream (Hello,
  Welcome, heartbeats, apply and renew commands), reconnect with
  exponential backoff and jitter, GetDesiredState polling as fallback,
  certificate renewal after half of the lifetime.
- Apply pipeline: fetch, bundle verification with replay protection,
  store, Validate, Activate, Health with retries, rollback to the last
  good revision; outcomes succeeded/rejected/rolled_back/failed are
  queued in state.json and reported; failed revisions are retried only
  by a newer revision or an explicit push.
- Lease reporting with change detection, persistent sequence and full
  snapshots at start, per connection and periodically.
- Tests with fake roles, a fake source and an in-process fake
  AgentService over real mTLS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:06:05 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 c96eb33e58 feat(agent): configuration file and file-based agent state
Agent configuration (agent-<role>.yaml, strict decoding, role section
passed undecoded to the role factory) and the state directory of ADR
0011: identity with interrupted-renewal recovery, verified revisions
under revisions/<n>/, state.json with apply results, lease sequence and
queued deployment reports, atomic writes, pruning and a lock file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:05:16 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 92d1d9ec3d feat(api): agents, enrollment tokens, revisions, deployments and leases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:02:50 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 1bdd877051 feat(service): agents, enrollment tokens, revisions, deployments and leases
Use cases for the REST API (agent list/revoke/delete, one-time tokens
with the ready enrollment command, immutable revisions with unchanged
detection, deployment and lease lists) and for the agent data plane
(enrollment, renewal, status, bundles, deployment and lease reports).
A hub of open agent streams pushes new revisions to auto_pull agents and
closes the stream of revoked agents.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:02:49 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 89d7949e18 feat(config): agent_api listener settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:54:14 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 c60cd4a21e feat(pki): agent CA, bundle signing key and certificate issuance
The CA (ECDSA P-256, 10 years) and the Ed25519 bundle signing key are
created on first start, sealed with the master key and stored once
(concurrent starts read back the winner). The agent-port server
certificate is issued in memory; agent CSRs are signed for 14 days.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:54:13 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 8e76c0cf32 feat(store): agents, enrollment tokens, revisions, deployments and leases
Migration 00003 adds the PKI key table, agents, enrollment tokens,
immutable configuration revisions with their files, deployment reports
and DHCP leases, each with database constraints. Repositories and DB
tests for all of them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:54:12 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 6c1f7249b0 feat(web): agents, enrollment tokens, revisions, deployments and leases
Agent overview with connection, health and revision state (polled every
five seconds until the live stream of M4), agent details with checks and
deployment history, enrollment token dialog showing the ready-to-run
command, revision list and creation, revision details with deployments
and files, and a lease list with network, state and text filters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:05:01 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 e843502cbf feat: M3 contracts for agents, revisions and bundles
Shared Apache-2.0 packages for the signed bundle format and the agent
certificate conventions, the agent role interface, REST API spec for
agents, enrollment tokens, revisions, deployments and leases, and ADR
0021. Generator settings now hold the target paths on the managed hosts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:54:30 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 44de779fbf docs: mark milestone M2 as complete, update project log
ci / Shell and licence headers (push) Successful in 6s
release / release (push) Successful in 1m53s
ci / Go (lint, test, vuln) (push) Successful in 3m36s
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 56s
ci / Release build (dry run) (push) Failing after 1m55s
ci / Integration (real BIND and Kea) (push) Successful in 43s
ci / Development environment (compose) (push) Successful in 13s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.3.0
2026-10-13 14:36:57 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 279bb92c74 test(integration): pull images first and keep docker stderr apart
ci / Go (lint, test, vuln) (push) Successful in 3m43s
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 57s
ci / Shell and licence headers (push) Successful in 7s
ci / Release build (dry run) (push) Successful in 1m58s
ci / Integration (real BIND and Kea) (push) Successful in 41s
ci / Development environment (compose) (push) Successful in 14s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:28:17 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 b94b6c8dae test(api): reset preview before decoding the second response
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:24:08 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 0a74d4b3ba feat: generator settings and configuration preview (API and UI)
ci / Go (lint, test, vuln) (push) Failing after 3m31s
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 57s
ci / Shell and licence headers (push) Successful in 6s
ci / Release build (dry run) (push) Successful in 1m59s
ci / Integration (real BIND and Kea) (push) Failing after 43s
ci / Development environment (compose) (push) Successful in 13s
- stable Kea subnet IDs per network (migration 00002)
- generator settings (SOA, name servers, TTLs, recursion, DHCP defaults)
- GET /config/preview renders the configuration for the current data
- UI: configuration preview page and DNS/DHCP settings page

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:19:26 +02:00