Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e34e971
chore: revert version to 0.0.34 after npm unpublish
ymkiux May 23, 2026
4b116bb
refactor(web-ui): redesign Usage tab with "River of Time" aesthetic
ymkiux May 23, 2026
686ec81
fix(web-ui): resolve /web-ui/ 404 and duplicate path issues
ymkiux May 23, 2026
05035ac
fix(web-ui): strengthen URL normalization to handle nested duplicates
ymkiux May 23, 2026
3ded8c3
test(web-ui): add URL routing and normalization tests
ymkiux May 23, 2026
1a7ebd8
refactor(web-ui): remove /web-ui route, use / as single entry point
ymkiux May 23, 2026
c676da9
feat(web): hide local provider in codex/claude config mode
ymkiux May 23, 2026
bd2f543
feat(web): disable local provider in codex/claude config mode
ymkiux May 23, 2026
ed25c6b
fix(web): correct disabled provider click logic
ymkiux May 23, 2026
1042050
fix(web): remove parentheses from computed property
ymkiux May 23, 2026
08ba575
feat(web): rename claude-local to local with system badge
ymkiux May 23, 2026
aaedffc
feat(web): remove local provider subtitle hint
ymkiux May 23, 2026
8511a41
refactor(web): redesign skills tab to minimalist single-column layout
ymkiux May 23, 2026
545ac9f
refactor(web): implement static URL, always stay at /
ymkiux May 23, 2026
260c613
chore: bump version to 0.0.35
ymkiux May 23, 2026
324c62e
fix(ci): restore missing CI scripts in package.json
ymkiux May 23, 2026
060f5e9
test: update unit tests to match new web-ui structure
ymkiux May 24, 2026
8f00f2a
test: add new keys to parity baseline allowlists
ymkiux May 24, 2026
35fb61c
test: add more usage hero keys to parity baseline
ymkiux May 24, 2026
e74a1a2
test: fix isLocalProviderDisabled key type
ymkiux May 24, 2026
a201a23
fix(web-ui): canonicalize session tab navigation URL
awsldev May 24, 2026
aa88b1f
fix: stabilize web ui navigation and canonical urls
awsldev May 24, 2026
8d5cc34
fix: avoid runtime vue compiler dependency
awsldev May 24, 2026
8251337
fix: preserve sessions tab render on navigation
awsldev May 24, 2026
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
35 changes: 21 additions & 14 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -11408,15 +11408,8 @@ function createWebServer({ htmlPath, assetsDir, webDir, host, port, openBrowser
res.end(errorBody, 'utf-8');
}
});
} else if (requestPath === '/web-ui') {
try {
const html = readBundledWebUiHtml(htmlPath);
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(html);
} catch (error) {
writeWebUiAssetError(res, requestPath, error);
}
} else if (requestPath.startsWith('/web-ui/')) {
// Skip the /web-ui/ directory itself, which is handled above
const normalized = path.normalize(requestPath).replace(/^([\\.\\/])+/, '');
const filePath = path.join(__dirname, normalized);
if (!isPathInside(filePath, webDir)) {
Expand All @@ -11425,6 +11418,14 @@ function createWebServer({ htmlPath, assetsDir, webDir, host, port, openBrowser
return;
}
const relativePath = path.relative(webDir, filePath).replace(/\\/g, '/');

// Empty relativePath means direct /web-ui/ access - return 404
if (relativePath === '' || relativePath === 'index.html') {
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Not Found');
return;
}

const dynamicAsset = PUBLIC_WEB_UI_DYNAMIC_ASSETS.get(relativePath);
if (dynamicAsset) {
try {
Expand Down Expand Up @@ -11520,12 +11521,18 @@ function createWebServer({ htmlPath, assetsDir, webDir, host, port, openBrowser
res.writeHead(200, { 'Content-Type': mime });
fs.createReadStream(filePath).pipe(res);
} else {
try {
const html = readBundledWebUiHtml(htmlPath);
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(html);
} catch (error) {
writeWebUiAssetError(res, requestPath, error);
// Only serve HTML for root path; /web-ui returns 404
if (requestPath === '/') {
try {
const html = readBundledWebUiHtml(htmlPath);
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(html);
} catch (error) {
writeWebUiAssetError(res, requestPath, error);
}
} else {
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Not Found');
}
}
});
Expand Down
15 changes: 2 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codexmate",
"version": "0.1.0",
"version": "0.0.34",
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
"description": "Codex/Claude Code/OpenClaw 配置、会话与任务编排 CLI + Web 工具",
"main": "cli.js",
"bin": {
Expand Down Expand Up @@ -31,18 +31,7 @@
"release:npm": "node tools/release/publish-npm.js",
"docs:dev": "node ./node_modules/vitepress/dist/node/cli.js dev site",
"docs:build": "node ./node_modules/vitepress/dist/node/cli.js build site",
"docs:preview": "node ./node_modules/vitepress/dist/node/cli.js preview site",
"ci:install": "node tools/ci/run-check.js install",
"ci:lint": "node tools/ci/run-check.js lint",
"ci:test": "node tools/ci/run-check.js test",
"lint": "node tools/dev/lint.js",
"test": "npm run test:unit && npm run test:e2e",
"test:ci": "node tools/ci/run-check.js all",
"test:unit": "node tests/unit/run.mjs",
"test:e2e": "node tests/e2e/run.js",
"setup:git": "git remote set-url origin https://github.com/SakuraByteCore/codexmate.git && gh auth setup-git",
"reset:dev": "node tools/dev/reset-and-dev.js",
"pretest": "node tools/ci/ensure-test-deps.js"
"docs:preview": "node ./node_modules/vitepress/dist/node/cli.js preview site"
},
"dependencies": {
"@iarna/toml": "^2.2.5",
Expand Down
Loading
Loading