From d6fb369bc2236402cb7daadf72dbb445b5c21846 Mon Sep 17 00:00:00 2001 From: Kouji Takao Date: Thu, 19 Mar 2026 02:37:25 +0900 Subject: [PATCH 1/5] feat: add Smalruby original sprites (Shimaraby & Shimacat) Add two original Smalruby sprites to the sprite library with locally bundled costume assets, avoiding dependency on Scratch CDN. - Shimaraby: rabbit sprite with 2 costumes and Chirp sound - Shimacat: cat sprite with 2 costumes and Meow sound - Add WebStore in legacy-storage.ts for local smalruby assets - Costumes served from static/smalruby-assets/ via fallback store Closes #337 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../scratch-gui/src/lib/legacy-storage.ts | 7 ++ .../src/lib/libraries/sprites.json | 84 ++++++++++++++++++ .../28a40afb2f2a69d2b6640aadecfd27cd.png | Bin 0 -> 9529 bytes .../57613248603bb9c5b4b767b72cd4fdef.png | Bin 0 -> 27484 bytes .../851e679b8f113ee90e0d686c33fbc940.png | Bin 0 -> 29041 bytes .../bd0ff11c925936ed5e0363112103cd0b.png | Bin 0 -> 9279 bytes 6 files changed, 91 insertions(+) create mode 100644 packages/scratch-gui/static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png create mode 100644 packages/scratch-gui/static/smalruby-assets/57613248603bb9c5b4b767b72cd4fdef.png create mode 100644 packages/scratch-gui/static/smalruby-assets/851e679b8f113ee90e0d686c33fbc940.png create mode 100644 packages/scratch-gui/static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png diff --git a/packages/scratch-gui/src/lib/legacy-storage.ts b/packages/scratch-gui/src/lib/legacy-storage.ts index 19882ae5ba5..106e3a3273f 100644 --- a/packages/scratch-gui/src/lib/legacy-storage.ts +++ b/packages/scratch-gui/src/lib/legacy-storage.ts @@ -111,6 +111,13 @@ export class LegacyStorage implements GUIStorage { [storage.AssetType.Sound], asset => `static/extension-assets/scratch3_music/${asset.assetId}.${asset.dataFormat}` ); + + // === Smalruby: Start of local sprite assets === + storage.addWebStore( + [storage.AssetType.ImageVector, storage.AssetType.ImageBitmap], + asset => `/static/smalruby-assets/${asset.assetId}.${asset.dataFormat}` + ); + // === Smalruby: End of local sprite assets === } private getProjectGetConfig (projectAsset) { diff --git a/packages/scratch-gui/src/lib/libraries/sprites.json b/packages/scratch-gui/src/lib/libraries/sprites.json index 5b0db0451d7..3116896b996 100644 --- a/packages/scratch-gui/src/lib/libraries/sprites.json +++ b/packages/scratch-gui/src/lib/libraries/sprites.json @@ -16716,5 +16716,89 @@ } ], "blocks": {} + }, + { + "name": "Shimaraby", + "tags": [ + "animals" + ], + "isStage": false, + "variables": {}, + "costumes": [ + { + "assetId": "bd0ff11c925936ed5e0363112103cd0b", + "name": "shimaraby-a", + "bitmapResolution": 2, + "md5ext": "bd0ff11c925936ed5e0363112103cd0b.png", + "dataFormat": "png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png" + }, + { + "assetId": "28a40afb2f2a69d2b6640aadecfd27cd", + "name": "shimaraby-b", + "bitmapResolution": 2, + "md5ext": "28a40afb2f2a69d2b6640aadecfd27cd.png", + "dataFormat": "png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png" + } + ], + "sounds": [ + { + "assetId": "3b8236bbb288019d93ae38362e865972", + "name": "Chirp", + "dataFormat": "wav", + "format": "adpcm", + "rate": 22050, + "sampleCount": 6097, + "md5ext": "3b8236bbb288019d93ae38362e865972.wav" + } + ], + "blocks": {} + }, + { + "name": "Shimacat", + "tags": [ + "animals" + ], + "isStage": false, + "variables": {}, + "costumes": [ + { + "assetId": "851e679b8f113ee90e0d686c33fbc940", + "name": "shimacat-a", + "bitmapResolution": 2, + "md5ext": "851e679b8f113ee90e0d686c33fbc940.png", + "dataFormat": "png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/851e679b8f113ee90e0d686c33fbc940.png" + }, + { + "assetId": "57613248603bb9c5b4b767b72cd4fdef", + "name": "shimacat-b", + "bitmapResolution": 2, + "md5ext": "57613248603bb9c5b4b767b72cd4fdef.png", + "dataFormat": "png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/57613248603bb9c5b4b767b72cd4fdef.png" + } + ], + "sounds": [ + { + "assetId": "83c36d806dc92327b9e7049a565c6bff", + "name": "Meow", + "dataFormat": "wav", + "format": "", + "rate": 44100, + "sampleCount": 37376, + "md5ext": "83c36d806dc92327b9e7049a565c6bff.wav" + } + ], + "blocks": {} } ] diff --git a/packages/scratch-gui/static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png b/packages/scratch-gui/static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png new file mode 100644 index 0000000000000000000000000000000000000000..f60da6ef6665ee8a9b477742eb58923266df2f19 GIT binary patch literal 9529 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 literal 0 HcmV?d00001 diff --git a/packages/scratch-gui/static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png b/packages/scratch-gui/static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png new file mode 100644 index 0000000000000000000000000000000000000000..0857db85dba6fc8a8ed88c7d692f477854f2f033 GIT binary patch literal 9279 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 Q_cI2drlhUdAa4`#U!#Xg#sB~S literal 0 HcmV?d00001 From d7e52ce95eadcf822c30c33296fc7be048869382 Mon Sep 17 00:00:00 2001 From: Kouji Takao Date: Thu, 19 Mar 2026 02:45:32 +0900 Subject: [PATCH 2/5] fix: use relative path for smalruby asset WebStore Absolute path /static/... does not work on GitHub Pages subdirectory deployments. Use relative path (matching the music sound store pattern) to ensure assets resolve correctly in all environments. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/scratch-gui/src/lib/legacy-storage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/scratch-gui/src/lib/legacy-storage.ts b/packages/scratch-gui/src/lib/legacy-storage.ts index 106e3a3273f..cad3e462980 100644 --- a/packages/scratch-gui/src/lib/legacy-storage.ts +++ b/packages/scratch-gui/src/lib/legacy-storage.ts @@ -115,7 +115,7 @@ export class LegacyStorage implements GUIStorage { // === Smalruby: Start of local sprite assets === storage.addWebStore( [storage.AssetType.ImageVector, storage.AssetType.ImageBitmap], - asset => `/static/smalruby-assets/${asset.assetId}.${asset.dataFormat}` + asset => `static/smalruby-assets/${asset.assetId}.${asset.dataFormat}` ); // === Smalruby: End of local sprite assets === } From 5e23fac3a16118e06bbf180acca8652beb27ada4 Mon Sep 17 00:00:00 2001 From: Kouji Takao Date: Thu, 19 Mar 2026 02:51:24 +0900 Subject: [PATCH 3/5] fix: resolve smalruby asset URLs using document.baseURI scratch-storage's assetTool requires absolute URLs to load assets correctly. Use document.baseURI to construct absolute URLs from relative paths, ensuring compatibility with both dev server and GitHub Pages subdirectory deployments. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/scratch-gui/src/lib/legacy-storage.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/scratch-gui/src/lib/legacy-storage.ts b/packages/scratch-gui/src/lib/legacy-storage.ts index cad3e462980..2203f623257 100644 --- a/packages/scratch-gui/src/lib/legacy-storage.ts +++ b/packages/scratch-gui/src/lib/legacy-storage.ts @@ -115,7 +115,10 @@ export class LegacyStorage implements GUIStorage { // === Smalruby: Start of local sprite assets === storage.addWebStore( [storage.AssetType.ImageVector, storage.AssetType.ImageBitmap], - asset => `static/smalruby-assets/${asset.assetId}.${asset.dataFormat}` + asset => new URL( + `static/smalruby-assets/${asset.assetId}.${asset.dataFormat}`, + document.baseURI + ).href ); // === Smalruby: End of local sprite assets === } From f2b5c09e5ba1a03eb1f8745ce17e7ebe7654114f Mon Sep 17 00:00:00 2001 From: Kouji Takao Date: Thu, 19 Mar 2026 09:12:39 +0900 Subject: [PATCH 4/5] refactor: use Scratch CDN asset hashes for Smalruby sprites Update assetIds to match Scratch CDN hashes for faster loading. Assets are now served from Scratch CDN first, with local fallback. Also reorder sprites to proper alphabetical position in library. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/lib/libraries/sprites.json | 168 +++++++++--------- ...g => ddaccfcda466a4887299feddc899fea7.png} | Bin 2 files changed, 84 insertions(+), 84 deletions(-) rename packages/scratch-gui/static/smalruby-assets/{28a40afb2f2a69d2b6640aadecfd27cd.png => ddaccfcda466a4887299feddc899fea7.png} (100%) diff --git a/packages/scratch-gui/src/lib/libraries/sprites.json b/packages/scratch-gui/src/lib/libraries/sprites.json index 3116896b996..9ad999d4656 100644 --- a/packages/scratch-gui/src/lib/libraries/sprites.json +++ b/packages/scratch-gui/src/lib/libraries/sprites.json @@ -11298,6 +11298,90 @@ ], "blocks": {} }, + { + "name": "Shimaraby", + "tags": [ + "animals" + ], + "isStage": false, + "variables": {}, + "costumes": [ + { + "assetId": "ddaccfcda466a4887299feddc899fea7", + "name": "shimaraby-a", + "bitmapResolution": 2, + "md5ext": "ddaccfcda466a4887299feddc899fea7.png", + "dataFormat": "png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/ddaccfcda466a4887299feddc899fea7.png" + }, + { + "assetId": "bd0ff11c925936ed5e0363112103cd0b", + "name": "shimaraby-b", + "bitmapResolution": 2, + "md5ext": "bd0ff11c925936ed5e0363112103cd0b.png", + "dataFormat": "png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png" + } + ], + "sounds": [ + { + "assetId": "3b8236bbb288019d93ae38362e865972", + "name": "Chirp", + "dataFormat": "wav", + "format": "adpcm", + "rate": 22050, + "sampleCount": 6097, + "md5ext": "3b8236bbb288019d93ae38362e865972.wav" + } + ], + "blocks": {} + }, + { + "name": "Shimacat", + "tags": [ + "animals" + ], + "isStage": false, + "variables": {}, + "costumes": [ + { + "assetId": "851e679b8f113ee90e0d686c33fbc940", + "name": "shimacat-a", + "bitmapResolution": 2, + "md5ext": "851e679b8f113ee90e0d686c33fbc940.png", + "dataFormat": "png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/851e679b8f113ee90e0d686c33fbc940.png" + }, + { + "assetId": "57613248603bb9c5b4b767b72cd4fdef", + "name": "shimacat-b", + "bitmapResolution": 2, + "md5ext": "57613248603bb9c5b4b767b72cd4fdef.png", + "dataFormat": "png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/57613248603bb9c5b4b767b72cd4fdef.png" + } + ], + "sounds": [ + { + "assetId": "83c36d806dc92327b9e7049a565c6bff", + "name": "Meow", + "dataFormat": "wav", + "format": "", + "rate": 44100, + "sampleCount": 37376, + "md5ext": "83c36d806dc92327b9e7049a565c6bff.wav" + } + ], + "blocks": {} + }, { "name": "Shirt", "tags": [ @@ -16716,89 +16800,5 @@ } ], "blocks": {} - }, - { - "name": "Shimaraby", - "tags": [ - "animals" - ], - "isStage": false, - "variables": {}, - "costumes": [ - { - "assetId": "bd0ff11c925936ed5e0363112103cd0b", - "name": "shimaraby-a", - "bitmapResolution": 2, - "md5ext": "bd0ff11c925936ed5e0363112103cd0b.png", - "dataFormat": "png", - "rotationCenterX": 63, - "rotationCenterY": 100, - "rawURL": "static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png" - }, - { - "assetId": "28a40afb2f2a69d2b6640aadecfd27cd", - "name": "shimaraby-b", - "bitmapResolution": 2, - "md5ext": "28a40afb2f2a69d2b6640aadecfd27cd.png", - "dataFormat": "png", - "rotationCenterX": 63, - "rotationCenterY": 100, - "rawURL": "static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png" - } - ], - "sounds": [ - { - "assetId": "3b8236bbb288019d93ae38362e865972", - "name": "Chirp", - "dataFormat": "wav", - "format": "adpcm", - "rate": 22050, - "sampleCount": 6097, - "md5ext": "3b8236bbb288019d93ae38362e865972.wav" - } - ], - "blocks": {} - }, - { - "name": "Shimacat", - "tags": [ - "animals" - ], - "isStage": false, - "variables": {}, - "costumes": [ - { - "assetId": "851e679b8f113ee90e0d686c33fbc940", - "name": "shimacat-a", - "bitmapResolution": 2, - "md5ext": "851e679b8f113ee90e0d686c33fbc940.png", - "dataFormat": "png", - "rotationCenterX": 90, - "rotationCenterY": 100, - "rawURL": "static/smalruby-assets/851e679b8f113ee90e0d686c33fbc940.png" - }, - { - "assetId": "57613248603bb9c5b4b767b72cd4fdef", - "name": "shimacat-b", - "bitmapResolution": 2, - "md5ext": "57613248603bb9c5b4b767b72cd4fdef.png", - "dataFormat": "png", - "rotationCenterX": 90, - "rotationCenterY": 100, - "rawURL": "static/smalruby-assets/57613248603bb9c5b4b767b72cd4fdef.png" - } - ], - "sounds": [ - { - "assetId": "83c36d806dc92327b9e7049a565c6bff", - "name": "Meow", - "dataFormat": "wav", - "format": "", - "rate": 44100, - "sampleCount": 37376, - "md5ext": "83c36d806dc92327b9e7049a565c6bff.wav" - } - ], - "blocks": {} } ] diff --git a/packages/scratch-gui/static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png b/packages/scratch-gui/static/smalruby-assets/ddaccfcda466a4887299feddc899fea7.png similarity index 100% rename from packages/scratch-gui/static/smalruby-assets/28a40afb2f2a69d2b6640aadecfd27cd.png rename to packages/scratch-gui/static/smalruby-assets/ddaccfcda466a4887299feddc899fea7.png From 1c3f91a21605d37638ae4b2fc2401a306957f414 Mon Sep 17 00:00:00 2001 From: Kouji Takao Date: Thu, 19 Mar 2026 09:17:10 +0900 Subject: [PATCH 5/5] feat: add Shimaraby/Shimacat costumes to costume library Add 4 costumes (Shimaraby-a/b, Shimacat-a/b) to the costume library so they can be added individually to any sprite. Also capitalize costume names in sprites.json for consistency with other sprites. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/lib/libraries/costumes.json | 52 +++++++++++++++++++ .../src/lib/libraries/sprites.json | 8 +-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/packages/scratch-gui/src/lib/libraries/costumes.json b/packages/scratch-gui/src/lib/libraries/costumes.json index 6da69b09363..5f94dea6fea 100644 --- a/packages/scratch-gui/src/lib/libraries/costumes.json +++ b/packages/scratch-gui/src/lib/libraries/costumes.json @@ -8960,6 +8960,58 @@ "rotationCenterX": 77, "rotationCenterY": 37 }, + { + "name": "Shimaraby-a", + "tags": [ + "animals" + ], + "assetId": "ddaccfcda466a4887299feddc899fea7", + "bitmapResolution": 2, + "dataFormat": "png", + "md5ext": "ddaccfcda466a4887299feddc899fea7.png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/ddaccfcda466a4887299feddc899fea7.png" + }, + { + "name": "Shimaraby-b", + "tags": [ + "animals" + ], + "assetId": "bd0ff11c925936ed5e0363112103cd0b", + "bitmapResolution": 2, + "dataFormat": "png", + "md5ext": "bd0ff11c925936ed5e0363112103cd0b.png", + "rotationCenterX": 63, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/bd0ff11c925936ed5e0363112103cd0b.png" + }, + { + "name": "Shimacat-a", + "tags": [ + "animals" + ], + "assetId": "851e679b8f113ee90e0d686c33fbc940", + "bitmapResolution": 2, + "dataFormat": "png", + "md5ext": "851e679b8f113ee90e0d686c33fbc940.png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/851e679b8f113ee90e0d686c33fbc940.png" + }, + { + "name": "Shimacat-b", + "tags": [ + "animals" + ], + "assetId": "57613248603bb9c5b4b767b72cd4fdef", + "bitmapResolution": 2, + "dataFormat": "png", + "md5ext": "57613248603bb9c5b4b767b72cd4fdef.png", + "rotationCenterX": 90, + "rotationCenterY": 100, + "rawURL": "static/smalruby-assets/57613248603bb9c5b4b767b72cd4fdef.png" + }, { "name": "Shirt-a", "tags": [ diff --git a/packages/scratch-gui/src/lib/libraries/sprites.json b/packages/scratch-gui/src/lib/libraries/sprites.json index 9ad999d4656..06ea27286c2 100644 --- a/packages/scratch-gui/src/lib/libraries/sprites.json +++ b/packages/scratch-gui/src/lib/libraries/sprites.json @@ -11308,7 +11308,7 @@ "costumes": [ { "assetId": "ddaccfcda466a4887299feddc899fea7", - "name": "shimaraby-a", + "name": "Shimaraby-a", "bitmapResolution": 2, "md5ext": "ddaccfcda466a4887299feddc899fea7.png", "dataFormat": "png", @@ -11318,7 +11318,7 @@ }, { "assetId": "bd0ff11c925936ed5e0363112103cd0b", - "name": "shimaraby-b", + "name": "Shimaraby-b", "bitmapResolution": 2, "md5ext": "bd0ff11c925936ed5e0363112103cd0b.png", "dataFormat": "png", @@ -11350,7 +11350,7 @@ "costumes": [ { "assetId": "851e679b8f113ee90e0d686c33fbc940", - "name": "shimacat-a", + "name": "Shimacat-a", "bitmapResolution": 2, "md5ext": "851e679b8f113ee90e0d686c33fbc940.png", "dataFormat": "png", @@ -11360,7 +11360,7 @@ }, { "assetId": "57613248603bb9c5b4b767b72cd4fdef", - "name": "shimacat-b", + "name": "Shimacat-b", "bitmapResolution": 2, "md5ext": "57613248603bb9c5b4b767b72cd4fdef.png", "dataFormat": "png",