7 Commits

Author SHA1 Message Date
Apple
89cdb5468f fix: Corregir force unwraps y mejorar seguridad del código
- ManhwaWebScraper.swift: Eliminar force unwrap en URL con guard let
- ManhwaWebScraperOptimized.swift: Eliminar 2 force unwraps en URLs
- StorageServiceOptimized.swift: Usar .first en lugar de subscript [0]
- ImageCache.swift: Usar .first en lugar de subscript [0]
- Agregar caso invalidURL a ScrapingError enum

Build exitoso para iOS 15.0+ (simulador y device)
IPA generado y listo para sideloading

Co-Authored-By: Claude Code <noreply@anthropic.com>
v1.0.0
2026-02-08 13:56:58 -03:00
c7845e118c docs: Update server setup for manga.cbcren.online
📚 Updated documentation for new subdomain setup:
- Changed from gitea.cbcren.online:3001 to manga.cbcren.online
- Added HTTPS/SSL information (Let's Encrypt)
- Updated Caddy proxy configuration details
- Removed port 3001 from public access (internal only)
- Updated iOS app configuration examples
- Updated test commands for HTTPS
- Added DNS section
- Updated security section with SSL info

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 16:55:53 +01:00
abef30252c feat: Migrate to dedicated manga.cbcren.online subdomain
🎯 Changes:
- Moved from gitea.cbcren.online to manga.cbcren.online
- Updated Caddy proxy configuration with SSL auto-cert
- Updated iOS app APIConfig to use HTTPS
- Changed port from 3001 to standard HTTPS (443)
- No interference with Gitea or other services

🔧 Technical Details:
- DNS: manga.cbcren.online → 194.163.191.200
- Proxy: Caddy with automatic HTTPS
- Backend: 172.17.0.1:3001 (Docker gateway)
- SSL: Automatic Let's Encrypt certificate

 Tested:
- Health check: https://manga.cbcren.online/api/health ✓
- Storage stats: https://manga.cbcren.online/api/storage/stats ✓
- HTTPS redirect working correctly ✓

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 16:52:10 +01:00
9cd6ea4f02 docs: Add server setup documentation
📚 Added comprehensive server setup documentation including:
- Service information and endpoints
- Systemd service management commands
- Firewall configuration
- Troubleshooting guide
- Monitoring commands
- Security recommendations

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 16:40:05 +01:00
ffe945eac6 fix: Update APIConfig to use HTTP and port 3001
🔧 Changes:
- Changed protocol from HTTPS to HTTP in APIConfig.swift
- Backend is accessible at http://gitea.cbcren.online:3001
- Port 3001 is now open in firewall (ufw allow 3001/tcp)
- No interference with existing services (Gitea, Nextcloud, etc.)

🌐 Access:
- API: http://gitea.cbcren.online:3001/api/
- Storage: http://gitea.cbcren.online:3001/storage/
- Health: http://gitea.cbcren.online:3001/api/health

 Tested:
- Local: http://localhost:3001/api/health ✓
- External: http://gitea.cbcren.online:3001/api/health🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 16:37:11 +01:00
83e25e3bd6 feat: Add VPS storage system and complete integration
🎯 Overview:
Implemented complete VPS-based storage system allowing the iOS app to download
and store manga chapters on the VPS for ad-free offline reading.

📦 Backend Changes:
- Added storage.js service for managing chapter downloads (270 lines)
- Updated server.js with 6 new storage endpoints:
  - POST /api/download - Download chapters to VPS
  - GET /api/storage/chapters/:mangaSlug - List downloaded chapters
  - GET /api/storage/chapter/:mangaSlug/:chapterNumber - Check download status
  - GET /api/storage/image/:mangaSlug/:chapterNumber/:pageIndex - Serve images
  - DELETE /api/storage/chapter/:mangaSlug/:chapterNumber - Delete chapters
  - GET /api/storage/stats - Get storage statistics
- Fixed scraper.js Puppeteer compatibility issues (waitForTimeout, networkidle0)
- Added comprehensive test suite:
  - test-vps-flow.js (13 tests - 100% pass rate)
  - test-concurrent-downloads.js (10 tests for parallel operations)
  - run-tests.sh automation script

📱 iOS App Changes:
- Created APIConfig.swift with VPS connection settings
- Created VPSAPIClient.swift service (727 lines) for backend communication
- Updated MangaDetailView.swift with VPS download integration:
  - Cloud icon for VPS-available chapters
  - Upload button to download chapters to VPS
  - Progress indicators for active downloads
  - Bulk download options (last 10 or all chapters)
- Updated ReaderView.swift to load images from VPS first
- Progressive enhancement: app works without VPS, enhances when available

 Tests:
- All 13 VPS flow tests passing (100%)
- Tests verify: scraping, downloading, storage, serving, deletion, stats
- Chapter 789 download test: 21 images, 4.68 MB
- Concurrent download tests verify no race conditions

🔧 Configuration:
- VPS URL: https://gitea.cbcren.online:3001
- Storage location: /home/ren/ios/MangaReader/storage/
- Static file serving: /storage path

📚 Documentation:
- Added VPS_INTEGRATION_SUMMARY.md - Complete feature overview
- Added CHANGES.md - Detailed code changes reference
- Added TEST_README.md, TEST_QUICK_START.md, TEST_SUMMARY.md
- Added APIConfig README with usage examples

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 16:20:28 +01:00
b474182dd9 Initial commit: MangaReader iOS App
 Features:
- App iOS completa para leer manga sin publicidad
- Scraper con WKWebView para manhwaweb.com
- Sistema de descargas offline
- Lector con zoom y navegación
- Favoritos y progreso de lectura
- Compatible con iOS 15+ y Sideloadly/3uTools

📦 Contenido:
- Backend Node.js con Puppeteer (opcional)
- App iOS con SwiftUI
- Scraper de capítulos e imágenes
- Sistema de almacenamiento local
- Testing completo
- Documentación exhaustiva

🧪 Prueba: Capítulo 789 de One Piece descargado exitosamente
  - 21 páginas descargadas
  - 4.68 MB total
  - URLs verificadas y funcionales

🎉 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-04 15:34:18 +01:00