All notable project changes are recorded here.
- Precise compatible re-encoding and sourced, versioned, expiring rules for named sharing platforms remain deferred; the current split runtime exposes Custom fast-keyframe mode only.
- Dragging a converted result out of the Island no longer re-enters the outer Finder drop target, releases output-folder access, or prevents subsequent results from being dragged.
- Image results now decode content thumbnails directly with ImageIO before falling back to Quick Look, avoiding generic JPEG document icons for newly published outputs.
- Thumbnail loading no longer performs a redundant FileManager visibility preflight that could reject a valid security-scoped output URL.
- A one-time, nonactivating first-run Island guide that teaches drag-and-drop and Command-O without blocking Finder.
- Real Settings destinations for the website, latest release, issue reporting, privacy information, and third-party notices.
- A native conversion-result shelf with Quick Look thumbnails, centered small sets, horizontally scrollable large sets, multi-selection, copy, Finder reveal, and direct file dragging.
- Settings now show current conversion capabilities, a live Island opacity preview with reset, a richer branded About page, and compact home-relative output paths.
- Result thumbnails, copy, Finder reveal, and drag-out now retain the saved output folder's security-scoped access until the result shelf closes, instead of incorrectly marking newly converted files as unavailable.
- Multi-file result shelves now stay open until explicitly dismissed so files can be dragged out one after another, and overflowing results use a persistent compact native horizontal scroller instead of a fading overlay.
- Published result URLs are no longer rejected by a second sandbox readability lookup during collection-view reuse, and the result shelf accepts the first drag gesture after Finder becomes active so sequential drag-out remains reliable.
- Mixed folders now expose every non-empty image, video, audio, and unsupported group as visible, selected-state controls instead of hiding media switching inside a compact menu.
- Split-for-Sharing size and duration sliders now use substantially longer tracks, five visible reference ticks, and localized lower/upper unit labels without increasing the Island height.
- Custom Split for Sharing for audited H.264 MP4/MOV inputs with optional AAC audio, using keyframe-aligned stream copy and positive decimal-MB and/or duration limits.
- Shared GUI/Core/CLI split planning, bounded ffprobe inspection, one-to-many typed artifacts, per-segment validation, cancellation, rollback, and whole-directory atomic publication.
- A universal sibling
ffprobe, the generic FFmpeg segment muxer, schema-2 fixture capability auditing, andfileisland split ... --mode fast-keyframe-copy --jsonautomation. - Compact logarithmic sliders with MB/GB and seconds/minutes/hours selectors while retaining precise numeric entry and decimal-SI semantics.
- The real File Island artwork in About plus consistent visual identities for all Settings panes.
- Conversion choices now use a shared compact selected state with accent fill, a stable checkmark, stronger type and border contrast, hover/press feedback, Increase Contrast support, and selected accessibility semantics without changing the Island height.
- Headless file inspection now treats LaunchServices content-type lookup as optional and safely falls back to the filename extension while retaining ordinary-file, symlink, readability, and size checks.
- The split action layout is wider but remains 188 points high, and the centered Settings window now shows every General control without a cramped initial viewport.
- In-app System, English, and Simplified Chinese language choices with immediate updates across Settings, the Island, menu-bar actions, progress, errors, and accessibility labels.
- A String Catalog backed localization layer with persisted language preference and deterministic fallback tests.
- A dedicated audio intent, plan, batch group, GUI/CLI controls, audited FFmpeg engine, real progress, validation, cancellation, and rollback.
- Verified MP3, WAV, AIFF, M4A/AAC, FLAC, OGG/Opus, and AC3 input with M4A, WAV, FLAC, and AIFF output; MP3 output remains intentionally excluded.
- Verified GIF, BMP, and AVIF image input plus AVI, MPEG, MTS/TS, FLV, 3GP, and WMV video input.
- Real fixtures and decoded-output integration coverage for every v0.2 format family, including CLI, cancellation, and rollback paths.
- Bilingual installation/usage guides, bilingual format matrices, CI, and truthful build/release/platform badges.
- Reproducible
0.2.0 (2)universal unsigned release packaging and release notes.
- The menu-bar artwork is slightly larger while retaining the standard 18-point status-item canvas and tested non-clipping margins.
- The bundled LGPL FFmpeg 8.1.2 build now contains only the additional audited demuxers, decoders, audio encoders, and resampler needed by the documented v0.2 matrix.
- Branded transparent AppIcon renditions and an adaptive menu-bar template derived from the approved File Island artwork.
- A complete Simplified Chinese README with bidirectional English/Chinese navigation.
- A Chinese unsigned-DMG and future Developer ID release preparation guide.
- Proprietary source-available terms, privacy and security policies, contribution boundaries, asset provenance, and a commercialization compliance checklist.
- A reproducible v0.1.0 early-access packaging script and complete GitHub Release notes.
- Determinate batch progress now interpolates between real progress samples for smoother file-boundary transitions while Reduce Motion remains immediate.
- The idle menu-bar icon now uses a dedicated sparse palm-island and fishing-rod template instead of collapsing the opaque sunset artwork into a white disk at 18 points.
- Public documentation now uses generic example paths and records the maintainer's original AppIcon authorship confirmation.
- MP3 is currently classified as audio but remains unsupported because audio conversion intents, plans, controls, encoding, and validation are not implemented.
The entries below describe internal milestones that predate the public release
version reset. Their dev- labels are not published Git tags or Releases.
- Observable Settings navigation coverage for General, Conversion, Appearance, and About.
- A release-readiness record separating self-contained runtime capability from public distribution requirements.
- Island expansion now uses a 300 ms strong ease-out settle, with a faster 240 ms collapse and coordinated 200 ms content transition.
- The processing effect is now a restrained lower-edge track: one narrow preparing comet and a thin determinate line driven only by real progress.
- Completion now uses the thin progress geometry and a single-row hierarchy with output size, savings, Reveal, and dismiss actions.
- Settings panes now redraw after clicking the top navigation instead of remaining stuck on General.
- Runtime-derived, top-anchored Island frame transitions with phase-keyed SwiftUI content motion and a restrained material treatment for the floating-pill fallback.
- Real progress-border rendering with a bounded preparing highlight and a fraction-trimmed converting stroke driven only by existing job progress.
- Three-second success visibility with pointer-aware delayed collapse, saved-space copy, and persistent failure presentation.
- Generated eight-frame template animation for the menu-bar item with real-progress-dependent slowdown and stable terminal-state icons.
- Pure motion, progress-visual, timer-lifecycle, state-phase, top-anchor, and success-collapse tests.
- Reduce Motion now disables window movement and continuous decorative animation while preserving short opacity feedback, progress state, and accessible status descriptions.
- The physical-notch surface remains pure black while non-notched displays use a dark translucent material.
- Success no longer disappears while the pointer is over Show in Finder or Clear controls.
- UI-independent
FileIslandCorecomposition shared by the App and command-line target. - Structured
fileislandcommands for capability discovery, recursive inspection, and image/video/folder conversion. - Versioned JSON and JSON Lines output, bounded path-safe diagnostics, and stable success/error/cancellation/partial-skip exit codes.
- Adjacent CLI runtime-resource resolution, a release packaging/signature verification script, and an optional Codex Skill.
- Unit and executable integration coverage for schemas, parsing, Unicode/space paths, recursion, real conversion, cancellation, unreachable targets, unknown formats, resources, and shell-injection resistance.
- App dependency composition now originates from the same Core service boundary used by automation.
- The CLI target explicitly excludes all UI, bookmark, settings, preview, and screen-management sources.
- Recursive ordinary-folder input scanning that distinguishes explicit files from folder roots while skipping hidden items, packages, and symbolic links.
- Validated safe relative paths for preserving nested output structure without
.., absolute-path, symlink, or root-escape traversal. - Structured image, native-video, fallback-video, and unsupported batch groups built through the existing planners and engine router.
- Compact Island group switching with independent image/video configuration and process, skip, and fail-closed counts before one Start action.
- Batch coordinator with bounded sequential group execution, monotonic aggregate progress, current/total file reporting, cancellation, collision-safe publication, and whole-batch rollback.
- Automated coverage for recursive discovery, path safety, grouping, no-op skips, fallback target exclusion, nested publishing, collisions, cancellation, execution failure, publication failure, rollback, and large input sets.
- Folder and heterogeneous drops now preserve safe relative subdirectories under the persisted authorized output folder.
- All executable groups convert into hidden staging directories and publish only after the complete batch succeeds.
- Existing homogeneous explicit-file conversion keeps its established direct workflow.
- Selecting an unsupported batch group no longer lets SwiftUI content resize the fixed Island panel.
- Back from an unsupported batch group now returns to the previously configured image or video group without discarding its parameters.
- Central, pure media conversion matrix shared by capability resolution, planners, engines, presets, and presentation state.
- HEIF and TIFF classification plus native ImageIO input support for HEIC/HEIF/JPEG/PNG/WebP/TIFF.
- Same-format JPEG and PNG processing for resizing, target-size compression, and metadata removal without source overwrite.
- Explicit white-background alpha compositing for JPEG output.
- Native M4V input conversion through the existing H.264/AAC MP4 workflow, including target-size and preset behavior.
- Deterministic WebP, TIFF, alpha-image, same-format, and M4V integration coverage.
- JPEG and PNG are now the truthful output choices for every supported image batch; WebP remains input-only.
- Native MOV/MP4/M4V and fallback MKV/WebM ownership is derived from one fail-closed matrix.
- Folder batch jobs and CLI automation were specified for Tasks 008.2 and 008.3.
- Versioned, strictly validated bundled JSON catalog for built-in conversion presets.
- Windows Compatible, Web Friendly, Image for Web, and Under 100 MB definitions composed from existing conversion capabilities.
- Pure preset applicability and intent resolution with native/fallback target-size filtering.
- Compact image/video preset menu that does not increase the expanded Island height.
- Automated coverage for catalog parsing, invalid schema/data, applicability, intent mapping, selection state, fail-closed loading, and final plans.
- Manual parameter changes now clear the selected preset indicator while preserving the applied editable values.
- MKV/WebM continue to exclude all target-size behavior, including the Under 100 MB preset.
- FFmpeg 8.1.2 fallback conversion from MKV/WebM to high-compatibility H.264 VideoToolbox/AAC MP4.
- Universal arm64/x86_64 bundled executable built from verified official source with a reproducible script and complete LGPL provenance materials.
- Direct, shell-free process runner with machine-readable progress, bounded path-redacted diagnostics, cancellation, rollback, and output validation.
- WebM classification, fallback capability routing, command construction, parsers, process lifecycle, and real-media integration coverage.
- The conversion router now resolves ImageIO first, AVFoundation video second, and FFmpeg fallback last.
- MKV/WebM show Source/1080p/720p resolution ceilings while hiding unsupported target-size controls.
- The menu-bar license action now identifies the bundled FFmpeg component and its license.
- Per-file native video size limits for 100 MB, 50 MB, and custom 5 MB steps.
- Duration-aware bitrate budgeting with AAC reservation and a 95% file-length safety limit.
- Deterministic resolution planning across 2160p, 1080p, 720p, 540p, and 480p tiers.
- Automatic lower-resolution retry, target-size output validation, and retry-safe temporary-file cleanup.
- Automated coverage for planning, batch estimates, real MOV/MP4 limits, unreachable targets, automatic downgrade, and Island target selection.
- Source, 1080p, and 720p remain user-selected resolution ceilings while an optional size target may choose a lower internal tier.
- Video progress remains monotonic across retry attempts and batches.
- Settings and Island copy now describe the implemented video target-size behavior.
- Native AVFoundation MOV/MP4 conversion to high-compatibility H.264/AAC MP4.
- Source, 1080p, and 720p video resolution choices with no upscaling of smaller inputs.
- Real export-session progress, active cancellation, batch rollback, and collision-safe MP4 publishing.
- Post-export validation for playability, codecs, duration, audio presence, display orientation, and non-empty output.
- A conversion-engine router that preserves the existing ImageIO path while adding the native video engine.
- Deterministic real-media fixtures and automated video planning, routing, encoding, progress, cancellation, and rollback coverage.
- The Island now presents type-specific video controls for supported MOV/MP4 selections.
DEVELOPMENT_SPEC.mdnow defines Task 005 boundaries and records Milestone 5 completion.
- Per-file image target presets for 5 MB, 1 MB, and 500 KB.
- Adaptive JPEG encoding with bounded quality search and dimension fallback.
- PNG dimension fallback, output-size enforcement, and post-encode decodability validation.
- Batch target-size estimates and a dedicated error when a target is unreachable.
- Image controls show target-size choices and replace fixed JPEG quality with an adaptive indicator when a target is active.
DEVELOPMENT_SPEC.mdnow defines Task 004 boundaries and records Milestone 4 completion.
- Persistent app-scoped security-scoped bookmark for the default output folder.
- Static menu-bar entry with settings, output, project information, reporting, and quit actions.
- Extensible centered Settings window with General, Conversion, Appearance, and About sections.
- Quick Look source thumbnails and file-type-aware conversion capability routing.
- Runtime-derived physical-notch wing layout for conversion labels and real progress.
- Image action selection is wider and thinner, with source information on the left and relevant parameters on the right.
- Video, audio, mixed, and unsupported selections now show a scoped read-only message instead of image options.
- Output folder selection occurs only on first use or after authorization becomes invalid.
- Native ImageIO conversion for HEIC to JPEG, PNG to JPEG, and JPEG to PNG.
- Longest-edge resizing, three JPEG quality choices, and source-metadata removal.
- Batch progress, cancellation, failure rollback, structured errors, and success actions in the Island.
- Collision-safe output allocation that preserves source files and existing outputs.
- Explicit sandbox-safe output-directory selection and user-selected read/write entitlement.
- Automated coverage for conversion planning, real image encoding, output naming, cancellation, rollback, and Island workflow states.
- Expanded Island content now accommodates image settings while compact notch geometry remains hardware-derived.
DEVELOPMENT_SPEC.mdnow defines Task 003 boundaries and records Milestone 3 completion.
- Pure file-type classification with exact HEIC, JPG/JPEG, PNG, WebP, MOV, MP4, and MKV results.
- Milestone 2 acceptance tests covering the complete required input-format matrix.
- Explicit Task 002 scope and implementation plan for shallow file inspection.
InputFilenow exposes a normalized format label and uses type-first classification with a known-extension fallback.- Broad media classification now checks audio before generic audiovisual content, preventing MP3 from being labeled as video.
- Native macOS application and test targets.
- Non-activating top Island panel with compact and expanded layouts.
- Physical-notch compact alignment derived from
NSScreensafe-area and auxiliary top-area geometry, with proportional side wings that preserve the physical notch height, plus a floating-pill fallback for other displays. - Finder file URL drag-enter, drag-exit, and drop handling.
- Asynchronous shallow file inspection for display name, byte size, and
UTType. - Domain contracts for future conversion planning without a conversion implementation.
- Unit coverage for Island geometry, state-to-layout mapping, file classification, and inspection boundaries.
- Task 001 build, run, and smoke-test documentation.
- Updated
DEVELOPMENT_SPEC.mdto version 0.2 with explicit Task 001 boundaries and the future compact-progress layout contract.
- Kept the expanded drop target stable when a Finder drag reaches the physical top screen edge.
- Reserved the physical notch as an occluded area so expanded icons and text render below it.
- Removed the physical-notch window shadow and added a proportional black lower lip for a future processing-light treatment.