Skip to content

0.1.3

Latest

Choose a tag to compare

@thisisgm thisisgm released this 03 Sep 17:52
v0.1.3
979ad25

Seven pull requests, both open issues, and the first community packaging.

Added

  • The path bar. : or Ctrl+L opens the strip above the listing as a line you type into, on the current directory with the whole line selected. / is absolute, ~ is home, anything else is relative to where the pane is, and a file:// URI pasted from another application is read as the path it names. Tab completes against the directories one level down, growing the line as far as the names agree, so Tab, Tab, Tab walks a tree. Thanks @schotime.
  • Directory tabs. t opens one at the current folder, w closes it, 1 to 9 switch. The strip appears only at two tabs, nine is the cap, and the last tab cannot close. One listing stays live: a hidden tab is a snapshot, not a second view. Thanks @smillunchick.
  • A right-click menu on the column titles, with Mode, Size, Date Modified and Kind each hideable and the choice outliving the window. Width still wins, so a column the pane is too narrow to carry stays dropped. Copy path joins Open in the listing menu. Thanks @joewinke.
  • Ctrl+Shift+Plus and Ctrl+Shift+Minus step the interface scale, Ctrl+Shift+0 puts it back to the desktop's own size. Flea multiplies the size Omarchy resolved rather than replacing it, so a box is unchanged until you ask. Fixes #9, reported by @mFellipe.

Fixed

  • Hardened the paths that process untrusted input. A file named --use-compress-program=<cmd> inside a compressed directory was read by bsdtar as an option and ran <cmd>; option parsing is now terminated before the member names. The archive, convert and probe children ran unsandboxed when bwrap or prlimit was missing, and now refuse the job instead. A Dropbox share URL was interpolated into a shell command, and now goes to wl-copy as an argument. A copy source opens with O_NOFOLLOW, closing a same-uid race. Thanks @prognost1c.
  • Typing a name no longer trashes a file. The type-ahead only ever fired for a printable key keys.toml did not bind, so it worked for the letters nothing else had claimed and taught a habit that reached d: typing "Vid" selected, jumped, then trashed the row. An unbound letter now names the filter, and trash takes dd where Delete still takes one press. Fixes #7, reported by @twharmon.
  • The rail scrolls, and its cursor is reachable. Its rows had no viewport at all, so a rail taller than its own height could not show its bottom rows by any means. Thanks @joewinke.
  • g and G work in the rail. The keymap sheet advertised them as first and last row, and the rail answered neither.
  • The path bar's Tab no longer deletes what you typed. A case-insensitive completion returned the common prefix of its matches, which can be shorter than the leaf: re against README and ReadMe.bak handed back R, silently.
  • A tab opened from search results remembers the directory you were in rather than the scope the search walked, and lands on it. A refused tenth tab no longer cancels a running search first, closing a background tab no longer closes the current tab's preview, and no tab switch that re-lists carries a selection, because indices name different rows once the listing is re-read.
  • Lifted muted, symlink and executable to WCAG AA against the ground they are drawn on, kept error lines and undo hints until the next message or Escape, named the icon-only chrome for screen readers, grew icon-only hit boxes to 24 px, and stopped Mode and Kind sending a sort the backend refuses. Thanks @smillunchick.
  • Dropped the drop shadow under floating menus and dialogs. Thanks @smillunchick.

Packaging

Flea is on the AUR, packaged by @taxin-404: flea for the releases and flea-git for main. omarchy update upgrades AUR packages on every run, so omarchy pkg aur add flea is now the install and there is finally something that tells you a new version exists.

Measured

Re-run against the field on both fixtures, three runs per entrant, cold cache, with main
benched on the same box the same day as a control.

Flea keeps every column it held. Settled listing is first of seven on the 100,000 file fixture
(1,217 ms, 4.34x over dolphin) and first of six on the media fixture (2,631 ms, 1.21x over
nemo, at equal work of 36 thumbnails). CPU is first of seven on both (1.01 s and 1.49 s).
Memory is first of seven on the scale fixture at 110.5 MiB.

This release costs about 5.5 MiB of resident memory, and that is measured rather than
estimated: main read 105.0 MiB on the scale fixture and 113.1 MiB on the media fixture the
same day, against 110.5 and 118.9 here. The cost is flat across both fixtures, so it is the
new QML surface and one added FileView rather than anything that grows with the directory.

The consequence is worth stating plainly: memory on the scale fixture was won by 6.1 MiB and
is now won by 0.5 MiB over pcmanfm, and two runs of this same build straddled that ordinal,
so read first place on that column as a coin flip at this margin rather than as a result. The
recovery is the Loader gating already measured at 14.7 MB and recorded in AGENTS.md, which
needs ui/Pane.qml split first.