Skip to content

fix(archive): keep Mark of the Web on a pack-into-one archive - #1232

Merged
KnifeLemon merged 1 commit into
mainfrom
claude/elegant-einstein-036e77
Nov 6, 2026
Merged

KnifeLemon merged 1 commit into
mainfrom
claude/elegant-einstein-036e77

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

What does this change?

"One ZIP" and the other pack-into-one presets never passed on Mark of the Web, so an archive built from downloaded files came out unmarked. Converted files already keep the mark (RunFileAsync); RunCombinedAsync didn't. Now, if any packed file has a mark, the archive gets it.

  • Companion files (a Shapefile's .shx, .dbf, ...) and the files inside a folder count as packed files.
  • Links inside a folder are skipped (AttributesToSkip = FileAttributes.ReparsePoint, as in ArchiveExtractor.PassOnMark): the packer leaves them out, so what they point at isn't in the archive.
  • With several different marks, the first one found is written.
  • A folder that can't be read counts as unmarked and doesn't fail the pack. A drive without NTFS streams still gets no mark and doesn't fail.

Type of change

  • Bug fix
  • New feature or improvement
  • New format or engine
  • Translation
  • Documentation
  • Build, CI or dependencies

How was it tested?

  • dotnet format --verify-no-changes (changed files)
  • dotnet test: Filee.Core.Tests in full and ArchiveTests in Filee.Engines.Tests, on Windows
  • Tried it in the app (what you converted or clicked, and on which OS):

New tests in JobQueueTests, next to An_output_converted_from_a_file_from_the_internet_keeps_its_mark_of_the_web, using FakeCombiner:

  • An_archive_packed_from_a_file_from_the_internet_has_its_mark_of_the_web: fails without the fix. Covers a marked file that isn't first, a marked file deep in a folder, and no mark at all.
  • A_link_in_a_folder_being_packed_gives_the_archive_no_mark_of_the_web: a junction to a marked file outside the folder. Fails when links are followed.

Checklist

  • New UI strings are in all src/Filee.App/Assets/i18n/*.json files (none)
  • New third-party code or binaries are listed in THIRD-PARTY-NOTICES.md (none)
  • The PR does one thing (unrelated changes go in a separate PR)

🤖 Generated with Claude Code

"One ZIP" and the other pack-into-one presets go through RunCombinedAsync,
which never passed the mark on, so an archive built from downloaded files
came out unmarked. If any packed file has a mark, the archive now gets it.

Files inside a folder count too. Links inside a folder are skipped, as the
packer leaves them out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the bug Something isn't working label Nov 6, 2026
@KnifeLemon
KnifeLemon merged commit 5e9f853 into main Nov 6, 2026
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant