Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
25726c3
feat(desktop): Fork branding, Dev packaging flavor, fork update channels
github-actions[bot] Jun 18, 2026
9209fe1
feat(server): orchestration — move threads, goal command, lifecycle r…
github-actions[bot] Jun 18, 2026
efedba8
feat(server): provider runtime — Codex thread env injection, OpenCode…
github-actions[bot] Jun 18, 2026
95a2ccb
feat(server): Grok text generation provider
github-actions[bot] Jun 18, 2026
60251d6
fix(server): repair auth scope and pairing-proof migration collisions
github-actions[bot] Jun 18, 2026
e7c9970
feat(server): headless update checks and supporting server fixes
github-actions[bot] Jun 18, 2026
bf4aa08
feat(web): fork client — auto-reconnect/liveness, goal UI, thread-mov…
github-actions[bot] Jun 18, 2026
566a0bd
feat(mobile): EAS build config and fork fixes
github-actions[bot] Jun 18, 2026
c353bd4
fork: contracts / client-runtime / shared adjustments
github-actions[bot] Jun 18, 2026
48f7da5
ci: fork release/sync/nightly pipeline, mobile track automation, tooling
github-actions[bot] Jun 18, 2026
c8bb414
docs: fork operations and user guides
github-actions[bot] Jun 18, 2026
914952b
chore: workspace config (tsdown catalog), align package versions to u…
github-actions[bot] Jun 18, 2026
9d9a4fe
ci: reconcile fork release.yml with upstream relay client-tracing test
github-actions[bot] Jun 18, 2026
8a08803
test(server): stabilize flaky codex re-probe assertion
github-actions[bot] Jun 18, 2026
54cb5bd
ci(mobile): wait for finished eas dev build
jimprince Jun 20, 2026
4ab10f1
fix(mobile): modularize google pods for ios
jimprince Jun 21, 2026
4670a3e
fix(mobile): use js entry for ios updates
jimprince Jun 21, 2026
da08f4a
fix(mobile): normalize expo fingerprint paths
jimprince Jun 21, 2026
dd090eb
fix: complete upstream rebase integration v2
jimprince Jun 21, 2026
1619c25
fix(mobile): patch clerk swift import access
jimprince Jun 21, 2026
0a6c3d1
ci(release): build macOS unsigned when no provisioning profile
jimprince Jun 21, 2026
3a9484f
fix: sync fork with latest upstream nightly
jimprince Jun 21, 2026
f0177da
fix: sign mac releases without passkey profile
jimprince Jun 21, 2026
ad9b45c
fix: repair rebased nightly build
github-actions[bot] Jun 29, 2026
2ee823b
ci: refresh lockfile before fork release stamp
github-actions[bot] Jun 29, 2026
9294bad
ci: build oxlint plugin before checks
github-actions[bot] Jun 29, 2026
e4ced13
fix(ci): auto-resolve fork mobile app config
github-actions[bot] Jul 3, 2026
9edb525
fix(release): keep fork desktop product name stable
github-actions[bot] Jul 3, 2026
6528853
fix(ci): auto-resolve fork mobile config in push nightly
github-actions[bot] Jul 3, 2026
81e99a1
fix(ci): repair Sync Upstream failure
github-actions[bot] Jul 7, 2026
90372ed
fix(ci): repair Sync Upstream failure
github-actions[bot] Jul 9, 2026
d773807
fix(ci): repair Sync Upstream failure
github-actions[bot] Jul 8, 2026
4216277
fix(ci): repair Sync Upstream failure
github-actions[bot] Jul 9, 2026
3169627
ci: share upstream rebase reproduction (#32)
jimprince Jul 10, 2026
635a490
feat: extract t3-thread operator cli
Apr 25, 2026
816160a
fix: accept instanceId model selections in snapshots
May 6, 2026
ad10ff1
docs: add remote update and cleanup runbooks
May 6, 2026
0262085
docs: deprecate t3-agent naming
May 7, 2026
996d361
test: track dist cli bundle
May 7, 2026
3525d0b
fix: ship executable dist bundle
May 7, 2026
6a5da70
fix: cover legacy model selection snapshots
May 8, 2026
2d0844a
feat: resolve caller environment metadata
May 20, 2026
61eadbe
fix: override vulnerable transitive dependencies
jimprince May 20, 2026
813414a
feat: resolve caller environment metadata
May 20, 2026
93035c1
feat: add project management commands
May 20, 2026
83185de
build: refresh bundled cli
jimprince May 21, 2026
b4eb23d
feat: support opencode antigravity model selections
May 21, 2026
94f4c42
build: refresh bundled cli after audit overrides
May 21, 2026
7eef6d3
docs: record Willow handoff thread
May 27, 2026
1381413
docs: record markdown vault handoff
May 27, 2026
8332981
docs: record protein topology handoff
May 28, 2026
ec3c6a1
fix: auto-start completion notification watcher
Jun 10, 2026
6702729
feat: support raw thread ids for lifecycle commands
Jun 17, 2026
30a9cae
fix: adopt OAuth token-exchange auth for t3code 0.0.25-nightly.20260603+
Jun 4, 2026
e46a981
feat: sync models from live app roster
Jun 18, 2026
f6c58b8
feat: harden thread lifecycle and watcher routing
Jun 18, 2026
6518c15
docs: clarify remote operations ownership
Jul 10, 2026
7cc100d
feat: integrate t3-thread workspace
Jul 10, 2026
04e4932
chore: prepare integrated t3-thread for cutover
Jul 11, 2026
9e0359f
fix(ci): bypass interactive git wrapper in replay (#33)
jimprince Jul 11, 2026
623e019
feat(t3-thread): prefer GPT-5.6 Terra by default
Jul 11, 2026
fa0b16f
fix(ci): repair Sync Upstream failure
Jul 11, 2026
496e0e6
fix(ci): use PAT for upstream workflow sync
Jul 11, 2026
a96ffc9
chore(release): prepare v0.0.29-nightly.20260709.769-fork.1
github-actions[bot] Jul 11, 2026
a78d276
fix(release): prevent duplicate nightly release runs
Jul 11, 2026
3fb37a8
chore(release): prepare v0.0.29-nightly.20260709.769-fork.2
github-actions[bot] Jul 11, 2026
4864de9
chore(t3-thread): refresh generated CLI
Jul 11, 2026
4c739f8
chore(release): prepare v0.0.29-nightly.20260709.769-fork.3
github-actions[bot] Jul 11, 2026
3df8b09
test(release): track current pnpm runtime
Jul 11, 2026
6de2640
test: align link proof coverage with upstream
Jul 11, 2026
5018402
chore(release): prepare v0.0.29-nightly.20260709.769-fork.4
github-actions[bot] Jul 11, 2026
00e6bd5
fix(release): expose headless dependency install output
Jul 11, 2026
b459b89
chore(release): prepare v0.0.29-nightly.20260709.769-fork.5
github-actions[bot] Jul 11, 2026
9b766bc
fix(release): approve staged native dependency builds
Jul 12, 2026
c1f4578
chore(release): prepare v0.0.29-nightly.20260709.769-fork.6
github-actions[bot] Jul 12, 2026
f8afb15
fix(mobile): install EAS CLI with npm
Jul 12, 2026
34649c0
test(mobile): validate EAS CLI packager
Jul 12, 2026
88f6db7
fix(mobile): use pnpm for fingerprinting
Jul 12, 2026
913274e
fix(mobile): remove stale router plugin
Jul 12, 2026
7e4f75f
docs: record Rare Case Atlas handoff
Jul 12, 2026
8a4dce7
fix(mobile): make EAS prebuild portable
Jul 12, 2026
b80c6d0
chore(release): prepare v0.0.29-nightly.20260712.791-fork.1
github-actions[bot] Jul 12, 2026
3584b79
feat(t3-thread): implement Plan Ready proposals
Jul 12, 2026
997c70d
Merge pull request #36 from jimprince/t3code/t3-thread-integration
jimprince Jul 12, 2026
4a00698
fix(mobile): preserve upstream Expo config
Jul 12, 2026
21c4452
test(mobile): cover EAS app variants
Jul 12, 2026
b3e49c4
docs: rename canonical fork path
Jul 13, 2026
6a35a85
Merge pull request #37 from jimprince/chore/rename-t3code-fork-path
jimprince Jul 13, 2026
6e8d0f9
fix(ci): use available runner for production mobile deploy
Jul 13, 2026
cedcfdd
Merge pull request #38 from jimprince/fix/eas-production-runner
jimprince Jul 13, 2026
5c18895
fix(ci): provide Apple API key to EAS production
Jul 13, 2026
2458764
Merge pull request #39 from jimprince/fix/eas-production-credentials
jimprince Jul 13, 2026
3a88186
fix(ci): bootstrap production iOS signing in CI
Jul 13, 2026
c3151f7
Merge pull request #40 from jimprince/fix/eas-production-bootstrap
jimprince Jul 13, 2026
5795c2f
fix(ci): submit completed production EAS builds
Jul 13, 2026
68dc268
Merge pull request #41 from jimprince/fix/eas-production-submit
jimprince Jul 13, 2026
809212c
fix(ci): configure API key for EAS submit
Jul 13, 2026
a40dd1a
Merge pull request #43 from jimprince/fix/eas-production-submit-key
jimprince Jul 13, 2026
8ab1e01
fix(ci): keep EAS signing bootstrap local
Jul 13, 2026
9844d5b
fix(ci): wait for production EAS submissions
Jul 13, 2026
e68885b
Merge pull request #44 from jimprince/fix/eas-production-submit-wait
jimprince Jul 13, 2026
32c7155
Merge pull request #42 from jimprince/fix/eas-production-credential-r…
jimprince Jul 13, 2026
1ee84d0
fix(ci): upload production IPA with Transporter
Jul 13, 2026
8a371b1
Merge pull request #45 from jimprince/fix/direct-app-store-upload
jimprince Jul 13, 2026
62c240f
fix(ci): use bundled Apple uploader
Jul 13, 2026
fbf2d93
Merge pull request #46 from jimprince/fix/direct-app-store-upload-altool
jimprince Jul 13, 2026
e32a289
fix(ci): support Xcode 16 app uploads
Jul 13, 2026
a7c2ea8
Merge pull request #47 from jimprince/fix/direct-app-store-upload-xco…
jimprince Jul 13, 2026
755913c
fix(ci): ensure production App Store record
Jul 13, 2026
e9f5fb7
Merge pull request #48 from jimprince/fix/ensure-app-store-record
jimprince Jul 13, 2026
5c1f840
fix(ci): preflight App Store app record
Jul 13, 2026
d2ea22f
Merge pull request #49 from jimprince/fix/app-store-record-preflight
jimprince Jul 13, 2026
9529c70
fix(ci): separate production build and upload
Jul 13, 2026
7ff88f6
fix(mobile): align App Store production record
Jul 13, 2026
98ef94d
Merge pull request #51 from jimprince/fix/align-app-store-record
jimprince Jul 13, 2026
f4f3bc8
Merge pull request #50 from jimprince/fix/eas-production-no-auto-submit
jimprince Jul 13, 2026
4187af0
fix: recover stale pending thread state
jimprince May 28, 2026
d3b18ec
fix(web): use explicit client runtime import
jimprince Jul 13, 2026
3358493
fix: complete stale pending session recovery
Jul 13, 2026
73de5ec
fix: start fresh after non-portable thread transfer
Jul 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
node_modules
.bun
.turbo
.git
.env
.env.*
release
release-mock
build
dist
dist-electron
apps/*/dist
packages/*/dist
*.log
*.tsbuildinfo
17 changes: 10 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ on:
jobs:
check:
name: Check
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -25,11 +25,14 @@ jobs:
- name: Ensure Electron runtime is installed
run: vp run --filter @t3tools/desktop ensure:electron

- name: Build oxlint plugin
run: vp run --filter @t3tools/oxlint-plugin-t3code build

- name: Check
run: vp check

- name: Typecheck
run: vpr typecheck
run: vp run typecheck

- name: Build desktop pipeline
run: vp run build:desktop
Expand All @@ -42,8 +45,8 @@ jobs:

test:
name: Test
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -63,7 +66,7 @@ jobs:

mobile_native_static_analysis:
name: Mobile Native Static Analysis
runs-on: blacksmith-12vcpu-macos-26
runs-on: macos-15
timeout-minutes: 10
steps:
- name: Checkout
Expand All @@ -84,7 +87,7 @@ jobs:

release_smoke:
name: Release Smoke
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
Expand Down
74 changes: 73 additions & 1 deletion .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ concurrency:
jobs:
deploy_relay:
name: Deploy production relay
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 15
environment:
name: production
Expand All @@ -36,17 +36,73 @@ jobs:
APNS_BUNDLE_ID: ${{ vars.APNS_BUNDLE_ID }}
ALCHEMY_TELEMETRY_DISABLED: "1"
steps:
- name: Check relay deployment config
id: relay-config
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
PLANETSCALE_API_TOKEN_ID: ${{ secrets.PLANETSCALE_API_TOKEN_ID }}
PLANETSCALE_API_TOKEN: ${{ secrets.PLANETSCALE_API_TOKEN }}
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}
run: |
required=(
CLOUDFLARE_ACCOUNT_ID
PLANETSCALE_ORGANIZATION
AXIOM_ORG_ID
RELAY_API_ZONE_NAME
RELAY_TUNNEL_ZONE_NAME
CLERK_PUBLISHABLE_KEY
CLERK_JWT_AUDIENCE
APNS_ENVIRONMENT
APNS_TEAM_ID
APNS_KEY_ID
APNS_BUNDLE_ID
CLOUDFLARE_API_TOKEN
PLANETSCALE_API_TOKEN_ID
PLANETSCALE_API_TOKEN
AXIOM_TOKEN
CLERK_SECRET_KEY
APNS_PRIVATE_KEY
)

present=0
missing=()
for name in "${required[@]}"; do
if [ -n "${!name}" ]; then
present=$((present + 1))
else
missing+=("$name")
fi
done

if [ "$present" -eq 0 ]; then
echo "configured=false" >> "$GITHUB_OUTPUT"
echo "::notice::Relay production deploy is skipped because production relay Actions variables and secrets are not configured."
exit 0
fi

if [ "${#missing[@]}" -gt 0 ]; then
echo "::error::Relay production deploy config is incomplete. Missing: ${missing[*]}"
exit 1
fi

echo "configured=true" >> "$GITHUB_OUTPUT"

- name: Checkout
if: steps.relay-config.outputs.configured == 'true'
uses: actions/checkout@v6

- name: Setup Vite+
if: steps.relay-config.outputs.configured == 'true'
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Deploy production relay stage
if: steps.relay-config.outputs.configured == 'true'
id: deploy
run: vp run --filter t3code-relay deploy --stage prod --yes --github-output
env:
Expand All @@ -58,6 +114,7 @@ jobs:
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}

- name: Publish relay deploy commit status
if: steps.relay-config.outputs.configured == 'true'
uses: actions/github-script@v8
with:
script: |
Expand All @@ -78,3 +135,18 @@ jobs:
description,
target_url: `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`,
});

- name: Publish skipped relay deploy commit status
if: steps.relay-config.outputs.configured == 'false'
uses: actions/github-script@v8
with:
script: |
await github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: context.sha,
state: "success",
context: "Relay deploy / production",
description: "Relay production deploy skipped; config is not present.",
target_url: `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`,
});
134 changes: 134 additions & 0 deletions .github/workflows/fork-push-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
name: Fork Push Nightly

# Creates updater-visible nightly fork releases for Brad-authored changes.
# Normal pushes to main should ship through the nightly feed only. The next
# upstream stable sync still rebases these fork commits onto the upstream stable
# tag and publishes the integrated stable release.

on:
push:
branches:
- main
# Keep this allowlist narrow. Helper-script/docs/workflow maintenance should
# not publish an updater-visible desktop release.
paths:
- "apps/desktop/**"
- "apps/server/**"
- "apps/web/**"
- "assets/**"
- "packages/**"
- "scripts/build-desktop-artifact.ts"
- "scripts/build-headless-artifact.ts"
- "scripts/lib/brand-assets.ts"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
workflow_dispatch:

permissions:
actions: write
contents: write

concurrency:
group: fork-push-nightly
cancel-in-progress: false

jobs:
tag:
name: Tag fork push nightly
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout fork
uses: actions/checkout@v6
with:
fetch-depth: 0
# Fork nightly rebases can include upstream workflow changes.
token: ${{ secrets.GH_PAT || github.token }}

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: false

- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Resolve and push next fork tag
env:
GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
EVENT_NAME: ${{ github.event_name }}
HEAD_MESSAGE: ${{ github.event.head_commit.message }}
run: |
set -euo pipefail

if [[ "$EVENT_NAME" == "push" && "$HEAD_MESSAGE" == chore\(release\):\ prepare* ]]; then
echo "Release finalize version-bump commit; no fork push nightly tag needed."
exit 0
fi

# sync-upstream pushes main and then a release tag. Give the tag push
# a moment to appear so sync-created commits do not get double-tagged
# as push nightlies.
sleep 30
git fetch --tags origin

existing_head_tags=$(git tag --points-at HEAD --list 'v*')
if [[ -n "$existing_head_tags" ]]; then
echo "HEAD already has release tag(s); no fork push nightly tag needed:"
echo "$existing_head_tags" | sed 's/^/ /'
exit 0
fi

upstream_tag=$(gh release list --repo pingdotgg/t3code --limit 50 \
--json tagName,isPrerelease,publishedAt \
--jq '[.[] | select(.isPrerelease and (.tagName | test("(^|-)v[0-9]+\\.[0-9]+\\.[0-9]+-nightly\\.")))] | sort_by(.publishedAt) | reverse | .[0].tagName')
if [[ -z "$upstream_tag" || "$upstream_tag" == "null" ]]; then
echo "::error::No nightly release found on upstream."
exit 1
fi
echo "Latest upstream nightly release: $upstream_tag"

export CI_REPAIR_BOT_UPSTREAM_TARGET="refs/tags/upstream/${upstream_tag}"
export CI_REPAIR_BOT_UPSTREAM_SOURCE_REF="refs/tags/${upstream_tag}"
export CI_REPAIR_BOT_CONFLICT_MODE=fail
scripts/ci/reproduce-sync-upstream

mapfile -t existing_numbers < <(git tag --list "${upstream_tag}-fork.*" \
| awk -F '-fork\\.' 'NF==2 && $2 ~ /^[0-9]+$/ { print $2 }' \
| sort -n)

if [[ ${#existing_numbers[@]} -eq 0 ]]; then
next_n=1
else
last="${existing_numbers[-1]}"
next_n=$((last + 1))
fi

new_tag="${upstream_tag}-fork.${next_n}"
version="${new_tag#v}"
# A freshly rebased upstream may change package manifests before the
# fork release-version stamp. Refresh the lockfile first so the
# install used to run the stamping script is not blocked by stale
# pre-rebase lock metadata.
vp install --lockfile-only --ignore-scripts
vp install --frozen-lockfile --ignore-scripts
node scripts/update-release-package-versions.ts "$version"
vp fmt apps/server/package.json apps/desktop/package.json apps/web/package.json packages/contracts/package.json
vp install --lockfile-only --ignore-scripts

if ! git diff --quiet -- apps/server/package.json apps/desktop/package.json apps/web/package.json packages/contracts/package.json pnpm-lock.yaml; then
git add apps/server/package.json apps/desktop/package.json apps/web/package.json packages/contracts/package.json pnpm-lock.yaml
git commit -m "chore(release): prepare $new_tag"
else
echo "Package versions already match $version."
fi

git tag "$new_tag" HEAD
git push origin HEAD:main --force-with-lease
git push origin "$new_tag"
echo "Pushed $new_tag for fork push nightly update. release.yml will publish it to the nightly feed."
78 changes: 78 additions & 0 deletions .github/workflows/mobile-eas-development-rollback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Mobile EAS Development Rollback

on:
workflow_dispatch:
inputs:
runtime_version:
description: "Runtime version to roll back to the embedded update"
required: true
default: "0.1.0"
type: string
message:
description: "EAS rollback message"
required: false
type: string

permissions:
contents: read

jobs:
rollback-development-update:
name: Roll back iOS development runtime to embedded
runs-on: ubuntu-24.04
timeout-minutes: 15
env:
APP_VARIANT: development
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
NODE_OPTIONS: --max-old-space-size=8192
steps:
- name: Require Expo token
run: |
if [ -z "$EXPO_TOKEN" ]; then
echo "EXPO_TOKEN repository secret is required to roll back EAS updates." >&2
exit 1
fi

- name: Checkout
uses: actions/checkout@v6

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Expose pnpm
run: |
pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")"
vp_pnpm_bin="$HOME/.vite-plus/package_manager/pnpm/$pnpm_version/pnpm/bin"
echo "$vp_pnpm_bin" >> "$GITHUB_PATH"
"$vp_pnpm_bin/pnpm" --version

- name: Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
packager: pnpm

- name: Roll back iOS development runtime to embedded
working-directory: apps/mobile
env:
RUNTIME_VERSION: ${{ inputs.runtime_version }}
ROLLBACK_MESSAGE: ${{ inputs.message }}
run: |
if [ -z "$ROLLBACK_MESSAGE" ]; then
ROLLBACK_MESSAGE="rollback development runtime ${RUNTIME_VERSION} to embedded"
fi

APP_VARIANT=development \
CI=1 \
EXPO_NO_GIT_STATUS=1 \
eas update:roll-back-to-embedded \
--channel development \
--runtime-version "$RUNTIME_VERSION" \
--platform ios \
--message "$ROLLBACK_MESSAGE" \
--non-interactive
Loading
Loading