Skip to content

Commit 326ff95

Browse files
authored
Merge branch 'master' into feat/single-cli-bundle
2 parents 757809d + 84647b9 commit 326ff95

81 files changed

Lines changed: 8385 additions & 4655 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/check.yaml

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
- uses: actions/checkout@v7
2929

3030
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
31-
uses: actions/setup-node@v6
31+
uses: actions/setup-node@v7
3232
with:
3333
node-version: ${{ env.LATEST_NODE_VERSION }}
3434

@@ -52,7 +52,7 @@ jobs:
5252
- uses: actions/checkout@v7
5353

5454
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
55-
uses: actions/setup-node@v6
55+
uses: actions/setup-node@v7
5656
with:
5757
node-version: ${{ env.LATEST_NODE_VERSION }}
5858

@@ -88,16 +88,16 @@ jobs:
8888
- uses: actions/checkout@v7
8989

9090
- name: Use Node.js ${{ matrix.node-version }}
91-
uses: actions/setup-node@v6
91+
uses: actions/setup-node@v7
9292
with:
9393
node-version: ${{ matrix.node-version }}
9494

9595
- name: Install pnpm and dependencies
9696
uses: apify/actions/pnpm-install@v1.3.1
9797

98-
- name: Setup Python 3.12 (Windows)
98+
- name: Set up Python (Windows)
9999
if: ${{ matrix.os == 'windows-2025' }}
100-
uses: actions/setup-python@v6
100+
uses: actions/setup-python@v7
101101
with:
102102
python-version: 3.14
103103

@@ -121,7 +121,7 @@ jobs:
121121
- uses: actions/checkout@v7
122122

123123
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
124-
uses: actions/setup-node@v6
124+
uses: actions/setup-node@v7
125125
with:
126126
node-version: ${{ env.LATEST_NODE_VERSION }}
127127

@@ -144,7 +144,7 @@ jobs:
144144
fail-fast: false
145145
matrix:
146146
os: [ubuntu-latest, windows-2025]
147-
python-version: ["3.10", "3.11", "3.12", "3.13"]
147+
python-version: ["3.11", "3.12", "3.13", "3.14"]
148148

149149
runs-on: ${{ matrix.os }}
150150

@@ -156,15 +156,15 @@ jobs:
156156
- uses: actions/checkout@v7
157157

158158
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
159-
uses: actions/setup-node@v6
159+
uses: actions/setup-node@v7
160160
with:
161161
node-version: ${{ env.LATEST_NODE_VERSION }}
162162

163163
- name: Install pnpm and dependencies
164164
uses: apify/actions/pnpm-install@v1.3.1
165165

166166
- name: Set up Python ${{ matrix.python-version }}
167-
uses: actions/setup-python@v6
167+
uses: actions/setup-python@v7
168168
with:
169169
python-version: ${{ matrix.python-version }}
170170

@@ -173,6 +173,26 @@ jobs:
173173
TEST_USER_TOKEN: ${{ secrets.APIFY_TEST_USER_API_TOKEN }}
174174
run: pnpm run test:python
175175

176+
# Aggregate gate for the whole Python Support matrix. Branch protection requires only this single
177+
# check, so the matrix versions can change without having to update the required checks in lockstep.
178+
test_python_support_result:
179+
if: ${{ always() && !contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[docs build]') }}
180+
181+
name: Python Support Result
182+
183+
needs: [test_python_support]
184+
185+
runs-on: ubuntu-latest
186+
187+
steps:
188+
- name: Verify the Python Support matrix succeeded
189+
run: |
190+
result="${{ needs.test_python_support.result }}"
191+
echo "Python Support matrix result: ${result}"
192+
if [ "${result}" != "success" ]; then
193+
exit 1
194+
fi
195+
176196
docs:
177197
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[docs build]') }}
178198

@@ -184,7 +204,7 @@ jobs:
184204
- uses: actions/checkout@v7
185205

186206
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
187-
uses: actions/setup-node@v6
207+
uses: actions/setup-node@v7
188208
with:
189209
node-version: ${{ env.LATEST_NODE_VERSION }}
190210

@@ -220,7 +240,7 @@ jobs:
220240
- uses: actions/checkout@v7
221241

222242
- name: Use Node.js ${{ env.LATEST_NODE_VERSION }}
223-
uses: actions/setup-node@v6
243+
uses: actions/setup-node@v7
224244
with:
225245
node-version: ${{ env.LATEST_NODE_VERSION }}
226246

.github/workflows/docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
2727

2828
- name: Use Node.js
29-
uses: actions/setup-node@v6
29+
uses: actions/setup-node@v7
3030
with:
3131
node-version: 24
3232

.github/workflows/e2e.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
- uses: actions/checkout@v7
4848

4949
- name: Use Node.js 24
50-
uses: actions/setup-node@v6
50+
uses: actions/setup-node@v7
5151
with:
5252
node-version: 24
5353

.github/workflows/issue_labeling.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ jobs:
1313
issues: write
1414

1515
steps:
16-
# Add the "t-dx" label to all new issues
16+
# Add the "t-builders" label to all new issues
1717
- uses: actions/github-script@v9
1818
with:
1919
script: |
2020
github.rest.issues.addLabels({
2121
issue_number: context.issue.number,
2222
owner: context.repo.owner,
2323
repo: context.repo.repo,
24-
labels: ["t-dx"]
24+
labels: ["t-builders"]
2525
})

.github/workflows/pre_release.yaml

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
steps:
3636
- uses: lewagon/wait-on-check-action@v1.8.0
3737
with:
38-
ref: ${{ github.ref }}
38+
ref: ${{ github.sha }}
3939
repo-token: ${{ secrets.GITHUB_TOKEN }}
4040
check-regexp: (Build|Lint.*|(Local|API) Tests.*|Python Support.*|Docs build)
4141
wait-interval: 5
@@ -55,7 +55,7 @@ jobs:
5555
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
5656

5757
- name: Use Node.js
58-
uses: actions/setup-node@v6
58+
uses: actions/setup-node@v7
5959
with:
6060
node-version: 24
6161
registry-url: https://registry.npmjs.org
@@ -110,7 +110,7 @@ jobs:
110110
fetch-depth: 0
111111

112112
- name: Use Node.js
113-
uses: actions/setup-node@v6
113+
uses: actions/setup-node@v7
114114
with:
115115
node-version: 24
116116
registry-url: https://registry.npmjs.org
@@ -156,6 +156,11 @@ jobs:
156156
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
157157

158158
steps:
159+
- name: Checkout repository
160+
uses: actions/checkout@v7
161+
with:
162+
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
163+
159164
# This step also deals with unzipping the archive from GitHub, so we get a big folder with all the bundles!
160165
- name: Download bundles
161166
uses: actions/download-artifact@v8
@@ -168,13 +173,31 @@ jobs:
168173
run: |
169174
ls -la bundles
170175
176+
- name: Use Node.js
177+
uses: actions/setup-node@v7
178+
with:
179+
node-version: 24
180+
181+
- name: Install pnpm and dependencies
182+
uses: apify/actions/pnpm-install@v1.3.1
183+
184+
- name: Set pre-release version
185+
run: pnpm version ${{ needs.update_changelog.outputs.pre_release_version }} --no-git-tag-version --allow-same-version --no-git-checks
186+
187+
- name: Report install size
188+
id: install-size
189+
run: node scripts/report-install-size.mjs
190+
171191
- name: Create release
172192
uses: softprops/action-gh-release@v3
173193
with:
174194
tag_name: v${{ needs.update_changelog.outputs.pre_release_version }}
175195
name: ${{ needs.update_changelog.outputs.pre_release_version }}
176196
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
177-
body: ${{ needs.release_metadata.outputs.release_notes }}
197+
body: |
198+
${{ needs.release_metadata.outputs.release_notes }}
199+
200+
${{ steps.install-size.outputs.report }}
178201
prerelease: true
179202
files: |
180203
bundles/*

.github/workflows/publish_to_npm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
ref: ${{ inputs.ref }}
3131

3232
- name: Use Node.js
33-
uses: actions/setup-node@v6
33+
uses: actions/setup-node@v7
3434
with:
3535
node-version: 24
3636
registry-url: "https://registry.npmjs.org"

.github/workflows/release.yaml

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
- uses: lewagon/wait-on-check-action@v1.8.0
6565
if: ${{ steps.check_skip.outputs.skipped == 'false' }}
6666
with:
67-
ref: ${{ github.ref }}
67+
ref: ${{ github.sha }}
6868
repo-token: ${{ secrets.GITHUB_TOKEN }}
6969
check-regexp: (Build|(Local|API) Tests.*|Python Support.*|Docs build)
7070
wait-interval: 5
@@ -83,7 +83,7 @@ jobs:
8383
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
8484

8585
- name: Use Node.js
86-
uses: actions/setup-node@v6
86+
uses: actions/setup-node@v7
8787
with:
8888
node-version: 24
8989

@@ -145,7 +145,7 @@ jobs:
145145
fetch-depth: 0
146146

147147
- name: Use Node.js
148-
uses: actions/setup-node@v6
148+
uses: actions/setup-node@v7
149149
with:
150150
node-version: 24
151151
registry-url: https://registry.npmjs.org
@@ -191,6 +191,11 @@ jobs:
191191
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192192

193193
steps:
194+
- name: Checkout repository
195+
uses: actions/checkout@v7
196+
with:
197+
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
198+
194199
# This step also deals with unzipping the archive from GitHub, so we get a big folder with all the bundles!
195200
- name: Download bundles
196201
uses: actions/download-artifact@v8
@@ -203,13 +208,28 @@ jobs:
203208
run: |
204209
ls -la bundles
205210
211+
- name: Use Node.js
212+
uses: actions/setup-node@v7
213+
with:
214+
node-version: 24
215+
216+
- name: Install pnpm and dependencies
217+
uses: apify/actions/pnpm-install@v1.3.1
218+
219+
- name: Report install size
220+
id: install-size
221+
run: node scripts/report-install-size.mjs
222+
206223
- name: Create release
207224
uses: softprops/action-gh-release@v3
208225
with:
209226
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
210227
name: ${{ needs.release_metadata.outputs.version_number }}
211228
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
212-
body: ${{ needs.release_metadata.outputs.release_notes }}
229+
body: |
230+
${{ needs.release_metadata.outputs.release_notes }}
231+
232+
${{ steps.install-size.outputs.report }}
213233
files: |
214234
bundles/*
215235

.github/workflows/version_docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
1818

1919
- name: Use Node.js
20-
uses: actions/setup-node@v6
20+
uses: actions/setup-node@v7
2121
with:
2222
node-version: 24
2323

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.7.1](https://github.com/apify/apify-cli/releases/tag/v1.7.1) (2026-07-09)
6+
7+
### 🐛 Bug Fixes
8+
9+
- **create:** Fail with actionable error when template download is not a zip ([#1272](https://github.com/apify/apify-cli/pull/1272)) ([ea3223e](https://github.com/apify/apify-cli/commit/ea3223ecbc3ab6c8c62e92f30a059054b5fabf98)) by [@l2ysho](https://github.com/l2ysho), closes [#1271](https://github.com/apify/apify-cli/issues/1271)
10+
11+
12+
## [1.7.0](https://github.com/apify/apify-cli/releases/tag/v1.7.0) (2026-07-02)
13+
14+
### 🚀 Features
15+
16+
- **auth:** Use os keyring for secure credential storage ([#1148](https://github.com/apify/apify-cli/pull/1148)) ([bbfea42](https://github.com/apify/apify-cli/commit/bbfea4286345aa5f15429d20d9d52013e7adc637)) by [@l2ysho](https://github.com/l2ysho), closes [#1115](https://github.com/apify/apify-cli/issues/1115)
17+
- **mcp:** Add 'apify mcp install <client>' command ([#1145](https://github.com/apify/apify-cli/pull/1145)) ([f7bcd58](https://github.com/apify/apify-cli/commit/f7bcd585c474be1cff6578802939adceced33c15)) by [@MQ37](https://github.com/MQ37)
18+
- **push:** Add final status block and structured JSON output ([#1199](https://github.com/apify/apify-cli/pull/1199)) ([71560dd](https://github.com/apify/apify-cli/commit/71560dd8aa8de6bbb5e0c2db7a6b9e9d48abd4b8)) by [@l2ysho](https://github.com/l2ysho), closes [#1136](https://github.com/apify/apify-cli/issues/1136)
19+
- **cli:** Add wait commands and enhance agentic output for builds and runs ([#1168](https://github.com/apify/apify-cli/pull/1168)) ([d3c3e5b](https://github.com/apify/apify-cli/commit/d3c3e5b16a29029acdbb3252622a56a587cf8829)) by [@l2ysho](https://github.com/l2ysho), closes [#1140](https://github.com/apify/apify-cli/issues/1140)
20+
- **call:** Emit explicit final run status and JSON output (#1139) ([#1198](https://github.com/apify/apify-cli/pull/1198)) ([ce8c287](https://github.com/apify/apify-cli/commit/ce8c287c862d03b42e8fe3be77fca65aa03f438d)) by [@l2ysho](https://github.com/l2ysho), closes [#1139](https://github.com/apify/apify-cli/issues/1139)
21+
- **auth:** Use OS keyring in bundle distributions ([#1197](https://github.com/apify/apify-cli/pull/1197)) ([7f4e4ae](https://github.com/apify/apify-cli/commit/7f4e4aec787053f06ed454303a2456915a33eace)) by [@l2ysho](https://github.com/l2ysho), closes [#1170](https://github.com/apify/apify-cli/issues/1170)
22+
23+
### 🐛 Bug Fixes
24+
25+
- **run:** Propagate the Actor's non-zero exit code ([#1195](https://github.com/apify/apify-cli/pull/1195)) ([ca1c009](https://github.com/apify/apify-cli/commit/ca1c00987995a7495eb4f8c4bb74c6c010ec7ee9)) by [@l2ysho](https://github.com/l2ysho), closes [#1180](https://github.com/apify/apify-cli/issues/1180), [#1190](https://github.com/apify/apify-cli/issues/1190)
26+
- **changelog:** Don't write unreleased preview on pre-release ([#1231](https://github.com/apify/apify-cli/pull/1231)) ([bb5b454](https://github.com/apify/apify-cli/commit/bb5b454eb550cde0a59b6996e3f2a112bca03f1d)) by [@patrikbraborec](https://github.com/patrikbraborec), closes [#1230](https://github.com/apify/apify-cli/issues/1230)
27+
28+
529
## [1.6.2](https://github.com/apify/apify-cli/releases/tag/v1.6.2) (2026-06-03)
630

731
### 🚀 Features

CLAUDE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,25 @@ If you modified a command's flags, args, description, or added/removed a command
2121
- New commands must be registered in `src/commands/_register.ts` (or the parent `_index.ts` for subcommands).
2222
- Do not add docstrings, comments, or type annotations to code you did not change. Keep diffs tight.
2323

24+
## Install size
25+
26+
The CLI is installed globally by many users and in Actors, so keep the npm install footprint lean. Always look for opportunities to shrink it:
27+
28+
- Prefer Node.js built-ins over dependencies, and prefer dependencies already in the tree over new ones.
29+
- Before adding a dependency, check what it drags in: `npm install <pkg>` in an empty temp dir, then `du -sh node_modules`. Mention the install-size impact in the PR description.
30+
- When touching code that uses a dependency, check whether the dependency is still pulling its weight — a single small helper from a large package is a candidate for replacement or removal.
31+
- To measure the CLI's own footprint, run `node scripts/report-install-size.mjs` — it packs the current tree and compares tarball, unpacked, and full-install sizes against the latest published version. The release workflows run it and embed the report in the GitHub release notes.
32+
2433
## Testing
2534

2635
- Tests use **Vitest**. See [CONTRIBUTING.md](./CONTRIBUTING.md#writing-tests) for `useAuthSetup` and `useTempPath` hook usage.
2736
- API tests must include `[api]` in the test name and live in `test/api/`.
2837
- Always `import process from 'node:process'` in command/lib code — never use `globalThis.process`. This is required for test cwd mocks to work.
2938

39+
## Pull requests
40+
41+
Keep PR descriptions concise: what changed and why, key numbers, follow-ups. Short bullet points over narration; don't restate the diff or describe the process.
42+
3043
## Things to avoid
3144

3245
- Do not use `--no-verify` to skip git hooks. Fix the underlying issue.

0 commit comments

Comments
 (0)