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-10-15 10:45:10 +01:00
2025-11-18 16:22:06 +00:00
2025-11-17 18:23:23 +00:00
2025-06-25 09:36:07 +01:00
2025-06-14 15:14:08 -04:00
2025-09-23 12:36:29 +01:00
2025-11-18 11:12:59 +00:00
2025-06-14 15:14:08 -04:00
2025-09-16 22:45:12 +01:00
2025-09-07 17:25:23 +01:00
2025-06-14 15:14:08 -04:00
2025-09-18 09:15:54 +01:00