release: v0.6.0 — security audit fixes + 7 new features
All checks were successful
PR Check / check (pull_request) Successful in 57s
All checks were successful
PR Check / check (pull_request) Successful in 57s
Audit corrections (security, concurrency, stability): - chat_engine: bound resp.Choices[0] access, release tool slot per-iteration - conversation_multi: synchronous save under existing lock (was racy fire-and-forget) - workflow/engine: short-circuit on failed deps (no more infinite busy-wait); track failed/skipped status - handlers_workflow: rune-aware truncate for plan goal (UTF-8 safe) - server: CORS limited to localhost origins (was wildcard) - handlers_info / terminal: mask API keys and SSH passwords as "***" in GET responses; preserve stored secret if "***" sent on update - terminal: sshpass uses -e + SSHPASS env var (was both -p and -e) - handlers_chat: MaxBytesReader 50 MB on /api/chat - image_cache: 10 MB cap per image - handlers_config: font size <= 72; profile-save unmarshal errors propagated - handlers_info: /lsp/auto-install ProjectDir restricted to user home - Shell.jsx: parenthesized resize-condition (operator precedence) - orchestrator_test: CleanAIResponse capitalization (fixes failing vet) New features: - platform: detect OS name (Debian, Ubuntu, Windows 11, macOS X.Y) and inject in Studio system prompt next to the date - agents: default timeout 30 min for crush_run/claude_run (cap also 30 min) - agents: new cwd, wsl_distro, wsl_user params; on Windows hosts launch via "wsl -d <distro> -u <user> --cd <cwd> --" - agents: new claude_run tool (mirror of crush_run for Claude Code CLI) - terminal: list installed WSL distros individually in new-tab menu (Windows only) - studio: system prompt rewritten around BMAD-METHOD personas + mandatory delegation template - studio: "Réflexion avancée" toggle — inactive provider produces a preliminary report injected as [RAPPORT PRÉALABLE] context for the active provider - studio: "Historique compressé" toggle — collapses past tool calls to last action only, with "Tout afficher" expansion
This commit is contained in:
@@ -25,6 +25,7 @@ const (
|
||||
|
||||
type SystemInfo struct {
|
||||
OS OS `json:"os"`
|
||||
OSName string `json:"os_name"`
|
||||
Arch Arch `json:"arch"`
|
||||
IsWSL bool `json:"is_wsl"`
|
||||
Shell string `json:"shell"`
|
||||
@@ -39,6 +40,7 @@ func Detect() SystemInfo {
|
||||
}
|
||||
|
||||
info.IsWSL = detectWSL()
|
||||
info.OSName = detectOSName(info.OS, info.IsWSL)
|
||||
info.Shell = detectShell()
|
||||
info.Terminal = detectTerminal()
|
||||
info.PackageManager = detectPackageManager(info.OS)
|
||||
@@ -46,6 +48,33 @@ func Detect() SystemInfo {
|
||||
return info
|
||||
}
|
||||
|
||||
func detectOSName(os OS, isWSL bool) string {
|
||||
switch os {
|
||||
case Linux:
|
||||
if name := readOSReleaseName(); name != "" {
|
||||
if isWSL {
|
||||
return name + " (WSL)"
|
||||
}
|
||||
return name
|
||||
}
|
||||
if isWSL {
|
||||
return "Linux (WSL)"
|
||||
}
|
||||
return "Linux"
|
||||
case MacOS:
|
||||
if v := readMacOSVersion(); v != "" {
|
||||
return "macOS " + v
|
||||
}
|
||||
return "macOS"
|
||||
case Windows:
|
||||
if v := readWindowsVersion(); v != "" {
|
||||
return v
|
||||
}
|
||||
return "Windows"
|
||||
}
|
||||
return string(os)
|
||||
}
|
||||
|
||||
func detectWSL() bool {
|
||||
return fileContains("/proc/version", "microsoft") ||
|
||||
fileContains("/proc/version", "WSL")
|
||||
@@ -95,8 +124,11 @@ func detectPackageManager(os OS) string {
|
||||
func (s SystemInfo) String() string {
|
||||
parts := []string{
|
||||
"OS: " + string(s.OS),
|
||||
"Arch: " + string(s.Arch),
|
||||
}
|
||||
if s.OSName != "" {
|
||||
parts = append(parts, "Name: "+s.OSName)
|
||||
}
|
||||
parts = append(parts, "Arch: "+string(s.Arch))
|
||||
if s.IsWSL {
|
||||
parts = append(parts, "WSL: yes")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user