{"description":"Welcome to the best place to find Luanti mods, games, and texture packs","expired":false,"feed_url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases_feed.json","home_page_url":"https://content.luanti.ru/","icon":"https://content.luanti.ru/favicon-128.png","items":[{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Do not leak private skins to the Mineclonia skin chooser</li>\n<li>Fix embarrassing typo</li>\n</ul>\n","date_published":"2025-09-12T17:52:17Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/32747/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v7:3","tags":["release"],"title":"\"libskinupload\" updated: v7:3","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/32747/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Fixes /skinlimit breaking when the target player name contains dashes or underscores.</li>\n<li>Removes the no_skin_upload footgun in favor of a custom blacklist.</li>\n<li>Skin previews now use whatever mesh is currently applied to the player instead of 'character.b3d'.</li>\n<li>Adds a note to the help view that the uploader is responsible for UV correctness.</li>\n<li>Adds a shim to allow usage with Nodecore.</li>\n<li>Now grants skin_review to singleplayer automatically, which is why auto-approving didn't work before.</li>\n</ul>\n","date_published":"2025-06-28T01:58:50Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/31856/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v7:2","tags":["release"],"title":"\"libskinupload\" updated: v7:2","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/31856/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Fixes a somewhat significant oversight preventing requests from persisting across server restarts like they were supposed to</li>\n</ul>\n","date_published":"2025-05-12T20:29:33Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/31068/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v7:1","tags":["release"],"title":"\"libskinupload\" updated: v7:1","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/31068/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Added the ability to add and manage skin tags, and the ability to search for skins by tag.</li>\n<li>Skins uploaded by singleplayer will auto-approve.</li>\n<li>Miscellaneous fixes to hopefully make things more stable.</li>\n</ul>\n","date_published":"2025-04-09T19:21:09Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/30574/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v7","tags":["release"],"title":"\"libskinupload\" updated: v7","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/30574/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Added skin search functionality.</li>\n<li>Skin meta is now stored in a single file, rather than a separate file for each skin.</li>\n</ul>\n","date_published":"2025-02-20T23:46:45Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/29823/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v6","tags":["release"],"title":"\"libskinupload\" updated: v6","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/29823/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Attempts to work around what seems to be a race condition that causes missing texture warnings when significant lag is present.</li>\n</ul>\n","date_published":"2024-12-21T05:42:35Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/29010/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v5:1","tags":["release"],"title":"\"libskinupload\" updated: v5:1","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/29010/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Actually added the setting to disable optimized media if supporting ancient versions (like Multicraft) is a concern.</li>\n</ul>\n","date_published":"2024-12-16T18:10:27Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28941/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v5","tags":["release"],"title":"\"libskinupload\" updated: v5","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28941/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Private skins will now be displayed as a greyed-out model with a lock rather than being ignored and causing UI oddities.</li>\n</ul>\n","date_published":"2024-12-12T03:17:01Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28851/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v4:3","tags":["release"],"title":"\"libskinupload\" updated: v4:3","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28851/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Rectifies an unfortunate oversight that caused an infinite loop when private skins exist on the current page of the skinchoose formspec.</li>\n<li>Other trivial fixes.</li>\n</ul>\n","date_published":"2024-12-12T02:29:42Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28850/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v4:2","tags":["release"],"title":"\"libskinupload\" updated: v4:2","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28850/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Fixes a timing discrepancy that can cause uploaded skins to appear missing immediately before they are actually added.</li>\n<li>If the nextid file can't be accessed for some reason, mod storage will be used as a backup.</li>\n<li>Polyfills minetest.hypertext_escape for 5.9 compatibility.</li>\n</ul>\n","date_published":"2024-12-11T23:30:06Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28848/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v4:1","tags":["release"],"title":"\"libskinupload\" updated: v4:1","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28848/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Reviewers can now provide a reason for rejecting a skin request.</li>\n<li>Renamed /skindebug to /skinmanage .</li>\n<li>/skinmanage will now print a usage error by default instead of listing all skins' metadata.</li>\n</ul>\n","date_published":"2024-12-11T17:40:12Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28844/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v4","tags":["release"],"title":"\"libskinupload\" updated: v4","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28844/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Invalid base64 characters are now stripped from the data input field, to make copying from some terminals less painful. Data URL prefixes are also stripped, so that data URLs copied from online converters can be used without needing to be manually edited.</li>\n<li>The review and choose dialogs now show a message that there are no options when there are no options, instead of just being empty.</li>\n<li>Should fix a cryptic deprecation warning.</li>\n</ul>\n","date_published":"2024-12-11T00:17:34Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28835/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v3:1","tags":["release"],"title":"\"libskinupload\" updated: v3:1","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28835/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Replaces the help text in the upload dialog with a requestable modal, so that it doesn't take up space when it doesn't need to.</li>\n<li>It is now possible for reviewers to configure the maximum number of concurrent requests a player is allowed to submit, using /skinlimit.</li>\n<li>Skins are now dynamically allocated. This means that skins will not be added to the server's media list until they have been worn by a player, potentially drastically reducing the media load of having a very large number of skins. The skin selection dialog, however, needs to use raw base64 textures because of this, and thus will be a bit less performant than before.</li>\n<li>The above behavior can be reverted with a setting if you judge that necessary.</li>\n<li>Adds a new /skindebug subcommand to change skins' metadata.</li>\n<li>The unified_inventory page now has its own icon instead of naively trying to use the u_skins one.</li>\n<li>Minor API additions.</li>\n</ul>\n","date_published":"2024-12-10T16:16:36Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28829/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v3","tags":["release"],"title":"\"libskinupload\" updated: v3","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28829/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<ul>\n<li>Adds a semi-dynamic preview to the skin upload formspec, and improves its layout.</li>\n<li>Adds a bit more help text because the previous improvements make things less crowded.</li>\n<li>The skin selection formspec now uses scrolled pagination instead of dumping the skin previews for every single skin into a scroll container.</li>\n<li>Skin descriptions work now.</li>\n<li>Skin descriptions now support a knockoff version of Markdown.</li>\n<li>The unified_inventory page now rediects to the main selection dialog for changing skins instead of trying to use a separate implementation.</li>\n<li>IDs of newly approved skins are now based off a file instead of mod storage, for easier migration from another skin mod.</li>\n<li>This release includes a basic PHP script to import an existing u_skins library into libskinupload.</li>\n</ul>\n","date_published":"2024-12-07T05:05:51Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28788/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"v2","tags":["release"],"title":"\"libskinupload\" updated: v2","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28788/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.ru/users/Signal_/"},"content_html":"<p>Initial release.</p>\n","date_published":"2024-12-02T00:07:41Z","id":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28703/","image":"https://content.luanti.ru/thumbnails/4/44f2011463.png","language":"en","summary":"Initial release.","tags":["release"],"title":"\"libskinupload\" updated: v1","url":"https://content.luanti.ru/packages/Signal_/libskinupload/releases/28703/"}],"title":"ContentDB package updates","version":"https://jsonfeed.org/version/1"}
