Skip to content

Enhancement: Enhanced SD Card Management #69

@fxstein

Description

@fxstein

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

  1. Enhanced Detection Script

    • Improve rename-gopro-sd.zsh with better detection
    • Add multi-card support
    • Test with various card types and scenarios
  2. Tracking Prototype

    • Create standalone tracking script
    • Test different storage formats
    • Validate log structure and performance
  3. Integration Testing

    • Test detection + renaming + tracking workflow
    • Validate with multiple cards simultaneously
    • Performance testing with large numbers of files

Phase 2: Core Integration

  1. Main goprox Integration

    • Add --auto-detect flag to main script
    • Integrate detection logic
    • Add card selection mechanisms
  2. 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

  1. Tracking Dashboard

    • Add tracking commands to main script
    • Create reporting and analytics features
    • Implement data export capabilities
  2. Smart Defaults

    • Learn user preferences for card operations
    • Suggest optimal workflows based on card history
    • Implement automatic operation sequencing

Questions for Iteration

  1. Storage Location: Which tracking storage structure do you prefer?
  2. Card Identification: Should we use date-based or UUID-based identifiers?
  3. Log Format: JSON vs structured text vs database approach?
  4. Integration Level: How deeply should this integrate with existing workflows?
  5. User Interface: How much automation vs user control do you want?
  6. Performance: What's the acceptable overhead for tracking operations?
  7. Data Retention: How long should we keep tracking data?
  8. 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

  1. Review and refine requirements
  2. Choose preferred technical approaches
  3. Create detailed implementation plan
  4. Begin Phase 1 standalone testing
  5. Iterate based on testing results
  6. Plan Phase 2 integration

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions