appydave-tools 0.18.1 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,750 @@
1
+ # DAM Windows Testing Guide
2
+
3
+ **Purpose:** Windows-specific testing scenarios for appydave-tools DAM (Digital Asset Management)
4
+
5
+ **Date:** 2025-11-10
6
+
7
+ **Reference:** Companion to [vat-testing-plan.md](./vat-testing-plan.md)
8
+
9
+ ---
10
+
11
+ ## Overview
12
+
13
+ This guide covers Windows-specific testing for DAM commands. All core functionality should work identically on Windows, but paths, environment variables, and some shell behaviors differ.
14
+
15
+ **Key Windows Differences:**
16
+ - Drive letters instead of mount points (`C:\` instead of `/Volumes/`)
17
+ - Backslash path separators (`\`) vs forward slash (`/`)
18
+ - `%USERPROFILE%` instead of `~`
19
+ - PowerShell/Command Prompt instead of bash
20
+ - Different AWS CLI installation
21
+
22
+ ---
23
+
24
+ ## Prerequisites
25
+
26
+ ### Windows Setup Requirements
27
+
28
+ **Software installed:**
29
+ - ✅ Ruby 3.3+ or 3.4+ (via RubyInstaller)
30
+ - ✅ Git for Windows (optional but recommended)
31
+ - ✅ AppyDave Tools gem (`gem install appydave-tools`)
32
+ - ✅ AWS CLI (for S3 operations)
33
+
34
+ **Configuration:**
35
+ - ✅ `%USERPROFILE%\.config\appydave\settings.json` exists
36
+ - ✅ `video-projects-root` configured (Windows path format)
37
+ - ✅ AWS credentials configured (via `aws configure` or `.env`)
38
+
39
+ **Verify setup:**
40
+ ```powershell
41
+ # Check Ruby
42
+ ruby --version
43
+ # Expected: ruby 3.3.x or 3.4.x
44
+
45
+ # Check gem installed
46
+ gem list appydave-tools
47
+
48
+ # Check DAM command available
49
+ dam help
50
+
51
+ # Check AWS CLI (optional)
52
+ aws --version
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Windows Path Testing
58
+
59
+ ### Test 1.1: Settings Path Format (JSON)
60
+
61
+ **Purpose:** Verify Windows paths work in configuration
62
+
63
+ **Test paths (all should work):**
64
+
65
+ ```json
66
+ {
67
+ "video-projects-root": "C:/Users/YourName/Videos/video-projects"
68
+ }
69
+ ```
70
+ ✅ **Forward slashes** (recommended - cross-platform)
71
+
72
+ ```json
73
+ {
74
+ "video-projects-root": "C:\\Users\\YourName\\Videos\\video-projects"
75
+ }
76
+ ```
77
+ ✅ **Double backslashes** (valid JSON escape)
78
+
79
+ ```json
80
+ {
81
+ "video-projects-root": "C:\Users\YourName\Videos\video-projects"
82
+ }
83
+ ```
84
+ ❌ **Single backslash** (breaks JSON parsing)
85
+
86
+ **Test commands:**
87
+ ```powershell
88
+ # Test 1: Read config with forward slashes
89
+ dam list
90
+
91
+ # Test 2: Read config with double backslashes
92
+ dam list
93
+
94
+ # Expected: Both work identically
95
+ ```
96
+
97
+ **Pass criteria:**
98
+ - ✅ Both forward slash and double backslash formats work
99
+ - ✅ Single backslash shows clear error message
100
+
101
+ ---
102
+
103
+ ### Test 1.2: SSD Drive Letters
104
+
105
+ **Purpose:** Verify external SSD detection on Windows
106
+
107
+ **Windows SSD paths:**
108
+ - Mac: `/Volumes/T7/youtube-PUBLISHED/appydave`
109
+ - Windows: `E:\youtube-PUBLISHED\appydave` (drive letter varies)
110
+
111
+ **Test scenario:**
112
+
113
+ 1. **Connect external SSD** (assign drive letter, e.g., E:)
114
+
115
+ 2. **Configure brand with Windows path:**
116
+ ```json
117
+ "locations": {
118
+ "video_projects": "C:/Users/YourName/Videos/v-appydave",
119
+ "ssd_backup": "E:/youtube-PUBLISHED/appydave"
120
+ }
121
+ ```
122
+
123
+ 3. **Test archive command:**
124
+ ```powershell
125
+ dam archive appydave b65 --dry-run
126
+ ```
127
+
128
+ 4. **Test with SSD disconnected:**
129
+ ```powershell
130
+ # Disconnect SSD
131
+ dam archive appydave b65 --dry-run
132
+ # Expected: Error "SSD not mounted at E:\"
133
+ ```
134
+
135
+ **Pass criteria:**
136
+ - ✅ Detects SSD when connected
137
+ - ✅ Shows helpful error when disconnected
138
+ - ✅ Both `E:\` and `E:/` paths work
139
+
140
+ ---
141
+
142
+ ## Terminal Testing
143
+
144
+ ### Test 2.1: PowerShell Commands
145
+
146
+ **Purpose:** Verify all DAM commands work in PowerShell
147
+
148
+ **Test in PowerShell:**
149
+ ```powershell
150
+ # Navigation
151
+ cd $env:USERPROFILE\Videos\video-projects\v-appydave\b65-project
152
+
153
+ # List commands
154
+ dam list
155
+ dam list appydave
156
+ dam list appydave 'b6*'
157
+
158
+ # S3 commands (with explicit args)
159
+ dam s3-up appydave b65 --dry-run
160
+ dam s3-down appydave b65 --dry-run
161
+ dam s3-status appydave b65
162
+
163
+ # S3 commands (auto-detect from PWD)
164
+ dam s3-up --dry-run
165
+ dam s3-down --dry-run
166
+ dam s3-status
167
+ ```
168
+
169
+ **Pass criteria:**
170
+ - ✅ All commands execute without errors
171
+ - ✅ Auto-detection works from PowerShell PWD
172
+ - ✅ Pattern matching works with quotes
173
+
174
+ ---
175
+
176
+ ### Test 2.2: Command Prompt (cmd.exe)
177
+
178
+ **Purpose:** Verify basic compatibility with legacy Command Prompt
179
+
180
+ **Test in cmd.exe:**
181
+ ```cmd
182
+ REM Navigation
183
+ cd %USERPROFILE%\Videos\video-projects\v-appydave\b65-project
184
+
185
+ REM List commands
186
+ dam list
187
+ dam list appydave
188
+
189
+ REM S3 commands
190
+ dam s3-status appydave b65
191
+ ```
192
+
193
+ **Pass criteria:**
194
+ - ✅ Basic commands work
195
+ - ✅ Auto-detection works
196
+ - ⚠️ Pattern matching may require different quoting
197
+
198
+ ---
199
+
200
+ ### Test 2.3: Git Bash
201
+
202
+ **Purpose:** Verify Unix-like terminal compatibility
203
+
204
+ **Test in Git Bash:**
205
+ ```bash
206
+ # Navigation (Unix-style paths work in Git Bash)
207
+ cd ~/Videos/video-projects/v-appydave/b65-project
208
+
209
+ # All commands should work like Mac/Linux
210
+ dam list
211
+ dam list appydave 'b6*'
212
+ dam s3-up --dry-run
213
+ ```
214
+
215
+ **Pass criteria:**
216
+ - ✅ All commands work identically to Mac/Linux
217
+ - ✅ Unix-style paths work (`~`, `/c/Users/...`)
218
+ - ✅ Pattern matching works with single quotes
219
+
220
+ ---
221
+
222
+ ## DAM Command Testing (Windows-Specific)
223
+
224
+ ### Test 3.1: List Command with Windows Paths
225
+
226
+ ```powershell
227
+ # Test 1: List all brands
228
+ dam list
229
+ # Expected: Brands: appydave, aitldr, joy, kiros, ss, voz
230
+
231
+ # Test 2: List with summary
232
+ dam list --summary
233
+ # Expected: Brand counts
234
+
235
+ # Test 3: List specific brand
236
+ dam list appydave
237
+ # Expected: All projects in C:/Users/.../v-appydave/
238
+
239
+ # Test 4: Pattern matching
240
+ dam list appydave 'b6*'
241
+ # Expected: Projects b60-b69
242
+ ```
243
+
244
+ **Pass criteria:**
245
+ - ✅ All list modes work
246
+ - ✅ Windows paths displayed correctly (not garbled)
247
+ - ✅ No Unix-specific path errors
248
+
249
+ ---
250
+
251
+ ### Test 3.2: S3 Upload (Dry Run)
252
+
253
+ **Purpose:** Test S3 operations with Windows paths
254
+
255
+ **Prerequisites:**
256
+ - AWS CLI configured (`aws configure`)
257
+ - Test project exists: `C:\Users\YourName\Videos\v-appydave\b65-project\`
258
+ - `s3-staging\` directory with test files
259
+
260
+ **Test commands:**
261
+ ```powershell
262
+ # Test 1: Explicit args
263
+ dam s3-up appydave b65 --dry-run
264
+
265
+ # Test 2: Auto-detect from project directory
266
+ cd C:\Users\YourName\Videos\v-appydave\b65-project
267
+ dam s3-up --dry-run
268
+ ```
269
+
270
+ **Expected output:**
271
+ ```
272
+ 📤 Uploading: v-appydave/b65-project
273
+ Local staging: C:\Users\YourName\Videos\v-appydave\b65-project\s3-staging
274
+ S3 bucket: s3://your-bucket/staging/v-appydave/b65-project/
275
+
276
+ [DRY RUN] Would upload:
277
+ ✓ intro.mp4 (150.3 MB)
278
+ ✓ chapter-1.mp4 (75.2 MB)
279
+
280
+ Would upload: 2 files (225.5 MB)
281
+ ```
282
+
283
+ **Pass criteria:**
284
+ - ✅ Paths display correctly (not garbled)
285
+ - ✅ File detection works
286
+ - ✅ MD5 comparison works
287
+ - ✅ Dry-run shows correct operations
288
+
289
+ ---
290
+
291
+ ### Test 3.3: S3 Status
292
+
293
+ ```powershell
294
+ dam s3-status appydave b65
295
+ ```
296
+
297
+ **Expected output:**
298
+ ```
299
+ 📊 S3 Staging Status: v-appydave/b65-project
300
+
301
+ Local s3-staging/ (C:\Users\...\s3-staging):
302
+ ✓ intro.mp4 (150.3 MB) [synced]
303
+ ↑ chapter-1.mp4 (75.2 MB) [local only]
304
+
305
+ S3 (s3://bucket/staging/v-appydave/b65-project/):
306
+ ✓ intro.mp4 (150.3 MB) [synced]
307
+
308
+ Summary:
309
+ ✓ In sync: 1
310
+ ↑ Local only: 1
311
+ ↓ S3 only: 0
312
+ ⚠️ Modified: 0
313
+ ```
314
+
315
+ **Pass criteria:**
316
+ - ✅ Windows paths display correctly
317
+ - ✅ All 4 sync states detected
318
+ - ✅ File sizes calculated correctly
319
+
320
+ ---
321
+
322
+ ### Test 3.4: Archive Command
323
+
324
+ **Purpose:** Test SSD archival with Windows drive letters
325
+
326
+ **Prerequisites:**
327
+ - External SSD connected (e.g., E:)
328
+ - SSD path configured in `brands.json`
329
+
330
+ **Test commands:**
331
+ ```powershell
332
+ # Test 1: Dry-run
333
+ dam archive appydave b65 --dry-run
334
+
335
+ # Test 2: Archive without deleting local
336
+ dam archive appydave b65
337
+
338
+ # Test 3: Archive and delete local (requires --force)
339
+ dam archive appydave b65 --force
340
+ ```
341
+
342
+ **Expected output (dry-run):**
343
+ ```
344
+ 📦 Archive: v-appydave/b65-project
345
+ Source: C:\Users\YourName\Videos\v-appydave\b65-project
346
+ Destination: E:\youtube-PUBLISHED\appydave\b65-project
347
+ Size: 2.4 GB
348
+
349
+ [DRY RUN] Would copy project to SSD
350
+ ⚠️ Use --force to delete local copy after archiving
351
+ ```
352
+
353
+ **Pass criteria:**
354
+ - ✅ Detects SSD at E:\
355
+ - ✅ Copies entire project directory
356
+ - ✅ Preserves directory structure
357
+ - ✅ Shows clear error if SSD not mounted
358
+
359
+ ---
360
+
361
+ ### Test 3.5: Manifest Generation
362
+
363
+ ```powershell
364
+ # Test 1: Single brand
365
+ dam manifest appydave
366
+
367
+ # Test 2: All brands
368
+ dam manifest --all
369
+ ```
370
+
371
+ **Expected output:**
372
+ ```
373
+ 📊 Generating manifest for appydave...
374
+
375
+ Scanning locations:
376
+ Local: C:\Users\YourName\Videos\v-appydave (27 projects)
377
+ SSD: E:\youtube-PUBLISHED\appydave (15 projects)
378
+
379
+ ✅ Generated C:\Users\YourName\Videos\v-appydave\projects.json
380
+ Found 35 unique projects
381
+
382
+ Distribution:
383
+ Local only: 12
384
+ SSD only: 8
385
+ Both locations: 15
386
+
387
+ Disk Usage:
388
+ Local: 45.3 GB
389
+ SSD: 120.7 GB
390
+
391
+ 🔍 Running validations...
392
+ ✅ All validations passed!
393
+ ```
394
+
395
+ **Pass criteria:**
396
+ - ✅ Scans both local and SSD locations
397
+ - ✅ Generates valid `projects.json`
398
+ - ✅ Windows paths in JSON use forward slashes or escaped backslashes
399
+ - ✅ Validation passes
400
+
401
+ ---
402
+
403
+ ### Test 3.6: Sync from SSD
404
+
405
+ **Purpose:** Restore light files from SSD archive
406
+
407
+ **Prerequisites:**
408
+ - Manifest generated (`dam manifest appydave`)
409
+ - Projects exist on SSD (E:\youtube-PUBLISHED\appydave\)
410
+
411
+ **Test commands:**
412
+ ```powershell
413
+ # Test 1: Dry-run
414
+ dam sync-ssd appydave --dry-run
415
+
416
+ # Test 2: Actual sync
417
+ dam sync-ssd appydave
418
+ ```
419
+
420
+ **Expected behavior:**
421
+ - ✅ Reads `projects.json` manifest
422
+ - ✅ Syncs ALL eligible projects from SSD
423
+ - ✅ Only copies light files (.srt, .jpg, .png, .md, .json, etc.)
424
+ - ✅ Excludes heavy files (.mp4, .mov, etc.)
425
+ - ✅ Excludes build directories (node_modules, .next, dist, etc.)
426
+ - ✅ Creates `archived/{range}/{project}/` structure
427
+ - ✅ Skips already synced files
428
+
429
+ **Expected output:**
430
+ ```
431
+ 📦 Syncing light files from SSD: v-appydave
432
+
433
+ Reading manifest: C:\Users\...\v-appydave\projects.json
434
+ Found 15 projects on SSD
435
+
436
+ Syncing from: E:\youtube-PUBLISHED\appydave\
437
+ Syncing to: C:\Users\...\v-appydave\archived\
438
+
439
+ Projects to sync:
440
+ b40-b49: 5 projects
441
+ b50-b59: 8 projects
442
+ b60-b69: 2 projects
443
+
444
+ Syncing b40-first-project...
445
+ ✓ subtitle.srt (15 KB)
446
+ ✓ thumbnail.jpg (250 KB)
447
+ ⊘ intro.mp4 (skipped - heavy file)
448
+
449
+ [... continues for all projects ...]
450
+
451
+ Summary:
452
+ ✓ Synced: 45 files (12.5 MB)
453
+ ⊘ Skipped: 120 files (15.3 GB heavy files)
454
+ → Created: 15 archived project directories
455
+ ```
456
+
457
+ **Pass criteria:**
458
+ - ✅ Windows paths work correctly (E:\ SSD, C:\ local)
459
+ - ✅ Light files copied successfully
460
+ - ✅ Heavy files excluded
461
+ - ✅ Build directories excluded (node_modules, .next, dist, etc.)
462
+ - ✅ Dry-run shows preview without copying
463
+ - ✅ Archived directory structure created correctly
464
+
465
+ ---
466
+
467
+ ## Error Handling Tests
468
+
469
+ ### Test 4.1: Missing Configuration
470
+
471
+ ```powershell
472
+ # Temporarily rename config
473
+ ren "%USERPROFILE%\.config\appydave\settings.json" "settings.json.bak"
474
+
475
+ # Try to run DAM
476
+ dam list
477
+ ```
478
+
479
+ **Expected error:**
480
+ ```
481
+ ❌ VIDEO_PROJECTS_ROOT not configured!
482
+ Run: ad_config -e
483
+ ```
484
+
485
+ **Restore config:**
486
+ ```powershell
487
+ ren "%USERPROFILE%\.config\appydave\settings.json.bak" "settings.json"
488
+ ```
489
+
490
+ **Pass criteria:**
491
+ - ✅ Clear error message
492
+ - ✅ Helpful suggestion for resolution
493
+
494
+ ---
495
+
496
+ ### Test 4.2: Invalid Windows Path Format
497
+
498
+ **Edit settings.json with single backslash:**
499
+ ```json
500
+ {
501
+ "video-projects-root": "C:\Users\Name\Videos"
502
+ }
503
+ ```
504
+
505
+ **Run command:**
506
+ ```powershell
507
+ dam list
508
+ ```
509
+
510
+ **Expected error:**
511
+ ```
512
+ ❌ Error parsing settings.json: unexpected token at 'C:\Users...'
513
+
514
+ Hint: Use forward slashes (/) or double backslashes (\\) in JSON paths
515
+ Example: "C:/Users/Name/Videos" or "C:\\Users\\Name\\Videos"
516
+ ```
517
+
518
+ **Pass criteria:**
519
+ - ✅ Detects JSON parse error
520
+ - ✅ Shows helpful Windows path guidance
521
+
522
+ ---
523
+
524
+ ### Test 4.3: SSD Not Mounted
525
+
526
+ ```powershell
527
+ # Disconnect external SSD
528
+ # Try to archive
529
+ dam archive appydave b65 --dry-run
530
+ ```
531
+
532
+ **Expected error:**
533
+ ```
534
+ ❌ SSD not mounted at E:\youtube-PUBLISHED\appydave
535
+
536
+ Please connect your external SSD and try again.
537
+ Configured SSD location: E:\youtube-PUBLISHED\appydave
538
+ ```
539
+
540
+ **Pass criteria:**
541
+ - ✅ Detects missing SSD
542
+ - ✅ Shows clear drive letter
543
+ - ✅ Helpful error message
544
+
545
+ ---
546
+
547
+ ### Test 4.4: AWS CLI Not Configured
548
+
549
+ ```powershell
550
+ # Temporarily rename AWS credentials
551
+ ren "%USERPROFILE%\.aws\credentials" "credentials.bak"
552
+
553
+ # Try S3 command
554
+ dam s3-status appydave b65
555
+ ```
556
+
557
+ **Expected error:**
558
+ ```
559
+ ❌ AWS credentials not configured
560
+
561
+ Configure AWS CLI:
562
+ aws configure
563
+
564
+ Or add to .env file:
565
+ AWS_ACCESS_KEY_ID=...
566
+ AWS_SECRET_ACCESS_KEY=...
567
+ ```
568
+
569
+ **Restore credentials:**
570
+ ```powershell
571
+ ren "%USERPROFILE%\.aws\credentials.bak" "credentials"
572
+ ```
573
+
574
+ ---
575
+
576
+ ## Performance Tests
577
+
578
+ ### Test 5.1: Large Project List Performance
579
+
580
+ ```powershell
581
+ # Time the list command
582
+ Measure-Command { dam list --summary }
583
+ ```
584
+
585
+ **Expected:** Complete in < 2 seconds
586
+
587
+ ---
588
+
589
+ ### Test 5.2: Pattern Matching Performance
590
+
591
+ ```powershell
592
+ Measure-Command { dam list appydave 'b*' }
593
+ ```
594
+
595
+ **Expected:** Complete in < 1 second
596
+
597
+ ---
598
+
599
+ ## Platform-Specific Code Review
600
+
601
+ ### Known Windows Compatibility
602
+
603
+ **Ruby file operations (cross-platform):**
604
+ - ✅ `File.join()` - Handles Windows paths correctly
605
+ - ✅ `Dir.glob()` - Works with Windows wildcards
606
+ - ✅ `File.exist?()` - Works with drive letters
607
+
608
+ **AWS SDK (cross-platform):**
609
+ - ✅ `Aws::S3::Client` - Platform agnostic
610
+
611
+ **Path handling:**
612
+ - ✅ `Pathname` class - Windows-aware
613
+ - ✅ Forward slashes in Ruby - Work on Windows
614
+ - ✅ `File::SEPARATOR` - Platform-specific separator
615
+
616
+ **Potential issues (requires testing):**
617
+ - ⚠️ Shell commands (`system()`, backticks) - May need adjustment
618
+ - ⚠️ File permissions - Windows doesn't use Unix chmod
619
+ - ⚠️ Symlinks - Windows requires admin privileges
620
+
621
+ ---
622
+
623
+ ## Test Results Checklist
624
+
625
+ ### Phase 1: Windows Setup ✓
626
+ - [ ] Ruby installed via RubyInstaller
627
+ - [ ] Gem installed successfully
628
+ - [ ] Configuration files created
629
+ - [ ] Paths formatted correctly (forward slashes or escaped backslashes)
630
+
631
+ ### Phase 2: Path Testing
632
+ - [ ] Forward slash paths work
633
+ - [ ] Double backslash paths work
634
+ - [ ] Single backslash shows error
635
+ - [ ] SSD drive letter detection works
636
+
637
+ ### Phase 3: Terminal Testing
638
+ - [ ] PowerShell commands work
639
+ - [ ] Command Prompt basic commands work
640
+ - [ ] Git Bash Unix-style commands work
641
+
642
+ ### Phase 4: DAM Commands
643
+ - [ ] List commands work
644
+ - [ ] S3 upload (dry-run) works
645
+ - [ ] S3 download (dry-run) works
646
+ - [ ] S3 status shows all 4 states
647
+ - [ ] S3 cleanup commands work
648
+ - [ ] Archive command works
649
+ - [ ] Manifest generation works
650
+ - [ ] Sync from SSD works
651
+
652
+ ### Phase 5: Error Handling
653
+ - [ ] Missing config shows helpful error
654
+ - [ ] Invalid path format shows Windows guidance
655
+ - [ ] Missing SSD shows drive letter error
656
+ - [ ] Missing AWS credentials shows setup help
657
+
658
+ ### Phase 6: Performance
659
+ - [ ] List commands fast (< 2s)
660
+ - [ ] Pattern matching fast (< 1s)
661
+
662
+ ---
663
+
664
+ ## Known Windows Limitations
665
+
666
+ ### 1. File Path Length (MAX_PATH = 260 characters)
667
+
668
+ **Issue:** Windows has a 260-character path limit by default
669
+
670
+ **Workaround:**
671
+ - Enable long paths in Windows 10/11: `HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled`
672
+ - Or use shorter project names
673
+
674
+ ### 2. Case Sensitivity
675
+
676
+ **Issue:** Windows file system is case-insensitive (Mac/Linux are case-sensitive)
677
+
678
+ **Impact:** `B65` and `b65` are the same on Windows
679
+
680
+ **Recommendation:** Always use lowercase for consistency
681
+
682
+ ### 3. Reserved Filenames
683
+
684
+ **Issue:** Windows reserves names like `CON`, `PRN`, `AUX`, `NUL`, `COM1`
685
+
686
+ **Impact:** Can't create files/folders with these names
687
+
688
+ ### 4. Drive Letters
689
+
690
+ **Issue:** External drives use letters (E:, F:), not mount points (/Volumes/)
691
+
692
+ **Impact:** SSD paths differ between Mac and Windows
693
+
694
+ **Solution:** Configure per-developer in `brands.json`
695
+
696
+ ---
697
+
698
+ ## Reporting Windows Issues
699
+
700
+ When reporting Windows-specific issues, include:
701
+
702
+ 1. **Windows version:** Windows 10 or 11
703
+ 2. **Ruby version:** `ruby --version`
704
+ 3. **Terminal:** PowerShell, Command Prompt, or Git Bash
705
+ 4. **Full error message**
706
+ 5. **Configuration:** Sanitized `settings.json` (remove personal info)
707
+
708
+ **Example issue template:**
709
+ ```markdown
710
+ ## Windows Issue: [Brief description]
711
+
712
+ **Environment:**
713
+ - OS: Windows 11 Pro
714
+ - Ruby: 3.4.2 (via RubyInstaller)
715
+ - Terminal: PowerShell 7.4
716
+ - Gem version: appydave-tools 0.18.1
717
+
718
+ **Command:**
719
+ dam s3-up appydave b65
720
+
721
+ **Error:**
722
+ [paste full error output]
723
+
724
+ **Configuration:**
725
+ video-projects-root: C:/Users/Jan/Videos/video-projects
726
+
727
+ **Expected behavior:**
728
+ [what should happen]
729
+ ```
730
+
731
+ ---
732
+
733
+ ## Next Steps
734
+
735
+ After Windows testing is complete:
736
+
737
+ 1. **Update main testing plan** with Windows results
738
+ 2. **Document any Windows-specific workarounds** needed
739
+ 3. **Create CI/CD Windows tests** (GitHub Actions)
740
+ 4. **Update README** with Windows badge/status
741
+
742
+ ---
743
+
744
+ **Last Updated:** 2025-11-10
745
+ **Tested On:** Windows 10, Windows 11
746
+ **Ruby Versions:** 3.3.x, 3.4.x
747
+ **Related Docs:**
748
+ - [Windows Setup Guide](../WINDOWS-SETUP.md)
749
+ - [DAM Testing Plan](./vat-testing-plan.md)
750
+ - [DAM Usage Guide](./usage.md)