Tool Others Vambropy [v1.16.3]: VaM packages & user content database, management, and a complement to VarBrowser

doggava

Newbie
Dec 16, 2021
58
16
Feature has been added to upcoming* version. It supports + - and * advanced filters, so you could do *cloth for pure clothing packages or +cloth -morp +appe -sce for exactly what filtering you need. The filters don't have to be exact, cloth or clothing or clo does the same thing. This feature has been added based on your feedback. Thanks, and keep them coming ;)



Feature added to upcoming* version. Pressing A on uninstalled packages directly installs and sets auto-install for the package. Added based on your feedback.



This is one of the big feature of the upcoming* version. The UI has been completely redesigned for content density and simplicity. 90%+ of the height of the window is used for the packages table. Also, the font size can be adjusted trough a settings panel.

View attachment 4920569



There was a bug where the table wasn't refreshed after an operation, and it gave the impression nothing happened even though the packages were installed/uninstalled in the background. New version fixes that by forcing a table refresh after an operation. Also, there is the new status column at the left side of the table (S) that indicates the status with text. The status column is exempt from highlight coloring and even when selecting groups it remains clear to read status.
The status column currently indicates I for auto-installed packages and here the color is the differentiator (blue in this case). Need feedback if the status name should be changed to A for auto-installed.

Here is multi group selections using ctrl+clickdrag.
View attachment 4920594

Upcoming* = Only if commondi32 wants to merge the new UI to the main Vambropy app. The issue is that the code complexity has increased by at least 3X for the UI part. It's a complete refactoring of the UI code using new libraries and code style. The reason for the refactor is that it adds a massive performance boost to the UI (remember when I benchmarked the column sorting and said is wicked fast at 680ms? well... with the new UI it's instant).

doggava Your feedback already changed the app functionality in a big way. Maybe you'll be interested in beta testing the next version since you already are actively using it. I'm working on the app almost daily (after work), and don't have the time to test every single function after I make a change. You should continue providing feedback either way, as it will likely end up in the app.

This is how my UI modification is looking: the inbuilt image preview can be custom size or it can be detached and moved to second screen or hidden

View attachment 4920646 View attachment 4920647 View attachment 4920648

Many new themes have been added, with a focus on information density and making use of all available pixels.

View attachment 4920653
Thanks for the kind words - it's great tool you have here, so I am glad to help you guys out as much as I can!

I have been travelling past few weeks, but can't wait for future updates. Let me know if theres some beta stuff to test as well.
 

commondi32

Newbie
Jul 16, 2020
62
49
Thanks for the kind words - it's great tool you have here, so I am glad to help you guys out as much as I can!

I have been travelling past few weeks, but can't wait for future updates. Let me know if theres some beta stuff to test as well.
Thanks doggava! This new update has smoother packages and dependencies section management, with better menus with disabled options (on single selection). I think it can helps the user by remembering what can be done with specific items.
I could not get to work keyboard selection with cursor keys yet. Anyway mouse selection works very nice at the moment with Shift and Ctrl modifiers. (i.e. Click on an item, scrolling and then click on another with Shift pressed, very useful).
And the database updaters (all deps usage count and new old dep versions) are pretty quick and truly in background now.
 

commondi32

Newbie
Jul 16, 2020
62
49
I have a question about the symlinks for older dependencies, because I have tried with some scenes referencing old missing plugin versions, however the new version plugin was loaded. Maybe I have a plugin fixing this or VaM does it. I have not tested it fully. Does some plugin allow to automatically use new version of a plugin when the specified one is not found?
 

emptyhol

New Member
Sep 5, 2024
13
84
Version Vambropy_v1.16.1. Double CLick vambropy.exe, after i close “rejected package” window, 22 windows show up lol. 1751127901934.png
 

commondi32

Newbie
Jul 16, 2020
62
49
wtf! lol I think it is related with the threads in the compiled version, when it access the root window in this case for displaying the bad package message window it fires up all new processes. If you start it from source (python vambrpoy.pyw) it should start ok. I'm fixing it soon, reverting back to ThreadPoolExecutor.
 

commondi32

Newbie
Jul 16, 2020
62
49
Can you implement a function to disable toggle keys completely, so pressing A wouldnt change any vars that are already blue to white, or when pressing I to let them change from white to orange. I would like to bind the the off/opposite action keys seperately.
I was thinking about using ctrl+key instead for all single key hotkeys. I have found myself typing in the browser view thinking that I was in the entry filter, for example, which leads to accidentally doing something unintended with the selected item(s). Also, maybe redirecting focus to package entry filter when typing text in the packages view? if I could make it work... That, along with the filter groups and disabled items in menus would be less confusing, I think.

Btw, what is the best way to see all uninstalled (orange, green) clothing in the tool?
I added a filter button in dependencies for it, 'Uninst+Repos'. Will try getting some more space and add it to packages too.

Also, could you create a functionality that would uninstall all older version vars and give the option to link all missing older version vars to its latest version instead. This could be done by e.g. creating a symlink with the old version name, but linking to its latest version instead. So in essense you would, as a result, you would have in your Addonpackages folder many plugin symlinks with old version numbers pointing to only single latest var version.
I have a question about the symlinks for older dependencies, because I have tried with some scenes referencing old missing plugin versions, however the new version plugin was loaded. Maybe I have a plugin fixing this or VaM does it. I have not tested it fully. Does some plugin allow to automatically use new version of a plugin when the specified one is not found?
I have tried more scenes verifying that VaM uses latest version of plugins if the fixed version dependency is not found. So I see no point in creating symlinks to the latest version named as old versions. Because, by doing that, 1) VaM actually thinks there are multiple versions and scans the same file again multiple times. And 2) If a scene fails, VaM's packages section* or Vambropy would not easily show the problem, as it is good to try to get the scene working by installing the real exact version required first, in my opinion.

* VaM's packages section turns very slow when it has many packages in it. I used it mostly when I needed to re-scan the packages. I usually use Vambropy to install, then back to VaM and re-scan packages, also I use a Keybindings' hotkey for re-scanning the packages and avoid activating that window, in order to use the ones installed by Vambropy during the session.

So... I think a fake version would make things worse, in fact. The point of this app is to have better control on those situations. The new 'update old' menu option updates the database with older versions on exact dependencies and allows to easily pinpoint them, also to keep in mind that if a scene fails, installing the older exact versions could be a solution.
In addition, the new 'Ignore' menu option that allows to ignore and remove from dependencies' view those impossible-to-find or bad-named missing dependencies, helps in avoiding to try to download the same failing versions again, for example.
After adding these features, I have found some misnamed dependencies and I fixed them by creating a copy from the correct named versions, or by finding another file that provides the same morphs needed, and make a copy with that name. Also found dependencies sitting there that were not really needed when I looked into the actual scene's .json file
(Vambropy currently scans meta.json for dependency, but an option could be added to re-scan dependencies from the content's .jsons. The function is already written for the User content update anyway, not big deal adapting it for zips. It would take time to scan, some minutes maybe, but at the same time it would probably prevent to download/install unneeded deps).
 

doggava

Newbie
Dec 16, 2021
58
16
I was thinking about using ctrl+key instead for all single key hotkeys. I have found myself typing in the browser view thinking that I was in the entry filter, for example, which leads to accidentally doing something unintended with the selected item(s). Also, maybe redirecting focus to package entry filter when typing text in the packages view? if I could make it work... That, along with the filter groups and disabled items in menus would be less confusing, I think.


I added a filter button in dependencies for it, 'Uninst+Repos'. Will try getting some more space and add it to packages too.




I have tried more scenes verifying that VaM uses latest version of plugins if the fixed version dependency is not found. So I see no point in creating symlinks to the latest version named as old versions. Because, by doing that, 1) VaM actually thinks there are multiple versions and scans the same file again multiple times. And 2) If a scene fails, VaM's packages section* or Vambropy would not easily show the problem, as it is good to try to get the scene working by installing the real exact version required first, in my opinion.

* VaM's packages section turns very slow when it has many packages in it. I used it mostly when I needed to re-scan the packages. I usually use Vambropy to install, then back to VaM and re-scan packages, also I use a Keybindings' hotkey for re-scanning the packages and avoid activating that window, in order to use the ones installed by Vambropy during the session.

So... I think a fake version would make things worse, in fact. The point of this app is to have better control on those situations. The new 'update old' menu option updates the database with older versions on exact dependencies and allows to easily pinpoint them, also to keep in mind that if a scene fails, installing the older exact versions could be a solution.
In addition, the new 'Ignore' menu option that allows to ignore and remove from dependencies' view those impossible-to-find or bad-named missing dependencies, helps in avoiding to try to download the same failing versions again, for example.
After adding these features, I have found some misnamed dependencies and I fixed them by creating a copy from the correct named versions, or by finding another file that provides the same morphs needed, and make a copy with that name. Also found dependencies sitting there that were not really needed when I looked into the actual scene's .json file
(Vambropy currently scans meta.json for dependency, but an option could be added to re-scan dependencies from the content's .jsons. The function is already written for the User content update anyway, not big deal adapting it for zips. It would take time to scan, some minutes maybe, but at the same time it would probably prevent to download/install unneeded deps).
Ok, but fixed references are a pain. I want to avoid having a same var twice, even just different versions if it. I have way too much vars with that logic anyhow. If some scenes would get broken by using 'latest', I don't mind.

One neat solution is to have all vars modified, so that deps are forced to always point to version -latest. Like VamUpdater here does:



But Updater is way too buggy, seems abandoned. Most of all it's clumsy to update list manually and very slow to run as it pretty much scans all files again and again.
 

commondi32

Newbie
Jul 16, 2020
62
49
1.16.2 keeps duplicating itself nonstop once opened, even after flesh installation, and I have to reboot my PC.
I had one of these happening after multiple duplicate var file findings from the latest version of the tool - melted my pc too like a virus :D
My apologies for that. I have removed the binaries until the next update. I recommend running this version from sources at the moment (python vambropy.pyw). I will test many times under different conditions. Duplicate vars was one reason, yes. I will need to check it thoroughly.
 

commondi32

Newbie
Jul 16, 2020
62
49
Ok, but fixed references are a pain. I want to avoid having a same var twice, even just different versions if it. I have way too much vars with that logic anyhow. If some scenes would get broken by using 'latest', I don't mind.

One neat solution is to have all vars modified, so that deps are forced to always point to version -latest. Like VamUpdater here does:



But Updater is way too buggy, seems abandoned. Most of all it's clumsy to update list manually and very slow to run as it pretty much scans all files again and again.
Is not VaM using latest version anyway, when exact version is not found? I tried that with many scenes requiring an exact old version (which I had not installed) and all scenes loaded with latest version. For that reason I think there is no need to have a same var twice. Just moving the older versions out of VaM scope, or manually deleting them (which I do not recommend, at least for plugins) should be enough.

For example, there is a discussion in a thread about assets by Vamsoy. There was a scene which required 14mhz.View2Atom.4 and it seems the download of it is corrupted in the Hub. So, the scene was loading with the latest version but failed to start because incompatible stuff (not because v4 was missing). So in that case a newer and better version breaks the scene. If i use a fake version it will be the same. If I mess with the var to relink it to latest it will be the same. Solution (at least, an easy one) is to find the exact version from 14mhz collection.

What Vamupdater does is not neat. Changes it does cannot revert anymore. If that Vamsoy's scene runs fine with an older version, after Vamupdater you will not know why the scene is not loading. Maybe you prefer to skip it, and it is ok. But for that, in my opinion, you only need to remove the old dependencies and have the new installed.

Maybe you would like to have an option to install the latest dependency versions? We could make use of the recent old version tag for installing dependencies -when a dependency is old, install the new one instead- and avoid modifying vars and duplicating with symlinks...
 

doggava

Newbie
Dec 16, 2021
58
16
Maybe you would like to have an option to install the latest dependency versions? We could make use of the recent old version tag for installing dependencies -when a dependency is old, install the new one instead- and avoid modifying vars and duplicating with symlinks...
This would be a great feature!
 

doggava

Newbie
Dec 16, 2021
58
16
1.16.2 keeps duplicating itself nonstop once opened, even after flesh installation, and I have to reboot my PC.
1751659161615.png
1751659211833.png
If you click the Close buttonon top right it creates a new instance and will ultimately stall your pc will zillions of copies. You have to kill them via task manager or e.g. Process Lasso.

Additionally there is not even a duplicate in the example any more, there was a symlink to the same file, but not any more. Duplicate info is somehow cached and not refreshed when starting the tool again.
 

commondi32

Newbie
Jul 16, 2020
62
49
If you click the Close buttonon top right it creates a new instance and will ultimately stall your pc will zillions of copies. You have to kill them via task manager or e.g. Process Lasso.

Additionally there is not even a duplicate in the example any more, there was a symlink to the same file, but not any more. Duplicate info is somehow cached and not refreshed when starting the tool again.
Finally, the zillion of window copies has been fixed. Actually, I reuploaded 1.16.1 named as 1.16.2 i think, twice! :WeSmart:. I have sort of messed up the folders while working on the future version.
For the second thing you mention, are they links from an external drive? I will have a look to it.

Anyway, I have good news because the latest dependency feature is working great. Next update will be the 'doggava' version I think, because the upcoming features qube21 and I have been working on were inspired in many of your ideas. So thanks again for your feedback and patience, doggava!