Direct downloads look at the ` zip`

Direct downloads (look at the .zip): https://tooomm.github.io/github-release-stats/?username=Gwillewyn&repository=dnd-item-icons-by-gwill Forge install percentage https://www.foundryvtt-hub.com/package/dnd-item-icons-by-gwill/ When looking at direct downloads (through Foundry package manager mostly) look at the zip link. The Forge caches packages, so the percentage install is a rough number w/ an unknown max. With the numbers you have it may just be easiest to update the links / package and put out an explanation. If you had some chops on the coding side it's definitely possible to provide migration, but you need to weigh that against the install base as well. Being a free package also determines the amount of support you provide.
UU
Unknown User313d ago
W
Wasp313d ago
The best way would be to create a migration for your users that would automatically update things for them. Not perfect, but will get people 90% there. I can send some code examples tomorrow!
UU
Unknown User312d ago
W
Wasp311d ago
Alright, so here's what I do in Sequencer - this function is run on ready, which sorts through my custom migrations and only runs the ones that are newer than the stored migration:
export default async function runMigrations() {
const currentMigrationVersion = game.settings.get("sequencer", "migration-version");
const sortedMigrations = Object.entries(migrations).sort((a, b) => {
return isNewerVersion(b[0], a[0]) ? -1 : 1;
}).filter(([version]) => isNewerVersion(version, currentMigrationVersion));

for (const [version, migration] of sortedMigrations) {
try {
await migration(version);
await game.settings.set("sequencer", "migration-version", version);
} catch (err) {
custom_warning(
"Sequencer",
`Something went wrong when migrating to version ${version}. Please check the console for the error!`,
true
);
console.error(err);
break;
}
}
}
export default async function runMigrations() {
const currentMigrationVersion = game.settings.get("sequencer", "migration-version");
const sortedMigrations = Object.entries(migrations).sort((a, b) => {
return isNewerVersion(b[0], a[0]) ? -1 : 1;
}).filter(([version]) => isNewerVersion(version, currentMigrationVersion));

for (const [version, migration] of sortedMigrations) {
try {
await migration(version);
await game.settings.set("sequencer", "migration-version", version);
} catch (err) {
custom_warning(
"Sequencer",
`Something went wrong when migrating to version ${version}. Please check the console for the error!`,
true
);
console.error(err);
break;
}
}
}
In this case, migrations is an object that looks like this:
const migrations = {
"1.0.0": async (version) => {
// do the thing that this migration needs to do, which only happens once, and only if it needs to happen
}
};
const migrations = {
"1.0.0": async (version) => {
// do the thing that this migration needs to do, which only happens once, and only if it needs to happen
}
};
I hope this makes sense 😄
TM
TyphonJS (Michael)311d ago
This definitely is the right path for controlling migration execution. This is also good when there are multiple expected migrations to potentially happen in future versions. In this case it may be a one time migration. I think @gwillewyn will have a challenge figuring out what to put in the actual migration function. If I understand things correctly this is an art asset package and the assets could be assigned in many different document types and locations potentially. Potentially scanning all / most document types to update any content links will be a demanding operation. You have to be very careful in general not to muck up anything that shouldn't be changed. I'm still leaning toward just bitting the bullet. Putting out a notification to any users. Explain the situation and put all your effort into making sure the updated package is indeed formatted in the way that you expect to organize things in a more permanent manner. Basically, creating effective migration code can be hard and error prone without a strong technical background in addition to Foundry dev knowledge and even more could potentially go wrong w/ incorrect migration code.
UU
Unknown User308d ago
Want results from more Discord servers?
Add your server
More Posts
`template.json` Nesting PropertiesI am in the process of developing a new system for Foundry VTT and I have found myself struggling toNested Navbar on Character SheetThanks to @mxzf I was able to get a nested navbar to show, but none of the data is being displayed tMigrating to DataModels - how to get data pre `cleanData`?Hello. In the lancer system, we have some old fields in our Actor/Item models what predate the existWhat Licence is appropriate for systems?As the title suggests, I have found a system that is not available on Foundry, and would love to chaHey not sure if this is the right spot...SLA Industries system.Ok it's not good BUT I've cobbled together a semi working version 0.1 of the system. My hope is as IPointer module update (70€)**Type:** Module **Short Description**: Uodate of the module Pointer and Ping (or Pnp) **Long DescriUpdate FoundryVTT Tabbed Chatlog to allow for Creation/Deletion of Additional Chat Tabs**Type**: [module] **Short Description**: Ability to create/remove Custom Additional Chat Log Tabs Google Sheet Character Sheet integration moduleIntegrate a highly formulaic google sheet into foundry for use for our custom ttrpg system that is iFallout 2d20: Radiation giving a visual indicator of reduced max HP**Type:** Module or Update, which ever is more convenient to the coder **Short Description:** As it (DnD 3.5e) Body slot in inventory or a new tabType: module Im looking for someone to make me a Body Slot module. It would be something like the Overhead Tile Fade for All Tokens module update (v9 to v10, D&D 5e)**Type**: Module **Summary description**: The module has stopped being updated, it is very simple, New Custom Tab for DnD 5e Sheet**Type:** Module. **Short:** I need something like the spellcasting table as a new tab in the charaCrossBlade V9 -> CrossBlade v10 Compatibiltiy**Type**: [Module] **Short Description**: A port of this older V9 module to V10 **Long Description**Modified character sheet for DND5EModule Short: I want a character sheet for DND5E to have the esper genesis look. Specifically the skHow to run code from a specific userHi, I have the function foo(bar) and when you run this function it opens a window with some detailAnswer OverflowHey there! I have some great news: __**Introducing @Answer Overflow indexing to The League!**__ TlAbout: #package-development**This thread is not for discussions about Foundry package development, but for discussing the purpoGood callIt's more reliable to enter the directory.Follow-up questionsFor Foundry v10+ here is the essential info for module integration as I gather you might want to loaIntegration of Vino Behaviour on TheatreSome time ago I had updated the module VINO (https://github.com/p4535992/foundryvtt-vino), the modul