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
10 changes: 8 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Test
on:
pull_request:
push:
branches: [main]
branches: [main, 'maintenance/**']

# Cancel in-flight runs for the same ref when a new commit lands.
concurrency:
Expand All @@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: ['20', '22']
node-version: ['20.19.0', '22.12.0', '24']
steps:
- uses: actions/checkout@v4

Expand All @@ -34,3 +34,9 @@ jobs:

- name: Run tests
run: npm test

- name: Typecheck example app
run: npm run typecheck

- name: Build example app
run: npm run build
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Start with `src/cli.ts` for command parsing and `src/core/harness.ts` for the sp
Lab assets live under `lab/` (`cases/`, `fixtures/`, `suites/`, `results/`); product-facing example cases stay in `evals/cases/`. `examples/harness.config.json` is the reference config, `docs/` holds design notes, and `dist/` is generated build output. Do not edit `dist/` by hand. See `ARCHITECTURE.md` for the layer boundary and split triggers.

## Build, Test, and Development Commands
- `npm install`: install dependencies; Node.js `>=20` is required.
- `npm install`: install dependencies; Node.js `^20.19.0 || >=22.12.0` is required.
- `npm run build:harness`: compile the harness TypeScript (`src/`) into `dist/`.
- `npm run build`: build the example app workspace (vite).
- `node --test test/*.test.mjs`: run the test suite.
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## [Unreleased]

### Maintenance

- Replace the retiring `gpt-5.5` Codex default with `gpt-6.1-sol`, advertised by the installed app-server as its upgrade target. Keep the supported Claude Opus 4.7 default and document the distinct provider runtimes.
- Update MapLibre GL, CSV parsing, Vite, and vulnerable transitive dependencies; the refreshed lockfile has no npm audit findings.
- Adapt the example app to MapLibre 6 named exports and explicitly bundle its module worker through Vite for development and production.
- Align the documented Node requirement with Vite (`^20.19.0 || >=22.12.0`), test both minimum versions plus Node 24, and include example app type checks and builds in CI.

## [0.5.0] - 2026-06-10

### Added
Expand Down
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,22 @@ You: "Build a project management app with Kanban boards"

### Prerequisites

- Node.js >= 20
- Node.js 20.19+ or 22.12+ (Node 22 or 24 LTS recommended)
- An Anthropic API key (for the default Claude Agent SDK provider)

### Provider models and authentication

The defaults are `claude-opus-4-7` for `claude-sdk` and `gpt-6.1-sol` for `codex`.
Override `claudeSdk.model` or `codex.model` in your config for models available to your account.
The Codex default replaces `gpt-5.5`, which [retires from ChatGPT-authenticated Codex on October 14, 2026](https://learn.chatgpt.com/docs/models#gpt-55-retirement).
Existing config files retain their explicit model selections; update those separately.

`codex` launches the configured `codex app-server` and uses its existing local login.
`claude-sdk` calls the npm Claude Agent SDK, including its bundled Claude Code runtime;
it does not launch the separately installed `claude` executable. Updating that executable
alone therefore does not update this integration. Use the SDK's supported authentication
for your environment; an Anthropic API key remains the documented setup for this project.

### Install and run

```bash
Expand Down
6 changes: 5 additions & 1 deletion app/src/components/MapContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import { useEffect, useRef, useState, useCallback, useMemo, useImperativeHandle, forwardRef } from 'react';
import maplibregl from 'maplibre-gl';
import * as maplibregl from 'maplibre-gl';
import 'maplibre-gl/dist/maplibre-gl.css';
import mapWorkerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
import { MAP_STYLE, SEATTLE_CENTER, INITIAL_ZOOM, ALL_MODES, type TransitMode } from '../types/transit';
import { useMapLayers, getLayerIdsForMode, getAllRouteLayerIds, getAllHighlightLayerIds } from '../hooks/useMapLayers';
import { useMapInteractions } from '../hooks/useMapInteractions';
import { useTransitContext } from '../context/TransitContext';

// Resolve the MapLibre 6 module worker through Vite in development and production.
maplibregl.setWorkerUrl(mapWorkerUrl);

interface TransitGeoJSON {
routes: GeoJSON.FeatureCollection | null;
stops: GeoJSON.FeatureCollection | null;
Expand Down
2 changes: 1 addition & 1 deletion app/src/hooks/useMapInteractions.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useEffect, useRef, useCallback, type MutableRefObject } from 'react';
import maplibregl from 'maplibre-gl';
import * as maplibregl from 'maplibre-gl';
import { getAllRouteLayerIds, getAllHighlightLayerIds, getAllStopLayerIds } from './useMapLayers';
import { MODE_LABELS, type TransitMode } from '../types/transit';

Expand Down
2 changes: 1 addition & 1 deletion app/src/hooks/useMapLayers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useEffect, useRef, useState } from 'react';
import type maplibregl from 'maplibre-gl';
import type * as maplibregl from 'maplibre-gl';
import {
type TransitMode,
MODE_STYLES,
Expand Down
2 changes: 1 addition & 1 deletion examples/harness.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"command": "codex",
"args": ["app-server"],
"env": {},
"model": "gpt-5.5",
"model": "gpt-6.1-sol",
"effort": "xhigh",
"summary": "concise",
"serviceTier": "fast",
Expand Down
Loading
Loading