What's Changed
Security
Fixes for two advisories, GHSA-gw2f-hq9g-3jc2 (reported by @indhuchocky-bit) and GHSA-hfq7-46jj-38qw (reported by @jojofox0815 and @indhuchocky-bit). Thank you both. Please update.
- Updates: from this version on, the updater checks a signature over the release's checksums with a key kept in Filee, and checks the publisher of the installer it downloaded.
- Pictures and links in documents: HTML, Markdown and Pandoc documents only take pictures and style sheets from their own folder, and network shares are refused. LibreOffice gets a copy without outside links, and its macro and link settings are fixed for each conversion. If a document has macros, you get a notice that they weren't run.
- Links dropped from a browser: downloads refuse this computer and the local network on every redirect. A new setting, Allow links to this computer and the local network, lifts this if you need it.
- Downloaded files: Mark of the Web now stays on downloads, unpacked files and converted results, and on an archive packed from marked files ("One ZIP" and the other pack-into-one presets).
- Files built to do damage: documents, e-books and archives that unpack to far too much, or are nested far too deep, are refused with a clear message instead of filling the disk or memory or ending Filee.
- Links on disk: watch folders don't follow or convert symbolic links and junctions, and folder deletes and merges don't write through them.
New tools and features
- Upscale (pictures, palette; by @rohitLovesKrishna): enlarge pictures 2× to 4× with AI models that run on this computer, never online. Choose a model and a scale, and see the new size before you start. It needs the Upscayl engine from Settings → Engines and a Vulkan graphics device, and models download when you first pick them.
- Create ISO images (by @Feraris20): make an ISO (ISO 9660 with Joliet, or plain ISO 9660) from a folder or an archive. Folders can also become ZIP, 7Z, TAR, TAR.GZ, TAR.BZ2 or TAR.XZ. ISO isn't on the Archives donut by default; add it from the palette. If an ISO fails or is cancelled, a file already at that name is left as it was.
- Metadata (palette, Edit tab; by @lightscape-jm): see every metadata field of a picture, PDF, video or sound file, grouped by where it lives with the location first, and choose what to keep. The Remove metadata preset stays for removing it all in one go. Very large metadata is summed up instead of read whole, so a small file can't freeze the window.
- Merge PDF keeps the document's structure (by @SeoJCalive): bookmarks, links inside the document, named destinations and form fields come through, each pointing at its page in the merged file.
- OCR in several languages: a preset's OCR can read more than one language at once, for scans that mix them (Simplified Chinese and English, for example).
- Subtitles and transcripts to TXT: subtitle files (SRT, ASS, WebVTT, SAMI, LRC, TTML and more) convert to plain text with one line per cue and no times. With Generate subtitles (Whisper) turned on, a TXT preset turns speech in a video or sound file into text.
- Animated AVIF: animated GIF, WebP, APNG and MNG keep every frame in AVIF, and an animated AVIF converts as an animation. With the FFmpeg engine installed, writing is much faster and can be cancelled.
- Show output format (Settings → Donut toolbar → Appearance; by @lightscape-jm): turn it off to show only the slice names. It's on by default.
- New languages: বাংলা (Bengali, by @fluentmoheshwar) and فارسی (Persian, by @nimazerobit).
- Engines page (by @adnan-bhaldar): dragging an engine card is animated, with an outlined slot and a smaller copy that follows the pointer, and only the drag handle shows the move cursor. It follows Reduce animations.
- Settings → General (by @adnan-bhaldar): the Settings folder card says what Filee keeps there, and each button of the Presets and toolbars card has an icon and a short description. Clear history and Clear on the Triggers page use the danger style.
- Add background (pictures, palette; by @lightscape-jm): set pictures on a gradient, a colour or a picture of your own, with padding, rounded corners, a soft shadow and a canvas shape.
- File list on the Home page (by @arielsrossi): files dropped on the Home page collect in a list with previews. Drag them or use the keyboard to set their order, then choose an action. A merge started from the list keeps its order.
- Split PDF asks for the pages: drop a PDF and type a range like
1-3, 8, 12-, then choose one PDF or one file per page. Other PDF presets can turn on "Ask every time" too, and the command line has--pages. - Group slices have a mark (by @lightscape-jm): a small chevron at the outer edge shows which slices open up to more actions.
- New formats: signed
.p7mfiles are read as the file inside them, FLIC animations (.flc,.fli) as video, and DBML database schemas as text. Krita's.kra~backups open like.kra. Property lists (.plist, XML and binary; by @senthan-07) convert to TXT, JSON, YAML, TOML, XML and CSV. Java source files (.java; by @adnan-bhaldar) convert like other code files, and.jifopens as JPEG (by @Stamina9). - Command line (by @yavuzmeteafsar):
convert --jsonstreams progress and file events to stderr, andwatchhas--json. A wrapper that reads stdout to the end before stderr can stall on a long conversion;--quietavoids that. - About page (by @adnan-bhaldar): the version is now an accent-coloured pill.
Word, HWPX and PDF
- Word to PDF: a header taller than the room above the body is no longer left out, and a floating picture in a header doesn't take the rest of the header with it.
- Word to HWPX: the header of a continuous section and a first-page-only header are kept. Cropped pictures stay cropped, and lines around paragraphs and line spacing follow the document.
- Equations: numbers sit at the right margin, and long equations break over several lines.
- Word to PDF through LibreOffice: a footnote's number stays inside its brackets.
- HWPX: spaces are as wide as the font makes them, and a section that restarts its page numbers restarts them in the PDF.
- Spreadsheet PDFs: pages are redrawn when characters would have been left out.
- HWP and HWPX to PDF: a picture alone in a header or footer paragraph is drawn, and the degree sign gets its full width in Chinese fonts.
- PDF reading: right-to-left text keeps its brackets and letter forms. Pictures inside a table stay in their cell when converting to HWPX or DOCX.
- Markdown: block quotes have a bar and a background. Without Pandoc or LibreOffice, English inside Chinese or Japanese text is set in a Latin font, so its letters are spaced right in the PDF (by @SeoJCalive).
- Word lists (by @Marouane-elfadli): paragraphs of the same list style no longer keep the gap Word takes out between them, so lists are as long as in Word.
- HTML (by @Marouane-elfadli): colours and backgrounds from
<style>rules are used, not only fromstyle="", and an@importno longer makes the next rule get lost. Code coloured for a dark theme turns dark where it would be too pale to read. - Damaged PDFs (by @Marouane-elfadli, issue #1175): PDFs with broken internal structure are repaired before converting, merging or splitting.
- OCR: small pictures such as screenshots are read from an enlarged copy, so small text comes through.
Fixes
- Transparent video to WebM (issue #1198): a ProRes 4444 or QuickTime Animation video, an APNG or a GIF with a transparent background keeps its transparency in WebM (VP9). Other videos are encoded as before.
- Cyrillic, Greek and Central European text to PDF (issue #1262): a TXT, Markdown, HTML or DOCX file with Russian, Greek, Polish, Turkish or Vietnamese text no longer comes out with its letters stuck together when LibreOffice isn't installed. Each letter now gets the width its font really gives it.
- Calibre: installing or updating the engine no longer fails on its read-only files. Folders left behind by failed 2.3.0 installs (
~and six characters, about 660 MB each, in the engines folder) can be deleted by hand. - Translate (by @SeoJCalive): the preset now reaches libraries upgraded from 2.2 or earlier, in Settings → Presets and in the Donut toolbar's Available presets. No donut gets a slot.
- Cut a clip (by @SeoJCalive): a clip with music plays its preview again.
- Accent colours: text on an accent fill now takes the colour with the better contrast, in every control and state. The default lavender and most accents now have dark text on buttons and checks.
- Donut toolbar (by @lightscape-jm): changing profile or resetting while holding a slice can no longer remove or move the wrong preset.
- Selecting many files in Explorer: the launches of one selection make one donut, and none of them are lost, also on macOS and Linux. On macOS and Linux one error can no longer lose the launches waiting in line or stop Filee from taking new ones (by @lightscape-jm).
- Error messages: a failed conversion's notice shows the whole message, which you can select, copy and scroll.
- Donut toolbar editor (by @lightscape-jm): a drag whose release got lost ends instead of staying on screen and acting on the next press.
- Points to CSV (by @mertkayacs): an attribute named like a geometry column (
wkt,shape, …) no longer takes over the points' position when the CSV is read back. - Logs are kept for 14 days instead of 7, so a log is still there when you report a problem a week later.
- Theme (by @adnan-bhaldar): the number box's up and down buttons have a rounded hover, and the toggle switch track stays round at any Softness.
- Windows on ARM64: Filee draws with the graphics card by default, so it scrolls smoothly. Set
FILEE_RENDERING=autoto go back to the old choice. - Watch folders: a file is converted once its data has arrived, and a file that failed gets one more try.
- Uninstaller: it reaches the signed-in user's Filee and never reports success with Filee left behind.
- Fonts: Han text is drawn in the font of the interface language, and Filee uses less memory while it waits in the tray, because fonts now load when needed.
- macOS: a move after the release no longer starts a second drag. The Ask every time save dialog opens on the full-screen Space you're in instead of switching to the desktop, and Option+drag no longer ends Show Desktop (by @AzrielTheHellrazor).
- Linux: Fedora 45 and GNOME 51 are supported (by @yanscholze). Hyprland window rules for the donut come with the package, and INSTALL.txt shows how to turn them on (by @manish0467).
Pull requests
- feat(tools): Add background tool by @lightscape-jm in #1081
- feat: control the order of many files before converting or merging by @arielsrossi in #928
- feat(about): show the version as an accent-coloured pill by @adnan-bhaldar in #1104
- feat(cli): add JSON event output by @yavuzmeteafsar in #1110
- feat(donut): mark group slices with an outward chevron by @lightscape-jm in #1111
- feat(general): describe each button of the Presets and toolbars card by @adnan-bhaldar in #1212
- feat(text): read .java source files as plain text by @adnan-bhaldar in #1225
- feat(tools): Metadata tool by @lightscape-jm in #1108
- feat(general): describe the Settings folder card by @adnan-bhaldar in #1223
- feat(ocr): let a preset read several languages by @KnifeLemon in #1229
- feat(image): write animated AVIF with FFmpeg when it is there by @KnifeLemon in #1268
- feat(pdf): keep bookmarks, links and form fields when merging PDFs by @SeoJCalive in #1227
- feat(donut): a switch to hide the output format under slice names by @lightscape-jm in #1243
- feat(engines): offline AI image upscaling and super-resolution up to 4x (NCNN) by @rohitLovesKrishna in #1064
- feat(iso): create ISO images from folders and archives by @Feraris20 in #1195
- feat(linux): bundle Hyprland window rules and update documentation by @manish0467 in #1273
- feat(engines): animate drag and drop in the engine list by @adnan-bhaldar in #1305
- feat(data): read property lists (.plist) as text, JSON, YAML and more (#1256) by @senthan-07 in #1306
- fix: support Fedora 45 and GNOME 51 by @yanscholze in #1088
- fix(macos): a move after the release no longer starts a second drag gesture by @KnifeLemon in #1119
- fix(cli): watch --json --quiet prints no events by @KnifeLemon in #1116
- fix(donut): keep the group mark's shape between frames by @lightscape-jm in #1162
- fix(clip): show the preview's pictures when the clip has music by @SeoJCalive in #1163
- fix(toolbar): a held slice can't act on another donut's slices by @lightscape-jm in #1166
- fix(presets): add Translate to libraries upgraded from 2.2 or earlier by @SeoJCalive in #1168
- fix(images): recognise JIF as a JPEG alias by @Stamina9 in #1185
- fix(toolbar): end a drag whose release was lost, or whose capture was by @lightscape-jm in #1192
- fix(theme): keep the toggle switch track round at any Softness by @adnan-bhaldar in #1215
- fix(theme): round the hover of the number box's up and down buttons by @adnan-bhaldar in #1214
- fix(single-instance): keep queued launches and the listener alive through errors by @lightscape-jm in #1201
- fix(hwp): honor contextual spacing between same-style paragraphs in DOCX conversion (#1194) by @Marouane-elfadli in #1197
- fix(geo): keep a wkt-named attribute from taking over the csv geometry by @mertkayacs in #1208
- fix(archive): keep Mark of the Web on a pack-into-one archive by @KnifeLemon in #1232
- fix(macos): prevent exiting Show Desktop mode during Option+Drag by @AzrielTheHellrazor in #1155
- fix(pdf): repair conversion, merge and split handling (#1175) by @Marouane-elfadli in #1181
- fix(image): keep animation frames in AVIF, both ways by @KnifeLemon in #1230
- fix(tests): write preset and history test JSON in camelCase by @KnifeLemon in #1265
- fix(engines): show the grab cursor only on the drag handle by @adnan-bhaldar in #1251
- fix(metadata): limit what a read takes in and what the window lays out by @lightscape-jm in #1242
- fix(upscale): read an animated AVIF as a sequence by @KnifeLemon in #1280
- fix(engines): use the move cursor on the drag handle by @adnan-bhaldar in #1275
- fix(rhwp): Markdown → PDF: set English in Chinese and Japanese text in a Latin font rhwp can measure by @SeoJCalive in #1284
- fix(macos): show save location dialog on active full-screen Space (#596) by @AzrielTheHellrazor in #1281
- fix(rhwp): Cyrillic, Greek and extended Latin letters stuck together in PDF by @Marouane-elfadli in #1278
- fix(html): apply colours from <style> rules and keep the rule after @import by @Marouane-elfadli in #1257
- fix(html): turn dark-theme code token colours dark on the code shade by @KnifeLemon in #1300
- fix(windows): use the GPU by default on Windows on ARM64 by @KnifeLemon in #1301
- fix(logs): keep logs for 14 days instead of 7 by @KnifeLemon in #1302
- fix(ui): use the danger style on the clear history and clear key buttons by @adnan-bhaldar in #1308
- README: install with WinGet by @KnifeLemon in #1103
- docs: tidy the GNOME 51 validation notes by @KnifeLemon in #1117
- docs: move the translated READMEs into docs/readme by @SeoJCalive in #1248
- docs: rhwp letters beyond Latin-1 no longer overlap by @KnifeLemon in #1299
- Format request form: ask who works with the files by @KnifeLemon in #1083
- CI: stop and retry zig cc when it hangs under ARM64 emulation by @KnifeLemon in #1105
- ci: give xvfb-run a minute to end after the smoke test's --quit by @KnifeLemon in #1146
- ci: retry engine downloads that fail for a moment by @KnifeLemon in #1276
- Read DBML database schemas as text (#854) by @KnifeLemon in #1094
- Ask every time for the pages of Split PDF (#981) by @KnifeLemon in #1102
- OCR: read small pictures from an enlarged copy by @KnifeLemon in #1089
- Read Krita's .kra~ backup files (#1077) by @KnifeLemon in #1101
- PDF → HWPX / DOCX: pictures inside a table stay in their cell (#1082) by @KnifeLemon in #1090
- Read FLIC animations (.flc, .fli) as video (#940) by @KnifeLemon in #1099
- Read signed .p7m files as the file inside them by @KnifeLemon in #1096
- Engines: updating calibre no longer fails on its read-only files by @KnifeLemon in #1124
- Uninstall: reach the signed-in user's Filee, and never report success with Filee left behind by @KnifeLemon in #1120
- PDF reader: right-to-left brackets, presentation forms and text drawn forward by @KnifeLemon in #1129
- Word to PDF through LibreOffice: keep a footnote's number inside its brackets by @KnifeLemon in #1130
- Draw Markdown block quotes with a bar and a background by @KnifeLemon in #1133
- Word to HWPX: line spacing from the height of the paragraph's font by @KnifeLemon in #1137
- Word to HWPX: a cropped picture stays cropped by @KnifeLemon in #1139
- HWPX: a section that restarts its page numbers restarts them in rhwp by @KnifeLemon in #1140
- rhwp: a picture alone in a header or footer paragraph is drawn by @KnifeLemon in #1141
- rhwp: the degree sign gets its full width in Chinese fonts by @KnifeLemon in #1142
- HWPX: spaces as wide as the font makes them by @KnifeLemon in #1136
- Find complex-script text the scan missed before drawing it with rhwp by @KnifeLemon in #1131
- Word equations: the number at the right margin, long ones on several lines by @KnifeLemon in #1143
- Word to HWPX: lines around a paragraph by @KnifeLemon in #1138
- Draw Han in the UI language's own font by @KnifeLemon in #1121
- Spreadsheet PDFs: redraw when rhwp's direct backend leaves characters out by @KnifeLemon in #1144
- Watch folders: wait for a file's data, and retry a file that failed by @KnifeLemon in #1127
- Reduce idle memory: fonts on demand, trim after a tray start, malloc trim on Linux by @KnifeLemon in #1132
- Make the launches of one Explorer selection one donut by @KnifeLemon in #1128
- Pick the text on an accent fill by its contrast, in every control and state by @KnifeLemon in #1153
- Word to PDF: a header taller than the room above the body isn't left out by @KnifeLemon in #1156
- rhwp: a floating picture in a header doesn't take the rest of the header with it by @KnifeLemon in #1157
- Word to HWPX: a header for the first page only is kept by @KnifeLemon in #1159
- Word to HWPX: the header of a continuous section isn't dropped by @KnifeLemon in #1158
- Fonts: try again, then the download mirror, when a source fails by @KnifeLemon in #1164
- Single-instance burst test waits for the last launches to arrive by @KnifeLemon in #1169
- Merge images test: use the work folder root by @KnifeLemon in #1177
- Memory trim test: compare committed memory with committed memory by @lightscape-jm in #1211
- Lock retry tests: let go of the file on a thread of its own by @lightscape-jm in #1202
- i18n: add فارسی (Persian) by @nimazerobit in #1182
- i18n: add বাংলা (Bengali) by @fluentmoheshwar in #1114
- test(engines): drive the stall-watch tests with a fake clock by @KnifeLemon in #1266
- test(app): build AppHost in the browser-drop text theory by @KnifeLemon in #1269
- Write subtitles and Whisper transcripts as plain text by @KnifeLemon in #1303
- Keep transparency when encoding to WebM (VP9) by @KnifeLemon in #1304
- docs(changelog): add what main gained since the 2.4.0 draft by @KnifeLemon in #1318
New Contributors
- @arielsrossi made their first contribution in #928
- @mertkayacs made their first contribution in #1208
- @AzrielTheHellrazor made their first contribution in #1155
- @nimazerobit made their first contribution in #1182
- @fluentmoheshwar made their first contribution in #1114
- @Feraris20 made their first contribution in #1195
- @senthan-07 made their first contribution in #1306
Full Changelog: v2.3.0...v2.4.0