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
2 changes: 1 addition & 1 deletion .github/release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.25.13"
".": "0.26.0"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Synchronize all release metadata before merging

If this Release PR is merged at this SHA, the release workflow reaches release.py check with the manifest and root changelog at 0.26.0 while website/src/pages/changelog.md and skills/skillshare/SKILL.md remain at 0.25.13; the checker rejects that mismatch, preventing the tag and draft from being created. Include the synchronized website entry and built-in skill version in the release commit.

AGENTS.md reference: AGENTS.md:L15-L15

Useful? React with 👍 / 👎.

}
55 changes: 55 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,60 @@
# Changelog

## [0.26.0] - 2026-10-20

### New Features

#### MCP

- **Keep per-Agent settings in the source** — a server's `options` map holds native fields that have no portable equivalent, such as a Codex approval mode or a Claude Code timeout. Sync writes each block only to its Agent, including its account targets, and keeps it when recreating an entry. Pi continues to use `piOptions`. The dashboard's **Other Agent settings** editor accepts one JSON object per Agent. Refs: #579, #580.
```yaml
mcp:
servers:
docs:
url: https://example.com/mcp
targets: [codex, claude]
options:
codex:
default_tools_approval_mode: approve
claude:
timeout: 600000
```
- Fields already managed by portable settings are refused. Credentials must be whole-value environment references supported by the receiving Agent; plaintext credentials are refused.
- **Load served skills into Executor** — `mcp serve --http` now also publishes `/.well-known/agent-skills/index.json` and the skill files that Executor's `wellKnownSkills` loader reads. File changes update the index versions, so Executor picks them up on its next check without a commit or push. Refs: #583.
```bash
skillshare mcp serve --http 127.0.0.1:8765
skillshare mcp serve --check # also reports index coverage and skipped skills
```
- The index uses the MCP server's bearer token when configured. That token also authorizes MCP editing when enabled; use a separate server without `mcp.serve.edit` for a read-only connection. It leaves out skills Executor cannot load; `--check` explains why. Non-loopback serving still requires a token and TLS. Executor refuses private addresses by default; Cloud needs a public address, and self-hosted deployments must explicitly allow private fetches.

#### Hooks

- **Keep hook code and scripts in separate files** — use `codeFile` instead of inline extension code, or `{from: path}` for a script in `files`. Edit those files and run `hooks sync`; no YAML escaping is needed. Refs: #585, #586.
```yaml
hooks:
entries:
lint:
bindings:
pi:
codeFile: hooks/lint.pi.ts
```
- Paths resolve against the config's folder, not the working directory or an entry passed with `--file`. They must stay inside that folder without passing through symlinks. A missing file stops config loading; a file changed after preview makes the apply stale. Saving keeps references; editing code or scripts in the dashboard stores the edit inline.

#### Dashboard

- **Choose one side for every pull conflict** — **Keep all local** and **Keep all remote** select a whole-file resolution for every conflicting file. You can still override individual files before **Apply choices and pull**; selecting a side alone writes nothing.
- **Update outdated memory guidance together** — **Update to latest** opens the existing connection review with every outdated tool selected and its read/write modes preserved. You still review and apply the changes; modified guidance blocks are left alone.

### Bug Fixes

#### Plugins

- **OMP installs its own marketplace build** — when a repository ships same-named OMP and Claude builds, `plugin add --target omp` now uses `.omp-plugin/marketplace.json`, including a `package.json` with `omp.extensions` or the compatible `pi.extensions`. Claude catalog fallback applies only when there is no OMP catalog; a broken or missing native entry no longer silently installs the Claude build. Catalog versions reach the native install, and discovery and dashboard previews show each build's own path, version and components. Refs: #587, #588.

#### Hooks

- **YAML entry files keep their final newline** — `hooks add|edit --file` no longer drops the final newline from a trailing `code: |` block, so an extension written from it keeps the newline expected by formatters. JSON entry files were unaffected. Refs: #584.

## [0.25.13] - 2026-10-16

### New Features
Expand Down
2 changes: 1 addition & 1 deletion skills/skillshare/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description: |
noninteractive automation, and guidance for the terminal UI.
argument-hint: "[command] [target] [--json] [--dry-run] [-p|-g]"
metadata:
version: v0.25.13
version: v0.26.0
---

# Skillshare CLI
Expand Down
55 changes: 55 additions & 0 deletions website/src/pages/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,61 @@ All notable changes to skillshare are documented here. For the full commit histo

---

## [0.26.0] - 2026-10-20

### New Features

#### MCP

- **Keep per-Agent settings in the source** — a server's `options` map holds native fields that have no portable equivalent, such as a Codex approval mode or a Claude Code timeout. Sync writes each block only to its Agent, including its account targets, and keeps it when recreating an entry. Pi continues to use `piOptions`. The dashboard's **Other Agent settings** editor accepts one JSON object per Agent. Refs: #579, #580.
```yaml
mcp:
servers:
docs:
url: https://example.com/mcp
targets: [codex, claude]
options:
codex:
default_tools_approval_mode: approve
claude:
timeout: 600000
```
- Fields already managed by portable settings are refused. Credentials must be whole-value environment references supported by the receiving Agent; plaintext credentials are refused.
- **Load served skills into Executor** — `mcp serve --http` now also publishes `/.well-known/agent-skills/index.json` and the skill files that Executor's `wellKnownSkills` loader reads. File changes update the index versions, so Executor picks them up on its next check without a commit or push. Refs: #583.
```bash
skillshare mcp serve --http 127.0.0.1:8765
skillshare mcp serve --check # also reports index coverage and skipped skills
```
- The index uses the MCP server's bearer token when configured. That token also authorizes MCP editing when enabled; use a separate server without `mcp.serve.edit` for a read-only connection. It leaves out skills Executor cannot load; `--check` explains why. Non-loopback serving still requires a token and TLS. Executor refuses private addresses by default; Cloud needs a public address, and self-hosted deployments must explicitly allow private fetches.

#### Hooks

- **Keep hook code and scripts in separate files** — use `codeFile` instead of inline extension code, or `{from: path}` for a script in `files`. Edit those files and run `hooks sync`; no YAML escaping is needed. Refs: #585, #586.
```yaml
hooks:
entries:
lint:
bindings:
pi:
codeFile: hooks/lint.pi.ts
```
- Paths resolve against the config's folder, not the working directory or an entry passed with `--file`. They must stay inside that folder without passing through symlinks. A missing file stops config loading; a file changed after preview makes the apply stale. Saving keeps references; editing code or scripts in the dashboard stores the edit inline.

#### Dashboard

- **Choose one side for every pull conflict** — **Keep all local** and **Keep all remote** select a whole-file resolution for every conflicting file. You can still override individual files before **Apply choices and pull**; selecting a side alone writes nothing.
- **Update outdated memory guidance together** — **Update to latest** opens the existing connection review with every outdated tool selected and its read/write modes preserved. You still review and apply the changes; modified guidance blocks are left alone.

### Bug Fixes

#### Plugins

- **OMP installs its own marketplace build** — when a repository ships same-named OMP and Claude builds, `plugin add --target omp` now uses `.omp-plugin/marketplace.json`, including a `package.json` with `omp.extensions` or the compatible `pi.extensions`. Claude catalog fallback applies only when there is no OMP catalog; a broken or missing native entry no longer silently installs the Claude build. Catalog versions reach the native install, and discovery and dashboard previews show each build's own path, version and components. Refs: #587, #588.

#### Hooks

- **YAML entry files keep their final newline** — `hooks add|edit --file` no longer drops the final newline from a trailing `code: |` block, so an extension written from it keeps the newline expected by formatters. JSON entry files were unaffected. Refs: #584.

## [0.25.13] - 2026-10-16

### New Features
Expand Down
Loading