Skip to content

Commit b689905

Browse files
committed
fix(release): authenticate pin smoke polling
1 parent 4918c2a commit b689905

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ Format:
1111

1212
- None yet.
1313

14+
## [v0.1.3] - 2026-03-15
15+
16+
### Fixed
17+
- Release paid smoke now uses the bearer token issued by `POST /pins` when polling pin status, so CI validates the authenticated owner flow that production enforces.
18+
1419
## [v0.1.2] - 2026-03-15
1520

1621
### Fixed
@@ -43,7 +48,8 @@ Format:
4348
### Docs
4449
- Added Railway deployment and Taiko x402 smoke runbooks covering volumes, backups, rollback, and go-live validation.
4550

46-
[Unreleased]: https://github.com/taikoxyz/tack/compare/v0.1.2...HEAD
51+
[Unreleased]: https://github.com/taikoxyz/tack/compare/v0.1.3...HEAD
52+
[v0.1.3]: https://github.com/taikoxyz/tack/releases/tag/v0.1.3
4753
[v0.1.2]: https://github.com/taikoxyz/tack/releases/tag/v0.1.2
4854
[v0.1.1]: https://github.com/taikoxyz/tack/releases/tag/v0.1.1
4955
[v0.1.0]: https://github.com/taikoxyz/tack/releases/tag/v0.1.0

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tack",
3-
"version": "0.1.2",
3+
"version": "0.1.3",
44
"private": true,
55
"description": "Pin to IPFS, pay with your wallet. No account needed.",
66
"scripts": {

src/scripts/x402-smoke.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { toClientEvmSigner } from '@x402/evm';
77
import { ExactEvmScheme } from '@x402/evm/exact/client';
88
import { createPublicClient, defineChain, http, type Hex } from 'viem';
99
import { privateKeyToAccount } from 'viem/accounts';
10+
import { WALLET_AUTH_TOKEN_RESPONSE_HEADER } from '../services/x402';
1011

1112
interface SmokeConfig {
1213
apiBaseUrl: string;
@@ -296,10 +297,17 @@ async function run(): Promise<void> {
296297
throw new Error(`Paid pin response missing requestid: ${paidBodyText}`);
297298
}
298299

300+
const ownerToken = pinResult.response.headers.get(WALLET_AUTH_TOKEN_RESPONSE_HEADER);
301+
if (!ownerToken) {
302+
throw new Error(`Paid POST /pins response missing ${WALLET_AUTH_TOKEN_RESPONSE_HEADER} header`);
303+
}
304+
299305
const pinStatusResponse = await fetchWithTimeout(
300306
`${pinsUrl}/${pinResponse.requestid}`,
301307
{
302-
headers: pinResult.paymentSignatureHeaders
308+
headers: {
309+
authorization: `Bearer ${ownerToken}`
310+
}
303311
},
304312
config.requestTimeoutMs
305313
);

0 commit comments

Comments
 (0)