Skip to content

Add Resize a Copy to File Shelf - #109

Merged
niharnm merged 5 commits into
mainfrom
nihar/shelf-image-copy
Sep 9, 2026
Merged

niharnm merged 5 commits into
mainfrom
nihar/shelf-image-copy

Conversation

@niharnm

@niharnm niharnm commented Sep 9, 2026

Copy link
Copy Markdown
Owner

File Shelf can save a smaller copy of one local JPEG or PNG from its per-item Resize a Copy action. The size sheet offers 1,024 and 2,048 pixels on the longest edge, displays exact dimensions, and never enlarges smaller images. The native Save dialog requires a new destination. The original and existing destinations are preserved.

Copies retain format, displayed orientation, color profile and PNG transparency. Source camera, location and descriptive metadata are removed; encoded output is verified before publication. Input and output are bounded, and unsupported, animated, unavailable, dataless and oversized inputs are refused. JPEG output is re-encoded at quality 0.9.

Cancel, Clear, Pause, source removal or expiry, and Quit drain owned work. Failed cleanup retains the Shelf service, items and required file access for explicit recovery. A source with failed image cleanup waits for a matching retry before expiring; other items can still expire. Failed pause and shutdown expose a Shelf recovery view while ordinary controls remain blocked.

A recovered copy's verified saved location stays visible until Done. The sheet captures each rendered button action and request ID, so a previously displayed Cancel or Retry Cleanup action cannot acknowledge a newly recovered receipt. If the public copy was edited or deleted and verification cannot succeed, Finish Without Verification deliberately ends tracking without a saved-file confirmation. That action still requires verified private cleanup and never deletes, restores or republishes public output. Failed private cleanup retains recovery. Automatic sheet dismissal and stale request IDs cannot acknowledge or retry a newer operation.

Publication clones from the held temporary-file descriptor into an exclusive destination. This requires filesystem cloning support; unsupported destinations are refused. Cleanup uses a pinned private directory and retains uncertain entries. The private namespace assumes exclusive entry management and does not contain hostile processes running as the same user. The clone API returns no output descriptor, so subsequent exact-byte and current-path checks do not prove atomic output-inode provenance. Empty system-managed replacement directories can remain after image data is removed.

Validation at 2260ce4894bdc4eb2b4a58e18fc9083047f1d0e8: isolated two-job arm64 Debug build-for-testing passed, then 2,195 tests in 253 suites passed through direct non-hosted xctest. The 37 focused image engine/session tests also passed. The recovered-request regression failed on the earlier head and passes with explicit acknowledgement. No new formatting diagnostics were added; UtilityRuntime and DirectUtilityRuntimeTests retain their existing 35 and 6 diagnostics. Diff checks passed.

Validation for the final two-file action-routing correction at 2db9a4a57efa6577683f2b78428fdd89a67aea67: four focused session tests passed after compiling regular source copies with two jobs. The captured-action regression failed with live-state routing and passed after capture; ordinary Done and Finish Without Verification checks passed. All 17 copied source files match this commit. Strict formatting and diff checks passed, and source review found no actionable issues. The broad suite was not rerun for this correction.

Native Save-dialog focus, keyboard, dismissal, signed-build, external-volume and live provider acceptance remain with the quality task. No native app, UI runner, AX or consent action ran in this task. ImageIO may finish a native operation before cancellation can drain it.

This draft remains stacked on Choose Files, #104, pending quality's retarget and final head review. Scope is Shelf code, tests and its guide, plus the approved Shelf runtime stop binding and recovery-only shell route. GitHub CI targets pull requests into main and will run after retargeting. No merge, release or CI configuration change is included.

@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
semper-vmf1 Ready Ready Preview Sep 9, 2026 7:48pm UTC

@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

Deployment failed for project semper with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/niharnsm-8472s-projects?upgradeToPro=build-rate-limit

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

Deployment failed for project semper-vmf1 with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/niharnsm-8472s-projects?upgradeToPro=build-rate-limit

@niharnm
niharnm changed the base branch from nihar/shelf-choose-files to main September 9, 2026 20:04
@niharnm
niharnm merged commit a575a87 into main Sep 9, 2026
3 checks passed
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.

1 participant