-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
enhancementNew feature or requestNew feature or request
Description
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
goproxis run from anywhere - Current State: Manual detection via separate
rename-gopro-sd.zshscript - Target State: Built-in detection in main
goproxworkflow - 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
- Scan
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
- Use existing renaming logic from
3. Multi-Card Workflow Support
- Requirement: Process multiple SD cards without manual
cdoperations - 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-all2. 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 --import3. 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 jsonImplementation Phases
Phase 1: Standalone Testing
-
Enhanced Detection Script
- Improve
rename-gopro-sd.zshwith better detection - Add multi-card support
- Test with various card types and scenarios
- Improve
-
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-detectflag to main script - Integrate detection logic
- Add card selection mechanisms
- Add
-
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
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request