Merged
Conversation
- Add TypeScript types for drone profiles - Add preset profiles and size defaults to constants - Implement ProfileStorage for file operations - Implement ProfileManager for business logic - Add MSP_UID support to get FC serial number - Add getFCSerialNumber() method to MSPClient Tasks completed: #5, #6 Tasks in progress: #7 (MSP integration) Still TODO: - Integrate ProfileManager with main process - Add IPC handlers for profiles - Update SnapshotManager to work with profiles - Create UI components (wizard, selector, etc.) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Complete the backend integration for multi-drone profile support by: - Adding FC serial number retrieval via MSP_UID command - Implementing 10 IPC channels for profile operations (create, update, delete, list, etc.) - Exposing profile API to renderer via preload script - Integrating ProfileManager with SnapshotManager for profile-specific snapshot tracking - Auto-detecting known/new drones on connection and emitting appropriate events - Linking snapshots to profiles automatically on creation - Filtering snapshots by current profile - Adding event emission for profile changes and new FC detection This completes Tasks #7 (MSP integration) and backend portion of the profile system. Next step is implementing the UI components (ProfileWizard and profile management). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add complete UI layer for multi-drone profile system: ProfileWizard component: - Multi-step wizard with 5 steps (method selection, preset/custom config, advanced, review) - Support for both preset-based and custom profile creation - Smart defaults based on drone size (auto-fills weight, motor KV, battery, etc.) - Validation and review step before creation - Responsive modal design Profile management components: - ProfileSelector: Collapsible dropdown showing all profiles with switch capability - ProfileCard: Individual profile display with metadata, actions (delete, export) - useProfiles hook: Complete state management for profile operations Integration: - Auto-show ProfileWizard modal when new FC is detected - ProfileSelector integrated into main app layout - Event-driven profile updates via onProfileChanged and onNewFCDetected Features: - Visual indicators for active and recently connected profiles - Relative time formatting for last connection - Grid layout for profile metadata display - Delete confirmation for safety - Export functionality placeholder (file dialog to be implemented) This completes Tasks #8 (ProfileWizard) and #9 (Profile management UI). The profile system is now fully functional end-to-end. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fix ProfileWizard rendering and baseline snapshot timing: - Remove React Portal from ProfileWizard (was causing display issues) - Use inline styles with high z-index for modal overlay - Fix baseline creation logic: only create for existing profiles, not new FCs - Add profile-changed event emission after profile creation - Improve forceExitCLI to avoid port closure (use newlines instead of 'exit') - Add retry logic with better error messages for MSP timeouts - Implement conditional rendering based on connection and profile state - Show only Connection panel on startup - Show FC Info when connected - Show ProfileSelector and Snapshots only when profile exists This resolves the "FC not responding" errors after profile creation and ensures baseline snapshots don't interfere with initial setup. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
UI Improvements: - Add profile editing modal with full field editing capabilities - Add profile deletion modal with comprehensive warnings - Implement profile locking when FC is connected (prevents switching) - Add CSS styling for ProfileWizard, ProfileCard, ProfileSelector - Add 1S, 2S battery types and 1", 2" drone sizes - Add 10 realistic preset profiles (whoops, toothpicks, racers, etc.) Bug Fixes: - Fix board name display (filter null bytes, fallback to target) - Fix snapshot filtering to use server-side profile filtering - Fix profile deletion (allow deleting active profile, disconnect FC) - Fix immediate reconnect issue (3s cooldown + 1s backend delay) - Fix auto port detection when FC changes - Fix crash when selecting preset without custom name - Auto-create baseline snapshot after profile creation Testing Infrastructure (128 tests): - Add Vitest + React Testing Library setup - Add comprehensive tests for all components: * ConnectionPanel (12 tests) * ProfileSelector (11 tests) * FCInfoDisplay (12 tests) * ProfileEditModal (18 tests) * ProfileDeleteModal (14 tests) * SnapshotManager (22 tests) - Add tests for all hooks: * useConnection (15 tests) * useProfiles (14 tests) * useSnapshots (16 tests) - Add pre-commit hook (husky + lint-staged) - Add TESTING.md with comprehensive testing guidelines Documentation: - Add CLAUDE.md with architecture and development guide - Update README.md with testing section All tests passing: 128/128 ✅ Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Updated status: PR #1 ready for review - Added all 10 preset profiles (was showing 6) - Documented 8 critical bug fixes - Added testing infrastructure section (128 tests) - Documented CLAUDE.md and TESTING.md - Updated current status and pre-release checklist - Moved fixed bugs to "Recently Fixed" section Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3 tasks
eddycek
added a commit
that referenced
this pull request
Feb 11, 2026
Update COMPREHENSIVE_TESTING_PLAN.md with final status (1440 tests / 75 files), resolved gap analysis, coverage summary, and PR references. Update README.md with accurate test counts, coverage thresholds, and docs listing. Update SPEC.md progress summary (PRs #1-#88) and test counts across all modules. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Feb 11, 2026
All three docs were significantly outdated — test counts, PR counts, missing features (verification flight, tuning history, completion summary, noise comparison), missing files in project structure, outdated component hierarchies, and stale test breakdowns. Key updates: - Test count: 1520 tests across 82 files (was 881/1440 in places) - PRs: #1–#99 (was #1–#88) - README: added TuningHistory section, verification hover, updated project structure (TuningHistoryManager, TuningHistory/, useTuningHistory, tuning-history.types.ts, shared/utils/), full docs/ listing - ARCHITECTURE: added TuningHistoryManager to storage, TuningHistory UI components, useTuningHistory hook, tuning-history.types.ts, TuningSession 5 new fields, TUNING_GET_HISTORY + BB settings IPC, completion summary + history panel descriptions, accurate test breakdown - SPEC: updated Phase 4 with verification + history PRs #89–#99, added UX requirements for completion summary and history panel Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 tasks
eddycek
added a commit
that referenced
this pull request
Feb 11, 2026
All three docs were significantly outdated — test counts, PR counts, missing features (verification flight, tuning history, completion summary, noise comparison), missing files in project structure, outdated component hierarchies, and stale test breakdowns. Key updates: - Test count: 1520 tests across 82 files (was 881/1440 in places) - PRs: #1–#99 (was #1–#88) - README: added TuningHistory section, verification hover, updated project structure (TuningHistoryManager, TuningHistory/, useTuningHistory, tuning-history.types.ts, shared/utils/), full docs/ listing - ARCHITECTURE: added TuningHistoryManager to storage, TuningHistory UI components, useTuningHistory hook, tuning-history.types.ts, TuningSession 5 new fields, TUNING_GET_HISTORY + BB settings IPC, completion summary + history panel descriptions, accurate test breakdown - SPEC: updated Phase 4 with verification + history PRs #89–#99, added UX requirements for completion summary and history panel Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
4 tasks
eddycek
added a commit
that referenced
this pull request
Mar 8, 2026
H1: CLAUDE.md — TuningType, quick phases, TF analysis engine, IPC counts
H2: ARCHITECTURE.md — 50 IPC channels, 12 hooks, quick state machine,
updated test summary (1964 tests / 100 files + 23 E2E)
H3: TESTING.md — new test files (QuickAnalysisStep, StartTuningModal,
BodePlot, TransferFunctionEstimator, useDemoMode), updated counts
H4: README.md — Quick Tune feature section, updated test counts
H5: SPEC.md — PRs #1-#152, 23 Playwright E2E tests
H6: docs/README.md — Quick Tune doc status Active, test counts
H7: TUNING_PRECISION_IMPROVEMENTS.md — mark Wiener (#1) as implemented
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 task
eddycek
added a commit
that referenced
this pull request
Mar 8, 2026
H1: CLAUDE.md — TuningType, quick phases, TF analysis engine, IPC counts
H2: ARCHITECTURE.md — 50 IPC channels, 12 hooks, quick state machine,
updated test summary (1964 tests / 100 files + 23 E2E)
H3: TESTING.md — new test files (QuickAnalysisStep, StartTuningModal,
BodePlot, TransferFunctionEstimator, useDemoMode), updated counts
H4: README.md — Quick Tune feature section, updated test counts
H5: SPEC.md — PRs #1-#152, 23 Playwright E2E tests
H6: docs/README.md — Quick Tune doc status Active, test counts
H7: TUNING_PRECISION_IMPROVEMENTS.md — mark Wiener (#1) as implemented
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 9, 2026
…ltip - Add setGuidedTuneMode() to MockMSPClient — resets _nextFlightType to 'filter' and _lastSessionType to 'guided' when starting Deep Tune. Without this, after a Flash Tune session the flight cycling stayed in 'quick' mode, causing PID flights to generate wrong BBL data (0 steps) - Call setGuidedTuneMode() in tuningHandlers when starting guided session - Redesigned QualityTrendChart tooltip: session number (#1, #2...), prominent score with tier color, tuning type, noise level, changes count, and component breakdown. X-axis now shows session # instead of dates (avoids "Mar 9, Mar 9, Mar 9..." when all same day) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 9, 2026
…ltip (#186) - Add setGuidedTuneMode() to MockMSPClient — resets _nextFlightType to 'filter' and _lastSessionType to 'guided' when starting Deep Tune. Without this, after a Flash Tune session the flight cycling stayed in 'quick' mode, causing PID flights to generate wrong BBL data (0 steps) - Call setGuidedTuneMode() in tuningHandlers when starting guided session - Redesigned QualityTrendChart tooltip: session number (#1, #2...), prominent score with tier color, tuning type, noise level, changes count, and component breakdown. X-axis now shows session # instead of dates (avoids "Mar 9, Mar 9, Mar 9..." when all same day) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This was referenced Mar 9, 2026
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 10, 2026
eddycek
added a commit
that referenced
this pull request
Mar 10, 2026
…xes (#219) - TESTING.md: FilterRecommender 48→57, PIDRecommender 84→92, DataQualityScorer 36→39 - ARCHITECTURE.md: total 2330→2351, updated test area counts - README.md: unit test count 2330→2351 - SPEC.md: PRs #1-#215→#1-#219, analysis tests 327→347 - CLAUDE.md: added medium noise, notch-aware, quad-size bounds, LPF2, low_coherence Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 10, 2026
* feat: implement all tuning audit findings — quad-size bounds, medium noise, notch-aware filtering, LPF2 recs Addresses all 37 findings from tuning advisor audit: - Quad-size-aware PID safety bounds (9 drone sizes with per-size P/D/I min/max/typical) - Medium noise handling (20Hz deadzone, low confidence recs instead of silence) - Notch-aware resonance filtering (skip LPF when peak in dyn_notch range) - LPF2 recommendations (disable with RPM+clean, enable with high noise) - Conditional dynamic notch Q (Q=300 with frame resonance, Q=500 otherwise) - Severity-scaled sluggish P increase (P+10 when rise time >2× threshold) - P-too-high informational warning (P > 1.3× pTypical for quad size) - Per-style bandwidth thresholds (smooth=30, balanced=40, aggressive=60 Hz) - Per-axis coherence warnings in Wiener data quality scoring - I_GAIN_MIN raised from 30 to 40, STEP_MIN_MAGNITUDE from 100 to 150 - DroneSize propagated through analysis pipeline (constants → recommender → analyzer → IPC) - Updated PID_TUNING_KNOWLEDGE.md decision tables Tests: 2351 passed (20 new tests added) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update test counts and feature descriptions for tuning audit fixes (#219) - TESTING.md: FilterRecommender 48→57, PIDRecommender 84→92, DataQualityScorer 36→39 - ARCHITECTURE.md: total 2330→2351, updated test area counts - README.md: unit test count 2330→2351 - SPEC.md: PRs #1-#215→#1-#219, analysis tests 327→347 - CLAUDE.md: added medium noise, notch-aware, quad-size bounds, LPF2, low_coherence Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 10, 2026
…lowpass (#221) - TESTING.md: DynamicLowpassRecommender 13→16 tests, total 2367→2370 - ARCHITECTURE.md: update test counts (2370, FFT Analysis 228, diagram 528) - SPEC.md: update test count to 2370, PR range to #1–#221 - README.md: split dynamic lowpass into gyro + D-term rows in filter decision table, add SNR filter note to ringing metric, update pipeline step 7 - CLAUDE.md: add DynamicLowpassRecommender description, ringing SNR filter in StepMetrics, RINGING_MIN_AMPLITUDE_FRACTION in constants list - PID_TUNING_KNOWLEDGE.md: add D-term dynamic lowpass explanation, ringing SNR filter description under Rule 4 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 10, 2026
* feat: add ringing SNR filter and D-term dynamic lowpass recommendations - Ringing SNR filter: ignore zero-crossings below 5% of step magnitude in StepMetrics, preventing gyro noise from inflating ringing count and triggering false D-increase recommendations - D-term dynamic lowpass: extend DynamicLowpassRecommender to also recommend dterm_lpf1_dyn_min/max_hz when throttle-dependent noise is detected — D amplifies noise, so dynamic filtering helps even more - Add RINGING_MIN_AMPLITUDE_FRACTION constant (0.05) to constants.ts - Pass dterm_lpf1_static_hz to recommendDynamicLowpass in FilterAnalyzer - 3 new tests for D-term dynamic lowpass recommendations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update documentation for ringing SNR filter and D-term dynamic lowpass (#221) - TESTING.md: DynamicLowpassRecommender 13→16 tests, total 2367→2370 - ARCHITECTURE.md: update test counts (2370, FFT Analysis 228, diagram 528) - SPEC.md: update test count to 2370, PR range to #1–#221 - README.md: split dynamic lowpass into gyro + D-term rows in filter decision table, add SNR filter note to ringing metric, update pipeline step 7 - CLAUDE.md: add DynamicLowpassRecommender description, ringing SNR filter in StepMetrics, RINGING_MIN_AMPLITUDE_FRACTION in constants list - PID_TUNING_KNOWLEDGE.md: add D-term dynamic lowpass explanation, ringing SNR filter description under Rule 4 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 11, 2026
- Fix analysis module count: 25 → 24 (across README, ARCHITECTURE) - Remove deleted motor harmonic diagnostic from README decision table, RPM awareness description, TESTING.md, and ARCHITECTURE.md - Update FilterRecommender test count: 57 → 55 - Remove all inline PR references from SPEC.md body text and docs/README.md table columns - Remove completed strikethrough items from SPEC remaining items - Update dates and PRs Merged range to #1–#224 - Fix FLASH_TUNE_RECOMMENDATION_PARITY.md location in project tree - Update complete docs count: 14 → 15 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 11, 2026
…225) - Fix analysis module count: 25 → 24 (across README, ARCHITECTURE) - Remove deleted motor harmonic diagnostic from README decision table, RPM awareness description, TESTING.md, and ARCHITECTURE.md - Update FilterRecommender test count: 57 → 55 - Remove all inline PR references from SPEC.md body text and docs/README.md table columns - Remove completed strikethrough items from SPEC remaining items - Update dates and PRs Merged range to #1–#224 - Fix FLASH_TUNE_RECOMMENDATION_PARITY.md location in project tree - Update complete docs count: 14 → 15 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 11, 2026
- Test counts: 2368/114 → 2388/116 - README: update Huffman limitation (now detected/blocked), remove throttle spectrogram limitation (now implemented) - TESTING: add ThrottleSpectrogramChart (6), spectrogramUtils (11), update BlackboxStatus (31→34) - ARCHITECTURE: new chart component, updated MSP return types - CLAUDE.md: compressionDetected field, ThrottleSpectrogramChart - SPEC: PR range updated to #1-#229 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 11, 2026
- Test counts: 2368/114 → 2388/116 - README: update Huffman limitation (now detected/blocked), remove throttle spectrogram limitation (now implemented) - TESTING: add ThrottleSpectrogramChart (6), spectrogramUtils (11), update BlackboxStatus (31→34) - ARCHITECTURE: new chart component, updated MSP return types - CLAUDE.md: compressionDetected field, ThrottleSpectrogramChart - SPEC: PR range updated to #1-#229 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This was referenced Mar 11, 2026
2 tasks
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 28, 2026
#314-#322) - Update unit test count from 2684 to 2777 across all doc files - Update PR range to #1-#322 - Update fcInfoHandlers count to 7 (added get_rates_config) - Update IPC channel count to 64 - Fix preset count from 10 to 8 with correct names - Update PIDRecommender test count (128 -> 207) and FilterRecommender (64 -> 80) - Update headerValidation test count (24 -> 28) - Move PRESET_GAP_ANALYSIS.md to complete/ section in docs index Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 28, 2026
- Test counts: 2777 → 2800 across all MD files - TESTING.md: updated counts for cliUtils (19), SnapshotManager (49), snapshotDiffUtils (29), TuningStatusBanner (78) - ARCHITECTURE.md: resilient restore description, updated test summary - CLAUDE.md: 'Allowed range' in cliUtils error patterns, resilient restore behavior, post-apply verification fields, corrupted config detection - SPEC.md: PR range → #1–#332 - README.md: test count update Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 28, 2026
…ation (#332) * fix: resilient snapshot restore, corrupted config warnings, post-apply verification 1. Snapshot restore now continues on CLI errors instead of aborting. Failed commands are collected and reported to UI as warnings. Added "Allowed range" to CLI error detection patterns. 2. Corrupted config detection (###ERROR IN diff: CORRUPTED CONFIG) shown in snapshot comparison modal when BF reports EEPROM corruption. 3. Post-apply read-back verification reads PID/filter config from FC after reconnect and compares against applied changes. Mismatches shown as warning in TuningStatusBanner. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update MD files for resilient restore PR #332 - Test counts: 2777 → 2800 across all MD files - TESTING.md: updated counts for cliUtils (19), SnapshotManager (49), snapshotDiffUtils (29), TuningStatusBanner (78) - ARCHITECTURE.md: resilient restore description, updated test summary - CLAUDE.md: 'Allowed range' in cliUtils error patterns, resilient restore behavior, post-apply verification fields, corrupted config detection - SPEC.md: PR range → #1–#332 - README.md: test count update Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: address CodePilot review comments on PR #332 - Restore loop: only continue on CLICommandError, rethrow transport errors - Post-apply verification: track unverified keys (CLI-only settings not readable via MSP), only set applyVerified=true when all changes checked Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Mar 29, 2026
Update all MD files to reflect Phase 3 completion of diagnostic reports: - CLAUDE.md: worker endpoints (PUT/GET bbl), fire-and-forget BBL upload, 30-day retention, BBL size/timeout constants, diagnose skill BBL download - TESTING.md: test counts (2821), ReportIssueModal 6→13, diagnosticHandlers 7→14 - ARCHITECTURE.md: test counts, IPC handler tests, diagnostic handler description - SPEC.md: PR range #1-#338, test count 2821 - README.md: test count 2821 - docs/README.md: move DIAGNOSTIC_REPORTS to Completed section - Move docs/DIAGNOSTIC_REPORTS.md → docs/complete/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 29, 2026
Update all MD files to reflect Phase 3 completion of diagnostic reports: - CLAUDE.md: worker endpoints (PUT/GET bbl), fire-and-forget BBL upload, 30-day retention, BBL size/timeout constants, diagnose skill BBL download - TESTING.md: test counts (2821), ReportIssueModal 6→13, diagnosticHandlers 7→14 - ARCHITECTURE.md: test counts, IPC handler tests, diagnostic handler description - SPEC.md: PR range #1-#338, test count 2821 - README.md: test count 2821 - docs/README.md: move DIAGNOSTIC_REPORTS to Completed section - Move docs/DIAGNOSTIC_REPORTS.md → docs/complete/ Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 31, 2026
2 tasks
eddycek
added a commit
that referenced
this pull request
Mar 31, 2026
* docs: update test counts after audit PRs #391-#393 2941 → 2952 unit tests (+11), PR range → #1-#393. Per-file counts: handlers 109→110, headerValidation 28→37, PIDRecommender 232→237, FilterAnalyzer 19→20. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: address CodePilot review — remove ~ from E2E test count Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 task
eddycek
added a commit
that referenced
this pull request
Apr 6, 2026
- FC_STATE_CACHE.md: Status → Complete, all steps checked - docs/README.md: moved to Completed section - New src/main/cache/CLAUDE.md with full cache documentation - Updated CLAUDE.md, src/main/CLAUDE.md, src/renderer/CLAUDE.md - Updated TESTING.md, ARCHITECTURE.md, README.md, SPEC.md (test counts 3099/144, IPC handlers 67, PR range #1-#428) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eddycek
added a commit
that referenced
this pull request
Apr 11, 2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 Overview
Complete implementation of multi-drone profile system with comprehensive testing infrastructure. This PR adds the ability to manage multiple flight controllers, each with its own profile and configuration snapshots.
✨ Features Implemented
Profile Management
UI/UX Improvements
Bug Fixes
Architecture Improvements
snapshotIdsarrayonProfileChanged,onConnectionChangedevents🧪 Testing Infrastructure
Test Coverage
128 tests total - All passing ✅
Components (89 tests)
Hooks (39 tests)
Testing Infrastructure
window.betaflightAPI mocking insrc/renderer/test/setup.tsWhat Was Tested
UI Interactions
Business Logic
API Integration
State Management
Edge Cases
📚 Documentation
New Documentation
✅ CLAUDE.md - Comprehensive architecture guide for future AI agents
✅ TESTING.md - Complete testing guidelines
Updated Documentation
🔧 Technical Changes
Modified Files (17 files)
src/main/ipc/handlers.ts- Server-side snapshot filtering, baseline creation, profile deletion logicsrc/main/msp/MSPClient.ts- Board name sanitization, null byte filtering, fallback logicsrc/main/storage/ProfileManager.ts- Allow active profile deletion, clear currentProfileIdsrc/renderer/App.tsx- Remove wizard cancel handlersrc/renderer/components/ConnectionPanel/ConnectionPanel.tsx- Cooldown timer, auto port detectionsrc/renderer/components/FCInfo/FCInfoDisplay.tsx- Conditional board name displaysrc/renderer/components/PresetSelector.tsx- CSS stylingsrc/renderer/components/ProfileCard.tsx- CSS classes, edit button, locked statesrc/renderer/components/ProfileSelector.tsx- Profile locking logic, lock notice, CSSsrc/renderer/components/ProfileWizard.tsx- CSS styling, PRESET_PROFILES import, remove cancelsrc/renderer/hooks/useSnapshots.ts- Event subscriptions for profile/connection changessrc/shared/constants.ts- SIZE_DEFAULTS for 1", 2", 10 preset profilessrc/shared/types/profile.types.ts- 1S, 2S batteries, 1", 2" sizesREADME.md- Testing sectionpackage.json- Test scripts, lint-staged configNew Files (20 files)
.husky/pre-commit- Pre-commit hook for automatic testingvitest.config.ts- Vitest configurationsrc/renderer/test/setup.ts- Test setup with mockssrc/renderer/components/ProfileWizard.css- Wizard stylingsrc/renderer/components/ProfileCard.css- Card styling with locked statesrc/renderer/components/ProfileSelector.css- Dropdown styling with lock noticesrc/renderer/components/ProfileEditModal.tsx- Profile editing modalsrc/renderer/components/ProfileEditModal.test.tsx- 18 testssrc/renderer/components/ProfileDeleteModal.tsx- Deletion confirmation modalsrc/renderer/components/ProfileDeleteModal.test.tsx- 14 testssrc/renderer/components/ConnectionPanel/ConnectionPanel.test.tsx- 12 testssrc/renderer/components/ProfileSelector.test.tsx- 11 testssrc/renderer/components/FCInfo/FCInfoDisplay.test.tsx- 12 testssrc/renderer/components/SnapshotManager/SnapshotManager.test.tsx- 22 testssrc/renderer/hooks/useConnection.test.ts- 15 testssrc/renderer/hooks/useProfiles.test.ts- 14 testssrc/renderer/hooks/useSnapshots.test.ts- 16 testsCLAUDE.md- Architecture documentationTESTING.md- Testing guidelines📊 Statistics
✅ Testing Done
Manual Testing
Automated Testing
🚀 Ready for Merge
📝 Notes