mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 21:23:07 +00:00
fix: implement copilot suggestions
This commit is contained in:
@@ -350,3 +350,4 @@ class CodexConfigManager {
|
|||||||
|
|
||||||
module.exports = new CodexConfigManager();
|
module.exports = new CodexConfigManager();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -346,3 +346,4 @@ console.error('[McpServerStdio] Starting MCP server for automaker-tools');
|
|||||||
console.error(`[McpServerStdio] Project path: ${projectPath}`);
|
console.error(`[McpServerStdio] Project path: ${projectPath}`);
|
||||||
console.error(`[McpServerStdio] IPC channel: ${ipcChannel}`);
|
console.error(`[McpServerStdio] IPC channel: ${ipcChannel}`);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ export function KeyboardMap({ onKeySelect, selectedKey, className }: KeyboardMap
|
|||||||
const isModified = shortcuts.some(
|
const isModified = shortcuts.some(
|
||||||
(s) => keyboardShortcuts[s] !== DEFAULT_KEYBOARD_SHORTCUTS[s]
|
(s) => keyboardShortcuts[s] !== DEFAULT_KEYBOARD_SHORTCUTS[s]
|
||||||
);
|
);
|
||||||
const hasModifierShortcuts = shortcutInfos.some(s => s.hasModifiers);
|
|
||||||
|
|
||||||
// Get category for coloring (use first shortcut's category if multiple)
|
// Get category for coloring (use first shortcut's category if multiple)
|
||||||
const category = shortcuts.length > 0 ? SHORTCUT_CATEGORIES[shortcuts[0]] : null;
|
const category = shortcuts.length > 0 ? SHORTCUT_CATEGORIES[shortcuts[0]] : null;
|
||||||
@@ -193,7 +192,7 @@ export function KeyboardMap({ onKeySelect, selectedKey, className }: KeyboardMap
|
|||||||
onClick={() => onKeySelect?.(keyDef.key)}
|
onClick={() => onKeySelect?.(keyDef.key)}
|
||||||
className={cn(
|
className={cn(
|
||||||
"relative flex flex-col items-center justify-center rounded-lg border transition-all",
|
"relative flex flex-col items-center justify-center rounded-lg border transition-all",
|
||||||
"h-12 min-w-[2.75rem] py-1",
|
"h-12 min-w-11 py-1",
|
||||||
keyDef.width > 1 && `w-[${keyDef.width * 2.75}rem]`,
|
keyDef.width > 1 && `w-[${keyDef.width * 2.75}rem]`,
|
||||||
// Base styles
|
// Base styles
|
||||||
!isBound && "bg-sidebar-accent/10 border-sidebar-border hover:bg-sidebar-accent/20",
|
!isBound && "bg-sidebar-accent/10 border-sidebar-border hover:bg-sidebar-accent/20",
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { Label } from "@/components/ui/label";
|
|
||||||
import { Settings2, Keyboard } from "lucide-react";
|
import { Settings2, Keyboard } from "lucide-react";
|
||||||
|
|
||||||
interface KeyboardShortcutsSectionProps {
|
interface KeyboardShortcutsSectionProps {
|
||||||
|
|||||||
@@ -780,6 +780,22 @@ function CodexSetupStep({
|
|||||||
const [apiKey, setApiKey] = useState("");
|
const [apiKey, setApiKey] = useState("");
|
||||||
const [isSavingKey, setIsSavingKey] = useState(false);
|
const [isSavingKey, setIsSavingKey] = useState(false);
|
||||||
|
|
||||||
|
// Normalize CLI auth method strings to our store-friendly values
|
||||||
|
const mapAuthMethod = (method?: string): CodexAuthStatus["method"] => {
|
||||||
|
switch (method) {
|
||||||
|
case "cli_verified":
|
||||||
|
return "cli_verified";
|
||||||
|
case "cli_tokens":
|
||||||
|
return "cli_tokens";
|
||||||
|
case "auth_file":
|
||||||
|
return "api_key";
|
||||||
|
case "env_var":
|
||||||
|
return "env";
|
||||||
|
default:
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const checkStatus = useCallback(async () => {
|
const checkStatus = useCallback(async () => {
|
||||||
console.log("[Codex Setup] Starting status check...");
|
console.log("[Codex Setup] Starting status check...");
|
||||||
setIsChecking(true);
|
setIsChecking(true);
|
||||||
@@ -805,13 +821,7 @@ function CodexSetupStep({
|
|||||||
setCodexCliStatus(cliStatus);
|
setCodexCliStatus(cliStatus);
|
||||||
|
|
||||||
if (result.auth) {
|
if (result.auth) {
|
||||||
const method = result.auth.method === "cli_verified" || result.auth.method === "cli_tokens"
|
const method = mapAuthMethod(result.auth.method);
|
||||||
? (result.auth.method === "cli_verified" ? "cli_verified" : "cli_tokens")
|
|
||||||
: result.auth.method === "auth_file"
|
|
||||||
? "api_key"
|
|
||||||
: result.auth.method === "env_var"
|
|
||||||
? "env"
|
|
||||||
: "none";
|
|
||||||
|
|
||||||
const authStatus: CodexAuthStatus = {
|
const authStatus: CodexAuthStatus = {
|
||||||
authenticated: result.auth.authenticated,
|
authenticated: result.auth.authenticated,
|
||||||
|
|||||||
@@ -53,3 +53,4 @@ export function useWindowState(): WindowState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ export function parseShortcut(shortcut: string): ShortcutKey {
|
|||||||
const parts = shortcut.split("+").map(p => p.trim());
|
const parts = shortcut.split("+").map(p => p.trim());
|
||||||
const result: ShortcutKey = { key: parts[parts.length - 1] };
|
const result: ShortcutKey = { key: parts[parts.length - 1] };
|
||||||
|
|
||||||
|
// Normalize common OS-specific modifiers (Cmd/Ctrl/Win/Super symbols) into cmdCtrl
|
||||||
for (let i = 0; i < parts.length - 1; i++) {
|
for (let i = 0; i < parts.length - 1; i++) {
|
||||||
const modifier = parts[i].toLowerCase();
|
const modifier = parts[i].toLowerCase();
|
||||||
if (modifier === "shift") result.shift = true;
|
if (modifier === "shift") result.shift = true;
|
||||||
@@ -65,13 +66,19 @@ export function formatShortcut(shortcut: string, forDisplay = false): string {
|
|||||||
const parsed = parseShortcut(shortcut);
|
const parsed = parseShortcut(shortcut);
|
||||||
const parts: string[] = [];
|
const parts: string[] = [];
|
||||||
|
|
||||||
// Improved OS detection
|
// Prefer User-Agent Client Hints when available; fall back to legacy
|
||||||
let platform: 'darwin' | 'win32' | 'linux' = 'linux';
|
const platform: 'darwin' | 'win32' | 'linux' = (() => {
|
||||||
if (typeof navigator !== 'undefined') {
|
if (typeof navigator === 'undefined') return 'linux';
|
||||||
const p = navigator.platform.toLowerCase();
|
|
||||||
if (p.includes('mac')) platform = 'darwin';
|
const uaPlatform = (navigator as Navigator & { userAgentData?: { platform?: string } })
|
||||||
else if (p.includes('win')) platform = 'win32';
|
.userAgentData?.platform?.toLowerCase?.();
|
||||||
}
|
const legacyPlatform = navigator.platform?.toLowerCase?.();
|
||||||
|
const platformString = uaPlatform || legacyPlatform || '';
|
||||||
|
|
||||||
|
if (platformString.includes('mac')) return 'darwin';
|
||||||
|
if (platformString.includes('win')) return 'win32';
|
||||||
|
return 'linux';
|
||||||
|
})();
|
||||||
|
|
||||||
// Primary modifier - OS-specific
|
// Primary modifier - OS-specific
|
||||||
if (parsed.cmdCtrl) {
|
if (parsed.cmdCtrl) {
|
||||||
|
|||||||
Reference in New Issue
Block a user