Compare commits

..
25 changed files with 189 additions and 193 deletions
-12
View File
@@ -1,17 +1,5 @@
# Changelog
## 0.11.1 - 2026-10-07
### Added
- Added Claude Haiku 5.5 for Claude Code 2.1.293 and newer ([#6332](https://github.com/getpaseo/paseo/pull/6332))
### Fixed
- Fixed Claude tool calls that run longer than 30 seconds, such as WebFetch or MCP tools, showing up as subagents ([#6308](https://github.com/getpaseo/paseo/pull/6308))
- Fixed subagents that finish while the app is disconnected staying "working" until one is opened ([#6316](https://github.com/getpaseo/paseo/pull/6316))
- Fixed a Claude agent's history showing "No activity to display" after a daemon restart when its transcript is in another project folder, such as after moving the daemon or running Windows Claude Code from WSL ([#6301](https://github.com/getpaseo/paseo/pull/6301))
## 0.11.0 - 2026-10-07
Paseo 0.11 adds support for the [plugin registry](https://paseo.sh/plugins). Browse community plugins there, install one with `paseo plugin add owner/slug`, or [submit your own](https://paseo.sh/docs/plugins/publishing#plugin-registry).
@@ -1,8 +0,0 @@
Added
- Added Claude Haiku 5.5 for Claude Code 2.1.293 and newer
Fixed
- Fixed Claude tool calls that run longer than 30 seconds, such as WebFetch or MCP tools, showing up as subagents
- Fixed subagents that finish while the app is disconnected staying "working" until one is opened
Full notes: https://paseo.sh/changelog
@@ -1,8 +0,0 @@
Added
- Added Claude Haiku 5.5 for Claude Code 2.1.293 and newer
Fixed
- Fixed Claude tool calls that run longer than 30 seconds, such as WebFetch or MCP tools, showing up as subagents
- Fixed subagents that finish while the app is disconnected staying "working" until one is opened
Full notes: https://paseo.sh/changelog
@@ -1,8 +0,0 @@
Added
- Added Claude Haiku 5.5 for Claude Code 2.1.293 and newer
Fixed
- Fixed Claude tool calls that run longer than 30 seconds, such as WebFetch or MCP tools, showing up as subagents
- Fixed subagents that finish while the app is disconnected staying "working" until one is opened
Full notes: https://paseo.sh/changelog
@@ -1,8 +0,0 @@
Added
- Added Claude Haiku 5.5 for Claude Code 2.1.293 and newer
Fixed
- Fixed Claude tool calls that run longer than 30 seconds, such as WebFetch or MCP tools, showing up as subagents
- Fixed subagents that finish while the app is disconnected staying "working" until one is opened
Full notes: https://paseo.sh/changelog
+28 -28
View File
@@ -1,12 +1,12 @@
{
"name": "paseo",
"version": "0.11.1",
"version": "0.11.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "paseo",
"version": "0.11.1",
"version": "0.11.0",
"hasInstallScript": true,
"license": "Apache-2.0",
"workspaces": [
@@ -36413,7 +36413,7 @@
},
"packages/app": {
"name": "@getpaseo/app",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@codemirror/commands": "6.10.4",
"@codemirror/language": "6.12.4",
@@ -37496,12 +37496,12 @@
},
"packages/cli": {
"name": "@getpaseo/cli",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@clack/prompts": "^1.0.0",
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/server": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/server": "0.11.0",
"chalk": "^5.3.0",
"commander": "^12.0.0",
"mime-types": "^2.1.35",
@@ -37748,10 +37748,10 @@
},
"packages/client": {
"name": "@getpaseo/client",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@getpaseo/protocol": "0.11.1",
"@getpaseo/relay": "0.11.1",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/relay": "0.11.0",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -37762,7 +37762,7 @@
},
"packages/desktop": {
"name": "@getpaseo/desktop",
"version": "0.11.1",
"version": "0.11.0",
"license": "Apache-2.0",
"dependencies": {
"@getpaseo/cli": "*",
@@ -38006,7 +38006,7 @@
},
"packages/expo-two-way-audio": {
"name": "@getpaseo/expo-two-way-audio",
"version": "0.11.1",
"version": "0.11.0",
"license": "MIT",
"devDependencies": {
"@types/jest": "^29.5.14",
@@ -38902,7 +38902,7 @@
},
"packages/highlight": {
"name": "@getpaseo/highlight",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@codemirror/language": "6.12.4",
"@codemirror/legacy-modes": "^6.5.3",
@@ -38931,14 +38931,14 @@
},
"packages/plugin": {
"name": "@getpaseo/plugin",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@agentclientprotocol/sdk": "^1.4.0",
"use-sync-external-store": "^1.6.0"
},
"devDependencies": {
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@types/node": "^20.9.0",
"@types/react": "~19.2.0",
"react": "19.1.0",
@@ -38948,8 +38948,8 @@
"zod": "^4.4.3"
},
"peerDependencies": {
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"react": "~19.1.0",
"react-native": ">=0.81.5",
"zod": "^4.4.3"
@@ -38971,7 +38971,7 @@
},
"packages/protocol": {
"name": "@getpaseo/protocol",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"semver": "^7.8.5",
"zod": "^4.4.3"
@@ -38998,7 +38998,7 @@
},
"packages/relay": {
"name": "@getpaseo/relay",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"base64-js": "^1.5.1",
"tweetnacl": "^1.0.3",
@@ -39216,16 +39216,16 @@
},
"packages/server": {
"name": "@getpaseo/server",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@agentclientprotocol/sdk": "^0.17.1",
"@anthropic-ai/claude-agent-sdk": "0.3.246",
"@anthropic-ai/sdk": "^0.104.2",
"@getpaseo/client": "0.11.1",
"@getpaseo/highlight": "0.11.1",
"@getpaseo/plugin": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/relay": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/highlight": "0.11.0",
"@getpaseo/plugin": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/relay": "0.11.0",
"@isaacs/ttlcache": "^2.1.4",
"@modelcontextprotocol/sdk": "1.29.0",
"@opencode-ai/sdk": "1.14.46",
@@ -40146,7 +40146,7 @@
},
"packages/website": {
"name": "@getpaseo/website",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@cloudflare/vite-plugin": "^1.29.1",
"@cloudflare/workers-types": "^4.20260317.1",
@@ -41754,7 +41754,7 @@
},
"plugins": {
"name": "@getpaseo/builtin-plugins",
"version": "0.11.1",
"version": "0.11.0",
"dependencies": {
"@getpaseo/plugin": "*",
"zod": "^4.4.3"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "paseo",
"version": "0.11.1",
"version": "0.11.0",
"private": true,
"description": "Paseo: voice-controlled development environment for local AI coding agents",
"keywords": [
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/app",
"version": "0.11.1",
"version": "0.11.0",
"private": true,
"main": "index.ts",
"scripts": {
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/cli",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo CLI - control your AI coding agents from the command line",
"bin": {
"paseo": "bin/paseo"
@@ -28,9 +28,9 @@
},
"dependencies": {
"@clack/prompts": "^1.0.0",
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/server": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/server": "0.11.0",
"chalk": "^5.3.0",
"commander": "^12.0.0",
"mime-types": "^2.1.35",
+3 -8
View File
@@ -122,15 +122,10 @@ const EXPECTED_CLAUDE_MODELS = [
model: "Opus 4.6",
descriptionFragment: "Most capable",
},
{
id: "claude-haiku-5-5",
model: "Haiku 5.5",
descriptionFragment: "Fastest",
},
{
id: "claude-haiku-4-5",
model: "Haiku 4.5",
descriptionFragment: "Previous release",
descriptionFragment: "Fastest",
},
] as const;
@@ -440,8 +435,8 @@ try {
"--quiet should print the same ordered model IDs returned by --json",
);
assert(
claudeModelsFromJson.some((m) => m.id === "claude-haiku-5-5"),
"captured --json output should include the current Claude quick-answer model id",
claudeModelsFromJson.some((m) => m.id === "claude-sonnet-5-5"),
"captured --json output should include the current Claude everyday model id",
);
console.log("✓ provider models --quiet outputs model IDs only\n");
}
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/client",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo client SDK package",
"files": [
"dist",
@@ -39,8 +39,8 @@
"test": "vitest run"
},
"dependencies": {
"@getpaseo/protocol": "0.11.1",
"@getpaseo/relay": "0.11.1",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/relay": "0.11.0",
"zod": "^4.4.3"
},
"devDependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/desktop",
"version": "0.11.1",
"version": "0.11.0",
"private": true,
"description": "Paseo desktop app (Electron wrapper)",
"homepage": "https://paseo.sh",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/expo-two-way-audio",
"version": "0.11.1",
"version": "0.11.0",
"description": "Native module for two way audio streaming",
"keywords": [
"ExpoTwoWayAudio",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/highlight",
"version": "0.11.1",
"version": "0.11.0",
"files": [
"dist",
"!dist/**/*.map",
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/plugin",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo plugin SDK package",
"files": [
"dist",
@@ -70,8 +70,8 @@
"use-sync-external-store": "^1.6.0"
},
"devDependencies": {
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@types/node": "^20.9.0",
"@types/react": "~19.2.0",
"react": "19.1.0",
@@ -81,8 +81,8 @@
"zod": "^4.4.3"
},
"peerDependencies": {
"@getpaseo/client": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"react": "~19.1.0",
"react-native": ">=0.81.5",
"zod": "^4.4.3"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/protocol",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo shared protocol schemas and wire types",
"files": [
"dist",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/relay",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo relay for bridging daemon and client connections",
"files": [
"dist",
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/server",
"version": "0.11.1",
"version": "0.11.0",
"description": "Paseo backend server",
"files": [
"dist/server",
@@ -107,11 +107,11 @@
"@agentclientprotocol/sdk": "^0.17.1",
"@anthropic-ai/claude-agent-sdk": "0.3.246",
"@anthropic-ai/sdk": "^0.104.2",
"@getpaseo/client": "0.11.1",
"@getpaseo/highlight": "0.11.1",
"@getpaseo/plugin": "0.11.1",
"@getpaseo/protocol": "0.11.1",
"@getpaseo/relay": "0.11.1",
"@getpaseo/client": "0.11.0",
"@getpaseo/highlight": "0.11.0",
"@getpaseo/plugin": "0.11.0",
"@getpaseo/protocol": "0.11.0",
"@getpaseo/relay": "0.11.0",
"@isaacs/ttlcache": "^2.1.4",
"@modelcontextprotocol/sdk": "1.29.0",
"@opencode-ai/sdk": "1.14.46",
@@ -496,7 +496,7 @@ describe("ClaudeAgentClient.fetchCatalog", () => {
const client = new ClaudeAgentClient({
logger,
resolveBinary: async () => "/test/claude/bin",
resolveVersion: async () => "2.1.293",
resolveVersion: async () => "2.1.284",
runtimeSettings: { env: { CLAUDE_CONFIG_DIR: emptyConfigDir } },
});
const { models } = await client.fetchCatalog({
@@ -515,15 +515,6 @@ describe("ClaudeAgentClient.fetchCatalog", () => {
expect(getThinkingIds("claude-opus-4-8")).toContain("ultracode");
expect(getThinkingIds("claude-sonnet-5")).toContain("xhigh");
expect(getThinkingIds("claude-sonnet-5")).toContain("ultracode");
expect(getThinkingIds("claude-haiku-5-5")).toEqual([
"off",
"low",
"medium",
"high",
"xhigh",
"max",
"ultracode",
]);
expect(getThinkingIds("claude-sonnet-5-5")).toContain("xhigh");
expect(getThinkingIds("claude-sonnet-5-5")).not.toContain("off");
expect(getThinkingIds("claude-opus-4-7[1m]")).toContain("ultracode");
@@ -1232,7 +1223,6 @@ describe("ClaudeAgentSession features", () => {
test.each([
["supported model", "claude-opus-4-8", { type: "disabled" }, undefined],
["Haiku 5.5", "claude-haiku-5-5", { type: "disabled" }, undefined],
["unsupported model", "claude-fable-5", { type: "adaptive", display: "summarized" }, "high"],
["custom model", "openrouter/anthropic/claude-opus-4-8", undefined, undefined],
["provider default", null, undefined, undefined],
@@ -170,20 +170,10 @@ export const CLAUDE_MODEL_MANIFEST = [
effortLevels: CLAUDE_EFFORT_LEVELS.standard,
supportsThinkingDisabled: true,
},
{
id: "claude-haiku-5-5",
label: "Haiku 5.5",
description: "Haiku 5.5 · Fastest for quick answers",
minimumClaudeCodeVersion: "2.1.293",
defaultThinkingOptionId: "medium",
contextWindowMaxTokens: 1_000_000,
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
supportsThinkingDisabled: true,
},
{
id: "claude-haiku-4-5",
label: "Haiku 4.5",
description: "Haiku 4.5 · Previous release",
description: "Haiku 4.5 · Fastest for quick answers",
contextWindowMaxTokens: 200_000,
},
] as const satisfies readonly ClaudeModelManifestEntry[];
@@ -39,7 +39,7 @@ async function createClaudeConfigDirWithRawSettings(settings: string): Promise<s
return configDir;
}
function createCatalogClient(claudeCodeVersion = "2.1.293"): ClaudeAgentClient {
function createCatalogClient(claudeCodeVersion = "2.1.284"): ClaudeAgentClient {
return new ClaudeAgentClient({
logger: createTestLogger(),
resolveVersion: async () => claudeCodeVersion,
@@ -66,7 +66,6 @@ describe("getClaudeModels", () => {
"claude-opus-4-6",
"claude-sonnet-4-6[1m]",
"claude-sonnet-4-6",
"claude-haiku-5-5",
"claude-haiku-4-5",
]);
});
@@ -101,7 +100,6 @@ describe("getClaudeModels", () => {
["claude-opus-4-6", 200_000],
["claude-sonnet-4-6[1m]", 1_000_000],
["claude-sonnet-4-6", 200_000],
["claude-haiku-5-5", 1_000_000],
["claude-haiku-4-5", 200_000],
]),
);
@@ -125,12 +123,6 @@ describe("getClaudeModels", () => {
expect(getClaudeModels("2.1.284").map((model) => model.id)).toContain("claude-sonnet-5-5");
});
it("gates Haiku 5.5 on Claude Code 2.1.293 without changing the default", () => {
expect(getClaudeModels("2.1.292").map((model) => model.id)).not.toContain("claude-haiku-5-5");
expect(getClaudeModels("2.1.293").map((model) => model.id)).toContain("claude-haiku-5-5");
expect(getClaudeModels("2.1.293").find((model) => model.isDefault)?.id).toBe("claude-opus-5-5");
});
it("derives thinking options from model effort capabilities", () => {
const models = new Map(getClaudeModels().map((model) => [model.id, model]));
@@ -200,8 +192,6 @@ describe("getClaudeModels", () => {
["claude-sonnet-5-20260101", true, "high"],
["claude-fable-5", false, "high"],
["claude-fable-5-1", false, "high"],
["claude-haiku-5-5", true, "medium"],
["claude-haiku-5-5-20261007", true, "medium"],
["claude-haiku-4-5", false, undefined],
["openrouter/anthropic/claude-opus-4-8", false, undefined],
[null, false, undefined],
@@ -663,51 +653,6 @@ describe("Claude Sonnet 5.5 catalog", () => {
});
});
describe("Claude Haiku 5.5 catalog", () => {
it("offers one Haiku 5.5 entry with a 1M context window", () => {
const haiku55Models = getClaudeModels()
.filter((model) => model.id.startsWith("claude-haiku-5-5"))
.map(({ id, label, contextWindowMaxTokens }) => ({ id, label, contextWindowMaxTokens }));
expect(haiku55Models).toEqual([
{ id: "claude-haiku-5-5", label: "Haiku 5.5", contextWindowMaxTokens: 1_000_000 },
]);
});
it("offers Off and every effort level with medium as the default", () => {
const haiku55 = getClaudeModels().find((model) => model.id === "claude-haiku-5-5");
expect(haiku55?.thinkingOptions?.map((option) => option.id)).toEqual([
CLAUDE_DISABLED_THINKING_OPTION_ID,
"low",
"medium",
"high",
"xhigh",
"max",
CLAUDE_ULTRACODE_THINKING_OPTION_ID,
]);
expect(haiku55?.defaultThinkingOptionId).toBe("medium");
expect(
haiku55?.thinkingOptions?.filter((option) => option.isDefault).map((option) => option.id),
).toEqual(["medium"]);
});
it("normalizes provider-prefixed runtime IDs", () => {
expect(normalizeClaudeRuntimeModelId("anthropic/claude-haiku-5-5")).toBe("claude-haiku-5-5");
expect(normalizeClaudeRuntimeModelId("us.anthropic.claude-haiku-5-5-v1:0")).toBe(
"claude-haiku-5-5",
);
expect(claudeManifestModelSupportsFastMode("claude-haiku-5-5")).toBe(false);
});
it("resolves suffixed and dated Haiku 5.5 IDs to the single catalog entry", () => {
expect(findClaudeModel("claude-haiku-5-5[1m]")?.id).toBe("claude-haiku-5-5");
expect(findClaudeModel("claude-haiku-5-5-20261007")?.id).toBe("claude-haiku-5-5");
expect(findClaudeModel("claude-haiku-5-5-20261007[1m]")?.id).toBe("claude-haiku-5-5");
expect(findClaudeModel("claude-haiku-5-5[1m]")?.contextWindowMaxTokens).toBe(1_000_000);
});
});
describe("claudeManifestModelSupportsFastMode", () => {
it("keeps fast mode strict to first-party manifest model IDs", () => {
expect(normalizeClaudeManifestModelId("openrouter/anthropic/claude-opus-4-8")).toBeNull();
@@ -0,0 +1,120 @@
import { execFileSync } from "node:child_process";
import { mkdtempSync, readdirSync, rmSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { randomBytes } from "node:crypto";
import { afterAll, beforeAll, expect, test } from "vitest";
import { runGitCommand, type RunGitCommand } from "../utils/run-git-command.js";
import { fetchWorkspaceGitRemote } from "./workspace-git-fetch.js";
// Repro for #3335: a background fetch that outlives its timeout is SIGKILLed,
// and every killed attempt leaves a partial `tmp_pack_*` behind. The daemon
// retries every 180s, so a fetch that needs longer than the timeout grows
// `.git/objects/pack` without bound.
const FETCH_TIMEOUT_MS = 300;
const cleanupPaths: string[] = [];
let checkout: string;
function git(cwd: string, args: string[]): string {
return execFileSync("git", args, {
cwd,
encoding: "utf8",
env: { ...process.env, GIT_CONFIG_NOSYSTEM: "1", GIT_TERMINAL_PROMPT: "0" },
}).trim();
}
beforeAll(() => {
const root = mkdtempSync(join(tmpdir(), "paseo-fetch-timeout-"));
cleanupPaths.push(root);
const upstream = join(root, "upstream.git");
const seed = join(root, "seed");
checkout = join(root, "checkout");
git(root, ["init", "-q", "--bare", "-b", "main", upstream]);
git(root, ["init", "-q", "-b", "main", seed]);
git(seed, [
"-c",
"user.name=t",
"-c",
"user.email=t@t",
"commit",
"-q",
"--allow-empty",
"-m",
"init",
]);
git(seed, ["push", "-q", upstream, "main"]);
git(root, ["clone", "-q", "--no-local", upstream, checkout]);
// Advance upstream with incompressible content so the next fetch takes
// longer than FETCH_TIMEOUT_MS to transfer. More than git's default
// `fetch.unpackLimit` (100 objects) so the fetch keeps a pack, like any
// large fetch does, instead of exploding into loose objects.
for (let i = 0; i < 200; i += 1) {
writeFileSync(join(seed, `blob-${i}.bin`), randomBytes(1024 * 1024));
}
git(seed, ["add", "."]);
git(seed, [
"-c",
"user.name=t",
"-c",
"user.email=t@t",
"commit",
"-q",
"-m",
"large",
]);
git(seed, ["push", "-q", upstream, "main"]);
}, 120_000);
afterAll(() => {
for (const path of cleanupPaths.splice(0)) {
rmSync(path, { recursive: true, force: true });
}
});
function packDirectory(): { tmpPacks: string[] } {
const entries = readdirSync(join(checkout, ".git", "objects", "pack"));
return { tmpPacks: entries.filter((entry) => entry.startsWith("tmp_pack_")) };
}
// The daemon's runner, with the fetch budget shortened from 120s so a local
// fetch outlives it the way a large repository's fetch outlives 120s.
const runWithShortFetchTimeout: RunGitCommand = (args, options) =>
runGitCommand(
args,
args[0] === "fetch" ? { ...options, timeout: FETCH_TIMEOUT_MS } : options
);
test("a background fetch that times out leaves no partial pack behind", async () => {
const before = packDirectory();
const observations: { error: string | null; tmpPacks: number }[] = [];
for (let attempt = 0; attempt < 3; attempt += 1) {
const result = await fetchWorkspaceGitRemote(
checkout,
{ onRefSnapshot() {} },
runWithShortFetchTimeout
);
const after = packDirectory();
observations.push({
error: result.error instanceof Error ? result.error.message : null,
tmpPacks: after.tmpPacks.length,
});
}
expect(observations).toEqual([
{
error: expect.stringContaining("timed out"),
tmpPacks: before.tmpPacks.length,
},
{
error: expect.stringContaining("timed out"),
tmpPacks: before.tmpPacks.length,
},
{
error: expect.stringContaining("timed out"),
tmpPacks: before.tmpPacks.length,
},
]);
}, 60_000);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/website",
"version": "0.11.1",
"version": "0.11.0",
"private": true,
"type": "module",
"scripts": {
@@ -12,14 +12,6 @@ export function SiteHeader() {
<span className="text-lg font-medium">Paseo</span>
</a>
<div className="flex flex-wrap items-center justify-center gap-4">
{PLUGINS_LINKED && (
<a
href="/plugins"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
>
Plugins
</a>
)}
<a
href="/blog"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
@@ -32,6 +24,14 @@ export function SiteHeader() {
>
Docs
</a>
{PLUGINS_LINKED && (
<a
href="/plugins"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
>
Plugins
</a>
)}
<a
href="/changelog"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@getpaseo/builtin-plugins",
"version": "0.11.1",
"version": "0.11.0",
"private": true,
"type": "module",
"scripts": {