From 1718f9cf7c3616d3642a79bdac630536f4701596 Mon Sep 17 00:00:00 2001 From: iliya Date: Tue, 24 Mar 2026 16:52:12 +0200 Subject: [PATCH] refactor(README): reorganize roadmap items for clarity and update language switcher flag icon - Rearranged roadmap items in README.md for better organization, moving planning mode and visual workflow editor to the top. - Updated the flag icon for English in LanguageSwitcher.vue from the US to the GB flag. - Enhanced user environment setup in CliInstallerService.ts by adding user information retrieval. - Improved timestamp handling in MemberLogsTab.tsx to better reflect recent activity. - Adjusted button class names in ProvisioningProgressBlock.tsx for consistency. --- README.md | 12 +++++------ .../components/layout/LanguageSwitcher.vue | 2 +- src/main/index.ts | 7 +++++++ .../infrastructure/CliInstallerService.ts | 11 +++++++++- .../team/ProvisioningProgressBlock.tsx | 4 ++-- .../components/team/members/MemberLogsTab.tsx | 20 +++++++++++++++---- 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a577f704..34b7d750 100644 --- a/README.md +++ b/README.md @@ -295,14 +295,14 @@ pnpm dist # macOS + Windows + Linux ## Roadmap -- [ ] CLI runtime: Run not only on a local PC but in any headless/console environment (web UI), e.g. VPS, remote server, etc. -- [ ] Remote agent execution via SSH: launch and manage agent teams on remote machines over SSH (stream-json protocol over SSH channel, SFTP-based file monitoring for tasks/inboxes/config) -- [ ] 2 modes: current (agent teams), and a new mode: regular subagents (no communication between them) -- [ ] Visual workflow editor ([@xyflow/react](https://github.com/xyflow/xyflow)) for building and orchestrating agent pipelines with drag & drop - [ ] Planning mode to organize agent plans before execution -- [ ] Curate what context each agent sees (files, docs, MCP servers, skills) +- [ ] Visual workflow editor ([@xyflow/react](https://github.com/xyflow/xyflow)) for building and - [ ] Multi-model support: proxy layer to use other popular LLMs (GPT, Gemini, DeepSeek, Llama, etc.), including offline/local models -- [ ] Attach any files to messages/comments/tasks +- [ ] Remote agent execution via SSH: launch and manage agent teams on remote machines over SSH (stream-json protocol over SSH channel, SFTP-based file monitoring for tasks/inboxes/config) +- [ ] CLI runtime: Run not only on a local PC but in any headless/console environment (web UI), e.g. VPS, remote server, etc. +- [ ] 2 modes: current (agent teams), and a new mode: regular subagents (no communication between them) +orchestrating agent pipelines with drag & drop +- [ ] Curate what context each agent sees (files, docs, MCP servers, skills) - [ ] Slash commands --- diff --git a/landing/components/layout/LanguageSwitcher.vue b/landing/components/layout/LanguageSwitcher.vue index 13826664..d2dc323c 100644 --- a/landing/components/layout/LanguageSwitcher.vue +++ b/landing/components/layout/LanguageSwitcher.vue @@ -17,7 +17,7 @@ onMounted(() => { }); const flagIconMap: Record = { - en: "circle-flags:us", + en: "circle-flags:gb", zh: "circle-flags:cn", es: "circle-flags:es", hi: "circle-flags:in", diff --git a/src/main/index.ts b/src/main/index.ts index 6f5e2085..a6eeda5d 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -108,6 +108,13 @@ import type { TeamChangeEvent } from '@shared/types'; const logger = createLogger('App'); startEventLoopLagMonitor(); +// Windows: set AppUserModelId early so native notifications show the correct +// application title instead of the default "electron.app.{name}" identifier. +// Must match the appId in electron-builder config (package.json → build.appId). +if (process.platform === 'win32') { + app.setAppUserModelId('com.agent-teams.app'); +} + // --- Team message notification tracking --- const teamInboxReader = new TeamInboxReader(); const sentMessagesStore = new TeamSentMessagesStore(); diff --git a/src/main/services/infrastructure/CliInstallerService.ts b/src/main/services/infrastructure/CliInstallerService.ts index 8bb797e6..140828ee 100644 --- a/src/main/services/infrastructure/CliInstallerService.ts +++ b/src/main/services/infrastructure/CliInstallerService.ts @@ -32,7 +32,7 @@ import { createHash } from 'crypto'; import { createWriteStream, existsSync, promises as fsp } from 'fs'; import http from 'http'; import https from 'https'; -import { tmpdir } from 'os'; +import { tmpdir, userInfo } from 'os'; import { join, posix as pathPosix, win32 as pathWin32 } from 'path'; import { ClaudeBinaryResolver } from '../team/ClaudeBinaryResolver'; @@ -88,11 +88,20 @@ const AUTH_STATUS_RETRY_DELAY_MS = 1500; */ function buildChildEnv(binaryPath?: string | null): NodeJS.ProcessEnv { const home = getShellPreferredHome(); + const shellEnv = getCachedShellEnv(); + let osUsername = ''; + try { + osUsername = userInfo().username; + } catch { + // userInfo() can throw in restricted environments (Docker, no passwd entry) + } + const user = shellEnv?.USER?.trim() || process.env.USER?.trim() || osUsername || ''; return { ...process.env, HOME: home, USERPROFILE: home, PATH: buildMergedCliPath(binaryPath), + ...(user ? { USER: user, LOGNAME: user } : {}), }; } diff --git a/src/renderer/components/team/ProvisioningProgressBlock.tsx b/src/renderer/components/team/ProvisioningProgressBlock.tsx index 56a10e07..54bcd338 100644 --- a/src/renderer/components/team/ProvisioningProgressBlock.tsx +++ b/src/renderer/components/team/ProvisioningProgressBlock.tsx @@ -205,7 +205,7 @@ export const ProvisioningProgressBlock = ({