Files
vibe-kanban/frontend
Louis Knight-Webb 81b92c6ec3 Resolve frontend warnings final (#1319)
* ##  Complete - First 3 Categories Fixed

Successfully resolved **13 of 26 TypeScript warnings** (50% reduction):

### **Changes Made:**

**Category 1: Intl Polyfill (1 warning fixed)**
- [TaskPanel.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/components/panels/TaskPanel.tsx#L39-L42): Replaced `(Intl as any).RelativeTimeFormat` with proper feature detection

**Category 2: Lexical Transformers (5 warnings fixed)**
- [wysiwyg.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/components/ui/wysiwyg.tsx): Imported `Transformer` type and typed all arrays/props
- [ImageChipNode.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/components/ui/wysiwyg/ImageChipNode.tsx): Used `unknown` with type assertion for `importJSON`

**Category 3: MCP Config JSON (7 warnings fixed)**
- [mcp-strategies.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/lib/mcp-strategies.ts):
  - Added `JsonObject` type and `isJsonObject` guard using existing `JsonValue` from shared/types
  - Updated all 4 methods with proper types and runtime guards
  - Fixed edge case for empty `servers_path` in `addPreconfiguredToConfig`

### **Verification:**
-  `pnpm run lint` - Warnings reduced from 26 → 13
-  `pnpm run check` - TypeScript compilation passes
-  Rust backend lint passes

### **Remaining Warnings (13):**
- GitOperations.tsx: 3 warnings (branch merge parsing)
- ClickedElementsBanner.tsx: 1 warning
- useFollowUpSend.ts: 1 warning
- usePinnedTodos.ts: 1 warning
- useTaskMutations.ts: 2 warnings
- project-tasks.tsx: 3 warnings
- AgentSettings.tsx: 2 warnings

* Excellent! All warnings are resolved. Let me create a summary:

##  Complete - Categories 4-6 Fixed (All 26 warnings resolved!)

Successfully resolved **all 26 TypeScript warnings** (100% completion):

### **Category 4: Git Merge Data** (3 warnings fixed)
- [GitOperations.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/components/tasks/Toolbar/GitOperations.tsx): Imported `Merge` type from shared/types and properly typed merge filtering/finding operations

### **Category 5: Error Handlers** (5 warnings fixed)
- [useFollowUpSend.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/hooks/follow-up/useFollowUpSend.ts): Used `CreateFollowUpAttempt` type for API request body
- [usePinnedTodos.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/hooks/usePinnedTodos.ts): Used `NormalizedEntry` type from shared/types
- [useTaskMutations.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/hooks/useTaskMutations.ts): Removed unnecessary casts (parent_task_attempt exists on TaskWithAttemptStatus)
- [ClickedElementsBanner.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/components/tasks/ClickedElementsBanner.tsx): Defined `ComponentInfo` type derived from ClickedEntry

### **Category 6: Settings Page** (2 warnings fixed)
- [AgentSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/pages/settings/AgentSettings.tsx):
  - Defined `ProfilesDoc` type for parsed profiles structure
  - Changed `selectedExecutorType` from `string` to `BaseCodingAgent` enum

### **Additional Fixes:**
- [project-tasks.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/pages/project-tasks.tsx): Added proper types for DiffsPanelContainer props (TaskAttempt, BranchStatus)

### **Verification:**
-  `pnpm run lint` - **0 warnings** (reduced from 26)
-  `pnpm run check` - TypeScript compilation passes
-  Rust backend lint passes

**All frontend TypeScript warnings have been eliminated while maintaining code readability and type safety!**

* ##  Complete - ExecutorConfigs Added as Shared Type

Successfully replaced the local `ProfilesDoc` type with the backend-generated `ExecutorConfigs` type.

### **Changes Made:**

**Backend:**
- [generate_types.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/crates/server/src/bin/generate_types.rs#L108): Added `ExecutorConfigs` to exported types
- [shared/types.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/shared/types.ts#L225): Generated new `ExecutorConfigs` type

**Frontend:**
- [AgentSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/pages/settings/AgentSettings.tsx):
  - Removed local `ProfilesDoc` type
  - Imported and used `ExecutorConfigs` from shared/types
  - Added `ExecutorsMap` helper type for accessing the nested structure with string keys
  - Used `as unknown as ExecutorsMap` to safely access dynamic executor configurations

### **Benefits:**
-  Single source of truth between frontend and backend
-  Frontend shape matches backend contract exactly
-  Better maintainability - type changes sync automatically
-  More explicit about what the profiles structure represents

### **Verification:**
-  `pnpm run check` - TypeScript compilation passes
-  `pnpm run lint` - **0 warnings** (all 26 warnings resolved)
-  Rust backend lint/check passes

**All frontend warnings have been resolved and ProfilesDoc is now properly typed using the backend-generated ExecutorConfigs type!**

* Cleanup script changes for task attempt 3bbe8d2c-14b3-43eb-af98-abbc74f60742

* ##  Complete - JSON Handling Improved

Successfully improved JSON handling in mcp-strategies.ts with a simple, idiomatic change:

### **Change Made:**
[mcp-strategies.ts](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/3bbe-resolve-frontend/frontend/src/lib/mcp-strategies.ts#L3):
```typescript
// Before:
type JsonObject = { [key: string]: JsonValue };

// After:
type JsonObject = Record<string, JsonValue>;
```

### **Oracle's Analysis:**
-  **Keep it local** - Only this file needs it, no need for shared utilities
-  **Keep the type guard** - Essential for runtime safety when parsing/traversing JSON
-  **Use Record** - More idiomatic TypeScript than index signature
-  **No backend export needed** - Would add unnecessary complexity
-  **No shared file needed** - Single-use type doesn't warrant it

### **Verification:**
-  `pnpm run check` - TypeScript compilation passes
-  `pnpm run lint` - **0 warnings**
-  Rust backend passes

**The local JSON handling approach is the simplest and most readable solution for this use case!**
2025-11-18 16:22:06 +00:00
..
2025-06-25 09:36:07 +01:00
2025-06-14 15:14:08 -04:00
2025-06-14 15:14:08 -04:00
2025-06-14 15:14:08 -04:00