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
58 changes: 18 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,29 @@
# OpenSpec UI

A dashboard + VS Code extension for [OpenSpec](https://github.com/Fission-AI/OpenSpec),
with Claude, Copilot, Codex, and Gemini agents built in: a view over
Changes/Archive/Specs/Tasks and a launcher for CLI agents (Claude CLI,
Dashboard for [OpenSpec](https://github.com/Fission-AI/OpenSpec) — a view
over Changes/Archive/Specs/Tasks and a launcher for CLI agents (Claude CLI,
GitHub Copilot CLI, Codex CLI, Gemini CLI, and a local LLM via an
OpenAI-compatible API) for working with change proposals. The product ships
in two forms with shared code: a standalone web tool and a VS Code extension.

*OpenSpec-UI is built around OpenSpec — and OpenSpec-UI itself is used with the OpenSpec repository.*
[A Tool That Watched Itself Get Built](https://www.linkedin.com/pulse/tool-watched-itself-get-built-alexander-ivanov-q57ne?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BHDMlQK%2BGTcemHEauLJbbBA%3D%3D)

## Screenshots (VS Code extension)
## Product Tour

Sidebar overview: Changes (with the "Repository Setup" discoverability node
and its empty-state prompt), Archive, Specs, Templates, and Processes, all
visible at once.
The standalone application and VS Code extension expose the same OpenSpec
workflows through interfaces suited to their respective hosts.

![Sidebar overview: Changes, Archive, Specs, Templates, Processes](docs/images/overview.png)
### Standalone application

Individual `tasks.md` checklist items nest under the collapsible **Tasks**
artifact of a change, not flat alongside Proposal/Design/Spec:
![Standalone OpenSpec UI showing a completed show command and its streamed output](docs/images/standalone/run-command.png)

![Task checklist items nested under the Tasks artifact of a change](docs/images/changes-tasks-nested.png)
### VS Code extension

Archive: an archived change expanded to its artifacts, with the
change-scoped actions available from its context menu (Unarchive, Copy
Tasks as Template Into..., Rollback, Delete):
![VS Code OpenSpec Workbench showing Changes, Archive, Specs, Templates, and Processes](docs/images/extension/overview-expanded.png)

![Archived change context menu: Unarchive, Copy Tasks as Template, Rollback, Delete](docs/images/archive.png)

"Repository Setup" groups the repo-bootstrap actions (agent instructions,
Dependabot config, path-scoped Copilot instructions) under a visible,
discoverable tree node instead of Command Palette-only entries:

![Repository Setup node with its three bootstrap actions](docs/images/repo-bootstrap.png)

Specs: browse a capability's canonical requirements/scenarios directly in
the editor:

![Specs panel with a capability open in the editor](docs/images/specs.png)

Templates: built-in and project-level `tasks.md` templates, with
Customize/Insert actions from the context menu:

![Templates panel with Customize Template / Insert Template Into... context menu](docs/images/templates.png)
See the complete screenshot galleries for the
[standalone application](packages/server/README.md#screenshots) and the
[VS Code extension](packages/extension/README.md#screenshots).

## Local Delivery Modes

Expand Down Expand Up @@ -193,20 +174,17 @@ If a change is visibly user-facing, the affected package version in
`package.json` must be bumped in the same change. For delivery forms, an
aggregated release version is allowed, but package versions — especially
`core` — remain the source of truth and should be shown separately when the UI
displays build information. The standalone browser shell does this: a
footer shows `core`/`server`/`webui` versions, read from each package's
own `package.json` via a token-gated `GET /api/versions` endpoint — see
`packages/server/src/server.ts`.
displays build information.

The private root package remains `0.0.0`; it is a workspace container, not a
release artifact. Current release versions are:

| Package | Version | Release role |
| --- | ---: | --- |
| `@openspec-ui/core` | 0.20.0 | Shared behavior and persistence contract |
| `openspec-ui-vscode` | 0.16.0 | VS Code delivery |
| `@openspec-ui/server` | 1.8.0 | Standalone server delivery |
| `@openspec-ui/webui` | 1.9.0 | Shared browser UI |
| `@openspec-ui/core` | 0.15.0 | Shared behavior and persistence contract |
| `openspec-ui-vscode` | 0.9.0 | VS Code delivery |
| `@openspec-ui/server` | 1.6.0 | Standalone server delivery |
| `@openspec-ui/webui` | 1.7.0 | Shared browser UI |
| `@openspec-ui/cli` | 0.1.0 | CI merge-gate delivery |

`@vscode/vsce` (the extension's packager) already names the built
Expand Down
File renamed without changes
Binary file added docs/images/extension/archive-tasks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/extension/overview-compact.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
Binary file added docs/images/extension/specs-list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added docs/images/standalone/change-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/standalone/diff-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/standalone/processes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/standalone/run-command.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/standalone/templates.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/standalone/view-summary.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions openspec/changes/document-product-screenshots/.openspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
schema: spec-driven
created: 2026-08-22
skip_specs: true
32 changes: 32 additions & 0 deletions openspec/changes/document-product-screenshots/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Why

ADR 0001 defines two independently usable delivery targets, but the repository
documentation currently describes both without showing either interface. This
makes it difficult for readers to understand the host-specific UX before
installing or running the product.

## What Changes

- Add a concise visual comparison of the standalone application and VS Code
extension to the root README.
- Add focused standalone screenshots to the server README and native workbench
screenshots to the extension README.
- Store the selected image assets under `docs/images/` with delivery-specific
names and descriptive alternative text.

## Capabilities

### New Capabilities

(none)

### Modified Capabilities

(none; this is a documentation-only change)

## Impact

- `README.md`
- `packages/server/README.md`
- `packages/extension/README.md`
- `docs/images/`
16 changes: 16 additions & 0 deletions openspec/changes/document-product-screenshots/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## 1. Screenshot assets

- [x] 1.1 Add selected standalone and VS Code extension screenshots under
`docs/images/` with unambiguous delivery-specific names.

## 2. README presentation

- [x] 2.1 Add a two-delivery visual overview to `README.md`.
- [x] 2.2 Add a focused standalone gallery to `packages/server/README.md`.
- [x] 2.3 Add a focused native workbench gallery to
`packages/extension/README.md`.

## 3. Verification

- [x] 3.1 Verify that every README image reference resolves to a tracked file.
- [x] 3.2 Run `openspec change validate --strict document-product-screenshots`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
schema: spec-driven
created: 2026-08-22
skip_specs: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Why

The quality gate introduced by ADR 0001's shared monorepo delivery model cannot
complete after Dependabot PR #55 upgraded TypeScript to 7.0.2 and ESLint to
10.8.1. The current `typescript-eslint` release requires TypeScript `<6.1.0`,
while ESLint 10 no longer supplies the directly imported `@eslint/js` package
and does not support the repository's pinned Node.js 22.11.0 runtime.

## What Changes

- Pin the root TypeScript development dependency to the latest compatible 6.x
release range.
- Keep ESLint on a Node.js 22.11-compatible 9.x release and declare the
directly imported `@eslint/js` package explicitly.
- Regenerate the npm lockfile and verify installation with `npm ci`.

## Capabilities

### New Capabilities

(none)

### Modified Capabilities

(none; this is a dependency compatibility fix)

## Impact

- `package.json`
- `package-lock.json`
- `eslint.config.js` dependency resolution
- Pull request quality checks
13 changes: 13 additions & 0 deletions openspec/changes/restore-typescript-eslint-compatibility/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## 1. Dependency compatibility

- [x] 1.1 Set TypeScript to a release range accepted by
`typescript-eslint@8.67.0`.
- [x] 1.2 Keep ESLint on a release compatible with the pinned Node.js runtime
and explicitly declare the `@eslint/js` import.
- [x] 1.3 Regenerate `package-lock.json` with npm 10.9.0.

## 2. Verification

- [x] 2.1 Verify a clean dependency install with `npm ci`.
- [x] 2.2 Run the repository typecheck.
- [x] 2.3 Validate this OpenSpec change strictly.
Loading
Loading