mirror of
https://github.com/codewhale-hq/Codewhale.git
synced 2026-11-07 17:09:13 -10:00
app-server: drop the always-empty GET /jobs route (#6513); fold the changelog into 0.10.2
- app-server: /jobs served core::JobManager, which has no callers outside its own tests, so it always returned an empty list; the route and its ADVERTISED_ROUTES entry are gone and RUNTIME_API.md (en, zh-Hans) points to GET /v1/jobs. The relative .deepseek hook-log fallback was already fixed in the tree. [hook_sinks] stays app-server-only and the limitation is now written beside HookSinksToml. Not done: deleting core::JobManager, JobRecord and RunSource::CoreJob, which cascades into the protocol crate and about fifteen core tests; left for a follow-up. - CHANGELOG: the Unreleased entries now sit under '## [0.10.2] - 2026-10-10' (founder decision) with an empty Unreleased lane above, which the site's changelog derivation requires; crates/tui/CHANGELOG.md resynced. Evidence: nextest codewhale-app-server + codewhale-core + codewhale-config: 1107 passed, 0 failed, 1 skipped. Clippy on app-server with CI flags: clean. Web vitest 74 files, 772 passed. check-versions --range-audit-advisory OK; check-contributor-credit clean; sync-changelog --check up to date. Refs #6513 Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
1 parent
be18b0a7bf
commit
8642ccbdc5
6 files changed
+14
-13
No files matched your search
+4
-2
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.10.2] - 2026-10-10
|
||||
|
||||
- A first launch with no key or route now opens the composer. Codewhale asks
|
||||
for a provider when you send your first message, keeps the message in the
|
||||
box, and offers a local model only when a local Ollama server answers. The provider list
|
||||
@@ -67,8 +69,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
`9b5f9d614ef69702be9944a61e89aeb3df14c047`; the 19 catalog entries are
|
||||
unchanged, and installed bundles now come from a revision carrying the
|
||||
reviewed Computer Use and bridge fixes and the MIT license.
|
||||
|
||||
## [0.10.2] - 2026-10-08
|
||||
- `codewhale app-server` no longer serves `GET /jobs`, which was always empty;
|
||||
background jobs are `GET /v1/jobs` on the Runtime API (#6513).
|
||||
|
||||
Codewhale v0.10.2 adds an animated pet view (`/pet on`) and a live Terminal work
|
||||
dock, and improves recovery, plugin approval and provider reliability. `/undo`
|
||||
|
||||
@@ -529,7 +529,7 @@ async fn shutdown_signal() {
|
||||
/// `RuntimeBridge::stream_turn_events` forwards only `item.delta` and the
|
||||
/// turn's completion, and there is no decision route, so approval-gated work
|
||||
/// belongs on the Runtime API (`/v1/threads/*`, `POST /v1/approvals/{id}`).
|
||||
const ADVERTISED_ROUTES: &[&str] = &["/thread", "/app", "/prompt", "/jobs"];
|
||||
const ADVERTISED_ROUTES: &[&str] = &["/thread", "/app", "/prompt"];
|
||||
|
||||
/// Existing compatibility routes adopted by the canonical host listener.
|
||||
/// Both callers share the exact existing dispatcher/auth/body-limit routes.
|
||||
@@ -561,7 +561,6 @@ fn app_router(state: AppState, cors_origins: &[String]) -> Router {
|
||||
MAX_RUNTIME_IMAGE_BODY_BYTES,
|
||||
)),
|
||||
)
|
||||
.route("/jobs", get(jobs_handler))
|
||||
.route(
|
||||
"/v1/chat/completions",
|
||||
post(chat_completions::chat_completions_handler),
|
||||
@@ -1186,11 +1185,6 @@ async fn prompt_handler(State(state): State<AppState>, Json(req): Json<PromptReq
|
||||
}
|
||||
}
|
||||
|
||||
async fn jobs_handler(State(state): State<AppState>) -> Json<AppResponse> {
|
||||
let runtime = state.runtime.read().await;
|
||||
Json(runtime.app_status())
|
||||
}
|
||||
|
||||
async fn app_handler(
|
||||
State(state): State<AppState>,
|
||||
Json(req): Json<AppRequest>,
|
||||
|
||||
@@ -1645,6 +1645,9 @@ mod provider_chain_tests {
|
||||
pub struct HookSinksToml {
|
||||
/// Unix domain socket path used by the app-server event sink.
|
||||
///
|
||||
/// Known limitation: only `codewhale app-server` reads this table; the
|
||||
/// TUI and the Runtime API do not dispatch hook events to it.
|
||||
///
|
||||
/// When unset, no Unix socket sink is registered. There is deliberately no
|
||||
/// shared `/tmp` default because socket ownership should be explicit.
|
||||
#[serde(default)]
|
||||
|
||||
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.10.2] - 2026-10-10
|
||||
|
||||
- A first launch with no key or route now opens the composer. Codewhale asks
|
||||
for a provider when you send your first message, keeps the message in the
|
||||
box, and offers a local model only when a local Ollama server answers. The provider list
|
||||
@@ -67,8 +69,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
`9b5f9d614ef69702be9944a61e89aeb3df14c047`; the 19 catalog entries are
|
||||
unchanged, and installed bundles now come from a revision carrying the
|
||||
reviewed Computer Use and bridge fixes and the MIT license.
|
||||
|
||||
## [0.10.2] - 2026-10-08
|
||||
- `codewhale app-server` no longer serves `GET /jobs`, which was always empty;
|
||||
background jobs are `GET /v1/jobs` on the Runtime API (#6513).
|
||||
|
||||
Codewhale v0.10.2 adds an animated pet view (`/pet on`) and a live Terminal work
|
||||
dock, and improves recovery, plugin approval and provider reliability. `/undo`
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ For the read-only record of what a thread or turn did, see
|
||||
| `codewhale app-server --mobile` | HTTP/SSE on loopback + `/mobile` | Runtime API + local mobile control page |
|
||||
| `codewhale app-server --stdio` | JSON-RPC 2.0 over stdio | Local SDK / control probe (no listener) |
|
||||
| `codewhale app-server --socket [--socket-path P]` | JSON-RPC 2.0 over a `0600` unix domain socket | Desktop daemon: multi-client, peer-uid checked, `daemon/attach` claim handshake (macOS/Linux; Windows named pipe reserved, not implemented) |
|
||||
| `codewhale app-server` | HTTP on `127.0.0.1:8787` | Legacy in-process app-server (`/healthz`, `/thread`, `/app`, `/prompt`, `/jobs`); `/prompt` and `/thread` messages execute real turns via the runtime bridge. There is no direct `/tool` route: tools run only inside Engine turns, under the Engine's tool catalog and approval posture. This legacy server does not surface approvals: its bridge forwards only text deltas and the turn's completion, and it has no decision route, so an approval-gated call waits unanswered. Drive approval-gated work through the Runtime API (`/v1/threads/*` events and `POST /v1/approvals/{approval_id}`) |
|
||||
| `codewhale app-server` | HTTP on `127.0.0.1:8787` | Legacy in-process app-server (`/healthz`, `/thread`, `/app`, `/prompt`); background jobs are `GET /v1/jobs` on the Runtime API; `/prompt` and `/thread` messages execute real turns via the runtime bridge. There is no direct `/tool` route: tools run only inside Engine turns, under the Engine's tool catalog and approval posture. This legacy server does not surface approvals: its bridge forwards only text deltas and the turn's completion, and it has no decision route, so an approval-gated call waits unanswered. Drive approval-gated work through the Runtime API (`/v1/threads/*` events and `POST /v1/approvals/{approval_id}`) |
|
||||
| `codewhale serve --http` / `--mobile` | same server as `app-server --http`/`--mobile` | Compatibility aliases |
|
||||
|
||||
`app-server --http` and `--mobile` launch the same mature runtime API server
|
||||
|
||||
@@ -52,7 +52,7 @@ local supervisor / SDK / automation harness
|
||||
| `codewhale app-server --mobile` | 回环上的 HTTP/SSE + `/mobile` | 运行时 API + 本地移动端控制页 |
|
||||
| `codewhale app-server --stdio` | 基于 stdio 的 JSON-RPC 2.0 | 本地 SDK / 控制探针(不监听端口) |
|
||||
| `codewhale app-server --socket [--socket-path P]` | 基于权限为 `0600` 的 unix 域套接字的 JSON-RPC 2.0 | 桌面守护进程:多客户端、对端 uid 校验、`daemon/attach` 认领握手(macOS/Linux;Windows 命名管道已预留但未实现) |
|
||||
| `codewhale app-server` | 在 `127.0.0.1:8787` 上的 HTTP | 旧式进程内 app-server(`/healthz`、`/thread`、`/app`、`/prompt`、`/jobs`);`/prompt` 与 `/thread` 消息会通过运行时桥执行真实回合。它没有直接的 `/tool` 路由:工具只在 Engine 回合内部、在 Engine 的工具目录与审批姿态下运行。这个旧式服务器不呈现审批:它的桥只转发文本增量和回合的完成,并且没有决策路由,所以一个受审批门控的调用会一直等不到答复。受审批门控的工作请通过运行时 API 驱动(`/v1/threads/*` 事件与 `POST /v1/approvals/{approval_id}`) |
|
||||
| `codewhale app-server` | 在 `127.0.0.1:8787` 上的 HTTP | 旧式进程内 app-server(`/healthz`、`/thread`、`/app`、`/prompt`);后台作业请用运行时 API 的 `GET /v1/jobs`;`/prompt` 与 `/thread` 消息会通过运行时桥执行真实回合。它没有直接的 `/tool` 路由:工具只在 Engine 回合内部、在 Engine 的工具目录与审批姿态下运行。这个旧式服务器不呈现审批:它的桥只转发文本增量和回合的完成,并且没有决策路由,所以一个受审批门控的调用会一直等不到答复。受审批门控的工作请通过运行时 API 驱动(`/v1/threads/*` 事件与 `POST /v1/approvals/{approval_id}`) |
|
||||
| `codewhale serve --http` / `--mobile` | 与 `app-server --http`/`--mobile` 相同的服务器 | 兼容别名 |
|
||||
|
||||
`app-server --http` 与 `--mobile` 启动的是历史上经由 `serve --http` 访问的同一个
|
||||
|
||||
Reference in new issue
Block a user