# Widgent Dashboard — Release notes

Public changelog for dashboard and API features. Updated when we ship customer-facing changes.

**URL:** `https://widgent.app/static/dashboard-updates.md`

---

## 2026-06-01 — Tool manifest API (per-tool)

Manage tools without sending the full manifest array.

**Auth:** Dashboard session cookie (same as other `/v1/products` routes). `X-Service-Key` is not accepted.

| Method | Path | Description |
|--------|------|-------------|
| `GET` | `/v1/products/:productId/tools` | List all tools → `{ tools: [...] }` |
| `GET` | `/v1/products/:productId/tools/:name` | One tool → `{ tool: {...} }` |
| `POST` | `/v1/products/:productId/tools` | Add tool (409 if `name` exists) |
| `PUT` | `/v1/products/:productId/tools/:name` | Replace tool by name |
| `DELETE` | `/v1/products/:productId/tools/:name` | Remove tool by name |

**Full replace** (unchanged): `PATCH /v1/products/:productId` with `{ "toolsManifest": [...] }`.

### Example — add a client tool

```bash
curl -X POST "https://api.widgent.app/v1/products/PRODUCT_ID/tools" \
  -H "Content-Type: application/json" \
  -H "Cookie: YOUR_SESSION_COOKIE" \
  -d '{
    "type": "client",
    "name": "navigate_to",
    "description": "Navigate the user to a page",
    "parameters": {
      "type": "object",
      "properties": { "path": { "type": "string" } },
      "required": ["path"]
    },
    "handler": "myApp.router.push",
    "mockResponse": { "ok": true }
  }'
```

### Example — update one server tool

```bash
curl -X PUT "https://api.widgent.app/v1/products/PRODUCT_ID/tools/search_docs" \
  -H "Content-Type: application/json" \
  -H "Cookie: YOUR_SESSION_COOKIE" \
  -d '{
    "type": "server",
    "description": "Search the knowledge base",
    "parameters": {
      "type": "object",
      "properties": { "query": { "type": "string" } },
      "required": ["query"]
    },
    "url": "https://api.example.com/search",
    "method": "POST"
  }'
```

(`name` is taken from the URL; body fields other than `name` define the tool.)

### Example — remove a tool

```bash
curl -X DELETE "https://api.widgent.app/v1/products/PRODUCT_ID/tools/search_docs" \
  -H "Cookie: YOUR_SESSION_COOKIE"
```

---

## 2026-05 — Tool approval

- Tools can set `"requiresApproval": true` in the manifest (or via the Tools tab checkbox).
- The widget shows Allow / Deny before running the tool; headless mode auto-denies.
- Server tools with approval are executed in the browser after approval (not on the API server).

---

## 2026-05 — Platform agent (super admin)

- Global platform system prompt layered under each product’s prompt.
- Super-admin UI: **Admin → Platform** (trace shows platform vs product prompt sections).

---

## 2026-05 — Chat history sync

- Widget keeps conversation across navigation (session cache + server `GET /v1/chat/history`).
- Multi-tab sync via visibility + BroadcastChannel.

---

## 2026-05 — LLM keys per provider

- Separate API keys per provider (OpenAI, Anthropic, Gemini, OpenRouter).
- Dashboard only enables providers with a saved key; correct default model per provider.

---

## 2026-05 — Integration diagnostics

- `GET /v1/products/:id/integration-diagnostics` with `X-Service-Key` — health summary (origins, LLM key, manifest counts).
- Docs: [integration-troubleshooting.md](https://widgent.app/static/integration-troubleshooting.md), [integration-test-checklist.md](https://widgent.app/static/integration-test-checklist.md).

---

## Links

| Resource | URL |
|----------|-----|
| This changelog | https://widgent.app/static/dashboard-updates.md |
| Integration guide | https://widgent.app/static/integrate.md |
| API overview | See repo `DOCS/api/README.md` |
| Tools docs | See repo `DOCS/tools/README.md` |
