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
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.2.0] - 2026-05-11

### Added

- CLI: machine-first contract per `openhop-launch/16-cli-as-universal-api.md`.
Expand All @@ -21,12 +23,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- CLI: `help --json` per-command `exitCodes` array and `examples` array — agents can plan invocations and know which failure modes to expect from each command.
- CLI: `push --json` includes `nodeCount` field.
- CLI: `npm run test:cli-contract` script alias targeting the end-to-end contract suite.
- Skill (`skills/openhop/SKILL.md`): explicit semantics + use-case framing for `create:` and `destroy:` steps. Lifecycle pairing rule documented.
- Skill: new "Voice" section requiring verbose plain-English step `data` labels and reserving short labels for nodes. Do/don't table covering the eight most common terse patterns.
- Skill: prompt → YAML table now binds intents like "show me two things happening at the same time" and "show me a worker spawned and destroyed" to dedicated examples.
- New examples bundled into the published CLI tarball:
- `examples/create-destroy.yaml` — minimal lifecycle demo (4 steps).
- `examples/sub-flows.yaml` — service node with nested flow + `drilldown: true`.
- `examples/parallel.yaml` — focused fan-out demo (in and out parallel branches).
- Web: left flow-tree sidebar is now horizontally resizable (180–480 px), with the chosen width persisted to `localStorage` under `openhop:sidebar:width`. Shared `ResizeHandle` component extracted.
- Web: hover tooltips on truncated flow / folder labels in the sidebar (native `title=` attribute).
- Web: `__setMaxZoom(n)` browser-console hook for live-tuning the per-step playback auto-zoom.

### Changed

- Web: INSPECT panel toggle now anchors to the panel's leading edge regardless of dock side. Right-docked → vertical tab on canvas's right edge; bottom-docked → horizontal tab on canvas's bottom edge.
- Web: per-step playback auto-zoom defaults to native sprite size (1.0) instead of the previous bbox-fit value; overview/paused mode keeps the natural fit.
- Web: step gap during playback bumped from 700 ms to 1100 ms so the eye registers the destination node after a delivery before the next step lights up. Pixel travel unchanged at 1800 ms.
- Web: canvas `maxZoom` restored to 6 (default React Flow wheel-cap) after the auto-zoom override addressed the underlying readability concern.
- Web: `FlowEditorModal` z-index lifted to 2000 so the editor sits unambiguously above carrots (z 1000) and the inspect panel (z 1001).
- Web: BookmarkTab z-index lifted to 1002 to remain clickable when its position overlaps the inspect panel's leading edge.
- Existing examples (`auth-flow`, `order-flow`, `self-loops`, `simple-crud`) migrated to verbose plain-English voice for step `data` labels. Field schemas (`name` / `type` / diff markers) unchanged.
- `simple-crud.yaml` upgraded to demonstrate both the bare-string and object-form (`{ label, fields }`) step data shapes.

### Fixed

- Web: edit modal could be occluded by a carrot mid-flight or by the inspect panel — z-index bump resolves both.
- Web: in-page anchor `#install` in the README's "Try it" NOTE now correctly resolves to `#install-options`.
- Web: `flow.steps` honoring `destroy:` on static nodes (not just `create`'d ones).
- Web: actor pinning no longer forces an actor to FIRST when another actor feeds into it.

### Notes

- `get --json` returns the server's `storedFlow` shape (`{meta, flow, version, ...}`) rather than the spec example's `{id, yaml, svg, metadata}`. SVG rendering doesn't exist server-side in v0.1; YAML re-serialization on the client is lossy. Documented inline in `packages/cli/src/get.ts`.
- `openhop help [command] --json` — emit the full command tree as JSON for agent introspection.
- CLI: stdin input via `-` on `push`, `patch`, `validate`, `render`.
- `__setMaxZoom` is a debug-only hook. Safe to call from the console; will be removed in a future release once the default value (1.0) is fully validated.

## [0.1.0] - 2026-04-26

Expand All @@ -44,5 +75,6 @@ Initial public release.
- GitHub Actions CI: lint, format check, typecheck, build, test, coverage, npm audit, gitleaks, CodeQL.
- Issue and pull request templates; Dependabot configuration.

[Unreleased]: https://github.com/naorsabag/OpenHop/compare/v0.1.0...HEAD
[Unreleased]: https://github.com/naorsabag/OpenHop/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/naorsabag/OpenHop/releases/tag/v0.2.0
[0.1.0]: https://github.com/naorsabag/OpenHop/releases/tag/v0.1.0
36 changes: 31 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openhop",
"version": "0.1.0",
"version": "0.2.0",
"description": "Animated data-flow diagrams your AI agent can write. CLI.",
"repository": {
"type": "git",
Expand Down Expand Up @@ -42,8 +42,8 @@
"dependencies": {
"@fastify/http-proxy": "^11.4.4",
"@fastify/static": "^9.1.3",
"@openhop/server": "0.1.0",
"@openhop/web": "0.1.0",
"@openhop/server": "0.2.0",
"@openhop/web": "0.2.0",
"commander": "^12.0.0",
"fastify": "^5.0.0",
"yaml": "^2.8.4",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ if (process.argv.includes('--api-version')) {

const program = new Command()

program.name('openhop').description('OpenHop — Data Flow Visualization CLI').version('0.1.0')
program.name('openhop').description('OpenHop — Data Flow Visualization CLI').version('0.2.0')

// --- serve ---
//
Expand Down
2 changes: 1 addition & 1 deletion packages/server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openhop/server",
"version": "0.1.0",
"version": "0.2.0",
"description": "OpenHop API server. Fastify app for storing and serving data-flow definitions.",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/web/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openhop/web",
"version": "0.1.0",
"version": "0.2.0",
"description": "OpenHop web UI. Prebuilt static assets — animated data-flow renderer.",
"repository": {
"type": "git",
Expand Down
Loading