Releases: k9spud/appswipe
v1.1.68
With even more optimization, Reload Database should be slightly faster.
Because database reloads are fairly fast now, there doesn't seem to be a whole lot of reason to do a 'soft reload' when the user presses the Reload button while viewing an app in the browser. Changed the Reload button so it does a "hard reload" regardless of whether CTRL or SHIFT was pressed.
Fixed a bug where the backend process tried deferencing a nullptr when passed a -reload command line option. This probably prevented 'hard reload' from working since v1.1.52, when the backend process was implemented.
v1.1.66
Fixed bug introduced in v1.1.65 where installing/upgrading a non-@world package would fail to use the --oneshot command line option for emerge. If you clicked to install any individual packages in v1.1.65, you probably had those packages added to @world.
Added code for text interaction lock-out during a page load. Now that pages load partially in a separate process, it became possible to quickly click a link and have the remaining portion of the page load inserted at that position rather than appending to the end. The text interaction lock-out should prevent such visual mistake from happening.
When viewing an app that hasn't been installed at all on the system, App Swipe is supposed to display information about the best version of the app. Prior releases failed to select the latest testing version when there are no stable versions available. Instead, it was showing the 9999 live build. Fixed.
v1.1.65
Lots more mask logic. We now load package.mask, package.unmask, and package.accept_keywords -- either as standalone files, or as a directory of files. We also load them not only from /etc/portage, but from the selected repo profile and all profile parent folders too.
Reload Database
should be slightly faster now. No longer doing mask logic in SQL and instead do it all in C++. Keeping it all in C++ allows us to do fast-path optimization for masks that do not require complex version number comparisons or other shenanigans requiring a regular expression match.
Added the appswipetransport
sub-process. When you go to view an app:
page, this external process now does all the work of querying the database and producing formatted HTML. After removing all this code from the main GUI app, there is a noticeable memory footprint reduction. The downside is loading an app:
page might be a little more janky than before, since it has to spin up the external process.
The update:
page previously failed to correctly handle updates for packages that have multiple slots installed. This was a big problem for the dev-qt/*
packages now that we have Qt 5 and Qt 6 slots typically installed and each requiring updates within their respective slot. Fixed.
v1.1.59
Added right click "Copy flag to clipboard" context menu for USE flags.
Viewing an app that is already installed now highlights dependencies that aren't installed in red (which normally shouldn't happen) and dependencies that may be upgradable in yellow. Note that this does not do any checking whether the newer versions satisfy all dependency constraints however.
Improved left click and hold to work a little easier. Previously, if you moved the mouse cursor a little too much (easy to do on a touch pad), it would fail to open the context menu.
Pressing enter in the URL input box repeatedly now does a soft reload instead of navigating to the same URL over again. This prevents the Back history from getting filled up with the same URL multiple times.
App icons that are too big (>33% of the view) are now forced to 33% of the view width (solves app:app-editors/vscodium
looking like crap).
Fixed a dependency parsing bug where a slot number containing a "-" could confuse the regular expression used to sort it out.
v1.1.57
Dependencies are now displayed for packages that haven't been installed yet, thanks to the information in repo metadata caches. Even better, App Swipe now does lookups on each dependency for an uninstalled package to determine what other packages you need to install. These unsatisfied dependencies show up highlighted in red.
Added support for using doas
instead of only supporting sudo
. Removed sudo
from the PDEPENDS list. If neither is installed, App Swipe will fall back to simply echo
the commands it can't execute with elevated
privileges.
Previously, the code for updating the internal SQLite database after installing/upgrading a package did not update the total installed disk space used by the package. Now we update the database with the size of the
installed package.
Auto-keyword unmasking has been refactored. We no longer sudo a shell script to append to /etc/portage/package.accept_keyword/appswipe.tmp. Instead, we require the user to set up such a file and give it write permissions for so that sudo/doas is not required. App Swipe now does some checking to try
to avoid adding accept_keyword entries for packages that have already been keyword unmasked so that this file doesn't get bloated as quickly.
Right click "List files owned" has been removed. Instead, a link on the app view page for the installed size can be used. This reduces the number of clicks needed to get to the installed files list.
v1.1.52
Split off database reload code into a separate command line program, appswipebackend
. Going forward, more and more code should be moved into the backend so that only the bare essential code needed to keep the GUI displayed is kept in resident memory.
Database loading code now supports capturing data from the repo's metadata/md5-cache/
instead of trying to parse the data out of .ebuild files. This solves a lot of problems with slot numbers that were previously showing bad data because the .ebuild files often do a lot of scripting with regards to declaring a slot number. App Swipe will still continue to fall back to parsing .ebuild files if the repo does not have metadata cache.
Now supports displaying bzip2 compressed files.
Now supports displaying text files with markdown formatting.
Now does a better job of sorting packages by version number. Previously, version numbers containing alpha, beta, pre, rc (basically, any sort of "pre-release") could end up sorting out as being newer than the final release.
Fixed a bug in applying masks to the right versions when using the <=
operator.
Now supports packages with excessive tuples in the version string (such as net-ftp/ftp-0.17.34.0.2.5.1
). The SQL database schema now supports up to 10 tuples maximum.
Available USE flags (IUSE) now shows the latest available set from the latest release in the repo rather than showing what the available USE flags were for that package at install. This seems more useful, as it may let you know more about what's really available out there.
Found some packages where the same IUSE flag is listed multiple times - we now remove duplicates so App Swipe's display is less cluttered.
We now filter out USE flags that aren't in the package's available IUSE flags list. This cleans up the display of extraneous USE flags that seem more like internal portage flags than actual options for the user.
Hard reload (CTRL-R) when viewing an app page no longer blindly reloads all mask files like it used to. Instead, we only execute SQL updates for the masks that contain this app's atom string. This makes hard reload work a lot faster while most likely still providing the same results.
Pressing Return while a link is highlighted in the browser view now triggers navigating to the linked page. This keyboard shortcut comes in handy after doing a CTRL-F search for a particular package.
v1.1.48
Added support for laptops that have no right mouse button. Now you can left click and hold to trigger a "right click."
View Updates
now filters out live ebuilds with version numbers 9999, 99999, 999999, 9999999, 99999999, or 99999999 (just to be sure).
The View Updates
screen now features an Upgrade
button to let you emerge all the upgradable packages that App Swipe sees. This is similar to Update World
, except App Swipe doesn't burn a bunch of CPU cycles determining which package dependencies descend from your @world list like emerge does. Instead, we just list any package already installed on your system that could be upgraded to a newer version.
The View Updates
URL input box now supports adding filters. Let's say you only want the subset of upgradable packages that contain the word qt
for example. The URL update:qt
will let you see only those packages, and the Fetch
or Upgrade
buttons on this page will limit itself to only fetching or upgrading the qt
subset as well.
You can also apply negative filters. Let's say you want to upgrade Qt packages, but you want to avoid qtwebengine
for now (because that one is huge and takes forever). You could simply use the URL update:qt -qtwebengine
Update System
and Update World
now add the --changed-use
emerge flag. This flag makes emerge pick up on packages that need re-building due to any new USE flag changes made to your portage configuration files.
We now trigger an automatic App Swipe database reload at the end of successful emerge --update
operations.
Fixed a bug where the app could crash when saving state if there exists a newly opened window that has no tabs.
Fixed a bug that made it impossible to view an app info page where the app name has what might be a version number (but actually isn't). For example media-fonts/font-bh-100dpi
would previously show a blank page when
trying to bring it up.
Added code for removing /tmp/AppSwipe.XXX temporary file after it has been used.
v1.1.41
v1.1.40
New tabs/window management. Now you can drag and drop a tab from one window
to another, just like modern web browsers.
Right click or long press the "Open New Tab" button to access the window management menu. You can rename each browser window to whatever name you'd like to remember it by. Close the window, and later re-open that window with all of it's multiple tabs intact.
Saved windows are still remembered even when you exit and re-start the app.
Window maximized state should now save and restore properly, including
keeping the correct unmaximized window size intact if the window is maximized.
The new tab/window management is good for categorizing groups of related apps together for looking at later. It helps reduce memory usage and desktop clutter when closing windows that you aren't working on right now. When you're finally completely done with a window and it's tabs, use "Discard Window" to permanently close the window.
USE flags are now hyperlinked when viewing an app. Clicking the USE flag
links brings up descriptions for the USE flag and other apps that accept
a USE flag by the same name.
An alternative "Who depends on this?" reverse dependencies command has been
added. This one uses the qdepends
command from portage-utils
instead
of equery depends.
qdepends
seems to be blazingly fast compared to
equery,
and it usually provides equally good info. Right click in the whitespace (not on an hyperlink) when viewing an app to access this alternate reverse dependencies option.
Added new "Install & rebuild reverse dependencies" command to app
install right click menu. This option can sometimes come in handy
when emerge
refuses to install an app because of dependency conflicts.
I fetch new apps to try out on my Raspberry Pi 4 often, and new apps almost never keyword "arm64" off the bat. When "Fetch source" is used, App Swipe now automatically adds the selected app to /etc/portage/package.accept_keywords/appswipe.tmp. This is kind of a hack -- but it's just too convenient for making fetch source "just go" no matter what emerge thinks.
v1.1.34
Now ignores differences in the "subslot" number when generating an "update:" list, to better match what Portage does.
"List files owned" now displays the package's file list in-app instead of launching an external terminal window. This is still kind of clunky though, because Qt's QTextEdit widget chokes if you get a list of files that is too long. For now, we simply truncate the list if it exceeds 2,000 entries.
Using an URL like "file:///" allows you to browse your file system like old web browsers used to do for FTP sites. Added image viewing mode.
Added right click menu option to "Build binary package" for those times when you want to build a package, but not install it immediately.
No longer uses XFCE's "exo" launcher and instead uses the "gio" launcher from dev-libs/glib
for launching an external browser. This eliminates the dependency on XFCE, which itself was depending on dev-libs/glib
under the hood anyway.
Fixed a bug where closing the clipboard tab could cause the program to segfault. The clipboard contents is now saved and restored when shutting down the application.
Long pressing Forward/Back buttons now pops up a menu of page history for the given direction.