Skip to content

Preset gallery on filee.sh: share presets (phase 1, repo-based, reviewed by CI) #1530

Open

Description

@KnifeLemon

Why

Setting up presets is the hardest part of Filee for many people. A gallery where users share ready-made presets and toolbars, and others install them with one click, would help them. Presets are settings, not code, so sharing them doesn't need a plugin system (see #28).

Phase 1 at a glance

  • A new public repo, KnifeLemon/Filee-Presets, holds one folder per shared preset: preset.json (exported from Filee), meta.json (title, description, author, tags, languages, minimum Filee version) and 1–4 required images in images/ (the first one is the cover shown in lists).
  • Submissions arrive through a "Submit a preset" form in that repo (GitHub sign-in), which CI turns into a pull request. filee.sh's "Upload" button opens that form, so nobody needs to know Git.
  • CI checks every submission (below) and comments the result. A maintainer merges. Merged presets appear on filee.sh and in the app automatically.
  • No server, database or accounts of our own in phase 1.
  • Shared presets and their images are published under CC0 (public domain dedication): anyone can use, change and share them without conditions. The gallery still shows who submitted each preset.

What may be shared

Images (required)

  • Every preset needs at least one image so people can see what it does before installing it, for example the donut slice with the preset's settings, or a before/after of a file it converted. Up to 4 images; the first is the cover in the gallery, the app and link previews.
  • Formats: PNG, JPEG or WebP; at least 640 px on the long edge, at most 2,560 px and 2 MB each. No animated images. CI rejects anything else and explains why.
  • CI strips all metadata (EXIF, GPS, camera and software tags), re-encodes the images and makes the list thumbnails itself.
  • The form asks for an image first and reminds the user not to show real documents, names, faces or file paths, and to upload only images they made themselves (they're published under CC0). Sample files made for the screenshot are fine.

Checks on every submission (GitHub Actions)

  1. Rules (deterministic, decides first): JSON schema, allow-listed fields only, value ranges, at least one image of an allowed type, size and dimensions that decodes cleanly, file sizes, the minimum version is a real release, no duplicate of an existing preset, and the file name / output pattern can't escape the output folder.
  2. Claude review (advisory): a small model reads the title, description, preset and images and answers in a fixed JSON format: spam, offensive or misleading? Does the description match what the preset does? Do the images match, and do they show personal information (names, addresses, faces, document contents, file paths)? Suggested tags. Submission content goes in as data, never as instructions, and the review can only pass or send to the queue, never approve by itself.
  3. Result: rules pass + review clean → label ready, merged in one click. Anything unclear → label needs-review (the queue). Rules fail → CI explains what to fix. Nothing is published before a merge.
  • The API key lives in repo secrets; reviews run only on form submissions or after a maintainer's /review comment, to bound cost.

Likes, comments and rankings

  • Each merged preset gets a GitHub Discussion in Filee-Presets (created by CI). 👍 on it is the like; comments are the discussion. Reporting and moderation use GitHub's tools.
  • filee.sh reads reactions, comments and their dates through the GitHub API at build time (hourly rebuild). No third-party scripts on the site.
  • Downloads: the install link goes through the filee.sh Worker, which adds one to a per-day counter (no IP or user data stored). The app sends nothing else.
  • Rankings: Hot (time-decayed score of likes + downloads), Best for daily / weekly / monthly / yearly / all time, New, and filters by format, tag and language.

In the app

  • A "Preset gallery" window, opened from the Presets page. It contacts filee.sh only while it's open.
  • Lists the presets that work with the user's Filee version, with each one's cover image and the same sort options. The detail view shows all images and what the preset does before installing: target format, main options, which donut it goes on.
  • Install adds new presets and never replaces the user's own (unlike the current Import, which replaces copies with the same id).
  • "Comments" opens the preset's discussion in the browser.

On filee.sh

/presets gallery pages in the site languages, a page per preset, the Upload button, and a short guide: how to export a preset, what is allowed, CC0, and how to ask for removal.

Phase 2 (later, if volume grows)

Direct upload without GitHub: Cloudflare D1 + R2, our own sign-in, a report button, an admin queue page, with the same rules and review.

Open questions

  • Who may submit: anyone with a GitHub account, or new accounts always go to the queue?
  • Should toolbars (whole donut profiles) be shared in phase 1, or presets only?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions