From efda93c5164ef1f2beba22c0a0d31d4ec133c495 Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 13:56:04 +0200 Subject: [PATCH 1/6] chore(deps): bump gosec to v2.27.1 in tools Upgrade github.com/securego/gosec/v2 v2.22.11 -> v2.27.1, the latest release still declaring go 1.25 so the tools module's go directive stays at 1.25.0 (no bump to 1.26). Transitive updates pulled in: golang.org/x/net 0.49.0->0.55.0, x/sync 0.19.0->0.20.0, x/text 0.34.0->0.37.0, x/tools 0.41.0->0.45.0, google.golang.org/grpc 1.75.0->1.81.1, genai 1.37.0->1.58.0, protobuf 1.36.8->1.36.11, and genproto/googleapis/rpc. --- go.work.sum | 5 +- tools/go.mod | 61 +++++++++++--------- tools/go.sum | 155 +++++++++++++++++++++++++++++++-------------------- 3 files changed, 133 insertions(+), 88 deletions(-) diff --git a/go.work.sum b/go.work.sum index 057c843..675747d 100644 --- a/go.work.sum +++ b/go.work.sum @@ -677,6 +677,7 @@ golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvm golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -796,6 +797,7 @@ golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -838,7 +840,6 @@ golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -904,6 +905,7 @@ golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc/go.mod h1:hKdjCMrbv9sk golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2/go.mod h1:b7fPSJ0pKZ3ccUh8gnTONJxhn3c/PS6tyzQvyqw4iA8= golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw= +golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= @@ -1007,6 +1009,7 @@ golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/go.mod b/tools/go.mod index 854b7c9..ed3e992 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -5,44 +5,53 @@ go 1.25.0 tool github.com/securego/gosec/v2/cmd/gosec require ( - cloud.google.com/go v0.121.2 // indirect - cloud.google.com/go/auth v0.16.5 // indirect - cloud.google.com/go/compute/metadata v0.8.0 // indirect - github.com/anthropics/anthropic-sdk-go v1.19.0 // indirect + cloud.google.com/go v0.123.0 // indirect + cloud.google.com/go/auth v0.19.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/anthropics/anthropic-sdk-go v1.46.0 // indirect + github.com/bahlo/generic-list-go v0.2.0 // indirect + github.com/buger/jsonparser v1.2.0 // indirect github.com/ccojocar/zxcvbn-go v1.0.4 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.15.0 // indirect - github.com/gookit/color v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect + github.com/googleapis/gax-go/v2 v2.22.0 // indirect + github.com/gookit/color v1.6.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect - github.com/openai/openai-go/v3 v3.8.1 // indirect + github.com/invopop/jsonschema v0.13.0 // indirect + github.com/mailru/easyjson v0.9.2 // indirect + github.com/openai/openai-go/v3 v3.37.0 // indirect github.com/rogpeppe/go-internal v1.15.0 // indirect - github.com/securego/gosec/v2 v2.22.11 // indirect - github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect + github.com/securego/gosec/v2 v2.27.1 // indirect + github.com/standard-webhooks/standard-webhooks/libraries v0.0.1 // indirect + github.com/tidwall/gjson v1.19.0 // indirect + github.com/tidwall/match v1.2.0 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect + github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect + go.opentelemetry.io/otel v1.44.0 // indirect + go.opentelemetry.io/otel/metric v1.44.0 // indirect + go.opentelemetry.io/otel/trace v1.44.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/mod v0.36.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.45.0 // indirect - golang.org/x/text v0.34.0 // indirect - golang.org/x/tools v0.41.0 // indirect - google.golang.org/genai v1.37.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/grpc v1.75.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect + golang.org/x/text v0.37.0 // indirect + golang.org/x/tools v0.45.0 // indirect + google.golang.org/api v0.274.0 // indirect + google.golang.org/genai v1.58.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/grpc v1.81.1 // indirect + google.golang.org/protobuf v1.36.11 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tools/go.sum b/tools/go.sum index fc93eb7..f6d5a46 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1,17 +1,25 @@ -cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= -cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= -cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= -cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= -cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/anthropics/anthropic-sdk-go v1.19.0 h1:mO6E+ffSzLRvR/YUH9KJC0uGw0uV8GjISIuzem//3KE= -github.com/anthropics/anthropic-sdk-go v1.19.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= +cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= +cloud.google.com/go/auth v0.19.0 h1:DGYwtbcsGsT1ywuxsIoWi1u/vlks0moIblQHgSDgQkQ= +cloud.google.com/go/auth v0.19.0/go.mod h1:2Aph7BT2KnaSFOM0JDPyiYgNh6PL9vGMiP8CUIXZ+IY= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= +github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/anthropics/anthropic-sdk-go v1.46.0 h1:yl3n+el5ZfNgiCtQ7zQ7s/NXxB11YbrKXdc3uLPNWlU= +github.com/anthropics/anthropic-sdk-go v1.46.0/go.mod h1:bx5vWuHFuGPkELH8Z4KUiNSohFnUwScdpTyr+50myPo= +github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= +github.com/buger/jsonparser v1.2.0 h1:4EFcvK1kD4jyj6YqNK6skK6w+y7FHHBR+XBCtxwu/6g= +github.com/buger/jsonparser v1.2.0/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -25,92 +33,117 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY= -github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= +github.com/google/pprof v0.0.0-20260507013755-92041b743c96 h1:YDDnaZ9afWajDboPMt9Vikqca/yWAX7KAxVzb4lJU1M= +github.com/google/pprof v0.0.0-20260507013755-92041b743c96/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= -github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= -github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8= +github.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= +github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4= +github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY= github.com/gookit/assert v0.1.1 h1:lh3GcawXe/p+cU7ESTZ5Ui3Sm/x8JWpIis4/1aF0mY0= github.com/gookit/assert v0.1.1/go.mod h1:jS5bmIVQZTIwk42uXl4lyj4iaaxx32tqH16CFj0VX2E= -github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= -github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= +github.com/gookit/color v1.6.1 h1:KoTnDxJPRgrL0SoX0f8rCFg2zI0t4E3GZZBMo2nN8LU= +github.com/gookit/color v1.6.1/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= +github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= -github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= -github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= -github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= -github.com/openai/openai-go/v3 v3.8.1 h1:b+YWsmwqXnbpSHWQEntZAkKciBZ5CJXwL68j+l59UDg= -github.com/openai/openai-go/v3 v3.8.1/go.mod h1:UOpNxkqC9OdNXNUfpNByKOtB4jAL0EssQXq5p8gO0Xs= +github.com/mailru/easyjson v0.9.2 h1:dX8U45hQsZpxd80nLvDGihsQ/OxlvTkVUXH2r/8cb2M= +github.com/mailru/easyjson v0.9.2/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +github.com/onsi/ginkgo/v2 v2.29.0 h1:rfh+ZFjgJhYWRoIqVf3Uwx/W20yLrcrE2h2GmYVRaag= +github.com/onsi/ginkgo/v2 v2.29.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/gomega v1.41.0 h1:OwKp4pXNgVxf6sCplzYo794OFNuoL2q2SBMU5NSWOjA= +github.com/onsi/gomega v1.41.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= +github.com/openai/openai-go/v3 v3.37.0 h1:4OG68yZgnxZpwzebO+ZDUNkFJKKwKgzilMQq30nsouE= +github.com/openai/openai-go/v3 v3.37.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.15.0 h1:D0RCU5rMAp+SpgkiNdrjfJ+LX4J1M32V2NeCY7EJ6hc= +github.com/rogpeppe/go-internal v1.15.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= -github.com/securego/gosec/v2 v2.22.11 h1:tW+weM/hCM/GX3iaCV91d5I6hqaRT2TPsFM1+USPXwg= -github.com/securego/gosec/v2 v2.22.11/go.mod h1:KE4MW/eH0GLWztkbt4/7XpyH0zJBBnu7sYB4l6Wn7Mw= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/securego/gosec/v2 v2.27.1 h1:bg4lZnpCCpC8e5l0K+ADF5gG91jmT2LQgOcOflwBfJI= +github.com/securego/gosec/v2 v2.27.1/go.mod h1:lbgwsogcxq9aoN62Bk/vcdWwemFjlT5NPF/D/dH4+Ho= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.1 h1:uOfcYT+3QungH6tIGSVCR/Y3KJmgJiHcojJbMTPDZAI= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.1/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= -github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI= +go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= +go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= +go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI= +go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= +go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= +go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E= golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genai v1.37.0 h1:dgp71k1wQ+/+APdZrN3LFgAGnVnr5IdTF1Oj0Dg+BQc= -google.golang.org/genai v1.37.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/api v0.274.0 h1:aYhycS5QQCwxHLwfEHRRLf9yNsfvp1JadKKWBE54RFA= +google.golang.org/api v0.274.0/go.mod h1:JbAt7mF+XVmWu6xNP8/+CTiGH30ofmCmk9nM8d8fHew= +google.golang.org/genai v1.58.0 h1:MNA3ZkRyr7MnRwZ9RNZ60p4+UMKV3yYRw6pyHq4pp0U= +google.golang.org/genai v1.58.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgnawEVsOn6OFsnpyxNPRY9QV01dNB0= +google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= +google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= +google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= +google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From a961ed3d9fe187e0afc175b91ca96f6ccceaa315 Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 14:16:28 +0200 Subject: [PATCH 2/6] docs: add CLAUDE.md for agent guidance --- CLAUDE.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..b5a9256 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,77 @@ +# CLAUDE.md + +Guidance for agents working in this repository. + +## Project + +`github.com/domonda/golog` — a fast, zero-allocation structured logging library for Go +(inspired by zerolog). Production-tested at domonda since 2023. Go 1.25. + +The public API surface is large but mechanical (see `message.go`, ~87 typed `Message` +field methods). Read `doc.go` and `README.md` for the user-facing overview before adding +features; both must be kept in sync with code changes. + +## Multi-module workspace + +This is a `go.work` workspace (`go.work`) with several modules. The root module is +intentionally dependency-light; heavier integrations live in their own modules so users +don't pull in transitive deps they don't need. + +| Path | Module | Notes | +| ------------- | ------------------------------------------ | ------------------------------------------------------------ | +| `.` | `github.com/domonda/golog` | Core library. Released as the root tag (`vX.Y.Z`). | +| `goslog/` | `github.com/domonda/golog/goslog` | `log/slog` backend. Separate module + tag (`goslog/vX.Y.Z`). | +| `logsentry/` | `github.com/domonda/golog/logsentry` | Sentry writer. Separate module + tag (`logsentry/vX.Y.Z`). | +| `benchmarks/` | `github.com/domonda/golog/benchmarks` | Comparative benchmarks vs zerolog/zap/logrus. Not released. | +| `examples/` | `github.com/domonda/golog/examples` | Runnable examples. Not released. | +| `tools/` | `github.com/domonda/golog/tools` | `go tool` directive for gosec only. Not released. | + +`goslog` and `logsentry` `replace` the root with `..`, so local edits to the core are +picked up automatically. + +Sub-packages **without** their own `go.mod` (part of the root module): +- `log/` — ready-to-use package-level logger (`log.Logger`, `log.Info(...)`, etc.), + configured from the `LOG_LEVEL` env var with terminal auto-detection (text on a TTY, + JSON otherwise). See `log/config.go`. +- `logfile/` — size-based rotating file writer. +- `mempool/` — generic pooling primitives (`Pointer[T]`, `Slice[T]`) used everywhere for + zero-alloc reuse. + +## Build, test, lint + +Always operate across all modules — a change to the root can break `goslog`/`logsentry`. + +```bash +./test-workspace.sh # build + go vet + gosec + go test across all modules (except tools) +./test-workspace.sh -v # extra args are forwarded to `go test` +./run-gosec.sh # gosec on the root module only +``` + +Tests run with `-p 1 -count=1` (serial, no cache) because logging touches global state +(`GlobalPanicLevel`, `ErrorHandler`, the package registry). + +Single module / single test during development: +```bash +go build ./... && go vet ./... && go test ./... +go test -run TestName ./... +go tool gosec ./... # gosec is wired via tools/go.mod `tool` directive +``` + +CI: `.github/workflows/go.yml` (build + `go test -v` on the root) and `gosec.yml`. + +## Conventions specific to this repo + +This is a **public, dependency-light library**, so the user's global Go conventions in +`~/.claude/CLAUDE.md` do NOT apply here: +- Uses the **standard library** `errors.New` / `fmt.Errorf`, **not** `go-errs`. +- UUIDs are plain **`[16]byte`** with helpers in `uuid.go` (`UUIDv4`, `ParseUUID`, + `FormatUUID`), **not** the `uu` package. The `Message.UUID` / `Writer.WriteUUID` API + takes `[16]byte`. +- Match the existing style: keep zero-allocation discipline (pool and reuse, avoid + `reflect` on the hot path), and add the corresponding `*_test.go` coverage — most files + have a paired test. + +## Releasing + +`./tag-release.sh vX.Y.Z [message]` tags the root, `goslog/`, and `logsentry/` modules +together (run with no args to see current tags). Ask before pushing tags. From 0bfd33c05d6998b5a675ee9fb3fc521bf180f09b Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 14:31:58 +0200 Subject: [PATCH 3/6] chore: add VERSION and CHANGELOG for v1.1.0 release Introduce a VERSION file (v1.1.0, using Go module version syntax with a leading v to match the git release tags and tag-release.sh) and a Keep a Changelog CHANGELOG.md reconstructed from the v1.0.0..v1.0.7 tag history, with the pending release documented under [1.1.0]. Document the VERSION format and the tag-release.sh flow in CLAUDE.md. --- CHANGELOG.md | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ CLAUDE.md | 3 ++ VERSION | 1 + 3 files changed, 120 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 VERSION diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f5d00e7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,116 @@ +# Changelog + +All notable changes to this project are documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +Releases are git-tagged. The submodules (`logsentry`, `goslog`) are tagged in +lockstep with the root module, e.g. `v1.0.7`, `logsentry/v1.0.7`, `goslog/v1.0.7`. + +## [Unreleased] + +## [1.1.0] - 2026-06-16 + +### Changed + +- **Breaking:** migrate to `getsentry/sentry-go` v0.46.2 and Go 1.25; route + logging errors through `logsentry`; make `golog.ErrorHandler` a thread-safe + accessor (#14). `golog.ErrorHandler` changed from a package variable to a + getter function: replace `golog.ErrorHandler = fn` with + `golog.SetErrorHandler(fn)`, and read the handler via `golog.ErrorHandler()` + or `golog.ErrorHandlerOr(fallback)`. +- Bump `securego/gosec` to v2.27.1 in the `tools` submodule (stays on Go 1.25), + pulling along `google.golang.org/grpc` 1.81.1 and assorted `golang.org/x/*` + and `google.golang.org/*` updates. + +### Fixed + +- UUID parsing now accepts UUID versions 6, 7 and 8. + +### Documentation + +- Add `CLAUDE.md` with guidance for AI coding agents working in the repo. +- Fix the tag prefix in the redact breaking-change note. + +## [1.0.7] - 2026-04-14 + +### Added + +- `Format.Location` for fixed-timezone time formatting. + +## [1.0.6] - 2026-04-14 + +### Added + +- Tag-driven struct field logging with `omit`/`redact` modifiers. +- `Timestamp` type for flexible log timestamp parsing. + +### Changed + +- Move gosec into the `tools` submodule; expand `test-workspace.sh`. +- Bump Go to 1.24.9 and update dependencies (incl. `grpc` 1.79.3). + +### Documentation + +- Document `Timestamp` and `Format` defaults in the README. + +## [1.0.5] - 2026-02-12 + +### Fixed + +- Use `v0.0.0-00010101000000-000000000000` for locally replaced module versions. + +## [1.0.4] - 2026-02-12 + +### Fixed + +- `logsentry.WriterConfig`: add nil checks for hub and format in + `NewWriterConfig`; handle a nil error in `WriteError`. +- Ensure `WriteError` implementations do not panic on a nil error. +- `IsTerminal`: add a `#nosec` directive for the file-descriptor conversion. + +## [1.0.3] - 2026-02-10 + +### Changed + +- `WriterConfig`: add `mergeWriterConfigs` and optimize + `uniqueNonNilWriterConfigs`. + +## [1.0.2] - 2026-02-03 + +### Fixed + +- `SubLoggerContext`: self-referential `DerivedConfig` causing a stack overflow. + +## [1.0.1] - 2026-01-30 + +### Added + +- `DynDerivedConfig`; keep `DerivedConfig` fast without a mutex. + +### Fixed + +- `CallbackWriter`: nil pointer dereference in all slice `Write` methods. +- `logsentry` writer: improve panic-recovery error handling; add recovery in + `CommitMessage` and `FlushUnderlying`. +- `logfile`: recover `RotatingWriter` after a failed rotation. + +## [1.0.0] - 2026-01-28 + +### Added + +- Initial tagged release: zero-allocation append-style text output, `Time` + attrib type for zero-allocation `time.Time` logging, and the `tag-release` + versioning script. + +[Unreleased]: https://github.com/domonda/golog/compare/v1.1.0...HEAD +[1.1.0]: https://github.com/domonda/golog/compare/v1.0.7...v1.1.0 +[1.0.7]: https://github.com/domonda/golog/compare/v1.0.6...v1.0.7 +[1.0.6]: https://github.com/domonda/golog/compare/v1.0.5...v1.0.6 +[1.0.5]: https://github.com/domonda/golog/compare/v1.0.4...v1.0.5 +[1.0.4]: https://github.com/domonda/golog/compare/v1.0.3...v1.0.4 +[1.0.3]: https://github.com/domonda/golog/compare/v1.0.2...v1.0.3 +[1.0.2]: https://github.com/domonda/golog/compare/v1.0.1...v1.0.2 +[1.0.1]: https://github.com/domonda/golog/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/domonda/golog/releases/tag/v1.0.0 diff --git a/CLAUDE.md b/CLAUDE.md index b5a9256..f0d8bc1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -73,5 +73,8 @@ This is a **public, dependency-light library**, so the user's global Go conventi ## Releasing +The `VERSION` file uses Go module version syntax — a leading `v` followed by semver +(`vMAJOR.MINOR.PATCH`, e.g. `v1.1.0`), matching the git release tags. + `./tag-release.sh vX.Y.Z [message]` tags the root, `goslog/`, and `logsentry/` modules together (run with no args to see current tags). Ask before pushing tags. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..795460f --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v1.1.0 From 39d6062588436784cae785b572567e6c9f436383 Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 14:42:50 +0200 Subject: [PATCH 4/6] docs: note logsentry payload change and correct test-workspace scope Add a CHANGELOG bullet for the v1.1.0 logsentry Sentry payload change (values move from the removed Event.Extra to the "log" context; reserved "type" key sent as "type_"), and correct CLAUDE.md to note test-workspace.sh also skips the examples module for gosec. --- CHANGELOG.md | 3 +++ CLAUDE.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5d00e7..ed22aa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,9 @@ lockstep with the root module, e.g. `v1.0.7`, `logsentry/v1.0.7`, `goslog/v1.0.7 getter function: replace `golog.ErrorHandler = fn` with `golog.SetErrorHandler(fn)`, and read the handler via `golog.ErrorHandler()` or `golog.ErrorHandlerOr(fallback)`. +- **logsentry:** structured log values now populate the Sentry event's `log` + context instead of the removed `Event.Extra`; a logged `type` key is sent as + `type_` (reserved-name remap) (#14). - Bump `securego/gosec` to v2.27.1 in the `tools` submodule (stays on Go 1.25), pulling along `google.golang.org/grpc` 1.81.1 and assorted `golang.org/x/*` and `google.golang.org/*` updates. diff --git a/CLAUDE.md b/CLAUDE.md index f0d8bc1..3bd485b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -42,7 +42,7 @@ Sub-packages **without** their own `go.mod` (part of the root module): Always operate across all modules — a change to the root can break `goslog`/`logsentry`. ```bash -./test-workspace.sh # build + go vet + gosec + go test across all modules (except tools) +./test-workspace.sh # build, go vet, gosec, go test across all modules except tools (gosec also skips examples) ./test-workspace.sh -v # extra args are forwarded to `go test` ./run-gosec.sh # gosec on the root module only ``` From f763e1610f5a558b8aa34ec6ad7989175f97f216 Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 14:45:36 +0200 Subject: [PATCH 5/6] chore: replace tag-release.sh with VERSION-driven tag-version.sh tag-version.sh tags the root, goslog/, and logsentry/ modules with the version read from the VERSION file instead of a command-line argument, keeping the same module list, current-tag listing, and dry-run/confirm flow. Update the CLAUDE.md Releasing section and the CHANGELOG. --- CHANGELOG.md | 2 ++ CLAUDE.md | 5 +-- tag-release.sh | 83 ------------------------------------------------ tag-version.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 85 deletions(-) delete mode 100755 tag-release.sh create mode 100755 tag-version.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index ed22aa3..8e8e13f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ lockstep with the root module, e.g. `v1.0.7`, `logsentry/v1.0.7`, `goslog/v1.0.7 - Bump `securego/gosec` to v2.27.1 in the `tools` submodule (stays on Go 1.25), pulling along `google.golang.org/grpc` 1.81.1 and assorted `golang.org/x/*` and `google.golang.org/*` updates. +- Replace `tag-release.sh` (version passed as an argument) with `tag-version.sh`, + which reads the release version from the `VERSION` file. ### Fixed diff --git a/CLAUDE.md b/CLAUDE.md index 3bd485b..4111685 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -76,5 +76,6 @@ This is a **public, dependency-light library**, so the user's global Go conventi The `VERSION` file uses Go module version syntax — a leading `v` followed by semver (`vMAJOR.MINOR.PATCH`, e.g. `v1.1.0`), matching the git release tags. -`./tag-release.sh vX.Y.Z [message]` tags the root, `goslog/`, and `logsentry/` modules -together (run with no args to see current tags). Ask before pushing tags. +`./tag-version.sh [message]` reads the version from the `VERSION` file and tags the +root, `goslog/`, and `logsentry/` modules together (it prints the current tags first). +Ask before pushing tags. diff --git a/tag-release.sh b/tag-release.sh deleted file mode 100755 index f693093..0000000 --- a/tag-release.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -# Just in case the script is run from another directory -SCRIPT_DIR=$(cd -P -- $(dirname -- "$0") && pwd -P) -cd $SCRIPT_DIR - -MODULE_PATHS=("" "goslog/" "logsentry/") - -# Show current tags and usage if no arguments provided -if [ -z "$1" ]; then - echo "Current release tags:" - echo "" - - for PREFIX in "${MODULE_PATHS[@]}"; do - if [ -z "$PREFIX" ]; then - MODULE_NAME="(root module)" - else - MODULE_NAME="${PREFIX%/}" - fi - echo " Module: $MODULE_NAME" - - # Get the latest tag for this module - LATEST_TAG=$(git tag -l "${PREFIX}v*" --sort=-v:refname | head -1) - if [ -n "$LATEST_TAG" ]; then - echo " Latest: $LATEST_TAG" - # Show last 3 tags for this module - echo " Recent:" - git tag -l "${PREFIX}v*" --sort=-v:refname | head -3 | sed 's/^/ /' - else - echo " No tags yet" - fi - echo "" - done - - echo "Usage: $0 [message]" - echo "" - echo "Creates tags for all modules with the specified version." - echo "" - echo "Examples:" - echo " $0 v0.99.1 # Creates v0.99.1, goslog/v0.99.1, logsentry/v0.99.1" - echo " $0 v0.99.1 \"bug fixes\" # Same with custom message" - echo " $0 v1.0.0-beta1 # Pre-release version" - echo "" - echo "Version format: vMAJOR.MINOR.PATCH[-PRERELEASE]" - exit 0 -fi - -SEMVER_REGEX='^v([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z0-9]+)?$' -if [[ ! "$1" =~ $SEMVER_REGEX ]]; then - echo "Error: Invalid version format: $1" - echo "" - echo "Usage: $0 [message]" - echo "Version must be in format: vMAJOR.MINOR.PATCH[-PRERELEASE]" - echo "Examples: v0.99.1, v1.0.0, v2.1.3-beta1" - exit 1 -fi - -VERSION=$1 -MESSAGE="$VERSION" -if [ -n "$2" ]; then - MESSAGE="$2" # provided as the second argument -fi - -echo "Tagging $VERSION with message: '$MESSAGE'" - -for PREFIX in "${MODULE_PATHS[@]}"; do - echo " tag ${PREFIX}${VERSION}" - git tag -a "${PREFIX}${VERSION}" -m "$MESSAGE" -done - -echo "Tags to be pushed" -git push --tags --dry-run - -echo "Do you want to push tags to origin? (y/n)" -read CONFIRM -if [[ "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]]; then - git push origin --tags -else - for PREFIX in "${MODULE_PATHS[@]}"; do - git tag -d "${PREFIX}${VERSION}" - done - echo "Reverted local $VERSION tags" -fi \ No newline at end of file diff --git a/tag-version.sh b/tag-version.sh new file mode 100755 index 0000000..8e76f31 --- /dev/null +++ b/tag-version.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +# Tags the root, goslog/, and logsentry/ modules with the version read from the +# VERSION file (instead of taking it as a command-line argument). + +# Just in case the script is run from another directory +SCRIPT_DIR=$(cd -P -- $(dirname -- "$0") && pwd -P) +cd $SCRIPT_DIR + +MODULE_PATHS=("" "goslog/" "logsentry/") + +VERSION_FILE="$SCRIPT_DIR/VERSION" + +if [ ! -f "$VERSION_FILE" ]; then + echo "Error: VERSION file not found at $VERSION_FILE" + exit 1 +fi + +# Read the version from the VERSION file, trimming surrounding whitespace +VERSION=$(tr -d '[:space:]' < "$VERSION_FILE") + +if [ -z "$VERSION" ]; then + echo "Error: VERSION file is empty" + exit 1 +fi + +SEMVER_REGEX='^v([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z0-9]+)?$' +if [[ ! "$VERSION" =~ $SEMVER_REGEX ]]; then + echo "Error: Invalid version format in VERSION file: $VERSION" + echo "" + echo "Version must be in format: vMAJOR.MINOR.PATCH[-PRERELEASE]" + echo "Examples: v0.99.1, v1.0.0, v2.1.3-beta1" + exit 1 +fi + +# Show current release tags for each module before tagging +echo "Current release tags:" +echo "" + +for PREFIX in "${MODULE_PATHS[@]}"; do + if [ -z "$PREFIX" ]; then + MODULE_NAME="(root module)" + else + MODULE_NAME="${PREFIX%/}" + fi + echo " Module: $MODULE_NAME" + + # Get the latest tag for this module + LATEST_TAG=$(git tag -l "${PREFIX}v*" --sort=-v:refname | head -1) + if [ -n "$LATEST_TAG" ]; then + echo " Latest: $LATEST_TAG" + # Show last 3 tags for this module + echo " Recent:" + git tag -l "${PREFIX}v*" --sort=-v:refname | head -3 | sed 's/^/ /' + else + echo " No tags yet" + fi + echo "" +done + +MESSAGE="$VERSION" +if [ -n "$1" ]; then + MESSAGE="$1" # optional tag message provided as the first argument +fi + +echo "Tagging $VERSION (from VERSION file) with message: '$MESSAGE'" + +for PREFIX in "${MODULE_PATHS[@]}"; do + echo " tag ${PREFIX}${VERSION}" + git tag -a "${PREFIX}${VERSION}" -m "$MESSAGE" +done + +echo "Tags to be pushed" +git push --tags --dry-run + +echo "Do you want to push tags to origin? (y/n)" +read CONFIRM +if [[ "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]]; then + git push origin --tags +else + for PREFIX in "${MODULE_PATHS[@]}"; do + git tag -d "${PREFIX}${VERSION}" + done + echo "Reverted local $VERSION tags" +fi From 2bf4af0fe355e1ae6c9693bdbbb3f108133ea957 Mon Sep 17 00:00:00 2001 From: Erik Unger Date: Tue, 16 Jun 2026 14:50:33 +0200 Subject: [PATCH 6/6] chore: run gosec with -quiet in test-workspace.sh Only surface gosec output when it finds issues, instead of printing a scan summary on every clean run. --- test-workspace.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-workspace.sh b/test-workspace.sh index 9da7aa5..521b43b 100755 --- a/test-workspace.sh +++ b/test-workspace.sh @@ -27,7 +27,7 @@ for dir in $MODULES; do done for dir in $MODULES; do case "$dir" in */examples) continue ;; esac - (cd "$dir" && go tool gosec ./...) + (cd "$dir" && go tool gosec -quiet ./...) done echo ""