Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 0 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,6 @@ jobs:
TEST_PACKAGES: ${{ needs.changes.outputs.test_packages }}
run: |
set -o pipefail
# LastCode scripts invoke CLIs that require Node ^24.13.1.
vp env use 24.13.1
filters=(--filter '!t3' --filter '!@t3tools/monorepo' --filter '!@t3tools/web')
if [[ -n "$TEST_PACKAGES" ]]; then
filters=()
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/server-test-pilot-worker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ jobs:
install-args: --frozen-lockfile
- name: Select checkpoint pilot Node runtime
run: |
vp env use 24.13.1
echo 'VP_NODE_VERSION=24.13.1' >> "$GITHUB_ENV"
vp env exec --node 24.13.1 node -p 'require("node:path").dirname(process.execPath)' >> "$GITHUB_PATH"
vp env use 26.12.1
echo 'VP_NODE_VERSION=26.12.1' >> "$GITHUB_ENV"
vp env exec --node 26.12.1 node -p 'require("node:path").dirname(process.execPath)' >> "$GITHUB_PATH"
- name: Install Chromium and system dependencies
run: node apps/server/node_modules/playwright-core/cli.js install --with-deps --only-shell chromium
- name: Run uncached cohort
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ git clone git@github.com:YOUR_GITHUB_USER/LastCode.git ~/projects/lastCode
cd ~/projects/lastCode
git switch lastcode/main
git remote add upstream https://github.com/pingdotgg/t3code.git
mise exec node@24.13.1 -- node scripts/lastcode-setup.mjs \
mise exec node@26.12.1 -- node scripts/lastcode-setup.mjs \
--enable-nightly-writes \
--checkpoint-interval-seconds "$LASTCODE_CHECKPOINT_INTERVAL_SECONDS"
```
Expand Down
4 changes: 2 additions & 2 deletions apps/server/src/cli/projectActionReconciliation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ import {
const waitDeclaration = {
id: "lc-wait-for-checkpoint",
name: "Wait for Checkpoint",
command: "mise exec node@24.13.1 -- node scripts/lastcode-wait-for-checkpoint.ts",
command: "mise exec node@26.12.1 -- node scripts/lastcode-wait-for-checkpoint.ts",
icon: "test" as const,
};

const quickDeclaration = {
id: "lc-local-ci",
name: "Run Quick CI",
command: "mise exec node@24.13.1 -- node scripts/lastcode-local-ci.ts --quick",
command: "mise exec node@26.12.1 -- node scripts/lastcode-local-ci.ts --quick",
icon: "test" as const,
};

Expand Down
2 changes: 1 addition & 1 deletion docs/lastcode/nightly-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ the dedicated automation worktree in `~/.lastcode/dashboard.json`, so the
command works from any directory without depending on a human development
worktree. Installation fails instead of recording the current checkout when the
automation worktree is missing. The installed launcher uses the repository's
pinned Node 24 runtime through `mise`, independent of the shell's default Node.
pinned Node runtime through `mise`, independent of the shell's default Node.

Show the latest eight checkpoint activities, or choose another count:

Expand Down
2 changes: 1 addition & 1 deletion docs/lastcode/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ For an authorized local Apple Silicon build, first select one exact installable
checkpoint or revision in the requesting thread's worktree:

```bash
MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node "$T3CODE_PROJECT_ROOT/scripts/lastcode-build-local-package.ts" select \
MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node "$T3CODE_PROJECT_ROOT/scripts/lastcode-build-local-package.ts" select \
--tag lastcode/revision/v0.0.34-nightly.20260825.1185.3
```

Expand Down
2 changes: 1 addition & 1 deletion docs/lastcode/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ git remote add upstream https://github.com/pingdotgg/t3code.git
Run the guarded bootstrap from the checkout:

```bash
MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-setup.mjs \
MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-setup.mjs \
--enable-nightly-writes \
--checkpoint-daily-at "$LASTCODE_CHECKPOINT_DAILY_AT" \
--checkpoint-time-zone "$LASTCODE_CHECKPOINT_TIME_ZONE"
Expand Down
38 changes: 19 additions & 19 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,29 +58,29 @@
"dist:desktop:win:arm64": "node scripts/build-desktop-artifact.ts --platform win --target nsis --arch arm64",
"dist:desktop:win:x64": "node scripts/build-desktop-artifact.ts --platform win --target nsis --arch x64",
"release:smoke": "node scripts/release-smoke.ts",
"lastcode:checkpoint": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-checkpoint.ts",
"lastcode:carry-set": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-carry-set.ts",
"lastcode:checkpoints": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-checkpoints.mjs",
"lastcode:build": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-build.mjs",
"lastcode:install": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-install.mjs",
"lastcode:intel-build": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-build-intel-package.ts",
"lastcode:intel-stage": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-intel-stage.mjs",
"lastcode:managed-checkout": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-managed-checkout.mjs",
"lastcode:project-actions": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-project-actions.mjs",
"lastcode:headless-service": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-headless-service.mjs",
"lastcode:setup": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-setup.mjs",
"lastcode:checkpoint:service": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-nightly-service.ts",
"lastcode:build:mac:arm64": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-build-mac.ts --arch arm64",
"lastcode:build:mac:x64": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-build-mac.ts --arch x64",
"lastcode:ci": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-local-ci.ts --full",
"lastcode:ci:quick": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-local-ci.ts --quick",
"lastcode:merge": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-merge.ts",
"lastcode:checkpoint": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-checkpoint.ts",
"lastcode:carry-set": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-carry-set.ts",
"lastcode:checkpoints": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-checkpoints.mjs",
"lastcode:build": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-build.mjs",
"lastcode:install": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-install.mjs",
"lastcode:intel-build": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-build-intel-package.ts",
"lastcode:intel-stage": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-intel-stage.mjs",
"lastcode:managed-checkout": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-managed-checkout.mjs",
"lastcode:project-actions": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-project-actions.mjs",
"lastcode:headless-service": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-headless-service.mjs",
"lastcode:setup": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-setup.mjs",
"lastcode:checkpoint:service": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-nightly-service.ts",
"lastcode:build:mac:arm64": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-build-mac.ts --arch arm64",
"lastcode:build:mac:x64": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-build-mac.ts --arch x64",
"lastcode:ci": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-local-ci.ts --full",
"lastcode:ci:quick": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-local-ci.ts --quick",
"lastcode:merge": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-merge.ts",
"lastcode:docs:check": "node scripts/lastcode-docs-features.ts --check",
"lastcode:docs:readme": "node scripts/lastcode-docs-features.ts --write-readme",
"lastcode:docs:fixtures": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-public-doc-fixtures.ts",
"lastcode:docs:fixtures": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-public-doc-fixtures.ts",
"clean": "rm -rf node_modules apps/*/node_modules packages/*/node_modules apps/*/dist apps/*/dist-electron packages/*/dist .vite-plus apps/*/.vite-plus packages/*/.vite-plus",
"sync:repos": "node scripts/sync-reference-repos.ts",
"lastcode:pr-gates": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-pr-gates.ts"
"lastcode:pr-gates": "MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-pr-gates.ts"
},
"devDependencies": {
"@coderabbitai/config": "1.2.0",
Expand Down
4 changes: 2 additions & 2 deletions scripts/lastcode-build.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ function shellQuote(value) {
}

export function renderLauncher(modulePath) {
return `#!/bin/sh\n# ${BUILD_MANAGED_MARKER}\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node ${shellQuote(modulePath)} "$@"\n`;
return `#!/bin/sh\n# ${BUILD_MANAGED_MARKER}\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node ${shellQuote(modulePath)} "$@"\n`;
}

function runGit(repoRoot, args) {
Expand Down Expand Up @@ -392,7 +392,7 @@ export function installCommandAssets(automationWorktree, home) {
);
replaceManagedSymlink(exposed, target);

console.log(`Installed ${target} with the pinned Node 24 runtime`);
console.log(`Installed ${target} with the pinned Node runtime`);
console.log(`Exposed on PATH as ${exposed}`);
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/lastcode-build.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ describe("LastCode userland build command", () => {

it("launches with the repository's pinned Node runtime", () => {
expect(renderLauncher("/tmp/Last Code/lastcode-build.mjs")).toContain(
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node '/tmp/Last Code/lastcode-build.mjs' \"$@\"",
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node '/tmp/Last Code/lastcode-build.mjs' \"$@\"",
);
});
});
4 changes: 2 additions & 2 deletions scripts/lastcode-checkpoints.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ function readCarryReplayPlan(worktree) {
}

export function renderLauncher(modulePath) {
return `#!/bin/sh\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node ${shellQuote(modulePath)} "$@"\n`;
return `#!/bin/sh\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node ${shellQuote(modulePath)} "$@"\n`;
}

function installCommand(repoRoot, home) {
Expand Down Expand Up @@ -790,7 +790,7 @@ function installCommand(repoRoot, home) {
NodeFS.unlinkSync(exposed);
}
NodeFS.symlinkSync(target, exposed);
console.log(`Installed ${target} with the pinned Node 24 runtime`);
console.log(`Installed ${target} with the pinned Node runtime`);
console.log(`Exposed on PATH as ${exposed}`);
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/lastcode-checkpoints.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ describe("LastCode checkpoint dashboard", () => {
NodeFS.rmSync(directory, { recursive: true, force: true });
}
expect(renderLauncher("/tmp/Last Code/checkpoints.mjs")).toContain(
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node '/tmp/Last Code/checkpoints.mjs' \"$@\"",
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node '/tmp/Last Code/checkpoints.mjs' \"$@\"",
);
});

Expand Down
3 changes: 1 addition & 2 deletions scripts/lastcode-ci-workflow.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ describe("LastCode GitHub CI workflow", () => {
it.each([
{ packages: "", filters: ["!t3", "!@t3tools/monorepo", "!@t3tools/web"] },
{ packages: "@t3tools/scripts", filters: ["@t3tools/scripts"] },
])("selects the supported Node before testing packages '$packages'", ({ packages, filters }) => {
])("tests packages '$packages' on the project Node", ({ packages, filters }) => {
const steps = asRecord(asRecord(asRecord(parse(workflow))?.jobs)?.test)?.steps;
if (!Array.isArray(steps)) throw new Error("CI test job is missing its steps.");
const script = steps.map(asRecord).find((step) => step?.name === "Test")?.run;
Expand All @@ -265,7 +265,6 @@ describe("LastCode GitHub CI workflow", () => {
);
expect(result.status, result.stderr).toBe(0);
expect(result.stdout.trim().split("\n")).toEqual([
"env use 24.13.1",
`run --parallel --concurrency-limit 4 ${filters.map((filter) => `--filter ${filter}`).join(" ")} test`,
]);
});
Expand Down
4 changes: 2 additions & 2 deletions scripts/lastcode-install.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function shellQuote(value) {
}

export function renderLauncher(modulePath) {
return `#!/bin/sh\n# ${INSTALL_MANAGED_MARKER}\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node ${shellQuote(modulePath)} "$@"\n`;
return `#!/bin/sh\n# ${INSTALL_MANAGED_MARKER}\nexec env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node ${shellQuote(modulePath)} "$@"\n`;
}

export function parseOptions(argv) {
Expand Down Expand Up @@ -959,7 +959,7 @@ export function installCommand(home) {
NodeFS.writeFileSync(target, renderLauncher(moduleTarget), { encoding: "utf8", mode: 0o755 });
NodeFS.chmodSync(target, 0o755);
replaceManagedSymlink(exposed, target);
console.log(`Installed ${target} with the pinned Node 24 runtime`);
console.log(`Installed ${target} with the pinned Node runtime`);
console.log(`Exposed on PATH as ${exposed}`);
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/lastcode-install.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -985,7 +985,7 @@ describe("LastCode userland install command", () => {

it("launches with the repository's pinned Node runtime", () => {
expect(renderLauncher("/tmp/Last Code/lastcode-install.mjs")).toContain(
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node '/tmp/Last Code/lastcode-install.mjs' \"$@\"",
"env MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node '/tmp/Last Code/lastcode-install.mjs' \"$@\"",
);
});

Expand Down
2 changes: 1 addition & 1 deletion scripts/lastcode-intel-release.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ describe("immutable Intel release validation", () => {
id: "lc-build-intel-package",
name: "Build Intel package (macOS)",
command:
"MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@24.13.1 -- node scripts/lastcode-build-intel-package.ts run",
"MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@26.12.1 -- node scripts/lastcode-build-intel-package.ts run",
icon: "build",
});
const automationCheckout = workflow.slice(
Expand Down
12 changes: 9 additions & 3 deletions scripts/lastcode-local-ci.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -305,11 +305,16 @@ describe("lastcode-local-ci", () => {
expect(hook).toContain("lastcode:ci:quick -- --pre-push");
});

it("requires the repository's supported Node release line", () => {
it("requires engines.node, or ^24.13.1 during the transition", () => {
const enginesNode: string = JSON.parse(
NodeFS.readFileSync(NodePath.join(import.meta.dirname, "..", "package.json"), "utf8"),
).engines.node;
expect(() => assertSupportedNodeVersion(enginesNode)).not.toThrow();
expect(() => assertSupportedNodeVersion("24.13.1")).not.toThrow();
expect(() => assertSupportedNodeVersion("24.99.0")).not.toThrow();
expect(() => assertSupportedNodeVersion("24.13.0")).toThrow("Node ^24.13.1");
expect(() => assertSupportedNodeVersion("26.7.0")).toThrow("Node ^24.13.1");
expect(() => assertSupportedNodeVersion("24.13.0")).toThrow(`Node ${enginesNode}`);
expect(() => assertSupportedNodeVersion("26.7.0")).toThrow(`Node ${enginesNode}`);
expect(() => assertSupportedNodeVersion("25.0.0")).toThrow(`Node ${enginesNode}`);
});

it("defaults to the full gate and supports the quick pre-push gate", () => {
Expand All @@ -330,6 +335,7 @@ describe("lastcode-local-ci", () => {
prePush: false,
requireLocal: true,
});
expect(parseLocalCiOptions(["--full", "--quick"]).mode).toBe("quick");
expect(() => parseLocalCiOptions(["--require-local"])).toThrow("only supported with --quick");
expect(() => parseLocalCiOptions(["--full", "--pre-push"])).toThrow(
"only supported with --quick",
Expand Down
8 changes: 6 additions & 2 deletions scripts/lastcode-local-update.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -771,10 +771,14 @@ function resolveMise(home) {
}

export function resolveMiseNodeExecutable(cwd, mise, runCommand = run) {
const installRoot = runCommand(cwd, mise, ["where", "node@24.13.1"]);
// Older installable tags can require a different tooling runtime than engines.node.
const manifest = JSON.parse(NodeFS.readFileSync(NodePath.join(cwd, "package.json"), "utf8"));
const nodeTool = manifest.scripts["lastcode:ci"].match(/\bnode@\d+\.\d+\.\d+\b/u)?.[0];
if (!nodeTool) throw new Error("The target tag's lastcode:ci command must pin a Node runtime.");
const installRoot = runCommand(cwd, mise, ["where", nodeTool]);
const executable = NodePath.join(installRoot, "bin", "node");
if (!NodeFS.existsSync(executable)) {
throw new Error(`mise did not provide the expected Node 24 executable at ${executable}.`);
throw new Error(`mise did not provide the expected ${nodeTool} executable at ${executable}.`);
}
return executable;
}
Expand Down
29 changes: 20 additions & 9 deletions scripts/lastcode-local-update.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,15 +175,26 @@ describe("lastcode-local-update", () => {
try {
NodeFS.mkdirSync(NodePath.dirname(executable), { recursive: true });
NodeFS.writeFileSync(executable, "");
assert.equal(
resolveMiseNodeExecutable("/build", "/mise", (cwd, command, args) => {
assert.equal(cwd, "/build");
assert.equal(command, "/mise");
assert.deepEqual(args, ["where", "node@24.13.1"]);
return root;
}),
executable,
);
for (const version of ["26.12.1", "24.13.1"]) {
NodeFS.writeFileSync(
NodePath.join(root, "package.json"),
JSON.stringify({
engines: { node: "26.12.1" },
scripts: {
"lastcode:ci": `MISE_ACTIVATE_AGGRESSIVE=1 mise exec node@${version} -- node scripts/lastcode-local-ci.ts --full`,
},
}),
);
assert.equal(
resolveMiseNodeExecutable(root, "/mise", (cwd, command, args) => {
assert.equal(cwd, root);
assert.equal(command, "/mise");
assert.deepEqual(args, ["where", `node@${version}`]);
return root;
}),
executable,
);
}
} finally {
NodeFS.rmSync(root, { recursive: true, force: true });
}
Expand Down
1 change: 1 addition & 0 deletions scripts/lastcode-main-write-lock.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ JS`,
vi.stubEnv("FIXTURE_REAL_GIT", realGit);
vi.stubEnv("PATH", `${bin}${NodePath.delimiter}${process.env.PATH ?? ""}`);
const hooks = NodePath.join(f.first, ".git", "hooks");
f.git(f.first, ["config", "core.hooksPath", hooks]);
NodeFS.copyFileSync(
NodePath.join(import.meta.dirname, "..", ".vite-hooks", "pre-push"),
NodePath.join(hooks, "lastcode-pre-push"),
Expand Down
4 changes: 2 additions & 2 deletions scripts/lastcode-nightly-service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ it("renders the deployment-defined interval in a source-only launch agent", () =
const plist = renderLaunchAgentPlist({
repoRoot: "/Users/example/LastCode & experiments",
logDirectory: "/Users/example/.lastcode/automation",
nodePath: "/Users/example/.local/share/mise/installs/node/24.13.1/bin/node",
nodePath: "/Users/example/.local/share/mise/installs/node/26.12.1/bin/node",
schedule: { kind: "interval", intervalSeconds: 1234 },
scheduleHelperPath: "/Users/example/.lastcode/automation/bin/schedule helper.mjs",
supervisorPath: "/Users/example/.lastcode/automation/bin/checkpoint supervisor.mjs",
});

expect(plist).toContain("<integer>1234</integer>");
expect(plist).toContain("node/24.13.1/bin/node");
expect(plist).toContain("node/26.12.1/bin/node");
expect(plist).toContain("checkpoint supervisor.mjs");
expect(plist).not.toContain("/bin/zsh");
expect(plist).not.toContain("/usr/bin/env");
Expand Down
Loading
Loading