What's Changed
New
- Edit pictures (issue #584). A new slice on the front of the images donut, after Half size, opens the pictures you drop on it in a small window: Convert to (the same format, PNG, JPG, WEBP, AVIF, HEIC once FFmpeg is downloaded, GIF, BMP, TIFF or ICO), Resize (original size, percent, long edge or width, with the first picture's size before and after), Rotate, Flip, Grayscale, and Quality for JPG, WEBP, AVIF and HEIC. Enter converts, Esc closes. The results are ordinary conversions named
{name}_edited, and the window opens with your last choices next time. Kept in the same format, a picture Filee can only read (camera RAW, DICOM …) is written as PNG. The window doesn't offer the new exact width × height or minimum short edge; those are in the preset editor. An updated library gets the slice after Half size when that slice is still on the front and the front has room. - Pixelate / blur. The slice after Edit pictures covers parts of a picture (names, faces, phone numbers in a screenshot) before you share it. Drag on the picture to draw a frame, as many as you need, and move or size them as in the Crop window. Choose Pixelate or Blur and a strength. Enter saves, Esc closes, Delete removes the selected frame, R clears them all, P / B switch the cover, + / − change the strength, and Ctrl+Z / Ctrl+Y undo and redo. With several pictures, Hide & Next and Skip go through them, and the frames carry on to the next picture. Each picture is saved as
{name}_hiddenin its own format (PNG for one Filee can only read). The covered parts can't be brought back from the result: pixelate averages squares and blur averages before it blurs, both at least 2 % of the picture's shorter side, and the small previews a file keeps of the original (EXIF thumbnail, Photoshop and XMP previews) are removed. Animated and multi-page pictures can't be opened. An updated library gets it on the front when there's room, else at the end of the back face. - Merge images (issue #645). Several pictures become one, one under another or side by side: the front and back of an ID card as one JPG to upload. Drop two or more pictures on the slice and the merge order window opens with a layout card: Top to bottom or Side by side, Same width (Same height) so the edges line up, a Gap in pixels, and a Background colour or Transparent (white for JPG). Your choices are kept in the preset. The result is named after the first picture,
{name}_merged, in its format (PNG when Filee can only read it), and the preset's resize, quality and size limit apply to it. A merge over 200 megapixels is refused with its size. The slice is on the back of the images donut before Merge PDF, in GIF's place; GIF stays in the preset list and on the video donut. An updated library gets it in a free slot of that face, else in GIF's place, unless you laid the face out without GIF. - Crop (issue #542, by @cre8ive-marketing). The aspect dial has a 5:4 slice, which is 4:5 (Instagram's portrait size) on an upright picture, and a custom slice after 16:9: type W and H beside the ratio button (
1080×1350shows as 4:5; only the ratio counts, not the pixels). The ratio you pick now carries on to the next pictures of the batch, as large as it fits and centred; R goes back to Free. - Exact size and minimum short edge. The resize list in the preset editor has two more choices:
- Set width and height (issue #576, by @choksi2212), 16 to 16384 px each. Without Keep aspect ratio the picture is stretched to exactly that size; with it, each picture keeps its shape and is scaled up or down to the largest size that fits.
- Set a minimum short edge (issue #652): a picture whose shorter side is under the number (1080 by default) is enlarged in proportion until it reaches it. Larger pictures are left as they are; it never shrinks anything.
- Size limit and ready-made presets (issue #553, by @cre8ive-marketing). Presets have a Size limit (MB) for pictures (next to Quality) and for videos. A picture over it is saved again at a lower quality, then with fewer pixels; a video is encoded again at the bitrate its length allows (with FFmpeg). When it can't fit, the file fails with the sizes instead of breaking the limit. Settings → Presets → New is now a menu: an empty preset, or a copy of a ready-made one: Video for email (MP4, under 18 MB), Video for Discord (under 10 MB), Video for WhatsApp (720p, under 16 MB) and Photo for Instagram (JPG, 1080 px wide). They aren't on a donut; add them in Settings → Donut toolbar.
- Undo (issue #553, by @cre8ive-marketing). A recent conversion on Home has an Undo button that moves its results to the Recycle Bin / Trash. It shows only while the results are as the conversion left them, so a file edited or overwritten since is never moved. With Replace the original, the originals are already in the Recycle Bin / Trash and stay there. Conversions from before 2.2.0, and results that are a folder, have no Undo.
- Ask every time (issue #521, by @cre8ive-marketing). A preset's Save to can be Ask every time. From the donut, Filee then asks for a file name (one result) or a folder (several results, once for the whole batch), starting in the source's folder; Cancel converts nothing. Watch folders and the command line save next to the source, and files dragged from a browser still go to the download folder.
- Profile order (issue #522). Settings → Donut toolbar has Move up / Move down arrows under the profile list (Alt+↑ / Alt+↓ in the list). When two profiles take the same extension, the higher one opens, so a profile of your own with
.jpgcan now come before Images. Reset to default keeps a profile's place. - More formats, 268 in all.
- Split archives (
.001,.7z.001,.zip.001,.tar.001; issue #653, by @Armone0): drop the first part on the archives donut, with the other parts next to it, and 7-Zip joins them to extract or repack what's inside. - Dahua DVR recordings (
.dav; issue #594) to MP4 and the other video and audio formats, with FFmpeg. - Fragmented MP4 (
.m4s; issue #354) that carries its own start, with FFmpeg. A piece of a streamed video that needs a separate init segment stops with a message saying so. - Windows bitmap fonts (
.fon; issue #177, by @SeoJCalive) to TTF, OTF, WOFF, WOFF2 and EOT with their pixel look. A file with several sizes gives a font per size (Name-13px.ttf). Vector.fonand Chinese, Japanese or Korean bitmap fonts are refused with the reason. - Garmin FIT activities (
.fit; issue #451, by @SeoJCalive) from a watch or bike computer, on the geospatial donut: to GPX, KML / KMZ, GeoJSON, Shapefile and CSV (a row per record, with heart rate, cadence, power, speed and distance), and through CSV to XLSX and JSON. The points keep their time and height. An activity without positions converts to the table formats only; other FIT files (courses, settings …) are refused. - AutoHotkey, INI, MikroTik and batch files (
.ahk,.ini,.rsc,.cmd; issues #536, #660, #661) and SQL (.sql; issue #607, by @adnan-bhaldar) become text like the other scripts: read, never run.
Your donuts learn the new extensions, unless one of your own donuts already takes them.
- Split archives (
- CAD drawings in black and white (issue #411). Presets that make a PDF, SVG or picture have a CAD drawing card with Colours: As drawn (as before), Black and white, like a monochrome plot, or Grayscale. In black and white every line and text is black, and filled areas become the grey of their brightness, so a light fill doesn't turn into a black block. Grayscale darkens light lines, such as yellow, enough to read. PDF and SVG stay vector.
- What a preset takes (issue #548, by @SeoJCalive). In Settings → Donut toolbar, hovering a chip under Available presets shows what it makes and which formats it takes, by kind; hold Shift for the whole list.
- German (by @deinzooshop). Filee and Setup speak German, and pick it when Windows, macOS or Linux is set to German (Germany, Austria, Switzerland …). A language picked in Settings stays as it is.
Improved
- The window keeps its place (issue #586, by @cre8ive-marketing). The main window opens at the size and position it had when it closed, maximized or not, also after closing to the tray, quitting or signing out. It always fits the screen, and opens centred when the screen it was on is gone.
- Keyboard and screen readers (issue #524, by @cre8ive-marketing). Icon buttons and the fields of the preset editor and the settings pages have names a screen reader reads. The chips under Available presets in Settings → Donut toolbar can be reached with Tab: Enter adds one to the donut, Shift+F10 or the menu key edits it. Plain buttons (Browse…, Revert …) are drawn on the card's colour with a border, so they no longer look like a disabled box.
- File Pilot (issue #633). With the default scope, File managers and desktop, a Ctrl + drag out of File Pilot opens the donut, as in Explorer (Windows).
- Lists and dropdowns (by @adnan-bhaldar). The highlight of a selected or hovered row stops before the scrollbar, and dropdown rows stay inside their rounded corners.
- European Portuguese (by @Blackspirits) reads more naturally in a few places.
Fixed
- Chinese and Japanese text recognized with OCR had a space between most words ("本 书 是 作者") in the DOCX, TXT or other text made from it (issue #691). The words of Chinese or Japanese text read from a PDF now join without a space; spaces next to Latin letters and digits stay, and Korean keeps its spaces.
- A long calibre conversion (a 300 MB CHM → PDF) was stopped after 10 minutes (issue #651). calibre now runs as long as it shows progress, and is stopped only after 10 minutes without any, with a message saying so.
- On Windows, the mouse could stutter or freeze while Filee converted, and Filee could crash when quitting (issues #511, #528, by @cre8ive-marketing). The gesture hook now answers first, and every engine runs at a lower priority.
- LibreOffice and calibre failed to install when a folder on the way, such as
AppData\Local, was moved to another drive through a link (Windows Installer error 1620; issue #527, by @cre8ive-marketing). When Windows Installer still refuses, or another installation is running, the Engines card says why. - Black-and-white and 16-bit pictures (scans, fax TIFFs, 1-bit PNGs) failed to go into a PDF with "Unsupported image format", also as comic pages and in Apple Vision OCR (issue #605).
- Uncompressed DDS textures stored as R, G, B, A, common in games, came out with red and blue swapped (issue #621, by @SeoJCalive).
- Half size, Grayscale, Trim transparent borders and Compress image were offered for MP3, ZIP and other files that aren't pictures (issue #565, by @SeoJCalive). They're greyed out with "Works on images only"; in a mixed selection the pictures count.
- A picture resized small and saved as ICO held larger sizes blown up from it. It now holds that size and the smaller ones.
- A Setup file cut short by an unfinished download said "Filee is not installed in …" as if it were the uninstaller (issue #599). It now says the file is incomplete and to download it again from filee.sh.
- On Windows, apps that cover the desktop with their own icon layer hid the desktop from Filee, so the drag gesture and the selection shortcut did nothing there (by @Cafunw). Windows that belong to the desktop now count as the desktop.
- On macOS, a Finder alias dropped on the donut or selected in Finder was refused; Filee converts the file it points to, as it does with Windows shortcuts (by @mendax-iitm).
- On macOS, the donut didn't show when dragging over a full-screen window, such as full-screen Finder (issue #251, by @mendax-iitm).
- On Linux, Filee crashed at start with
FILEE_USE_WAYLAND=1(native Wayland) (by @mahaveergurjar). - On KDE Plasma with Wayland, the donut opened from the file manager's menu could appear on another Activity or virtual desktop and switch to it (issue #557, by @cre8ive-marketing). After updating Filee, upgrade the KWin script as installer/linux/INSTALL.txt says (
--upgradeinstead of--install), then turn "Filee donut" off and on again in System Settings → Window Management → KWin Scripts. - On Linux, the flip arrow in the donut's hub hint showed as a box. The donut draws it now, the same on every system (issue #554, by @cre8ive-marketing).
- iCalendar: an event given by a start and a duration that crossed a daylight saving change ended an hour off, and a calendar whose time zones have offsets in seconds failed to convert (by @Stamina9).
- vCard: a name with a long run of combining accents was written with a line over the 75-byte limit (by @Stamina9).
- In Watch folders, a rule that was off read "On Off" beside its switch (issue #524, by @cre8ive-marketing).
filee watch --helpgave 2 seconds as the default settle time everywhere; on Linux and macOS it's 5 (by @Blackspirits).
Pull requests
- Read Garmin FIT activities into the geospatial formats (#451) by @SeoJCalive in #530
- Read self-contained .m4s fragmented MP4 videos (#354) by @KnifeLemon in #603
- feat(ui): add and edit donut toolbar palette chips with the keyboard (#524) by @cre8ive-marketing in #538
- feat(crop): 5:4 slice on the aspect dial, 4:5 on upright pictures for Instagram (#542) by @cre8ive-marketing in #543
- feat(crop): the picked ratio carries on through a batch (#542) by @cre8ive-marketing in #581
- feat(presets): save to Ask every time (#521) by @cre8ive-marketing in #572
- feat(presets): a size limit, and ready-made presets for email, Discord, WhatsApp and Instagram (#553) by @cre8ive-marketing in #567
- feat(home): undo a conversion, its results go to the Recycle Bin / Trash (#553) by @cre8ive-marketing in #564
- feat(crop): a custom W:H slice on the aspect dial (#542) by @cre8ive-marketing in #597
- feat(fonts): read bitmap .fon and convert each size to TTF, OTF, WOFF, WOFF2 and EOT by @SeoJCalive in #561
- feat(toolbar): show what a palette chip takes in its hover tooltip by @SeoJCalive in #628
- feat(text): read .ahk, .ini, .rsc and .cmd files as plain text by @KnifeLemon in #663
- feat(media): read Dahua DVR .dav recordings through FFmpeg by @KnifeLemon in #665
- feat(toolbar): move a donut profile up or down the list (#522) by @KnifeLemon in #668
- feat(cad): draw DWG and DXF in black and white or grayscale by @KnifeLemon in #674
- feat(hwp): extend the document model for rendering fidelity by @KnifeLemon in #678
- feat(presets): a custom resize, free width and height with an aspect lock (#576) by @choksi2212 in #593
- feat(hwp): resource limits and fuzzing for the document readers by @KnifeLemon in #686
- feat(presets): a minimum short edge resize that only enlarges (#652) by @KnifeLemon in #687
- feat(presets): Edit pictures, size, format and turn chosen each time (#584) by @KnifeLemon in #617
- feat(images): pixelate or blur parts of a picture before sharing it by @KnifeLemon in #684
- feat(images): Merge images, pictures one under another or side by side (#645) by @KnifeLemon in #682
- feat(archives): unpack split multi-part archives (.001) (#653) by @Armone0 in #676
- fix: Donut flip tests: check T5's colours off the label, once the ring is open (#533) by @SeoJCalive in #546
- fix(ui): name icon buttons and fields for screen readers; Watch folders switch no longer reads "On" when off (#524) by @cre8ive-marketing in #537
- fix(cli): show the platform's default watch settle time by @Blackspirits in #563
- fix(ical): honor elapsed duration across daylight saving changes by @Stamina9 in #566
- fix(ui): plain buttons are the surface with a border, unlike a disabled box (#524) by @cre8ive-marketing in #570
- fix(macos): convert the file a Finder alias points to by @mendax-iitm in #551
- fix(presets): offer same-format picture edits for images only (#565) by @SeoJCalive in #604
- Setup: say an unfinished download is incomplete instead of uninstalling by @KnifeLemon in #602
- fix(pdf): put black-and-white and 16-bit pictures into PDFs (#605) by @KnifeLemon in #612
- fix(ui): keep list and dropdown highlights clear of the scrollbar and inside rounded corners by @adnan-bhaldar in #577
- fix(vcard): fold long combining sequences within 75 octets by @Stamina9 in #608
- fix(macos): show the donut over full-screen windows (#251) by @mendax-iitm in #629
- fix(dds): swap red and blue back where ImageMagick reads them swapped (#621) by @SeoJCalive in #627
- fix(linux): initialize Skia and HarfBuzz with native Wayland backend by @mahaveergurjar in #654
- fix(i18n): publish language strings in one resource change, App tests ~10x faster in CI (#540) by @SeoJCalive in #636
- fix: keep the cursor moving while Filee converts or quits (#511, #528) by @cre8ive-marketing in #638
- fix(windows): treat windows owned by the desktop as the desktop by @Cafunw in #559
- fix: give msiexec real paths, so MSI engines install through user junctions (#527) by @cre8ive-marketing in #639
- fix: remember the main window's size and position after a restart (#586) by @cre8ive-marketing in #640
- fix(calibre): stop ebook-convert only when it stalls, not after 10 minutes by @KnifeLemon in #664
- fix(windows): count File Pilot as a file manager for gestures (#633) by @KnifeLemon in #694
- fix(ical): preserve second-precision time zone offsets by @Stamina9 in #697
- fix(pdf): no space between Chinese or Japanese words of an OCR layer (#691) by @KnifeLemon in #703
- docs(theme): add reusable theme.json palette recipes by @Blackspirits in #619
- docs(linux): turn the KWin script off and on after upgrading it (#557) by @KnifeLemon in #657
- docs: add Turkish README (README.tr.md) by @Armone0 in #673
- docs: Microsoft Store badge in the READMEs (#222) by @KnifeLemon in #700
- CI: give the portable jobs 180 minutes by @KnifeLemon in #547
- ci: cancel older main runs when a newer push arrives by @adnan-bhaldar in #579
- Releases: copy the Windows files to dl.filee.sh too by @KnifeLemon in #598
- KWin script: open the donut on the Activity and desktop in use (#557) by @cre8ive-marketing in #610
- i18n(pt-PT): add Portuguese README and polish wording by @Blackspirits in #550
- i18n: add German translation and locale detection by @deinzooshop in #541
- Donut: draw the flip arrow in the hub hint, not a character (#554) by @cre8ive-marketing in #609
- Add .sql as a plain text input format by @adnan-bhaldar in #611
- Revert #686 and #678: Project 4 work moves to the builtin-engines branch by @KnifeLemon in #688
- Release 2.2.0: version and changelog by @KnifeLemon in #704
New Contributors
- @deinzooshop made their first contribution in #541
- @mendax-iitm made their first contribution in #551
- @Cafunw made their first contribution in #559
- @choksi2212 made their first contribution in #593
- @Armone0 made their first contribution in #673
Full Changelog: v2.1.0...v2.2.0