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
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Dependencies
node_modules/
dist/

# Test coverage
coverage/

# IDE / System
.DS_Store
.vscode/
.idea/

# Local env files
.env.local
.env.*.local
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ gh project item-edit --project-id PVT_kwDOEbiBt84BbzAz \
| Codex | `agent:codex` | `codex/issue-NNN-*` | `e428b05e` |
| Cursor | `agent:cursor` | `cursor/issue-NNN-*` | `a9811389` |
| Antigravity | `agent:antigravity` | `antigravity/issue-NNN-*` | `77295899` |
| Continue | `agent:continue` | `continue/issue-NNN-*` | `156c534e` |

To register a new tool: add its label (`gh label create`), add its Agent field option (update Project 2 via GraphQL), and add a row to this table.

Expand Down
3 changes: 3 additions & 0 deletions apps/traverse-starter/web-react/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Local Traverse Runtime configuration
# Change this to match your Traverse serving port
VITE_TRAVERSE_RUNTIME_URL=http://localhost:3000
24 changes: 24 additions & 0 deletions apps/traverse-starter/web-react/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
63 changes: 63 additions & 0 deletions apps/traverse-starter/web-react/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# traverse-starter (Web React UI)

This is the React UI shell for the `traverse-starter` reference application. It represents a thin presentation layer that connects to the Traverse runtime.

## Core Design Principles

1. **UI is a Rendering Layer only**: All business fields (such as notes tags, title, note type, suggested actions, and workflow status) are calculated and owned by the Traverse runtime. The UI only displays and subscribes to events.
2. **Strict Boundary Isolation**: No private Traverse internals are imported into this codebase. All communication occurs over the public API surface.

## Configuration & Runtime Discovery

The React shell connects to the Traverse runtime via HTTP endpoints. By default, it discovers the runtime at:

- `http://localhost:3000` (configurable via `VITE_TRAVERSE_RUNTIME_URL` env variable).

You can define this environment variable in `apps/traverse-starter/web-react/.env` or in your system environment.

### Traverse CLI Pinned Release

The project expects a pinned release of the Traverse CLI for executing tasks and workflow orchestration:

```bash
# Canonical path: runs the pinned release of the Traverse CLI
npx traverse-cli serve
```

### TRAVERSE_REPO Override Behavior (Framework Development)

For active framework development or testing local changes to the Traverse framework itself, you can override the pinned release by pointing to a local Traverse repository check-out:

```bash
# Environment override for active framework developers
TRAVERSE_REPO=/path/to/local/Traverse npx traverse-cli serve
```

When `TRAVERSE_REPO` is set, scripts and test runners will locate and execute the local CLI binaries inside that directory (e.g. `cargo run -p traverse-cli -- serve`) instead of invoking the npm-distributed package.

## Development Commands

Run the following commands from the root directory of the workspace:

```bash
# Install all dependencies across workspaces
npm install

# Start the React app in local development mode
npm run dev

# Compile TypeScript and build the static distribution bundle
npm run build

# Perform type-checking
npm run typecheck

# Lint all source files
npm run lint

# Run all unit tests using Vitest
npm run test

# Run unit tests and generate coverage reports
npm run test:coverage
```
22 changes: 22 additions & 0 deletions apps/traverse-starter/web-react/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist', 'coverage']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
globals: globals.browser,
},
},
])
13 changes: 13 additions & 0 deletions apps/traverse-starter/web-react/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>web-react</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
38 changes: 38 additions & 0 deletions apps/traverse-starter/web-react/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"name": "web-react",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"typecheck": "tsc -b",
"lint": "eslint .",
"preview": "vite preview",
"test": "vitest run",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
"react": "^19.2.7",
"react-dom": "^19.2.7"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^24.13.2",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.2",
"eslint": "^10.5.0",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.5.3",
"globals": "^17.6.0",
"typescript": "~6.0.2",
"typescript-eslint": "^8.61.0",
"vite": "^8.1.0",
"vitest": "^3.0.7",
"jsdom": "^26.0.0",
"@testing-library/react": "^16.2.0",
"@testing-library/jest-dom": "^6.6.3",
"@vitest/coverage-v8": "^3.0.7"
}
}
1 change: 1 addition & 0 deletions apps/traverse-starter/web-react/public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions apps/traverse-starter/web-react/public/icons.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading