Index: src/assets/js/mod/post-edit.js
===================================================================
--- src/assets/js/mod/post-edit.js	(revision b406d25e8f0b0b49e6c45df1a3281e46425ca139)
+++ src/assets/js/mod/post-edit.js	(revision e679bce2a7d2484f5395220f40517ea38e74c0da)
@@ -8,5 +8,5 @@
 // Dezelfde regel die de server gebruikt -- zie shared/post-music-type.js voor
 // waarom hij daar staat en niet twee keer.
-import { afleidenUitInsluitingen } from '../shared/post-music-type.js';
+import { afleidenUitInsluitingen, SOORTEN } from '../shared/post-music-type.js';
 
 // De oude inline scripts draaiden bij ELKE render; een module draait zijn
@@ -1020,5 +1020,5 @@
     // alleen als ijkpunt onthouden. Anders zou een oude post van type veranderen
     // door hem te bekijken.
-    const VOLGBAAR = new Set(['post', 'album', 'playlist', 'audio']);
+    const VOLGBAAR = new Set(['post', 'album', 'playlist', 'mixtape', 'audio']);
     const kindVan = new Map();
     let vorigeAfleiding = null;
@@ -1028,5 +1028,9 @@
       .then((j) => {
         if (j && j.ok && Array.isArray(j.playlists)) {
-          for (const p of j.playlists) kindVan.set(p.id, p.kind === 'playlist' ? 'playlist' : 'album');
+          // De soort ZOALS HIJ IS. Dit was `=== 'playlist' ? 'playlist' : 'album'`,
+          // en dan ziet de editor een mixtape als album terwijl de server hem
+          // als mixtape opslaat: het type verspringt onder je handen bij het
+          // bewaren. SOORTEN is dezelfde lijst die de server gebruikt.
+          for (const p of j.playlists) kindVan.set(p.id, SOORTEN.includes(p.kind) ? p.kind : 'album');
         }
       })
