Skip to content

feat(35) Chunked Archive Download#4286

Closed
Copilot wants to merge 8 commits intomasterfrom
copilot/add-download-as-chunk-feature
Closed

feat(35) Chunked Archive Download#4286
Copilot wants to merge 8 commits intomasterfrom
copilot/add-download-as-chunk-feature

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 12, 2026

  • Understand current state
  • Extend DownloadAlbum.vue to support photo downloads (add optional photoIds + fromId props; use PhotoService when in photo mode)
  • AlbumPanel.vue: wire photo toggleDownload to open quality-selector modal instead of calling PhotoService.download() directly
  • Albums.vue: wire album toggleDownload to open DownloadAlbum.vue instead of calling AlbumService.download() directly
  • TagPanel.vue: wire photo toggleDownload to open quality-selector modal
  • Search.vue: wire photo + album toggleDownload to open modal
  • Timeline.vue: wire photo toggleDownload to open modal

Copilot AI and others added 3 commits April 12, 2026 21:14
…e chunk_size, pre-generate filenames, drop I5

Agent-Logs-Url: https://github.com/LycheeOrg/Lychee/sessions/ac58e9d0-1495-4f69-a39f-ea4b48162ffb

Co-authored-by: ildyria <627094+ildyria@users.noreply.github.com>
- Add DB migration with download_archive_chunked (BOOL) and download_archive_chunk_size (INT) config keys
- Add ChunkSlice DTO for representing a photo slice
- Add CHUNK_ATTRIBUTE constant to RequestAttribute
- Extend ZipRequest with chunk validation rule and chunkSlice() method
- Add ZipChunksRequest and ZipChunksController for GET /Zip/chunks endpoint
- Refactor BaseArchive::do() to support optional ChunkSlice for chunked ZIPs
  - Two-pass approach: gather all filenames, then stream only the slice
  - Produces <title>.partN.zip filenames for chunked downloads
- Update AlbumController::getArchive() to pass chunkSlice() to do()
- Add is_download_archive_chunked to InitConfig, lychee.d.ts, and LycheeState
- Add getChunkCount() and downloadChunk() to album-service and photo-service
- Update DownloadAlbum.vue and DownloadPhoto.vue with sequential chunked download
- Add GET /Zip/chunks route to api_v2.php
- Add ZipChunksTest and ZipChunkedDownloadTest with 10 passing tests
- Extend BaseApiTest::download() with extra_params support

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: ildyria <627094+ildyria@users.noreply.github.com>
@ildyria ildyria marked this pull request as ready for review April 14, 2026 15:00
@ildyria ildyria requested a review from a team as a code owner April 14, 2026 15:00
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 14, 2026

Codecov Report

❌ Patch coverage is 77.65363% with 40 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.08%. Comparing base (896f517) to head (984aebb).
⚠️ Report is 10 commits behind head on master.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…or photos and albums

Agent-Logs-Url: https://github.com/LycheeOrg/Lychee/sessions/0295fe2a-24df-4d4e-be88-dcb1e7ed53c9

Co-authored-by: ildyria <627094+ildyria@users.noreply.github.com>
@ildyria ildyria changed the title feat: Implement Feature 035 - Chunked Archive Download feat(35) Chunked Archive Download Apr 15, 2026
@ildyria ildyria closed this Apr 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants