docs: keep Chinese README and refresh screenshots
@@ -43,4 +43,4 @@ Standard dev commands are in `package.json` scripts and `README.md`. Key ones:
|
|||||||
- Do not call Gateway HTTP endpoints directly from renderer (`fetch('http://127.0.0.1:18789/...')` etc.). Use Main-process proxy channels (`hostapi:fetch`, `gateway:httpProxy`) to avoid CORS/env drift.
|
- Do not call Gateway HTTP endpoints directly from renderer (`fetch('http://127.0.0.1:18789/...')` etc.). Use Main-process proxy channels (`hostapi:fetch`, `gateway:httpProxy`) to avoid CORS/env drift.
|
||||||
- Transport policy is Main-owned and fixed as `WS -> HTTP -> IPC fallback`; renderer should not implement protocol switching UI/business logic.
|
- Transport policy is Main-owned and fixed as `WS -> HTTP -> IPC fallback`; renderer should not implement protocol switching UI/business logic.
|
||||||
- **Comms-change checklist**: If your change touches communication paths (gateway events, runtime send/receive, delivery, or fallback), run `pnpm run comms:replay` and `pnpm run comms:compare` before pushing.
|
- **Comms-change checklist**: If your change touches communication paths (gateway events, runtime send/receive, delivery, or fallback), run `pnpm run comms:replay` and `pnpm run comms:compare` before pushing.
|
||||||
- **Doc sync rule**: After any functional or architecture change, review `README.md`, `README.zh-CN.md`, and `README.ja-JP.md` for required updates; if behavior/flows/interfaces changed, update docs in the same PR/commit.
|
- **Doc sync rule**: After any functional or architecture change, review the Chinese root `README.md`; if behavior/flows/interfaces changed, update docs in the same PR/commit.
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
# 智念助手
|
|
||||||
|
|
||||||
This repository has been customized from the ClawX base project into **智念助手**.
|
|
||||||
|
|
||||||
Please use the root [README.md](README.md) as the source of truth for the current product scope, development workflow, packaging flow, and pilot validation notes.
|
|
||||||
18
README.md
@@ -29,6 +29,24 @@
|
|||||||
|
|
||||||
当前阶段:`3.5` 内测研发阶段。
|
当前阶段:`3.5` 内测研发阶段。
|
||||||
|
|
||||||
|
## 功能截图
|
||||||
|
|
||||||
|
### 登录与组织空间
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 工作台首页
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 应用中心
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 知识库
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 核心能力
|
## 核心能力
|
||||||
|
|
||||||
- **账号登录与组织空间**:通过服务端账号密码登录,一个账号对应一个组织空间;本地可维护组织空间展示名称与桌面端用户名称。
|
- **账号登录与组织空间**:通过服务端账号密码登录,一个账号对应一个组织空间;本地可维护组织空间展示名称与桌面端用户名称。
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
# 智念助手
|
|
||||||
|
|
||||||
This repository has been customized from the ClawX base project into **智念助手**.
|
|
||||||
|
|
||||||
Please use the root [README.md](README.md) as the source of truth for the current product scope, development workflow, packaging flow, and pilot validation notes.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# 智念助手
|
|
||||||
|
|
||||||
本项目已经从 ClawX 基础工程定制为 **智念助手**。
|
|
||||||
|
|
||||||
请以根目录 [README.md](README.md) 为准,那里包含当前产品定位、功能范围、开发方式、打包方式和内测验证重点。
|
|
||||||
@@ -32,8 +32,8 @@ const GATEWAY_FETCH_PRELOAD_SOURCE = `'use strict';
|
|||||||
delete flat['HTTP-Referer'];
|
delete flat['HTTP-Referer'];
|
||||||
delete flat['x-title'];
|
delete flat['x-title'];
|
||||||
delete flat['X-Title'];
|
delete flat['X-Title'];
|
||||||
flat['HTTP-Referer'] = 'https://claw-x.com';
|
flat['HTTP-Referer'] = 'https://git.nianxx.cn/wangxuming/NianToB';
|
||||||
flat['X-Title'] = 'ClawX';
|
flat['X-Title'] = '智念助手';
|
||||||
init.headers = flat;
|
init.headers = flat;
|
||||||
}
|
}
|
||||||
return _f.call(globalThis, input, init);
|
return _f.call(globalThis, input, init);
|
||||||
|
|||||||
@@ -176,13 +176,13 @@ export function createMenu(): void {
|
|||||||
{
|
{
|
||||||
label: 'Documentation',
|
label: 'Documentation',
|
||||||
click: async () => {
|
click: async () => {
|
||||||
await shell.openExternal('https://claw-x.com');
|
await shell.openExternal('https://git.nianxx.cn/wangxuming/NianToB');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Report Issue',
|
label: 'Report Issue',
|
||||||
click: async () => {
|
click: async () => {
|
||||||
await shell.openExternal('https://github.com/ValueCell-ai/ClawX/issues');
|
await shell.openExternal('https://git.nianxx.cn/wangxuming/NianToB');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
|
|||||||
@@ -83,8 +83,8 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [
|
|||||||
api: 'openai-completions',
|
api: 'openai-completions',
|
||||||
apiKeyEnv: 'OPENROUTER_API_KEY',
|
apiKeyEnv: 'OPENROUTER_API_KEY',
|
||||||
headers: {
|
headers: {
|
||||||
'HTTP-Referer': 'https://claw-x.com',
|
'HTTP-Referer': 'https://git.nianxx.cn/wangxuming/NianToB',
|
||||||
'X-Title': 'ClawX',
|
'X-Title': '智念助手',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -36,8 +36,8 @@
|
|||||||
delete flat['HTTP-Referer'];
|
delete flat['HTTP-Referer'];
|
||||||
delete flat['x-title'];
|
delete flat['x-title'];
|
||||||
delete flat['X-Title'];
|
delete flat['X-Title'];
|
||||||
flat['HTTP-Referer'] = 'https://claw-x.com';
|
flat['HTTP-Referer'] = 'https://git.nianxx.cn/wangxuming/NianToB';
|
||||||
flat['X-Title'] = 'ClawX';
|
flat['X-Title'] = '智念助手';
|
||||||
init.headers = flat;
|
init.headers = flat;
|
||||||
}
|
}
|
||||||
return _f.call(globalThis, input, init);
|
return _f.call(globalThis, input, init);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# OpenClaw CLI — managed by ClawX
|
# OpenClaw CLI — managed by Zhinian Assistant
|
||||||
# Do not edit manually. Regenerated on ClawX updates.
|
# Do not edit manually. Regenerated on Zhinian Assistant updates.
|
||||||
|
|
||||||
# Resolve the real path of this script (follow symlinks)
|
# Resolve the real path of this script (follow symlinks)
|
||||||
SCRIPT="$0"
|
SCRIPT="$0"
|
||||||
@@ -15,10 +15,10 @@ if [ "$(uname)" = "Darwin" ]; then
|
|||||||
# macOS: <App>.app/Contents/Resources/cli/openclaw
|
# macOS: <App>.app/Contents/Resources/cli/openclaw
|
||||||
# SCRIPT_DIR = .../Contents/Resources/cli
|
# SCRIPT_DIR = .../Contents/Resources/cli
|
||||||
CONTENTS_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
CONTENTS_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
||||||
ELECTRON="$CONTENTS_DIR/MacOS/ClawX"
|
ELECTRON="$CONTENTS_DIR/MacOS/智念助手"
|
||||||
CLI="$CONTENTS_DIR/Resources/openclaw/openclaw.mjs"
|
CLI="$CONTENTS_DIR/Resources/openclaw/openclaw.mjs"
|
||||||
else
|
else
|
||||||
# Linux: /opt/ClawX/resources/cli/openclaw
|
# Linux: /opt/ZhinianAssistant/resources/cli/openclaw
|
||||||
# SCRIPT_DIR = .../resources/cli
|
# SCRIPT_DIR = .../resources/cli
|
||||||
INSTALL_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
INSTALL_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
||||||
ELECTRON="$INSTALL_DIR/clawx"
|
ELECTRON="$INSTALL_DIR/clawx"
|
||||||
@@ -26,23 +26,23 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$ELECTRON" ]; then
|
if [ ! -f "$ELECTRON" ]; then
|
||||||
echo "Error: ClawX executable not found at $ELECTRON" >&2
|
echo "Error: Zhinian Assistant executable not found at $ELECTRON" >&2
|
||||||
echo "Please reinstall ClawX or remove this script: $0" >&2
|
echo "Please reinstall Zhinian Assistant or remove this script: $0" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
update)
|
update)
|
||||||
echo "openclaw is managed by ClawX (bundled version)."
|
echo "openclaw is managed by Zhinian Assistant (bundled version)."
|
||||||
echo ""
|
echo ""
|
||||||
echo "To update openclaw, update ClawX:"
|
echo "To update openclaw, update Zhinian Assistant:"
|
||||||
echo " Open ClawX > Settings > Check for Updates"
|
echo " Open Zhinian Assistant > Settings > Check for Updates"
|
||||||
echo " Or download the latest version from https://claw-x.com"
|
echo " Or contact the administrator for the latest installer"
|
||||||
echo ""
|
echo ""
|
||||||
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --version 2>/dev/null || true
|
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --version 2>/dev/null || true
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
export OPENCLAW_EMBEDDED_IN="ClawX"
|
export OPENCLAW_EMBEDDED_IN="Zhinian Assistant"
|
||||||
ELECTRON_RUN_AS_NODE=1 exec "$ELECTRON" "$CLI" "$@"
|
ELECTRON_RUN_AS_NODE=1 exec "$ELECTRON" "$CLI" "$@"
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ INSTALL_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
update)
|
update)
|
||||||
echo "openclaw is managed by ClawX (bundled version)."
|
echo "openclaw is managed by Zhinian Assistant (bundled version)."
|
||||||
echo ""
|
echo ""
|
||||||
echo "To update openclaw, update ClawX:"
|
echo "To update openclaw, update Zhinian Assistant:"
|
||||||
echo " Open ClawX > Settings > Check for Updates"
|
echo " Open Zhinian Assistant > Settings > Check for Updates"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
export OPENCLAW_EMBEDDED_IN="ClawX"
|
export OPENCLAW_EMBEDDED_IN="Zhinian Assistant"
|
||||||
NODE_EXE="$INSTALL_DIR/resources/bin/node.exe"
|
NODE_EXE="$INSTALL_DIR/resources/bin/node.exe"
|
||||||
OPENCLAW_ENTRY="$INSTALL_DIR/resources/openclaw/openclaw.mjs"
|
OPENCLAW_ENTRY="$INSTALL_DIR/resources/openclaw/openclaw.mjs"
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ if [ -f "$NODE_EXE" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ELECTRON_RUN_AS_NODE=1 exec "$INSTALL_DIR/ClawX.exe" "$OPENCLAW_ENTRY" "$@"
|
ELECTRON_RUN_AS_NODE=1 exec "$INSTALL_DIR/智念助手.exe" "$OPENCLAW_ENTRY" "$@"
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
setlocal
|
setlocal
|
||||||
|
|
||||||
if /i "%1"=="update" (
|
if /i "%1"=="update" (
|
||||||
echo openclaw is managed by ClawX ^(bundled version^).
|
echo openclaw is managed by Zhinian Assistant ^(bundled version^).
|
||||||
echo.
|
echo.
|
||||||
echo To update openclaw, update ClawX:
|
echo To update openclaw, update Zhinian Assistant:
|
||||||
echo Open ClawX ^> Settings ^> Check for Updates
|
echo Open Zhinian Assistant ^> Settings ^> Check for Updates
|
||||||
echo Or download the latest version from https://claw-x.com
|
echo Or contact the administrator for the latest installer
|
||||||
exit /b 0
|
exit /b 0
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ rem on non-English Windows (e.g. Chinese CP936). Save the previous codepage to r
|
|||||||
for /f "tokens=2 delims=:." %%a in ('chcp') do set /a "_CP=%%a" 2>nul
|
for /f "tokens=2 delims=:." %%a in ('chcp') do set /a "_CP=%%a" 2>nul
|
||||||
chcp 65001 >nul 2>&1
|
chcp 65001 >nul 2>&1
|
||||||
|
|
||||||
set OPENCLAW_EMBEDDED_IN=ClawX
|
set OPENCLAW_EMBEDDED_IN=Zhinian Assistant
|
||||||
set "NODE_EXE=%~dp0..\bin\node.exe"
|
set "NODE_EXE=%~dp0..\bin\node.exe"
|
||||||
set "OPENCLAW_ENTRY=%~dp0..\openclaw\openclaw.mjs"
|
set "OPENCLAW_ENTRY=%~dp0..\openclaw\openclaw.mjs"
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ if "%_USE_BUNDLED_NODE%"=="1" (
|
|||||||
"%NODE_EXE%" "%OPENCLAW_ENTRY%" %*
|
"%NODE_EXE%" "%OPENCLAW_ENTRY%" %*
|
||||||
) else (
|
) else (
|
||||||
set ELECTRON_RUN_AS_NODE=1
|
set ELECTRON_RUN_AS_NODE=1
|
||||||
"%~dp0..\..\ClawX.exe" "%OPENCLAW_ENTRY%" %*
|
"%~dp0..\..\智念助手.exe" "%OPENCLAW_ENTRY%" %*
|
||||||
)
|
)
|
||||||
set _EXIT=%ERRORLEVEL%
|
set _EXIT=%ERRORLEVEL%
|
||||||
|
|
||||||
|
|||||||
BIN
resources/readme/01-login.png
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
resources/readme/02-home.png
Normal file
|
After Width: | Height: | Size: 260 KiB |
BIN
resources/readme/04-app-center.png
Normal file
|
After Width: | Height: | Size: 210 KiB |
BIN
resources/readme/05-knowledge.png
Normal file
|
After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 754 KiB |
|
Before Width: | Height: | Size: 622 KiB |
|
Before Width: | Height: | Size: 697 KiB |
|
Before Width: | Height: | Size: 656 KiB |
|
Before Width: | Height: | Size: 675 KiB |
|
Before Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 806 KiB |
|
Before Width: | Height: | Size: 651 KiB |
|
Before Width: | Height: | Size: 705 KiB |
|
Before Width: | Height: | Size: 679 KiB |
|
Before Width: | Height: | Size: 678 KiB |
|
Before Width: | Height: | Size: 828 KiB |
|
Before Width: | Height: | Size: 754 KiB |
|
Before Width: | Height: | Size: 622 KiB |
|
Before Width: | Height: | Size: 697 KiB |
|
Before Width: | Height: | Size: 656 KiB |
|
Before Width: | Height: | Size: 675 KiB |
|
Before Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 741 KiB |
|
Before Width: | Height: | Size: 627 KiB |
|
Before Width: | Height: | Size: 678 KiB |
|
Before Width: | Height: | Size: 657 KiB |
|
Before Width: | Height: | Size: 659 KiB |
|
Before Width: | Height: | Size: 834 KiB |
@@ -50,7 +50,7 @@
|
|||||||
DetailPrint `Closing running "${PRODUCT_NAME}"...`
|
DetailPrint `Closing running "${PRODUCT_NAME}"...`
|
||||||
|
|
||||||
# Kill ALL processes whose executable lives inside $INSTDIR.
|
# Kill ALL processes whose executable lives inside $INSTDIR.
|
||||||
# This covers ClawX.exe (multiple Electron processes), openclaw-gateway.exe,
|
# This covers the app executable (multiple Electron processes), openclaw-gateway.exe,
|
||||||
# python.exe (skills runtime), uv.exe (package manager), and any other
|
# python.exe (skills runtime), uv.exe (package manager), and any other
|
||||||
# child process that might hold file locks in the installation directory.
|
# child process that might hold file locks in the installation directory.
|
||||||
#
|
#
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
${nsProcess::Unload}
|
${nsProcess::Unload}
|
||||||
${endIf}
|
${endIf}
|
||||||
|
|
||||||
; Even if ClawX.exe was not detected as running, orphan child processes
|
; Even if the app executable was not detected as running, orphan child processes
|
||||||
; (python.exe, openclaw-gateway.exe, uv.exe, etc.) from a previous crash
|
; (python.exe, openclaw-gateway.exe, uv.exe, etc.) from a previous crash
|
||||||
; or unclean shutdown may still hold file locks inside $INSTDIR.
|
; or unclean shutdown may still hold file locks inside $INSTDIR.
|
||||||
; Unconditionally kill any process whose executable lives in the install dir.
|
; Unconditionally kill any process whose executable lives in the install dir.
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
Pop $1
|
Pop $1
|
||||||
|
|
||||||
; Always kill known process names as a belt-and-suspenders approach.
|
; Always kill known process names as a belt-and-suspenders approach.
|
||||||
; PowerShell path-based kill may miss processes if the old ClawX was installed
|
; PowerShell path-based kill may miss processes if the old app was installed
|
||||||
; in a different directory than $INSTDIR (e.g., per-machine -> per-user migration).
|
; in a different directory than $INSTDIR (e.g., per-machine -> per-user migration).
|
||||||
; taskkill is name-based and catches processes regardless of their install location.
|
; taskkill is name-based and catches processes regardless of their install location.
|
||||||
nsExec::ExecToStack 'taskkill /F /T /IM "${APP_EXECUTABLE_FILENAME}"'
|
nsExec::ExecToStack 'taskkill /F /T /IM "${APP_EXECUTABLE_FILENAME}"'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Post-installation script for ClawX on Linux
|
# Post-installation script for Zhinian Assistant on Linux
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -14,20 +14,21 @@ if command -v gtk-update-icon-cache &> /dev/null; then
|
|||||||
gtk-update-icon-cache -q /usr/share/icons/hicolor || true
|
gtk-update-icon-cache -q /usr/share/icons/hicolor || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create symbolic link for ClawX app binary
|
# Create symbolic link for Zhinian Assistant app binary
|
||||||
if [ -x /opt/ClawX/clawx ]; then
|
APP_DIR="/opt/智念助手"
|
||||||
ln -sf /opt/ClawX/clawx /usr/local/bin/clawx 2>/dev/null || true
|
if [ -x "$APP_DIR/zhinian-assistant" ]; then
|
||||||
|
ln -sf "$APP_DIR/zhinian-assistant" /usr/local/bin/zhinian-assistant 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create symbolic link for the app-managed openclaw CLI only when it will not
|
# Create symbolic link for the app-managed openclaw CLI only when it will not
|
||||||
# overwrite a user-managed OpenClaw installation.
|
# overwrite a user-managed OpenClaw installation.
|
||||||
OPENCLAW_WRAPPER="/opt/ClawX/resources/cli/openclaw"
|
OPENCLAW_WRAPPER="$APP_DIR/resources/cli/openclaw"
|
||||||
if [ -f "$OPENCLAW_WRAPPER" ]; then
|
if [ -f "$OPENCLAW_WRAPPER" ]; then
|
||||||
chmod +x "$OPENCLAW_WRAPPER" 2>/dev/null || true
|
chmod +x "$OPENCLAW_WRAPPER" 2>/dev/null || true
|
||||||
if [ ! -e /usr/local/bin/openclaw ] || [ "$(readlink /usr/local/bin/openclaw 2>/dev/null || true)" = "$OPENCLAW_WRAPPER" ]; then
|
if [ ! -e /usr/local/bin/openclaw ] || [ "$(readlink /usr/local/bin/openclaw 2>/dev/null || true)" = "$OPENCLAW_WRAPPER" ]; then
|
||||||
ln -sf "$OPENCLAW_WRAPPER" /usr/local/bin/openclaw 2>/dev/null || true
|
ln -sf "$OPENCLAW_WRAPPER" /usr/local/bin/openclaw 2>/dev/null || true
|
||||||
else
|
else
|
||||||
echo "Keeping existing /usr/local/bin/openclaw; it is not managed by ClawX."
|
echo "Keeping existing /usr/local/bin/openclaw; it is not managed by Zhinian Assistant."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -37,9 +38,9 @@ fi
|
|||||||
# we rely on the AppArmor profile below instead, so 0755 is correct there.
|
# we rely on the AppArmor profile below instead, so 0755 is correct there.
|
||||||
if ! { [[ -L /proc/self/ns/user ]] && unshare --user true; }; then
|
if ! { [[ -L /proc/self/ns/user ]] && unshare --user true; }; then
|
||||||
# No user namespace support — fall back to SUID sandbox
|
# No user namespace support — fall back to SUID sandbox
|
||||||
chmod 4755 '/opt/ClawX/chrome-sandbox' || true
|
chmod 4755 "$APP_DIR/chrome-sandbox" || true
|
||||||
else
|
else
|
||||||
chmod 0755 '/opt/ClawX/chrome-sandbox' || true
|
chmod 0755 "$APP_DIR/chrome-sandbox" || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install AppArmor profile (Ubuntu 24.04+).
|
# Install AppArmor profile (Ubuntu 24.04+).
|
||||||
@@ -50,8 +51,8 @@ fi
|
|||||||
# We first check if AppArmor is enabled and if the running version supports abi/4.0
|
# We first check if AppArmor is enabled and if the running version supports abi/4.0
|
||||||
# (Ubuntu 22.04 does not; it runs fine without the profile, so we skip it there).
|
# (Ubuntu 22.04 does not; it runs fine without the profile, so we skip it there).
|
||||||
if apparmor_status --enabled > /dev/null 2>&1; then
|
if apparmor_status --enabled > /dev/null 2>&1; then
|
||||||
APPARMOR_PROFILE_SOURCE='/opt/ClawX/resources/apparmor-profile'
|
APPARMOR_PROFILE_SOURCE="$APP_DIR/resources/apparmor-profile"
|
||||||
APPARMOR_PROFILE_TARGET='/etc/apparmor.d/clawx'
|
APPARMOR_PROFILE_TARGET='/etc/apparmor.d/zhinian-assistant'
|
||||||
if apparmor_parser --skip-kernel-load --debug "$APPARMOR_PROFILE_SOURCE" > /dev/null 2>&1; then
|
if apparmor_parser --skip-kernel-load --debug "$APPARMOR_PROFILE_SOURCE" > /dev/null 2>&1; then
|
||||||
cp -f "$APPARMOR_PROFILE_SOURCE" "$APPARMOR_PROFILE_TARGET"
|
cp -f "$APPARMOR_PROFILE_SOURCE" "$APPARMOR_PROFILE_TARGET"
|
||||||
|
|
||||||
@@ -64,4 +65,4 @@ if apparmor_status --enabled > /dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "ClawX has been installed successfully."
|
echo "Zhinian Assistant has been installed successfully."
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Post-removal script for ClawX on Linux
|
# Post-removal script for Zhinian Assistant on Linux
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Remove symbolic links
|
# Remove symbolic links
|
||||||
rm -f /usr/local/bin/clawx 2>/dev/null || true
|
rm -f /usr/local/bin/zhinian-assistant 2>/dev/null || true
|
||||||
|
|
||||||
# Only remove the app-managed OpenClaw CLI wrapper. If the user had OpenClaw
|
# Only remove the app-managed OpenClaw CLI wrapper. If the user had OpenClaw
|
||||||
# installed separately, leave their command and ~/.openclaw data untouched.
|
# installed separately, leave their command and ~/.openclaw data untouched.
|
||||||
OPENCLAW_WRAPPER="/opt/ClawX/resources/cli/openclaw"
|
OPENCLAW_WRAPPER="/opt/智念助手/resources/cli/openclaw"
|
||||||
if [ "$(readlink /usr/local/bin/openclaw 2>/dev/null || true)" = "$OPENCLAW_WRAPPER" ]; then
|
if [ "$(readlink /usr/local/bin/openclaw 2>/dev/null || true)" = "$OPENCLAW_WRAPPER" ]; then
|
||||||
rm -f /usr/local/bin/openclaw 2>/dev/null || true
|
rm -f /usr/local/bin/openclaw 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
@@ -25,9 +25,9 @@ if command -v gtk-update-icon-cache &> /dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove AppArmor profile
|
# Remove AppArmor profile
|
||||||
APPARMOR_PROFILE_TARGET='/etc/apparmor.d/clawx'
|
APPARMOR_PROFILE_TARGET='/etc/apparmor.d/zhinian-assistant'
|
||||||
if [ -f "$APPARMOR_PROFILE_TARGET" ]; then
|
if [ -f "$APPARMOR_PROFILE_TARGET" ]; then
|
||||||
rm -f "$APPARMOR_PROFILE_TARGET"
|
rm -f "$APPARMOR_PROFILE_TARGET"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "ClawX has been removed."
|
echo "Zhinian Assistant has been removed."
|
||||||
|
|||||||