Skip to content

Preset gallery window and filee presets check - #1537

Open
KnifeLemon wants to merge 1 commit into
mainfrom
feat/preset-gallery
Open

KnifeLemon wants to merge 1 commit into
mainfrom
feat/preset-gallery

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

The first ten presets of the gallery (#1530 in KnifeLemon/Filee), for people who find setting up presets hard. Each one is a useful variant, not a copy of a built-in preset, and uses only options Filee has (nothing from the not-shareable list).

Preset What it does
photos-for-social-media JPG, long edge 2048 px, quality 85, under 4 MB, location/camera metadata removed, colour profile kept
instagram-4-5-white-frame Add background tool with a white 4:5 portrait canvas, so landscape photos fit a feed post uncropped
webp-for-websites WebP quality 80, long edge at most 1920 px, metadata removed
draft-pdf-for-review Documents or PDFs to PDF with a faint DRAFT watermark and page numbers
merge-into-a4-pdf-for-printing PDFs, pictures and documents merged into one PDF, every page fitted to A4, bookmarks and page numbers
smallest-pdf-for-email PDF compression at screen level (72 dpi pictures), document information removed, Ghostscript tried too, original kept if not smaller
scans-to-one-searchable-pdf Photos or scans of pages into one A4 PDF with an OCR text layer (English; language editable)
small-gif-for-chat Video to a small looping GIF (Small quality: 320 px wide, 10 fps, 128 colours)
vertical-video-for-reels-and-shorts Centred 9:16 crop to MP4 (H.264/AAC), at most 1920 px tall
podcast-voice-mp3 Mono MP3 at 96 kbit/s for spoken audio

How they were made:

  • preset.json: built in code with Filee.Core and written with UserDataStore.Export (the same code as Settings > General > Export, Preset.ForSharing()), from feat/preset-gallery.
  • Images: rendered by the headless app (Avalonia, the app's own views and fonts). Image 1 (cover) is a labelled before/after of a sample file made up in code (drawn landscapes, placeholder-text pages, FFmpeg test signals), converted by the real pipeline (filee convert --preset ...). Image 2 is the preset in the app's preset editor (or the Add background window). No real photos, people, documents or file paths. Re-encoded to WebP with thumbnails by this repository's tools/images.py.
  • meta.json: kinds, formats and minVersion from filee presets check --json; created/updated left out and discussion null as CONTRIBUTING.md asks.

Checks: every folder passes filee presets check <folder> --json and tools/check.py when run as a single-folder pull request. This pull request adds ten folders at once, so the PR-level scope rule ("one pull request may add or change one preset only") is expected to fail here; it is the seeding pull request for an empty gallery. CI may also not run fully until the bot app and secrets are set up (CONTRIBUTING.md > Maintainers).

🤖 Generated with Claude Code

Part B of the preset gallery (#1530).

- Filee.Core/Gallery: an explicit allow-list of the fields a shared preset.json
  may have (unknown fields fail, fields that carry the sharer's folders,
  passwords, picture paths, clip music, metadata edits or the AI model may only
  be empty), the bundle and folder checks (pictures by header, sizes, no
  animation), index.json reading with relative paths and the counted download
  link, and an installer that verifies SHA-256 and the rules, then adds new
  presets and a donut under new ids without replacing anything.
- filee presets check <folder> [--json]: what the gallery's CI runs, with
  SkiaSharp decoding every picture; codes, messages and derived meta fields.
- App: "Preset gallery" window from the Presets page (Hot/Best/New, filters,
  search, details, Install, Comments), contacting filee.sh only while open,
  through the proxy setting with time and size limits and a picture cache.
  Texts in all 23 languages, labels matching filee.sh.
- Export writes settingsSchema into bundles.

Refs #1530

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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