Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package digger-cli for openSUSE:Factory 
checked in at 2026-01-21 14:19:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/digger-cli (Old)
 and      /work/SRC/openSUSE:Factory/.digger-cli.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "digger-cli"

Wed Jan 21 14:19:19 2026 rev:46 rq:1328427 version:0.6.141

Changes:
--------
--- /work/SRC/openSUSE:Factory/digger-cli/digger-cli.changes    2026-01-17 
14:55:00.835836003 +0100
+++ /work/SRC/openSUSE:Factory/.digger-cli.new.1928/digger-cli.changes  
2026-01-21 14:19:31.748304469 +0100
@@ -1,0 +2,11 @@
+Wed Jan 21 06:13:00 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 0.6.141:
+  * fix: add pagination to GetUserTeams for teams and members
+    (#2545)
+  * improve error messages for units when permission denied (#2539)
+  * Update GCP link in README.md (#2535)
+  * Docs/envref (#2532)
+  * docs: replace broken url (#2531)
+
+-------------------------------------------------------------------

Old:
----
  digger-cli-0.6.140.obscpio

New:
----
  digger-cli-0.6.141.obscpio

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

Other differences:
------------------
++++++ digger-cli.spec ++++++
--- /var/tmp/diff_new_pack.8xtwyb/_old  2026-01-21 14:19:33.684385252 +0100
+++ /var/tmp/diff_new_pack.8xtwyb/_new  2026-01-21 14:19:33.688385419 +0100
@@ -19,7 +19,7 @@
 %define executable_name digger
 
 Name:           digger-cli
-Version:        0.6.140
+Version:        0.6.141
 Release:        0
 Summary:        CLI for the digger open source IaC orchestration tool
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.8xtwyb/_old  2026-01-21 14:19:33.732387255 +0100
+++ /var/tmp/diff_new_pack.8xtwyb/_new  2026-01-21 14:19:33.736387422 +0100
@@ -6,7 +6,7 @@
     <param name="exclude">go.mod</param>
     <param name="exclude">go.work</param>
     <param name="exclude">go.work.sum</param>
-    <param name="revision">v0.6.140</param>
+    <param name="revision">v0.6.141</param>
     <param name="match-tag">v*</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.8xtwyb/_old  2026-01-21 14:19:33.764388590 +0100
+++ /var/tmp/diff_new_pack.8xtwyb/_new  2026-01-21 14:19:33.768388757 +0100
@@ -1,7 +1,7 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/diggerhq/digger</param>
-              <param 
name="changesrevision">4121d16e2490ab91cf08b62ad90740902b20e628</param></service><service
 name="tar_scm">
+              <param 
name="changesrevision">3ba4b6b9059736c32605d68329e3da66c7c0833e</param></service><service
 name="tar_scm">
                 <param 
name="url">https://github.com/johanneskastl/digger</param>
               <param 
name="changesrevision">8fe377068e53e2050ff4c745388d8428d2b13bb0</param></service></servicedata>
 (No newline at EOF)

++++++ digger-cli-0.6.140.obscpio -> digger-cli-0.6.141.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/digger-cli-0.6.140/README.md 
new/digger-cli-0.6.141/README.md
--- old/digger-cli-0.6.140/README.md    2026-01-16 00:22:27.000000000 +0100
+++ new/digger-cli-0.6.141/README.md    2026-01-21 04:28:40.000000000 +0100
@@ -43,7 +43,7 @@
 ## Getting Started
 
 - [GitHub Actions + 
AWS](https://docs.digger.dev/getting-started/github-actions-+-aws)
-- [GitHub Actions + 
GCP](https://docs.digger.dev/getting-started/github-actions-and-gcp)
+- [GitHub Actions + 
GCP](https://docs.opentaco.dev/ce/gcp/setting-up-gcp-+-gh-actions)
 
 ## How it works
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/digger-cli-0.6.140/docs/ce/getting-started/with-terraform.mdx 
new/digger-cli-0.6.141/docs/ce/getting-started/with-terraform.mdx
--- old/digger-cli-0.6.140/docs/ce/getting-started/with-terraform.mdx   
2026-01-16 00:22:27.000000000 +0100
+++ new/digger-cli-0.6.141/docs/ce/getting-started/with-terraform.mdx   
2026-01-21 04:28:40.000000000 +0100
@@ -25,7 +25,7 @@
 
   <Step title="Install the Digger GitHub App">
 
-Install the Digger [GitHub 
App](https://github.com/apps/digger-pro/installations/select_target) into your 
repository.
+Install the Digger [GitHub App](https://github.com/apps/opentaco-cloud) into 
your repository.
 
 <Note>
 Digger GitHub App does not need access to your cloud account, it just starts 
jobs in your CI. All sensitive data stays in your CI job.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/digger-cli-0.6.140/docs/ce/reference/environment-variables.mdx 
new/digger-cli-0.6.141/docs/ce/reference/environment-variables.mdx
--- old/digger-cli-0.6.140/docs/ce/reference/environment-variables.mdx  
1970-01-01 01:00:00.000000000 +0100
+++ new/digger-cli-0.6.141/docs/ce/reference/environment-variables.mdx  
2026-01-21 04:28:40.000000000 +0100
@@ -0,0 +1,450 @@
+---
+title: "Environment Variables"
+description: "Reference for configuring OpenTaco services via environment 
variables"
+---
+
+<Note>
+  Variables marked as **Required** must be set for the service to function. 
Optional variables have sensible defaults.
+</Note>
+
+---
+
+## OpenTaco/Statesman (State Backend)
+
+The state backend service manages Terraform state storage and querying.
+
+### Server Configuration
+
+<ParamField path="OPENTACO_PORT" type="string" default="8080">
+  HTTP server port
+</ParamField>
+
+<ParamField path="OPENTACO_HOST" type="string" default="0.0.0.0">
+  HTTP server bind address
+</ParamField>
+
+<ParamField path="OPENTACO_LOG_LEVEL" type="string" default="info">
+  Logging level: `debug`, `info`, `warn`, or `error`
+</ParamField>
+
+<ParamField path="OPENTACO_ENABLE_INTERNAL_ENDPOINTS" type="boolean" 
default="false">
+  Enable internal management endpoints
+</ParamField>
+
+### Storage Backend
+
+<ParamField path="OPENTACO_STORAGE" type="string" default="memory">
+  State file storage type. Options: `memory` (non-persistent) or `s3`
+</ParamField>
+
+<AccordionGroup>
+  <Accordion title="S3 Storage Configuration">
+    Required when `OPENTACO_STORAGE=s3`
+
+    <ParamField path="OPENTACO_S3_BUCKET" type="string" required>
+      S3 bucket name for state storage
+    </ParamField>
+
+    <ParamField path="OPENTACO_S3_REGION" type="string" required>
+      AWS region for S3 bucket
+    </ParamField>
+
+    <ParamField path="OPENTACO_S3_PREFIX" type="string">
+      Key prefix for state files in S3
+    </ParamField>
+
+    <ParamField path="AWS_ACCESS_KEY_ID" type="string">
+      AWS access key (or use IAM role)
+    </ParamField>
+
+    <ParamField path="AWS_SECRET_ACCESS_KEY" type="string">
+      AWS secret key (or use IAM role)
+    </ParamField>
+
+    <ParamField path="AWS_REGION" type="string">
+      AWS region (alternative to S3_REGION)
+    </ParamField>
+
+    <ParamField path="AWS_ENDPOINT" type="string">
+      Custom S3-compatible endpoint URL
+    </ParamField>
+
+    <ParamField path="AWS_SDK_LOAD_CONFIG" type="boolean">
+      Load AWS config from default locations
+    </ParamField>
+  </Accordion>
+</AccordionGroup>
+
+### Query Backend
+
+<ParamField path="OPENTACO_QUERY_BACKEND" type="string" default="sqlite">
+  Database type for state queries. Options: `sqlite`, `postgres`, `mysql`, 
`mssql`
+</ParamField>
+
+<AccordionGroup>
+  <Accordion title="SQLite Configuration">
+    Used when `OPENTACO_QUERY_BACKEND=sqlite`
+
+    <ParamField path="OPENTACO_SQLITE_DB_PATH" type="string" 
default="./data/taco.db">
+      SQLite database file path
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_CACHE" type="string" default="shared">
+      SQLite cache mode
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_BUSY_TIMEOUT" type="string" default="5s">
+      Busy timeout duration
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_MAX_OPEN_CONNS" type="number" 
default="25">
+      Maximum open connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_MAX_IDLE_CONNS" type="number" 
default="10">
+      Maximum idle connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_CONN_MAX_LIFETIME" type="string" 
default="300s">
+      Connection max lifetime
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_CONN_MAX_IDLE_TIME" type="string" 
default="600s">
+      Connection max idle time
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_PRAGMA_JOURNAL_MODE" type="string" 
default="WAL">
+      SQLite journal mode
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_PRAGMA_FOREIGN_KEYS" type="string" 
default="ON">
+      Foreign keys enforcement
+    </ParamField>
+
+    <ParamField path="OPENTACO_SQLITE_PRAGMA_BUSY_TIMEOUT" type="number" 
default="5000">
+      Busy timeout in milliseconds
+    </ParamField>
+  </Accordion>
+
+  <Accordion title="PostgreSQL Configuration">
+    Used when `OPENTACO_QUERY_BACKEND=postgres`
+
+    <ParamField path="OPENTACO_POSTGRES_HOST" type="string" 
default="localhost" required>
+      PostgreSQL server host
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_PORT" type="number" default="5432">
+      PostgreSQL server port
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_USER" type="string" default="postgres" 
required>
+      Database username
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_PASSWORD" type="string" required>
+      Database password
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_DBNAME" type="string" default="taco">
+      Database name
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_SSLMODE" type="string" 
default="disable">
+      SSL mode: `disable`, `require`, `verify-ca`, or `verify-full`
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_MAX_OPEN_CONNS" type="number" 
default="25">
+      Maximum open connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_MAX_IDLE_CONNS" type="number" 
default="10">
+      Maximum idle connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_CONN_MAX_LIFETIME" type="string" 
default="300s">
+      Connection max lifetime
+    </ParamField>
+
+    <ParamField path="OPENTACO_POSTGRES_CONN_MAX_IDLE_TIME" type="string" 
default="600s">
+      Connection max idle time
+    </ParamField>
+  </Accordion>
+
+  <Accordion title="MySQL Configuration">
+    Used when `OPENTACO_QUERY_BACKEND=mysql`
+
+    <ParamField path="OPENTACO_MYSQL_HOST" type="string" default="localhost" 
required>
+      MySQL server host
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_PORT" type="number" default="3306">
+      MySQL server port
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_USER" type="string" default="root" 
required>
+      Database username
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_PASSWORD" type="string" required>
+      Database password
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_DBNAME" type="string" default="taco">
+      Database name
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_CHARSET" type="string" default="utf8mb4">
+      Character set
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_MAX_OPEN_CONNS" type="number" 
default="25">
+      Maximum open connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_MAX_IDLE_CONNS" type="number" 
default="10">
+      Maximum idle connections
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_CONN_MAX_LIFETIME" type="string" 
default="300s">
+      Connection max lifetime
+    </ParamField>
+
+    <ParamField path="OPENTACO_MYSQL_CONN_MAX_IDLE_TIME" type="string" 
default="600s">
+      Connection max idle time
+    </ParamField>
+  </Accordion>
+
+  <Accordion title="MSSQL Configuration">
+    Used when `OPENTACO_QUERY_BACKEND=mssql`
+
+    <ParamField path="OPENTACO_MSSQL_HOST" type="string" default="localhost" 
required>
+      MSSQL server host
+    </ParamField>
+
+    <ParamField path="OPENTACO_MSSQL_PORT" type="number" default="1433">
+      MSSQL server port
+    </ParamField>
+
+    <ParamField path="OPENTACO_MSSQL_USER" type="string" required>
+      Database username
+    </ParamField>
+
+    <ParamField path="OPENTACO_MSSQL_PASSWORD" type="string" required>
+      Database password
+    </ParamField>
+
+    <ParamField path="OPENTACO_MSSQL_DBNAME" type="string" default="taco">
+      Database name
+    </ParamField>
+  </Accordion>
+</AccordionGroup>
+
+### Authentication
+
+<ParamField path="OPENTACO_AUTH_DISABLE" type="boolean" default="false">
+  Disable authentication (not recommended for production)
+</ParamField>
+
+<AccordionGroup>
+  <Accordion title="OIDC/OAuth Configuration">
+    <ParamField path="OPENTACO_AUTH_ISSUER" type="string">
+      OIDC issuer URL
+    </ParamField>
+
+    <ParamField path="OPENTACO_AUTH_CLIENT_ID" type="string">
+      OIDC client ID
+    </ParamField>
+
+    <ParamField path="OPENTACO_AUTH_CLIENT_SECRET" type="string">
+      OIDC client secret
+    </ParamField>
+
+    <ParamField path="OPENTACO_AUTH_AUTH_URL" type="string">
+      OIDC authorization URL
+    </ParamField>
+
+    <ParamField path="OPENTACO_AUTH_TOKEN_URL" type="string">
+      OIDC token URL
+    </ParamField>
+
+    <ParamField path="OPENTACO_AUTH_DEV_SKIP_VERIFY" type="boolean" 
default="false">
+      Skip OIDC verification (development only)
+    </ParamField>
+
+    <ParamField path="OPENTACO_OAUTH_STATE_KEY" type="string">
+      32+ character encryption key for OAuth state (required for PKCE flow)
+    </ParamField>
+  </Accordion>
+
+  <Accordion title="JWT Configuration">
+    <ParamField path="OPENTACO_TOKENS_KID" type="string" default="k1">
+      JWT Key ID
+    </ParamField>
+
+    <ParamField path="OPENTACO_TOKENS_PRIVATE_KEY_PEM_PATH" type="string">
+      Path to Ed25519 private key PEM file for signing JWTs
+    </ParamField>
+
+    <ParamField path="OPENTACO_TOKENS_ACCESS_TTL" type="string" default="1h">
+      Access token lifetime
+    </ParamField>
+
+    <ParamField path="OPENTACO_TOKENS_REFRESH_TTL" type="string" 
default="720h">
+      Refresh token lifetime (30 days)
+    </ParamField>
+
+    <ParamField path="OPENTACO_PUBLIC_BASE_URL" type="string">
+      Public base URL for JWT issuer claim
+    </ParamField>
+  </Accordion>
+</AccordionGroup>
+
+### Sandbox Execution
+
+<ParamField path="OPENTACO_SANDBOX_PROVIDER" type="string" default="none">
+  Sandbox provider for remote execution. Options: `e2b` or `none`
+</ParamField>
+
+<AccordionGroup>
+  <Accordion title="E2B Sandbox Configuration">
+    Required when `OPENTACO_SANDBOX_PROVIDER=e2b`
+
+    <ParamField path="OPENTACO_E2B_SIDECAR_URL" type="string" required>
+      E2B sidecar service URL (e.g., `http://sidecar:9100`)
+    </ParamField>
+
+    <ParamField path="OPENTACO_E2B_POLL_INTERVAL" type="string" default="5s">
+      Polling interval for sandbox status
+    </ParamField>
+
+    <ParamField path="OPENTACO_E2B_POLL_TIMEOUT" type="string" default="30m">
+      Maximum time to poll for results
+    </ParamField>
+
+    <ParamField path="OPENTACO_E2B_HTTP_TIMEOUT" type="string" default="60s">
+      HTTP request timeout for E2B API
+    </ParamField>
+  </Accordion>
+</AccordionGroup>
+
+
+---
+
+
+### Database
+
+<ParamField path="DATABASE_URL" type="string" required>
+  PostgreSQL connection string (e.g., 
`postgres://user:password@host:5432/dbname?sslmode=disable`)
+</ParamField>
+
+### GitHub App Integration
+
+<ParamField path="GITHUB_APP_ID" type="string" required>
+  GitHub App ID from app settings
+</ParamField>
+
+<ParamField path="GITHUB_APP_CLIENT_ID" type="string" required>
+  GitHub App client ID
+</ParamField>
+
+<ParamField path="GITHUB_APP_CLIENT_SECRET" type="string" required>
+  GitHub App client secret
+</ParamField>
+
+<ParamField path="GITHUB_APP_PRIVATE_KEY_BASE64" type="string" required>
+  Base64-encoded GitHub App private key
+</ParamField>
+
+<ParamField path="GITHUB_APP_PRIVATE_KEY" type="string">
+  Raw GitHub App private key (alternative to BASE64 version)
+</ParamField>
+
+<ParamField path="GITHUB_WEBHOOK_SECRET" type="string" required>
+  Webhook secret for verifying GitHub webhook signatures
+</ParamField>
+
+<ParamField path="GITHUB_ORG" type="string">
+  Restrict to specific GitHub organization
+</ParamField>
+
+<ParamField path="GITHUB_PAT_TOKEN" type="string">
+  GitHub Personal Access Token (for additional API access)
+</ParamField>
+
+
+
+## Sandbox Sidecar (E2B)
+
+Provides sandboxed execution environment for Terraform operations.
+
+<ParamField path="PORT" type="number" default="9100">
+  HTTP server port
+</ParamField>
+
+<ParamField path="SANDBOX_RUNNER" type="string" required>
+  Must be set to `e2b`
+</ParamField>
+
+<ParamField path="E2B_API_KEY" type="string" required>
+  E2B API key for authentication
+</ParamField>
+
+<ParamField path="E2B_BAREBONES_TEMPLATE_ID" type="string" required>
+  E2B template ID for runtime environment
+</ParamField>
+
+---
+
+## UI/Frontend Service
+
+Web interface for OpenTaco.
+
+### WorkOS Authentication
+
+<ParamField path="WORKOS_CLIENT_ID" type="string" required>
+  WorkOS client ID
+</ParamField>
+
+<ParamField path="WORKOS_API_KEY" type="string" required>
+  WorkOS API key
+</ParamField>
+
+<ParamField path="WORKOS_REDIRECT_URI" type="string" required>
+  OAuth redirect URI (e.g., `http://localhost:3000/api/auth/callback`)
+</ParamField>
+
+<ParamField path="WORKOS_COOKIE_PASSWORD" type="string" required>
+  Cookie encryption password (minimum 32 characters)
+</ParamField>
+
+<ParamField path="WORKOS_WEBHOOK_SECRET" type="string">
+  WorkOS webhook secret for verification
+</ParamField>
+
+
+## Database Services
+
+### PostgreSQL
+
+When using the bundled PostgreSQL container:
+
+<ParamField path="POSTGRES_USER" type="string" default="digger">
+  Database username
+</ParamField>
+
+<ParamField path="POSTGRES_PASSWORD" type="string" required>
+  Database password
+</ParamField>
+
+<ParamField path="POSTGRES_DB" type="string" default="digger">
+  Database name
+</ParamField>
+
+
+
+## See Also
+
+- [Self-host with Docker](/ce/self-host/deploy-docker)
+- [Self-host with Docker Compose](/ce/self-host/deploy-docker-compose)
+- [Self-host with Helm](/ce/self-host/deploy-helm)
+- [Authentication Methods](/ce/self-host/auth-methods)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/digger-cli-0.6.140/docs/docs.json 
new/digger-cli-0.6.141/docs/docs.json
--- old/digger-cli-0.6.140/docs/docs.json       2026-01-16 00:22:27.000000000 
+0100
+++ new/digger-cli-0.6.141/docs/docs.json       2026-01-21 04:28:40.000000000 
+0100
@@ -147,7 +147,8 @@
               "ce/reference/action-inputs",
               "ce/reference/api",
               "ce/reference/terraform.lock",
-              "ce/reference/comment-args"
+              "ce/reference/comment-args",
+              "ce/reference/environment-variables"
             ]
           },
           {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/digger-cli-0.6.140/libs/ci/github/github.go 
new/digger-cli-0.6.141/libs/ci/github/github.go
--- old/digger-cli-0.6.140/libs/ci/github/github.go     2026-01-16 
00:22:27.000000000 +0100
+++ new/digger-cli-0.6.141/libs/ci/github/github.go     2026-01-21 
04:28:40.000000000 +0100
@@ -44,19 +44,49 @@
 }
 
 func (svc GithubService) GetUserTeams(organisation string, user string) 
([]string, error) {
-       teamsResponse, _, err := 
svc.Client.Teams.ListTeams(context.Background(), organisation, nil)
-       if err != nil {
-               return nil, fmt.Errorf("failed to list github teams: %v", err)
-       }
        var teams []string
-       for _, team := range teamsResponse {
-               teamMembers, _, _ := 
svc.Client.Teams.ListTeamMembersBySlug(context.Background(), organisation, 
*team.Slug, nil)
-               for _, member := range teamMembers {
-                       if *member.Login == user {
-                               teams = append(teams, *team.Name)
-                               break
+
+       // Paginate through all teams
+       opts := &github.ListOptions{PerPage: 100}
+       for {
+               teamsResponse, resp, err := 
svc.Client.Teams.ListTeams(context.Background(), organisation, opts)
+               if err != nil {
+                       return nil, fmt.Errorf("failed to list github teams: 
%v", err)
+               }
+
+               for _, team := range teamsResponse {
+                       // Paginate through all team members
+                       memberOpts := &github.TeamListTeamMembersOptions{
+                               ListOptions: github.ListOptions{PerPage: 100},
                        }
+               memberLoop:
+                       for {
+                               teamMembers, memberResp, err := 
svc.Client.Teams.ListTeamMembersBySlug(
+                                       context.Background(), organisation, 
*team.Slug, memberOpts)
+                               if err != nil {
+                                       // Log error but continue with other 
teams
+                                       slog.Warn("failed to list team 
members", "team", *team.Slug, "error", err)
+                                       break
+                               }
+
+                               for _, member := range teamMembers {
+                                       if *member.Login == user {
+                                               teams = append(teams, 
*team.Name)
+                                               break memberLoop // Found user, 
move to next team
+                                       }
+                               }
+
+                               if memberResp.NextPage == 0 {
+                                       break
+                               }
+                               memberOpts.Page = memberResp.NextPage
+                       }
+               }
+
+               if resp.NextPage == 0 {
+                       break
                }
+               opts.Page = resp.NextPage
        }
 
        return teams, nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/digger-cli-0.6.140/taco/internal/unit/handler.go 
new/digger-cli-0.6.141/taco/internal/unit/handler.go
--- old/digger-cli-0.6.140/taco/internal/unit/handler.go        2026-01-16 
00:22:27.000000000 +0100
+++ new/digger-cli-0.6.141/taco/internal/unit/handler.go        2026-01-21 
04:28:40.000000000 +0100
@@ -149,6 +149,18 @@
                                "detail": fmt.Sprintf("A unit with name '%s' 
already exists in this organization", name),
                        })
                }
+               if err == storage.ErrForbidden {
+                       logger.Warn("Permission denied to create unit",
+                               "operation", "create_unit",
+                               "name", name,
+                               "org_id", orgCtx.OrgID,
+                       )
+                       analytics.SendEssential("unit_create_failed_forbidden")
+                       return c.JSON(http.StatusForbidden, map[string]string{
+                               "error": "Permission denied",
+                               "detail": "You don't have permission to create 
units. Contact your administrator to request access.",
+                       })
+               }
                logger.Error("Failed to create unit",
                        "operation", "create_unit",
                        "name", name,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/digger-cli-0.6.140/ui/src/api/statesman_units.ts 
new/digger-cli-0.6.141/ui/src/api/statesman_units.ts
--- old/digger-cli-0.6.140/ui/src/api/statesman_units.ts        2026-01-16 
00:22:27.000000000 +0100
+++ new/digger-cli-0.6.141/ui/src/api/statesman_units.ts        2026-01-21 
04:28:40.000000000 +0100
@@ -202,7 +202,11 @@
     });
 
     if (!response.ok) {
-        throw new Error(`Failed to create unit: ${response.statusText}`);
+        const errorBody = await response.json().catch(() => ({}));
+        if (response.status === 403) {
+            throw new Error(errorBody.detail || "You don't have permission to 
create units. Contact your administrator to request access.");
+        }
+        throw new Error(errorBody.detail || errorBody.error || `Failed to 
create unit: ${response.statusText}`);
     }
 
     return response.json();

++++++ digger-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.8xtwyb/_old  2026-01-21 14:19:37.416540975 +0100
+++ /var/tmp/diff_new_pack.8xtwyb/_new  2026-01-21 14:19:37.424541309 +0100
@@ -1,5 +1,5 @@
 name: digger-cli
-version: 0.6.140
-mtime: 1768519347
-commit: 4121d16e2490ab91cf08b62ad90740902b20e628
+version: 0.6.141
+mtime: 1768966120
+commit: 3ba4b6b9059736c32605d68329e3da66c7c0833e
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/digger-cli/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.digger-cli.new.1928/vendor.tar.gz differ: char 135, 
line 2

Reply via email to