Jump to content

Recommended Posts

Posted

Hi everyone,

It's been some months I'm working on an app based on PKHeX, allowing to manage pkms in saves, moving them between boxes, saves and local storage. Also allowing to edit any pkm (moves, nickname, EVs). And a centralized Pokedex grouping all saves pokedex.
The goal was to offer something easy to use, less raw than PKHeX, more limited and safe too. An app somewhat similar to Pokemon Home.

I put most details in file page, not sure if I should move them here.

Note that a web-app also exists (backend + frontend) for homelab environments. More in github repo: https://github.com/Chnapy/pkvault
For the tech part backend is C# (using PKHeX.Core) and frontend Typecript/React, the two being used by WinForm desktop app via WebView2.
---

I made this tool for my specific use-case: I want to transfer my pkms between my saves, without any generation barrier, I don't want to be blocked by trade-only evolves, and I'm tired of TM unique use in early gens.

With PKVault I can replay my good old Pokemon games in the conditions I want today, and maybe it can help some people here.

Big thanks to PKHeX contributors, to be honest I'm not sure I would have continue playing Pokemon games without this tool.

 

snap_1.png

snap_2.png

snap_3.png

snap_4.png

snap_5.png

  • Like 2
Posted

I grabbed the file this morning and I'm getting the below when running it.

************** Exception Text **************
System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
 

Posted

Thanks for your feedback @SailorNed, I just fixed the error and published a 1.0.1 clean version.

I forgot uses of dev-related tools. I just tested the app on a new PC and it should be ok.

Posted (edited)

One thing I'd like to see added is easier save file loading, instead of having to add the path to each you could scan a folder for files with certain extensions.

 

EDIT: I've tried everything and it refuses to load my files, be they .sav or just extensionless with `main`. This needs some instructions, I'm confused. 😅

 

Edited by RodrigoTR
Adding context.
Posted (edited)

You can put globs as save paths in Settings:

./saves/*.sav      <- any file .sav under "saves" folder
or
./saves/**/*.sav   <- any file .sav under "saves" folder, including subdirectories (recursive)

Note this is just an example, you can also use any other extensions (.srm, .gci etc), target parent directories, or use absolute paths.

(Just be careful in specific case you have save copies, if you have 2 same saves (with exact same ID in PKHeX) PKVault loads only one of them.)

For more details about globs you can search for "glob pattern", or use this small cheatsheet:

image.png.b3187b142ef3ce6b4a82b2d9a19f7d68.png

---

@RodrigoTR if you still have issues consider posting snapshot of your Settings page (save paths part), and the real paths of your saves.

In future I'll try to simplify this part. 

Edited by chnapy
Posted

Yes, every save types which works with PKHeX should work with PKVault.

Maybe file extension is not handled in your saves path/globs.

Posted
4 minutes ago, chnapy said:

Yes, every save types which works with PKHeX should work with PKVault.

Starting with generation 6 save files are extensionless, they're just a file called "main", just putting one in the folder isn't enough. I had to rename it to "main.sav", which converts it to a SAV file making it incorrect, and only them PKVault recognized it as there.

 

Posted

Ok then keep it named as "main" and just add globs like this

./saves/**/*.sav
./saves/**/*.gci
./saves/**/main
etc.

Files name/extension don't matter, you just have to put their paths (or equivalent globs).

 

Posted (edited)

@chnapy   I noticed something while using the program.   In the screenshot,  I have PKHEX and your program open and showing Box 1.    If a pokemon is in the party,  and if the same type of pokemon is in a box,  then that pokemon does not show up in PKvault.     You can see it from the blank spaces for venasaur,  charizard, blastoise, and raticate.    A version of each is in my party.

You have a great program, please don't think I'm being negative.   Just giving early user feedback.

Screenshot 2025-10-01 135538.png

Edited by SailorNed
Posted

I think it's because you have multiple copies of the same pkm.

In PKVault each pkm is defined by an ID, which is created from species + PID + IVs + Form.
In your case you're with 1st generation save (Red) which doesn't have PID, so probabilities to have 2 pkm with same ID is quite high.

This cause copies of 1st pkm to not show in program. It doesn't have any impact on your save data, pkm copies are not deleted, just ignored by the app.
I'm working on a fix since this is very annoying especially with old games.

Thanks for your report, don't worry I don't take feedbacks negatively.

Posted

Hi, I published a new version 1.0.2 with the bug about pkm duplicates fixed, and saves paths setting improved.

Posted

Hey, just made this account to come here and say thanks for this app. It's super cool to see this kind of interface. 

I have a bug report/suggestion. I have an X save file and it is a full living dex plus gender differences. I noticed that PKVault doesn't care about genders and merges the two mons together. I noticed that the Pokemon is identify as either female or no gender. Maybe there is an issue with male mons causing the gender differences to not be able to be broken out?

Posted

I just uploaded a new version with pokedex now including forms & genders, allowing full living dex.

Same in storage, each pkm displays its correct form & gender sprite and icons.

Posted (edited)

Are there any plans to make it so you can rearrange the order of boxes? (If i make box 1, box 2 and box 3, itd be cool to be able to but 2 before 1, etc)
Is making plugins for this a possibility? I'd love to make something like for example have a 'notes' tab so i can write something about each pokemon :)

Edited by Enan
Posted (edited)

This is one of the things ive wanted for a long time, thanks for making it!

Edited by Enan
Posted

Yes I'll check for adding boxes order change, for main storage only since saves boxes are fully defined by the game itself.

About a 'notes' tab or similar (tags etc), this is something I'm thinking of, it will be done I just don't know how yet.

Use of plugins is not planned yet, it requires some technical stability, the app being too young for now. 

Posted

First of all, thank you so much for this tool, it's what I've always wanted, also because it's the alternative to Home we've always wished for.

I wanted to report a bug in the latest version of the software, specifically in the "Pokedex" section. My Switch save files (Shield, Violet, PLA) are correctly detected in the "Storage" section, but in the "Pokedex" section, the software gives me an error: "Cannot read properties of undefined (reading 'generation')". If I remove those save files, the Pokedex section works correctly. I am also attaching a screenshot of the error. Furthermore, in the Pokedex section, when selecting individual Pokémon, the gender differences do not appear (both symbols are displayed), and some forms are shown as present in the Pokedex even if they are not in the save files. Additionally, Pokémon that do not have such gender-based form differences, like Charizard or Dragonite, are marked as having them. I am also attaching a screenshot of my "Pokedex" section.

I would also like to suggest a few additional features, such as importing an entire box into storage without having to import the Pokémon one by one, and the ability to reorder the boxes by Pokedex number in the storage section. It would also be interesting to have the ability to create multiple separate spaces to place Pokémon, for example: 1) Living Dex (with its own boxes), 2) Shiny Living Dex (with its own boxes), Competitive Teams, etc. Perhaps the "Storage" section would also be interesting without a division into boxes, but with a single space where all of them could be contained.

Thank you very much and congratulations on your work.

Immagine 2025-10-14 121955.png

Immagine 2025-10-14 121548.png

Posted

Thanks for your long feedback, it helps me a lot.

About the bug you're mentionning please can you share your save file ? I cannot reproduce the issue with my own files.

For the rest I'll try to answer point by point:

  • Pokedex
    • In Pokedex pkm details gender difference is not displayed
      This is to avoid some complexity since each pkm can have multiple genders and multiple forms and shiny/not-shiny.
      I'll try to do something about it.
    • Some forms are shown as present in the Pokedex even if they are not in save files
      This is an issue with most generations, I'll try to fix it. This is a painful work since each generation (even each game for some generations) has its own way to do and requires specific code.
    • Pokémon that do not have such gender-based form differences are marked as having them
      Right, I don't know why I ignored gender differences here, I'm going to fix it.
  • Storage
    • Importing an entire box into storage without having to import the Pokémon one by one
      I planned to allow move action on multiple selected pkms, I think it would answer your need.
    • Ability to reorder the boxes by Pokedex number
      Here too I have something in mind that would solve this need.
    • Ability to create multiple separate spaces (...)
      Interesting idea, I had some thought about 'grouping' boxes, something like that. My thoughts about it are not yet mature, cannot promise anything for now.

Thanks again for your feedback !

Posted

Thank you very much, you've been really kind and prompt.

Another piece of feedback I have is regarding the Pokedex section. When shiny Pokémon are present in any of the save files, the default sprite shown in the Pokedex is the shiny one, not the normal one. I'm attaching a screenshot of this as well.

Immagine 2025-10-14 185228.png

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...