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
25 changes: 24 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,18 @@ jobs:
}
"

# Rename each package's `## [Unreleased]` section to `## [X.Y.Z] - <today>`
# and reopen an empty Unreleased section. Skipped on prereleases and dry
# runs — prereleases would fragment a single logical release into many
# changelog entries, and dry runs must not mutate files.
- name: Finalize CHANGELOGs
if: |
steps.bump.outputs.is_prerelease == 'false' &&
github.event.inputs.dry_run != 'true'
env:
GITHUB_REPOSITORY: ${{ github.repository }}
run: node scripts/finalize-changelogs.mjs "${{ steps.bump.outputs.new_version }}"

- name: Build packages
run: |
npm run build --workspace=packages/core
Expand All @@ -173,13 +185,18 @@ jobs:
package.json
packages/core/package.json
packages/core/dist/
packages/core/CHANGELOG.md
packages/sdk/typescript/package.json
packages/sdk/typescript/dist/
packages/sdk/typescript/CHANGELOG.md
packages/cli/package.json
packages/cli/bin/
packages/cli/CHANGELOG.md
packages/file-observer/package.json
packages/file-observer/CHANGELOG.md
packages/local-mount/package.json
packages/local-mount/dist/
packages/local-mount/CHANGELOG.md
retention-days: 1

# Cross-compile relayfile-mount for every consumer-supported platform.
Expand Down Expand Up @@ -420,7 +437,13 @@ jobs:
git config user.name "GitHub Actions"
git config user.email "actions@github.com"

git add package.json packages/core/package.json packages/sdk/typescript/package.json packages/cli/package.json packages/file-observer/package.json packages/local-mount/package.json
git add \
package.json \
packages/core/package.json packages/core/CHANGELOG.md \
packages/sdk/typescript/package.json packages/sdk/typescript/CHANGELOG.md \
packages/cli/package.json packages/cli/CHANGELOG.md \
packages/file-observer/package.json packages/file-observer/CHANGELOG.md \
packages/local-mount/package.json packages/local-mount/CHANGELOG.md
if ! git diff --staged --quiet; then
git commit -m "chore(release): v${NEW_VERSION}"
git push
Expand Down
53 changes: 53 additions & 0 deletions .trajectories/completed/2026-04/traj_iuzm83ogm43k.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"id": "traj_iuzm83ogm43k",
"version": 1,
"task": {
"title": "Replace chokidar with @parcel/watcher in local-mount"
},
"status": "completed",
"startedAt": "2026-04-20T20:35:15.759Z",
"completedAt": "2026-04-20T20:58:15.412Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-04-20T20:58:15.094Z"
}
],
"chapters": [
{
"id": "chap_2g7q1zwb1j1e",
"title": "Work",
"agentName": "default",
"startedAt": "2026-04-20T20:58:15.094Z",
"endedAt": "2026-04-20T20:58:15.412Z",
"events": [
{
"ts": 1776718695095,
"type": "decision",
"content": "Switched watcher from chokidar v4 to @parcel/watcher 2.5.6: Switched watcher from chokidar v4 to @parcel/watcher 2.5.6",
"raw": {
"question": "Switched watcher from chokidar v4 to @parcel/watcher 2.5.6",
"chosen": "Switched watcher from chokidar v4 to @parcel/watcher 2.5.6",
"alternatives": [],
"reasoning": "Chokidar v4's awaitWriteFinish polling + fs.watch teardown caused noticeable hangs on exit. @parcel/watcher uses native FSEvents/inotify/ReadDirectoryChangesW with clean async unsubscribe. Replaced awaitWriteFinish with a small per-path setTimeout debounce; reconcile loop + mtime/content check absorb the looser write semantics."
},
"significance": "high"
}
]
}
],
"retrospective": {
"summary": "Replaced chokidar with @parcel/watcher in packages/local-mount. All 22 tests pass. Exit-hang should be gone because unsubscribe() on native-backed watchers resolves promptly instead of draining stability-poll timers.",
"approach": "Standard approach",
"confidence": 0.85
},
"commits": [],
"filesChanged": [],
"projectId": "/Users/will/Projects/relayfile",
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

projectId contains an absolute local path (/Users/...), which is machine-specific and can leak developer information in published history. Consider using a repo identifier (e.g. name/URL) or a relative path, or removing this field from committed artifacts.

Suggested change
"projectId": "/Users/will/Projects/relayfile",
"projectId": "relayfile",

Copilot uses AI. Check for mistakes.
"tags": [],
"_trace": {
"startRef": "81a329d005404a6f156c837829d5c5d8d47aa05d",
"endRef": "81a329d005404a6f156c837829d5c5d8d47aa05d"
}
}
31 changes: 31 additions & 0 deletions .trajectories/completed/2026-04/traj_iuzm83ogm43k.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Trajectory: Replace chokidar with @parcel/watcher in local-mount

> **Status:** ✅ Completed
> **Confidence:** 85%
> **Started:** April 20, 2026 at 04:35 PM
> **Completed:** April 20, 2026 at 04:58 PM

---

## Summary

Replaced chokidar with @parcel/watcher in packages/local-mount. All 22 tests pass. Exit-hang should be gone because unsubscribe() on native-backed watchers resolves promptly instead of draining stability-poll timers.

**Approach:** Standard approach

---

## Key Decisions

### Switched watcher from chokidar v4 to @parcel/watcher 2.5.6
- **Chose:** Switched watcher from chokidar v4 to @parcel/watcher 2.5.6
- **Reasoning:** Chokidar v4's awaitWriteFinish polling + fs.watch teardown caused noticeable hangs on exit. @parcel/watcher uses native FSEvents/inotify/ReadDirectoryChangesW with clean async unsubscribe. Replaced awaitWriteFinish with a small per-path setTimeout debounce; reconcile loop + mtime/content check absorb the looser write semantics.

---

## Chapters

### 1. Work
*Agent: default*

- Switched watcher from chokidar v4 to @parcel/watcher 2.5.6: Switched watcher from chokidar v4 to @parcel/watcher 2.5.6
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,22 @@ relayfile observer
relayfile observer ws_123 --no-open
```

## Changelogs

Each publishable package keeps its own `CHANGELOG.md`:

- [`relayfile`](packages/cli/CHANGELOG.md) — CLI
- [`@relayfile/core`](packages/core/CHANGELOG.md)
- [`@relayfile/sdk`](packages/sdk/typescript/CHANGELOG.md)
- [`@relayfile/local-mount`](packages/local-mount/CHANGELOG.md)
- [`@relayfile/file-observer`](packages/file-observer/CHANGELOG.md)

**Process** — landed in every PR, finalized at release:

1. PRs that touch a package add an entry under its `## [Unreleased]` section (Keep a Changelog format: `Added` / `Changed` / `Deprecated` / `Removed` / `Fixed` / `Security`). Include the PR number as a link reference at the bottom of the file.
2. At release, the `Publish Package` workflow runs [`scripts/finalize-changelogs.mjs`](scripts/finalize-changelogs.mjs), which renames `[Unreleased]` to `[x.y.z] - YYYY-MM-DD`, opens a fresh empty `[Unreleased]` above, and rewrites the compare-link references. Prereleases skip this step so their entries accumulate until the final release.
3. Packages without user-visible changes in a given release leave `[Unreleased]` as `_No unreleased changes._`. The finalizer rewrites the dated section's body to `_No user-visible changes in this release._` so the release heading still reads naturally.

## License

MIT
Loading
Loading