• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
YAVAM - Yet Another VaM Addon Manager

Plugins + Scripts YAVAM - Yet Another VaM Addon Manager

Download [5.34 MB]

fivel

New member
Joined
Apr 9, 2025
Messages
18
Reactions
22
fivel submitted a new resource:

YAVAM - Yet Another VaM Addon Manager - GUI Application for massive .var browsing

YAVAM (Yet Another VaM Addon Manager) ~ ✨


Your .var library, but faster, smarter, and available everywhere. 💖
Manage your collection from your PC, or stay cozy in bed and use your phone. 🛌💤

Hi! This is YAVAM. It's a standalone tool designed to be the "Brain" for your massive Virt-A-Mate content collection. 🧠

It indexes everything (and I mean *everything*, thousands of files in seconds), figures out what's inside them, and...

Read more about this resource...
 
Last edited:
fivel updated YAVAM - Yet Another VaM Addon Manager with a new update entry:

YAVAM v1.2.16 Update

YAVAM v1.2.16 Update 🌸

Hey everyone! This update focuses on making the library cleanup tools safer and easier to use, plus a bunch of improvements for mobile and web users.

View attachment 557195View attachment 557196

✨ What's New
  • Smarter Cleanup (Optimization Modal):
    We've redesigned how you manage duplicate packages. It's now split into three tabs (Merging, Versions, Review) so you always know what's happening...

Read the rest of this update entry...
 
This looks like a pretty nice tool. I'm wondering if this can "fix" my lingering problem of having multiple versions of the same morphs in my big (bloated) installation.

I.E. having the exact same Morph present in perhaps dozens of different packages, resulting in having the same named Morph in VAM, numbered like "v1, "v2", etc (goes way up sometimes to v12, etc). I know that VAM1 suffers with having too many Morphs (degradation of performance over time, if we just keep adding content non-stop; which I do try to temper myself). The problem is trying to sort through all of those packages manually to re-create them without the duplicated Morphs would be a big time-eater for me. I'm too lazy to do that and, also, it would genuinely take me weeks to finish such a job even if I wanted to take the time to do it.

SO... main point is: can this tool actually do that?

If so, then I do wonder though... if I saved various custom characters with those "v3", "v7", v-whatever-numbered Morphs as part of their Morph preset... will those Morphs 'disappear' from a cleaned installation and the character will then "miss" those Morphs when loading them? (I.E. the game will be searching for those numbered Morphs and not find them, no? or will it just revert back to 'original' Morphs automatically?).

Anyway, thanks for your work. I'll probably give this tool a try.
 
I have never released a software/product like this,
This looks like a pretty nice tool. I'm wondering if this can "fix" my lingering problem of having multiple versions of the same morphs in my big (bloated) installation.

I.E. having the exact same Morph present in perhaps dozens of different packages, resulting in having the same named Morph in VAM, numbered like "v1, "v2", etc (goes way up sometimes to v12, etc). I know that VAM1 suffers with having too many Morphs (degradation of performance over time, if we just keep adding content non-stop; which I do try to temper myself). The problem is trying to sort through all of those packages manually to re-create them without the duplicated Morphs would be a big time-eater for me. I'm too lazy to do that and, also, it would genuinely take me weeks to finish such a job even if I wanted to take the time to do it.

SO... main point is: can this tool actually do that?

If so, then I do wonder though... if I saved various custom characters with those "v3", "v7", v-whatever-numbered Morphs as part of their Morph preset... will those Morphs 'disappear' from a cleaned installation and the character will then "miss" those Morphs when loading them? (I.E. the game will be searching for those numbered Morphs and not find them, no? or will it just revert back to 'original' Morphs automatically?).

Anyway, thanks for your work. I'll probably give this tool a try.
Hi! Thanks for reaching out, and no, currently this tool is not capable of merging or manipulating internal package contents and the main reason has to do with my understanding of how packages work internally, but I've been recently checking out some package's internal contents and brainstorming solutions in my head.

You brought a very tricky question, and I did face the same issues, there are massive var files that have a HUGE amount of morphs and other embedded contents from other packages merged into one (Why!?) and I've been thinking about adding a dedicated window to identify and clean contents out of var files as long as they exist in another package from the same library, but for now I do not want to touch all of that since I just started its development a few days ago and got lots of stuff to polish around, I think it's way too early to deal with that level of complexity but definitely something I wanna do if I manage to get the time!
Probably the hardest part relies on identifying the morphs that presets use, I'll have to study how preset files are written, could be an interesting challenge to deal with but I cannot promise anything >.<

For now, the main purpose of this tool is quick browsing between different libraries located across your drives with recursive (deep) sub-folder scanning, the only optimization methods I have incorporated rely on searching for exact package duplicates and disabling older versions using VaM's native ".var.disabled" package name~
 
It would be great to assign rating to var files, like in XnView.

Снимок1.JPG
 
It would be great to assign rating to var files, like in XnView.
While I personally don't see myself using this, I bet that it'll be very helpful to implement, although my opinion on this feature is a little negative 'cause it breaks with my vision of a ~portable application~
I've added a backlog card on GitHub with all technical considerations for this feature in case you're curious, thank you!
 
Cool app, I've been searching for something like this just to be able to browse and catalogue my collection. I see that you are able to have separate libraries with different locations which is cool but can I suggest having an option for 1 library having multiple locations.

I use browser assist's offload feature that stores disabled vars in an offloaded folder and enabled apps in addon packages folder. Currently I am forced to have 2 separate libraries that I have switch to search or browse for specific vars, would be more convenient if could just have 1 library that encompasses both those locations.
 
Cool app, I've been searching for something like this just to be able to browse and catalogue my collection. I see that you are able to have separate libraries with different locations which is cool but can I suggest having an option for 1 library having multiple locations.

I use browser assist's offload feature that stores disabled vars in an offloaded folder and enabled apps in addon packages folder. Currently I am forced to have 2 separate libraries that I have switch to search or browse for specific vars, would be more convenient if could just have 1 library that encompasses both those locations.
Greetings~
I was thinking of something like this already, I had a very basic idea of how it would work but I need to plan it carefully, because the way I handle "package merging" under the optimization tool relies on merging packages at the current library's root folder, moving all found duplicates to the root, if you're interested this is related to an update I have in mind for a dedicated library management window, for now at 1.2.X the library management is very 'lite', I understand the frustration of not being able to merge two or more folders into one single collection, here you can read more about that update (but it is very poorly written, I'm iterating over my ideas to make everything clearer), it will most likely come out at 1.4.X.

Right now I'm working on version 1.3.X which involves a bulky rewrite of the codebase to improve remote security and refactor code to make internal development easier and manageable, this is the foundation for the next minor (1.4.X) update so, I guess all you can do for now is wait and, meanwhile I'll continue experimenting :B
 
Last edited:
Is this meant to be complimentary to something like var browser, or is it meant to be a replacement to it?
 
Is this meant to be complimentary to something like var browser, or is it meant to be a replacement to it?
No, this is a standalone tool, you don't even need VaM installed or a strict list of packages at the root folder, because it is capable of recursively scan for packages (it identifies contents from all sub-folders). It just allows you to quickly browse through your libraries and perform additional actions.

However you can add one library and point it to your VaM's AddonPackages folder, this way you can disable, enable, optimize, or "install" additional packages from other libraries and VaM would be able to recognize it once you refresh your in-game packages, the reason 'disable' and 'enable' works is because I rename packages to '.var' and '.var.disabled' and the game is natively built to recognize what packages are enabled and disabled through that naming convention in the library.

And if you mix it with the remote access tools that were implemented (which you need to enable first from the settings panel), you'd be able to manage actual game contents from another device (like a tablet, phone, or another computer). For now I'd recommend to use this in short sessions and in a network environment you trust until 1.3.X, because I'll be adding security measures to prevent anyone from touching your libraries if you don't want it. (Yes, if you port forward or use tools like tailscale for tunneling you'd be able to manage your library remotely outside your network, this is NOT safe in current 1.2.X).

Sometimes I use this while working on something because the interfaces in VaM are slow, I bet the main reason is because of my hardware, I'm not a VR user sadly, so I just prefer to use my application to search for stuff, I do have plans for making an additional plugin that can interact with the game, like sending calls to refresh packages, but this is just a very vague idea I have in mind I don't really know how to make in-game plugins yet :D
 
Last edited:
fivel updated YAVAM - Yet Another VaM Addon Manager with a new update entry:

YAVAM v1.3 Release Notes

YAVAM v1.3 - The "Privacy & Stability" Update
The biggest overhaul to YAVAM yet. We've rewritten the core, hardened the security, and added tools to make your library management effortless.

✨ User Experience & Interface
  • Unified Settings Dialog: A completely redesigned, tabbed settings menu with smooth "cascading" animations. Everything you need (Application, Privacy, Network, Security) is now in one...

Read the rest of this update entry...
 
can i request a feature to check and show the depencies of the var as well as what other vars are dependent on it? that way i cna clean up some var that im never gonna use without breaking dependecies.
also is it possible to combine the index between two var folder, i use a main addon package and a backup one, i want to see if there are dupe that exist between the two
 
can i request a feature to check and show the depencies of the var as well as what other vars are dependent on it? that way i cna clean up some var that im never gonna use without breaking dependecies.
also is it possible to combine the index between two var folder, i use a main addon package and a backup one, i want to see if there are dupe that exist between the two
Thanks for your suggestions!
You can check dependencies of a package in 1.3, but this does not show the entire tree and I plan to add a section dedicated to analyzing dependencies after 1.4 (while the advanced library management will be added)
Comparison between two libraries is an interesting feature that I never thought of~ Perhaps I can experiment with that soon :3

Cleaning up unused vars is a plan I had in mind but requires finishing foundational features first:
- Advanced Library Management (v1.4)
- Dependency & Reverse dependency lookup (v1.4.X)

With the ideas I have and the suggestions I've received, I believe that this would take more time than expected and will have to re-think or re-design the application's UI/UX and navigation so everything stays comfortable to use in all devices, thank you very much for reaching out!
 
Hey, promising tool! Will be watching its development.

Does this not work with subfolders inside AddonPackages? I have a "Custom" folder in there with even more folders for organization. I noticed the tool is able to find the obsolete vars just fine (for example, flags Plugin v1 in Addonpackages as obsolote, disables it and leaves Plugin v2 in Addonpackages/Subfolder enabled). However, it also flags all of the vars in the subfolders as missing dependencies, even though all those dependencies are actually in the root of AddonPackages.

Thanks!
 
Hey, promising tool! Will be watching its development.

Does this not work with subfolders inside AddonPackages? I have a "Custom" folder in there with even more folders for organization. I noticed the tool is able to find the obsolete vars just fine (for example, flags Plugin v1 in Addonpackages as obsolote, disables it and leaves Plugin v2 in Addonpackages/Subfolder enabled). However, it also flags all of the vars in the subfolders as missing dependencies, even though all those dependencies are actually in the root of AddonPackages.

Thanks!
That's a bug! I'll fix it in the next patch, with the inclusion of being able to locate dependencies in the grid and even see the dependency list status (enabled? disabled? obsolete? corrupt? etc), in my local development environment this has been fixed and detects dependencies (and also dependants!), the next patch will probably be up in one or two days~ Here's a roadmap if you're interested!
Capture.PNG
Capture2.PNG

The bug occurs because the application tries to compare packages with the exact values from the dependency list, and if "creator.pkgName.latest" is listed but you have "creator.pkgName.8", it will be flagged as missing, which is a false positive.
 
Last edited:

YAVAM v1.3.10 Pre-Release​

Hi everyone! I've uploaded a pre-release to GitHub 'cause it's getting hard to test the application lately, it grew more than I expected, I apologize for the delay.
-> Download link

The reason is that I am testing different cases where the application may break, everything seems to work fine but I'm unsure, I'll be using it myself for a few days to see what can I find.
I need help for bug hunting too! (Or if everything seems to work great this week, I'll jump straight into 1.4 after publishing for automatic updates), so please use this pre-release with care and knowing it may contain bugs!

I'm running out of time, in about 10 days I'll have to pause the development to continue studying and working, if you found the application useful feel free to support me here! I'll continue working in yavam whenever I have free time~

Changelog (v1.3.10 Pre-Release)

Added​

  • Sidebar: Added a search/filter button to the "Creators" section header. It expands into an input field to quickly find specific creators and collapses when focus is lost.
  • UX: Added "Random Package" keybind (Default: R). Selects a random package from the current filtered view and opens the Details Panel. (Does not auto-scroll for performance).
  • Diagnostics: Added "Obsoleted By" inspector to the Right Sidebar, showing exactly which package caused an "Obsolete" status.
  • UX: Added Friendly Error Banner for library access failures (e.g. "Access Denied" or missing folders).
  • UX: Added visual indentation and hierarchy indicators to the Dependency List in the Right Sidebar to clearly distinguish direct vs. nested dependencies.
  • UX: Suppressed intrusive "Located Package" status (Success/Info) toasts when clicking dependencies. Toasts now only appear if the target package cannot be found (Error).
  • UX: Implemented a "Title Glow" animation in the Right Sidebar when the selected package is off-screen, providing a clear visual cue to click the title to relocate it.
  • UX: Decoupled "Locate Package" from strict file path matching. It now intelligently falls back to Package ID (Creator.Name.Version) lookup, enabling seamless navigation to the same package across different libraries.

Changed​

  • Status Colors: Changed "Root" package status color from Blue (System) to Indigo to clarify distinction from system files.
  • Status Priority: Prioritized status checks to ensure disabled packages are explicitly marked DISABLED (Gray) rather than OBSOLETE (Yellow) or DUPLICATE (Purple).
  • Duplicate Logic: Distinguish "Older Version" (Yellow/Obsolete) from "Redundant Copy" (Purple/Duplicate) to reduce false positives.
  • Refactor: Unified Recursive Logic between InstallPackageModal and Details Panel.

Fixed​

UX & Interface​

  • Library Navigation: "View Library" button in Install Modal now correctly triggers a library switch and re-scan.
  • Navigation: Fixed "Locate Package" requiring double-clicks when switching pages. It now correctly auto-scrolls to the target immediately after the page transition.
  • Filters: Clicking the active "Creator" filter pill in the Details Panel now toggles the filter off (Reset).
  • Selection: Fixed CTRL+A (Select All) not visually highlighting "Corrupt" packages.
  • Animation: Fixed "Locate Package" animation to restart reliably on rapid clicks (spam-proofing) and handle interruptions correctly.
  • Cleanup: Restored "Package Cleanup" context menu option.
  • UX: Improved Install Feedback. Upload and Install modals now show a summary screen (Installed/Skipped/Failed) instead of closing immediately.
  • UX: Upload Modal now automatically refreshes the library view upon successful completion.

Core Logic & Status​

  • Web Client: Fixed "Unauthorized" error when engaging in package actions (Toggle/Delete) by ensuring the authorization token is correctly attached to API requests.
  • Web Client: Fixed "Storage Unavailable" error in Upload Modal by protecting disk space & collision checks with authentication.
  • Web Client: Fixed missing file size display in Upload Modal for empty or special files.
  • Desktop Client: Fixed "0 B" file size display in Upload Queue by implementing a backend bridge to retrieve file metadata for dragged files.
  • Security: Hardened Desktop file system bindings to enforce strict path validation, matching Web Client security rules.
  • Web Client: Fixed "Infinite Scanning" spinner on mobile/web clients by ensuring the server broadcasts the scan:complete event upon finish.
  • Dependencies: Fixed "Incomplete" dependency list in the Details Panel by unifying recursive logic with the Install Modal.
  • Dependencies: Fixed "False Missing" status by automatically masking internal warnings (Mismatch/Root) as Valid (Green) if the package exists.
  • Dependencies: Fixed discrepancy where valid dependencies appeared as "Missing" due to dot-notation or implicit .latest references.
  • Dependencies: Fixed incomplete "Used By" lists by implementing fuzzy version matching (e.g. mapping v1 to 1 when exact match fails).
  • Cascade Delete: Fixed a critical bug in getImpact logic where dependency cascade simulation was failing due to mismatched ID formats.
  • Duplicate Logic: Resolved duplicate detection on Windows by enforcing strict lower-case path normalization.
  • Selection: Fixed "Grid Selection Mismatch" / Jitter. Enforced deterministic sorting (tie-breaking by filePath) to prevent packages from changing positions during re-renders, ensuring clicks always land on the correct item.
  • Keybinds: Fixed DELETE keybind. It now correctly triggers the delete action (with multi-selection support) instead of being blocked by the details panel logic.
 
Last edited:

YAVAM v1.3.10 Pre-Release​

Hi everyone! I've uploaded a pre-release to GitHub 'cause it's getting hard to test the application lately, it grew more than I expected, I apologize for the delay.
-> Download link

The reason is that I am testing different cases where the application may break, everything seems to work fine but I'm unsure, I'll be using it myself for a few days to see what can I find.
I need help for bug hunting too! (Or if everything seems to work great this week, I'll jump straight into 1.4 after publishing for automatic updates), so please use this pre-release with care and knowing it may contain bugs!

I'm running out of time, in about 10 days I'll have to pause the development to continue studying and working, if you found the application useful feel free to support me here! I'll continue working in yavam whenever I have free time~
Thanks for the update! Will be testing it out.
 
Back
Top Bottom