diff --git a/CHANGELOG.md b/CHANGELOG.md index a9e3732..4d6b820 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable public release changes are tracked here. +## 0.3.1 - 2026-08-20 + +### Fixed + +- The sidebar folder menu item **Delete folder** could not be clicked. The open menu overlapped the next folder row, and that later row received the click. + +### Changed + +- Package versions are `0.3.1`. Git tags and GHCR image tags keep the leading `v`, for example `v0.3.1`. + ## 0.3.0 - 2026-08-17 ### Added diff --git a/README.md b/README.md index c621518..f013a73 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ muteki rollback # switch back to the previous installed release muteki version # show the active version and install mode ``` -The same controls are available under **Settings → System update** in the Web command deck. Releases and images default to this repository and `ghcr.io/fishcodetech`. For the versioned container deployment, use `muteki upgrade --compose` with [`docker-compose.release.yml`](docker-compose.release.yml). If you publish your own tags and images, set `MUTEKI_RELEASE_REPOSITORY` and `MUTEKI_IMAGE_REGISTRY`; non-public GitHub Releases also need `MUTEKI_GITHUB_TOKEN`. Git tags and image tags use a leading `v`, for example `v0.3.0`. +The same controls are available under **Settings → System update** in the Web command deck. Releases and images default to this repository and `ghcr.io/fishcodetech`. For the versioned container deployment, use `muteki upgrade --compose` with [`docker-compose.release.yml`](docker-compose.release.yml). If you publish your own tags and images, set `MUTEKI_RELEASE_REPOSITORY` and `MUTEKI_IMAGE_REGISTRY`; non-public GitHub Releases also need `MUTEKI_GITHUB_TOKEN`. Git tags and image tags use a leading `v`, for example `v0.3.1`. Recommended setting: @@ -258,8 +258,8 @@ MUTEKI_WORKER_IMAGE=ghcr.io/fishcodetech/muteki-worker-slim:latest ./run.sh web ```bash ./docker/worker/build.sh -./docker/worker/build.sh ghcr.io/fishcodetech/muteki-worker v0.3.0 -./docker/worker-slim/build.sh ghcr.io/fishcodetech/muteki-worker-slim v0.3.0 amd64 +./docker/worker/build.sh ghcr.io/fishcodetech/muteki-worker v0.3.1 +./docker/worker-slim/build.sh ghcr.io/fishcodetech/muteki-worker-slim v0.3.1 amd64 ``` The full image is intentionally large (Kali headless + Ghidra + SageMath via conda + offline knowledge). Use the slim image only when you understand that workers may need to install more tooling during a run. diff --git a/README_CN.md b/README_CN.md index 29560b2..059167e 100644 --- a/README_CN.md +++ b/README_CN.md @@ -149,7 +149,7 @@ muteki rollback # 回滚到上一已安装版本 muteki version # 查看当前版本和安装形态 ``` -Web 控制台的“设置 → 系统更新”提供相同操作。发布包和镜像默认来自本仓库和 `ghcr.io/fishcodetech`。版本化容器部署使用 `muteki upgrade --compose` 和 [`docker-compose.release.yml`](docker-compose.release.yml)。若自行发布 tag 和镜像,设置 `MUTEKI_RELEASE_REPOSITORY` 和 `MUTEKI_IMAGE_REGISTRY`;非公开 GitHub Release 还需要 `MUTEKI_GITHUB_TOKEN`。Git 标签和镜像标签带 `v`,例如 `v0.3.0`。 +Web 控制台的“设置 → 系统更新”提供相同操作。发布包和镜像默认来自本仓库和 `ghcr.io/fishcodetech`。版本化容器部署使用 `muteki upgrade --compose` 和 [`docker-compose.release.yml`](docker-compose.release.yml)。若自行发布 tag 和镜像,设置 `MUTEKI_RELEASE_REPOSITORY` 和 `MUTEKI_IMAGE_REGISTRY`;非公开 GitHub Release 还需要 `MUTEKI_GITHUB_TOKEN`。Git 标签和镜像标签带 `v`,例如 `v0.3.1`。 推荐设置项: @@ -260,8 +260,8 @@ MUTEKI_WORKER_IMAGE=ghcr.io/fishcodetech/muteki-worker-slim:latest ./run.sh web ```bash ./docker/worker/build.sh -./docker/worker/build.sh ghcr.io/fishcodetech/muteki-worker v0.3.0 -./docker/worker-slim/build.sh ghcr.io/fishcodetech/muteki-worker-slim v0.3.0 amd64 +./docker/worker/build.sh ghcr.io/fishcodetech/muteki-worker v0.3.1 +./docker/worker-slim/build.sh ghcr.io/fishcodetech/muteki-worker-slim v0.3.1 amd64 ``` 完整镜像会比较大(Kali headless + Ghidra + 经 conda 装的 SageMath + 离线知识库)。只有在你明确知道 worker 可以在运行中自行安装缺失工具时,才建议用 slim 镜像跑真实题目。 diff --git a/apps/web/ui/app/globals.css b/apps/web/ui/app/globals.css index 1c4a53a..57e16cd 100644 --- a/apps/web/ui/app/globals.css +++ b/apps/web/ui/app/globals.css @@ -5186,6 +5186,13 @@ button.ws2-overview-tr:hover { background: var(--ink-wash); } position: relative; z-index: 1; } +/* Open ⋯ menus overflow their row. Equal-z siblings later in the list would + intercept clicks on the overflowing items (folder "Delete" sits over the + next folder). Raise the open host above its neighbours. */ +.selection-glide-host > .rail-folder.menu-open, +.selection-glide-host .thread-item.menu-open { + z-index: 90; +} /* The shared layer owns selected backgrounds; items continue to own content, focus rings and semantic colours. */ diff --git a/apps/web/ui/components/ThreadRail.tsx b/apps/web/ui/components/ThreadRail.tsx index d958680..e50bfbd 100644 --- a/apps/web/ui/components/ThreadRail.tsx +++ b/apps/web/ui/components/ThreadRail.tsx @@ -343,7 +343,7 @@ export function ThreadRail({ )} {items.length} -
+
{menuFor === `folder:${f.id}` && ( diff --git a/apps/web/ui/package-lock.json b/apps/web/ui/package-lock.json index ef9b3b7..5e3b2da 100644 --- a/apps/web/ui/package-lock.json +++ b/apps/web/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "muteki-command-deck", - "version": "0.3.0", + "version": "0.3.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "muteki-command-deck", - "version": "0.3.0", + "version": "0.3.1", "dependencies": { "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0", diff --git a/apps/web/ui/package.json b/apps/web/ui/package.json index 7ed0ac2..9ea3bfa 100644 --- a/apps/web/ui/package.json +++ b/apps/web/ui/package.json @@ -1,6 +1,6 @@ { "name": "muteki-command-deck", - "version": "0.3.0", + "version": "0.3.1", "private": true, "description": "Project Muteki web command deck — a conversation-first frontend over the agent SSE stream with a live fact graph, blackboard, worker dock, and HITL controls.", "scripts": { diff --git a/docker-compose.release.yml b/docker-compose.release.yml index 9d338ee..d2bcd5c 100644 --- a/docker-compose.release.yml +++ b/docker-compose.release.yml @@ -1,11 +1,11 @@ # Project Muteki 版本化生产部署。 # # 公开默认镜像仓库是 ghcr.io/fishcodetech。 -# Git / GHCR 标签带 v,例如 v0.3.0。 +# Git / GHCR 标签带 v,例如 v0.3.1。 # 私有 GHCR 需要先 docker login ghcr.io,并设置 MUTEKI_IMAGE_REGISTRY。 # # MUTEKI_IMAGE_REGISTRY=ghcr.io/fishcodetech \ -# MUTEKI_RELEASE_VERSION=v0.3.0 \ +# MUTEKI_RELEASE_VERSION=v0.3.1 \ # MUTEKI_HOST_DATA_ROOT=/opt/muteki/data \ # MUTEKI_WEB_PASSWORD=... docker compose -f docker-compose.release.yml up -d --wait @@ -17,7 +17,7 @@ networks: services: web-api: - image: ${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-web:${MUTEKI_RELEASE_VERSION:-v0.3.0} + image: ${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-web:${MUTEKI_RELEASE_VERSION:-v0.3.1} networks: [muteki_net] ports: - "${MUTEKI_API_PORT:-8000}:8000" @@ -36,8 +36,8 @@ services: MUTEKI_COORDINATOR_CONTROL_ROOT: "${MUTEKI_HOST_DATA_ROOT}/coordinator-control" MUTEKI_WEB_BIND: "0.0.0.0" MUTEKI_WEB_PASSWORD: "${MUTEKI_WEB_PASSWORD:?set MUTEKI_WEB_PASSWORD}" - MUTEKI_WORKER_IMAGE: "${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-worker:${MUTEKI_RELEASE_VERSION:-v0.3.0}" - MUTEKI_WORKER_IMAGE_VERSION: "${MUTEKI_RELEASE_VERSION:-v0.3.0}" + MUTEKI_WORKER_IMAGE: "${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-worker:${MUTEKI_RELEASE_VERSION:-v0.3.1}" + MUTEKI_WORKER_IMAGE_VERSION: "${MUTEKI_RELEASE_VERSION:-v0.3.1}" MUTEKI_RELEASE_REPOSITORY: "${MUTEKI_RELEASE_REPOSITORY:-FishCodeTech/muteki}" MUTEKI_IMAGE_REGISTRY: "${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}" MUTEKI_GITHUB_TOKEN: "${MUTEKI_GITHUB_TOKEN:-}" @@ -53,7 +53,7 @@ services: restart: unless-stopped ui: - image: ${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-ui:${MUTEKI_RELEASE_VERSION:-v0.3.0} + image: ${MUTEKI_IMAGE_REGISTRY:-ghcr.io/fishcodetech}/muteki-ui:${MUTEKI_RELEASE_VERSION:-v0.3.1} networks: [muteki_net] ports: - "${MUTEKI_UI_PORT:-3001}:3001" diff --git a/docker/worker-slim/build.sh b/docker/worker-slim/build.sh index edda94e..8e77236 100755 --- a/docker/worker-slim/build.sh +++ b/docker/worker-slim/build.sh @@ -7,7 +7,7 @@ # # Usage: ./docker/worker-slim/build.sh [repo] [version] [arch] # repo: image repository (default: muteki-worker-slim; e.g. ghcr.io/fishcodetech/muteki-worker-slim) -# version: version tag (default: v0.3.0; GHCR release tags keep the leading v) +# version: version tag (default: v0.3.1; GHCR release tags keep the leading v) # arch: amd64 | arm64 (default: HOST arch — arm64 on Apple Silicon) # Tags built: : AND :latest. # @@ -26,7 +26,7 @@ set -euo pipefail REPO_IMAGE="${1:-muteki-worker-slim}" -VERSION="${2:-v0.3.0}" +VERSION="${2:-v0.3.1}" # Default arch = host arch (uname -m → docker/go naming). Override with 3rd arg. _host_arch="$(uname -m)" case "${_host_arch}" in diff --git a/docker/worker/build.sh b/docker/worker/build.sh index 5a35092..a3e709b 100755 --- a/docker/worker/build.sh +++ b/docker/worker/build.sh @@ -6,12 +6,12 @@ # # Usage: ./docker/worker/build.sh [repo] [version] # repo: image repository (default: muteki-worker; e.g. ghcr.io/fishcodetech/muteki-worker) -# version: version tag (default: v0.3.0; GHCR release tags keep the leading v) +# version: version tag (default: v0.3.1; GHCR release tags keep the leading v) # Tags built: : AND :latest (code defaults to :latest). set -euo pipefail REPO_IMAGE="${1:-muteki-worker}" -VERSION="${2:-v0.3.0}" +VERSION="${2:-v0.3.1}" TAG="${REPO_IMAGE}:${VERSION}" LATEST="${REPO_IMAGE}:latest" HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" diff --git a/muteki/solver/container_exec.py b/muteki/solver/container_exec.py index 0f727b8..cfc179e 100644 --- a/muteki/solver/container_exec.py +++ b/muteki/solver/container_exec.py @@ -59,7 +59,7 @@ # at runtime; do not bake claude/codex/cursor login state into this image. # One generic worker image (NOT a per-recipe tag), published to Docker Hub so any # host can `docker pull` it. Default to the moving :latest; override with -# MUTEKI_WORKER_IMAGE to pin a version (e.g. ghcr.io/fishcodetech/muteki-worker:v0.3.0). +# MUTEKI_WORKER_IMAGE to pin a version (e.g. ghcr.io/fishcodetech/muteki-worker:v0.3.1). WORKER_IMAGE = os.environ.get("MUTEKI_WORKER_IMAGE", "ghcr.io/fishcodetech/muteki-worker:latest") CONTAINER_WORKSPACE = "/home/kali/workspace" CONTAINER_CONTROL_DIR = "/run/muteki/control" # bind-mounted; carries the per-run token diff --git a/muteki/version.py b/muteki/version.py index 557f458..96f5013 100644 --- a/muteki/version.py +++ b/muteki/version.py @@ -8,7 +8,7 @@ from pathlib import Path from typing import Any -FALLBACK_VERSION = "0.3.0" +FALLBACK_VERSION = "0.3.1" def project_root() -> Path: diff --git a/pyproject.toml b/pyproject.toml index d09f893..26d1355 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "project-muteki" -version = "0.3.0" +version = "0.3.1" description = "Project Muteki (無敵): autonomous multi-model CTF-solving AI agent swarm" requires-python = ">=3.13" dependencies = [ diff --git a/uv.lock b/uv.lock index 0813980..d231751 100644 --- a/uv.lock +++ b/uv.lock @@ -593,7 +593,7 @@ wheels = [ [[package]] name = "project-muteki" -version = "0.3.0" +version = "0.3.1" source = { editable = "." } dependencies = [ { name = "anyio" },