SUMMARY Those brushes cannot be found after importing "mypaint brush bundle". STEPS TO REPRODUCE 1. Manually import mypaint1.2.1 brushes (.myb and .png). 2. Make a bundle of mypaint brushes. 3. Restore krita to default. (It's like after the first installation.) 4. Import the "mypaint brush bundle". OBSERVED RESULT The mypaint brush file is included in the mypaint brush bundle, but it cannot be found in krita. EXPECTED RESULT After importing the mypaint brush bundle, find and use the mypaint brush in krita. Krita Version: 5.0.0-prealpha (git 6010423) Languages: zh_CN, zh, en_US, en Hidpi: true Qt Version (compiled): 5.12.11 Version (loaded): 5.12.11 OS Information Build ABI: x86_64-little_endian-llp64 Build CPU: x86_64 CPU: x86_64 Kernel Type: winnt Kernel Version: 10.0.19042 Pretty Productname: Windows 10 (10.0) Product Type: windows Product Version: 10 OpenGL Info Vendor: "Google Inc." Renderer: "ANGLE (NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0)" Version: "OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7)" Shading language: "OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7)" Requested format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Current format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) Version: 3.0 Supports deprecated functions false is OpenGL ES: true QPA OpenGL Detection Info supportsDesktopGL: true supportsAngleD3D11: true isQtPreferAngle: true Hardware Information GPU Acceleration: auto Memory: 32693 Mb Number of Cores: 16 Swap Location: C:/Users/xi/AppData/Local/Temp Current Settings Current Swap Location: C:/Users/xi/AppData/Local/Temp Current Swap Location writable: true Undo Enabled: true Undo Stack Limit: 30 Use OpenGL: true Use OpenGL Texture Buffer: true Use AMD Vectorization Workaround: false Canvas State: OPENGL_SUCCESS Autosave Interval: 900 Use Backup Files: true Number of Backups Kept: 1 Backup File Suffix: ~ Backup Location: Same Folder as the File Backup Location writable: false Use Win8 Pointer Input: false Use RightMiddleTabletButton Workaround: false Levels of Detail Enabled: false Use Zip64: false Display Information Number of screens: 2 Screen: 0 Name: \\.\DISPLAY1 Depth: 32 Scale: 1 Resolution in pixels: 2560x1440 Manufacturer: Model: Refresh Rate: 59 Screen: 1 Name: \\.\DISPLAY2 Depth: 32 Scale: 1 Resolution in pixels: 1920x1080 Manufacturer: Model: Refresh Rate: 60
I cannot reproduce on commit 804225bc51. Can you check if your user folder has a copy of these old brushes? if so, can you try removing them, regenerate the database and check if the brush pack appears?
(Apologies for the previous comment, I copy/pasted it from another bug report.) Confirming on commit 804225bc51. Bundle manifest shows that MyPaint brushes that are exported are listed as ".kpp", but the actual file has ".myb". On load, this appears in the log: Bundle "C:/Users/Amalia/AppData/Roaming/krita/Test_Mypaint.bundle" is broken. File "paintoppresets/c)_Pencil_1_Sketch_(mypaint amyspark).kpp" is missing Bundle "C:/Users/Amalia/AppData/Roaming/krita/Test_Mypaint.bundle" is broken. File "paintoppresets/c)_Pencil_2b_(mypaint amyspark).kpp" is missing
Kind of funny since I just reported this bug: bug 443907, which talks about bundle manifest having wrong filenames.
They do have the correct filenames *grins* but MyPaint brushes serialization is completely broken. The original author assumed they'd be read as JSON; but on saving to disk, the save format is KoResource's PNG serialization, which is in turn ignored by the loadFromDevice impl.
If I may amend the above, MyPaint brushes loaded from .myb will preserve their extensions on save, which is wrong because of the change in serialization format.
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1102
Git commit cbf78192cb7e3a4774de736cf2bd2e4dec91f6da by Halla Rempt, on behalf of L. E. Segovia. Committed on 19/10/2021 at 07:51. Pushed by rempt into branch 'master'. MyPaint: accept brushes serialized as KPP and fix their names M +34 -5 plugins/paintops/mypaint/MyPaintPaintOpPreset.cpp M +5 -0 plugins/paintops/mypaint/MyPaintPaintOpPreset.h https://invent.kde.org/graphics/krita/commit/cbf78192cb7e3a4774de736cf2bd2e4dec91f6da
Git commit ea5450925630338c79be9af21a9468f458ae11ff by Dmitry Kazakov, on behalf of L. E. Segovia. Committed on 17/11/2021 at 13:47. Pushed by dkazakov into branch 'krita/5.0'. MyPaint: accept brushes serialized as KPP and fix their names M +34 -5 plugins/paintops/mypaint/MyPaintPaintOpPreset.cpp M +5 -0 plugins/paintops/mypaint/MyPaintPaintOpPreset.h https://invent.kde.org/graphics/krita/commit/ea5450925630338c79be9af21a9468f458ae11ff
Git commit 14e8cd88b267d0c083cb7bee693d02f684d022d6 by L. E. Segovia. Committed on 25/11/2021 at 13:47. Pushed by lsegovia into branch 'krita/5.0'. Fix naming of MyPaint brushes on versioned serialization Before this commit, versioned .myb files would apply the .kpp suffix, only to be overridden by the save preset dialog. Related: bug 445281, bug 445282 M +5 -6 libs/ui/dialogs/KisDlgSavePreset.cpp M +6 -4 plugins/paintops/mypaint/MyPaintPaintOpPreset.cpp M +0 -7 plugins/paintops/mypaint/MyPaintPaintOpPreset.h https://invent.kde.org/graphics/krita/commit/14e8cd88b267d0c083cb7bee693d02f684d022d6
Git commit a4f84ca9a3070ff4fe5949da3e8028fe131f3b26 by L. E. Segovia. Committed on 25/11/2021 at 13:50. Pushed by lsegovia into branch 'master'. Fix naming of MyPaint brushes on versioned serialization Before this commit, versioned .myb files would apply the .kpp suffix, only to be overridden by the save preset dialog. Related: bug 445281, bug 445282 (cherry picked from commit 14e8cd88b267d0c083cb7bee693d02f684d022d6) M +5 -6 libs/ui/dialogs/KisDlgSavePreset.cpp M +6 -4 plugins/paintops/mypaint/MyPaintPaintOpPreset.cpp M +0 -7 plugins/paintops/mypaint/MyPaintPaintOpPreset.h https://invent.kde.org/graphics/krita/commit/a4f84ca9a3070ff4fe5949da3e8028fe131f3b26