Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package werf for openSUSE:Factory checked in 
at 2026-05-13 17:21:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/werf (Old)
 and      /work/SRC/openSUSE:Factory/.werf.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "werf"

Wed May 13 17:21:48 2026 rev:72 rq:1352922 version:2.68.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/werf/werf.changes        2026-04-22 
17:00:45.314875941 +0200
+++ /work/SRC/openSUSE:Factory/.werf.new.1966/werf.changes      2026-05-13 
17:23:44.722259863 +0200
@@ -1,0 +2,14 @@
+Wed May 13 04:50:46 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 2.68.0:
+  * Features
+    - deploy: adopt chart ts init for werf (#7489) (63542e2)
+  * Bug Fixes
+    - compose: show docker compose config error instead of bare
+      exit code (6cc27d8)
+    - init docker config in InitCommonComponents when docker
+      registry is requested (#7488) (76ca703)
+    - propagate --docker-config to image pulling in bundle copy
+      (#7448) (c02babe)
+
+-------------------------------------------------------------------

Old:
----
  werf-2.67.2.obscpio

New:
----
  werf-2.68.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ werf.spec ++++++
--- /var/tmp/diff_new_pack.OxZOmU/_old  2026-05-13 17:23:46.022313796 +0200
+++ /var/tmp/diff_new_pack.OxZOmU/_new  2026-05-13 17:23:46.034314294 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           werf
-Version:        2.67.2
+Version:        2.68.0
 Release:        0
 Summary:        CLI for the Werf CI/CD system
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.OxZOmU/_old  2026-05-13 17:23:46.110317447 +0200
+++ /var/tmp/diff_new_pack.OxZOmU/_new  2026-05-13 17:23:46.118317778 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/werf/werf</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.67.2</param>
+    <param name="revision">v2.68.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OxZOmU/_old  2026-05-13 17:23:46.198321097 +0200
+++ /var/tmp/diff_new_pack.OxZOmU/_new  2026-05-13 17:23:46.230322425 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/werf/werf</param>
-              <param 
name="changesrevision">d8dc46d511d9b688016ca74fc34c254c628efba2</param></service></servicedata>
+              <param 
name="changesrevision">32fdbc60570bbd34b916e28f6ec61d33e5cd72d4</param></service></servicedata>
 (No newline at EOF)
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/werf/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.werf.new.1966/vendor.tar.gz differ: char 31, line 1

++++++ werf-2.67.2.obscpio -> werf-2.68.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/CHANGELOG.md new/werf-2.68.0/CHANGELOG.md
--- old/werf-2.67.2/CHANGELOG.md        2026-04-21 14:30:19.000000000 +0200
+++ new/werf-2.68.0/CHANGELOG.md        2026-04-23 17:45:53.000000000 +0200
@@ -1,5 +1,19 @@
 # Changelog
 
+## [2.68.0](https://github.com/werf/werf/compare/v2.67.2...v2.68.0) 
(2026-04-22)
+
+
+### Features
+
+* **deploy:** adopt `chart ts init` for werf 
([#7489](https://github.com/werf/werf/issues/7489)) 
([63542e2](https://github.com/werf/werf/commit/63542e2ef392885b8d706ae8e42061fda71bd086))
+
+
+### Bug Fixes
+
+* **compose:** show docker compose config error instead of bare exit code 
([6cc27d8](https://github.com/werf/werf/commit/6cc27d81cad9266b37053ac35c9f73612ec0d904))
+* init docker config in InitCommonComponents when docker registry is requested 
([#7488](https://github.com/werf/werf/issues/7488)) 
([76ca703](https://github.com/werf/werf/commit/76ca703c53611a0a9612e8f5fff98ced20fb4b67))
+* propagate --docker-config to image pulling in bundle copy 
([#7448](https://github.com/werf/werf/issues/7448)) 
([c02babe](https://github.com/werf/werf/commit/c02babecf9b7e768edf18ca71b6eaabd7a87c37f))
+
 ## [2.67.2](https://github.com/werf/werf/compare/v2.67.1...v2.67.2) 
(2026-04-21)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/cmd/werf/common/components_manager.go 
new/werf-2.68.0/cmd/werf/common/components_manager.go
--- old/werf-2.67.2/cmd/werf/common/components_manager.go       2026-04-21 
14:30:19.000000000 +0200
+++ new/werf-2.68.0/cmd/werf/common/components_manager.go       2026-04-23 
17:45:53.000000000 +0200
@@ -7,6 +7,7 @@
        "github.com/werf/logboek"
        "github.com/werf/werf/v2/pkg/buildah"
        "github.com/werf/werf/v2/pkg/container_backend"
+       "github.com/werf/werf/v2/pkg/docker"
        "github.com/werf/werf/v2/pkg/git_repo"
        "github.com/werf/werf/v2/pkg/git_repo/gitdata"
        "github.com/werf/werf/v2/pkg/image"
@@ -82,6 +83,14 @@
                cmanager.buildahMode = resolvedBuildahMode
        }
 
+       // Set DOCKER_CONFIG early so that authn.DefaultKeychain (used by 
go-containerregistry)
+       // picks up custom credentials even when the full container backend is 
not initialized.
+       if opts.InitDockerRegistry || opts.InitProcessContainerBackend {
+               if err := 
docker.InitDockerConfig(docker.InitOptions{DockerConfigDir: 
*opts.Cmd.DockerConfig}); err != nil {
+                       return nil, ctx, fmt.Errorf("init docker config: %w", 
err)
+               }
+       }
+
        if opts.InitProcessContainerBackend && resolvedBuildahMode == 
buildah.ModeDisabled {
                newCtx, err := InitProcessDocker(ctx, opts.Cmd)
                if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/cmd/werf/common/container_backend.go 
new/werf-2.68.0/cmd/werf/common/container_backend.go
--- old/werf-2.67.2/cmd/werf/common/container_backend.go        2026-04-21 
14:30:19.000000000 +0200
+++ new/werf-2.68.0/cmd/werf/common/container_backend.go        2026-04-23 
17:45:53.000000000 +0200
@@ -136,11 +136,6 @@
                        return nil, ctx, fmt.Errorf("unable to get buildah 
client: %w", err)
                }
 
-               err = 
docker.InitDockerConfig(docker.InitOptions{DockerConfigDir: 
*cmdData.DockerConfig})
-               if err != nil {
-                       return nil, ctx, fmt.Errorf("unable to set docker 
config for buildah client: %w", err)
-               }
-
                return 
wrapContainerBackend(container_backend.NewBuildahBackend(b, 
container_backend.BuildahBackendOptions{TmpDir: 
filepath.Join(werf.GetServiceDir(), "tmp", "buildah")})), ctx, nil
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/cmd/werf/compose/main.go 
new/werf-2.68.0/cmd/werf/compose/main.go
--- old/werf-2.67.2/cmd/werf/compose/main.go    2026-04-21 14:30:19.000000000 
+0200
+++ new/werf-2.68.0/cmd/werf/compose/main.go    2026-04-23 17:45:53.000000000 
+0200
@@ -14,7 +14,6 @@
        "github.com/samber/lo"
        "github.com/spf13/cobra"
 
-       "github.com/werf/common-go/pkg/graceful"
        "github.com/werf/logboek"
        "github.com/werf/werf/v2/cmd/werf/common"
        "github.com/werf/werf/v2/pkg/build"
@@ -112,7 +111,7 @@
 
        err := cmd.Run()
        if err != nil {
-               graceful.Terminate(ctx, err, werfExec.ExitCode(err))
+               werfExec.TerminateIfCanceled(ctx)
                var ee *exec.ExitError
                if errors.As(err, &ee) {
                        return nil, fmt.Errorf("error running command %q: 
%w\n\nStdout:\n%s\nStderr:\n%s", cmd, err, stdout.String(), stderr.String())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/docs/_data/sidebars/documentation.yml 
new/werf-2.68.0/docs/_data/sidebars/documentation.yml
--- old/werf-2.67.2/docs/_data/sidebars/documentation.yml       2026-04-21 
14:30:19.000000000 +0200
+++ new/werf-2.68.0/docs/_data/sidebars/documentation.yml       2026-04-23 
17:45:53.000000000 +0200
@@ -747,6 +747,9 @@
               - title: Parametrize templates
                 url: /usage/deploy/values.html
 
+              - title: TypeScript templates
+                url: /usage/deploy/typescript.html
+
               - title: Debug templates
                 url: /usage/deploy/debug_templates.html
 
@@ -905,6 +908,9 @@
               - title: Параметризация шаблонов
                 url: /usage/deploy/values.html
 
+              - title: TypeScript-шаблоны
+                url: /usage/deploy/typescript.html
+
               - title: Отладка шаблонов
                 url: /usage/deploy/debug_templates.html
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/docs/_plugins/tree_file_viewer.rb 
new/werf-2.68.0/docs/_plugins/tree_file_viewer.rb
--- old/werf-2.67.2/docs/_plugins/tree_file_viewer.rb   2026-04-21 
14:30:19.000000000 +0200
+++ new/werf-2.68.0/docs/_plugins/tree_file_viewer.rb   2026-04-23 
17:45:53.000000000 +0200
@@ -19,7 +19,8 @@
               {}
             ],
             named: [
-              { name: "default_file" }
+              { name: "default_file" },
+              { name: "expanded" }
             ]
           })
 
@@ -28,6 +29,8 @@
             @default_active_file_path = "/" + 
@named_params["default_file"].delete_prefix("/")
           end
 
+          @expanded = @named_params["expanded"] == "true"
+
           @static_files_root = context.registers[:site].config['source']
           @tree_root = Pathname.new(File.join(@static_files_root, 
@rel_tree_root))
 
@@ -90,8 +93,8 @@
 
         unless is_tree_root_level
           result += %Q(
-<div class="folder__wrap #{root_depth > tree_root_depth + 1 ? "hidden child" : 
nil}" data-depth="#{root_depth - tree_root_depth}">
-<div class="folder">
+<div class="folder__wrap #{@expanded ? "child" : (root_depth > tree_root_depth 
+ 1 ? "hidden child" : nil)}" data-depth="#{root_depth - tree_root_depth}">
+<div class="folder"#{@expanded ? " style=\"padding-left: #{(root_depth - 
tree_root_depth) * 15}px;\"" : ""}>
 <span class="folder-icon"></span>
 <span class="folder-name">#{root.basename}</span>
 </div>
@@ -108,7 +111,7 @@
           end
 
           result += %Q(
-<div class="file__wrap #{is_file_active(file, index) ? "active" : nil} 
#{is_tree_root_level ? nil : "hidden child"}">
+<div class="file__wrap #{is_file_active(file, index) ? "active" : nil} 
#{is_tree_root_level ? nil : (@expanded ? "child" : "hidden 
child")}"#{(@expanded && !is_tree_root_level) ? " style=\"padding-left: 
#{(root_depth - tree_root_depth + 1) * 15}px;\"" : ""}>
 <span class="file-icon"></span>
 <div class="file-name" 
data-file-name="#{file.relative_path_from(@static_files_root).to_s}">#{file.basename}</div>
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/Chart.yaml 
new/werf-2.68.0/docs/examples/ts/example-chart/Chart.yaml
--- old/werf-2.67.2/docs/examples/ts/example-chart/Chart.yaml   1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/Chart.yaml   2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,3 @@
+apiVersion: v2
+name: ts-chart-example
+version: 0.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/deno.json 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/deno.json
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/deno.json 1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/deno.json 2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,19 @@
+{
+  "tasks": {
+    "build": {
+      "description": "Run deno build",
+      "command": "deno bundle --output=dist/bundle.js src/index.ts"
+    },
+    "dev": {
+      "description": "Run in development mode",
+      "command": "deno run --no-remote --deny-read --deny-write --deny-net 
--deny-env --deny-run --allow-read=input.example.yaml src/index.ts --input-file 
./input.example.yaml"
+    },
+    "start": {
+      "description": "Run the bundled dist/bundle.js",
+      "command": "deno run --no-remote --deny-read --deny-write --deny-net 
--deny-env --deny-run --allow-read=input.example.yaml dist/bundle.js 
--input-file ./input.example.yaml"
+    }
+  },
+  "imports": {
+    "@nelm/chart-ts-sdk": "npm:@nelm/chart-ts-sdk@^0.1.5"
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/deno.lock 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/deno.lock
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/deno.lock 1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/deno.lock 2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,23 @@
+{
+  "version": "5",
+  "specifiers": {
+    "npm:@nelm/chart-ts-sdk@~0.1.4": "0.1.4"
+  },
+  "npm": {
+    "@jsr/[email protected]": {
+      "integrity": 
"sha512-pz/BisWZWH16JvLJBwrNwUwfIsRnf9qniMrmI6Z3vIAcVRVFcA5+i4o6z6QqsMKqFzjlB66WZE+jSyujT/RvRg==",
+      "tarball": "https://npm.jsr.io/~/11/@jsr/std__yaml/1.0.12.tgz";
+    },
+    "@nelm/[email protected]": {
+      "integrity": 
"sha512-NCeflvAuZQxzmGZGpm0lP3Uy5d2xYRq8TKW0MWTKyknnZAe2tSv9+2uCZVA46oIxdm9FsBKocmCHEfqyOwe4lQ==",
+      "dependencies": [
+        "@std/yaml@npm:@jsr/[email protected]"
+      ]
+    }
+  },
+  "workspace": {
+    "dependencies": [
+      "npm:@nelm/chart-ts-sdk@~0.1.4"
+    ]
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/input.example.yaml 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/input.example.yaml
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/input.example.yaml        
1970-01-01 01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/input.example.yaml        
2026-04-23 17:45:53.000000000 +0200
@@ -0,0 +1,76 @@
+Capabilities:
+  APIVersions:
+    - v1
+  HelmVersion:
+    go_version: go1.25.0
+    version: v3.20
+  KubeVersion:
+    Major: "1"
+    Minor: "35"
+    Version: v1.35.0
+Chart:
+  APIVersion: v2
+  Annotations:
+    anno: value
+  AppVersion: 1.0.0
+  Condition: ts-chart-example.enabled
+  Description: ts-chart-example description
+  Home: https://example.org/home
+  Icon: https://example.org/icon
+  Keywords:
+    - ts-chart-example
+  Maintainers:
+    - Email: [email protected]
+      Name: john
+      URL: https://example.com/john
+  Name: ts-chart-example
+  Sources:
+    - https://example.org/ts-chart-example
+  Tags: ts-chart-example
+  Type: application
+  Version: 0.1.0
+Files:
+  myfile: "content"
+Release:
+  IsInstall: false
+  IsUpgrade: true
+  Name: ts-chart-example
+  Namespace: ts-chart-example
+  Revision: 2
+  Service: Helm
+Values:
+  global:
+    werf:
+      name: myapp
+      version: v2.35.0
+      repo: example.org/mycompany/myapp
+      env: production
+      images:
+        app:
+          registry: example.org
+          namespace: mycompany
+          name: myapp
+          tag: a1b2c3d4-1234567890
+          digest: "sha256:abcdef1234567890"
+          tag_digest: "a1b2c3d4-1234567890@sha256:abcdef1234567890"
+          image: example.org/mycompany/myapp
+          repository: mycompany/myapp
+          ref: 
"example.org/mycompany/myapp:a1b2c3d4-1234567890@sha256:abcdef1234567890"
+          ref_tag: "example.org/mycompany/myapp:a1b2c3d4-1234567890"
+          repository_ref: 
"mycompany/myapp:a1b2c3d4-1234567890@sha256:abcdef1234567890"
+          repository_tag: "mycompany/myapp:a1b2c3d4-1234567890"
+          name_ref: "myapp:a1b2c3d4-1234567890@sha256:abcdef1234567890"
+          name_tag: "myapp:a1b2c3d4-1234567890"
+      commit:
+        date:
+          human: "2025-01-15 12:00:00 +0000"
+          unix: 1736942400
+        hash: a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
+  image:
+    repository: nginx
+    tag: latest
+  replicaCount: 1
+  service:
+    enabled: true
+    port: 80
+    type: ClusterIP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/deployment.ts 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/deployment.ts
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/deployment.ts 
1970-01-01 01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/deployment.ts 
2026-04-23 17:45:53.000000000 +0200
@@ -0,0 +1,40 @@
+import type { WerfRenderContext } from '@nelm/chart-ts-sdk';
+import { getFullname, getLabels, getSelectorLabels } from './helpers.ts';
+
+export function newDeployment($: WerfRenderContext): object {
+  const name = getFullname($);
+
+  return {
+    apiVersion: 'apps/v1',
+    kind: 'Deployment',
+    metadata: {
+      name,
+      labels: getLabels($),
+    },
+    spec: {
+      replicas: $.Values.replicaCount ?? 1,
+      selector: {
+        matchLabels: getSelectorLabels($),
+      },
+      template: {
+        metadata: {
+          labels: getSelectorLabels($),
+        },
+        spec: {
+          containers: [
+            {
+              name: name,
+              image: ($.Values.image?.repository ?? 'nginx') + ':' + 
($.Values.image?.tag ?? 'latest'),
+              ports: [
+                {
+                  name: 'http',
+                  containerPort: $.Values.service?.port ?? 80,
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
+  };
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/helpers.ts 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/helpers.ts
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/helpers.ts    
1970-01-01 01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/helpers.ts    
2026-04-23 17:45:53.000000000 +0200
@@ -0,0 +1,41 @@
+import type { WerfRenderContext } from '@nelm/chart-ts-sdk';
+
+/**
+ * Truncate string to max length, removing trailing hyphens.
+ */
+export function trunc(str: string, max: number): string {
+  if (str.length <= max) return str;
+  return str.slice(0, max).replace(/-+$/, '');
+}
+
+/**
+ * Get the fully qualified app name.
+ * Truncated at 63 chars (DNS naming spec limit).
+ */
+export function getFullname($: WerfRenderContext): string {
+  if ($.Values.fullnameOverride) {
+    return trunc($.Values.fullnameOverride, 63);
+  }
+
+  const chartName = $.Values.nameOverride || $.Chart.Name;
+
+  if ($.Release.Name.includes(chartName)) {
+    return trunc($.Release.Name, 63);
+  }
+
+  return trunc(`${$.Release.Name}-${chartName}`, 63);
+}
+
+export function getLabels($: WerfRenderContext): Record<string, string> {
+  return {
+    'app.kubernetes.io/name': $.Chart.Name,
+    'app.kubernetes.io/instance': $.Release.Name,
+  };
+}
+
+export function getSelectorLabels($: WerfRenderContext): Record<string, 
string> {
+  return {
+    'app.kubernetes.io/name': $.Chart.Name,
+    'app.kubernetes.io/instance': $.Release.Name,
+  };
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/index.ts 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/index.ts
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/index.ts      
1970-01-01 01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/index.ts      
2026-04-23 17:45:53.000000000 +0200
@@ -0,0 +1,17 @@
+import { WerfRenderContext, RenderResult, render } from '@nelm/chart-ts-sdk';
+import { newDeployment } from './deployment.ts';
+import { newService } from './service.ts';
+
+function generate($: WerfRenderContext): RenderResult {
+  const manifests: object[] = [];
+
+  manifests.push(newDeployment($));
+
+  if ($.Values.service?.enabled !== false) {
+    manifests.push(newService($));
+  }
+
+  return { manifests };
+}
+
+await render(generate);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/service.ts 
new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/service.ts
--- old/werf-2.67.2/docs/examples/ts/example-chart/ts/src/service.ts    
1970-01-01 01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/ts/src/service.ts    
2026-04-23 17:45:53.000000000 +0200
@@ -0,0 +1,23 @@
+import type { WerfRenderContext } from '@nelm/chart-ts-sdk';
+import { getFullname, getLabels, getSelectorLabels } from './helpers.ts';
+
+export function newService($: WerfRenderContext): object {
+  return {
+    apiVersion: 'v1',
+    kind: 'Service',
+    metadata: {
+      name: getFullname($),
+      labels: getLabels($),
+    },
+    spec: {
+      type: $.Values.service?.type ?? 'ClusterIP',
+      ports: [
+        {
+          port: $.Values.service?.port ?? 80,
+          targetPort: 'http',
+        },
+      ],
+      selector: getSelectorLabels($),
+    },
+  };
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.67.2/docs/examples/ts/example-chart/values.yaml 
new/werf-2.68.0/docs/examples/ts/example-chart/values.yaml
--- old/werf-2.67.2/docs/examples/ts/example-chart/values.yaml  1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/examples/ts/example-chart/values.yaml  2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,10 @@
+replicaCount: 1
+
+image:
+  repository: nginx
+  tag: latest
+
+service:
+  enabled: true
+  type: ClusterIP
+  port: 80
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/docs/pages_en/usage/deploy/typescript.md 
new/werf-2.68.0/docs/pages_en/usage/deploy/typescript.md
--- old/werf-2.67.2/docs/pages_en/usage/deploy/typescript.md    1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/pages_en/usage/deploy/typescript.md    2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,179 @@
+---
+title: TypeScript templates
+permalink: usage/deploy/typescript.html
+---
+
+> **Note**: TypeScript templates are an experimental feature. To enable it, 
set the environment variable `NELM_FEAT_TYPESCRIPT=true`.
+
+## Overview
+
+In addition to [Helm templates]({{ "/usage/deploy/templates.html" | 
true_relative_url }}), werf can generate Kubernetes manifests with TypeScript. 
Helm templates and TypeScript templates can coexist in the same chart — 
resulting manifests are merged into a single multi-doc YAML document.
+
+TypeScript templates work out of the box: deploying a chart that contains a 
`ts/` directory requires no additional tools or configuration — werf 
automatically downloads the Deno TypeScript runtime and renders the TypeScript 
templates.
+
+### Why TypeScript
+
+Helm's templating language works well for simple cases but becomes hard to 
maintain as chart complexity grows: primitive language with lots of gotchas, 
limited library, performance issues, debug difficulties, poor IDE/editor 
support and so on. TypeScript in werf solves these problems without 
complicating the deployment workflow.
+
+### Features
+
+- IDE support — full autocompletion, type checking, go-to-definition, and 
refactoring in any editor with Deno/TypeScript support (VS Code, JetBrains, 
Neovim, etc.).
+- Standard syntax — proper functions, loops, and conditionals instead of 
awkward template engine constructs.
+- Pure TypeScript — `ts` directory is a regular Deno TypeScript project, and 
can be render without werf, with just [Deno TypeScript 
runtime](https://deno.com/).
+- Large ecosystem — TypeScript is one of the most popular languages with 
extensive documentation, community resources, and tooling.
+- Almost any third-party TypeScript/JavaScript library can be used, for 
example [kubernetes-models](https://github.com/tommy351/kubernetes-models-ts), 
[cdk8s](https://cdk8s.io/) or any other library from npm/Deno ecosystems.
+- Testing — test your code using common TypeScript libraries and tooling.
+- No extra host requirements — to deploy a TS chart all you need is werf. No 
need to install Node, Deno, npm, npm modules or anything else. We handle all of 
this for you, just do a `werf converge`.
+- Isolated environments — npm modules are bundled into the chart by default, 
and the Deno runtime can be provided by the host system, so no network calls 
will be done during the deployment, except to the Kubernetes itself.
+- Security — code runs in an isolated Deno sandbox with no access to the 
network, environment variables, or process execution. Filesystem access is 
limited to reading chart files.
+
+## Quick start
+
+Initialize TypeScript files in an existing chart:
+
+```shell
+werf chart ts init
+```
+
+It will bootstrap the `.helm/ts/` directory, which contains a TypeScript 
project skeleton and a few files with sample resources. Try modifying 
`ts/src/deployment.ts` — for example, change the number of replicas — then 
check the result:
+
+```shell
+werf render --dev
+```
+
+To deploy:
+
+```shell
+werf converge --dev
+```
+
+## Chart structure
+
+{% tree_file_viewer 'examples/ts/example-chart' default_file='ts/src/index.ts' 
expanded=true %}
+
+## Developing a chart with TypeScript templates
+
+Install [Deno](https://docs.deno.com/runtime/getting_started/installation/) 
and follow the [setup 
guide](https://docs.deno.com/runtime/getting_started/setup_your_environment/) 
for your IDE/editor (VS Code, JetBrains, Neovim, etc.).
+
+Initialize TypeScript files in the chart if not already initialized:
+
+```shell
+werf chart ts init
+```
+
+Open the `ts/` directory in your editor as a regular Deno/TypeScript project. 
You can work with it the same way you would with any TypeScript codebase — run 
scripts, write tests, use a debugger. Deno provides a rich set of tools for 
testing, linting, formatting, and more. See [Deno 
documentation](https://docs.deno.com/runtime/) for details.
+
+The codebase can be organized as you wish. The only requirement is that 
`ts/src/index.ts` exists, and `render` function from `@nelm/chart-ts-sdk` 
**must** be called. Otherwise, no TypeScript rendering happens.
+
+To debug templates rendering in an environment that is very close to how werf 
runs Deno, you can use `dev` task from `ts/deno.json`:
+
+```shell
+cd .helm/ts
+deno task dev
+```
+TypeScript engine will call `render` function from `ts/src/index.ts` with the 
example context from `ts/input.example.yaml`. The resulting YAML will be 
printed to the console below the `Rendered manifests:` message.
+
+Install libraries using `deno add`, for example, try to install 
[kubernetes-models](https://github.com/tommy351/kubernetes-models-ts) — library 
for strict Kubernetes resource typing:
+
+```shell
+deno add npm:kubernetes-models
+```
+
+The dependency is added to `deno.json` automatically. Now you can import and 
use it:
+
+```typescript
+// .helm/ts/src/deployment.ts:
+import { Deployment } from 'kubernetes-models/apps/v1';
+
+export function newDeployment($: WerfRenderContext): object {
+  return new Deployment({
+    metadata: { name: 'myapp' },
+    spec: {
+      // other fields
+    },
+  }).toJSON();
+}
+```
+
+To ensure that everything actually works with the werf deno runtime, run:
+```shell
+werf lint --dev
+```
+
+```shell
+werf render --dev
+```
+
+## How to deploy a chart with TypeScript templates
+
+Simply run `werf converge`: the Deno binary will be downloaded into the cache 
and TypeScript templates will be rendered and deployed.
+
+> **Note**: According to [giterminism policies]({{ 
"/usage/project_configuration/giterminism.html" | true_relative_url }}), all 
changed files must be committed.
+
+## Deploying into isolated environments
+
+For the isolated environments, where Deno cannot be downloaded automatically:
+
+1. Publish the chart:
+   ```shell
+   werf bundle publish --repo example.org/mycompany/myapp
+   ```
+   All npm modules will be minified and bundled inside, so that the chart can 
be installed even without Internet access.
+
+2. On the target machine with an isolated environment (no network access), 
download Deno manually and run:
+   ```shell
+   werf bundle apply --repo example.org/mycompany/myapp --deno-binary-path 
/usr/local/bin/deno
+   ```
+   Where `/usr/local/bin/deno` is the path to the local Deno binary. 
TypeScript templates will be rendered and deployed using pre-compiled files 
from the chart bundle.
+
+## SDK API overview
+
+TypeScript engine uses the 
[@nelm/chart-ts-sdk](https://github.com/werf/nelm-chart-ts-sdk) package.
+
+### "render" and "generate" functions
+
+`index.ts` must call the `render()` function. The function `generate()`, which 
will actually generate the manifests, should be passed to the `render()` 
function as an argument, for example:
+
+```typescript
+// .helm/ts/src/index.ts:
+await render(generate);
+```
+
+### "WerfRenderContext" object
+
+The `generate` function receives the root context in the `$` variable of type 
`WerfRenderContext` — the same context as in Helm templates:
+
+| Field | Type | Description |
+|-------|------|-------------|
+| `$.Values` | `WerfServiceValues` | Chart parameters + service values at 
`$.Values.global.werf` |
+| `$.Release` | `Release` | Release information |
+| `$.Chart` | `ChartMetadata` | Metadata from Chart.yaml |
+| `$.Capabilities` | `Capabilities` | Cluster capabilities (API versions, 
Kubernetes version) |
+| `$.Files` | `Record<string, Uint8Array>` | Raw chart files (except 
`templates/` and `ts/`) |
+
+See the example context in `ts/input.example.yaml`. For details on parameters 
and how they are constructed, see [Parametrize templates]({{ 
"/usage/deploy/values.html" | true_relative_url }}).
+
+### "RenderResult" object
+
+The `generate` function returns `RenderResult` — an object with a `manifests` 
array. Each element is a plain JavaScript object representing a Kubernetes 
resource. Example output:
+
+```json
+{
+  "manifests": [
+    {
+      "apiVersion": "apps/v1",
+      "kind": "Deployment",
+      "metadata": { "name": "myapp" },
+      "spec": { "..." }
+    },
+    {
+      "apiVersion": "v1",
+      "kind": "Service",
+      "metadata": { "name": "myapp" },
+      "spec": { "..." }
+    }
+  ]
+}
+```
+
+Each object is serialized to YAML and included in the final rendered output.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/docs/pages_ru/usage/deploy/typescript.md 
new/werf-2.68.0/docs/pages_ru/usage/deploy/typescript.md
--- old/werf-2.67.2/docs/pages_ru/usage/deploy/typescript.md    1970-01-01 
01:00:00.000000000 +0100
+++ new/werf-2.68.0/docs/pages_ru/usage/deploy/typescript.md    2026-04-23 
17:45:53.000000000 +0200
@@ -0,0 +1,179 @@
+---
+title: TypeScript-шаблоны
+permalink: usage/deploy/typescript.html
+---
+
+> **Обратите внимание**: TypeScript-шаблоны — экспериментальная функция. Для 
включения установите переменную окружения `NELM_FEAT_TYPESCRIPT=true`.
+
+## Обзор
+
+Помимо [Helm-шаблонов]({{ "/usage/deploy/templates.html" | true_relative_url 
}}), werf поддерживает генерацию Kubernetes-манифестов с помощью TypeScript. 
Helm-шаблоны и TypeScript-шаблоны могут сосуществовать в одном чарте — 
полученные манифесты объединяются в единый мульти-документный YAML.
+
+TypeScript-шаблоны работают из коробки: развёртывание чарта с директорией 
`ts/` не требует дополнительных инструментов или настройки — werf автоматически 
скачивает рантайм Deno TypeScript и рендерит TypeScript-шаблоны.
+
+### Зачем TypeScript
+
+Язык шаблонов Helm хорошо работает для простых случаев, но с ростом сложности 
чарта становится сложным в поддержке: примитивный язык с большим количеством 
подводных камней, ограниченная стандартная библиотека, проблемы с 
производительностью, сложная отладка, слабая поддержка в IDE и редакторах. 
TypeScript в werf решает эти проблемы, не усложняя процесс развёртывания.
+
+### Возможности
+
+- Поддержка IDE — автокомплит, проверка типов, go-to-definition и рефакторинг 
в любом редакторе с поддержкой Deno/TypeScript (VS Code, JetBrains, Neovim и 
др.).
+- Стандартный синтаксис — обычные функции, циклы и условия вместо неудобных 
конструкций шаблонизатора.
+- Чистый TypeScript — директория `ts` является обычным Deno 
TypeScript-проектом и может рендериться без werf, с помощью одного лишь 
[рантайма Deno TypeScript](https://deno.com/).
+- Большая экосистема — TypeScript один из самых популярных языков с обширной 
документацией, ресурсами сообщества и инструментарием.
+- Возможность использовать практически любую стороннюю 
TypeScript/JavaScript-библиотеку, например 
[kubernetes-models](https://github.com/tommy351/kubernetes-models-ts), 
[cdk8s](https://cdk8s.io/) или любую другую из экосистем npm/Deno.
+- Тестирование — тестируйте код с помощью привычных TypeScript-библиотек и 
инструментов.
+- Никаких дополнительных требований к хосту — для развёртывания 
TypeScript-чарта достаточно только werf. Не нужно устанавливать Node, Deno, 
npm, модули npm или что-либо ещё. Мы берём это на себя — просто выполните `werf 
converge`.
+- Изолированные окружения — модули npm по умолчанию включаются в бандл чарта, 
а рантайм Deno может предоставляться хостовой системой, так что во время 
развёртывания не будет сетевых обращений, кроме обращений к самому Kubernetes.
+- Безопасность — код выполняется в изолированной песочнице Deno без доступа к 
сети, переменным окружения и запуску процессов. Доступ к файловой системе 
ограничен чтением файлов чарта.
+
+## Быстрый старт
+
+Инициализация TypeScript-файлов в существующем чарте:
+
+```shell
+werf chart ts init
+```
+
+Команда создаст директорию `.helm/ts/` с готовым скелетом TypeScript-проекта и 
несколькими файлами с примерами ресурсов. Попробуйте отредактировать 
`ts/src/deployment.ts` — например, изменить количество реплик — и проверьте 
результат:
+
+```shell
+werf render --dev
+```
+
+Для развёртывания:
+
+```shell
+werf converge --dev
+```
+
+## Структура чарта
+
+{% tree_file_viewer 'examples/ts/example-chart' default_file='ts/src/index.ts' 
expanded=true %}
+
+## Разработка чарта с TypeScript-шаблонами
+
+Установите [Deno](https://docs.deno.com/runtime/getting_started/installation/) 
и следуйте [руководству по 
настройке](https://docs.deno.com/runtime/getting_started/setup_your_environment/)
 для вашей IDE или редактора (VS Code, JetBrains, Neovim и др.).
+
+Инициализируйте TypeScript-файлы в чарте, если они ещё не инициализированы:
+
+```shell
+werf chart ts init
+```
+
+Откройте директорию `ts/` в редакторе как обычный Deno/TypeScript-проект. 
Работайте с ним так же, как с любой TypeScript-кодовой базой — запускайте 
скрипты, пишите тесты, используйте отладчик. Deno предоставляет богатый набор 
инструментов для тестирования, линтинга, форматирования и многого другого. 
Подробнее см. [документацию Deno](https://docs.deno.com/runtime/).
+
+Структуру кодовой базы можно организовать по своему усмотрению. Единственное 
требование — файл `ts/src/index.ts` должен существовать, и функция `render` из 
`@nelm/chart-ts-sdk` **обязательно** должна быть вызвана. Иначе рендеринг 
TypeScript не произойдёт.
+
+Для отладки рендеринга шаблонов в окружении, максимально близком к тому, как 
werf запускает Deno, используйте задачу `dev` из `ts/deno.json`:
+
+```shell
+cd .helm/ts
+deno task dev
+```
+TypeScript-движок вызовет функцию `render` из `ts/src/index.ts` с примером 
контекста из `ts/input.example.yaml`. Полученный YAML будет выведен в консоль 
после сообщения `Rendered manifests:`.
+
+Устанавливайте библиотеки с помощью `deno add`, например попробуйте установить 
[kubernetes-models](https://github.com/tommy351/kubernetes-models-ts) — 
библиотеку для строгой типизации Kubernetes-ресурсов:
+
+```shell
+deno add npm:kubernetes-models
+```
+
+Зависимость добавится в `deno.json` автоматически. Теперь можно импортировать 
и использовать её:
+
+```typescript
+// .helm/ts/src/deployment.ts:
+import { Deployment } from 'kubernetes-models/apps/v1';
+
+export function newDeployment($: WerfRenderContext): object {
+  return new Deployment({
+    metadata: { name: 'myapp' },
+    spec: {
+      // other fields
+    },
+  }).toJSON();
+}
+```
+
+Чтобы убедиться, что всё работает с рантаймом Deno из werf, выполните:
+```shell
+werf lint --dev
+```
+
+```shell
+werf render --dev
+```
+
+## Как развернуть чарт с TypeScript-шаблонами
+
+Просто запустите `werf converge`: бинарный файл Deno будет скачан в кеш, 
TypeScript-шаблоны будут отрендерены и развёрнуты.
+
+> **Обратите внимание**: Согласно [политикам гиттерминизма]({{ 
"/usage/project_configuration/giterminism.html" | true_relative_url }}), все 
изменённые файлы должны быть закоммичены.
+
+## Развёртывание в изолированных окружениях
+
+Для изолированных окружений, где Deno не может быть скачан автоматически:
+
+1. Опубликуйте чарт:
+   ```shell
+   werf bundle publish --repo example.org/mycompany/myapp
+   ```
+   Все модули npm будут минифицированы и включены в бандл, так что чарт можно 
установить даже без доступа к интернету.
+
+2. На целевой машине в изолированном окружении (без доступа к сети) скачайте 
Deno вручную и выполните:
+   ```shell
+   werf bundle apply --repo example.org/mycompany/myapp --deno-binary-path 
/usr/local/bin/deno
+   ```
+   Где `/usr/local/bin/deno` — путь к локальному бинарному файлу Deno. 
TypeScript-шаблоны будут отрендерены и развёрнуты с использованием 
предварительно скомпилированных файлов из бандла чарта. 
+
+## Обзор SDK API
+
+TypeScript-движок использует пакет 
[@nelm/chart-ts-sdk](https://github.com/werf/nelm-chart-ts-sdk).
+
+### Функции "render" и "generate"
+
+`index.ts` обязан вызвать функцию `render()`. Функция `generate()`, которая 
непосредственно генерирует манифесты, должна быть передана в `render()` в 
качестве аргумента, например:
+
+```typescript
+// .helm/ts/src/index.ts:
+await render(generate);
+```
+
+### Объект "WerfRenderContext"
+
+Функция `generate` получает корневой контекст в переменной `$` типа 
`WerfRenderContext` — тот же контекст, что и в Helm-шаблонах:
+
+| Поле | Тип | Описание |
+|------|-----|----------|
+| `$.Values` | `WerfServiceValues` | Параметры чарта + сервисные значения в 
`$.Values.global.werf` |
+| `$.Release` | `Release` | Информация о релизе |
+| `$.Chart` | `ChartMetadata` | Метаданные из Chart.yaml |
+| `$.Capabilities` | `Capabilities` | Возможности кластера (API-версии, версия 
Kubernetes) |
+| `$.Files` | `Record<string, Uint8Array>` | Исходные файлы чарта (кроме 
`templates/` и `ts/`) |
+
+Пример контекста — в файле `ts/input.example.yaml`. Подробнее о параметрах и 
их формировании — в разделе [Параметризация шаблонов]({{ 
"/usage/deploy/values.html" | true_relative_url }}).
+
+### Объект "RenderResult"
+
+Функция `generate` возвращает `RenderResult` — объект с массивом `manifests`. 
Каждый элемент — обычный JavaScript-объект, представляющий Kubernetes-ресурс. 
Пример вывода:
+
+```json
+{
+  "manifests": [
+    {
+      "apiVersion": "apps/v1",
+      "kind": "Deployment",
+      "metadata": { "name": "myapp" },
+      "spec": { "..." }
+    },
+    {
+      "apiVersion": "v1",
+      "kind": "Service",
+      "metadata": { "name": "myapp" },
+      "spec": { "..." }
+    }
+  ]
+}
+```
+
+Каждый объект сериализуется в YAML и включается в итоговый результат 
рендеринга.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/go.mod new/werf-2.68.0/go.mod
--- old/werf-2.67.2/go.mod      2026-04-21 14:30:19.000000000 +0200
+++ new/werf-2.68.0/go.mod      2026-04-23 17:45:53.000000000 +0200
@@ -64,7 +64,7 @@
        github.com/werf/kubedog-for-werf-helm v0.0.0-20241217155728-9d45c48b82b6
        github.com/werf/lockgate v0.1.1
        github.com/werf/logboek v0.6.1
-       github.com/werf/nelm v1.23.3-0.20260413152602-4b9025485408
+       github.com/werf/nelm v1.23.3-0.20260421131859-144b20397bc1
        github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf
        go.opentelemetry.io/otel v1.24.0
        go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/go.sum new/werf-2.68.0/go.sum
--- old/werf-2.67.2/go.sum      2026-04-21 14:30:19.000000000 +0200
+++ new/werf-2.68.0/go.sum      2026-04-23 17:45:53.000000000 +0200
@@ -1424,6 +1424,8 @@
 github.com/werf/nelm v1.23.3-0.20260410174511-c9b4ee409c39/go.mod 
h1:Gy6XJ42rwJVA+UyB6ka9/DVFPzm+lh7lmcjLAZECdIs=
 github.com/werf/nelm v1.23.3-0.20260413152602-4b9025485408 
h1:OH415PBFMNKk1p09p1fanT9P9LLjDUFcfK2NzuliL3M=
 github.com/werf/nelm v1.23.3-0.20260413152602-4b9025485408/go.mod 
h1:Gy6XJ42rwJVA+UyB6ka9/DVFPzm+lh7lmcjLAZECdIs=
+github.com/werf/nelm v1.23.3-0.20260421131859-144b20397bc1 
h1:Lsh9+Px89cfXa5U+WbBz2Z4pI5QYSkxZPmUDLxSPz0M=
+github.com/werf/nelm v1.23.3-0.20260421131859-144b20397bc1/go.mod 
h1:Gy6XJ42rwJVA+UyB6ka9/DVFPzm+lh7lmcjLAZECdIs=
 github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf 
h1:K51qz209c1yJgKzPw8AeS72T21F/ACp0VI3RJvT4THA=
 github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf/go.mod 
h1:7RJXSGPKKPEvfPqrTwNA8jT7y52O0ebwhSbSn29ESMA=
 github.com/xanzy/go-gitlab v0.31.0/go.mod 
h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.67.2/trdl_channels.yaml 
new/werf-2.68.0/trdl_channels.yaml
--- old/werf-2.67.2/trdl_channels.yaml  2026-04-21 14:30:19.000000000 +0200
+++ new/werf-2.68.0/trdl_channels.yaml  2026-04-23 17:45:53.000000000 +0200
@@ -38,12 +38,12 @@
   - name: "2"
     channels:
       - name: alpha
-        version: 2.67.1
+        version: 2.67.2
       - name: beta
-        version: 2.67.0
+        version: 2.67.2
       - name: ea
-        version: 2.67.0
+        version: 2.67.2
       - name: stable
         version: 2.65.4
       - name: rock-solid
-        version: 2.64.0
+        version: 2.65.4

++++++ werf.obsinfo ++++++
--- /var/tmp/diff_new_pack.OxZOmU/_old  2026-05-13 17:23:50.170485865 +0200
+++ /var/tmp/diff_new_pack.OxZOmU/_new  2026-05-13 17:23:50.178486197 +0200
@@ -1,5 +1,5 @@
 name: werf
-version: 2.67.2
-mtime: 1776774619
-commit: d8dc46d511d9b688016ca74fc34c254c628efba2
+version: 2.68.0
+mtime: 1776959153
+commit: 32fdbc60570bbd34b916e28f6ec61d33e5cd72d4
 

Reply via email to