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
122 changes: 66 additions & 56 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ jobs:
(cd ui && bun install --frozen-lockfile)
(cd vscode-extension && npm ci && npm run copy-types)

- name: Build shared web components
run: |
cd webcomponents
bun install --frozen-lockfile
bun run typecheck
bun test
bun run build

- name: Format and lint frontend
run: |
bun run fmt:check
Expand All @@ -87,14 +95,6 @@ jobs:
- name: Lint shell scripts
run: shellcheck -S warning scripts/*.sh scripts/ci/*.sh .githooks/*

- name: Build shared web components
run: |
cd webcomponents
bun install --frozen-lockfile
bun run typecheck
bun test
bun run build

- name: Build UI dist
run: |
cd ui
Expand Down Expand Up @@ -181,6 +181,54 @@ jobs:
severity: HIGH,CRITICAL
exit-code: '1'

# Storybook renders every story in a real browser and runs axe over it.
# Deliberately a peer of lint-test with no `needs:`, so it stays a required PR check
storybook:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- name: Install toolchain
uses: dtolnay/rust-toolchain@1.95

- name: Cache cargo
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-storybook-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-storybook-
${{ runner.os }}-cargo-

# The stories are typed against these; generate before they compile.
# lint-test owns the "bindings are committed and fresh" gate.
- name: Generate TypeScript bindings
run: cargo test --locked export_bindings_

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.14

- name: Install dependencies
run: cd webcomponents && bun install --frozen-lockfile

- name: Typecheck stories
run: cd webcomponents && bun run typecheck:stories

- name: Install Chromium
run: cd webcomponents && bunx playwright install --with-deps chromium

# Keep byte-identical to the `storybook` Makefile target.
- name: Build and test Storybook
run: |
cd webcomponents
bun run storybook:build
bun run test:storybook

# Compute the next version once, before anything is built, so the compiled
# binaries embed the same version that the release tag + Docker tag will use.
version:
Expand Down Expand Up @@ -211,6 +259,9 @@ jobs:
with:
components: llvm-tools-preview

- name: Set up Helm
uses: azure/setup-helm@v5.0.1

- name: Cache cargo
uses: actions/cache@v6
with:
Expand Down Expand Up @@ -562,54 +613,13 @@ jobs:
path: artifacts

# Version was computed in the `version` job and already baked into the
# built binaries; persist it into the tracked manifests for the commit/tag.
- name: Write VERSION file
run: echo "${{ needs.version.outputs.version }}" > VERSION

- name: Update Cargo.toml version
run: |
sed -i 's/^version = ".*"/version = "${{ needs.version.outputs.version }}"/' Cargo.toml

- name: Update Cargo.lock
run: cargo update --workspace

- name: Update docs/_config.yml version
run: |
sed -i 's/^version: .*/version: ${{ needs.version.outputs.version }}/' docs/_config.yml

- name: Update Helm chart versions
run: |
sed -i 's/^version: .*/version: ${{ needs.version.outputs.version }}/' charts/operator/Chart.yaml
sed -i 's/^appVersion: .*/appVersion: "${{ needs.version.outputs.version }}"/' charts/operator/Chart.yaml

- name: Update package.json versions
run: |
for f in vscode-extension/package.json \
agnt-plugin/package.json \
agnt-plugin/manifest.json; do
jq --arg v "${{ needs.version.outputs.version }}" '.version = $v' "$f" > tmp.json && mv tmp.json "$f"
done

- name: Update opr8r Cargo.toml version
run: |
sed -i 's/^version = ".*"/version = "${{ needs.version.outputs.version }}"/' opr8r/Cargo.toml
cd opr8r && cargo update --workspace

- name: Update zed-extension versions
run: |
sed -i 's/^version = ".*"/version = "${{ needs.version.outputs.version }}"/' zed-extension/Cargo.toml
sed -i 's/^version = ".*"/version = "${{ needs.version.outputs.version }}"/' zed-extension/extension.toml
cd zed-extension && cargo update -p operator-zed

- name: Update TypeScript VERSION constant
run: |
sed -i "s/const VERSION = [\"'][^\"']*[\"']/const VERSION = \\"${{ needs.version.outputs.version }}\\"/" vscode-extension/src/webhook-server.ts

# Pinned by tests/version_parity.rs; the range keeps the sed inside the
# install_version block so sibling variable defaults are untouched.
- name: Update coder-module install_version default
run: |
sed -i '/variable "install_version"/,/^}/ s/^\( default *= *\)"[^"]*"/\1"${{ needs.version.outputs.version }}"/' coder-module/main.tf
# built binaries; one script revs every tracked manifest and verifies each
# one landed, so a bad rewrite fails here instead of half-tagging a release.
# The script can be run locally for manual version revs.
- name: Bump versioned manifests
env:
VERSION: ${{ needs.version.outputs.version }}
run: ./scripts/ci/bump-version.sh "$VERSION"

# openapi.json's version is code-derived (env!("CARGO_PKG_VERSION")); the
# already-built linux binary embeds the new version, so regenerate the
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ zed-extension/target/
# typescript/node build artifacts
dist/
node_modules/
webcomponents/storybook-static/

# Shared web-component bundle copied into the docs site by `make docs`.
# Built from webcomponents/ ahead of the Jekyll build; never committed.
Expand Down Expand Up @@ -58,4 +59,7 @@ test-output.txt
# terraform working files left by `bun test` in coder-module/
coder-module/.terraform/
coder-module/.terraform.lock.hcl
coder-module/terraform.tfstate*
coder-module/terraform.tfstate*

# superpowers and agent internal notes
superpowers/
17 changes: 17 additions & 0 deletions .oxlintrc.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,23 @@
"files": ["webcomponents/src/**/*.ts", "webcomponents/src/**/*.tsx"],
"env": { "browser": true, "es2022": true }
},
{
"files": [
"webcomponents/stories/**/*.ts",
"webcomponents/stories/**/*.tsx",
"webcomponents/.storybook/preview.tsx",
"webcomponents/.storybook/vitest.setup.ts"
],
"env": { "browser": true, "es2022": true }
},
{
"files": [
"webcomponents/.storybook/main.ts",
"webcomponents/.storybook/icon-assets.ts",
"webcomponents/vitest.config.ts"
],
"env": { "node": true, "es2022": true }
},
{
"files": ["webcomponents/src/**/*.test.ts", "webcomponents/src/**/*.test.tsx"],
"globals": { "Bun": "readonly" },
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

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

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "operator"
version = "0.2.10"
version = "0.2.11"
edition = "2021"
rust-version = "1.95"
description = "Multi-agent orchestration dashboard for kanban shaped software development"
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# a clean CI run. `make install-hooks` wires the committed pre-push hook, which
# runs the fast lint gate (fmt + clippy, no tests) before every push.

.PHONY: check fmt clippy test build run install-hooks bindings webcomponents ui docs \
.PHONY: check fmt clippy test build run install-hooks bindings webcomponents storybook ui docs \
fmt-ts lint-ts lint-shell relay

# Full CI-parity gate. Keep these commands byte-identical to
Expand Down Expand Up @@ -64,6 +64,11 @@ bindings:
webcomponents: bindings
cd webcomponents && bun install --frozen-lockfile && bun run typecheck && bun test && bun run build

# Deterministic visual fixtures consumed locally by Storybook and later by Pixel.
storybook: webcomponents
cd webcomponents && bun run typecheck:stories
cd webcomponents && bun run storybook:build && bun run test:storybook

# The embedded SPA, which resolves @operator/webcomponents from its dist/.
ui: webcomponents
cd ui && bun install --frozen-lockfile && bun run build
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.10
0.2.11
2 changes: 1 addition & 1 deletion agnt-plugin/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "operator-plugin",
"version": "0.2.10",
"version": "0.2.11",
"description": "Orchestrate Operator! ticket-driven coding agents from AGNT workflows",
"author": "untra",
"displayName": "Operator!",
Expand Down
2 changes: 1 addition & 1 deletion agnt-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "operator-plugin",
"version": "0.2.10",
"version": "0.2.11",
"description": "Orchestrate Operator! ticket-driven coding agents from AGNT workflows",
"author": "untra",
"license": "MIT",
Expand Down
86 changes: 0 additions & 86 deletions bump-version.sh

This file was deleted.

4 changes: 2 additions & 2 deletions charts/operator/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: operator
description: Run Operator as a single-writer agent orchestration service
type: application
version: 0.2.10
appVersion: "0.2.10"
version: 0.2.11
appVersion: "0.2.11"
kubeVersion: ">=1.25.0-0"
home: https://operator.untra.io
sources:
Expand Down
5 changes: 1 addition & 4 deletions coder-module/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,10 @@ variable "slug" {
default = "operator"
}

# `default` is revved by bump-version.sh and pinned to the VERSION file by
# tests/version_parity.rs -- an unbumped tag points workspaces at a
# nonexistent GitHub release.
variable "install_version" {
type = string
description = "The version of operator to install (must match a GitHub release tag)."
default = "0.2.10"
default = "0.2.11"
}

variable "install_prefix" {
Expand Down
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ collections_dir: .

# Permalink structure
permalink: pretty
version: 0.2.10
version: 0.2.11

# Google Analytics
ga_tag: G-5JZPJWWT7S # Replace with actual GA4 measurement ID from analytics.google.com
2 changes: 2 additions & 0 deletions docs/assets/css/tokens.css
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
:root {
/* Brand palette */
--color-salmon: #e05d44; /* Terracotta : primary brand */
--color-salmon-text: #a33a29; /* Terracotta, darkened for text on --color-bg */
--color-cornflower: #6688aa; /* Muted blue : secondary text / separators */
--color-cream: #f2eac9; /* Warm accent / highlights */
--color-coral: #e05d44; /* Link / accent (alias of salmon in light) */
Expand All @@ -32,6 +33,7 @@

[data-theme="dark"] {
--color-salmon: #e05d44;
--color-salmon-text: #ff8a76;
--color-cornflower: #88aabb;
--color-cream: #1a1d1e;
--color-coral: #ff7a66;
Expand Down
Loading
Loading