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
38 changes: 38 additions & 0 deletions .github/workflows/node-compat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,44 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
name: Detect web-only change set
runs-on: ubuntu-latest
outputs:
web_only: ${{ steps.scope.outputs.web_only }}
steps:
- id: scope
uses: actions/github-script@v7
with:
script: |
let files = [];

if (context.eventName === 'pull_request') {
const changed = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
per_page: 100,
});
files = changed.map((file) => file.filename);
} else {
const comparison = await github.rest.repos.compareCommits({
owner: context.repo.owner,
repo: context.repo.repo,
base: context.payload.before,
head: context.sha,
});
files = (comparison.data.files || []).map((file) => file.filename);
}

const webOnly = files.length > 0 && files.every((file) => file.startsWith('web/'));
core.info(`Changed files (${files.length}): ${files.join(', ')}`);
core.setOutput('web_only', webOnly ? 'true' : 'false');

install-test:
name: Install Test (Node ${{ matrix.node-version }})
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down Expand Up @@ -67,6 +103,8 @@ jobs:
# Test that npm install works in a fresh environment
fresh-install:
name: Fresh Install (Node ${{ matrix.node-version }})
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/package-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,44 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
name: Detect web-only change set
runs-on: ubuntu-latest
outputs:
web_only: ${{ steps.scope.outputs.web_only }}
steps:
- id: scope
uses: actions/github-script@v7
with:
script: |
let files = [];

if (context.eventName === 'pull_request') {
const changed = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
per_page: 100,
});
files = changed.map((file) => file.filename);
} else {
const comparison = await github.rest.repos.compareCommits({
owner: context.repo.owner,
repo: context.repo.repo,
base: context.payload.before,
head: context.sha,
});
files = (comparison.data.files || []).map((file) => file.filename);
}

const webOnly = files.length > 0 && files.every((file) => file.startsWith('web/'));
core.info(`Changed files (${files.length}): ${files.join(', ')}`);
core.setOutput('web_only', webOnly ? 'true' : 'false');

validate:
name: Build & Validate
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
env:
NPM_CONFIG_FUND: false
Expand Down Expand Up @@ -160,6 +196,8 @@ jobs:

standalone-macos-smoke:
name: Standalone macOS Smoke
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: macos-latest
env:
NPM_CONFIG_FUND: false
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,44 @@ env:
CARGO_TERM_COLOR: always

jobs:
changes:
name: Detect web-only change set
runs-on: ubuntu-latest
outputs:
web_only: ${{ steps.scope.outputs.web_only }}
steps:
- id: scope
uses: actions/github-script@v7
with:
script: |
let files = [];

if (context.eventName === 'pull_request') {
const changed = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
per_page: 100,
});
files = changed.map((file) => file.filename);
} else {
const comparison = await github.rest.repos.compareCommits({
owner: context.repo.owner,
repo: context.repo.repo,
base: context.payload.before,
head: context.sha,
});
files = (comparison.data.files || []).map((file) => file.filename);
}

const webOnly = files.length > 0 && files.every((file) => file.startsWith('web/'));
core.info(`Changed files (${files.length}): ${files.join(', ')}`);
core.setOutput('web_only', webOnly ? 'true' : 'false');

rust-test:
name: Rust Tests (${{ matrix.os }})
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -24,6 +60,8 @@ jobs:

rust-cross-compile:
name: Cross-compile check (${{ matrix.target }})
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -55,6 +93,8 @@ jobs:

rust-clippy:
name: Clippy
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -66,6 +106,8 @@ jobs:

rust-fmt:
name: Format
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -76,6 +118,8 @@ jobs:

sdk-check:
name: SDK TypeScript Check
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
defaults:
run:
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,43 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
name: Detect web-only change set
runs-on: ubuntu-latest
outputs:
web_only: ${{ steps.scope.outputs.web_only }}
steps:
- id: scope
uses: actions/github-script@v7
with:
script: |
let files = [];

if (context.eventName === 'pull_request') {
const changed = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
per_page: 100,
});
files = changed.map((file) => file.filename);
} else {
const comparison = await github.rest.repos.compareCommits({
owner: context.repo.owner,
repo: context.repo.repo,
base: context.payload.before,
head: context.sha,
});
files = (comparison.data.files || []).map((file) => file.filename);
}

const webOnly = files.length > 0 && files.every((file) => file.startsWith('web/'));
core.info(`Changed files (${files.length}): ${files.join(', ')}`);
core.setOutput('web_only', webOnly ? 'true' : 'false');

test:
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ${{ matrix.os }}
strategy:
matrix:
Expand Down Expand Up @@ -40,6 +76,8 @@ jobs:

coverage:
name: Coverage (upload)
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -66,6 +104,8 @@ jobs:
files: ./coverage/lcov.info

lint:
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -88,6 +128,8 @@ jobs:

rust-test:
name: Rust Tests (agent-relay-broker)
needs: changes
if: needs.changes.outputs.web_only != 'true'
runs-on: ${{ matrix.os }}
strategy:
matrix:
Expand Down
53 changes: 53 additions & 0 deletions .trajectories/completed/2026-04/traj_0t92gxaz6igh.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"id": "traj_0t92gxaz6igh",
"version": 1,
"task": {
"title": "Move docs sidebar into the mobile hamburger menu"
},
"status": "completed",
"startedAt": "2026-04-10T16:29:40.674Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-04-10T16:31:23.206Z"
}
],
"chapters": [
{
"id": "chap_zfslz31mnbso",
"title": "Work",
"agentName": "default",
"startedAt": "2026-04-10T16:31:23.206Z",
"events": [
{
"ts": 1775838683207,
"type": "decision",
"content": "Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail: Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail",
"raw": {
"question": "Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail",
"chosen": "Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail",
"alternatives": [],
"reasoning": "On small screens the left rail consumes vertical space and duplicates navigation. Passing a mobile-only DocsNav into SiteNav keeps the docs tree available from the existing hamburger while preserving the desktop sidebar unchanged."
},
"significance": "high"
}
],
"endedAt": "2026-04-10T16:32:14.544Z"
}
],
"commits": [],
"filesChanged": [],
"projectId": "/Users/will/Projects/relay",
"tags": [],
"_trace": {
"startRef": "6358106e6814adee7ee1d11f8d258ee11c4bed99",
"endRef": "6358106e6814adee7ee1d11f8d258ee11c4bed99"
},
"completedAt": "2026-04-10T16:32:14.544Z",
"retrospective": {
"summary": "Moved docs navigation into the hamburger menu on mobile, hid the separate mobile docs rail, and kept the desktop sidebar unchanged. Verification was partial because the web build still hit the repo's intermittent page-data failure after compile and type-check.",
"approach": "Standard approach",
"confidence": 0.78
}
}
31 changes: 31 additions & 0 deletions .trajectories/completed/2026-04/traj_0t92gxaz6igh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Trajectory: Move docs sidebar into the mobile hamburger menu

> **Status:** ✅ Completed
> **Confidence:** 78%
> **Started:** April 10, 2026 at 12:29 PM
> **Completed:** April 10, 2026 at 12:32 PM

---

## Summary

Moved docs navigation into the hamburger menu on mobile, hid the separate mobile docs rail, and kept the desktop sidebar unchanged. Verification was partial because the web build still hit the repo's intermittent page-data failure after compile and type-check.

**Approach:** Standard approach

---

## Key Decisions

### Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail
- **Chose:** Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail
- **Reasoning:** On small screens the left rail consumes vertical space and duplicates navigation. Passing a mobile-only DocsNav into SiteNav keeps the docs tree available from the existing hamburger while preserving the desktop sidebar unchanged.

---

## Chapters

### 1. Work
*Agent: default*

- Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail: Collapsed the mobile docs sidebar into the hamburger menu instead of rendering it above the content rail
Loading
Loading