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 apps/api/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const DEFAULT_PORT = 3760;
const DEFAULT_GATEWAY_PORT = 31879;
const DEFAULT_GATEWAY_BASE_PATH = '/tracevane';
const DEFAULT_BIND_HOST = '127.0.0.1';
const TRACEVANE_VERSION_FALLBACK = '0.2.6';
const TRACEVANE_VERSION_FALLBACK = '0.2.7';

let cachedTracevaneVersion: string | null = null;

Expand Down
2 changes: 1 addition & 1 deletion apps/api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tracevane-api",
"version": "0.2.6",
"version": "0.2.7",
"private": true,
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion apps/web/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tracevane-web",
"version": "0.2.6",
"version": "0.2.7",
"private": true,
"type": "module",
"scripts": {
Expand Down
5 changes: 3 additions & 2 deletions apps/web/src/app/AppShell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {

import { cn } from "@/design/lib/utils";
import { Button } from "@/design/ui/button";
import { resolveApiUrl } from "@/lib/runtime";
import {
Sidebar,
SidebarFooter,
Expand Down Expand Up @@ -116,7 +117,7 @@ function WorkspaceBrand() {
)}
>
<img
src="/brand/tracevane-mark.svg"
src={resolveApiUrl("/brand/tracevane-mark.svg")}
alt="Tracevane"
className="size-8 shrink-0 rounded-md shadow-sm"
draggable={false}
Expand Down Expand Up @@ -276,7 +277,7 @@ function MobileDrawerBrand() {
return (
<div className="flex min-w-0 items-center gap-2.5">
<img
src="/brand/tracevane-mark.svg"
src={resolveApiUrl("/brand/tracevane-mark.svg")}
alt="Tracevane"
className="size-8 shrink-0 rounded-md shadow-sm"
draggable={false}
Expand Down
3 changes: 2 additions & 1 deletion apps/web/src/features/auth/UnlockPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { cn } from "@/design/lib/utils";
import { Button } from "@/design/ui/button";
import { Input } from "@/design/ui/input";
import { isApiError } from "@/lib/api/errors";
import { resolveApiUrl } from "@/lib/runtime";

import { unlockWithCredential, type AuthStatusPayload } from "./api";

Expand Down Expand Up @@ -55,7 +56,7 @@ export function UnlockPage({ status }: { status: AuthStatusPayload }) {
<div className="grid justify-items-center gap-2.5 text-center">
<span className="grid size-12 place-items-center rounded-md border border-line-2 bg-panel-2 shadow-sm">
<img
src="/brand/tracevane-mark.svg"
src={resolveApiUrl("/brand/tracevane-mark.svg")}
alt="Tracevane"
className="size-8"
draggable={false}
Expand Down
5 changes: 1 addition & 4 deletions apps/web/src/features/file-manager/FileManagerChrome.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1190,10 +1190,7 @@ function FavoriteBookmarkManager({
180,
Math.min(panelMaxHeight, Math.max(availableHeight, 0)),
);
const left = Math.max(
viewportGap,
Math.min(rect.right - panelWidth, window.innerWidth - panelWidth - viewportGap),
);
const left = window.innerWidth - panelWidth - viewportGap;
const preferredTop = openBelow
? rect.bottom + gapFromTrigger
: rect.top - gapFromTrigger - panelHeight;
Expand Down
2 changes: 1 addition & 1 deletion apps/web/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const tracevaneBasePath = process.env.TRACEVANE_BASE_PATH || "";
const tracevaneSmokeDisableWatch = process.env.TRACEVANE_SMOKE_DISABLE_WATCH === "1";
const webConfigDir = path.dirname(fileURLToPath(import.meta.url));
const tracevaneRootDir = path.resolve(webConfigDir, "..", "..");
const TRACEVANE_PACKAGE_VERSION_FALLBACK = "0.2.6";
const TRACEVANE_PACKAGE_VERSION_FALLBACK = "0.2.7";
const tracevanePackageVersionOverride =
process.env.TRACEVANE_BUILD_VERSION?.trim() || "";
const tracevanePackageVersion = (() => {
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ <h3 data-i18n="install.manualTitle">Or run the installer yourself</h3>
</footer>

<script>
const TRACEVANE_VERSION = "0.2.6";
const TRACEVANE_VERSION = "0.2.7";
const OPENCLAW_MIN_VERSION = "2026.5.28";

const translations = {
Expand Down
2 changes: 1 addition & 1 deletion install-tracevane.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
TRACEVANE_DEFAULT_VERSION="${TRACEVANE_DEFAULT_VERSION:-0.2.6}"
TRACEVANE_DEFAULT_VERSION="${TRACEVANE_DEFAULT_VERSION:-0.2.7}"
VERSION_EXPLICIT=0
PACKAGE_URL_EXPLICIT=0
GATEWAY_BIND_EXPLICIT=0
Expand Down
2 changes: 1 addition & 1 deletion openclaw.plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "tracevane",
"name": "Tracevane",
"description": "Tracevane 本地 AI Agent 控制工作台,聚焦 Gateway、Channel Connectors、CLI Agent 和运行态自愈。",
"version": "0.2.6",
"version": "0.2.7",
"homepage": "https://github.com/binbin/tracevane",
"activation": {
"onStartup": true
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@binbin/tracevane",
"version": "0.2.6",
"version": "0.2.7",
"description": "Tracevane - Local AI Agent Control Workbench",
"private": true,
"repository": {
Expand Down
19 changes: 19 additions & 0 deletions tests/system/web-file-manager-domain.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,22 @@ test("file manager direct download URLs honor the mounted API base path", () =>
assert.doesNotMatch(source, /window\.open\(\s*`\/api\/files\//);
}
});

test("desktop favorites manager is pinned to the right viewport edge", () => {
const chrome = read("apps/web/src/features/file-manager/FileManagerChrome.tsx");
assert.match(
chrome,
/const left\s*=\s*window\.innerWidth\s*-\s*panelWidth\s*-\s*viewportGap/,
);
});

test("brand logos honor the mounted application base path", () => {
for (const relativePath of [
"apps/web/src/app/AppShell.tsx",
"apps/web/src/features/auth/UnlockPage.tsx",
]) {
const source = read(relativePath);
assert.match(source, /resolveApiUrl/);
assert.doesNotMatch(source, /src="\/brand\/tracevane-mark\.svg"/);
}
});
Loading