feat: add web terminal, improve README, fix node-pty and i18n issues

- Add web terminal view with xterm.js and node-pty WebSocket backend
- Rewrite README with badges, feature table, mobile demo video
- Add package keywords and improved description for npm/GitHub SEO
- Fix node-pty spawn-helper missing execute permission after npm install -g
- Auto-fix node-pty permissions on CLI startup
- Fix duplicate 'error' key in en.ts and zh.ts i18n files
- Remove nested NSpin in PlatformSettings (causes invisible loading spinner)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-15 16:36:04 +08:00
co-authored by Claude Opus 4.6
parent d258875cef
commit 71c7f25f4b
25 changed files with 1367 additions and 244 deletions
+8 -2
View File
@@ -5,6 +5,7 @@ import type { DisplayConfig, AgentConfig, MemoryConfig, SessionResetConfig, Priv
export const useSettingsStore = defineStore('settings', () => {
const loading = ref(false)
const saving = ref(false)
const display = ref<DisplayConfig>({})
const agent = ref<AgentConfig>({})
@@ -49,7 +50,9 @@ export const useSettingsStore = defineStore('settings', () => {
}
async function saveSection(section: string, values: Record<string, any>) {
await configApi.updateConfigSection(section, values)
saving.value = true
try {
await configApi.updateConfigSection(section, values)
switch (section) {
case 'display': display.value = { ...display.value, ...values }; break
case 'agent': agent.value = { ...agent.value, ...values }; break
@@ -76,10 +79,13 @@ export const useSettingsStore = defineStore('settings', () => {
break
}
}
} finally {
saving.value = false
}
}
return {
loading,
loading, saving,
display, agent, memory, sessionReset, privacy,
telegram, discord, slack, whatsapp, matrix, wecom, feishu, dingtalk, weixin, platforms,
fetchSettings, saveSection,