Changes:EXIT xzm

Arch based Porteus community project

Moderator: M. Eerie

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#61 by dreadbird » 11 Feb 2026, 19:11

Have it complete going to cycle it a few times. What I did was allow editing the config from the gui and also apply the changes. This with one click drive changing will make it more seemless.

Will also get the specs for making a binary so that option will be available with the source

ImageImage



I have so it works with commandline so there are different sequences to get right such as not loading the json from the commandline. the idea being speed and this is why it doesnt use sql cipher it would add far too much overhead and also is a different security model.

Image

fonts can be changed on nemesis its ttf and above is ttf-vlgothic

I am putting in show fonts so it will list available fonts and should have it released either today or tomorrow

ImageImage
I added idx_bytes which is the total byte count so here cleaning up an xzm you can see which directory is the largest. This gives a quick higher level overview for convenience

the main goal of the app is accuracy for the system profile and efficiency where indexing directories it doesnt read every file size only those targeted by the profile. This adds the benefit of the full directory cache which can find new files with the find downloads button. so where other indexes might store more information too much information makes it difficult to interpret. Also if there is a bug the incorrect information. so the core is in place which can be used easier for cross platform.

main changes
added microsecond mtime to database which hybrid analysis pulls and compares to fsearch for suspect files.
output logger runs off of a thread and processes results during multiprocessing
added superimpose for directory cache
used minimal imports. implemented both root and user to work with or without polkit and with pinentry curses or popup.
so the idea is that if something doesnt work quite right there is a fallback and the issue can be easily spotted

im going to put the source up and put it in an .xzm so will release later today

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#62 by dreadbird » 23 Feb 2026, 09:24

recent changes 5.0.7 03/24/2026
https://github.com/dreadwrr/Recentchanges-Linux
https://drive.google.com/file/d/1HFBSjY ... sp=sharing
sha256:291d75af222abeefca325bcee6a103b1ce01617d8fe1d0551e74afbe091275a2

activate .xzm which has polkit and scripts requires dependencies from system python due to root helper

Added more drive logic and optimizations. Went through and test all features and made adjustments. also a pyinstaller repo with changes made to launcher. so if wanted can build and put into a new xzm
this would make it so it requires no dependencies

setup required is in ~/.gnupg/gpg-agent.conf add:
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 600
max-cache-ttl 7200

repeat as root

On porteus it couldnt find the desktop theme so theme has to be set to dark in system settings

It took me a while to setup and this seems the easiest way to distribute with python being installed

gpg setup instructions
https://docs.google.com/document/d/1EJA ... tw1gextu63

previous hashes
recent changes 5.0.6 03/15/2026
https://drive.google.com/file/d/18299j3 ... sp=sharing
sha256:a4a38921d85b6a3a878ac0d256b36c26558463caedfc846584ff4868d615af0e
recent changes 5.0.5 03/04/2026
https://drive.google.com/file/d/1NvUAsX ... sp=sharing
sha256: 30a47d39f282d53ff0733b71f3e736ff81e563eab15ce899af192599dc78e13a
recent changes 5.0.4 02/28/2026
sha256: 055e6000e4cd542a80b6143d3064c50975877d63e5e88f2f66c2da200799b89d
recent changes 5.0.3 02/26/2026
sha256: 055e6000e4cd542a80b6143d3064c50975877d63e5e88f2f66c2da200799b89d
sha256: 36e30852fafa54f1406f64700470856a0ee5e66a22fac5f43271962c17a1b926
recent changes 5.0.2 02/23/2026
sha256: ababadf0c96f9325e634d754b81a21ab9b22e0086b45be7898ff0743836c7dcc
recent changes 5.0.1 02/23/2026
sha256: 92e15110838323f1271eaeaad386d98684362b69a1dc08aecaa7c3905bd31595
Last edited by dreadbird on 24 Mar 2026, 20:41, edited 18 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#63 by dreadbird » 25 Feb 2026, 20:26

For debugging purposes
Moved to new version
viewtopic.php?p=105140#p105140

bash and bash python

save-changesnewNMS Nemesis v1.2.8 03/02/2026
sha256: d8cc2c8c8b95717f450541294825b3ff74f01a5ad269a4a28d770c5cdbd3ef29

added new dynamic module creation logic. included checksum for rsync to use instead of modified time incase thats wanted
added symlink target change detection and used a hash to be able to parse it. then target is resolved in python and put in database. this includes sys profile as well
recentchanges reset to reset keys and added gpg creation logic ie remove old .gpgs as they wouldnt work with new ect


worked on save-changesnew and found optimizations
implemented changes from linux qt to bash hybrid analysis and python hybrid analysis with mtime_us in database
this increases speed as it doesnt need to do any stat calls
ensured xzm system profile is built properly in bash script

save-changesnew Porteus 5.01 5.1 v1.2.8 03/02/2026
sha256: 0fba67e9a139218fc797f9302d38cc000fb7e70aae1da9eb7e5c1e83a5249902


python editions

save-changesnew NMSpy v1.2.8 py 03/02/2026
sha256: e21a91f26c03e2a23e5f009c12b81f8c30ac1bcf5881d0ba66964eba95434b66

added changes to save-changesnew with new logic and checksum for rsync
gpg creation logic
streams the find command in python
implemented save-changesnew updates and qt functions for py ver.
system profile is built using python
symlink target change detection


save-changesnew Porteus 5.01 5.1 py v1.2.8 03/02/2026
sha256: 6337ee51c5c71e9c46912503894bec10a38cbdc2150bb4d18ba34385069dcf25


setup for porteus
requires pin-entry 1.3.2 current
echo "pinentry-program /usr/bin/pinentry-curses" > ~/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent
repeat as root
sudo su
cd /root
mkdir .gnupg
echo "pinentry-program /usr/bin/pinentry-curses" > /root/.gnupg/gpg-agent.conf

nemesis works with /usr/bin/pinentry-gtk
/usr/bin/pinentry-gnome3 works on porteus cinnamon
/usr/bin/pinentry-gtk-2 can be used with gtk2+ package on porteus

the database can be viewed with tk-8.6.16-1-x86_64 https://drive.google.com/file/d/1IfC8x5 ... sp=sharing

the py editions have the changes from the qt version which is profile building, logging and xrc\inotify wait in python. This allowed me to go over each area and verify operation so now will be easier to maintain and port back to windows. For now plan to finally get to be able to use it and will try out porteus alpha 3


previous hash:
changes history
https://docs.google.com/document/d/1EJA ... y6cvvhk6kp
sha256: 6beab0ecf59fc3dfb25d36baa945d24ae4396e1d005383f51cf7e9332ce256f1 NMSpy v1.2.7 py 02/28/2026
sha256: 5023d71b54a334cea003eef855844a757e96d1f7866827136277b1eff334cbb2 Porteus py v1.2.7 02/28/2026
4cb25952d05b054ff3987b488a3a45cdecb090d93e7379f404d405a2fa47912d porteus v1.2.8 fixed typo found when converting nemesis 03/02/2026
f433d8b22e036ceb316e6fdf6027e8fa1b5f6b4a8fde0b92a1b3ed85f822f604 Nemesis v1.2.7 02/25/2026
sha256: 38cd09df38291e752d5297092df81689247bb02129c10a182d66791ae35fe8e3 Porteus 5.01 5.1 v1.2.7
Last edited by dreadbird on 28 Mar 2026, 03:25, edited 20 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#64 by dreadbird » 01 Mar 2026, 09:05

Image

the theme follows the desktop theme in porteus you have to change it to mint-y-dark in themes otherwise the window is white. on nemesis it finds the gtk theme
I released pyinstaller to 5.0.4 which needed some changes to the launcher script and also the filter for it to work with no dependencies. so filter.py is filter.toml. As well as new gpg key creation logic ie clearing old .gpgs as it wouldnt work with new keys. I will update 5.0.4 python version which is the main repo

updated to 5.0.4. so this will allow for crossing back to windows with emphasis on powershell

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#65 by dreadbird » 02 Mar 2026, 12:08

For debugging purposes
Moved to new version
viewtopic.php?p=105140#p105140

released 1.2.8 bash and bash python

new dynamic module merging logic and creation. Also added checksum option to /opt/porteus-scripts/save-changesnew which rsync will use checksum instead of modified time if preferred

added symlink target change detection in the bash parsing which also goes to python this had to store the link path as a hash otherwise parsing would get out of hand
symlink targets for logs and sys profile are also in the database resolved in python
added recentchanges reset command for bash bash python. also gpg key creation logic ie delete old .gpg on new key creation.
updated file doctrine to match other versions

will put the new module logic into the py versions currently released 1.2.8-py for porteus and working on nemesis.
released 1.2.8-py for nemesis so everything is up to date and with the bash being updated offers different options

released qt 5.0.5 which moved the logging and progress bar reporting to a queue. Otherwise the last worker would stall progress. This is the better model and it turned out to be a good logging system. I did the changes first in the py ver so will roll out py2 for nemesis and porteus with those changes to the multiprocessing

python edition

save-changesnewNMS Nemesis v1.2.8-py2 03/04/2026
drive.google.com/file/d/1p2d3edi02h-SqAIJqCaj_YnxJKMH8o0X/view?usp=sharing
sha256: a46bf04da32de68387ffb1c501ca9c6d1594a4574fbcc4712c144c95a679b86f

moved logging to queue which changed the logging system slightly. for fsearch and hybrid analysis and minor fixes found when releasing qt 5.0.5
changed the launcher so shouldnt need to have tk dependency to launch
put in a new hash collision detection that should be faster by inserting a table with search results and using query

save-changesnew Porteus 5.01 5.1 py v1.2.8-py2
drive.google.com/file/d/1XE8V7ZIJGxx3PceG6GbQYspOwxE4wDYJ/view?usp=sharing
sha256: 7e46827d2b6615b97d4e3452d1674a613b46ac3747fc4a16aa8e992214b83f60


bash and bash python

save-changenew Porteus 5.01 5.1 v1.2.8-2 03/15/2026
drive.google.com/file/d/1VqqLFB8znnvCteYGa3669P9CqIgVPe-O/view?usp=sharing
sha256: 545f527c8c06a9b1198568f9460acc1f35f0cc4f5552b35c11ecb1f056304620

updated hash collision check with temporary table insert and different indexes on the tables
changed database insertion to commit incase something goes wrong rollsback
these versions dont have a logging system but multiprocessing is the same as python versions. difference is moving logging to a thread not the processing results which was found to be not as efficient

save-changesnewNMS Nemesis v1.2.8-2 03/15/2026
drive.google.com/file/d/1bc3LJsezRjGDrVbQ4jAzOJt4UoCEhk2s/view?usp=sharing
sha256: 377a9fd542e4aa0daf474fa9ed2aa6453728ca3d42358e22134dfdd060dad19d

the database can be viewed with tk from package manager. porteus alpha should use pinentry current otherwise gpg can fail silently with 15.0. pkgs.org or https://slackware.nl/slakfinder/
for porteus to use xRC requires inotify-tools
Last edited by dreadbird on 28 Mar 2026, 03:25, edited 12 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#66 by dreadbird » 10 Mar 2026, 02:31

ImageImage
Image

managed to convert the changes over to windows the biggest hurdle was the cache system. on windows gpg always has a popup so that was straight forward

default mode is powershell which works for version 5 and 7

for wsl it has to be set to one and it changes it on prompt. So currently the easiest way to find new files is run two mft scans and in the difference file will have any new files or modified files in that time gap.
also the find downloads button.

as well in each mft search all created files for that time range is listed from the usn jrnl

currently stress testing it and going over all the parsing but its looking good. I will also put in a search feature with a drop down filename,creation,modified so it will jump to those columns efficiently. Putting too much search features in is tricky because too much and youre getting into
weird dynamics like im not going to put in find all from this time to that time. keep it simple find filename or date and it will search in just that selected one column

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#67 by dreadbird » 14 Mar 2026, 09:44

Released the updates for windows 10 and 11
https://github.com/dreadwrr/Recentchanges

integrated pyinstaller setup so theres one release with the option to build with main.spec. Also for windows released a windows setup version which is built. added zipfile and it can use system 7-zip or winrar.
new feature copy from database to copy the filename. decided against search feature as it would get too complicated and thats what i would like to avoid

modulized so should have the updates for linux in a day or so

Released for linux 5.0.6. a python version that can be built into a executable or pyinstaller version which is the same but with the changes to the launcher script and polkit. will put instructions on the pyinstaller repo
5.0.7 added drive logic and optimizations added from the windows build. With a new algorithm for profile builds and find downloads.

recentchanges 5.0.9 04/05/2026
https://github.com/dreadwrr/Recentchanges-Linux
https://drive.google.com/file/d/1xPiVSy ... sp=sharing
sha256: 35211a90eb36234a101349bb2909f218a61d18ffc6144c5542590d75296dddd2


Launcher adjust to use venv for recentchanges search, query, reset ect if venv present

Added menu icon and launcher script that will check for system python, an existing venv or prompt to install one with requirements. This is in an effort to make it easier to access.


Note: tested with below but may require packaging and requests package see requirements.txt if needing to adjust

nemesis
use pman -Sw for the packages
pyside6
python-pyudev
python-psutil
python-magic
python-pillow
python-tomlkit

mkdir /home/guest/.gnupg
echo "pinentry-program /usr/bin/pinentry-curses" > ~/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent
su
echo "pinentry-program /usr/bin/pinentry-curses" > /root/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent

porteus
pip install pyside6==6.8.3
pip install shiboken6==6.8.3
slackmod -m for packages
python-pyudev
python-psutil
python-tomlkit
python-pillow
python-magic

in preferences Themes set to dark theme
porteus 5.0.1 try pinentry 1.2.0 and for porteus alpha use pinentry current from pkgs.org or https://slackware.nl/slakfinder/. pinentry-gnome3 can be used for popup

a clean way to install pyside6 above for porteus which I saw from this post viewtopic.php?f=39&p=105162#p105126
make a dir in /tmp
cd /tmp && mkdir PySide6
pip install --root "/tmp/Pyside6/" pyside6==6.8.3 shiboken6==6.8.3

then make a module of that


Made a setup instructions page for gpg troubleshooting
https://docs.google.com/document/d/1EJA ... tw1gextu63


Changes history

5.0.8 Handling two config files it was found to require more tweaks because of the spinner and dynamic config edit. The mapped drive type is then sent out to the main search and also scan, build and find downloads.
moved rnt symlink to not conflict with save-changesnew module
fix to modern theme xml style sheet as it has to remove the background

Added to 5.0.7 - currently put in streaming in the repos for find instead of buffering so the feedback should be more responsive. I was hesitant to put it in because of parsing new lines in filenames for linux and windows converting wsl path to C:\\. but have it sorted out and works well

Added - waiting until vetted between windows and linux before releasing so not going back and forth
for windows implemented xRC or tout with a journal database for created files so its realtime and makes the search only run with 1 loop. this is for files with preserved metadata and copied files

Added - the problem with the find command on wsl is it doesnt have creation time and change time doesnt update the same like linux. if you move a file it should always update. there is a work around using access time but then you get over 1000 results which works and is the only way around it. so xRC solves that and can go through and check everything before releasing the next update


Fixed - Added the changes from 3.0.4 to linux. for nemesis one file is in common with save-changesnew modules /usr/local/bin/recentchanges so pulling that out of save-changesnew if both are activated

previous hashes
recentchanges 5.0.9 04/04/2026
sha256: sha256: 328f2d5e72303028921f1f3ddecb533dabc94729078ee43499687d23061b9132
recentchanges 5.0.8 03/27/2026
drive.google.com/file/d/1MyjGNoPsNNG2BZqvY_0tbDywUhmNT5mk/view?usp=sharing
sha256: e56daa8d627cd9235821fe790e9469d7da7c80c1b04267d61e75bc79088aac3e
recent changes 5.0.7 03/24/2026
sha256:291d75af222abeefca325bcee6a103b1ce01617d8fe1d0551e74afbe091275a2
Last edited by dreadbird on 05 Apr 2026, 21:38, edited 26 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#68 by dreadbird » 24 Mar 2026, 01:33

For debugging purposes
Moved to new version

Released 3.0.4 for windows

the default is powershell but there is the option for subsystem of linux. I made ctime.ps1 to process all created files for wsl
I added xRC which uses mftecmd cutoff and then makes a database of directories that is pulled into cache. this eliminates 1 loop and the search becomes faster than powershell

If something goes wrong with xRC it disables and goes back to ctime.ps1 so its self righting I tested it and found as many scenarios as I could but can only be proven through more use

I will put the changes for linux which is error handling and drive logic changes and feedback. The core is in a good position for maintaining and should allow for improvements as things are found out. By not excluding too much or using too many dependencies it can be adjusted easier. Will also release the .ui files just have to put a change for windows as the spinner had to be manually adjusted

Update 03/24/2026
released 5.0.7 for linux. with adjustment to profile build and find downloads theres different sensitivities but have it so it gets the runtime files.
moved logging off of thread for single core for reduced overhead.
added find streaming
environment variable in the launcher script for passing commandline to main.py.
caches gnupghome environment variable as gpg produces a runtime file that is excluded in profile builds.
added modern theme to repo

With this release it marks the first stable build and can be adjusted as things are found out. have the linux ui https://drive.google.com/file/d/1ndV65m ... sp=sharing. windows I have to figure out how to include the spinner change. windows ui https://drive.google.com/file/d/1DAHvPq ... sp=sharing

I added changes to the drive logic to the repos it is pretty easy to get the logic backwards. so will test before putting in a new release. What it does is on first startup it auto detects the drive and puts it in toml.
if a new drive is added from config.toml it auto detects and puts it in the json. the dynamic config can detect if the drive type changed in config.toml and update the json. the gui sends the drive type out. find downloads gets it passed so it doesnt have to read the json. build and scan read the json for the drive. if there is a malformed json fall back to config.toml. so as the spinner is changed its drive type is already mapped and doesnt read from the toml

Have the latest changes to save-changesnew and moved recentchanges to /opt/recentchanges/recentchanges so it doesnt conflict with recentchanges gui module

03/27/2026
Completed the changes for module compatibility for both qt gui and save-changesnew. If the qt is activated it takes precedence as its in /usr/local/bin. save-changesnew recentchanges has been moved to /opt/recentchanges/recentchanges
so recentchanges will run off of main.py and save-changesnew will still work. This was seen to be the best method as seperating save-changesnew would require another module and maintenance would be problematic.

python edition

save-changesnewNMSpy Nemesis v1.2.9 py 03/26/2026
drive.google.com/file/d/17yryLSsF_X_0Vs7ef7CGhiK6i_xWXXM-/view?usp=sharing
sha256: c9875fbfb18b9122d2a72ead1790e1d6cd4f1841185b29335b565aa560ff0092

moved single core logging off queue for better optimizing this includes hybrid analysis
added calculate checksum changes from qt
added find command streaming from qt
moved cache clear patterns and browser suppression from pyfunctions.py to config
added additional fixes from qt which is error handling and modularization for multiprocessing

changes to save-changesnew
save-changesnew added logic in dynamic module saving and additional error handling for unpacking
save-changesnew mount resolve if /dev is found rather than use /mnt

save-changesnew Porteus 5.01 5.1 v1.2.9 py 03/26/2026
drive.google.com/file/d/1kodYsY-QmhGm-RN4f_erlUwZApVI_XVO/view?usp=sharing
sha256: d6b5026666c87f1eb2db91c0bb8ca8c3b05d3c976bcedf2f06ac181de54419ad


bash and bash python

save-changesnewNMS Nemesis v1.2.9 03/26/2026
drive.google.com/file/d/19nrhTabe-3vAXyoSlUmQ4gGwfSQs9o6S/view?usp=sharing
sha256: 50621fe74138cf606c58e83a7118c82a0c4dcf71317d5464e2656d5fcf707330

added changes to save-changesnew
changed gpg key reset so doesnt need tk dependency just to reset. added remove flth.csv on reset


save-changenew Porteus 5.01 5.1 v1.2.9 03/26/2026
drive.google.com/file/d/1y7-AIZu9PdCuz4mlorQLFk57MA7luNSo/view?usp=sharing
sha256: e6aef5eb226e797868ac5f4da825ad2f405cbca4db9080883d1f810fb7e741f7

the database can be viewed with tk-8.6.16-1

currently working on an option for .dat files. instead of gating it out on changes= it will create a duplicate .dat and rsync into it saving writes. I have the log system and rsync tied in and testing is going good
Last edited by dreadbird on 31 Mar 2026, 15:18, edited 2 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#69 by dreadbird » 30 Mar 2026, 15:31

Image

have nemesis done and testing porteus. so will include in a new releases. currently just going over windows so I can spot anything. having gone over each version it helps spot things clearer. so the idea is the core will get better and more user friendly

save-changesnew has commands recentchanges search and save-changesnew
for info on commands: https://github.com/dreadwrr/Developer-buddy


added .dat backup which makes a duplicate and auto mounts. for changes= and changes=EXIT
changed .wh. handling for rsync for changes= and changes=EXIT

save-changesnew on changes= will backup changes folder or if using .dat file creates a copy and writes to it. on changes=EXIT its 'save-changesnew backup' will write to the backup

nemesis

save-changesnewNMSpy Nemesis v1.3.1 python edition 04/06/2026
https://drive.google.com/file/d/1JDT5TY ... sp=sharing
sha256: 3d5e5bc8790e4fc7e97d2281e2bbc57d8e7c1e7c685cb2ff1e13cc759beafce5

save-changesnewNMS Nemesis v1.3.1 04/06/2026
https://drive.google.com/file/d/179Tr1a ... sp=sharing
sha256: 1a3649ef724aa16b70c90fe41144dbd8890454907103abb7de070c7eee4fbcd2

porteus

save-changesnew Porteus 5.01 5.1 v1.3.1 python edition 04/06/2026
https://drive.google.com/file/d/1lMGkax ... sp=sharing
sha256: 96c9546eda060f72f4cec95bbe990b1b528665dca6c1a61cd1b1313ac080d859

support for encrypted .dat backup
merge logic to avoid file conflict ie if it was a file before and now is a dir remove it. and opposite. it will also log in case it fails to merge
verified bootloader editing
reoganized porteus function names and tested for cases like above

save-changenew Porteus 5.01 5.1 v1.3.1 04/06/2026
https://drive.google.com/file/d/1UBYh7l ... sp=sharing
sha256: a32cfb1549953a0e2771dc77fb34789dfd6d0a0ea9a8b5e2711caf1beeddae06

database can be viewed with tk-8.6.16-1 package


setup page for gpg for bash only requires root gpg-agent
https://docs.google.com/document/d/1EJA ... tw1gextu63


previous hash
changes history
https://docs.google.com/document/d/1EJA ... y6cvvhk6kp
Last edited by dreadbird on 07 Apr 2026, 00:27, edited 10 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#70 by dreadbird » 06 Apr 2026, 22:05

Update for Qt gui

added launcher script for qt gui with menu icon. it will check for sys dependencies, see if an a venv is setup or prompt to create one. also the qt gui can be accessed with recentchanges gui command. this is in v5.0.9 and should be easier to setup and access

currently going through and continuing to test save-changesnew to look for any condition or adjustment needed and will update as needed


Update to 1.3.1 for porteus

now with more alpha. I renamed the L module from _uid_L to L_uid_ so random alpha has all the combinations.
supports encrypted .dat backup so if the original has encryption it will make it the same
went over boot loader logic and tested with syslinux and grub bootloader
reorganized the function names and general organizing

implemented log file for merging as there are conditions that can error out such as if a file was saved but in the next module its a directory and vice versa. so added action remove and log it. and also a logfile if it errors out so can see any problems.

updated nemesis to 1.3.1 for save-changesnew

Working on windows and I made an mft parser in c
https://github.com/dreadwrr/mft_parsec

Image

and you can show all created and modified files by system time
Image
Image

so as the mft can change I dont want to build it into the main search so will put this into the mft section and the time to search by mft is reduced from 15 seconds to 1 or 2

Update: I made progress on the database index. so what you have is it can read the mft once and build an index of C:\. So by reading the usn journal it keeps it up to date. I have it so if something goes wrong it disables it (xRC) in the config.

Image

So an hour search is fast and the database take up 90mb. What I also did was take the find command out until they map birthtime to creation time or something. typically find and powershell being about 19 seconds. So instead of find it uses os.scandir. os.scandir which takes 4 seconds and is twice as fast as os.walk. the default is powershell as that was the intention of the app or it can use python os.scandir or database.

finishing putting it for the mft search which is pandas and the parsing from the parser is binary

Released v3.0.5 for windows with powershell as default. alternatively wsl to use python for search and find file. implemented new parser in mft search features and xrc with usn_history table for proper logic verifying eliminating the need for event logging. usn_history trim removes anything over 7 days old
used new mftecmd source and compiled for .net6 and .net9. if mftecmd is in /bin it will use that

04/26/2026
I made the mft parser into a pypi package the mft parser. it took a lot of fiddling around but have it pretty much done using a .dll and wheel

that part isnt in the app it uses the .exe and I also worked on that part and simplified it to just output csv format to stdout. the features it can do:

read a saved mft, dump a raw mft, search for files by time and search for a record

so the idea is simplify which takes time because a lot of this is new to me. just figuring it out by running it and its looking good so will have that done shortly

04/28
Image

this is with using python scandir so will just have that and powershell

Upcoming update
working on optimizations for windows then will migrate to linux new features planned:

Add python scandir for linux for main search
Slider to choose find command or python for search and for windows powershell or python
Marker button to drop a marker for newer than search which will remove the old one. If marker is too old and prompt for new

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#71 by dreadbird » 04 May 2026, 01:28

Released 3.0.6 for windows

found that using pwsh.exe and powershell 7 there is a speed increase from powershell.exe which uses the old .net framework. So the time decreases from 30 seconds to 15 seconds for the search
python is 5 seconds and can be used with pwrshell = False in config
added add and remove to path to use commands recentchanges and rnt with the settings button
added rnt to inverse recentchanges
optimized omerbenamram mft rust hook loop for accuracy and reliability
standarized variabled names and worked on the config. simplified and formatted for better readibility

so with these changes can take the mft feature out if it changes. so the intention of the app is kept by not using it in the main search

the mft pypi package is done but there are quite a few steps to do to post it. i have it in the test pypi so finalizing what needs to be included and not. Looking forward to going back to linux and maybe just leave the windows version where its at and just maintain the linux version. Working on a graphic which is a wolverine so will take a break and get that done and add the python search for linux

Image
This is where I have it sitting right now may add claws or make into a cyber robotic wolverine

Currently have the changes in and there is no speed increase with os.scandir vs find. I had a look and it seems it sees the biggest increase from windows because of how it calls findfirstfile using the windows api. so there will be a python = false in the config to switch the main search and find file to that to see the difference. Speed is about the same for find file because its not doing any stats while traversing.

Having a quick look to see if I missed anything and then will post an update

Released recent changes 5.1.0
https://github.com/dreadwrr/Recentchanges-Linux

so now its pretty much set and can go back and simplify or add more stats. I will be focusing on linux so it will be easier to maintain and will try to find new ways to improve it

05/18/2026 Released python hook for windows
https://github.com/dreadwrr/pyparsec

Update:

for bash came up with a solution. It uses a seperate cache file in /tmp/dbcache and is cleared on reboot. Instead it can grep from the decrypted logs. So this would be more streamlined. The advantage of bash is there is no packages needing to be installed and takes up no space if not wanting to use a heavier gui.

also for python and the database the possibility of using sql cipher is there but that would be a different threat model. Also that would move away from using gpg which would be counter productive.
so will make it so it only uses the users gpg pinentry. all it has to do is start the user gpg agent before entering root which I have already.

I will work on that in the coming days and then once thats done look at other deployment methods which i havent really used like pipx and conda or if there is a better option ect.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#72 by dreadbird » 23 May 2026, 01:30

For debugging purposes
Moved to new version
bash and bash python

save-changesnewNMS Nemesis v1.3.2 05/22/2026
drive.google.com/file/d/1c5a7Knpvz5qZ_vIZdr5X7dmPv1f1BJAN/view?usp=sharing
sha256: 869818956f7f9104c1bb984f0ba8da44f74d34416f431fe7ba00592bc2989697

changes are improvements to recentchanges to quickly see files in use on the system
consolidated into one script which reduces complexity with easier arg parsing and flow. script becomes self documenting and have better structure.
changed recentchanges to output tmp files in /tmp and use filter with rnt shortcut. tmp files are put in a seperate file for better readibility
main upgrade with having the cache encrypted to ctimecache.gpg

save-changenew Porteus 5.01 5.1 v1.3.2 05/22/2026
drive.google.com/file/d/1bNNz8TNn0fPyEarhTlXTCuj95Gxutucv/view?usp=sharing
sha256: 09963f53734c0b9c40522007bb525240c2c7df8e21939758fdac6a2a81f5dbd0

save-changesnew has commands recentchanges search and save-changesnew

root pinentry needs to be configured
docs.google.com/document/d/1EJAKd1v41LTLN74eXHf5N_BdvGYlfU5Ai8oWBDSGeho/edit?tab=t.0#bookmark=id.kotw1gextu63



recentchanges 6.0.0 05/27/2026
github.com/dreadwrr/Recentchanges-Linux
user pinentry is used
this is recentchanges implemented in python and Qt
new bash launcher and helper script to ensure proper python venv or system is used.
Install with venv

log out and log back in to see icon. create a venv to run (instructions on github)
or
command recentchanges gui or from the app menu to auto install venv

run to add new polkit policies instead of reboot
pkill polkitd

Manual or system install

nemesis
use pman -Sw for the packages
pyside6
python-pyudev
python-psutil
python-magic
python-pillow
python-tomlkit

may require packaging and requests package see requirements.txt if needing to adjust

tested on clean install and xcb-util was needed for qt on nemesis
pman -Sw xcb-util-cursor
pman -Sw xcb-util-keysyms
pman -Sw xcb-util-wm

This step may not be necessary on nemesis as didnt need to do it but now its just users pinentry
mkdir /home/guest/.gnupg
echo "pinentry-program /usr/bin/pinentry-curses" > ~/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent


porteus
pip install pyside6==6.8.3
pip install shiboken6==6.8.3
slackmod -m for packages
python-pyudev
python-psutil
python-tomlkit
python-pillow
python-magic

preferences Themes set to dark
porteus 5.0.1 try pinentry 1.2.0 and for porteus alpha use pinentry current

a clean way to install pyside6 above for porteus from post viewtopic.php?f=39&p=105162#p105126
make a dir in /tmp
cd /tmp && mkdir PySide6
pip install --root "/tmp/Pyside6/" pyside6==6.8.3 shiboken6==6.8.3

then make a module of that


Made a setup instructions page for gpg troubleshooting
https://docs.google.com/document/d/1EJA ... tw1gextu63

updated pyinstaller module to support nuitka build which works out nicely to one file around 53mb

so from here can update any thing seen from use and improve stability. I plan to seperate save-changesnew into two modules but things seem stable. Avoiding too many releases to update is in place with the py ver out.

Going forward with project name bundeswehr and looking into using GNU parallel for the bash script. Also putting in more stats into query. I had a look at several gui frameworks currently deciding on the way forward. whether that be enhancing tk with tkkbootstrap or adding a better ui.

Image Image

currently going through the features and I moved explorer by newer than file rather than in settings. as well the last path used in newer than is saved to json. so this will be convenient if wanting to make a marker file it will open up in the last path used.
I added an alarm clock with a chrono and count down timer as well. And play .wav or .mp3. did it as part of a practice to get better at qt.

I realize qt can be a bit larger than other languages for file size but that can be managed. I was able to get the filesize below 100mb for windows. Then with a few modifications can use nuitka. And this leaves with being able to use any python package.
So what Im doing is going through and tying everything together for proper output and make sure things are working as they should. Then there is the bash and python version without all the dependencies which Ill update with what I find.

https://github.com/dreadwrr/pyqtalarm
what turned out to be a small feature took quite a bit of time ended up making a 24 hour clock with seconds or a 12 hour clock with blinking colon. If you click on the lcd it hides the controls. So while at first I was wanting to put chroma coloring but after spending a lot of time customizing doesnt add any real benefit. So will just put red on black background. and just red green or blue digits instead of the default white in this case. If a sound file isnt passed it beeps as well so looking forward to putting in the new stats and just double checking everything

06/08/2026
have the changes in:

analyticSECT just becomes analytics so theres one setting which will turn off all of the times below
just after hanly it will show hybrid analysis total time and logger total time. so can get an idea where the bottlenecks are and also if any changes improve or hinder performance. these are not saved in the database for simplicity
at the bottom will show total perceived number of files scanned, throughput per second, lifetime throughput per second
total unique files in logs table

better automatic drive detecting and failing that it will prompt for drive type
linux the reset command will prompt to reset configs
new action for hybrid analysis Casmod for linux and its Created for windows
alarm clock that can save alarm time and select custom sound file that would copy to /home/guest/.local/recentchanges/Resources/
newer than file remembers last directory it was in for app restart

so the overall design is a new analytics table of one row that stores some data for the analytics above (lifetime total files lifetime total time) and app last start time.

Looked at adding file shannon to database or a drive speed test but these are not necessary. What matters is keeping the core light and the app is kind of just beginning so feature creep could really mess things up.

So stable core and focus on moving the hudt text display to something better way later. Will give it about a day on windows to vet it and then post that and then will swap it over to linux

Image

Got the alarm sounds working supports .wav .mp3 and .ogg and switched it to python and took a clip with the new stats. Powershell is about the same time but throughput would go up if there were many new files.

Image

Have the bash analytics put in it took a bit of time because of the two backends trying to meet and have consistent output. Biggest slow down was handling parsing of the analytics from the cache file but have it smoothed out. So now Ill run this on both porteus and nemesis. Then do the Qt which should be straight forward as its already done from windows. And then things should be smooth so hopefully have a good look for documentation and clean up a few things
Last edited by dreadbird on 17 Jun 2026, 23:54, edited 2 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#73 by dreadbird » 11 Jun 2026, 18:03

save-changenew Porteus 5.01 5.1 v6 07/07/2026
https://drive.google.com/file/d/1bRBPFr ... sp=sharing
sha256: 8ed2796ee0ed91047b90e058fe41730c092aebe988c5e4b28b9c2a8498df7571

Find only uses one process including ctime and mtime in one search
Added time offset for a second search accounting for the main search time for any relavant mounts on the second search
Inotify wait now is built around file_creation_log.txt as indirect convenience feature and also caching files over 1 MB for main script
if automation fails it doesnt effect results as it would only be missing any cache
Adjusted inotify wait with new logic from qt version.

save-changesnewNMS nemesis v6 07/07/2026
https://drive.google.com/file/d/1p17Pi7 ... sp=sharing
sha256: 0c86606d9b5e6349a2bf882cf91101a520e07f0d9783b539698011d83f45505a

root pinentry needs to be configured
https://docs.google.com/document/d/1EJA ... tw1gextu63

Updates to bash version:
changed the way the find command is run with -xdev
Moved to V5 which will be the final release of the bash version before looking at gnu parallel further down the road
Updated recentchanges improved query and analytics in the searches. checked proper formatting for both bash and python backends.
New action for hybrid analysis Casmod which is just changed is greater than modified. Conversely this is Created on windows
parallelized inotify wait

in a few days add the Qt edition then have all versions finalized. This being the update for query and analytics, alarm clock and QOL improvements from the windows release

previous hash:
save-changenew Porteus 5.01 5.1 v5 06/18/2026
sha256: aa78823f25b0c7d5f4cb0bbbe1308ecd6c62d32a3034aa5a10204dcec57de4c8
save-changesnewNMS nemesis v5 06/18/2026
sha256: ce419840d8c0214b4384ccfddbfd43273270ee9e9b75eb5d5327c45fb831aff9


save-changesnewNMSpy Nemesis v6 python edition 07/10/2026
https://drive.google.com/file/d/1zSrkjV ... sp=sharing
sha256: 2e647587a68f07ad099e8fc5e355da4d69b93d9595b5e725ac80b2ceb7cafe5c
save-changesnew Porteus 5.01 5.1 v6 python edition 07/10/2026
https://drive.google.com/file/d/1m002Ex ... sp=sharing
sha256: 5ddcce03a81ad93bbb7e6a87bc74977e8f9e44bdacaaa73f4195a150a627166f

python version requires user pinentry


Have the changes in and changed the main search to use

find / -xdev -path /.cache -prune -o -not -type d -print
then
run a second find on the results from

input=$( awk '{print $4}' /proc/self/mountinfo | grep -E '^/(home|var|usr)' | sort)
for p in /var /home /usr; do
if echo "$input" | grep -qx "$p"; then
echo "$p"
else
echo "$input" | grep "^$p/"
fi
done

the first part will find system files and also those that land in /, /mnt/, /mnt/folder2 and obscure places on the device
then the second command will add the common mountpoints to the search to ensure coverage as xdev wouldnt list /var/lib/containers or /home if they were mounts for example

so testing it but its looking good

Changes include
simplified config file
recentchanges reset prompts to reset config files
supports nuitka build

currently testing the mount search and nuitka build and then look for anything that can be added like dynamic appending for scan idx instead of just appending. Also could put in sync system clock. So the idea is to clean it up so that later on can be updated easier ect

Image

I got the clock time set in and also did the dynamic append for scan idx and symmetrics so the scan history for each profile is put in scans and scan_entries tables
so changes are in just going to test it and should have it done in about a day hopefully

06/16/2026
testing is nearly done so will release the qt and then add the find / -xdev and mounts to the bash so it can find files in / or obscure areas
parallelized inotify wait to do 8 files at a time.

With the core in a good spot can later put in blake2 and file shannon. Optionally implement watchdog instead of the inotify bash script so can integrate it with windows for precaching checksums.
Adding these later would prevent feature creep as its behind the scenes and avoid adding anything to the gui. So things like search on the database page are avoided for this reason

Image
so each scan is stored in scan_entries by basedir. when doing a scan it will list each previous scan and the current scan out to the diff file. replacing the footer with all the scans and if symmetrics is checked it lists symlinks that target changed, files that no longer exist on the profile, directories that had no files when profile was made but now do and new directories since profile was made at the bottom

recentchanges 6.1.2 06/17/2026
https://github.com/dreadwrr/Recentchanges-Linux
Added lcd alarm clock and set system time
Changed the way the find command is run
Updated query and analytics
Simplified config and added ease of use like remember last dir for newer than
Added in functionality to make maintenance easier for future updates
recentchanges reset prompts to reset configs
if unable to determine drive type prompts


requires user pinentry setup. on nemesis should already be setup. for installing see above post viewtopic.php?p=105456#p105456

if setting an alarm sound file and get a crash its because its trying to load hdmi audio drivers. export LIBVA_DRIVER_NAME="" should fix it

will go back to the bash script to adjust the analytics which are slightly too high and add in find -xdev and mount search

updated bash versions with adjusted analytics and new find -xdev. Can look into adding watchdog to Qt versions or add file shannon and blake2 later on

I found a consistent dark mode for porteus which I was having trouble setting initially and it currently follows system theme

so the next update will have it like this as default:
Image

going forward I updated the python special edition which is the bash version but done in python and its really fast. These version have no dependencies so I decided to update the python version. will continue to test it and put in some more error handling

Also for the qt I will pull inotify wait out from the xRC option and put in watchdog so it can integrate with the windows version to look for created files with preserved metadata

ImageImage

the one on the left is on the first run of the python edition. then if the logger starts backing up can look to offload to a thread but seems to be working good as hanly doesnt do that much but is setup for expansion later if needed. I released the python edition and will start to work on watchdog for the qt just have to see what to exclude.
Last edited by dreadbird on 10 Jul 2026, 19:56, edited 5 times in total.

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#74 by dreadbird » 25 Jun 2026, 20:48

https://www.github.com/CodeQuestions
https://www.youtube.com/watch?v=2XdhmcyAnH0&t=65s

Image

I found this for PyQt5 and it works with pyside6. The core was there and I adjusted a few things specically the decimal wasnt working. I spent a day and refactored it and now have a working calculator engine.
Im going to do the buttons for the scientific part which I think will be square or square with round corners. this will be available in the menubar for the update next month.

ImageImage
with block mode

Image
with the button layout was able to fit base 2 so x^2 becomes 2^x and log base 2. as well as rand and randint with max randint setting to pick random numbers.
will move rand to right click as its out of place. so rnd rndno and rndg for gauss. which puts it on the outside

have it to this point and then wire it in. After see if it can be made more streamlined to be more compact version. the spacing I can make closer together which probably will be better

The history can be shown on the hudt. I will think of a way to save the history. so when the app is reloaded and the calculator opened it loads recent history. and it can be cleared

log on closed paren so if it throws can see the problem for maintenance and building. with commented out debug section for debug or alternative to eval with pre calculations

calc debug mode ERROR on DEBUG shows substituted expression before eval

06/28/2026
Have the buttons done looking to put in mpmath for a decimal mode that can be sped up with gmpy2 package for 50 decimal precision and float would be regular. as well as scientific display threshold.
have mpmath in and doesnt require it to be installed. used regex for inserting the consistent types. so now just the button layout and ordering before testing each scenario. trying to get thing perfect visually or adding features is working in the wrong direction so will finish it up by adding a setting to fold into regular calculator which would just use float mode as the display would be smaller

The calculator is complete but testing and adjusting screen formatting for text size adjust.
Also have watchdog done but looks like windows doesnt even need it. with having it already done in the python edition can see which is better and change it out or bolt in sometime later

Image

got it setup in Tool menu and get the output adjusted. the biggest challenge was the text size its not linear so had to setup the ranges. But will get it set in and then finish off the watchdog

inotify wait changes:

/tmp/file_creation_log.txt

instead of parsing this it can be used as a history view like they used to have in paper recording control systems. so can be viewed that xRC is working and checking for created files from watchdog
the cache is built /tmp/dbctimecache/ctimecache for files > 1MB ctime >= mtime

hashing a 900mb file takes 1.3 seconds and 9 seconds on hdd. so what this will do is if there were a few large sized downloads the hashes would already be stored and
shave off a significant amount of time from a search. then if something goes wrong with the automation the results arent effected. so the system would be stable
and give more feedback indirectly if xRC is on.

on windows it would be stored in <app install>/scripts/file_creation_log.txt /scripts/ctimecache /scripts/watchdog.py

and a tray icon is in the bottom right after one hour closes

Image

when the app starts it checks the time from file_creation_log.txt from current time back 6 hours or cutoff. and trims. Have both linux and windows done so will test with downloaded files on windows to get it set right but seems good to get it this far.

rolling with high water and low water. if it reaches high water trim back to low water.
or by span if above min_span clear the log

currently have watchdog done but there are some edge cases and then will update the bash inotify script so can release together

User avatar
dreadbird
Shogun
Shogun
Posts: 263
Joined: 08 Dec 2024, 04:30
Distribution: porteus5

Changes:EXIT xzm

Post#75 by dreadbird » 07 Jul 2026, 13:20

Released version 6 for bash versions with new inotify script. This Includes changes found from the watchdog script. Then the python watchdog should be easier finalize now that the bash version is done.

the new file_creation_log.txt is a method to see all created files using inotify wait. it is setup to specifically log created files only with max workers and idle workers

ImageImage
Put the probability functions or custom alt functions on right click which keeps things organized without any real refactoring or gui clutter.
The upper limit can be set in the config here its set to 9999999 so it can be used for picking lottery numbers and things

calculator supports up to 150 decimal precision and works 30 above that

Released 6.2.0 with watchdog for windows. Will work on getting linux done which I have the watchdog done just have to debug it. and should be fairly straight forward. then later on can add more artwork but things are in a good spot and can look to stability. With adding blake 2 and file shannon sometime far later

ImageImage
Auto dark mode for porteus

Have linux in just have to try out watchdog in the start menu for 6.2.0. The clock should be white for default will see if I can get it set right.
The search is now one process and with watchdog created files are cached and can increase the main search speed

If there are relevant mounts a time offset is added to ensure the best possible chance of finding files

released python special edition v6 and then give extra time to see if any bugs missed for qt before release for linux

Post Reply