)]}'
{
  "log": [
    {
      "commit": "ea93b8a9e1c0a9b8b05e786d955ab4f8aeaa221d",
      "tree": "3f520cec857e24ed8ca71c82dfcd9197bf9812d4",
      "parents": [
        "10f57d800065f39c984d47888eaf83d44900d03d"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Wed Apr 22 14:22:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:22:21 2026 +0800"
      },
      "message": "fix(race): close remaining #3247 shared-state races (#3269)\n\n* fix(directory): guard registry directory concurrent state access\n\nFixes: #3247\n\n* fix(registry/protocol): synchronize override listener configurator\n\nFixes: #3247\n\n* fix(metrics): guard app info global state with RWMutex\n\nFixes: #3247\n\n* fix(config_center/file): synchronize listener set access\n\n- guard per-key listener collection with RWMutex and snapshot callbacks\n- remove direct concurrent map iteration/delete in watcher paths\n- harden callback timing test against fsnotify duplicate-event jitter\n- addresses flaky Unit Test failure observed on PR #3269 CI\n\nFixes: #3247\n\n* docs(race): clarify concurrency assumptions in hystrix/listener/metrics comments\n\n* test(file-config): add unit tests for listener helper functions\n\nadd direct test coverage for drainEvents\n\nadd direct test coverage for assertNoEvent\n\nkeep review scope minimal without unrelated logic changes\n\n* docs(file-config): clarify listener snapshot immutability contract\n\nclarify that both returned snapshot slice and listeners are immutable for callers\n\n* fix(directory): align subscribedUrlLock naming with upstream\n\nChange field name from subscribedURLLock to subscribedUrlLock\nto match upstream/develop naming convention (lowercase \u0027url\u0027).\nResolves merge conflict with upstream/develop."
    },
    {
      "commit": "10f57d800065f39c984d47888eaf83d44900d03d",
      "tree": "1338a6f8aa179a72130502f6c261d3a938c3d969",
      "parents": [
        "bafeb2055fac2ed082576c5e603f23924f57777e"
      ],
      "author": {
        "name": "MrSibe",
        "email": "mrsibe@qq.com",
        "time": "Wed Apr 22 14:21:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:21:46 2026 +0800"
      },
      "message": "feat(logger): add CtxLogger interface for OpenTelemetry trace integration (#3195)\n\n* feat(logger): add CtxLogger interface and trace extraction utilities\n\nAdd context-aware logging support to integrate with OpenTelemetry traces:\n\n- Add CtxLogger interface extending Logger with context-aware methods\n- Create trace_extractor.go to extract traceId, spanId, and trace_flags from context\n- Add configuration constants for trace integration (enabled, record-error-to-span)\n\nThis is the foundation for issue #3182 - providing ctxLogger interface\nto correlate logs with distributed traces.\n\n* feat(logger): add Zap CtxLogger adapter for trace integration\n\nImplement context-aware logging adapter for Zap:\n\n- Add ZapCtxLogger that wraps DubboLogger\n- Automatically inject trace_id, span_id, trace_flags from context\n- Support optional error recording to span\n- Integrate with existing Zap instantiation logic\n\n* feat(logger): add Logrus CtxLogger adapter for trace integration\n\nImplement context-aware logging adapter for Logrus:\n\n- Add LogrusCtxLogger that wraps DubboLogger\n- Automatically inject trace_id, span_id, trace_flags from context\n- Support optional error recording to span\n- Integrate with existing Logrus instantiation logic\n\n* feat(config): add trace integration configuration for logger\n\nExtend LoggerConfig to support trace integration:\n\n- Add TraceIntegrationConfig struct with enabled and record-error-to-span options\n- Update toURL() method to pass trace integration parameters\n- Enable users to configure trace logging via YAML\n\n* test(logger): add unit tests for ctxLogger and trace extraction\n\nAdd comprehensive unit tests:\n\n- trace_extractor_test.go: test trace field extraction from context\n- zap/ctx_logger_test.go: test Zap adapter with trace injection\n- logrus/ctx_logger_test.go: test Logrus adapter with trace injection\n- Fix import error in logrus/ctx_logger.go (move errors import to top)\n\nAll tests pass successfully, verifying:\n- Trace fields are correctly extracted from valid span context\n- Logs include trace_id, span_id, trace_flags when context has trace\n- Logs work normally without trace context (backward compatible)\n\n* fix(logger): format source code\n\n* test(logger): add recordErrorToSpan tests and fix inconsistency\n\n- Add comprehensive unit tests for recordErrorToSpan functionality in both Zap and Logrus CtxLogger implementations\n- Test coverage includes: enabled/disabled states, span status verification, and error event recording\n- Fix error creation inconsistency in Zap implementation to use errors.New instead of fmt.Errorf for consistency with Logrus\n\n* test(logger): use assert.Empty for empty slice checks\n\nFix testifylint errors by replacing assert.Len(t, events, 0) with assert.Empty(t, events) for better readability.\n\n* feat(logger): make TraceIntegration compatible with New API\n\nAdd TraceIntegration support to global.LoggerConfig to enable\ntrace integration features in New API.\n\n* feat(logger): add New API options for trace integration\n\nAdd WithTraceIntegration and WithRecordErrorToSpan options to enable CtxLogger configuration through New API.\n\n* refactor(global): simplify pointer assignment in Clone method\n\nUse idiomatic Go pattern for creating pointer copies.\n\n* feat(config): add trace integration support to LoggerConfigBuilder\n\nAdd SetTraceIntegrationEnabled() and SetRecordErrorToSpan() methods to\nLoggerConfigBuilder to support trace integration configuration via the\nOld API (Builder pattern)."
    },
    {
      "commit": "bafeb2055fac2ed082576c5e603f23924f57777e",
      "tree": "8fe3d569496be2f1108776db4e050411d2c9429b",
      "parents": [
        "b52803d207b7130805b8b719fb976432d8f1b43b"
      ],
      "author": {
        "name": "eye-gu",
        "email": "734164350@qq.com",
        "time": "Mon Apr 20 12:55:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:55:23 2026 +0800"
      },
      "message": "fix(jsonrpc): prevent nil pointer panic on unsupported content type (#3298)\n\n* fix(jsonrpc): prevent nil pointer panic on unsupported content type\n\n* Use mime.ParseMediaType and add test"
    },
    {
      "commit": "b52803d207b7130805b8b719fb976432d8f1b43b",
      "tree": "210a87cbd57de47dd4e6b3ab02aaa5d75f343189",
      "parents": [
        "c3f114dff5c2e0d9963b65625c323436eda6bffe"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Sun Apr 19 10:27:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 10:27:15 2026 +0800"
      },
      "message": "Feat/3255 new config api tests (#3283)\n\n* test(new-config-api): add instance integration smoke test\n\ncover NewInstance -\u003e NewServer/NewClient -\u003e unary call path with tri direct url\n\ninclude required SPI imports for cluster/loadbalance and deterministic cleanup\n\n* test(new-config-api): trim instance itest dependencies\n\nreplace broad SPI imports with minimal required ones\n\nset server filter to echo and client cluster to available to reduce registration requirements\n\n* test(new-config-api): add priority integration tests\n\ncover server and client precedence between instance defaults and per-layer overrides\n\nverify overrides do not pollute later NewServer/NewClient creations\n\n* test(new-config-api): add compat integration tests\n\nadd compat round-trip and nil-handling tests for key config sections\n\nalign inst/prio test files with concise English comments following repo style\n\n* test(new-config-api): rename itest files to integration\n\nrename inst/prio/compat test files to integration naming\n\nkeep test behavior unchanged and update integration instance name\n\n* test(new-config-api): satisfy testifylint empty assertions\n\nreplace Len(..., 0) with Empty(...) in compat integration test\n\n* test(new-config-api): bound unary retries by attempt timeout\n\nuse context.WithTimeout per retry to prevent hanging CallUnary from wedging CI\n\n* test(new-config-api): move tests to module packages without integration suffix\n\n* test(client): shorten priority test constant names\n\n* test(config): split compat coverage into focused tests\n\n* test(server): add retry diagnostics in instance unary call test\n\n* test(server): split instance flow test and shorten names\n\n* test(config): refactor compat fixture with factory helpers\n\n* test(client): simplify prio test names and strengthen service option assertions\n\n* style: imports-formatter\n\n* style: imports-formatter\n\n* style: imports-formatter\n\n* style: imports-formatter\n\n* fix: adjust comment format"
    },
    {
      "commit": "c3f114dff5c2e0d9963b65625c323436eda6bffe",
      "tree": "aa8b7d2e96674bc92083ec55f056788500001c32",
      "parents": [
        "f17993d5d2d989d53299cde9e1c235d17b35b536"
      ],
      "author": {
        "name": "Zecheng Zhu",
        "email": "1662308219@qq.com",
        "time": "Fri Apr 17 10:44:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 10:44:11 2026 +0800"
      },
      "message": "feat: add stateful HTTP/3 negotiation with probe and cooldown (#3281)\n\n* refactor: use RoundTripper rather than Transport\n\n* h3 failed return err and update state\n\n* complete probe http3\n\n* complete fallback cooldown\n\n* add test for dualtransport\n\n* avoid request time out and then mark H3 failed\n\n* make the semantics clearer\n\n* test: add concurrent h2 start single probe"
    },
    {
      "commit": "f17993d5d2d989d53299cde9e1c235d17b35b536",
      "tree": "ad5991aac87962b3f1b130756a75eba30e7bb3b3",
      "parents": [
        "e12d8c5f97885075361b468356703b1d91058167"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Fri Apr 17 10:42:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 10:42:23 2026 +0800"
      },
      "message": "fix: close #3247 nacos/directory lifecycle race risks (#3270)\n\n* fix(registry/nacos): make scheduled lookup stoppable\n\n- replace sleep loop with ticker + done select in scheduledLookUp\n- ensure lookup goroutine exits promptly when registry is destroyed\n- add regression test for done-triggered exit\n\nFixes: #3247\n\n* fix(directory): harden subscribe timeout lifecycle\n\n- register consumer with timeout before starting subscribe goroutine\n- use URL clone in register path to avoid cross-goroutine URL mutation races\n- add timeout regression test to ensure subscribe is not started on register timeout\n\nFixes: #3247\n\n* style: rename subscribedURLLock to subscribedUrlLock\n\nCo-authored-by: Xuetao Li \u003cxuetaoli@apache.org\u003e\n\n* fix(directory): align subscribedUrlLock references\n\n* test(directory): stabilize subscribe timeout case and clarify lifecycle comments\n\n* test(directory): avoid unsynchronized cacheInvokers reads in tests\n\n* fix(routerchain): snapshot invokers before routing\n\n* fix(directory): rollback late register success after timeout\n\n* fix(directory): decouple subscribe start from register timeout\n\nAddress PR #3270 P0 review: keep discovery path alive by starting registry.Subscribe before timeout-bounded Register.\n\nAlso fix newly surfaced test-side races under -race by replacing direct cacheInvokers reads with snapshotCacheInvokers and removing async Subscribe startup in normalRegistryDir.\n\n* fix(routerchain): repair merge-conflict break in snapshotInvokers\n\n---------\n\nCo-authored-by: Xuetao Li \u003cxuetaoli@apache.org\u003e"
    },
    {
      "commit": "e12d8c5f97885075361b468356703b1d91058167",
      "tree": "12ef536ce3d15e38d222dacb74266ed461f1592f",
      "parents": [
        "28fc318c6667f820191bb6670aac27a4378d0712"
      ],
      "author": {
        "name": "承潜",
        "email": "2972013548@qq.com",
        "time": "Mon Apr 13 13:20:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 13:20:09 2026 +0800"
      },
      "message": "fix(generic): support variadic method invocation via generic call (#3284)\n\n* fix(generic): support variadic method invocation via generic call\n\n* fix(generic): support variadic invocation across reflection paths"
    },
    {
      "commit": "28fc318c6667f820191bb6670aac27a4378d0712",
      "tree": "43b4bc36f22d9519021e9f43989adb47ff3fce2c",
      "parents": [
        "707124f719536a926a3171a5932785fb86028321"
      ],
      "author": {
        "name": "eye-gu",
        "email": "734164350@qq.com",
        "time": "Sun Apr 12 20:35:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 20:35:50 2026 +0800"
      },
      "message": "feat: Triple Rest OpenAPI Support (#3280)\n\n* feat: Triple Rest OpenAPI Support\n\n* fix fmt\n\n* fix review\n\n* fix\n\n* check path valid and fix operationId\n\n* fix default config\n\n* fix path config and add redoc link"
    },
    {
      "commit": "707124f719536a926a3171a5932785fb86028321",
      "tree": "c6b1ed722b4fb3e6cd908fd5642213ad5267d02c",
      "parents": [
        "212813aaf944184eda53a43c81c139b8526f5d68"
      ],
      "author": {
        "name": "Aether",
        "email": "98370028+Aetherance@users.noreply.github.com",
        "time": "Sun Apr 12 20:34:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 20:34:53 2026 +0800"
      },
      "message": "feat(router): add static router configuration injection (#3252)\n\n* feat(router): add static router configuration injection\n\n- Add StaticConfigSetter interface for static config injection\n- Add global static router registry\n- Add router chain injection mechanism\n- Implement static config setters for condition and tag routers\n\n* add unit tests\n\n* fix(client): make setRouters use override semantics\n\n* docs(client): clarify router option append/replace semantics\n\n* fix(router): clone static router config before injecting setters\n\n* fix(tag-router): guard nil router flags in tag routing\n\n* docs(router): clarify static injection and dynamic override semantics\n\n* docs(client): document WithRouter append behavior\n\n* docs(router): clarify dynamic Process overrides static router config\n\n* remove unnecessary outer clone in injectRouterConfig\n\n* fix: ignore service-scope static tag configs\n\n* refactor: remove redundant nil check when appending routers\n\n* fix(router): remove chain-level static router scope matching\n\n* fix(router): log static router config type assertion failures as errors\n\n---------\n\nCo-authored-by: Aetherance \u003cinkToAether@gmail.com\u003e"
    },
    {
      "commit": "212813aaf944184eda53a43c81c139b8526f5d68",
      "tree": "53181c1f6d9ebf26e06212e31266c7d3c02b216b",
      "parents": [
        "c356735e93e3982a82e02a3f91829ddbb859b82b"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Tue Mar 31 21:26:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 21:26:53 2026 +0800"
      },
      "message": "fix: close #3247 config/protocol shared-state races (#3271)\n\n* fix(config): synchronize rootConfig publication and access\n\n- guard global rootConfig pointer with RWMutex-backed accessors\n- make config.Load build a local RootConfig and initialize before publishing\n- route config consumers through GetRootConfig instead of direct global reads\n- avoid in-place global mutation in SetConsumerConfig\n- add concurrent Set/Get regression test for root config\n\nFixes: #3247\n\n* fix(protocol/dubbo): remove shared versionInt map state\n\n- remove package-level versionInt maps in dubbo impl and hessian2 response paths\n- compute version int per call to avoid shared mutable/global state\n- add concurrent isSupportResponseAttachment tests in both packages\n\nFixes: #3247\n\n* fix(config): replace rootConfig lock with atomic publication\n\n* fix(config): preserve defaults in SetConsumerConfig nil path\n\n* test(config): stabilize rootConfig concurrent set/get case\n\n* fix(config): make root config process update copy-on-write\n\nremove redundant internal getter for root config\n\nload root config directly from atomic store\n\navoid in-place dynamic updates by copy-on-write for registries and consumer\n\nadd tests to verify snapshot immutability during dynamic updates"
    },
    {
      "commit": "c356735e93e3982a82e02a3f91829ddbb859b82b",
      "tree": "81309523c0132d6617c4c5cbe4404de6123631d7",
      "parents": [
        "fb8eff2f090851261e2d1acfc55414ede91ca9c0"
      ],
      "author": {
        "name": "Oxidaner",
        "email": "80675726+Oxidaner@users.noreply.github.com",
        "time": "Sun Mar 29 21:13:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 21:13:09 2026 +0800"
      },
      "message": "feat: graceful shutdown #1977 (#3235)\n\n* 信号监听相关注释\n\n* graceful_shutdown\n\n* adjust fmt\n\n* adjust fmt\n\n* adjust fmt\n\n* feat: graceful_shutdown\n\n* adjust fmt\n\n* Restore annotations and adjust fmt\n\n* 1. tripleProtocol \u003d tp.(*TripleProtocol) assert problem\n2. Add sync.RWMutex protection; GetAllGracefulShutdownCallbacks returns rather than a copy of the original map.\n\n* 1.Eliminate bugs that might cause subtraction without addition\n\n* I added an optional interface, ClosingInstanceRemover, and implemented RemoveClosingInstance(instanceKey string) bool on RegistryDirectory\n\n* feat: add closing tombstones for registry directory\n\n* feat: register closing removers by service key\n\n* feat: dispatch passive closing events to directory handlers\n\n* feat: route closing connection errors through event handler\n\n* feat: add health-watch active graceful notice\n\n* refactor: isolate graceful shutdown notify sequencing\n\n* refactor: harden graceful shutdown protocol teardown\n\n* refactor: narrow graceful shutdown unregister phase\n\n* feat: add lightweight active notice ack stats\n\n* test: cover active health-watch closing flows\n\n* Refine graceful shutdown timeout and concurrency handling\n\n* Set default offline request window timeout\n\n* chore: run fmt\n\n* chore: add ASF header to graceful shutdown test\n\n* test: fix lint issues in graceful shutdown coverage\n\n* refactor: tighten graceful shutdown compatibility\n\n* refactor: remove duplicate grpc start flag assignment"
    },
    {
      "commit": "fb8eff2f090851261e2d1acfc55414ede91ca9c0",
      "tree": "28852803ecf4146a34265530bfb1f065cf520986",
      "parents": [
        "8fe1f4bc6d50b025899d7d075b9b860f3e5cb0be"
      ],
      "author": {
        "name": "承潜",
        "email": "2972013548@qq.com",
        "time": "Wed Mar 25 10:49:35 2026 +0800"
      },
      "committer": {
        "name": "alanxtl",
        "email": "m134679102365478@163.com",
        "time": "Wed Mar 25 15:51:11 2026 +0800"
      },
      "message": "fix(triple): case-insensitive method routing without metadata polluti… (#3277)\n\n* fix(triple): case-insensitive method routing without metadata pollution (#3162)\n\nIntroduce methodRouteMux in the Triple transport layer to support\ncase-insensitive method name routing (Go\u0027s GetUser \u003c-\u003e Java\u0027s getUser).\n\nRemove the SwapCase method duplication from enhanceServiceInfo, which\nwas polluting ServiceInfo.Methods with duplicate entries visible to\nregistry and gRPC reflection.\n\n* style(triple): fix test import formatting\n\n* fix(ci): address triple sonar warnings\n\n* style(triple): modernize attachment map type\n\n* test(triple): split method handler tests and fix lint assertion\n\n* fix(triple): stabilize method fallback and host-unavailable tests\n\n* test(triple): extract repeated streaming literals\n\n* test(triple): make lowerFirstRune empty-input path coverable"
    },
    {
      "commit": "8fe1f4bc6d50b025899d7d075b9b860f3e5cb0be",
      "tree": "895dd45dd6c12e6ce1911818e28394d3c2d23681",
      "parents": [
        "5c6bee7207d5e6c60fc81e3ebfd3bc149f29135f"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Wed Mar 25 10:34:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 10:34:37 2026 +0800"
      },
      "message": "fix(router): resolve polaris application lookup from URL attributes (#3256)\n\n* fix(router): resolve polaris application lookup from URL attributes"
    },
    {
      "commit": "5c6bee7207d5e6c60fc81e3ebfd3bc149f29135f",
      "tree": "c5f1ba0a7202e561f5a79d885bc925977435268f",
      "parents": [
        "8e9a7135af48a079c7429a70489f2d6a719ecbbb"
      ],
      "author": {
        "name": "Zecheng Zhu",
        "email": "1662308219@qq.com",
        "time": "Mon Mar 23 11:26:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 11:26:46 2026 +0800"
      },
      "message": "refactor: migrate hystrix filter from main repository (#3253)\n\n* refactor: remove hystrix filter from main repository\n\n* update unit test\n\n* clean up hystrix\n\n* doc: add hystrix migration note to filter README"
    },
    {
      "commit": "8e9a7135af48a079c7429a70489f2d6a719ecbbb",
      "tree": "da87d6b52f53e4fe92798b287c29fbaccec75b12",
      "parents": [
        "ddb0f1b01297cc2dc0cd24f134cd6af56bce6608"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Sun Mar 22 23:34:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 22 23:34:34 2026 +0800"
      },
      "message": "Refactor: remove config in grpc and dubbo3 (#3231)\n\n* feat(dubbo3): remove config dependency in invoke"
    },
    {
      "commit": "ddb0f1b01297cc2dc0cd24f134cd6af56bce6608",
      "tree": "5a7a69baf4b5d4789f74f3eb44a9399406729a36",
      "parents": [
        "334569647b57f789d75e44043ba2ab7fc4715cad"
      ],
      "author": {
        "name": "Zecheng Zhu",
        "email": "1662308219@qq.com",
        "time": "Sat Mar 21 16:37:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 16:37:20 2026 +0800"
      },
      "message": "doc: add dubbo-go-extensions in readme (#3260)\n\n* doc: add dubbo-go-extensions in readme\n\n* doc:  refine README ecosystem and tools sections"
    },
    {
      "commit": "334569647b57f789d75e44043ba2ab7fc4715cad",
      "tree": "a4dd0de395b0b6d3cc50f84dae18a2969add9ae9",
      "parents": [
        "a8c419c75bf57c534389ca994c84c3fb66d95569"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Sat Mar 21 16:35:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 16:35:50 2026 +0800"
      },
      "message": "fix(extension): eliminate race-prone global registries in common/extension (#3264)\n\n* feat(extension): add thread-safe generic Registry[T] container\n\nFixes: #3247\n\n* fix(extension): migrate filter/protocol/registry to Registry[T]\n\nFixes: #3247\n\n* fix(extension): migrate cluster/loadbalance/config_center registries\n\nFixes: #3247\n\n* fix(extension): migrate configurator/config/config_center_factory\n\nFixes: #3247\n\n* fix(extension): migrate metadata/proxy/tps registries\n\nFixes: #3247\n\n* fix(extension): migrate auth/rest client and server registries\n\nFixes: #3247\n\n* fix(extension): migrate config reader/post processor/router factory\n\nFixes: #3247\n\n* fix(extension): migrate discovery selector logger and otel registries\n\nFixes: #3247\n\n* fix(extension): guard directory/customizer/shutdown/name mapping state\n\nFixes: #3247\n\n* style(extension): apply repository formatter output for registry synchronization files\n\nFixes: #3247\n\n* test(extension): use assert.Len to satisfy testifylint\n\nFixes: #3247\n\n* test(extension): add coverage for synchronized registry helper paths\n\nFixes: #3247\n\n* fix(extension): clarify config center factory registry name\n\nAlign registry name with config center factory semantics for clearer diagnostics in extension registration lookup.\n\nFixes: #3247"
    },
    {
      "commit": "a8c419c75bf57c534389ca994c84c3fb66d95569",
      "tree": "db25780be45d1056fdc8114a8c89241b2340c659",
      "parents": [
        "82957c516cba9a391718921eb3b38794a1015909"
      ],
      "author": {
        "name": "whimc",
        "email": "3897601292@qq.com",
        "time": "Sat Mar 21 15:08:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 15:08:11 2026 +0800"
      },
      "message": "docs: update contact information (#3273)\n\n* docs: update contact information\n\n* docs: align QR codes in invite.png"
    },
    {
      "commit": "82957c516cba9a391718921eb3b38794a1015909",
      "tree": "00b7f47fd9b74adeba29e007c65e703fdf8ffc2b",
      "parents": [
        "06837fd9858704702c955bc0013ec7d459dda1cb"
      ],
      "author": {
        "name": "xxs",
        "email": "2127069700@qq.com",
        "time": "Sat Mar 21 12:24:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 12:24:53 2026 +0800"
      },
      "message": "fix(core): resolve #3247 lock misuse and map exposure races (#3265)\n\n* fix(dubbo): use correct lock for provider service and lock consumer connection access\n\nFixes: #3247\n\n* fix(router): guard RouterChain.Route invoker reads with RLock\n\nFixes: #3247\n\n* fix(config): return copied service maps instead of internal references\n\nFixes: #3247\n\n* test(core): add non-duplicate coverage for #3247 race fixes\n\n* test(router): resolve Sonar findings in chain tests"
    },
    {
      "commit": "06837fd9858704702c955bc0013ec7d459dda1cb",
      "tree": "1f3f736a72dc342aaec410c39e6faed2fe81f79e",
      "parents": [
        "9a9c24a010e3a1501409148e2152dc5046773bc0"
      ],
      "author": {
        "name": "nanjiek",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Mon Mar 16 21:02:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 21:02:36 2026 +0800"
      },
      "message": "migrate the ValidateRegistryIDs to internal (#3258)\n\n* remove the config package from package client\n\n* fix(client): fail fast on invalid registry and method config\n\n* restore WithMethod in Server\n\n* fix lint of action_test\n\n* refactor: split processURL to reduce cognitive complexity\n\n* migrate the ValidateRegistryIDs to internal\n\n* fix the cmt\n\n* remove the validateRegistryIDs"
    },
    {
      "commit": "9a9c24a010e3a1501409148e2152dc5046773bc0",
      "tree": "0b2909ed0f6af1940232759bef64ea0815d0d295",
      "parents": [
        "ba176139c13a31ae31466ec15c38b4a734137e1b"
      ],
      "author": {
        "name": "Aether",
        "email": "98370028+Aetherance@users.noreply.github.com",
        "time": "Mon Mar 16 21:02:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 21:02:23 2026 +0800"
      },
      "message": " fix(router): use ApplicationKey instead of Tagkey to build config key in Route method (#3251)\n\n* fix(tag-router): use ApplicationKey instead of Tagkey to build config key in Route method\n\n* add unit tests\n\n---------\n\nCo-authored-by: Aetherance \u003cinkToAether@gmail.com\u003e"
    },
    {
      "commit": "ba176139c13a31ae31466ec15c38b4a734137e1b",
      "tree": "61a5d795a64544399261ed496b64391c114ba626",
      "parents": [
        "c11a12be6af68485aaad475d0040a0f227931459"
      ],
      "author": {
        "name": "nanjiek",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Mon Mar 16 13:04:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 13:04:56 2026 +0800"
      },
      "message": "refactor(client): remove config compat layer, use global types directly (#3232)\n\n* remove the config package from package client\n\n* fix(client): fail fast on invalid registry and method config\n\n* restore WithMethod in Server\n\n* fix lint of action_test\n\n* refactor: split processURL to reduce cognitive complexity"
    },
    {
      "commit": "c11a12be6af68485aaad475d0040a0f227931459",
      "tree": "d524720311440ed4cd1d74002310d0d6251a2431",
      "parents": [
        "e7770c9effa4ca02cb9a69c45ba1124d3325a5c6"
      ],
      "author": {
        "name": "Xuetao Li",
        "email": "m134679102365478@163.com",
        "time": "Sat Mar 14 18:10:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 18:10:36 2026 +0800"
      },
      "message": "Fix security vulnerabilities reported by Dependabot (#3244)\n\n* Fix security alerts https://github.com/apache/dubbo-go/security/dependabot\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "e7770c9effa4ca02cb9a69c45ba1124d3325a5c6",
      "tree": "f9d72af9566ba8c1f357e057ca33a53273998767",
      "parents": [
        "3929ee48f34bab6036aaf5b22526b1b64ccf972a"
      ],
      "author": {
        "name": "Xuetao Li",
        "email": "m134679102365478@163.com",
        "time": "Fri Mar 13 11:50:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 11:50:44 2026 +0800"
      },
      "message": "feat(probe): add Kubernetes probe support with liveness, readiness, and startup checks (#3213)\n\n* feat(probe): add Kubernetes probe support with liveness, readiness, and startup checks"
    },
    {
      "commit": "3929ee48f34bab6036aaf5b22526b1b64ccf972a",
      "tree": "58efd51ee6f664886312ca3f04e25ca225dc3b79",
      "parents": [
        "99fed3d3a12780cac52a3a56281a7ec381a0c82d"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Fri Mar 13 11:48:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 11:48:39 2026 +0800"
      },
      "message": "fix: release the lock in advance in case causing deadlock (#3238)\n\n* fix: release the lock in advance in case causing deadlock\n\n* fix: add read lock for exportServices().\n\n* fix: add read lock for exportInternalServices()\n\n* fix: remove unnecessary read lock"
    },
    {
      "commit": "99fed3d3a12780cac52a3a56281a7ec381a0c82d",
      "tree": "1c6c6664f79e46c28be5a0cf9bec099c30ab2d0b",
      "parents": [
        "9d591336c0fea3a60cf9c12836e1bfef60e85a9b"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Wed Mar 11 19:00:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 19:00:42 2026 +0800"
      },
      "message": "refactor: remove config package dependency from application generator (#3239)\n\n* refactor: remove config package dependency from application generator\n\n* format code\n\n* fix blank line"
    },
    {
      "commit": "9d591336c0fea3a60cf9c12836e1bfef60e85a9b",
      "tree": "e5dafbd5ab245e22329a390ec54e92bf4ed70218",
      "parents": [
        "6efc27c5ce47c83c2b3a07dc707e17f29504ad83"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Sat Mar 07 05:33:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 05:33:04 2026 +0800"
      },
      "message": "fix(router): call BuildRouterChain method when creating directory. (#3225)\n\n* fix(router): call BuildRouterChain method when creating static directory.\n\n* style: use imports-formatter to format code\n\n* ci: register router factory method in unit test.\n\n* ci: import tag router package to resolve no router factory problem.\n\n* fix: add failback, remove unnecessary import\n\n* fix: refactor failback mechanic, return the exception that len(URLs) equals 0"
    },
    {
      "commit": "6efc27c5ce47c83c2b3a07dc707e17f29504ad83",
      "tree": "46d88322418313eb94ec9336c9d3b29f702d8ead",
      "parents": [
        "b3d9983d1b93d59ca52cd0d15fb2865ed678f335"
      ],
      "author": {
        "name": "花国栋",
        "email": "76423224+HGD-coder@users.noreply.github.com",
        "time": "Wed Mar 04 02:43:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 04 02:43:45 2026 +0800"
      },
      "message": "fix(filter):solve side effects caused by 3184 refactor (#3230)\n\n* fix(filter):solve side effects caused by 3184 refactor\n\n* fix(filter): switch URL storage from attachment to attribute"
    },
    {
      "commit": "b3d9983d1b93d59ca52cd0d15fb2865ed678f335",
      "tree": "b2d5fb29c460ce5e4999804fcd79f549cbb099ba",
      "parents": [
        "8ef85cbbe1a53aad0a88e7c99d94c9488332b3d4"
      ],
      "author": {
        "name": "Aether",
        "email": "98370028+Aetherance@users.noreply.github.com",
        "time": "Wed Mar 04 02:40:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 04 02:40:22 2026 +0800"
      },
      "message": "fix(router/affinity): prevent panic caused by nil return in initialization phase (#3216)\n\nSigned-off-by: Aetherance \u003cinkToAether@gmail.com\u003e\nCo-authored-by: Aetherance \u003cinkToAether@gmail.com\u003e"
    },
    {
      "commit": "8ef85cbbe1a53aad0a88e7c99d94c9488332b3d4",
      "tree": "916eace5620f51339b08f94a3223db2281000f37",
      "parents": [
        "e1fc8ed56f4257004fb149104cc964a13eea56d6"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Mon Mar 02 22:17:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 22:17:07 2026 +0800"
      },
      "message": "refactor(protocol/triple): remove config package dependency for issue #3204 (#3229)\n\n"
    },
    {
      "commit": "e1fc8ed56f4257004fb149104cc964a13eea56d6",
      "tree": "6af4fd891b4a8d9d76827d9905bf08f862af98f9",
      "parents": [
        "d19b761da51004e22aad4d2542eaae70b5eb33bf"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Mon Mar 02 00:01:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 00:01:40 2026 +0800"
      },
      "message": "Refactor : remove protocol config (#3212)\n\n* feat: remove config\n\n* fix(dubbo3): remove unused sentinel type in internal client file"
    },
    {
      "commit": "d19b761da51004e22aad4d2542eaae70b5eb33bf",
      "tree": "812e2d846b9a8ec128ebed71403f3b5ebe99db6f",
      "parents": [
        "55f77420013556d658014848250024f86510db3f"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Sun Mar 01 23:54:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 23:54:25 2026 +0800"
      },
      "message": "refactor: remove config package from polaris and config_center (#3210)\n\n* refactor: remove config package from polaris and config_center\n\n* use constant key\n\n* Update config_center/apollo/impl_test.go\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update filter/polaris/limit/limiter.go\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* chore: trigger CI to recheck tests\n\n* fix lint\n\n* use constant.ApplicationConfigPrefix\n\n* refactor: use constants for config center parameters\n\n* remove redundant registry config check\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "55f77420013556d658014848250024f86510db3f",
      "tree": "2c2c8077027c5dccf9f06996119a886ad86997ee",
      "parents": [
        "a85fe25a4857d010310cac793f2201a98f48081f"
      ],
      "author": {
        "name": "nanjiek",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Sun Mar 01 23:52:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 23:52:30 2026 +0800"
      },
      "message": "Remove the config package from server package (#3207)\n\n"
    },
    {
      "commit": "a85fe25a4857d010310cac793f2201a98f48081f",
      "tree": "124223bd4fa4786e2f00c45f489aafd1f91c1d92",
      "parents": [
        "6c36a97d633544b14bfe335c95c0a119e6c731a7"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Sun Mar 01 23:16:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 23:16:08 2026 +0800"
      },
      "message": "refactor: add more params when calculating the revision. (#3224)\n\n* refactor: add more params when calculating the revision.\n\n* refactor: refactor another revision calculation function\n\n* chore: add comment\n\n* refactor: remove duplicated revision calculation function"
    },
    {
      "commit": "6c36a97d633544b14bfe335c95c0a119e6c731a7",
      "tree": "ee27344b24bc5a3b5d14028736a97802c6ebbac7",
      "parents": [
        "8c95837edbdd3700ca2dc4bc6c330fca2dc01c86"
      ],
      "author": {
        "name": "layla",
        "email": "111667698+04cb@users.noreply.github.com",
        "time": "Sun Mar 01 21:06:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 21:06:33 2026 +0800"
      },
      "message": "Fix typo: occured to occurred (#3227)\n\n"
    },
    {
      "commit": "8c95837edbdd3700ca2dc4bc6c330fca2dc01c86",
      "tree": "b4c766a53200d166ca53d838350d8977b85b1d49",
      "parents": [
        "a0b31e564dc010b4e7f5de5518398ead5d8eb2ab"
      ],
      "author": {
        "name": "LunaRain_079",
        "email": "2074730050@qq.com",
        "time": "Sun Mar 01 20:46:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 20:46:20 2026 +0800"
      },
      "message": "feat(metrics): enhance the monitoring metrics of rpc call failure under Triple protocol (#3189)\n\n* feat(metrics): enhance error classification and granular metrics for failed requests\n\n* feat(metrics): add network failure and codec error classifications\n\n* test(event): improve end time assertions for event tests\n\n* feat(metrics): add aggregate metrics for failed requests by type\n\n* chore(collector): fix import format\n\n* test(event): correct assertions for event end time checks\n\n* test(metric): add tests for error_classifier.go\n\n* test(metric): fix golangci-lint errors\n\n* refactor(metrics): refactor error handling in incRequestsFailedByType method\n\n* refactor(metrics): update error type constants for clarity and consistency"
    },
    {
      "commit": "a0b31e564dc010b4e7f5de5518398ead5d8eb2ab",
      "tree": "d416b2c49f386b2bc0e141eb3658e0c482ea9855",
      "parents": [
        "34f7dbc0ccb39e00a5106da03b2d52a3c5c352f6"
      ],
      "author": {
        "name": "花国栋",
        "email": "76423224+HGD-coder@users.noreply.github.com",
        "time": "Sun Mar 01 20:38:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 20:38:47 2026 +0800"
      },
      "message": "fix(protocol): fix panic caused by race condition during invoker destruction (#3184)\n\n* fix(protocol): fix panic caused by race condition during invoker destruction\n\n* fix(protocol): resolve data race in BaseInvoker using atomic pointer\n\n* test(router): update assertions to support atomic invoker\n\n* trigger ci: rerun checks\n\n* fix: update internal constant"
    },
    {
      "commit": "34f7dbc0ccb39e00a5106da03b2d52a3c5c352f6",
      "tree": "26110616e175111d5476210d2f1140c43dbc3a7a",
      "parents": [
        "d5685706d27dad6397db678286f8e8316ccc87b6"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Fri Feb 20 15:10:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 15:10:09 2026 +0800"
      },
      "message": "fix(router): fix wrong option configuration, add script-related options (#3221)\n\n"
    },
    {
      "commit": "d5685706d27dad6397db678286f8e8316ccc87b6",
      "tree": "2acfdf4dc10bd51f8c521663625691495258b975",
      "parents": [
        "2fef526e9bec70c37f653a1b0fb38b4c022a148d"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Thu Feb 19 10:00:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 10:00:42 2026 +0800"
      },
      "message": "fix(router): fix wrong config key (#3220)\n\n"
    },
    {
      "commit": "2fef526e9bec70c37f653a1b0fb38b4c022a148d",
      "tree": "5f09d46e6886e6b4492ce34a1413f3af07ab502b",
      "parents": [
        "77428fe0f84d829092c9bd457c81e8dd0ffd55b5"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Thu Feb 19 09:59:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 09:59:20 2026 +0800"
      },
      "message": "refactor: remove config package from dubbogo-cli sample generator (#3218)\n\n* refactor: remove config package from dubbogo-cli sample generator\n\n- Migrate sample generator from config-based to programmatic API\n- Update client template to use client.NewClient()\n- Update server template to use server.NewServer()\n- Remove conf/dubbogo.yaml configuration files\n- Disable config file generation (comment out init() in gen_c_conf.go and gen_s_conf.go)\n- Fix import order to match project standards\n- Handle license suffix in constants.go using strings.TrimSuffix\n- Update README.md and README_CN.md documentation\n\n* fix: format constants.go imports to use multi-line style\n\n* fix: move licenseForTemplates to var to allow function call\n\n* fix: add blank line between license and generated code in api files\n\n* fix: add blank line between license and proto file content\n\n* fix: add blank line between license and generated code\n\nFix test failures by adding blank lines between the license header\nand the generated code content in all template files:\n\n- api.go: Add blank line at beginning of apiFile constant\n- api_tripe.go: Add blank line at beginning of apiTripleFile constant\n- proto.go: Add blank line at beginning of protoFile constant\n- gen_client.go: Add blank line at beginning of clientCode constant and\n  add newline separator in concatenation\n- gen_server.go: Add blank line at beginning of serverCode constant and\n  add newline separator in concatenation\n\nAll tests now pass with these changes."
    },
    {
      "commit": "77428fe0f84d829092c9bd457c81e8dd0ffd55b5",
      "tree": "4d7071bd27ebe17c0ed6e0040cf6a068a9facce2",
      "parents": [
        "e2256e2703bc8a739a608b2eb7c1a042294b1cd9"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Mon Feb 16 17:00:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 17:00:00 2026 +0800"
      },
      "message": "feat(router): enable register of script router, remove useless comment (#3215)\n\n"
    },
    {
      "commit": "e2256e2703bc8a739a608b2eb7c1a042294b1cd9",
      "tree": "af9f151a80e3a89ddcc961a25a2aa28e77616bca",
      "parents": [
        "d8755c7e8fa1ee9d8e831fae65b0e06a0cc3d18c"
      ],
      "author": {
        "name": "yangpixi",
        "email": "63222549+yangpixi@users.noreply.github.com",
        "time": "Thu Feb 12 21:28:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 12 21:28:31 2026 +0800"
      },
      "message": "fix(router): ensure invoker receive Provider\u0027s tag, fix type bug (#3208)\n\n* fix(router): ensure invoker receive Provider\u0027s tag, fix type bug\n\n* test: add string type unit test for generateInvocation"
    },
    {
      "commit": "d8755c7e8fa1ee9d8e831fae65b0e06a0cc3d18c",
      "tree": "8803d866c88c389546e146807fc86378fd03fd5e",
      "parents": [
        "bd0c8ed93fa14cf9e6e2e9029cf6bd9b89541e32"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Wed Feb 11 21:55:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 21:55:33 2026 +0800"
      },
      "message": "  refactor(filter): remove config package dependency from tests (#3209)\n\n"
    },
    {
      "commit": "bd0c8ed93fa14cf9e6e2e9029cf6bd9b89541e32",
      "tree": "ba422fdeb9b6a1f29b487786499323e60d3a0a8a",
      "parents": [
        "35ea886421f97d881bb73e8ddf110233a1a2fa9a"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Wed Feb 11 21:22:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 21:22:13 2026 +0800"
      },
      "message": "refactor(router): replace config package (#3186)\n\n* refactor(router): replace config package\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "35ea886421f97d881bb73e8ddf110233a1a2fa9a",
      "tree": "dc40d1878e6fe56415f06eae2b3b28a4e3e1f05a",
      "parents": [
        "93543d13018ac027656282d8b9b2d68ce88f3548"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Tue Feb 10 09:57:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 10 09:57:53 2026 +0800"
      },
      "message": "refactor: remove config package dependency from remoting tests (#3198)\n\n"
    },
    {
      "commit": "93543d13018ac027656282d8b9b2d68ce88f3548",
      "tree": "e0cbb36a8984748966a29e40690e1ed1c372290d",
      "parents": [
        "f9f210ed912faa1865316d8792843a065a646a9b"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Mon Feb 09 11:27:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 11:27:19 2026 +0800"
      },
      "message": "feat: support cors for triple (#3090)\n\n* feat: support cors for triple\n\n* refactor cors.go\n\n* add unit test for cors\n\n* remove options_cors into options\n\n* feat: improve CORS port matching logic\n\n* format code\n\n* improve cors config in protocol\n\n* fix SonarQube err\n\n* fix nil calling function\n\n* rm useless func\n\n* improve validation\n\n* simplify unit test\n\n* simplify the implementation\n\n* rm corsPolicy\n\n* fix: set vary with origin when depending on origin header"
    },
    {
      "commit": "f9f210ed912faa1865316d8792843a065a646a9b",
      "tree": "5598a65dc87520f12dccd9d92fc8d07cabab0bcd",
      "parents": [
        "530f13deb89b8b3b51e253c1c14e6d83ba64aa73"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Mon Feb 09 10:12:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 10:12:12 2026 +0800"
      },
      "message": "refactor: remove config package dependency from health and reflection services (#3197)\n\nRemove dependencies on config package from:\n- protocol/triple/health/healthServer.go\n- protocol/triple/reflection/serverreflection.go\n\nBoth services already register via server.SetProviderServices() in init(),\nso config.SetProviderServiceWithInfo() calls are no longer needed.\n\nRelates to #2741\n\nSigned-off-by: Sisyphus \u003csisyphus@apache.org\u003e"
    },
    {
      "commit": "530f13deb89b8b3b51e253c1c14e6d83ba64aa73",
      "tree": "e8c23163448d0b928638e37953d5bf7697df035a",
      "parents": [
        "a929410ef42b388b57f8013b6126169c336ae107"
      ],
      "author": {
        "name": "nanjiek",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Mon Feb 09 10:11:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 10:11:36 2026 +0800"
      },
      "message": "remove the config of config_center (#3202)\n\n"
    },
    {
      "commit": "a929410ef42b388b57f8013b6126169c336ae107",
      "tree": "8b6113f9e6cfd1528f8bc5b25a1740eca81bf40e",
      "parents": [
        "8f1c295ac94d1de50896360641568eee81fa6660"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Fri Feb 06 18:04:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 18:04:42 2026 +0800"
      },
      "message": "refactor: remove config package dependency from protocol tests (#3194)\n\n- Delete protocol/dubbo3/common_test.go (per existing TODO comment)\n- Delete protocol/rest/rest_invoker_test.go (all code was commented out)\n- Delete protocol/rest/rest_protocol_test.go (all code was commented out)\n- Refactor protocol/grpc/grpc_protocol_test.go: remove TestGrpcProtocolExport\n  which depends on config.SetProviderService() and config.SetRootConfig()\n- Refactor protocol/jsonrpc/jsonrpc_protocol_test.go: replace\n  config.SetConsumerConfig() with URL attribute injection pattern\n\nRelates to #2741"
    },
    {
      "commit": "8f1c295ac94d1de50896360641568eee81fa6660",
      "tree": "0c78e9660898e7ba9505874c381b4d1727d78c90",
      "parents": [
        "6bbf7568691a67de03dea7a6931b705182a19813"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Fri Feb 06 13:01:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 13:01:21 2026 +0800"
      },
      "message": "fix: ensure router receives attachments from context (#3185)\n\n* fix: ensure router receives attachments from context"
    },
    {
      "commit": "6bbf7568691a67de03dea7a6931b705182a19813",
      "tree": "450348251b04482f14d00ae878e572c5a5a2e004",
      "parents": [
        "c2b0e2f4c9372b6666ac353efff0e4e597a69a5d"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Thu Feb 05 13:44:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 13:44:01 2026 +0800"
      },
      "message": "fix(test): stabilize flaky multiplyConditionRoute test (#3192)\n\n- Increase sample size from 1000 to 5000 for statistical stability\n- Use percentage-based tolerance (max 25% or 50) instead of fixed ±50\n- Accumulate weights for same-length results to avoid map key collision\n- Improve assertion with descriptive error message\n\nFixes: #3176"
    },
    {
      "commit": "c2b0e2f4c9372b6666ac353efff0e4e597a69a5d",
      "tree": "5475e15bec1474b524e2ffd9a5dae6125b84d7c0",
      "parents": [
        "157c9d875ba7d1c2c8d09d684c3bc3bc9e67f16a"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Wed Feb 04 11:35:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 11:35:47 2026 +0800"
      },
      "message": "fix(cluster/failback): stabilize flaky tests for exponential backoff (#3187)\n\n* fix(cluster/failback): stabilize flaky tests for exponential backoff\n\nReplace WaitGroup-based synchronization with atomic counter and polling\nto handle non-deterministic timing from exponential backoff with jitter.\n\n- Use atomic.Int64 counter instead of WaitGroup for retry tracking\n- Use MinTimes() instead of fixed Times() for gomock expectations\n- Remove time-based assertions that fail due to randomization factor\n\nSigned-off-by: Zhuanz \u003czhuanz@apache.org\u003e\n\n* test(cluster/failback): replace unbounded polling with require.Eventually\n\nReplace unbounded for-loops and time.Sleep with require.Eventually to add\ntimeout protection for flaky test synchronization.\n\n- Add bounded timeout (10s/30s) to prevent hanging tests\n- Replace fixed time.Sleep with condition-based waiting\n- Split retry and taskList waits for clearer failure diagnosis\n\nSigned-off-by: Zhuanz \u003czhuanz@apache.org\u003e\n\n* test(cluster/failback): merge with develop - resolve conflict\n\nMerge develop branch into fix-failback-flaky-test-clean.\nResolved conflicts in TestFailbackRetryFailed and TestFailbackRetryFailed10Times.\n\nChanges from this branch (apply Copilot review suggestions):\n- Replace unbounded polling with require.Eventually (10s/30s timeout)\n- Remove time.Sleep in favor of condition-based waiting\n- Split retry and taskList waits for clearer failure diagnosis\n\nSigned-off-by: Zhuanz \u003czhuanz@apache.org\u003e\n\n---------\n\nSigned-off-by: Zhuanz \u003czhuanz@apache.org\u003e\nSigned-off-by: CAICAIIs"
    },
    {
      "commit": "157c9d875ba7d1c2c8d09d684c3bc3bc9e67f16a",
      "tree": "00b65fdcff8024ed8d587ca0eed502deb05e9aa8",
      "parents": [
        "f1ac666550e9e1e951ed980c11a7a88bb7fd51e8"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Sat Jan 31 19:06:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 31 19:06:01 2026 +0800"
      },
      "message": "feat(generic): add exception class handle (#3183)\n\n* feat(generic): add GenericException with ExceptionClass\n"
    },
    {
      "commit": "f1ac666550e9e1e951ed980c11a7a88bb7fd51e8",
      "tree": "d2ec55ee89b6e56074c7dfcbbf671a4483daf003",
      "parents": [
        "806bd66349cd6fbfbc07a23378371590f3e12da9"
      ],
      "author": {
        "name": "陈钢阳",
        "email": "phpcyy@gmail.com",
        "time": "Tue Jan 27 16:19:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 16:19:58 2026 +0800"
      },
      "message": "fix(common): Make URL cloning thread-safe (#3160)\n\nThis commit fixes a critical thread-safety issue in the Clone and CloneExceptParams methods of the URL struct.\n\nThe previous implementation used the github.com/jinzhu/copier library, which is not safe for types containing mutexes. This caused two main problems in a concurrent environment:\n\n1. Data Races: The library read fields from the source URL without acquiring a lock, leading to data races.\n2. Mutex Copying: The sync.RWMutex fields within the URL were being copied, which is an incorrect usage of mutexes and leads to unpredictable behavior.\n\nThe implementation has been refactored to manually construct a new URL instance and explicitly copy each field. This new approach ensures that a cloned URL has its own new, properly initialized mutexes, making the cloning operation safe for concurrent use. This also has the added benefit of removing the copier dependency.\n\n(cherry picked from commit 589c998c2bb19d3999316ac529c52ef1c4c5216f)\n\nfix(common): Make URL cloning thread-safe\n\nThis commit fixes a critical thread-safety issue in the Clone and CloneExceptParams methods of the URL struct.\n\nThe previous implementation used the github.com/jinzhu/copier library, which is not safe for types containing mutexes. This caused two main problems in a concurrent environment:\n\n1. Data Races: The library read fields from the source URL without acquiring a lock, leading to data races.\n2. Mutex Copying: The sync.RWMutex fields within the URL were being copied, which is an incorrect usage of mutexes and leads to unpredictable behavior.\n\nThe implementation has been refactored to manually construct a new URL instance and explicitly copy each field. This new approach ensures that a cloned URL has its own new, properly initialized mutexes, making the cloning operation safe for concurrent use. This also has the added benefit of removing the copier dependency.\n\nfix(common): Make URL cloning thread-safe\n\nThis commit fixes a critical thread-safety issue in the Clone and CloneExceptParams methods of the URL struct.\n\nThe previous implementation used the github.com/jinzhu/copier library, which is not safe for types containing mutexes. This caused two main problems in a concurrent environment:\n\n1. Data Races: The library read fields from the source URL without acquiring a lock, leading to data races.\n2. Mutex Copying: The sync.RWMutex fields within the URL were being copied, which is an incorrect usage of mutexes and leads to unpredictable behavior.\n\nThe implementation has been refactored to manually construct a new URL instance and explicitly copy each field. This new approach ensures that a cloned URL has its own new, properly initialized mutexes, making the cloning operation safe for concurrent use. This also has the added benefit of removing the copier dependency.\n\nfix(common): Make URL cloning thread-safe\n\nThis commit fixes a critical thread-safety issue in the Clone and CloneExceptParams methods of the URL struct.\n\nThe previous implementation used the github.com/jinzhu/copier library, which is not safe for types containing mutexes. This caused two main problems in a concurrent environment:\n\n1. Data Races: The library read fields from the source URL without acquiring a lock, leading to data races.\n2. Mutex Copying: The sync.RWMutex fields within the URL were being copied, which is an incorrect usage of mutexes and leads to unpredictable behavior.\n\nThe implementation has been refactored to manually construct a new URL instance and explicitly copy each field. This new approach ensures that a cloned URL has its own new, properly initialized mutexes, making the cloning operation safe for concurrent use. This also has the added benefit of removing the copier dependency."
    },
    {
      "commit": "806bd66349cd6fbfbc07a23378371590f3e12da9",
      "tree": "29c1b86dbf61925a4423ca35f08a3da8768188d7",
      "parents": [
        "842281de12d56b428d9adb5c6a2e806a72be7d98"
      ],
      "author": {
        "name": "陈钢阳",
        "email": "phpcyy@gmail.com",
        "time": "Tue Jan 27 16:18:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 16:18:13 2026 +0800"
      },
      "message": "fix(protocol/triple): use context-aware dialer in HTTP/2 transport (#3165)\n\nThis fixes a bug where the Triple client\u0027s HTTP/2 transport wasn\u0027t\nrespecting context cancellation and timeouts. The non-TLS path was\nusing net.Dial instead of DialContext, and the TLS path wasn\u0027t\nexplicitly using a context-aware dialer.\n\nChanges:\n- Use (\u0026net.Dialer{}).DialContext for non-TLS HTTP/2 connections\n- Use (\u0026tls.Dialer{Config: tlsConfig}).DialContext for TLS connections\n- Add test cases to verify timeout behavior with both TLS and non-TLS\n\nThe test uses a black-hole address (RFC 5737) to ensure connections\ntime out as expected without relying on external network resources."
    },
    {
      "commit": "842281de12d56b428d9adb5c6a2e806a72be7d98",
      "tree": "8acfed8ba02b324675efd9771d99fc49184fc7a3",
      "parents": [
        "86208c7439a3ad751aa6c654c29425f745010248"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Tue Jan 27 16:16:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 16:16:38 2026 +0800"
      },
      "message": "fix(registry/nacos): add exponential backoff for subscribe retry (#3178)\n\n"
    },
    {
      "commit": "86208c7439a3ad751aa6c654c29425f745010248",
      "tree": "1569f665e1132eae18a8343da54fc1593ec8bbff",
      "parents": [
        "8807b93177f78f1458232aa1c0d1c2e6d5dbb351"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Tue Jan 27 10:19:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 10:19:10 2026 +0800"
      },
      "message": "feat(generic): add bean generalizer to support generic\u003dbean serialization (#3175)\n\n* feat(generic): add bean generalizer for generic\u003dbean serialization\n\nAdd JavaBeanDescriptor support to handle Java Dubbo services configured\nwith generic\u003dbean, enabling dubbo-go to serialize/deserialize objects\nusing the JavaBeanDescriptor format.\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* feat(generic): integrate bean generalizer into generic filter\n\n- Add GenericSerializationBean constant in common/constant/key.go\n- Update isGeneric() to recognize bean as a valid generic type\n- Update getGeneralizer() to return BeanGeneralizer for generic\u003dbean\n- Add test cases for bean serialization support\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* style: fix testifylint errors in bean_test.go\n\n- Replace assert.Nil(t, err) with assert.NoError(t, err)\n- Replace assert.Equal(t, n, len(...)) with assert.Len(t, ..., n)\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* style: use require.NoError for error assertions in bean_test.go\n\nReplace assert.NoError with require.NoError where subsequent code\ndepends on the error being nil, per testifylint rules.\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* style: replace all assert.NoError with require.NoError in bean_test.go\n\nPer testifylint rules, use require.NoError for error assertions where\nsubsequent code depends on the error being nil (e.g., type assertions).\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* fix(generic): address Copilot review comments for bean generalizer\n\n- Handle typed nil pointer (e.g., (*T)(nil)) in toDescriptor\n- Fix Java Hessian interop: normalize int32/int64 keys to int for arrays\n- Add GetType fallback to java.lang.Object for nil/unrecognized types\n- Reuse toUnexport function for field name conversion\n- Extract toInt helper to reduce code duplication\n- Add tests for typed nil pointer and int32 key scenarios\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\n\n* fix(generic): handle circular reference in bean generalizer and add type constants documentation\n\n- Add circular reference detection in toDescriptor using visited map\n- Add documentation for type constants explaining Java interoperability\n- Remove redundant comment in util_test.go\n- Add test cases for self-referencing and mutual circular references\n\nSigned-off-by: CAICAIIs \u003c3360776475@qq.com\u003e\n\n---------\n\nSigned-off-by: dubbo-go \u003cdubbo-go@apache.org\u003e\nSigned-off-by: CAICAIIs \u003c3360776475@qq.com\u003e"
    },
    {
      "commit": "8807b93177f78f1458232aa1c0d1c2e6d5dbb351",
      "tree": "86640af9c67ad4b7589706e13e8ee1878ce53261",
      "parents": [
        "cb9c5d770d652d055d2b618b7e53530cb894dd6d"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Tue Jan 27 10:18:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 10:18:56 2026 +0800"
      },
      "message": "feat(generic): add InvokeWithType and move GenericService to filter/generic (#3174)\n\n* feat(generic): add InvokeWithType and move GenericService to filter/generic\n\n- Add InvokeWithType method to GenericService for automatic deserialization\n- Move GenericService from config/generic to filter/generic\n- Enhance OnResponse in genericFilter to support auto deserialization\n- Add comprehensive tests for InvokeWithType functionality\n\nBreaking change: import path changed from\ndubbo.apache.org/dubbo-go/v3/config/generic to\ndubbo.apache.org/dubbo-go/v3/filter/generic\n\n* style: fix import formatting in filter/generic/filter_test.go\n\nReorganize imports into three separate blocks per project guidelines:\n1. Standard library\n2. Third-party packages\n3. Internal packages\n\n* refactor(generic): shared deserialization logic \u0026 enhance tests\n\n* fix(generic): add nil check before reflect.Set to prevent panic\n\nWhen realizeResult returns nil, calling reflect.ValueOf(nil).Set()\nwould panic. Add nil check before Set operation.\n\nSigned-off-by: CAICAIIs \u003c3360776475@qq.com\u003e\n\n---------\n\nSigned-off-by: CAICAIIs \u003c3360776475@qq.com\u003e"
    },
    {
      "commit": "cb9c5d770d652d055d2b618b7e53530cb894dd6d",
      "tree": "5a36b0a1645884789f103dfb97df037d8b1bb388",
      "parents": [
        "19d2affee96d6defd0d81300d55dd4049d8dbfa3"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Tue Jan 27 10:18:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 10:18:36 2026 +0800"
      },
      "message": "fix(cluster/failback): add exponential backoff for retry mechanism (#3180)\n\nReplace fixed 5-second retry interval with exponential backoff (1s→60s)\nto prevent retry storms when downstream services have extended outages.\n\n- Add github.com/cenkalti/backoff/v4 for exponential backoff\n- New fields in retryTimerTask: nextBackoff, backoff\n- First retry after ~1s, increases exponentially up to 60s max\n- Update tests to reflect new backoff behavior\n\nSigned-off-by: Zhuanz \u003czhuanz@apache.org\u003e"
    },
    {
      "commit": "19d2affee96d6defd0d81300d55dd4049d8dbfa3",
      "tree": "a23dc225fa684972a53ce752303c0299b1bf23d4",
      "parents": [
        "762e905e97c823e15cd67deab1069ec80990d142"
      ],
      "author": {
        "name": "翎",
        "email": "1820661379@qq.com",
        "time": "Sun Jan 25 18:15:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 25 18:15:49 2026 +0800"
      },
      "message": "Feat/generic-add-include-class-config (#3171)\n\n* feat(key): add  a const generic.include.class\n\n* feat(generic): support generic.include.class config\n\n* fix:(map)\n: add case map[any]any\n\n* fix(map):  Improve the logic of realize method for CI\n\n* feat(map): improve getGenericIncludeClass logic\n\n* style: import\n\n* style: import\n\n* style: changed for CI\n\n* style: import changed fo CI\n\n* style: imports-formatter\n\n* style changed for CI\n\n* style: import\n\nReorganize import statements by removing and re-adding imports for consistency.\n\n* feat: add  documentation to explain their purpose\n\n* fix: map[any]any key comparison for \"class\" removal\n\n* feat(map): add test cases\n\n* style: imports-formatter\n\n* style: imports-formatter"
    },
    {
      "commit": "762e905e97c823e15cd67deab1069ec80990d142",
      "tree": "a3dd14cf7b7d161bd3a3c11ef1c7e2191ebde6d3",
      "parents": [
        "7574480e7b87dababc0473ae3676a7606e87c068"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Fri Jan 23 22:08:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:08:02 2026 +0800"
      },
      "message": "feat(generic): support protobuf-json serialization in generic filter (#3170)\n\n* feat(generic): support protobuf-json serialization in generic filter\n\nAdd protobuf-json generalizer support to the Filter layer, enabling\ngeneric calls with protobuf-json serialization for Triple protocol.\n\n- Update isGeneric() to recognize \u0027protobuf-json\u0027 and \u0027gson\u0027 types\n- Add protobuf-json case in getGeneralizer() to return ProtobufJsonGeneralizer\n- Add corresponding unit tests for the new functionality\n\n* refactor(generic): use strings.EqualFold for case-insensitive comparison"
    },
    {
      "commit": "7574480e7b87dababc0473ae3676a7606e87c068",
      "tree": "2c8dea629267129809dbcdb431612894843dc0a1",
      "parents": [
        "3de582d2ca5b474eba25537800d714dd843a1429"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Tue Jan 20 13:42:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 20 13:42:50 2026 +0800"
      },
      "message": "refactor: rename ExpectedCodecName to FallbackCodecName internally (#3169)\n\n* refactor: rename ExpectedCodecName to FallbackCodecName internally\n\n* remove ExpectedCodecName"
    },
    {
      "commit": "3de582d2ca5b474eba25537800d714dd843a1429",
      "tree": "d29e220329f65eb8b423f48bab29dd30eeac9736",
      "parents": [
        "1f05305eeb0269c8f174b92cfdda082e13a65412"
      ],
      "author": {
        "name": "Aether",
        "email": "98370028+Aetherance@users.noreply.github.com",
        "time": "Tue Jan 20 11:48:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 20 11:48:55 2026 +0800"
      },
      "message": "refactor(triple): upgrade triple client to service-level abstraction (#3086)\n\n* refactor(triple): upgrade Client to service-level abstraction"
    },
    {
      "commit": "1f05305eeb0269c8f174b92cfdda082e13a65412",
      "tree": "0d852f1a6b5d5c7aea8c16409ff8d15494c83c71",
      "parents": [
        "abd1b32b0ad5d65d023724de4a5d2830cafee77e"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Sun Jan 18 22:20:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 18 22:20:03 2026 +0800"
      },
      "message": "fix: polaris router support application name (#3164)\n\n* fix: polaris router support application name\n"
    },
    {
      "commit": "abd1b32b0ad5d65d023724de4a5d2830cafee77e",
      "tree": "a8d6d2ccb550c7f4f2b02289f80a2660130ea5c0",
      "parents": [
        "ee68159bc607e786ba267410edb5cd4a57b2b3a7"
      ],
      "author": {
        "name": "Zerui Yang",
        "email": "zeruiyoung@gmail.com",
        "time": "Sun Jan 18 22:16:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 18 22:16:11 2026 +0800"
      },
      "message": "test: enhance triple stream validation in unit tests (#3152)\n\n"
    },
    {
      "commit": "ee68159bc607e786ba267410edb5cd4a57b2b3a7",
      "tree": "3aad95acc1774d70bf7c13dc56f876f9850e318c",
      "parents": [
        "2373adf315d581e75a3b056a175c6169746ae6f1"
      ],
      "author": {
        "name": "Tsukikage",
        "email": "65526564+Tsukikage7@users.noreply.github.com",
        "time": "Thu Jan 15 18:02:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 15 18:02:26 2026 +0800"
      },
      "message": "feat(triple): support generic call for Triple protocol (#3154)\n\nAdd generic call support for Triple protocol in non-IDL mode, enabling\nGo clients to invoke Java services without pre-generated stubs.\n\nChanges:\n- Add protoWrapperCodec for wrapping hessian2 data in protobuf format\n- Support protoBinaryCodec unmarshaling wrapped hessian2 responses\n- Set CallType and parameterRawValues in generic filter for Triple\n- Add NewGenericService API in client package"
    },
    {
      "commit": "2373adf315d581e75a3b056a175c6169746ae6f1",
      "tree": "29b457d8b0d4fe1e9a55fd5e1cdd2e2a3c514d20",
      "parents": [
        "f83adb16689a142f4540635ac749651c5b195af5"
      ],
      "author": {
        "name": "Tsukikage",
        "email": "65526564+Tsukikage7@users.noreply.github.com",
        "time": "Tue Jan 13 16:15:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 16:15:02 2026 +0800"
      },
      "message": "docs: fix broken documentation links in README (#3158)\n\n"
    },
    {
      "commit": "f83adb16689a142f4540635ac749651c5b195af5",
      "tree": "222367b08b1087feeeb08292494c38f6ddae3c1a",
      "parents": [
        "489ee6aed49b9a08cd0fb63232a4eaec5fce6e1a"
      ],
      "author": {
        "name": "陈钢阳",
        "email": "phpcyy@gmail.com",
        "time": "Mon Jan 12 10:02:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 12 10:02:19 2026 +0800"
      },
      "message": "fix(remoting): Refine Getty server TLS configuration (#3156)\n\nCorrected a log message from \u0027client\u0027 to \u0027server\u0027 in Getty\u0027s TLS initialization.\nEnhanced server TLS setup by adding a validation check (`dubbotls.IsServerTLSValid`) before enabling SSL.\nRemoved redundant TLS configuration logic to simplify the code path"
    },
    {
      "commit": "489ee6aed49b9a08cd0fb63232a4eaec5fce6e1a",
      "tree": "0450b9863eda061474bb59e07093b6db049f6a99",
      "parents": [
        "71f0557bfb5f9bfa7a670bf17402ec1897bc9087"
      ],
      "author": {
        "name": "Xin.Zh",
        "email": "alexstocks@foxmail.com",
        "time": "Sat Dec 27 18:54:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 18:54:13 2025 +0800"
      },
      "message": "update readme (#3150)\n\n* update readme"
    },
    {
      "commit": "71f0557bfb5f9bfa7a670bf17402ec1897bc9087",
      "tree": "470744f59498a6c5e630347ea0bfc7825ae1ac6d",
      "parents": [
        "d55c302fb1b862083e0e27559bd316f9ce291ef5"
      ],
      "author": {
        "name": "陈乐樂",
        "email": "1239498998@qq.com",
        "time": "Sat Dec 27 18:00:20 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 18:00:20 2025 +0800"
      },
      "message": "feat: add unit test in remoting and metadata files (#3120)\n\n* feat: add unit test in remoting and metadata files\n"
    },
    {
      "commit": "d55c302fb1b862083e0e27559bd316f9ce291ef5",
      "tree": "e3858077bf85612a393127a68b5f6ee055d3dbce",
      "parents": [
        "0f19e85a8372fce2ce0eed3647dba16c8e6d6c5e"
      ],
      "author": {
        "name": "Sirui Huang",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Sat Dec 27 16:56:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 16:56:39 2025 +0800"
      },
      "message": "rollback the test of triple (#3149)\n\n* rollback the test of triple\n\n* fix lint"
    },
    {
      "commit": "0f19e85a8372fce2ce0eed3647dba16c8e6d6c5e",
      "tree": "9ea0a0225b34a7beed0ff464c774d8eb275dbed6",
      "parents": [
        "992c2972cb573aae5bf7ed91fb397ca2fc13fe38"
      ],
      "author": {
        "name": "marsevilspirit",
        "email": "marsevilspirit@gmail.com",
        "time": "Sat Dec 27 16:03:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 16:03:53 2025 +0800"
      },
      "message": "perf(unittest): make the spaghetti code look less terrible (#3144)\n\n* add testifylint in golangci-lint\n"
    },
    {
      "commit": "992c2972cb573aae5bf7ed91fb397ca2fc13fe38",
      "tree": "368c4e420b2fbed4e5b3422a1fb273cc9eb3f4ae",
      "parents": [
        "d0a90bc4120d05a39bdf109e4c41d13bbb14daad"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Sat Dec 27 16:00:48 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 16:00:48 2025 +0800"
      },
      "message": "test: add unit test for protocol/base (#3139)\n\n* test: add unit test for protocol/base\n"
    },
    {
      "commit": "d0a90bc4120d05a39bdf109e4c41d13bbb14daad",
      "tree": "a2e914f74c17439d9b6051e5b371cbfd436d3957",
      "parents": [
        "0dbc64d1a9846a7347c882afa1ba6835f05df24d"
      ],
      "author": {
        "name": "Sirui Huang",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Sat Dec 27 15:56:12 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 27 15:56:12 2025 +0800"
      },
      "message": "Add unit test of config center (#3134)\n\n* add the unit test"
    },
    {
      "commit": "0dbc64d1a9846a7347c882afa1ba6835f05df24d",
      "tree": "e4b668c78e4fec0f43a47ac07605a665cf30bc54",
      "parents": [
        "9c364fdde795b9a2c22b42b94da62a40c8ded1fa"
      ],
      "author": {
        "name": "marsevilspirit",
        "email": "marsevilspirit@gmail.com",
        "time": "Wed Dec 24 16:20:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 24 16:20:13 2025 +0800"
      },
      "message": "chore(clean): Remove unused XDS code (#3147)\n\n* chore(clean): delete unused xds code\n\n* delete blank"
    },
    {
      "commit": "9c364fdde795b9a2c22b42b94da62a40c8ded1fa",
      "tree": "38af7c7f0bc58b834fb347c644dd39d4898150fd",
      "parents": [
        "a0bd8ae3269da190e357a5a4e24822ef3916bd53"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Tue Dec 23 12:49:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 12:49:04 2025 +0800"
      },
      "message": "test: add unit test for protocol/result  (#3141)\n\n* test: add unit test for protocol/result\n"
    },
    {
      "commit": "a0bd8ae3269da190e357a5a4e24822ef3916bd53",
      "tree": "ae8678141c71e8337a4aa9c0c09199f63f219393",
      "parents": [
        "4eb036a6210937e8efcf82c1015da1397bb0d9d5"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Tue Dec 23 12:47:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 12:47:39 2025 +0800"
      },
      "message": "test: add unit test for protocol/invocation (#3140)\n\n* test: add unit test for protocol/invocation\n"
    },
    {
      "commit": "4eb036a6210937e8efcf82c1015da1397bb0d9d5",
      "tree": "3533e40bfe66e332254db04e10969df89e3ec27c",
      "parents": [
        "47abbbca60fb8ff3c475f23f0d64bd715a257d08"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Tue Dec 23 12:45:47 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 12:45:47 2025 +0800"
      },
      "message": "test: add unit test for protocol/dubbo (#3136)\n\n* test: add unit test for protocol/dubbo"
    },
    {
      "commit": "47abbbca60fb8ff3c475f23f0d64bd715a257d08",
      "tree": "9c3c2a9025a7704cc2691b3de1bd41423e2c7525",
      "parents": [
        "c2989bdc2e478c3c13da7257755b0ed7c4435a7a"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Mon Dec 22 14:12:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 14:12:49 2025 +0800"
      },
      "message": "test: add unit test for metrics (#3122)\n\n* test: add unit test for metrics\n\n* fix mistake\n\n* format code\n\n* use const\n\n* fix: improve metrics tests based on Copilot review"
    },
    {
      "commit": "c2989bdc2e478c3c13da7257755b0ed7c4435a7a",
      "tree": "b6e72b1cc919fa8d9c98bb027e7c0d4dc2b131dd",
      "parents": [
        "ad0868c109c3c830d2198fc3af1996919716f983"
      ],
      "author": {
        "name": "zbchi",
        "email": "1662308219@qq.com",
        "time": "Mon Dec 22 14:12:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 14:12:29 2025 +0800"
      },
      "message": "test: add unit test for otel/trace (#3123)\n\n* test: add unit test for otel/trace\n\n* format code\n\n* add shutdown"
    },
    {
      "commit": "ad0868c109c3c830d2198fc3af1996919716f983",
      "tree": "caa2ff4b6c6309825dad156ab7e7fd4a5114b645",
      "parents": [
        "9f38b6a5dc42b322895d38c17b4bb32d9d32557d"
      ],
      "author": {
        "name": "CAICAII",
        "email": "0d000721@openatom.club",
        "time": "Mon Dec 22 14:11:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 14:11:44 2025 +0800"
      },
      "message": "test(common): add comprehensive unit tests for common package (#3130)\n\n* test(common): add comprehensive unit tests for common package\n\n* refactor(common): address security scan warnings in test files\n\n* fix(common): address security scan warnings in test files\n\n* fix(common): resolve SonarQube security warnings in test files\n\n* fix(common): replace hard-coded credentials with constants in tests\n\n* fix(common): use RFC 5737 documentation IPs instead of private IPs\n\n* fix: format common/url_test.go\n\n* fix: add synchronization to concurrent hystrix tests"
    },
    {
      "commit": "9f38b6a5dc42b322895d38c17b4bb32d9d32557d",
      "tree": "753f4a9c364884c29d09a35f36781b3c600faea8",
      "parents": [
        "95520ff257079bacc4ba443b06f88662d0810748",
        "53d5b516deeaf9dd28bd7ee19dab0ae50d6212f3"
      ],
      "author": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:34:42 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:34:42 2025 +0800"
      },
      "message": "Merge branch \u0027main\u0027 into develop\n"
    },
    {
      "commit": "53d5b516deeaf9dd28bd7ee19dab0ae50d6212f3",
      "tree": "753f4a9c364884c29d09a35f36781b3c600faea8",
      "parents": [
        "1b54257ef397d9321fddf5398b7c2f966b67e1ec"
      ],
      "author": {
        "name": "Xuetao Li",
        "email": "m134679102365478@163.com",
        "time": "Mon Dec 22 07:52:50 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:57 2025 +0800"
      },
      "message": "test: add test cases for `filter` (#3118)\n\n* test: add unit tests for ./filter/\n"
    },
    {
      "commit": "1b54257ef397d9321fddf5398b7c2f966b67e1ec",
      "tree": "dd59ba2e75cb766c2a9d2a0eb3220dd7711ca5eb",
      "parents": [
        "e6cad9c56c9a73559a486585a8a9c570e516e3a7"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:42:42 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:56 2025 +0800"
      },
      "message": "test: add unit test for server/action.go server/compat.go (#3132)\n\n* test: add unit test for server/"
    },
    {
      "commit": "e6cad9c56c9a73559a486585a8a9c570e516e3a7",
      "tree": "27a779425cc2677a176d0f7eb5628e627e6e5b69",
      "parents": [
        "010af55de146b8195281970693d95cad730e6732"
      ],
      "author": {
        "name": "Oxidaner",
        "email": "80675726+Oxidaner@users.noreply.github.com",
        "time": "Mon Dec 22 07:41:01 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:56 2025 +0800"
      },
      "message": "test: Add unit tests for graceful_shutdown package (#3128)\n\n* Add unit tests for graceful_shutdown package\n"
    },
    {
      "commit": "010af55de146b8195281970693d95cad730e6732",
      "tree": "bdbebca8eb45cb34452083ac946697275c5a4914",
      "parents": [
        "8d153f575af583006f22e495adc9a0a59fb8b7a9"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:40:16 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:55 2025 +0800"
      },
      "message": "test: add unit test for server/server (#3129)\n\n* test: add unit test for server/server"
    },
    {
      "commit": "8d153f575af583006f22e495adc9a0a59fb8b7a9",
      "tree": "aa5a6c8c5b95813421ba6086db7edeb4fcf4a3b9",
      "parents": [
        "652f5298c8088194070ea219d2c74ae6f2b8771b"
      ],
      "author": {
        "name": "Tsukikage",
        "email": "65526564+Tsukikage7@users.noreply.github.com",
        "time": "Mon Dec 22 07:39:36 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:55 2025 +0800"
      },
      "message": "test(logger): add unit tests to improve coverage (#3119)\n\n- zap: add tests for NewDefault, encoderConfig, text/default format,\n  console and file appenders, invalid level handling (74.1% -\u003e 100%)\n- logrus: add tests for text/default format, console and file appenders,\n  valid level handling (95.2% -\u003e 100%)\n- logger: add tests for SetLoggerLevel with non-OpsLogger\n  (90.6% -\u003e 93.8%)"
    },
    {
      "commit": "652f5298c8088194070ea219d2c74ae6f2b8771b",
      "tree": "2e33a7393dcacf24e46cd63622d62770cc152308",
      "parents": [
        "7fadaa8d3160728254e049b3b8c2a7679b6b48c1"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:38:06 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:54 2025 +0800"
      },
      "message": "test: add unit test for server/options.go (#3131)\n\n* test: add unit test for server/options.go"
    },
    {
      "commit": "7fadaa8d3160728254e049b3b8c2a7679b6b48c1",
      "tree": "25044482a1059d51cf2c7f3e0f9e9763f0b00699",
      "parents": [
        "9438a1bb21fc1acd9011625b756a45aff0495cd5"
      ],
      "author": {
        "name": "Aether",
        "email": "98370028+Aetherance@users.noreply.github.com",
        "time": "Mon Dec 22 07:35:30 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:54 2025 +0800"
      },
      "message": "chore(test): add unit tests for registry and proxy (#3126)\n\nSigned-off-by: Aetherance \u003cinkToAether@gmail.com\u003e\nCo-authored-by: Aetherance \u003cinkToAether@gmail.com\u003e"
    },
    {
      "commit": "9438a1bb21fc1acd9011625b756a45aff0495cd5",
      "tree": "468e115532bb0caa02c6798a5ecc1894485b3c3c",
      "parents": [
        "b78c47cd813ec2fd983f54b552d91c2d2d2416c2"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:34:28 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:53 2025 +0800"
      },
      "message": "test: add unit test for global (#3124)\n\n* test: add unit test for global\n"
    },
    {
      "commit": "b78c47cd813ec2fd983f54b552d91c2d2d2416c2",
      "tree": "ae1082a9030adb6ac7c4fccb99ebd88e0b3fe133",
      "parents": [
        "725897ed9d01ce1ad351f49e74066d0cf51e5dff"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Mon Dec 22 07:33:47 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:53 2025 +0800"
      },
      "message": "test(tls): add unit tests for GetServerTlSConfig and GetClientTlSConfig (#3125)\n\n"
    },
    {
      "commit": "725897ed9d01ce1ad351f49e74066d0cf51e5dff",
      "tree": "b6b2168110ce6de42c0edba2c31ae00c5070165d",
      "parents": [
        "72cd813d0a39871d0808ece2a73edfe5c6bd2392"
      ],
      "author": {
        "name": "Sirui Huang",
        "email": "127271430+nanjiek@users.noreply.github.com",
        "time": "Sun Dec 21 10:55:20 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:52 2025 +0800"
      },
      "message": "add the unit test (#3121)\n\n"
    },
    {
      "commit": "72cd813d0a39871d0808ece2a73edfe5c6bd2392",
      "tree": "6fae49a49c6d224beafea5d8f6afabda33960a38",
      "parents": [
        "6bae0d83251637d092ebc492e8163995a8f2c1e6"
      ],
      "author": {
        "name": "Oxidaner",
        "email": "80675726+Oxidaner@users.noreply.github.com",
        "time": "Sat Dec 20 23:06:22 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 10:33:52 2025 +0800"
      },
      "message": "Change log (#3117)\n\n* fix: repair CHANGELOG.md\n"
    },
    {
      "commit": "95520ff257079bacc4ba443b06f88662d0810748",
      "tree": "753f4a9c364884c29d09a35f36781b3c600faea8",
      "parents": [
        "96053821e888aaaeda7b4f6875b099d00c06f9c8"
      ],
      "author": {
        "name": "Xuetao Li",
        "email": "m134679102365478@163.com",
        "time": "Mon Dec 22 07:52:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:52:50 2025 +0800"
      },
      "message": "test: add test cases for `filter` (#3118)\n\n* test: add unit tests for ./filter/\n"
    },
    {
      "commit": "96053821e888aaaeda7b4f6875b099d00c06f9c8",
      "tree": "dd59ba2e75cb766c2a9d2a0eb3220dd7711ca5eb",
      "parents": [
        "6d9679bdd1b2bcce6a07ed129ad37320d7d86a79"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Mon Dec 22 07:43:36 2025 +0800"
      },
      "committer": {
        "name": "alexstocks",
        "email": "alexstocks@foxmail.com",
        "time": "Mon Dec 22 07:47:44 2025 +0800"
      },
      "message": "test(triple): enhance unit tests for protocol/triple package (#3133)\n\n"
    },
    {
      "commit": "6bae0d83251637d092ebc492e8163995a8f2c1e6",
      "tree": "aadbdd6a0b998c93d2efdcb10e3301c4aef3f278",
      "parents": [
        "e022ba5163ab632f75840e3fb39ab483f5f867fe"
      ],
      "author": {
        "name": "CAICAII",
        "email": "3360776475@qq.com",
        "time": "Mon Dec 22 07:43:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:43:36 2025 +0800"
      },
      "message": "test(triple): enhance unit tests for protocol/triple package (#3133)\n\n"
    },
    {
      "commit": "6d9679bdd1b2bcce6a07ed129ad37320d7d86a79",
      "tree": "84f0c9cc42a1439d286727121d7f69c6810a324c",
      "parents": [
        "1141fe7ccb0446e8e89bd02af912450f73b2da3d"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:42:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:42:42 2025 +0800"
      },
      "message": "test: add unit test for server/action.go server/compat.go (#3132)\n\n* test: add unit test for server/"
    },
    {
      "commit": "1141fe7ccb0446e8e89bd02af912450f73b2da3d",
      "tree": "3564c66e34f68c039d85c97c447e5b0d4f2f1465",
      "parents": [
        "1563aea3f13591535c8ac36ad65de959e07d7839"
      ],
      "author": {
        "name": "Oxidaner",
        "email": "80675726+Oxidaner@users.noreply.github.com",
        "time": "Mon Dec 22 07:41:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:41:01 2025 +0800"
      },
      "message": "test: Add unit tests for graceful_shutdown package (#3128)\n\n* Add unit tests for graceful_shutdown package\n"
    },
    {
      "commit": "1563aea3f13591535c8ac36ad65de959e07d7839",
      "tree": "30ed55d06be920784f47a6439e912bcf1a28c006",
      "parents": [
        "8e7a35b990be5a937da0998dc62978808070003a"
      ],
      "author": {
        "name": "Akashisang",
        "email": "151737560+Akashisang@users.noreply.github.com",
        "time": "Mon Dec 22 07:40:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:40:16 2025 +0800"
      },
      "message": "test: add unit test for server/server (#3129)\n\n* test: add unit test for server/server"
    },
    {
      "commit": "8e7a35b990be5a937da0998dc62978808070003a",
      "tree": "27bc07783cd480beee0c7b9ca27fb181ba3ca2dd",
      "parents": [
        "78ad16a2225f226cab4809f425365929d784be78"
      ],
      "author": {
        "name": "Tsukikage",
        "email": "65526564+Tsukikage7@users.noreply.github.com",
        "time": "Mon Dec 22 07:39:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 07:39:36 2025 +0800"
      },
      "message": "test(logger): add unit tests to improve coverage (#3119)\n\n- zap: add tests for NewDefault, encoderConfig, text/default format,\n  console and file appenders, invalid level handling (74.1% -\u003e 100%)\n- logrus: add tests for text/default format, console and file appenders,\n  valid level handling (95.2% -\u003e 100%)\n- logger: add tests for SetLoggerLevel with non-OpsLogger\n  (90.6% -\u003e 93.8%)"
    }
  ],
  "next": "78ad16a2225f226cab4809f425365929d784be78"
}
