Changeset c8e3b98 in Klonkt
- Timestamp:
- 08/21/2026 07:21:09 AM (3 weeks ago)
- Branches:
- main
- Children:
- 1294c36
- Parents:
- 2fbced5
- Files:
-
- 3 edited
-
CHANGELOG.de.md (modified) (3 diffs)
-
CHANGELOG.md (modified) (3 diffs)
-
CHANGELOG.nl.md (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
CHANGELOG.de.md
r2fbced5 rc8e3b98 6 6 ## [Unreleased] 7 7 8 ## [1.7.0] · 2026-08-07 9 10 ### Hinzugefügt 8 ## [1.7.0] · 2026-08-21 9 10 ### Hinzugefügt 11 - **Deine Musik reist als Musik, nicht als Verweis darauf.** Ein Track ging als 12 Notiz mit angehängter Datei über die Leitung, ein fremder Server sah also Text 13 mit Anhang und nichts, was sagte: „das ist eine Veröffentlichung dieser 14 Künstlerin oder dieses Künstlers“. Tracks sind jetzt vollwertige Audio-Objekte, 15 ein Album ist ein eigenes Objekt auf der Leitung, und der Outbox trägt die 16 Diskografie mit. Playlists föderieren als ActivityPub-Sammlungen und sind als 17 solche auffindbar. Die Formen folgen dem, was Funkwhale bereits spricht, damit 18 eine Klonkt-Veröffentlichung in einer Funkwhale-Bibliothek landet, statt 19 verworfen zu werden. 20 - **Der Beitrag ist die Veröffentlichung.** Einzelne Tracks in einem Beitrag 21 werden zu einer Sammlung, Veröffentlichungsdatum und MusicBrainz-Release-ID 22 reisen mit, und die Hashtags werden aus dem Rohtext gelesen statt aus der 23 gesetzten Fassung — deshalb kamen sie vorher als Unsinn an, oder gar nicht. 24 - **Beanspruche dich selbst in MusicBrainz.** Unter Verwaltung → Audio kannst du 25 dich suchen und bestätigen, dass du das bist. Die Verknüpfung geht als 26 `schema:sameAs` auf die Leitung, sodass andere Server dein Klonkt mit der 27 Künstlerin oder dem Künstler verbinden können, die oder der du anderswo längst 28 bist. 29 - **Die ganze Seite als Musikkanal.** `/tracks.xml` veröffentlicht alles, was du 30 herausgebracht hast, als einen Feed — für Player, die RSS sprechen und kein 31 ActivityPub. 32 - **Zieh mit deinem Konto um und nimm alles mit (FEP-1580).** Deine Beiträge, 33 deine Audios, die Cover, die Playlists und die GUIDs ziehen mit, deine 34 Folgeliste reist als CSV zum Hochladen oder Einfügen, und die Guardianship zieht 35 vor dem Folgen um — in der anderen Reihenfolge stand ein Ward kurz ohne 36 Aufsicht da. Ein umgezogenes Konto verriegelt die ausgehende Seite, damit von 37 einer Adresse, die du nicht mehr nutzt, nichts Neues mehr abgeht. Das steht 38 jetzt auf einer Seite, in Schritten, statt verstreut. 39 - **Eine Leseansicht, neben Zeitleiste und Raster.** Ein Beitrag füllt den 40 Bildschirm, die Nachbarn stehen links und rechts bereit, und das Scrollen 41 rastet am oberen Rand des nächsten Beitrags ein. Jede Seite entscheidet selbst: 42 Lesen, Zeitleiste, oder Zeitleiste am Rechner und Lesen am Telefon. 43 - **Gäste melden sich mit dem Konto an, das sie schon haben (OpenWebAuth).** Ein 44 Fan meldet sich über sein eigenes Klonkt an und wird hier Follower, nicht noch 45 ein Kontoinhaber mit noch einem Passwort. Zwei Klonkts können einander 46 anmelden, das funktioniert also in beide Richtungen. 47 - **Acht Guardianship-Tore, die wirklich schalten.** Das Torpanel ist ein 48 Cockpit: jedes Tor sichtbar, jeder Chip trägt seinen eigenen Stand, und die 49 Apps wissen vorab, was zu ist. Antworten ist ein eigenes Tor, Folgeanfragen 50 werden bei mehreren Guardians per Mehrheit entschieden, ein Ward kann selbst 51 eine Frage stellen, und ein Logbuch bewahrt, warum eine Entscheidung fiel. 52 - **Follower zuerst genehmigen, wenn du magst.** Eine Folgeanfrage wartet auf 53 dein Ja, und bis dahin sieht die anfragende Person nichts von deinen Beiträgen. 54 - **Jede Sammlung paginiert.** Der Outbox liefert jetzt `first` und `last` und 55 blättert wirklich durch seine Seiten. Funkwhale wies ihn ohne diese beiden 56 rundweg ab — eine Sammlung ohne Paginierung war also kein Schönheitsfehler, 57 sondern eine verschlossene Tür. 58 - **Gespräche wissen, was du gelesen hast.** Ungelesen zählt pro Gespräch, eine 59 Lesung ist ein Ereignis statt einer Vermutung, und eine wartende Lesung 60 antwortet mit der Differenz — kein Abholen einer ganzen Liste mehr, um eine 61 neue Zeile zu finden. 62 - **Apple-Music- und YouTube-Playlists betten sauber ein**, mit derselben 63 Auswertung wie im Hub und einer Höhe, die zu dem passt, was du tatsächlich 64 eingebettet hast. 11 65 - **Nachrichten ist eine einzige Gesprächsansicht.** Nachrichten, Gespräche und 12 66 Gesendet waren drei getrennte Filter, wodurch ein Austausch auseinanderfiel: … … 36 90 37 91 ### Behoben 92 - **Der Verlauf unter einem fremden Beitrag wird über deinen eigenen Server 93 geholt und nie gespeichert.** Antworten, Like- und Boost-Status und die 94 FEP-9098-Emoji kommen jetzt mit, und die nächste Seite wird ebenfalls gelesen — 95 vorher brach ein langer Verlauf auf halber Strecke ab. 96 - **Die Ratenbegrenzung zählte die ganze Seite statt der aufrufenden Stelle**, 97 sodass eine viel besuchte Seite allen 429er gab. Dazu gehört: ob du einem Proxy 98 traust, hängt davon ab, wo du läufst, nicht davon, ob du in Entwicklung oder 99 Produktion bist. 100 - **Eine mitlaufende Uhr in der Antwort machte aus dem langen Poll eine 101 Schleife.** Die Antwort änderte sich jede Sekunde, also wartete er nie — er kam 102 nur immer wieder zurück. 103 - **Der Editor übersteht einen Seitenwechsel.** An Elemente gebundene Module 104 starten bei jeder Navigation neu, die Bearbeitungsseite lädt ihren Editor nach 105 einem Zurück also wieder, und Speichern ohne Modul löscht nicht mehr, was du 106 geschrieben hattest. 107 - **Ein Slug ist ein lokaler Schlüssel, kein Name auf der Leitung.** Halbe Namen, 108 fehlende Namen und drei Schreibweisen desselben Namens kamen alle daher, dass 109 das eine für das andere gehalten wurde. 110 - **Der Zirkel fiel über ein Medienfeld, das keine Liste war**, und riss dann die 111 ganze Seite mit, statt nur diesen einen Beitrag. 38 112 - **Menschen auf datenschutzstrengen Servern können dir wieder folgen.** Manche 39 113 Server geben den öffentlichen Schlüssel eines Kontos nur an eine signierte … … 65 139 66 140 ### Sicherheit 141 - **Bezahlte Beiträge gaben ihren vollen Inhalt über den Outbox und den 142 Follower-Backfill preis.** Die Schwärzung selbst funktionierte; die Abfragen 143 reichten ihr eine Zeile ohne die Spalte `paid`, also las das Tor `undefined`, 144 ließ alles durch und sagte nichts. Beide Abfragen holen jetzt, worüber sie 145 entscheiden, und ein Test bewacht die Art des Fehlers statt dieses einen Falls. 146 - **Fan-only-Beiträge gingen mit einem öffentlichen Etikett hinaus.** Sie waren 147 richtig adressiert, aber falsch beschrieben — und so einen Widerspruch löst ein 148 fremder Server genau in die falsche Richtung auf. 149 - **Ein Leck zwischen Seiten im Tracker-Export.** Eine Seite kam über den 150 Exporter an die Zeilen einer anderen. 151 - **Das Playlist-Tor öffnet jetzt nur noch Dateien der Seite selbst.** 152 - **Ein Schlüssel ist an den Akteur gebunden, für den er spricht.** Eine Signatur 153 wird nur akzeptiert, wenn Schlüssel, Eigentümer und Akteur übereinstimmen; 154 vorher konnte ein Schlüssel für jemanden bürgen, zu dem er keine Beziehung 155 hatte. 156 - **OpenWebAuth entpackt PKCS#1 v1.5 selbst**, ohne frühen Ausstieg und mit einer 157 Obergrenze für Versuche. Node hat den Padding-Modus, der das erledigte, 158 entfernt, weil er über Timing leckt (CVE-2023-46809, der Marvin-Angriff); es 159 von Hand zu tun hält den Pfad gleich lang und schließt das Orakel, statt es 160 wieder zu öffnen. 67 161 68 162 - **Aktualisierte Komponenten schließen sieben Sicherheitshinweise.** Der -
CHANGELOG.md
r2fbced5 rc8e3b98 6 6 ## [Unreleased] 7 7 8 ## [1.7.0] · 2026-08-07 9 10 ### Added 8 ## [1.7.0] · 2026-08-21 9 10 ### Added 11 - **Your music travels as music, not as a link to it.** A track used to federate 12 as a note with a file hanging off it, so a remote server saw a text with an 13 attachment and nothing that said "this is a release by this artist". Tracks are 14 now first-class Audio objects, an album is its own object on the wire, and the 15 outbox carries the discography. Playlists federate as ActivityPub collections 16 and are discoverable as such. The shapes follow what Funkwhale already speaks, 17 so a Klonkt release lands in a Funkwhale library instead of being dropped. 18 - **A post is the release.** Loose tracks in one post are gathered into a 19 collection, the release date and the MusicBrainz release id ride along, and the 20 hashtags are read from the raw text rather than the rendered version — which is 21 why they used to arrive as nonsense, or not at all. 22 - **Claim yourself in MusicBrainz.** Under Admin → Audio you can look yourself up 23 and confirm "this is me". The link goes on the wire as `schema:sameAs`, so 24 other servers can tie your Klonkt to the artist you already are elsewhere. 25 - **The whole site as a music channel.** `/tracks.xml` publishes everything you 26 released as one feed, for players that speak RSS rather than ActivityPub. 27 - **Take your account somewhere else, and take everything with you (FEP-1580).** 28 Your posts, your audio, the covers, the playlists and the GUIDs all move, your 29 following list travels as a CSV you can upload or paste, and the guardianship 30 moves before the follow does — the other order left a ward briefly unwatched. 31 A moved account locks on the outgoing side, so nothing new leaves an address 32 you no longer use. It is one page now, in steps, instead of scattered options. 33 - **A reading view, next to Timeline and Grid.** One post fills the screen, the 34 neighbours stand ready on either side, and scrolling snaps to the top of the 35 next post. Each site chooses for itself: reading, timeline, or timeline on 36 desktop with reading on a phone. 37 - **Guests can sign in with the account they already have (OpenWebAuth).** A fan 38 logs in through their own Klonkt and becomes a follower here, not another 39 account holder with another password. Two Klonkts can introduce each other, so 40 this works in both directions. 41 - **Eight guardianship gates that actually switch.** The gate panel is a cockpit: 42 every gate visible, each chip carrying its own state, and the apps are told 43 what is gated before they try. Replying is its own gate, follow requests are 44 decided by majority when there are several guardians, a ward can raise a 45 question itself, and a logbook keeps the reason a decision was made. 46 - **Approve followers first, if you want to.** A follow request waits for your 47 yes, and until then the requester sees none of your posts. 48 - **Every collection paginates.** The outbox now serves `first` and `last` and 49 really walks its pages. Funkwhale refused it outright without them, so an 50 unpaginated collection was not a cosmetic issue but a closed door. 51 - **Conversations know what you have read.** Unread is counted per conversation, 52 a read is an event rather than a guess, and a waiting read answers with the 53 difference — no more polling for a whole list to find one new line. 54 - **Apple Music and YouTube playlists embed properly**, with the same parsing the 55 hub uses and a height that matches what you actually embedded. 11 56 - **Messages is one conversation view.** Messages, Conversations and Sent were 12 57 three separate filters, so a single exchange fell apart: what you sent sat … … 32 77 33 78 ### Fixed 79 - **The thread under a remote post is fetched through your own server and never 80 stored.** Replies, like and boost status and the FEP-9098 emoji now come along, 81 and the next page is read too — before, a long thread stopped halfway. 82 - **The rate limiter counted the whole site instead of the caller**, so a busy 83 site handed out 429s to everyone. Related: whether to trust a proxy belongs to 84 where you run, not to whether you are in development or production. 85 - **A live clock in the response turned the long poll into a loop.** The answer 86 changed every second, so it never waited — it just kept coming back. 87 - **The editor survives a page change.** Modules wired to elements restart on 88 every navigation, so the edit page loads its editor again after a back button, 89 and saving without a module no longer wiped what you wrote. 90 - **A slug is a local key, not a name on the wire.** Half names, missing names 91 and three spellings of the same name all came from treating one as the other. 92 - **The circle fell over on a media field that was not a list**, which took the 93 whole page with it rather than the one post. 34 94 - **People on privacy-strict servers can follow you again.** Some servers only 35 95 hand out an account's public key to a signed request. Klonkt asked without … … 58 118 59 119 ### Security 120 - **Paid posts leaked their full content through the outbox and the follower 121 backfill.** The redaction itself worked; the queries handed it a row without 122 the `paid` column, so the gate read `undefined`, waved everything through and 123 said nothing. Both queries now select what they decide on, and a test guards 124 the class of mistake rather than this one instance of it. 125 - **Fan-only posts went out with a public label.** They were addressed correctly 126 but described as public, which is exactly the sort of contradiction a remote 127 server resolves in the wrong direction. 128 - **A cross-tenant leak in the tracker export.** One site could reach another 129 site's rows through the exporter. 130 - **The playlist gate now opens only files that belong to the site itself.** 131 - **A key is bound to the actor it speaks for.** A signature is only accepted 132 when the key, its owner and the actor agree; before, a key could vouch for 133 someone it had no relationship with. 134 - **OpenWebAuth unpacks PKCS#1 v1.5 itself**, without an early exit and with a 135 cap on attempts. Node removed the padding mode that used to do this because it 136 leaks timing (CVE-2023-46809, the Marvin attack); doing it by hand keeps the 137 path constant-time and closes the oracle rather than reopening it. 60 138 61 139 - **Updated components close seven security advisories.** The heaviest one sat -
CHANGELOG.nl.md
r2fbced5 rc8e3b98 6 6 ## [Unreleased] 7 7 8 ## [1.7.0] · 2026-08-07 9 10 ### Toegevoegd 8 ## [1.7.0] · 2026-08-21 9 10 ### Toegevoegd 11 - **Je muziek reist als muziek, niet als een verwijzing ernaartoe.** Een track 12 ging de draad op als een bericht met een bestand eraan, dus een andere server 13 zag tekst met een bijlage en niets wat zei "dit is een uitgave van deze 14 artiest". Tracks zijn nu volwaardige Audio-objecten, een album is een eigen 15 object op de draad, en de outbox draagt de discografie mee. Playlists federeren 16 als ActivityPub-collecties en zijn als zodanig vindbaar. De vormen volgen wat 17 Funkwhale al spreekt, zodat een Klonkt-uitgave in een Funkwhale-bibliotheek 18 belandt in plaats van te worden weggegooid. 19 - **De post is de uitgave.** Losse tracks in één post worden een collectie, de 20 uitgavedatum en het MusicBrainz release-id gaan mee, en de hashtags worden uit 21 de ruwe tekst gelezen in plaats van uit de opgemaakte versie — daardoor kwamen 22 ze eerder als onzin binnen, of helemaal niet. 23 - **Claim jezelf in MusicBrainz.** Bij Beheer → Audio kun je jezelf opzoeken en 24 bevestigen dat jij dat bent. De koppeling gaat als `schema:sameAs` de draad op, 25 zodat andere servers je Klonkt kunnen verbinden met de artiest die je elders al 26 bent. 27 - **De hele site als muziekkanaal.** `/tracks.xml` publiceert alles wat je hebt 28 uitgebracht als één feed, voor spelers die RSS spreken en geen ActivityPub. 29 - **Verhuis je account, en neem alles mee (FEP-1580).** Je berichten, je audio, 30 de hoezen, de playlists en de GUID's gaan mee, je volglijst reist als CSV die 31 je kunt uploaden of plakken, en de guardianship verhuist vóór de follow — in de 32 andere volgorde stond een ward even zonder toezicht. Een verhuisd account gaat 33 op slot aan de uitgaande kant, zodat er niets nieuws vertrekt vanaf een adres 34 dat je niet meer gebruikt. Het staat nu op één pagina, in stappen, in plaats 35 van verspreid. 36 - **Een leesweergave, naast Tijdlijn en Grid.** Eén bericht vult het scherm, de 37 buren staan links en rechts klaar, en het scrollen snapt naar de bovenkant van 38 het volgende bericht. Elke site kiest zelf: lezen, tijdlijn, of tijdlijn op 39 desktop met lezen op een telefoon. 40 - **Gasten loggen in met het account dat ze al hebben (OpenWebAuth).** Een fan 41 meldt zich aan via zijn eigen Klonkt en wordt hier volger, geen extra 42 accounthouder met nog een wachtwoord. Twee Klonkts kunnen elkaar aanmelden, dus 43 dit werkt in beide richtingen. 44 - **Acht guardianship-poorten die echt schakelen.** Het poortenpaneel is een 45 cockpit: elke poort zichtbaar, elke chip draagt zijn eigen stand, en de apps 46 weten vooraf wat er dichtstaat. Antwoorden is een eigen poort, volgverzoeken 47 worden bij meerderheid beslist als er meerdere guardians zijn, een ward kan 48 zelf een vraag stellen, en een logboek bewaart waaróm een besluit viel. 49 - **Volgers eerst goedkeuren, als je dat wilt.** Een volgverzoek wacht op jouw 50 ja, en tot die tijd ziet de aanvrager niets van je berichten. 51 - **Elke collectie pagineert.** De outbox serveert nu `first` en `last` en 52 bladert echt door zijn pagina's. Funkwhale weigerde hem zonder die twee 53 ronduit, dus een collectie zonder paginering was geen schoonheidsfoutje maar 54 een dichte deur. 55 - **Gesprekken weten wat je gelezen hebt.** Ongelezen telt per gesprek, een 56 lezing is een gebeurtenis in plaats van een gok, en een wachtende lezing 57 antwoordt met het verschil — niet langer een hele lijst ophalen om één nieuwe 58 regel te vinden. 59 - **Apple Music- en YouTube-playlists sluiten netjes in**, met dezelfde parsing 60 als de hub en een hoogte die past bij wat je werkelijk insluit. 11 61 - **Berichten is één gesprekkenweergave.** Berichten, Gesprekken en Verzonden 12 62 waren drie losse filters, waardoor één uitwisseling uit elkaar viel: wat jij … … 34 84 35 85 ### Opgelost 86 - **De draad onder een vreemde post wordt via je eigen server opgehaald en nooit 87 bewaard.** Antwoorden, like- en booststatus en de FEP-9098-emoji komen nu mee, 88 en de volgende pagina wordt ook gelezen — eerder stopte een lange draad 89 halverwege. 90 - **De snelheidsbegrenzer telde de hele site in plaats van de beller**, waardoor 91 een drukke site iedereen 429's gaf. Daarbij hoort: of je een proxy vertrouwt 92 hangt af van waar je draait, niet van of je in ontwikkeling of productie zit. 93 - **Een levende klok in het antwoord maakte van de lange poll een lus.** Het 94 antwoord veranderde elke seconde, dus hij wachtte nooit — hij kwam alleen maar 95 terug. 96 - **De editor overleeft een paginawissel.** Modules die aan elementen hangen 97 starten bij elke navigatie opnieuw, dus de bewerkpagina laadt zijn editor weer 98 na een terugknop, en opslaan zonder module wist niet langer wat je had 99 geschreven. 100 - **Een slug is een lokale sleutel, geen naam op de draad.** Halve namen, 101 ontbrekende namen en drie spellingen van dezelfde naam kwamen er allemaal uit 102 voort dat het een voor het ander werd aangezien. 103 - **De cirkel viel om op een mediaveld dat geen lijst was**, en nam dan de hele 104 pagina mee in plaats van dat ene bericht. 36 105 - **Mensen op privacy-strenge servers kunnen je weer volgen.** Sommige servers 37 106 geven de publieke sleutel van een account alleen aan een ondertekend verzoek. … … 61 130 62 131 ### Beveiliging 132 - **Betaalde posts lekten hun volledige inhoud via de outbox en de 133 volger-backfill.** De redactie zelf werkte; de queries gaven hem een rij zónder 134 de kolom `paid`, dus las de poort `undefined`, liet alles door en zei niets. 135 Beide queries halen nu op waarop ze beslissen, en een test bewaakt de soort 136 fout in plaats van dit ene geval. 137 - **Fan-only posts gingen de deur uit met een publiek etiket.** Ze waren juist 138 geadresseerd maar verkeerd omschreven, en zo'n tegenspraak lost een andere 139 server precies de verkeerde kant op. 140 - **Een lek tussen sites in de tracker-export.** De ene site kon via de exporter 141 bij de rijen van een andere. 142 - **De playlist-poort opent nu alleen bestanden van de site zelf.** 143 - **Een sleutel is gebonden aan de actor waarvoor hij spreekt.** Een handtekening 144 wordt alleen aanvaard als de sleutel, zijn eigenaar en de actor het eens zijn; 145 eerder kon een sleutel instaan voor iemand waar hij geen relatie mee had. 146 - **OpenWebAuth pakt PKCS#1 v1.5 zelf uit**, zonder vroege uitgang en met een 147 grens op het aantal pogingen. Node heeft de padding-modus die dit deed 148 verwijderd omdat die via timing lekt (CVE-2023-46809, de Marvin-aanval); het 149 met de hand doen houdt het pad even lang en sluit het orakel in plaats van het 150 opnieuw te openen. 63 151 64 152 - **Bijgewerkte onderdelen sluiten zeven beveiligingsadviezen.** Het zwaarste
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)