Enhanced SD Card Management Feature Requirements
Overview
Transform GoProX from a manual, directory-based tool to an intelligent, SD card-aware system that automatically detects, manages, and tracks GoPro SD cards across multiple operations.
Core Requirements
1. Automatic SD Card Detection
- Requirement: Automatically identify all mounted GoPro SD cards when
goprox is run from anywhere
- Current State: Manual detection via separate
rename-gopro-sd.zsh script
- Target State: Built-in detection in main
goprox workflow
- Implementation:
- Scan
/Volumes/ for GoPro SD cards using existing detection logic
- Identify cards by volume name patterns and firmware files
- Extract model and serial number information
- Present detected cards to user with options
2. Automatic SD Card Renaming
- Requirement: Automatically rename SD cards to
HERO{model}-{last4digits} format
- Current State: Manual execution via
rename-gopro-sd.zsh
- Target State: Integrated into main workflow with user confirmation
- Implementation:
- Use existing renaming logic from
rename-gopro-sd.zsh
- Apply renaming before any other operations
- Handle cases where cards are already properly named
- Provide user feedback and confirmation options
3. Multi-Card Workflow Support
- Requirement: Process multiple SD cards without manual
cd operations
- Current State: User must navigate to each mount point manually
- Target State: Automatic iteration through detected cards
- Implementation:
- Detect all GoPro cards at startup
- Present list of cards to user
- Allow selection of specific cards or "all cards"
- Execute requested operations on each selected card
- Provide progress feedback for each card
4. SD Card Tracking System
- Requirement: Create persistent tracking logs for all SD cards
- Current State: No tracking mechanism exists
- Target State: Comprehensive logging of all card interactions
- Implementation:
- Generate unique identifier per card (model + serial + first seen date)
- Log all operations performed on each card
- Track card usage patterns and history
- Enable card-specific reporting and analytics
Technical Design Suggestions
SD Card Unique Identification
Proposed Identifier Format: {MODEL}_{SERIAL}_{FIRST_SEEN_DATE}
- Example:
HERO11_5131_20241224
- Ensures uniqueness even if serial numbers are duplicated
- Human-readable and sortable
Alternative Format: {MODEL}_{SERIAL}_{UUID_SUFFIX}
- Example:
HERO11_5131_a1b2c3d4
- More robust for uniqueness
- Less human-readable
Tracking Log Storage Structure
Option 1: Dedicated Tracking Directory
~/.goprox/
├── tracking/
│ ├── cards/
│ │ ├── HERO11_5131_20241224.json
│ │ ├── HERO10_8034_20241220.json
│ │ └── HERO9_4139_20241215.json
│ ├── operations/
│ │ ├── 2024/
│ │ │ ├── 12/
│ │ │ │ ├── 24_operations.log
│ │ │ │ └── 25_operations.log
│ │ │ └── 11/
│ │ └── 2023/
│ └── summary/
│ ├── monthly_summary_202412.json
│ └── yearly_summary_2024.json
Option 2: Integrated with Library Structure
~/goprox/
├── tracking/
│ ├── cards/
│ ├── operations/
│ └── summary/
├── archive/
├── imported/
├── processed/
└── deleted/
Option 3: Database Approach
~/.goprox/
├── tracking.db (SQLite database)
└── tracking_logs/
└── {YYYY}/{MM}/operations.log
Log Format Suggestions
Card Metadata (JSON)
{
"card_id": "HERO11_5131_20241224",
"model": "HERO11 Black",
"serial": "5131",
"first_seen": "2024-12-24T10:30:00Z",
"last_seen": "2024-12-25T14:22:00Z",
"total_operations": 15,
"volume_names": [
"HERO11-5131",
"GOPRO",
"NO NAME"
],
"firmware_versions": [
"H22.01.02.32.00",
"H22.01.02.10.00"
],
"operations_summary": {
"import": 8,
"archive": 6,
"firmware": 2,
"clean": 5
}
}
Operation Log (Structured Text)
2024-12-25T14:22:00Z | HERO11_5131_20241224 | import | /Volumes/HERO11-5131 | SUCCESS | 127 files imported
2024-12-25T14:22:00Z | HERO11_5131_20241224 | archive | /Volumes/HERO11-5131 | SUCCESS | 2.1GB archived
2024-12-25T14:22:00Z | HERO11_5131_20241224 | clean | /Volumes/HERO11-5131 | SUCCESS | 127 files removed
Integration Points
1. Main goprox Workflow
# New workflow
goprox --auto-detect --import --archive --clean
goprox --auto-detect --firmware
goprox --auto-detect --process-all
2. Card Selection Options
# Interactive selection
goprox --auto-detect --select
# Specific card
goprox --auto-detect --card HERO11_5131_20241224 --import
# All cards
goprox --auto-detect --all --import
3. Tracking Commands
# View card history
goprox --tracking --card HERO11_5131_20241224
# Generate reports
goprox --tracking --report monthly
goprox --tracking --report yearly
# Export tracking data
goprox --tracking --export json
Implementation Phases
Phase 1: Standalone Testing
-
Enhanced Detection Script
- Improve
rename-gopro-sd.zsh with better detection
- Add multi-card support
- Test with various card types and scenarios
-
Tracking Prototype
- Create standalone tracking script
- Test different storage formats
- Validate log structure and performance
-
Integration Testing
- Test detection + renaming + tracking workflow
- Validate with multiple cards simultaneously
- Performance testing with large numbers of files
Phase 2: Core Integration
-
Main goprox Integration
- Add
--auto-detect flag to main script
- Integrate detection logic
- Add card selection mechanisms
-
Workflow Enhancement
- Modify existing operations to work with detected cards
- Add progress reporting for multi-card operations
- Implement error handling for individual card failures
Phase 3: Advanced Features
-
Tracking Dashboard
- Add tracking commands to main script
- Create reporting and analytics features
- Implement data export capabilities
-
Smart Defaults
- Learn user preferences for card operations
- Suggest optimal workflows based on card history
- Implement automatic operation sequencing
Questions for Iteration
- Storage Location: Which tracking storage structure do you prefer?
- Card Identification: Should we use date-based or UUID-based identifiers?
- Log Format: JSON vs structured text vs database approach?
- Integration Level: How deeply should this integrate with existing workflows?
- User Interface: How much automation vs user control do you want?
- Performance: What's the acceptable overhead for tracking operations?
- Data Retention: How long should we keep tracking data?
- Privacy: Should tracking data be encrypted or anonymized?
Success Metrics
- Usability: Reduce manual steps by 80%
- Reliability: 99% successful card detection and renaming
- Performance: <5 second detection time for 10+ cards
- Tracking: 100% operation logging accuracy
- User Adoption: Seamless integration with existing workflows
Next Steps
- Review and refine requirements
- Choose preferred technical approaches
- Create detailed implementation plan
- Begin Phase 1 standalone testing
- Iterate based on testing results
- Plan Phase 2 integration
Enhanced SD Card Management Feature Requirements
Overview
Transform GoProX from a manual, directory-based tool to an intelligent, SD card-aware system that automatically detects, manages, and tracks GoPro SD cards across multiple operations.
Core Requirements
1. Automatic SD Card Detection
goproxis run from anywhererename-gopro-sd.zshscriptgoproxworkflow/Volumes/for GoPro SD cards using existing detection logic2. Automatic SD Card Renaming
HERO{model}-{last4digits}formatrename-gopro-sd.zshrename-gopro-sd.zsh3. Multi-Card Workflow Support
cdoperations4. SD Card Tracking System
Technical Design Suggestions
SD Card Unique Identification
Proposed Identifier Format:
{MODEL}_{SERIAL}_{FIRST_SEEN_DATE}HERO11_5131_20241224Alternative Format:
{MODEL}_{SERIAL}_{UUID_SUFFIX}HERO11_5131_a1b2c3d4Tracking Log Storage Structure
Option 1: Dedicated Tracking Directory
Option 2: Integrated with Library Structure
Option 3: Database Approach
Log Format Suggestions
Card Metadata (JSON)
{ "card_id": "HERO11_5131_20241224", "model": "HERO11 Black", "serial": "5131", "first_seen": "2024-12-24T10:30:00Z", "last_seen": "2024-12-25T14:22:00Z", "total_operations": 15, "volume_names": [ "HERO11-5131", "GOPRO", "NO NAME" ], "firmware_versions": [ "H22.01.02.32.00", "H22.01.02.10.00" ], "operations_summary": { "import": 8, "archive": 6, "firmware": 2, "clean": 5 } }Operation Log (Structured Text)
Integration Points
1. Main goprox Workflow
# New workflow goprox --auto-detect --import --archive --clean goprox --auto-detect --firmware goprox --auto-detect --process-all2. Card Selection Options
3. Tracking Commands
Implementation Phases
Phase 1: Standalone Testing
Enhanced Detection Script
rename-gopro-sd.zshwith better detectionTracking Prototype
Integration Testing
Phase 2: Core Integration
Main goprox Integration
--auto-detectflag to main scriptWorkflow Enhancement
Phase 3: Advanced Features
Tracking Dashboard
Smart Defaults
Questions for Iteration
Success Metrics
Next Steps