Skip to content

feat(hooks): layered ConfigLayer.Hooks with append-merge - #428

Merged
smallnest merged 1 commit into
masterfrom
feat/issue-418-config-hooks
Jul 30, 2026
Merged

feat(hooks): layered ConfigLayer.Hooks with append-merge#428
smallnest merged 1 commit into
masterfrom
feat/issue-418-config-hooks

Conversation

@smallnest

Copy link
Copy Markdown
Owner

Summary

  • Add Hooks hooks.HookSet to both ConfigLayer (json:"hooks,omitempty") and resolved Config
  • ResolveConfig append-merges hook matchers per event type in ascending layer order (FR-2) — lower-layer hooks always still fire, unlike field-level scalar override
  • Leaves cfg.Hooks nil when no layer defines hooks / only empty matcher slices (FR-18), so downstream dispatch can skip cheaply
  • run.go dispatcher wiring + trust-gated project loading intentionally deferred to hooks: Dispatcher 接线骨架 + 单一 InstallHooks 装配 helper #419

Closes #418

Test plan

  • go build ./...
  • go test ./internal/runtime/... ./internal/hooks/...
  • go vet ./internal/runtime/...
  • New tests: multi-layer append-merge + order, nil-when-absent, JSON decode with timeout

Add Hooks hooks.HookSet to ConfigLayer and resolved Config. ResolveConfig
append-merges hook matchers per event type in ascending layer order (FR-2),
so lower-layer hooks still fire; leaves cfg.Hooks nil when no hooks defined
(FR-18). Tests cover multi-layer merge, nil-when-absent, and JSON decode.
@smallnest
smallnest merged commit 0dadf24 into master Jul 30, 2026
1 check failed
@smallnest
smallnest deleted the feat/issue-418-config-hooks branch July 30, 2026 02:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

hooks: ConfigLayer.Hooks 分层配置与合并

1 participant