History

Normalize branch and model selection handling

- Deduplicate terminal IDs and favorite model slugs with trim-aware iteration - Use effect-based filtering for local branch and built-in model lists - Switch stable array handling to non-mutating `toSorted`

Julius Marminge committed 6 months ago

Commit 7793bd61 parent 7f03f4d8 files · +63 −23Browse files

Showing the changes to apps/web/src/components/ThreadTerminalDrawer.tsx (1 of 8 files). Show all

Unified · Split

apps/web/src/components/ThreadTerminalDrawer.tsx+20−8
@@ -870,7 +870,15 @@ export default function ThreadTerminalDrawer({ · 869 unmodified lines
870 const didResizeDuringDragRef = useRef(false);870 const didResizeDuringDragRef = useRef(false);
871 871
872 const normalizedTerminalIds = useMemo(() => {872 const normalizedTerminalIds = useMemo(() => {
873 return [...new Set(terminalIds.map((id) => id.trim()).filter((id) => id.length > 0))];873 const normalizedIds: string[] = [];
874 const seen = new Set<string>();
875 for (const id of terminalIds) {
876 const trimmedId = id.trim();
877 if (trimmedId.length === 0 || seen.has(trimmedId)) continue;
878 seen.add(trimmedId);
879 normalizedIds.push(trimmedId);
880 }
881 return normalizedIds;
874 }, [terminalIds]);882 }, [terminalIds]);
875 883
876 const resolvedActiveTerminalId =884 const resolvedActiveTerminalId =
@@ -904,13 +912,17 @@ export default function ThreadTerminalDrawer({ · 27 unmodified lines
904 };912 };
905 913
906 for (const terminalGroup of terminalGroups) {914 for (const terminalGroup of terminalGroups) {
907 const nextTerminalIds = [915 const nextTerminalIds: string[] = [];
908 ...new Set(terminalGroup.terminalIds.map((id) => id.trim()).filter((id) => id.length > 0)),916 const seenGroupTerminalIds = new Set<string>();
909 ].filter((terminalId) => {917 for (const id of terminalGroup.terminalIds) {
910 if (!validTerminalIdSet.has(terminalId)) return false;918 const terminalId = id.trim();
911 if (assignedTerminalIds.has(terminalId)) return false;919 if (terminalId.length === 0) continue;
912 return true;920 if (seenGroupTerminalIds.has(terminalId)) continue;
913 });921 seenGroupTerminalIds.add(terminalId);
922 if (!validTerminalIdSet.has(terminalId)) continue;
923 if (assignedTerminalIds.has(terminalId)) continue;
924 nextTerminalIds.push(terminalId);
925 }
914 if (nextTerminalIds.length === 0) continue;926 if (nextTerminalIds.length === 0) continue;
915 927
916 for (const terminalId of nextTerminalIds) {928 for (const terminalId of nextTerminalIds) {