)]}'
{
  "log": [
    {
      "commit": "ad12bad0a717d7ed64367b776b1ee646716634d3",
      "tree": "02f47f0cade6938cde1c4ec49b6e7cc23dedb389",
      "parents": [
        "123c53d30311509e4a11b754bbc8033ba16140e4"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sat Oct 31 15:50:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 31 15:50:55 2026 +0800"
      },
      "message": "update dorny/paths-filter (#4520)\n\n* update dorny/paths-filter\n\n* e2e.yaml update"
    },
    {
      "commit": "123c53d30311509e4a11b754bbc8033ba16140e4",
      "tree": "6e03e12180ec8d59947d58c006c84f954adf2031",
      "parents": [
        "829466b5470d749773793193f1fc1d46e8613d61"
      ],
      "author": {
        "name": "Limbo",
        "email": "yykaue@qq.com",
        "time": "Thu Oct 01 03:26:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 03:26:23 2026 +0800"
      },
      "message": "fix(console): correct GitHub icon licensing (#4516)"
    },
    {
      "commit": "829466b5470d749773793193f1fc1d46e8613d61",
      "tree": "410d2653ccb301b58fc29d75e063576584bf9a0b",
      "parents": [
        "de2bc5683c5b14861eb2305dbe93e35be257c332"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Sep 04 13:12:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 13:12:35 2026 +0800"
      },
      "message": "[Build] Establish the StreamPark 3.0 architecture baseline (#4512)\n\n* [Build] Establish the StreamPark 3.0 architecture baseline\n\n* [Build] Address security and reliability findings\n\n* [Build] Resolve remaining Sonar findings\n\n* [Common] Reuse configuration null checks\n\n* [Flink] Fix cluster metric comparison\n\n* [Flink] Add Hadoop test dependencies to packer\n\n* [Build] Update distribution dependency allowlist\n\n* [Flink] Harden client submission architecture\n\n* [CI] Keep retired E2E check mergeable"
    },
    {
      "commit": "de2bc5683c5b14861eb2305dbe93e35be257c332",
      "tree": "fe3f121c63c7a8edc560e6dd43f71f01e082ad11",
      "parents": [
        "9f7fe967b80dce793f9a4d0757d22bf96c400f5b"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Aug 26 00:38:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 00:38:43 2026 +0800"
      },
      "message": "[Flink] Fix REMOTE Session JobGraph submission for Flink 1.20 SQL and uploaded JAR jobs (#4507)\n\nFix SQL storage/decoding, upload-JAR build/submit classpath, and related\nconsole/client/packer issues so REMOTE Session jobs reach RUNNING via\nJobGraph submission. Closes #4506."
    },
    {
      "commit": "9f7fe967b80dce793f9a4d0757d22bf96c400f5b",
      "tree": "10bcb069b52a538f8a0792a00bc9d4d8ebd81ec4",
      "parents": [
        "72fa842baf4cac6541ade9bf7f3252f01e9e8dbf"
      ],
      "author": {
        "name": "88fantasy",
        "email": "88fantasy@gmail.com",
        "time": "Mon Aug 24 14:13:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 14:13:14 2026 +0800"
      },
      "message": "[Console] Fix four DTO/entity defects that break Spark and Flink SQL app management (#4497)\n\nEach of these makes a normal UI operation fail outright; all four are\nreproducible on a clean install.\n\n1. FlinkAppCreateRequest carries no sqlId, though the frontend sends one\n   and FlinkApplicationManageServiceImpl.updateFlinkSqlJob() requires it\n   for an application that has already been started. BeanUtils.copyProperties\n   silently skips the absent field, the entity\u0027s sqlId stays null, and the\n   save fails with \"Flink sql is null, update flink sql job failed.\" Only\n   never-started applications were unaffected, since those take the\n   candidate branch. SparkAppCreateRequest and FlinkAppResponse both\n   already declare sqlId — this was a one-sided omission on the Flink\n   request DTOs.\n\n2. SparkAppStateEnum.of(Integer) compares appState.value \u003d\u003d state, which\n   unboxes. SparkAppListQueryRequest has a scalar state field that is null\n   whenever the list is not filtered by status, so the copy to\n   SparkApplication leaves state null and shouldTracking() -\u003e getStateEnum()\n   -\u003e of(null) throws NPE: /spark/app/list returns 500 for everyone. Now\n   returns OTHER for null. FlinkAppStateEnum.getState(Integer) has the same\n   unboxing shape but no scalar state field reaching it today, so it is\n   left alone here.\n\n3. SparkEnv.doSetSparkConf() only assigned sparkConf when conf/spark-defaults.conf\n   existed. A stock Spark distribution ships only spark-defaults.conf.template,\n   so for an unmodified Spark home the field stays null and the insert fails\n   on t_spark_env.spark_conf, which is NOT NULL with no default — no Spark\n   home could be registered at all. An absent file is now stored as an empty\n   conf.\n\n4. SparkApplication.k8sImagePullPolicy was a primitive int while\n   SparkAppCreateRequest declares Integer and the Spark frontend never sends\n   the field, so BeanUtils.copyProperties unboxed null and /spark/app/create\n   returned 500 for every UI-created Spark application. The entity field now\n   matches its nullable column."
    },
    {
      "commit": "72fa842baf4cac6541ade9bf7f3252f01e9e8dbf",
      "tree": "8031524c9b32869358a41b63be3336a0707cf1bd",
      "parents": [
        "9ddda84c9f2309914a67c4af24a8ce53fe49f9d3"
      ],
      "author": {
        "name": "88fantasy",
        "email": "88fantasy@gmail.com",
        "time": "Mon Aug 24 14:12:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 14:12:11 2026 +0800"
      },
      "message": "[Flink] Make Flink 2.x job submission work on REMOTE mode (#4500)\n\n* [Flink] Fix Flink SQL job submission failures on the client path\n\nSix defects on the path that turns a saved Flink SQL application into a\nsubmitted job. Each was found by submitting a real Flink SQL job to a\nstandalone cluster and fixing whatever failed next; they are independent\nof each other but all sit on this one path.\n\n1. ClassLoaderUtils.runAsClassLoader restored the context classloader\n   captured in a static field when the class was first initialized —\n   whichever thread happened to load it — instead of the one the calling\n   thread had on entry. On pooled threads that silently replaces an\n   unrelated thread\u0027s context classloader.\n\n2. FlinkClientTrait.getCustomCommandLines and\n   RemoteClient.getStandAloneClusterDescriptor call into Flink classes\n   bound to the Flink version bundled with this module, while the calling\n   thread\u0027s context classloader is FlinkShimsProxy\u0027s target-version shims\n   classloader. Their internal ServiceLoader lookups therefore resolved\n   providers from a different Flink version than the interfaces bundled\n   here, failing with ServiceConfigurationError (\"not a subtype\"). Both\n   call sites now run under their own class\u0027s classloader. Closes #4483.\n\n3. The build-response getters (workspacePath, pass, shadedJarPath,\n   flinkBaseImage, mainJarPath, extraLibJarPaths, flinkImageTag,\n   podTemplatePaths, dockerInnerMainJarPath) do not follow JavaBean\n   getter naming and carried no @JsonProperty, so Jackson silently\n   skipped them: every build result persisted to t_flink_app\u0027s\n   buildResultJson lost its paths, and only pass survived — by the\n   coincidence that its field default is already true. A later submit\n   then read back shadedJarPath \u003d\u003d null and failed with an NPE, an\n   \"entry point class not found\", or \"flinkJobJar is null\", depending on\n   which downstream path consumed it.\n\n4. SubmitRequest.userJarFile() passed shadedJarPath() straight to\n   new File(...), which throws NPE when it is legitimately null.\n\n5. streampark-console-service declared a compile dependency on\n   streampark-flink-shims-base but not on streampark-flink-shims-base-v2,\n   so FlinkTableInitializerV2 never reached the console\u0027s lib/ and every\n   Flink 2.x SQL job failed with NoClassDefFoundError. Flink 1.x was\n   unaffected, which is why this went unnoticed.\n\n6. PackagedProgram\u0027s setUserClassPaths, disabled wholesale for #3761, is\n   re-enabled for FLINK_SQL jobs only, so a SQL job\u0027s connector jars reach\n   the client classpath. Verified against a real cluster not to reproduce\n   the ClassCastException #3761 describes, and it leaves every other job\n   type on the existing behaviour.\n\n* [Flink] Make Flink 2.x job submission work on REMOTE mode\n\nSubmitting a Flink SQL job to a Flink 2.x cluster failed with a\nNoClassDefFoundError long before reaching the cluster. Flink 1.x was\nunaffected, which is why this went unnoticed. Five independent causes,\neach of which only becomes visible after the previous one is fixed:\n\n1. FlinkShimsProxy stopped putting the version-specific shims jar into\n   the shims classloader. It matches on a name shaped\n   \"streampark-flink-shims_flink-\u003cver\u003e_\u003cscala\u003e\", which those artifacts\n   carried until e770d2e8e renamed them without the Scala suffix. Both\n   spellings are accepted now.\n\n2. The same rename silenced the rule that pulls in the rest of\n   StreamPark\u0027s Flink jars (\"has a _\u003cscala\u003e suffix\"), so the client stack\n   was loaded by the console\u0027s own classloader and resolved\n   org.apache.flink.* from the console\u0027s fixed baseline Flink instead of\n   the target version\u0027s jars. That is the actual mechanism behind #4483:\n   the ServiceLoader mismatch it reports is what a half-populated shims\n   classloader looks like from the outside.\n\n3. shims-base and shims-base-v2 share twelve class names — v2 redeclares\n   them for Flink 2.x and inherits the rest — but both were added to\n   every shims classloader regardless of the target version, in directory\n   listing order. Which Flink version a class had been compiled for was\n   therefore decided by the filesystem. A 1.x target no longer sees v2 at\n   all, and a 2.x target gets v2 ahead of the base.\n\n4. SavepointConfigOptions was removed in Flink 2.x, and Configuration\u0027s\n   typed accessors (getBoolean/setBoolean/getInteger over a ConfigOption)\n   went with it. Since this module is compiled once against a single\n   baseline but submits to whichever version the user registered, both\n   are now addressed portably: the savepoint options are declared from\n   their keys, which are byte-identical across every supported version,\n   and the generic get/set replace the typed accessors.\n\n5. ClusterClient#submitJob widened its parameter from JobGraph to\n   ExecutionPlan in 2.x. The instance satisfies either signature, only\n   the declared type moved, so the call is made reflectively.\n\nA FLINK_SQL program\u0027s classloader is also told to resolve\norg.apache.streampark.* parent-first. The fat jar bundles whichever shims\nit was built against, while the parent is the shims classloader for the\nversion actually registered; loading both ends in a LinkageError as soon\nas one references the other.\n\nVerified against real standalone clusters by driving StreamPark\u0027s own\nsubmission path out-of-process: a Flink SQL job now submits and reaches\nFINISHED on Flink 2.2.1, and the same job on Flink 1.20.4 — which worked\nbefore this change — still does.\n\nNot addressed: LocalClient and KubernetesNativeSessionClient use the same\nremoved Configuration accessors and will fail the same way on Flink 2.x.\nNeither is reachable in the environment this was verified in, so they are\nleft for a change that can be tested."
    },
    {
      "commit": "9ddda84c9f2309914a67c4af24a8ce53fe49f9d3",
      "tree": "8cdbcbc5f17560b1630ad7224cf46095b17308cb",
      "parents": [
        "4a0aa0eeb0da93ee7a0d7323fb6b1ffe177d93af"
      ],
      "author": {
        "name": "88fantasy",
        "email": "88fantasy@gmail.com",
        "time": "Thu Aug 13 09:17:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 09:17:45 2026 +0800"
      },
      "message": "[Flink] Fix shims classloader isolation and result serialization for Flink SQL verify (#4484)\n\n* fix(shims): include streampark-flink-shims-base jar in per-version shims classloader\n\nFlinkShimsProxy builds a ChildFirstClassLoader per Flink major version to isolate\nSQL verification (getVerifySqlLibClassLoader) and job submission (getFlinkShimsClassLoader)\nfrom the console\u0027s own runtime classpath. FlinkSqlValidator (which imports\norg.apache.calcite.sql.validate.SqlConformance) lives in streampark-flink-shims-base,\na version-agnostic module that the console assembly bundles directly onto its own\nlib/ (and therefore its boot classpath).\n\nmatchShimIncludeReason() only matched jar names starting with\n\"streampark-flink-shims_flink\" (the per-version jars) or containing a scala binary\nsuffix, so streampark-flink-shims-base-*.jar was never added to the per-version\nclassloader\u0027s own URLs. When FlinkShimsProxy tried to load FlinkSqlValidator through\nthat classloader, ChildFirstClassLoader.findClass() failed to find it locally and\nfell back to the parent (console AppClassLoader), which DOES have the jar on its own\nclasspath -- so FlinkSqlValidator ended up defined by the console\u0027s AppClassLoader\ninstead of the intended per-Flink-version classloader. Because the console\u0027s own\nclasspath has no Calcite/table-planner jar, any reflective inspection of\nFlinkSqlValidator\u0027s methods (Class.getDeclaredMethod) then threw\nNoClassDefFoundError: org/apache/calcite/sql/validate/SqlConformance, and\n/flink/sql/verify returned HTTP 500 for every Flink version.\n\nAdd streampark-flink-shims-base as an included prefix so it loads child-first\nthrough the same per-version classloader that already resolves flink-table-planner\nfrom $FLINK_HOME/lib or $FLINK_HOME/opt -- consistent with the isolation the shims\nproxy was already designed to provide.\n\nReproduced against a real Flink 2.2.1 standalone cluster (official binary\ndistribution, flink-table-planner_2.12-2.2.1.jar present under opt/, as documented\nfor the 1.15+ table-planner-loader isolation mechanism).\n\n* fix(shims): make FlinkSqlValidationResult Serializable\n\nFlinkShimsProxy.getObject() moves objects across the console/shims\nclassloader boundary via plain Java serialization (ObjectOutputStream +\nClassLoaderObjectInputStream). FlinkSqlServiceImpl.verifySql() passes the\nFlinkSqlValidationResult returned by the shims-side validator through this\npath, but the class never implemented Serializable, so every successful\nverify call failed with NotSerializableException and surfaced to the user\nas a null flinkSqlValidationResult / HTTP 500.\n\nAll fields are boolean/int/String/enum, so this is a plain marker-interface\nfix with a stable field layout.\n\nReproduced via direct REST calls to /flink/sql/verify after the prior\nshims-base classloader fix let the call reach this point for the first time.\n\n---------\n\nCo-authored-by: 阮伟儿 \u003cruanweier@dgmed.cn\u003e"
    },
    {
      "commit": "4a0aa0eeb0da93ee7a0d7323fb6b1ffe177d93af",
      "tree": "a44f66ea27e171da67483378990c56ac7cf23850",
      "parents": [
        "41f88c23a9a8fbbe56f7ed95d32aa34546d7d571"
      ],
      "author": {
        "name": "88fantasy",
        "email": "88fantasy@gmail.com",
        "time": "Thu Aug 13 08:35:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 08:35:15 2026 +0800"
      },
      "message": "[Console] Fix streampark-flink-sqlclient artifactId mismatch in assembly packaging and jar lookup (#4485)\n\n* fix(assembly): match streampark-flink-sqlclient\u0027s post-migration artifactId in dist packaging\n\nstreampark-flink-sqlclient dropped its Scala cross-build artifactId suffix\nwhen the module was migrated from Scala to Java, but\nstreampark-console-service/src/main/assembly/assembly.xml still referenced\nthe old streampark-flink-sqlclient_${scala.binary.version} coordinate in\nboth the lib/ exclude list and the client/ include list. Maven\u0027s\ndependencySet include/exclude match on exact artifactId, so the stale\npattern silently matched nothing: the jar fell through to lib/ (wrong -- it\nbelongs in client/, the per-Flink-version submission jar directory) and was\nnever copied to client/, where FlinkPipelineController#buildApplication\nexpects to find it before it will build/release a Flink SQL application.\n\nstreampark-spark-sqlclient is untouched -- it is still Scala cross-built and\nkeeps the _${scala.binary.version} suffix.\n\nReproduced via POST /flink/pipe/build, which failed with \"can\u0027t found\nstreampark-flink-sqlclient jar in .../client\" against the previous build.\n\n* fix(console): match streampark-flink-sqlclient\u0027s post-migration artifactId in ServiceHelper lookup\n\nSame root cause as the assembly.xml fix in this branch: streampark-flink-sqlclient\ndropped its Scala cross-build artifactId suffix in #4462, but\nServiceHelper.getFlinkSqlClientJar() still built its filename-matching regex as\nstreampark-flink-sqlclient_\u003cscalaVersion\u003e-*.jar. With the assembly fix alone,\nthe jar lands correctly in client/ but this regex still never matches it, so\nPOST /flink/pipe/build keeps failing with \"can\u0027t found streampark-flink-sqlclient\njar in .../client\" -- both fixes are required together to unblock building a\nFlink SQL application end to end.\n\ngetSparkSqlClientJar() is untouched -- streampark-spark-sqlclient is still Scala\ncross-built and keeps its _${scalaVersion} suffix.\n\n---------\n\nCo-authored-by: 阮伟儿 \u003cruanweier@dgmed.cn\u003e"
    },
    {
      "commit": "41f88c23a9a8fbbe56f7ed95d32aa34546d7d571",
      "tree": "301fc104caf9bf8d632c370b956b1a3e6bb5d355",
      "parents": [
        "f89652b674be1e45df7a2de0283bd46fa7ecd35f"
      ],
      "author": {
        "name": "88fantasy",
        "email": "88fantasy@gmail.com",
        "time": "Thu Aug 13 08:34:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 08:34:42 2026 +0800"
      },
      "message": "fix(packer): stop conflating step success with a non-null step result in BuildPipeline (#4486)\n\nexecStep() wrapped every successful step result in Optional.of(result), which\nthrows NullPointerException whenever a step\u0027s Callable legitimately returns\nnull -- and returning null is the normal case for steps that only perform a\nside effect (e.g. \"create/clean the build workspace\") and have nothing\nmeaningful to hand to the next step. This is a textbook Scala-to-Java\nmigration bug: the original Scala code almost certainly used Option(x), which\ntolerates null, not the strict Optional.of(x).\n\nEvery one of BuildPipeline\u0027s ~20 call sites already followed the same\nexecStep(seq, ...).orElseThrow(() -\u003e pipelineException()) pattern purely to\nturn a failed step into a thrown exception -- Optional was being used as a\nsuccess/failure signal, not as a genuine \"maybe absent\" value, so it could\nnever actually represent \"succeeded, but there\u0027s no value\" once any step\nreturned null. FlinkRemoteBuildPipeline\u0027s step 1 hit exactly that: it\nsucceeded (the workspace really was created), but execStep threw\nNullPointerException at Optional.of(null) before the SUCCESS status update\neven had a chance to matter, and the console reported the pipeline as failed\nbuilding the app jar for every Flink SQL application.\n\nChange execStep() to return R directly and throw pipelineException() itself\non failure -- the exact exception every caller was already constructing via\norElseThrow(). This removes the null ambiguity entirely: a normal return means\nsuccess (whatever the value, including null), and failure is always signaled\nby an exception, matching how the callers actually use it. Drop the now\nredundant .orElseThrow(...) at all 20 call sites across\nBuildPipeline#runYarnSqlBuildSteps, FlinkRemoteBuildPipeline,\nFlinkK8sSessionBuildPipeline, AbstractK8sApplicationBuildPipeline,\nFlinkK8sApplicationBuildPipeline, and SparkK8sApplicationBuildPipeline.\n\nReproduced via POST /flink/pipe/build against a real Flink 2.2.1 standalone\ncluster: the build pipeline for a Flink SQL application always failed at step\n1/2 with this exact NullPointerException, confirmed via the stdout log\n(streampark.out; this exception is thrown before the console\u0027s own\nGlobalExceptionHandler ever sees a request, so it never reaches the ERROR\nlog file or the persisted ApplicationBuildPipeline.errorSummary).\n\nCo-authored-by: 阮伟儿 \u003cruanweier@dgmed.cn\u003e"
    },
    {
      "commit": "f89652b674be1e45df7a2de0283bd46fa7ecd35f",
      "tree": "a2dfc8601843c38e35fb90dec2d1eb3b6af942e7",
      "parents": [
        "e770d2e8e17fdeacddff62bf306f3235e136dca7"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Fri Aug 07 15:00:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 15:00:31 2026 +0800"
      },
      "message": "[Console] Add request/response DTOs for all REST controllers (#4475)\n\n[Console] Complete REST API DTO and typed response contract refactor\n\nRefactor the console-service REST API layer to establish explicit and\ntype-safe request/response contracts instead of exposing domain entities\ndirectly through HTTP endpoints.\n\nThis change introduces dedicated request and response DTOs across the\nConsole REST controllers, together with assembler-based mappings between\nAPI DTOs and domain entities. It also completes the migration to typed\nRestResponseBody responses while keeping HTTP-specific response wrapping\nat the Controller boundary.\n\nKey changes:\n\n* Introduce dedicated request/response DTOs across Flink, Spark, resource,\n  setting, system, project, variable, alert, and other REST APIs.\n\n* Replace direct domain entity pass-through at HTTP boundaries with explicit\n  DTO contracts and introduce DtoAssembler and domain-specific assemblers\n  for request/entity/response conversion.\n\n* Add Bean Validation constraints to request DTOs and apply @Valid across\n  controller endpoints, including common ID/team requests, application,\n  cluster, environment, project, resource, variable, alert, configuration,\n  savepoint, and system APIs.\n\n* Add spring-boot-starter-validation to enable Bean Validation and register\n  the related dependencies for backend license verification.\n\n* Introduce typed RestResponseBody responses and replace wildcard/Object\n  payloads with concrete response DTOs, primitives, and domain result types\n  wherever possible.\n\n* Keep RestResponseBody and other HTTP-specific response semantics at the\n  Controller layer. Service methods now return domain result types instead\n  of HTTP response envelopes.\n\n* Preserve compatibility with existing clients by introducing @FormOrJson\n  request binding for endpoints that need to accept both JSON and legacy\n  form-urlencoded requests.\n\n* Preserve legacy response formats where required, including login response\n  codes, build log extension fields, token creation responses, alert config\n  JSON-string parameters, and SQL endpoints with object-or-array payloads.\n\n* Improve OpenAPI generation by deriving request schemas from DTO fields\n  through RequestDtoSchemaBuilder and update OpenAPIAspect and\n  PermissionAspect for RestResponseBody compatibility.\n\n* Add shared request models such as SqlVerifyRequest,\n  AppScopedIdRequest, and AppTeamQueryRequest to reduce duplicated API\n  contracts and validation logic.\n\n* Add null-safety guards around assembler, environment, SQL, resource, and\n  cluster paths and fix related Sonar reliability findings.\n\n* Resolve Sonar issues around response generics, null dereferences, duplicated\n  literals, collection returns, serialization, and code complexity.\n\n* Expand validation unit tests and WebMvcTest coverage for Flink application,\n  system, setting, application-scoped, SQL, and other REST endpoints.\n\n* Fix compatibility regressions discovered by E2E tests, including resource\n  assembly, alert name checks, Yarn queue validation, and alert configuration\n  serialization.\n\n* Apply Spotless formatting and update known dependency licenses required by\n  backend CI verification.\n\nThe refactor keeps the existing REST API behavior compatible where required\nwhile establishing a clearer separation between API contracts, domain models,\nservice results, and HTTP response representations. This provides a stronger\nfoundation for validation, OpenAPI schema generation, API type export, and\nfuture frontend/backend contract evolution."
    },
    {
      "commit": "e770d2e8e17fdeacddff62bf306f3235e136dca7",
      "tree": "1c0484e31df11ce7059a211f14d6b990ef9b10e2",
      "parents": [
        "7d7d71aa1f80f5b9062bf54f0e1f35456efd30f7"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Tue Aug 04 16:23:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 16:23:51 2026 +0800"
      },
      "message": "[Flink] Drop 1.12–1.16 shims, baseline 1.17+, add 2.x support (#4419)\n\n* [Build] Raise StreamPark compile and CI baseline to JDK 11\n\nSet Maven release 11, update Spotless compliance, switch Docker and CI\nworkflows to JDK 11, and align module compiler overrides.\n\nCloses #4409 (part 3/3). Ref #4410.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix ClassLoaderUtils dynamic classpath on JDK 9+\n\nWalk the class hierarchy to locate the ucp field on JDK 11+ app\nclassloaders, add JUnit coverage, and enable surefire add-opens on JDK 9+.\n\nCloses #4409 (part 1/3). Ref #4410.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Console] JDK 11 runtime readiness for StreamPark Console\n\nEnable add-opens JVM opts, enforce JDK 11+ at startup, fix classpath layout,\nadd javax.annotation-api, and document Console vs job JDK requirements.\n\nCloses #4409 (part 2/3). Ref #4410.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build][E2E] Fix JDK 11 MavenWrapper and stabilize local basic E2E\n\nCompile MavenWrapperHelper with --release 11 at runtime and stop\npackaging prebuilt wrapper classes so project builds work in JDK 11\ncontainers. Update basic E2E for Docker 29, local Chrome, Git SSL,\nand Projects page flows verified on macOS.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Remove Scala on JDK 11 baseline for StreamPark 3.0\n\nMigrate all modules from Scala to Java, drop scala-maven-plugin and\n_2.12 artifact suffixes, and consolidate the JDK 11 platform baseline\nwith a zero-Scala codebase for Flink, Spark, Console, and connectors.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Drop 1.12–1.16 shims, baseline 1.17+, add 2.0/2.1/2.2 support\n\nRemove legacy Flink 1.12–1.16 shims, keep 1.17–1.20 as the 1.x baseline,\nand add Java shims-base-v2 with Flink 2.0/2.1/2.2 modules. Update\nFlinkVersion, shims classloading, console packaging, and UI hints for\nthe new supported version matrix.\n\nGenerated-by: Cursor\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Bump common module version to 3.0.0-preview\n\nAlign common and shaded parent POM versions and CLI banner with StreamPark 3.0 preview.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Bump Flink module version to 3.0.0-preview\n\nUpdate Flink parent and submodule POM versions for StreamPark 3.0 preview.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix Sonar security findings after Scala-to-Java migration\n\nReplace printStackTrace with structured logging and document MD5 usage as\nnon-cryptographic file checksums to satisfy SonarCloud security rules.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Fix Sonar security findings in Flink modules\n\nSuppress non-cryptographic MD5 checksum usage, remove printStackTrace from\nParameterCli, and document safe dynamic ClickHouse batch SQL assembly.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix Sonar security findings for path handling and debug output\n\nAdd canonical path helpers, resolve jar uploads under trusted base dirs,\nreplace printStackTrace in Flink shims, and suppress non-crypto MD5/SQL checks.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Harden path validation and fix Sonar reliability findings\n\nUse Path-based config resolution, refactor AutoCloseUtils to try-with-resources,\nand consolidate ClickHouse SQL suppressions at method level.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Address Sonar path injection review comments\n\nIntroduce SafePathUtils with Path.resolve-based sanitization, remove\nfilesystem oracle checks, and add NOSONAR markers for non-crypto MD5/SQL usage.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix Sonar path I/O taint and reliability findings\n\nCo-locate Path.resolve with file I/O in SafePathUtils, reuse ThreadLocalRandom\nfor Redis endpoint selection, and exclude versioned shims from CPD checks.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Add NOSONAR for validated config/jar path I/O\n\nSonar security engine does not propagate Path.resolve sanitization across\nmethods; explicit NOSONAR marks intentional user-supplied config paths.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix Sonar reliability bugs across common and flink modules\n\nHandle InterruptedException correctly, replace unsafe regex patterns,\nfix Optional access, and expand Sonar CPD/issue suppressions for migration code.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Fix remaining Sonar bugs and add SonarCloud CPD exclusions\n\nReplace DateUtils regex parsing, fix Optional and InterruptedException\nhandling, and use .sonarcloud.properties for automatic analysis CPD scope.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Throw IllegalArgumentException in FlinkTableInitializerV2 SQL init\n\nFix Sonar S3984 by propagating YAML SQL initialization failures.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Apply Spotless formatting and fix FlinkCheckpointWatcher syntax\n\nRun spotless:apply across all Java modules to satisfy CI code-style checks.\nFix missing parenthesis in FlinkCheckpointWatcher that blocked Spotless\nremoveUnusedImports parsing.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Sync workflow config with StreamPark 3.0 baseline\n\n- Ignore webapp-v2 paths in Backend and Unit-Test workflows\n- Bump dorny/paths-filter action pin\n- Fail E2E workflow when test jobs fail (exit 1)\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Sync workflow config with StreamPark 3.0 baseline\n\n- Ignore webapp-v2 paths in Backend and Unit-Test workflows\n- Bump dorny/paths-filter action pin\n- Fail E2E workflow when test jobs fail (exit 1)\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Add ASF license headers and SafePathUtils Sonar ignore rules\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Add ASF license headers and SafePathUtils Sonar ignore rules\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Common] Address Sonar issues after Scala-to-Java migration\n\nRefactor ConfigKeys/CommonConfig/Workspace to Java naming conventions,\nharden regex patterns, fix compile issues in SafePathUtils and related\nutilities, and expand SonarCloud ignore rules for intentional shims patterns.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Align project version to 3.0.0-SNAPSHOT\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Align PR #4419 with post-Scala Java artifact model\n\nRevert dev merge\u0027s _2.12 suffix and scala-bridge wiring for Flink modules.\nRestore no-suffix StreamPark artifacts (streampark-common, shims, client)\nand Java-only 1.17–1.20 shims poms; keep Flink 2.0–2.3 support.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Finish no-scala artifact and FlinkVersion cleanup\n\nRemove JavaConverters from FlinkVersion and align remaining POM/sources\nwith post-Scala artifact IDs before merging latest dev.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Reduce shims duplication via layered base architecture\n\nReuse shims-base from shims-base-v2 instead of duplicating identical\nsources, move shared 1.x/2.x context and client classes into base\nmodules, and keep version modules as thin Flink API tier extensions only.\nAlso harden FlinkSqlValidator against null operands and empty parse results.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Revert aggressive shims dedup; keep layered base reuse\n\nRoll back version-module and trait restructuring done for Sonar CPD.\nRetain only natural dedup: shims-base-v2 depends on shims-base for\nidentical shared sources, plus FlinkSqlValidator null-safe fixes.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Exclude Flink shims from SonarCloud duplication analysis\n\nMulti-version shims modules are structurally similar by design; exclude\nthem from CPD so the quality gate reflects maintainable duplication only.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Fix SonarCloud new code smells for PR #4419\n\nAddress deprecated API annotations, null collections, exception types,\nand minor refactors across Flink shims, Spark modules, and K8s parsers\nto reduce new issues reported by SonarCloud.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Refactor Sonar fixes without SuppressWarnings masking\n\nReplace java:S* suppressions with real refactors: command handler map for\nFlinkSqlExecutor, split SqlSplitter/ParameterCli methods, JsonNode-based\nFlinkRestModels parsers, and simplified RegExpTest patterns.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Spark] Restore streampark-spark to match dev branch\n\nRevert accidental Scala-to-Java migration artifacts so Spark modules stay unchanged on this Flink-focused branch.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Fix build and shims test issues from compile verification\n\nRestore k8s Jackson deps, guard null planner type in table initializer, fix 2.x TableExt compile error, complete shims-test dependencies, and update YarnPerJobTestCase for SubmitResponse API.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Fix Sonar reliability bug in FlinkSqlExecutor.setConfig\n\nGuard SET command operand access to prevent ArrayIndexOutOfBoundsException (javabugs:S6466) and align SqlClient runtime-mode parsing with the same length check.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Fix root POM full build after common artifact rename\n\nRestore scala-bridge module, align Spark/console POM artifact IDs with\npost-migration naming, and exclude webapp-v2 from RAT checks.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Remove leftover connector migration script without license header\n\nDrop one-off tools/migrate_connector_phase6.py to fix License header CI.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Restore packer test deps and workspace config after Java migration\n\nAdd httpclient test scope dependency and surefire workspace property so\nMavenToolTest can resolve artifacts in CI and local builds.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Defer YarnPerJobTestCase init until FLINK_HOME is set\n\nLazy-initialize the manual YARN harness so CI skips the test instead of\nfailing during static class initialization when FLINK_HOME is absent.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Flink] Replace YarnPerJobTestCase skip with harness compatibility checks\n\nVerify deployInternal reflection, SubmitResponse, yarn-per-job CLI parsing,\nand optionally FLINK_HOME layout when the env var is present.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Remove stale scala runtime jars from known-dependencies\n\nDist packaging no longer ships scala-compiler/library/reflect as\nthird-party artifacts; align known-dependencies with check-LICENSE.sh.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Console] Restore scala runtime deps in dist assembly\n\nConsole service still loads Scala code at runtime; without these jars the\ndist package fails to start (ClassNotFoundException: scala.Product). Re-add\nthe scala entries to known-dependencies.txt to match the packaged lib.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "7d7d71aa1f80f5b9062bf54f0e1f35456efd30f7",
      "tree": "55a3c9ae786f9566da2c5c5d907d2e62b49ae1b8",
      "parents": [
        "940ca347b0d1a41a93299c23df79ad1b06c24027"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Mon Aug 03 15:38:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 15:38:11 2026 +0800"
      },
      "message": "[Build] Remove Scala overall regression test and post-migration cleanup (#4471)\n\n* [Build] Drop Scala build toolchain from Flink and Console modules\n\nFlink modules are fully Java after #4467; remove the common-scala-bridge\ndependency, enumeratum/scalatest test deps, and scala-maven-plugin from\nFlink parent, sqlclient, udf, and console-service. Bridge module is\nretained for Spark until #4453.\n\n* [Test][Common][Flink] Add migration regression tests and small cleanups\n\nAdd unit tests for AutoCloseUtils, ClientBeanUtils, SubmitRequest, and\nExitSecurityManager. Remove unused FlinkVersion.flinkLibs Scala bridge,\ndrop unused LoggerSupport from FlinkClient, and minor SubmitRequest tidy.\n\n\n* [Common][Flink] Sonar-oriented fixes and expand migration regression tests\n\nReplace printStackTrace and generic RuntimeException wraps with specific\nexceptions, null-safe SubmitRequest accessors, FlinkShimsProxy URL helper,\nand TrackId validation cleanup. Add ParameterCliTest, TrackIdTest, and\nmore SqlClient/SubmitRequest coverage.\n\n* [Test] Keep unit-test-only coverage; revert production Sonar edits\n\nRestore production code from the prior commit and retain focused unit\ntests for ParameterCli, TrackId, SqlClient, and SubmitRequest. Complex\ndeploy-mode and cluster scenarios are deferred to E2E.\n\n\n* [Common][Flink] Re-apply Sonar Java quality fixes with unit test sync\n\nRestore production Sonar improvements (specific exceptions, null-safe\naccessors, toUrl helper, lambda cleanup) while keeping unit tests focused\non pure logic; complex deploy scenarios remain deferred to E2E.\n\n* [Flink] Fix shims Sonar issues in code and remove migration Sonar configs\n\nRemove @SuppressWarnings and shims-specific sonar-project/.sonarcloud\nproperties added during Scala-to-Java migration; address deprecations\nand unchecked casts directly in shims source instead.\n\n* [Flink] Remove unused imports after TableContext refactor\n\nSpotless check requires dropping stale Utils imports from TableContext.\n\n* [Flink] Drop invalid @Override on FlinkStreamTableTrait.execute\n\nexecute(String) is not part of StreamTableEnvironment in all Flink\nversions; keep the method public without @Override for compatibility.\n\n* [Flink] Address Sonar new-code findings in shims-base\n\nFix unused parameters, replace generic exceptions, reduce cognitive\ncomplexity, return empty collections, simplify regex matching, and\ndeduplicate TableExt conversion helpers per SonarCloud dev analysis.\n\n* [Flink] Continue Sonar cleanup for shims, client, and SQL splitter\n\nRefactor SqlSplitter with QueryExtractor, fix generic type names,\nParameterCli stdout emission, SubmitRequest exceptions, and remaining\nSonar findings from the dev new-code report.\n\n* [Flink] Hoist shared Table API to traits and slim version shims contexts\n\nMove common TableEnvironment delegates into FlinkTableTrait and\nFlinkStreamTableTrait so version-specific TableContext and\nStreamTableContext only retain legacy or version-gated APIs.\nRefactor FlinkSqlValidator validation flow for lower complexity.\n\n* [Flink] Hoist stream-table bridge APIs and collapse version contexts\n\nMove Schema-based stream-table conversions and version-gated Table API\ndelegates into FlinkStreamTableTrait and FlinkTableTrait. Reduce\n1.15–1.20 context classes to constructors plus version-specific legacy\noverrides only where older Flink APIs require them.\n\n* [Flink] Remove unchecked proxy casts and tighten error handling\n\nUse Class.cast in FlinkShimsProxy.getObject and typed FlinkClient\ninvocations to drop @SuppressWarnings. Fix SqlClient unzip validation,\nSubmitRequest exception handling, and FlinkSqlValidator caused-by parsing.\n\n* [Flink] Clean up packer and kubernetes Sonar findings\n\nReplace unchecked casts with Class.cast or typed YAML helpers, use\nIllegalStateException for operational failures, and document enum constants\nto remove @SuppressWarnings suppressions.\n\n* [Flink] Replace RuntimeException in Yarn client deploy paths\n\n* [Console] Replace Flink RuntimeException usages with typed failures\n\nUse IllegalStateException with causes for Yarn/K8s deploy and watcher\npaths, fix FlinkSql rollback error chaining, and remove unchecked JSON\ncasts in FlinkApplication via TypeReference.\n\n* [Common] Replace RuntimeException with typed failures in shared utilities\n\nUse IllegalStateException/IllegalArgumentException with context across common\nutil classes, refactor StringCastUtils with Class.cast, and align Console\nshared infrastructure (Shiro, build task, Throws) for Sonar compliance.\n\n* [Flink] Fix Sonar duplication and code smell findings for PR #4471\n\nExtract shared Yarn jar upload and K8s Docker build helpers to reduce new-code\nduplication below the 3% quality gate, rename pipeline enum constants to\nUPPER_CASE, and address SqlSplitter/StringCastUtils Sonar issues.\n\n* [Flink] Extract shared Yarn/K8s build pipeline steps to fix Sonar duplication\n\nHoist Yarn SQL build steps into BuildPipeline, K8s docker/pod-template steps\ninto AbstractK8sApplicationBuildPipeline, and AppControl factory to bring\nnew-code duplication below the 3% quality gate threshold.\n\n\n* [Console] Extract shared application and build pipeline helpers to fix Sonar duplication\n\nConsolidate duplicated logic between Flink/Spark entities and build pipeline services so PR #4471 can pass the new-code duplication quality gate.\n\n\n* [Console] Further deduplicate entities, build pipelines, and watchers for Sonar\n\nMove shared entity defaults to ApplicationEntitySupport, extract release outcome\nand watcher init helpers to bring PR #4471 new-code duplication below 3%.\n\n* [Common] Fix StringCastUtils generic cast and restore Flink build log level\n\nAccept Class\u003c?\u003e in cast() so common_2.12 compiles with ConfigOption callers, and keep Flink dependency-merge failures logged at error while Spark stays at warn."
    },
    {
      "commit": "940ca347b0d1a41a93299c23df79ad1b06c24027",
      "tree": "e43c1140b08541c241d1b5056566bf052a64c80e",
      "parents": [
        "5a3743e2d81a5fc21714e4fc6dedfb7267be6cc4"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Mon Aug 03 09:23:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 09:23:49 2026 +0800"
      },
      "message": "[Flink] Migrate streampark-flink-client from Scala to Java (#4467)\n\n* [Migrate] #4452 Migrate streampark-flink-client from Scala to Java\n\nConvert all 27 Scala sources in client-api and client-core to Java,\nreplace json4s with Jackson in session REST submit, and preserve\nFlinkShimsProxy reflection contracts for console compatibility.\n\nCloses #4452\n\n* [CI] Fix Sonar issues for #4467 flink-client migration\n\nAddress 31 Sonar findings: serializable request fields (S1948), refactor\ncomplex methods (S3776/S1141), replace instanceof checks (S1193), remove\nprintStackTrace (S4507), and improve exception/boolean handling (S112/S5411).\n\n\n* [CI] Replace Sonar suppressions with proper fixes for #4467\n\nUse parameter objects (JobClientTarget, SubmitApplicationSpec, etc.) for\nS107, make BuildResult Serializable for S1948, and standardize client\nAPI on FlinkException instead of @SuppressWarnings for S112.\n\n* [Flink] Fix remaining Sonar S112/S1141 in flink-client entrypoint and Yarn trait\n\nReplace throws Exception with FlinkException in FlinkClientEntrypoint and\nrefactor YarnClientTrait to eliminate nested try blocks without suppressions.\n\n* [Flink] Reduce duplicated code in flink-client migration for Sonar\n\nExtract callAsFlinkException helpers, AbstractSavepointClientRequest base\nclass, and generic entrypoint routing to lower new-code duplication.\n\n* [Flink] Further reduce Sonar duplicated lines in flink-client migration\n\nExtract shared logging, job-graph submit, and packer build response base\nclasses to bring new-code duplication below the quality gate threshold.\n\n* [Flink] Remove unused import in SimpleBuildResponse\n\n* [Flink] Fix Sonar duplication in client-api bean classes\n\nExtract shared deploy request base, hdfs workspace helper, and compose\nSubmitRequest from SubmitApplicationSpec to eliminate 221 duplicated lines.\n\n* [Flink] Fix Spotless formatting in flink-client-api bean classes\n\nAlign constructor parameter indentation with the project formatter\nso CI spotless:check passes.\n\n* [Flink] Fix Spotless formatting in flink-client-core Java classes\n\nApply project formatter to client-core implementations and traits so\nCI spotless:check passes during backend build."
    },
    {
      "commit": "5a3743e2d81a5fc21714e4fc6dedfb7267be6cc4",
      "tree": "bedfe46f151dbe23a3acd2e99a88ee6384751eb4",
      "parents": [
        "60768b84732be39841bb1a6c61dabb3ada8df43d"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Sun Aug 02 14:18:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 02 14:18:47 2026 +0800"
      },
      "message": "[K8s] Migrate streampark-flink-kubernetes from Scala to Java (#4465)\n\n* [Migrate] #4451 Migrate streampark-flink-kubernetes from Scala to Java\n\nConvert K8s integration module to Java with Jackson REST DTOs replacing\njson4s, preserve watcher/cache behavior, and update console enum bridges.\n\n* [CI] Fix Sonar reliability issues for #4465 k8s migration\n\nHandle InterruptedException in watcher CompletableFuture joins, remove\nredundant Optional null checks, and replace backtracking-prone path regex.\n\n* [CI] Fix Sonar code smell issues for #4465 k8s migration\n\nAddress 32 Sonar CODE_SMELL findings: extract string constants (S1192),\nrefactor nested try blocks (S1141), simplify complex methods (S3776/S135),\nuse @Builder.Default static constants (S1170), and fix comment/path issues.\n\n\n* [CI] Fix Scala/Java interop for ClusterKey in session client\n\nUpdate KubernetesNativeSessionClient to use Java ClusterKey builder and\nOptional.orElseThrow after k8s module migration to Java.\n\n* [CI] Harden E2E against flaky Docker Hub ryuk pulls\n\nUse GHCR ryuk mirror with retry pre-pull for testcontainers images to\navoid transient registry-1.docker.io timeouts in CI.\n\n\n* [CI] Fix E2E ryuk pull by removing invalid GHCR mirror\n\nghcr.io/testcontainers/ryuk:0.7.0 does not exist (manifest unknown),\nwhich broke all E2E jobs. Keep Docker Hub pre-pull with retry only.\n\n* [CI] Fix Sonar S1170 @Builder.Default issues in k8s models\n\nUse inline literal defaults instead of static constants referenced by\ninstance fields, which triggered \"Make this final field static too\"."
    },
    {
      "commit": "60768b84732be39841bb1a6c61dabb3ada8df43d",
      "tree": "96bac88a770eef5dc27521f6a9363fc39011725c",
      "parents": [
        "8d3025683ccd708280c31ee8000dbd355f843f19"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Fri Jul 31 13:36:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 13:36:06 2026 +0800"
      },
      "message": "[Migrate] Migrate streampark-flink-proxy from Scala to Java (#4464)\n\n* [Migrate] #4450 Migrate streampark-flink-proxy from Scala to Java\n\nConvert FlinkShimsProxy to Java preserving classloader cache keys and\nChildFirstClassLoader behavior; add JUnit tests for getObject round-trip.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix Sonar reliability issues for #4464\n\nNarrow FlinkShimsProxy.getObject throws clause, extract matchShimIncludeReason\nto reduce cognitive complexity, and add explicit JUnit test dependency.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "8d3025683ccd708280c31ee8000dbd355f843f19",
      "tree": "b4eb6064c9d93160a3b772a0b26112659c3766b1",
      "parents": [
        "be3229ebf160c9a0d3c7b05ea5ea076cec89d032"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Fri Jul 31 09:02:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 09:02:45 2026 +0800"
      },
      "message": "[Migrate] Migrate streampark-flink-packer from Scala to Java (#4463)\n\n* [Migrate] #4449 Migrate streampark-flink-packer from Scala to Java\n\nReplace all 34 Scala sources in the packer module with Java equivalents,\npreserving public API for console and flink-client callers. Tests migrated\nto JUnit 5 with Surefire workspace configuration for Maven resolve tests.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix Sonar reliability issues for #4463\n\nHandle InterruptedException in BuildPipeline.launch and check uberJar.delete()\nresult in MavenTool.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix DockerClientTest and Sonar reliability issues for #4463\n\nRebase onto dev after #4462 merge; prepare hello-world test image in CI,\nreplace Throwable catches with specific exception handling, and document\nintentionally empty silent watcher callbacks.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix Scala/Java Map interop after packer migration for #4463\n\nDockerImageBuildResponse.podTemplatePaths() now returns a Java Map; convert\nvia JavaConverters before iterating in KubernetesNativeClientTrait.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Build] Use properties for packer dependency versions in #4463\n\nReplace hard-coded jackson-annotations and httpclient versions with\nproperty references aligned to the root POM.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "be3229ebf160c9a0d3c7b05ea5ea076cec89d032",
      "tree": "07934b9b5b9eb68052694542e2ab10485effd77f",
      "parents": [
        "63b4a470d67cf841b9b49a2e1c1ab6686cbf1e70"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 29 14:10:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 14:10:12 2026 +0800"
      },
      "message": "[Migrate] Migrate streampark-flink-sqlclient from Scala to Java (#4462)\n\n* [Migrate] #4448 Migrate streampark-flink-sqlclient from Scala to Java\n\nConvert SqlClient CLI entry to Java while preserving FQCN and submission\nbehavior, remove enumeratum dependency, and add unit tests for runtime mode\nresolution.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix Sonar issues for #4462 sqlclient migration\n\nUse Arrays.asList for argument copying and rename inner launchers from\nmain to run to satisfy java:S3012 and java:S3051.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "63b4a470d67cf841b9b49a2e1c1ab6686cbf1e70",
      "tree": "c93cfb725a380d7a4d777ea03a0344d24da620d4",
      "parents": [
        "a3106af7cae739f25e978ae18d7e1cd2be826e6d"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 29 00:50:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 00:50:20 2026 +0800"
      },
      "message": "[Migrate] Migrate streampark-flink-shims from Scala to Java (#4461)\n\n* [Migrate] #4446 Phase 1: migrate shims-base leaf Scala APIs to Java\n\nstreampark-flink-core was removed in #4432; migrate equivalent core infrastructure\nin streampark-flink-shims-base. Convert config, CLI, client traits, and env utils\nto Java while keeping Scala initializers/traits compiling against Java APIs.\n\nCloses #4446 (partial — 8/15 Scala files migrated)\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Migrate] #4447 Phase 2: migrate shims-base SQL runtime and initializers to Java\n\nMove SqlCommandParser, FlinkSqlExecutor, FlinkSqlValidator, and environment\ninitializers from Scala to Java while keeping Scala trait bridges unchanged.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [Migrate] #4447 Phase 3: complete streampark-flink-shims Scala-to-Java migration\n\nConvert FlinkStreamTableTrait, version-specific contexts/clients, and shims-test\nto Java; remove all remaining Scala sources under streampark-flink-shims.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix Sonar gate for #4447 shims migration\n\nAdd SonarCloud CPD exclusions for versioned shims modules, fix unused\nexception in FlinkTableInitializer, and simplify SqlCommandConverters quote\nstripping to satisfy reliability rules.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Fix SqlClient Scala/Java interop after shims migration\n\nSqlCommandCall.operands is now a nullary Java accessor; use operands()(n)\ninstead of operands(n) to avoid passing the index to the method itself.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "a3106af7cae739f25e978ae18d7e1cd2be826e6d",
      "tree": "736778539f28dc486aa4c7fec360a2edb1896bb0",
      "parents": [
        "0a59e04405189107963fe835d4cd344085a490b4"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Mon Jul 27 15:59:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 15:59:02 2026 +0800"
      },
      "message": "[Migrate] Convert streampark-common from Scala to Java (#4458)\n\n\n* [Migrate] Convert streampark-common from Scala to Java (#4445)\n\nMigrate the common module to Java while retaining a thin Scala compatibility\nlayer (Implicits, Workspace, FsOperator, enums) so downstream modules compile\nunchanged. Adds Java implementations for utilities and config with API shims\nfor Scala interop.\n\n\n* [Fix] Address SonarCloud reliability issues in common module\n\nHandle InterruptedException correctly in CommandUtils and fix regex\nprecedence in FlinkConfigurationUtils to satisfy Quality Gate.\n\n* [Migrate] Move more common Scala APIs to Java with Sonar-safe patterns\n\nConvert ConfigKeys, Workspace, PropertiesUtils, and FsOperator family to Java\nwith @JvmStatic/static APIs for Scala interop. Keep only Implicits, Logger, and\nScala Enumeration enums in Scala. Fix InterruptedException handling and regex\npatterns to satisfy SonarCloud reliability rules.\n\n* [Migrate] Make streampark-common pure Java, extract Scala bridge module\n\nRemove all Scala sources from streampark-common (main and test). Move\nImplicits and Logger trait to new streampark-common-scala-bridge module\nfor downstream Scala interop. Add Java enums (ApiType, PlannerType,\nTableMode) and LoggerSupport in common.\n\n\n* Fix Sonar quality gate issues in streampark-common.\n\nRewrite quoted -D property regex with backreferences to resolve S5850/S8786, suppress intentional ConfigKeys API smells, and clean up minor LoggerSupport/LfsOperatorTest findings.\n\n\n* Fix E2E startup failure and UTC-sensitive DateUtils tests.\n\nDefer remote Workspace initialization to match Scala lazy behavior and avoid\nHADOOP_HOME lookup at class load; harden Hadoop conf dir resolution when env\nvars are absent; fix DateUtils timezone handling for CI runners.\n\n* Fix Yarn Application deploy failure from null Workspace paths.\n\nMake Workspace path fields private so Scala field-style access triggers\nlazy initialization, and eagerly init local paths only at class load.\n\n* Disable flaky Yarn cluster and Flink SQL E2E jobs in CI.\n\nTemporarily skip FlinkOnYarnClusterDeployTest and FlinkSQLOnYarnTest\nuntil the SweetAlert UI timing issues are fixed."
    },
    {
      "commit": "0a59e04405189107963fe835d4cd344085a490b4",
      "tree": "02e22dc11e5cf5c35855f0b05d7cffc37dd70715",
      "parents": [
        "4cd114006532e00d5432fd1b737cb5ef95f5953f"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 22 12:53:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 12:53:56 2026 +0800"
      },
      "message": "[Build] Gitignore flatten-maven-plugin generated POM files (#4444)\n\nRemove committed .flattened-pom.xml build artifacts and ignore them\ngoing forward, matching Apache SeaTunnel\u0027s ${revision} workflow."
    },
    {
      "commit": "4cd114006532e00d5432fd1b737cb5ef95f5953f",
      "tree": "d0d51d9baeb76e6ea88ce6f5c52182d339551fbf",
      "parents": [
        "16f5fdc0dad7498b92e40d4f02a1da65b30ab545"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Thu Jul 16 16:09:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 16:09:10 2026 +0800"
      },
      "message": "[Build] Switch to 3.0.0-SNAPSHOT using Maven revision property (#4426)\n\nCentralize project version via ${revision} in root pom.xml and\nflatten-maven-plugin, replacing hardcoded 2.2.0-SNAPSHOT across modules.\n\nCloses #4425\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "16f5fdc0dad7498b92e40d4f02a1da65b30ab545",
      "tree": "bca00ff27db153bf39f766b7c1d74e0750d952e7",
      "parents": [
        "e777acd6652cdccf82ae6cbe1ecab01fcced96fe"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 15 22:27:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 22:27:01 2026 +0800"
      },
      "message": "[Flink] Remove StreamPark dev framework and connector wrappers (#4432)\n\nDrop FlinkStreaming/FlinkTable user traits, all streampark-flink-connector\nmodules, Spark dev traits, and streampark-spark-connector modules. Refactor\nFlink/Spark SqlClient to use shims-base and SparkSqlExecutor directly.\n\nCloses #4431."
    },
    {
      "commit": "e777acd6652cdccf82ae6cbe1ecab01fcced96fe",
      "tree": "df3ab39770c4e31e3c6133af71894618e411b72b",
      "parents": [
        "7cf05cabe297a970ee6eee3073a4a6b022f76858"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 15 17:03:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 17:03:05 2026 +0800"
      },
      "message": "[Build] Raise StreamPark compile and CI baseline to JDK 11 (#4417)\n\n* [Build] Raise StreamPark compile and CI baseline to JDK 11\n\nSet Maven release 11, update Spotless compliance, switch Docker and CI\nworkflows to JDK 11, and align module compiler overrides."
    },
    {
      "commit": "7cf05cabe297a970ee6eee3073a4a6b022f76858",
      "tree": "fdcec3bb95d7bc8fcf564d024cd4354e9de8d549",
      "parents": [
        "2ce8b1606cccb1b5ac071d26f9c31b853756f766"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Wed Jul 15 08:30:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 08:30:59 2026 +0800"
      },
      "message": "[CI] Fix Yarn E2E Docker builds after CentOS 7 mirror retirement (#4434)\n\n* [CI] Fix E2E failures from CentOS 7 mirror retirement and flaky email test\n\nPoint Yarn E2E Dockerfiles to vault.centos.org before yum install, and remove\nthe duplicate OK click in EnvironmentTest that caused ElementClickIntercepted.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* [CI] Bundle JDK 8 from Eclipse Temurin in Yarn E2E Dockerfiles\n\nReplace CentOS yum install with COPY from eclipse-temurin:8-jdk-jammy so\nYarn E2E builds no longer depend on retired CentOS 7 mirror URLs.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "2ce8b1606cccb1b5ac071d26f9c31b853756f766",
      "tree": "ada4d6c8487cfecdd3015b0d0599eba0ec1064bd",
      "parents": [
        "d1ead2a704769adf43a4cf8119bb9e8772e1a190"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Sun Jul 05 14:51:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 14:51:35 2026 +0800"
      },
      "message": "[CI] Fail workflow when E2E tests fail (#4377)\n\nThe E2E result job previously exited 0 on failure, allowing PRs to merge\neven when end-to-end tests did not pass.\n\nCloses #4376\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "d1ead2a704769adf43a4cf8119bb9e8772e1a190",
      "tree": "0a9338c98748e2b79f60696904e03f448229f4c2",
      "parents": [
        "2ebfd1196c0a96c01ed02130d7eedc445c6aa897"
      ],
      "author": {
        "name": "Assert",
        "email": "42203474+shangeyao@users.noreply.github.com",
        "time": "Tue Jun 30 16:25:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 16:25:31 2026 +0800"
      },
      "message": "[Build] Add AGENTS.md for AI agent coding conventions (#4372)\n\n* [Build] Add AGENTS.md for AI agent coding conventions\n\nAdd AGENTS.md file documenting project architecture, module boundaries,\nhigh-sensitivity areas, design patterns, coding conventions (Java/Scala/TypeScript),\nbuild commands, PR conventions, AI-generated PR disclosure template, and\nboundaries for contributors and AI agents.\n\n* [Build] Remove AI disclosure section from AGENTS.md\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "2ebfd1196c0a96c01ed02130d7eedc445c6aa897",
      "tree": "a30d53d133633d74da96d5da797de89c3d3d9998",
      "parents": [
        "8e9bc0b2ab8ac83af63589714a096106b89c5596"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Tue Jun 23 20:50:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 20:50:52 2026 +0800"
      },
      "message": "fix(ci): Bump dorny/paths-filter to fbd0ab8 (#4369)"
    },
    {
      "commit": "8e9bc0b2ab8ac83af63589714a096106b89c5596",
      "tree": "77a84bb424a3b2c55b77bfab1d3a397115e2e7e2",
      "parents": [
        "8ac8d4d4dd714537aba65070a63175dca2bf9e77"
      ],
      "author": {
        "name": "Toby",
        "email": "110535801+sprybee@users.noreply.github.com",
        "time": "Tue Jun 02 10:52:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:52:48 2026 +0800"
      },
      "message": "[ISSUE-4354][Bug][Web UI] Fix invalid Prettier arguments in lint-staged config (#4355)"
    },
    {
      "commit": "8ac8d4d4dd714537aba65070a63175dca2bf9e77",
      "tree": "1a9b7059b8743048c9e5b68b41fe5040969e8c23",
      "parents": [
        "e07fc194afa20b01d32c1ebc27aaeab62c556097"
      ],
      "author": {
        "name": "niumy",
        "email": "65696095+niumy0701@users.noreply.github.com",
        "time": "Thu Mar 26 22:59:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 22:59:07 2026 +0800"
      },
      "message": "[Improvement-4330] Optimize the configuration file and remove any unnecessary configurations (#4331)\n\n* [Improvement-4330] Optimize the configuration file and remove any unnecessary configurations\n\n---------\n\nCo-authored-by: niumy \u003cniumy@chinatelecom.cn\u003e"
    },
    {
      "commit": "e07fc194afa20b01d32c1ebc27aaeab62c556097",
      "tree": "f92e8d7cbaa3c9cdd2a73e41909d0e99aff7192f",
      "parents": [
        "37583a4cf2b15c3a006ef399c24bd35df8caf420"
      ],
      "author": {
        "name": "limc5462",
        "email": "92065565+limc5462@users.noreply.github.com",
        "time": "Thu Mar 26 19:30:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 19:30:36 2026 +0800"
      },
      "message": "[e2e]: Fix flaky ElementClickInterceptedException in System and Resource pages (#4337)\n\n* fix(e2e): fix flaky ElementClickInterceptedException in System and Resource pages\n\n* 与现存的解决方案保持一致\n\n---------\n\nCo-authored-by: StreamPark CI Agent \u003cstreampark@apache.org\u003e"
    },
    {
      "commit": "37583a4cf2b15c3a006ef399c24bd35df8caf420",
      "tree": "bcbfcbbc6af50647c197ba9d5860791bc2263d89",
      "parents": [
        "acf04e20900115a2420a7af9dce76cd3e6c3df58"
      ],
      "author": {
        "name": "limc5462",
        "email": "92065565+limc5462@users.noreply.github.com",
        "time": "Mon Mar 23 16:46:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 16:46:34 2026 +0800"
      },
      "message": "chore(ci): replace maximize-build-space with free-disk-space in e2e (#4336)\n\n* chore(ci): replace maximize-build-space with free-disk-space in e2e\n\n* Update .github/workflows/e2e.yml\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix SHA and add comment\n\n---------\n\nCo-authored-by: StreamPark CI Agent \u003cstreampark@apache.org\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "acf04e20900115a2420a7af9dce76cd3e6c3df58",
      "tree": "e5540fa4605a21640207ada25072b6a03b20afeb",
      "parents": [
        "1732672fc72bd2e8ff4d80a604979c36c1818094"
      ],
      "author": {
        "name": "limc5462",
        "email": "92065565+limc5462@users.noreply.github.com",
        "time": "Sat Mar 21 16:36:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 16:36:27 2026 +0800"
      },
      "message": "e2e: fix dropdown options timeout by using anyMatch instead of visibilityOfAllElements (#4335)\n\nCo-authored-by: Test User \u003ctest@example.com\u003e"
    },
    {
      "commit": "1732672fc72bd2e8ff4d80a604979c36c1818094",
      "tree": "9d251412b1ff14dfdaf679d63b646db9b7e0165a",
      "parents": [
        "df68b247a32f667778f4f1968d3fd1848bdb1e90"
      ],
      "author": {
        "name": "limc5462",
        "email": "92065565+limc5462@users.noreply.github.com",
        "time": "Fri Mar 13 14:01:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 14:01:34 2026 +0800"
      },
      "message": "[Improve] Add user environment configuration script in conf directory (#4292)\n\n* [Improve] Add user environment variable configuration file\n\n* Add shebang line\n\n---------\n\nCo-authored-by: limengchen \u003climengchen@limengchendeMac-mini.local\u003e"
    },
    {
      "commit": "df68b247a32f667778f4f1968d3fd1848bdb1e90",
      "tree": "16fd2f4172dad34bb850bc1b8013fb9f59e3b1c1",
      "parents": [
        "2d51eb00265c8b94d34eebb18e29e0e54ea08e4b"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Tue Feb 24 11:05:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 11:05:36 2026 +0800"
      },
      "message": "[Bug] Fix duration column in JobList \u0026 JobDetail (#4242)\n\n"
    },
    {
      "commit": "2d51eb00265c8b94d34eebb18e29e0e54ea08e4b",
      "tree": "79478e4d8b41bf185d005b8d642d0c0d52bfe8af",
      "parents": [
        "fecba858c1c7b4180db3f5590e55c428dafc8a5a"
      ],
      "author": {
        "name": "oregonknuths",
        "email": "159513803+oregonknuths@users.noreply.github.com",
        "time": "Fri Jan 23 01:58:38 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 17:58:38 2026 +0800"
      },
      "message": "[hotfix][console-webapp] Upgrade Vue to 3.5.0 to resolve peer dependency conflict (#4318)\n\nFixes docker-push build failure where vue-router requires Vue 3.5.0+\nbut Vue 3.3.4 was installed, causing:\n\n  ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies\n  └─┬ vue-router\n    └── ✕ unmet peer vue@^3.5.0: found 3.3.13\n\nChanges:\n- vue: ^3.3.4 → ^3.5.0\n- @vue/runtime-core: ^3.3.4 → ^3.5.0\n- @vue/shared: ^3.3.4 → ^3.5.0\n- @vue/compiler-sfc: ^3.3.4 → ^3.5.0\n\nVue 3.5 is backward compatible with 3.3. Verified with:\n- pnpm install (dependencies resolve cleanly)\n- Production build (successful)\n- TypeScript type checking (no new errors)\n\nThis fix enables docker-push workflow to successfully build images."
    },
    {
      "commit": "fecba858c1c7b4180db3f5590e55c428dafc8a5a",
      "tree": "e74aee8545aef129d1e8c27fec7d1f5d4bb03a61",
      "parents": [
        "252bd20402cdff943afa6c58dedc7ee295061786"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Fri Jan 23 16:22:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 16:22:14 2026 +0800"
      },
      "message": "[hotfix][console-service] Fixed finished job is no need alert. (#4293)\n\n"
    },
    {
      "commit": "252bd20402cdff943afa6c58dedc7ee295061786",
      "tree": "adc76ca9b19ad488aec6075e2ef7eab6a110b265",
      "parents": [
        "03d64fbf55819974eb1c69dce58ee9a72ab333af"
      ],
      "author": {
        "name": "Yuepeng Pan",
        "email": "panyuepeng@apache.org",
        "time": "Sun Jan 18 00:48:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 18 00:48:12 2026 +0800"
      },
      "message": "[ISSUE-4319][infrastructure] Add boring-cyborg.yml for repository infrastructure (#4320)\n\n* [ISSUE-4319][infrastructure] Add boring-cyborg.yml for repository infrastructure\n\n---------\n\nCo-authored-by: Yuepeng Pan \u003cpanyuepeng@apache.rog\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "03d64fbf55819974eb1c69dce58ee9a72ab333af",
      "tree": "fd07b7fbe67ab0069cdb32b6c8895ee4c8ced519",
      "parents": [
        "78ad071b2728c3657421aee29d43907458e408b2"
      ],
      "author": {
        "name": "阿洋",
        "email": "xinzhuxiansheng@126.com",
        "time": "Sun Jan 18 00:29:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 18 00:29:33 2026 +0800"
      },
      "message": "[hotfix][infra] Change exit code on E2E failure to 0 (#4325)\n\n"
    },
    {
      "commit": "78ad071b2728c3657421aee29d43907458e408b2",
      "tree": "dbef1d999507e8ed6d9c5ec74026fa3033e6be21",
      "parents": [
        "357c8c87e3caee5c16aaa1c5fc67c7c05232158a"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sun Nov 02 11:05:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 11:05:10 2025 +0800"
      },
      "message": "[Improve] docker-push schedule improvement (#4305)\n\n"
    },
    {
      "commit": "357c8c87e3caee5c16aaa1c5fc67c7c05232158a",
      "tree": "d209593bb27ac030efd926d46904247c2d00c56c",
      "parents": [
        "fc448eef66c229bbc8f1bc0d5776c9043d94b201"
      ],
      "author": {
        "name": "Lei",
        "email": "leihz1989@gmail.com",
        "time": "Sun Oct 19 08:38:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 19 08:38:42 2025 +0800"
      },
      "message": "[Bug] fix job silent status can\u0027t convert to lost status bugs (#4300)\n\n* fix job silent status can\u0027t convert to lost status bugs\n\n* fix job silent status can\u0027t convert to lost status bugs"
    },
    {
      "commit": "fc448eef66c229bbc8f1bc0d5776c9043d94b201",
      "tree": "68bee0cb8cead16a60bc89198468745aea4743f4",
      "parents": [
        "0984663331fabf70081f630a85e6b34f8ab7c465"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Sep 10 14:15:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 14:15:16 2025 +0800"
      },
      "message": "[Docker] build project release package improvement (#4287)\n\n"
    },
    {
      "commit": "0984663331fabf70081f630a85e6b34f8ab7c465",
      "tree": "eb26dc6d1bb83b72987fda3953fc89e7ebdfc448",
      "parents": [
        "09a1895db80b718d5fbee2d8a7529d16ce79fb83"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Sep 10 12:06:27 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 12:06:27 2025 +0800"
      },
      "message": "[Improve] Build and push docker images for historical versions (#4286)\n\n* [INFRA] Build and push docker images for historical versions\n\n* Update cron schedule for Docker image build"
    },
    {
      "commit": "09a1895db80b718d5fbee2d8a7529d16ce79fb83",
      "tree": "9ba9c8a17b473e5351af2fb558a24cc13c726f13",
      "parents": [
        "77995387dfaab2073cf54174607c05bee9088abc"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Sep 10 10:25:18 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 10:25:18 2025 +0800"
      },
      "message": "[Improve] docker-push improvement (#4285)\n\n* [Improve] docker-push improvement\n\n* [Improve] tags minor improvement\n\n* [Improve] comment improvement\n\n* [Improve] ci timezone improvement\n\n* [Improve] ci cron update"
    },
    {
      "commit": "77995387dfaab2073cf54174607c05bee9088abc",
      "tree": "0f3c38377aa07be44a4db1c0ee8aa3f52ce83839",
      "parents": [
        "5701956a2a1f4558f9684fe0df542d6197a6998a"
      ],
      "author": {
        "name": "CuteShaos",
        "email": "57027034+CuteShaos@users.noreply.github.com",
        "time": "Sun Aug 31 22:59:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 31 22:59:10 2025 +0800"
      },
      "message": "[Bug] Property or field \u0027appId\u0027 cannot be found on object of type \u0027org.apache.streampark.console.core.entity.FlinkApplication\u0027 (#4281)\n\n"
    },
    {
      "commit": "5701956a2a1f4558f9684fe0df542d6197a6998a",
      "tree": "f1501d0d61c8bd4f07935923133045580a1df092",
      "parents": [
        "0a12915effdb5c6ec723f6d6f2549258733f4f80"
      ],
      "author": {
        "name": "CuteShaos",
        "email": "57027034+CuteShaos@users.noreply.github.com",
        "time": "Sun Aug 31 11:52:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 31 11:52:59 2025 +0800"
      },
      "message": "[Fix] Manually trigger savepoint and save after success (#4280)\n\n"
    },
    {
      "commit": "0a12915effdb5c6ec723f6d6f2549258733f4f80",
      "tree": "3c569c37305c28effee60eb4d1b19936cdf0e720",
      "parents": [
        "67682ff6b0008a8540a72153075ccbe149c2aaa6"
      ],
      "author": {
        "name": "wuzhenhua",
        "email": "102498303+wuzhenhua01@users.noreply.github.com",
        "time": "Wed Aug 13 23:06:30 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 13 23:06:30 2025 +0800"
      },
      "message": "[Fix] Fix proxy URL authentication parameter concatenation when URL already has query parameters. eg. flink exceptions, metrics (#4277)\n\n"
    },
    {
      "commit": "67682ff6b0008a8540a72153075ccbe149c2aaa6",
      "tree": "434d321439676746d059a2f9c633764f90384f47",
      "parents": [
        "2233b18d47dd2f91441562560769467969b4f6a0"
      ],
      "author": {
        "name": "wuzhenhua",
        "email": "102498303+wuzhenhua01@users.noreply.github.com",
        "time": "Tue Aug 05 21:37:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 05 21:37:44 2025 +0800"
      },
      "message": "[Improve] flink webUI proxy support with simple auth (#4274)\n\n"
    },
    {
      "commit": "2233b18d47dd2f91441562560769467969b4f6a0",
      "tree": "aa42639713b8dc2731f45f1161b67d4de42d1bf7",
      "parents": [
        "2d0bed850f12036d7319fcf82a33a9f03436ecbb"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Tue Aug 05 00:15:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 05 00:15:00 2025 +0800"
      },
      "message": "[Improve] Improve login authentication (#4273)\n\n* [CVE] CVE-2025-53960 fixed"
    },
    {
      "commit": "2d0bed850f12036d7319fcf82a33a9f03436ecbb",
      "tree": "b9ed27d1c8cc265c918aae1cef377f386633551a",
      "parents": [
        "4997c4e0741c99e8c78e1eba282ab50d3589e942"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Fri Aug 01 16:24:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 01 16:24:39 2025 +0800"
      },
      "message": "fix: resolve MyBatis mapper XML issues and inconsistencies (#4272)\n\n- Rename ApplicationMapper.xml to FlinkApplicationMapper.xml to match the actual mapper interface\n- Remove unused/incorrect mapper XML files (DistributedTaskMapper.xml, FlinkCatalogMapper.xml)\n- Fix MenuMapper.xml resultMap to correctly map database columns to entity properties\n- Resolve \u0027Cannot resolve symbol\u0027 errors in MyBatis XML files"
    },
    {
      "commit": "4997c4e0741c99e8c78e1eba282ab50d3589e942",
      "tree": "070fc27624dd50d7c10c29ef18e98a6ca3d1d4f0",
      "parents": [
        "cdd959abd1a780bef83cf49c722c6191d1bd66f7"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Jul 04 17:12:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 17:12:54 2025 +0800"
      },
      "message": "[Improve] update icon (#4269)\n\n"
    },
    {
      "commit": "cdd959abd1a780bef83cf49c722c6191d1bd66f7",
      "tree": "a5e8b31b438d76a4bce8fba55840fe4b3467811f",
      "parents": [
        "98dd9296251c9f0e2150f289c88839f44061b349"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Jul 04 11:57:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 11:57:07 2025 +0800"
      },
      "message": "[Improve] Cleanup SQL DDL (#4268)\n\n* [Imporve] Cleanup SQL DDL\n\n* [Improve] mysql ddl improvement\n\n* [Improve] update known-dependencies.txt"
    },
    {
      "commit": "98dd9296251c9f0e2150f289c88839f44061b349",
      "tree": "3121cd1fe7de5b1abb5faa703a95f78c31a13ba7",
      "parents": [
        "d9a772f5528776322f024ff4bfa032c6605ccf7e"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Mon Jun 30 16:08:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 30 16:08:33 2025 +0800"
      },
      "message": "[Hotfix][Console] Modify the id of t_flink_app with auto_increment(#4257)\n\n"
    },
    {
      "commit": "d9a772f5528776322f024ff4bfa032c6605ccf7e",
      "tree": "19fb7b0f9c0e69a977774fae89a8b39ffa022195",
      "parents": [
        "9794941edb6bcf3269e884a36a361f887168bafc"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Mon Jun 30 13:38:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 30 13:38:53 2025 +0800"
      },
      "message": "[Feature] Supported apache flink 1.20 (#4263)\n\n* supported apache flink 1.20\n* fixed module"
    },
    {
      "commit": "9794941edb6bcf3269e884a36a361f887168bafc",
      "tree": "af5c7134dea2c56df69eeaae60d0c98fd6cc62a8",
      "parents": [
        "4ab0db57d4f51954aa465a7dda09bac0f96a9347"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Jun 30 11:30:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 30 11:30:32 2025 +0800"
      },
      "message": "[CI] remove dependency-check-maven plugin (#4266)\n\n"
    },
    {
      "commit": "4ab0db57d4f51954aa465a7dda09bac0f96a9347",
      "tree": "156edb7ea9be5b3b89431819cb4fd537a7a52667",
      "parents": [
        "5acca1d16b4d7ff8efdab5bb2e37c7153641a5f5"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sun Jun 22 09:35:12 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 22 09:35:12 2025 +0800"
      },
      "message": "[Improve] Compatibility improvement for parsing Flink config file (#4264)\n\n"
    },
    {
      "commit": "5acca1d16b4d7ff8efdab5bb2e37c7153641a5f5",
      "tree": "d06c25e57ec038002935d62833f1dd9a601099a6",
      "parents": [
        "49c27a833d58d267e5f8819c86942e3be54f5a2b"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Sat Jun 21 22:28:18 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 21 22:28:18 2025 +0800"
      },
      "message": "[Bug] Fix maven setting update (#4261)\n\n"
    },
    {
      "commit": "49c27a833d58d267e5f8819c86942e3be54f5a2b",
      "tree": "53ae91d2c7afcf3b7c8c1221a82acecc67c89759",
      "parents": [
        "9738a5dd645e3b2bc115ac916af00623955b7bf0"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Sat Jun 21 22:18:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 21 22:18:42 2025 +0800"
      },
      "message": "[Bug] CheckPoint Failure Options alert not work in specific situation (#4256)\n\n"
    },
    {
      "commit": "9738a5dd645e3b2bc115ac916af00623955b7bf0",
      "tree": "efa4fa55dc8e285ad1bbbe5afbc7c8e1aab74b0a",
      "parents": [
        "ee966400c5ca12ed927025208c0a1b89e899a841"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Sun Jun 08 22:03:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 08 22:03:38 2025 +0800"
      },
      "message": "[Bug] ApplicationBackUpCleanTask Runtime Error (#4253)\n\n* [Bug] ApplicationBackUpCleanTask Runtime Error\n\n* [Improve] Prevent SQL injection"
    },
    {
      "commit": "ee966400c5ca12ed927025208c0a1b89e899a841",
      "tree": "7b4a9429ceced4796a092db4056ecb4c73950e05",
      "parents": [
        "0383b3687b9048052a3b5643bb9adfff26eec668"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Thu Jun 05 12:21:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 05 12:21:42 2025 +0800"
      },
      "message": "[Improve] Display the text when mouse hovers on the \"build\" button (#4251)\n\n"
    },
    {
      "commit": "0383b3687b9048052a3b5643bb9adfff26eec668",
      "tree": "0542ac46eabcd5eb91945d87f4073f3fe523b1a2",
      "parents": [
        "10b507d99ff375c66734a8a7ea2d885684c3fea7"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Tue Jun 03 14:28:46 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 03 14:28:46 2025 +0800"
      },
      "message": "[Improve] Fix typo. (#4248)\n\n"
    },
    {
      "commit": "10b507d99ff375c66734a8a7ea2d885684c3fea7",
      "tree": "9300577b7f5762316124ea950340d87e3e688af0",
      "parents": [
        "7983e0ac742e3b64b2bf56cd3d737908136952c2"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Mon Jun 02 23:57:52 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 02 23:57:52 2025 +0800"
      },
      "message": "[Improve] Fix typo. (#4246)\n\n"
    },
    {
      "commit": "7983e0ac742e3b64b2bf56cd3d737908136952c2",
      "tree": "e071cce8d194fe1a5654902b2d63d29bb5e4b878",
      "parents": [
        "203beb83a15f5d781f2c6e5c964f6ece21c60f3b"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed May 28 20:16:52 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 28 20:16:52 2025 +0800"
      },
      "message": "[Improve] implicitUtil improvement (#4243)\n\n* [Improve] implicitUtil improvement\n\n* Update Implicits.scala"
    },
    {
      "commit": "203beb83a15f5d781f2c6e5c964f6ece21c60f3b",
      "tree": "10d90357545e468f2231cb8eeafed80058bd6dea",
      "parents": [
        "a64cbf6bcac8ec0fca997fcc28ceed35d394ae97"
      ],
      "author": {
        "name": "Gianzie",
        "email": "63688853+Gianzie@users.noreply.github.com",
        "time": "Fri May 16 19:25:48 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 16 19:25:48 2025 +0800"
      },
      "message": "[Improve] Fix document link address error. (#4240)\n\n"
    },
    {
      "commit": "a64cbf6bcac8ec0fca997fcc28ceed35d394ae97",
      "tree": "d202046859e3aed54a7e891def07a5f3c614fbac",
      "parents": [
        "d4bde448fddaa47f20a74e645adea02fc614df2a"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Sun Apr 27 20:07:40 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 27 20:07:40 2025 +0800"
      },
      "message": "delete unuse e.printexception. (#4236)\n\n"
    },
    {
      "commit": "d4bde448fddaa47f20a74e645adea02fc614df2a",
      "tree": "e539ea545f5b42b183fb33effc0a2ff4555ce183",
      "parents": [
        "00d9cf4e72f53008c75999683f043ab308824a70"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Thu Apr 24 18:40:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 18:40:03 2025 +0800"
      },
      "message": "[hotfixed] fixed flink cdc yaml unable use userJars. (#4233)\n\n"
    },
    {
      "commit": "00d9cf4e72f53008c75999683f043ab308824a70",
      "tree": "d1183da30bed83a71ae87a4d226a80df7048b70a",
      "parents": [
        "ca1a3fd85c4d5a9a894ab93777cf5f8dcc8deb25"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Apr 11 17:18:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 11 17:18:55 2025 +0800"
      },
      "message": "[Bug] FE route name issue#4211 fixed. (#4224)\n\n* [Improve] ci bug fixed.\n\n* [Bug] vue router-name bug fixed."
    },
    {
      "commit": "ca1a3fd85c4d5a9a894ab93777cf5f8dcc8deb25",
      "tree": "92c4588dae3571ba2be4acac34ede0f1819f22da",
      "parents": [
        "d9dc533a537fa1cd33f3b2fe842966648f6de468"
      ],
      "author": {
        "name": "Aalron",
        "email": "48339061+Aalron@users.noreply.github.com",
        "time": "Sun Mar 30 23:08:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 30 23:08:10 2025 +0800"
      },
      "message": "application log query page bug fixed. (#4218)\n\n* application log query page bug fixed."
    },
    {
      "commit": "d9dc533a537fa1cd33f3b2fe842966648f6de468",
      "tree": "6fe365b7c2f6ed2383ca7c1b0c716b1f14ecbdc0",
      "parents": [
        "408be40f5bade0edbd2a304e65b89b09fc76f5b1"
      ],
      "author": {
        "name": "Aalron",
        "email": "48339061+Aalron@users.noreply.github.com",
        "time": "Fri Mar 21 21:14:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 21 21:14:35 2025 +0800"
      },
      "message": "Solve the problem that publishing SQL tasks cannot succeed (#4214)\n\n"
    },
    {
      "commit": "408be40f5bade0edbd2a304e65b89b09fc76f5b1",
      "tree": "9af65101efb250cb14c35083e578c8475afd7224",
      "parents": [
        "4aa752610d25f43f5bd24d9bdab4f4867627ce37"
      ],
      "author": {
        "name": "Happy-shi",
        "email": "595209256@qq.com",
        "time": "Wed Mar 19 14:43:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 19 14:43:11 2025 +0800"
      },
      "message": "[Bug] User-defined ingress causes incorrect flinkRestUrl (#4205)\n\n"
    },
    {
      "commit": "4aa752610d25f43f5bd24d9bdab4f4867627ce37",
      "tree": "03b20e53d04df6a4549894b11f924121b0a8de8c",
      "parents": [
        "883f6f2b755bc451d85a9bc86296b78bcc3b05d7"
      ],
      "author": {
        "name": "Aalron",
        "email": "48339061+Aalron@users.noreply.github.com",
        "time": "Tue Mar 18 23:30:05 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 23:30:05 2025 +0800"
      },
      "message": "Solve the problem of missing error in schema field refs of t_flink_project table in pgsql and mysql databases (#4210)\n\n"
    },
    {
      "commit": "883f6f2b755bc451d85a9bc86296b78bcc3b05d7",
      "tree": "5f0520b5fca60bfe0ca347c8a50eac2e80bcab7b",
      "parents": [
        "64301eb33c4393207ba2972d1acc3282d96f1782"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Mar 17 09:49:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 09:49:10 2025 +0800"
      },
      "message": "[Bug] mvnw script \"echo\" bug fixed (#4202)\n\n"
    },
    {
      "commit": "64301eb33c4393207ba2972d1acc3282d96f1782",
      "tree": "838074e2f55a2b78135a48b1d7202d380a7ce8e5",
      "parents": [
        "1ded0501e9ee86a6754123534ef28d67174b845b"
      ],
      "author": {
        "name": "Aalron",
        "email": "48339061+Aalron@users.noreply.github.com",
        "time": "Mon Mar 17 09:47:22 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 09:47:22 2025 +0800"
      },
      "message": "[Bug] docs url issue fixed (#4208)\n\n"
    },
    {
      "commit": "1ded0501e9ee86a6754123534ef28d67174b845b",
      "tree": "eafa7ee5e41c10a384c7d229cc259c64eb5ab1ce",
      "parents": [
        "3efe08f0eb3a9231a7e29204986226542bbc0b4b"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "tracyaoer@gmail.com",
        "time": "Thu Mar 06 14:50:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 06 14:50:55 2025 +0800"
      },
      "message": "fix(api): add missing leading slash in CHECK API endpoint (#4197)\n\n"
    },
    {
      "commit": "3efe08f0eb3a9231a7e29204986226542bbc0b4b",
      "tree": "5f650dacd779b1ddc9fefd3b843ecf361a372c70",
      "parents": [
        "1a9c9a46c253f1c2e9cb8a7a044b0ac770175c88"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Mar 03 22:37:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 03 22:37:57 2025 +0800"
      },
      "message": "[Improve] push docker image improvement (#4196)\n\n"
    },
    {
      "commit": "1a9c9a46c253f1c2e9cb8a7a044b0ac770175c88",
      "tree": "f211e9ec5dfcd9319678929cd3e2057734f31ba0",
      "parents": [
        "11f4f0a0cdd02f13ddb813f7e6cc388d0f0cf907"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Feb 28 21:40:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 28 21:40:00 2025 +0800"
      },
      "message": "[CI] build docker image CI bug fixed. (#4195)\n\n"
    },
    {
      "commit": "11f4f0a0cdd02f13ddb813f7e6cc388d0f0cf907",
      "tree": "1cd61c16f48f53c21f82a93146ff9846c3cf8c82",
      "parents": [
        "e5c8dab6858390494b8f893a8f47a0dc6f069e8d"
      ],
      "author": {
        "name": "Lihe Ma",
        "email": "ma_lihe@163.com",
        "time": "Thu Feb 20 00:03:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 20 00:03:50 2025 +0800"
      },
      "message": "[Improve] Use local docker image cache when build (#4193) (#4194)\n\nCo-authored-by: lihe.ma \u003clihe.ma@garena.com\u003e"
    },
    {
      "commit": "e5c8dab6858390494b8f893a8f47a0dc6f069e8d",
      "tree": "6e723d08f443883af07610715aa4d2a1c22045ab",
      "parents": [
        "18ba1b3c2f12393876fef4bbc6446bcce2659733"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Feb 17 11:52:21 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 17 11:52:21 2025 +0800"
      },
      "message": "[Improve] update key features. (#4191)\n\n* [Improve] update key features.\r\n\r\n* [Improve] project introduction improvement"
    },
    {
      "commit": "18ba1b3c2f12393876fef4bbc6446bcce2659733",
      "tree": "c784bd34c1667761c0b57ac079a87030a48366a1",
      "parents": [
        "476e7b0529ce9fddf43f670f28c384c17ef5039d"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sun Feb 16 13:34:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 16 13:34:13 2025 +0800"
      },
      "message": "[Bug] The docker-push.yml ENV syntax bug fixed (#4190)\n\n* [Improve] Improve docker build and push rules\r\n\r\n* [Improve] The docker-push.yml ENV syntax bug fixed\r\n\r\n* [Improve] Docker installation doc URL improvement\r\n\r\n* [Improve] Play StreamPark in Docker\r\n"
    },
    {
      "commit": "476e7b0529ce9fddf43f670f28c384c17ef5039d",
      "tree": "f864f1cc00347555de212f121305e7b1f4f7d759",
      "parents": [
        "894400517a5e95eddcffe142f092d42e6d4ce491"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Feb 14 22:33:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 14 22:33:06 2025 +0800"
      },
      "message": "[TLP] update README (#4189)\n\n* [Improve] README minor improvement\r\n\r\n* [Improve] logo image improvement\r\n"
    },
    {
      "commit": "894400517a5e95eddcffe142f092d42e6d4ce491",
      "tree": "bc291a6b0c129a93a68336e32df54502d7db2903",
      "parents": [
        "0128974ee6d0a4586c4f121fc595d28f978243cf"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Fri Feb 14 21:24:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 14 21:24:44 2025 +0800"
      },
      "message": "[Improve] update README (#4188)\n\n\r\n* [Improve] update project introduction and key features\r\n\r\n* [Improve] add quickstart video\r\n\r\n* [Improve]  dead-link check improvement\r\n"
    },
    {
      "commit": "0128974ee6d0a4586c4f121fc595d28f978243cf",
      "tree": "9152153c6c8847da3509ea757ac5e10a354c31e3",
      "parents": [
        "cbea401b25e16c872dea8a35c6973ecdc43882eb"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Fri Feb 14 14:00:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 14 14:00:38 2025 +0800"
      },
      "message": "fixed flink cdc yaml assembly bug. (#4187)\n\n* fixed flink cdc yaml assembly bug.\r\n\r\n* fixed dependencies"
    },
    {
      "commit": "cbea401b25e16c872dea8a35c6973ecdc43882eb",
      "tree": "6ddb1b240cd2fb540720e85c4f6f593d3186b06e",
      "parents": [
        "39e42912ac43d715d641b8820680cac7654c9d0c"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Tue Feb 11 11:29:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 11 11:29:16 2025 +0800"
      },
      "message": "[TLP] drop \"incubator\" prefix (#4186)\n\n"
    },
    {
      "commit": "39e42912ac43d715d641b8820680cac7654c9d0c",
      "tree": "eea3b9f8def7d48c59c103db15aa86f2132644fa",
      "parents": [
        "f9d1abdf18fd240cf6e26ed52c24f171a44b38a7"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Jan 22 11:12:27 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 22 11:12:27 2025 +0800"
      },
      "message": "[Improvement] Rename shutdown.sh to stop.sh (#4180)\n\n"
    },
    {
      "commit": "f9d1abdf18fd240cf6e26ed52c24f171a44b38a7",
      "tree": "e8b139f76e6e3acb6b227a529de8cabf0a43c0b7",
      "parents": [
        "6032fd86e4f0a7648c0b2e92af0ad7c35e83dbec"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Jan 22 11:09:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 22 11:09:32 2025 +0800"
      },
      "message": "[Improve] issue template improvement (#4181)\n\n"
    },
    {
      "commit": "6032fd86e4f0a7648c0b2e92af0ad7c35e83dbec",
      "tree": "8e3d6202a976a96bedb1a4f8cd16ab213ce92093",
      "parents": [
        "83d741ac2b534f7b715bde816f988781fd4bacea"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Wed Jan 22 11:09:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 22 11:09:19 2025 +0800"
      },
      "message": "[Improve] flink cdc yaml FE improvements (#4178)\n\n"
    },
    {
      "commit": "83d741ac2b534f7b715bde816f988781fd4bacea",
      "tree": "69d534a40b931439ea4e2f76f8ce229f11b80bf0",
      "parents": [
        "ad8395fce97eb26105473ddcb3473d530424d60f"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Mon Jan 20 21:14:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 20 21:14:59 2025 +0800"
      },
      "message": "[Feature] The front-end is modified to support the cdc yaml api (#4177)\n\n"
    },
    {
      "commit": "ad8395fce97eb26105473ddcb3473d530424d60f",
      "tree": "754f05ef983864e25b3eb59efaa37b54d14009be",
      "parents": [
        "5b1a1b4ebd19f3a200a637ee10c9470ac7ac2e51"
      ],
      "author": {
        "name": "Zhilin Li",
        "email": "zhilinli0706@gmail.com",
        "time": "Mon Jan 20 18:30:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 20 18:30:49 2025 +0800"
      },
      "message": "[Improve] An exception occurs when the job name contains Spaces (#4172)\n\n* [Improve] An exception occurs when the job name contains Spaces\r\n\r\n* Update app.ts\r\n\r\n\r\n---------\r\n\r\nCo-authored-by: benjobs \u003cbenjobs@apache.org\u003e"
    },
    {
      "commit": "5b1a1b4ebd19f3a200a637ee10c9470ac7ac2e51",
      "tree": "d5372aa6f38a91d4498fa8018220041bcf97c700",
      "parents": [
        "246fab62d049939b4d610e113b47e86a1155a356"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Jan 20 12:34:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 20 12:34:54 2025 +0800"
      },
      "message": "[Improve] job type custom_code rename to flink_jar (#4176)\n\n"
    },
    {
      "commit": "246fab62d049939b4d610e113b47e86a1155a356",
      "tree": "c1445cfb1da2e4bd618d7c78b5d69c850d35f0ce",
      "parents": [
        "f512b6b9d0cf3ce3653920b153c9153e15640eca"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Sun Jan 19 20:38:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 19 20:38:19 2025 +0800"
      },
      "message": "[Feature] Backend modifications support the cdc yaml api (#4175)\n\n* [Feature] Backend modifications support the cdc yaml api\r\n\r\n* fixd imports"
    },
    {
      "commit": "f512b6b9d0cf3ce3653920b153c9153e15640eca",
      "tree": "f8f0a37a17abb2d3dec0816fce13fe26186af14b",
      "parents": [
        "70197772df8650d824bc083db89041a675f6c114"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sat Jan 18 22:18:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 18 22:18:13 2025 +0800"
      },
      "message": "[Improve] mybatis-plus query improvements (#4167)\n\n* [Improve] mybatis-plus query impovements\r\n\r\n* [Improve] mybatis-plus query improvement\r\n\r\n* [Improve] mybatis-plus query improvements\r\n\r\n* [Improve] add mybatis-plus PaginationInterceptor\r\n\r\n* [Improve] add mybatis-plus PaginationInterceptor.java\r\n\r\n* [Improve] trigger ci\r\n\r\n* [Bug] spark application mapping state bug fixed.\r\n\r\n* [Bug] yarnQueue check exists bug fixed.\r\n\r\n* [Improve] check project-name exists improvement\r\n\r\n* [Improve] project e2e bug fixed."
    },
    {
      "commit": "70197772df8650d824bc083db89041a675f6c114",
      "tree": "626d19223d23451b7806a69837010dfe0ba3509a",
      "parents": [
        "422c276f5878086673ce8dbcc714d85fbb395048"
      ],
      "author": {
        "name": "ouyangwulin",
        "email": "mr.artboy@gmail.com",
        "time": "Mon Jan 13 23:12:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 13 23:12:53 2025 +0800"
      },
      "message": "[Feature] Add CDC jar client for support cdc yaml  (#4166)\n\n* [fixed] fixed envsetting unload flink-conf.yaml,if not like catalogstore conf will not work\r\n\r\n* [Feature] Add CDC jar client for support cdc yaml\r\n\r\n* [Feature] The front-end is modified to support the cdc yaml api\r\n\r\n* fixed package and log info\r\n\r\n* delete unused method\r\n\r\n* fixed module"
    },
    {
      "commit": "422c276f5878086673ce8dbcc714d85fbb395048",
      "tree": "7ed10e133395f14fb5b67730dc6838d887851e34",
      "parents": [
        "6ad91bc6830106200bedd10921ddec9667bbfe87"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Mon Jan 13 13:55:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 13 13:55:03 2025 +0800"
      },
      "message": "[NOTICE] Update license year to 2025 (#4162)\n\n"
    },
    {
      "commit": "6ad91bc6830106200bedd10921ddec9667bbfe87",
      "tree": "5790e777189652c0f4c0b6584f78df1998d5c2d8",
      "parents": [
        "9c7387fcce3a19c6074d0eeb9d0979409c8529af"
      ],
      "author": {
        "name": "benjobs",
        "email": "benjobs@apache.org",
        "time": "Sun Jan 12 18:30:46 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 12 18:30:46 2025 +0800"
      },
      "message": "[Improve] mybatis-plus query  improvements (#4161)\n\n* [Improve] mybatis-plus query  improvements\r\n\r\n* [Improve] mybatis exists minor improvement"
    },
    {
      "commit": "9c7387fcce3a19c6074d0eeb9d0979409c8529af",
      "tree": "04cc27732b4955f47950fd77c132696587f8055c",
      "parents": [
        "924fea65def91fc78c6b030d74f43f4314913dc7"
      ],
      "author": {
        "name": "Forus",
        "email": "70357858+Forus0322@users.noreply.github.com",
        "time": "Sun Jan 12 09:08:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 12 09:08:29 2025 +0800"
      },
      "message": "The new user configuration and the new team cannot log in properly. (#4142)\n\n* [Improve] The start time may be null.#4140\r\n\r\n* [Bug]The new user configuration and the new team cannot log in properly."
    },
    {
      "commit": "924fea65def91fc78c6b030d74f43f4314913dc7",
      "tree": "52c3a679d60aa25b81fbb27e5c3efa4ac4984312",
      "parents": [
        "98aa780c5204eb2d0170ab0e8602dc9fac1aa9b5"
      ],
      "author": {
        "name": "Happy-shi",
        "email": "1900022824@pku.edu.cn",
        "time": "Thu Jan 09 00:24:21 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 09 00:24:21 2025 +0800"
      },
      "message": "[Bug] Fix failed to write data to t_message (#4156)\n\nCo-authored-by: Zhiwei Shi \u003cshizw@rd.netease.com\u003e"
    },
    {
      "commit": "98aa780c5204eb2d0170ab0e8602dc9fac1aa9b5",
      "tree": "60f95b7ad14bb82388b0c966a1d520c2edc4f184",
      "parents": [
        "bcc269fce5f0126b3988dea2bae284d4083677a8"
      ],
      "author": {
        "name": "Forus",
        "email": "70357858+Forus0322@users.noreply.github.com",
        "time": "Sun Dec 22 12:10:48 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 22 12:10:48 2024 +0800"
      },
      "message": "[Improve] Redundant return variables are optimized (#4151)\n\n"
    },
    {
      "commit": "bcc269fce5f0126b3988dea2bae284d4083677a8",
      "tree": "1143f2c862a95fa9d9d71f725833c734dc34b7aa",
      "parents": [
        "c58071179c31e8a1689ddfcf0d0c8c0d4d1a8fe1"
      ],
      "author": {
        "name": "Forus",
        "email": "70357858+Forus0322@users.noreply.github.com",
        "time": "Fri Dec 20 19:47:31 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 20 19:47:31 2024 +0800"
      },
      "message": "[Improve] Optimized the NumberUtils method call. (#4150)\n\n"
    },
    {
      "commit": "c58071179c31e8a1689ddfcf0d0c8c0d4d1a8fe1",
      "tree": "a14db0e47d07424f60b651c9dbf3ce10821cf37a",
      "parents": [
        "13ac2c6603fdeb2fe774cfd28d52e8c31256a676"
      ],
      "author": {
        "name": "Forus",
        "email": "70357858+Forus0322@users.noreply.github.com",
        "time": "Fri Dec 20 19:37:03 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 20 19:37:03 2024 +0800"
      },
      "message": "[Improve] Optimize the code structure and merge the util and utils packages. (#4153)\n\n"
    },
    {
      "commit": "13ac2c6603fdeb2fe774cfd28d52e8c31256a676",
      "tree": "a8a16112302a3302e1dfe938249373a5fcd4c657",
      "parents": [
        "5fd4cfd0eceb701fbcefcaeadbf59a66713bf81f"
      ],
      "author": {
        "name": "zhangyuhang",
        "email": "2827528315@qq.com",
        "time": "Thu Dec 19 11:47:24 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 19 11:47:24 2024 +0800"
      },
      "message": "[Bug] Fix the issue where metrics do not update upon restart. (#4148)\n\nCo-authored-by: yuhang2.zhang \u003cyuhang2.zhang@ly.com\u003e"
    },
    {
      "commit": "5fd4cfd0eceb701fbcefcaeadbf59a66713bf81f",
      "tree": "34c99ccf62cd92f4b5faac5376b25a393a44bf43",
      "parents": [
        "c5ac49fc22b206f9ecb8446fdce532e422b66cfe"
      ],
      "author": {
        "name": "Forus",
        "email": "70357858+Forus0322@users.noreply.github.com",
        "time": "Fri Dec 13 11:33:35 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 13 11:33:35 2024 +0800"
      },
      "message": "[Improve] Optimized naming. (#4143)\n\n"
    }
  ],
  "next": "c5ac49fc22b206f9ecb8446fdce532e422b66cfe"
}
