source: Klonkt/CHANGELOG.nl.md@ 9a22776

main
Last change on this file since 9a22776 was c8e3b98, checked in by Robin <roboburr@…>, 3 weeks ago

Changelog: 1.7.0 dekt nu ook de 226 commits na de bump

De sectie stond op 07-08 en beschreef alleen de toestand van toen, terwijl de
release-commit 234 commits terug ligt en er sindsdien geen enkele
changelog-commit is geweest. Uitgebreid in nl/en/de en de datum meegezet.

Wat erbij komt, kort: muziek federeert als muziek (Audio-objecten, albums,
playlist-collecties, Funkwhale-vormen), accountmigratie met alles erin
(FEP-1580), de leesweergave, gastlogin via OpenWebAuth, acht werkende
guardianship-poorten, paginering op elke collectie, en zes beveiligingsfixes
waarvan het lek in betaalde posts de zwaarste is.

Co-Authored-By: Claude Opus 5 <noreply@…>

  • Property mode set to 100644
File size: 35.8 KB
Line 
1# Wijzigingen — Klonkt
2
3Alle noemenswaardige wijzigingen aan Klonkt. Nieuwste bovenaan.
4Versies volgen [SemVer](https://semver.org/lang/nl/) (`1.0.0-beta.N` tijdens de beta).
5
6## [Unreleased]
7
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.
61- **Berichten is één gesprekkenweergave.** Berichten, Gesprekken en Verzonden
62 waren drie losse filters, waardoor één uitwisseling uit elkaar viel: wat jij
63 stuurde stond onder Verzonden, wat terugkwam onder een van de andere twee, en
64 om een draad te volgen moest je heen en weer klikken. Het is nu één
65 Gesprekken-weergave waarin verzonden en ontvangen in dezelfde draad staan,
66 oudste bovenaan, met jouw eigen bijdragen gemarkeerd. Er blijven vier filters
67 over: Alles, Gesprekken, Activiteit en Moderatie.
68- **Een gesprek vertelt waar het over gaat.** Hangt een draad aan een van je
69 posts, dan staat er een link naar die post in de kop. Zonder die context is
70 een antwoord in een lijst niet te plaatsen. Draden die niet over een post gaan
71 lopen per persoon.
72- **Posts in Berichten zien eruit als posts.** Opmaak, afbeeldingen, geluid,
73 video, quote-kaarten en linkvoorbeelden worden nu net zo getoond als in de
74 Krant, ook bij de berichten die je zelf stuurde — een foto die jij meestuurde
75 kwam op je eigen scherm als kale tekst binnen terwijl de ander wel een plaatje
76 zag.
77- **De Guardian-app toont posts van je ward compleet.** Hetzelfde gat zat in de
78 guardian-weergave: een post van je ward kwam binnen zonder media, quote-kaart
79 of emoji, terwijl dat juist de post is die je als guardian wilt kunnen
80 beoordelen. Een content warning blijft daar zoals eerder dichtgeklapt.
81- **Antwoorden vanuit een gesprek.** Onder een draad staat een eigen
82 antwoordvenster, de rijke editor met opmaak, media en een taalkeuze. Zwaaien
83 blijft een aparte knop ernaast: een zwaai is een seintje, geen antwoord.
84
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.
105- **Mensen op privacy-strenge servers kunnen je weer volgen.** Sommige servers
106 geven de publieke sleutel van een account alleen aan een ondertekend verzoek.
107 Klonkt vroeg zonder handtekening, werd geweigerd, en kon daardoor het
108 volgverzoek dat net binnenkwam niet controleren — dus werd dat afgewezen, en
109 bleef de andere server het dagenlang opnieuw proberen. Klonkt ondertekent die
110 navraag nu, en die volgers komen erdoor. Dit raakte ook al het andere dat bij
111 zo'n server werd opgehaald: profielen, posts en reacties.
112- **Reacties van anderen komen nu in de draad aan.** Reageerde iemand op een
113 post in een gesprek waar jij bij zat, dan stuurde hun server die reactie naar
114 je door — en werd hij geweigerd, omdat een doorsturende server met zijn eigen
115 sleutel ondertekent en niet met die van de schrijver. Threads waren daardoor
116 aan jouw kant stilletjes onvolledig. Zo'n reactie wordt nu bij de bron
117 gecontroleerd in plaats van afgewezen: de post wordt opgehaald bij de server
118 die hem herbergt, en alleen wat daarvandaan komt wordt bewaard. Een
119 doorgestuurde verwijdering wordt nog steeds geweigerd, want een verwijderde
120 post valt niet te controleren.
121- **Een like of boost ziet er overal hetzelfde uit.** Dezelfde post kon in de
122 Krant als geliket verschijnen en op de interact-pagina als niet-geliket, omdat
123 allebei een eigen administratie bijhielden. Er is er nu één, dus de knoppen
124 zijn het eens — ook voor alles wat je vóór deze versie al had gereageerd; dat
125 wordt bij het bijwerken van de site automatisch meegenomen.
126- **Een like vanuit een app blijft nu staan.** Een like die je in Shaer gaf werd
127 wel opgeslagen, maar de app kreeg dat nooit terug, dus het hartje sprong bij de
128 eerste herlaadbeurt weer uit — en omdat de app de like nooit zag, kon hij hem
129 alleen opnieuw geven en nooit intrekken. Un-liken vanuit een app werkt nu.
130
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.
151
152- **Bijgewerkte onderdelen sluiten zeven beveiligingsadviezen.** Het zwaarste
153 zat in de bibliotheek die berichten van elders opschoont: een zorgvuldig
154 opgebouwd bericht kon daar een script langs krijgen, en een script dat op jouw
155 pagina draait kan doen alsof het jou is. Tegelijk ging de mailafhandeling drie
156 hoofdversies vooruit, wat een reeks gaten rond verzenden dichtte — waaronder
157 een waarbij een geprepareerde naam commando's het gesprek met de mailserver in
158 kon smokkelen, en een waarbij een bericht bij een ander domein kon belanden
159 dan het geadresseerde. Aan hoe Klonkt eruitziet of werkt verandert dit niets.
160 Eén advies blijft bewust staan: het gaat over een manier om identifiers te
161 maken die Klonkt niet gebruikt.
162
163## [1.6.0] · 2026-07-31
164
165### Toegevoegd
166- **Guardians (FEP-633c).** Een account kan nu onder de hoede staan van een of
167 meer guardians, zoals een kind ouders heeft. Een guardian biedt aan om over
168 iemand te waken; de ward accepteert in zijn eigen Berichten, en eventuele
169 bestaande guardians keuren mee goed, zodat niemand zich in z'n eentje aan een
170 kind kan koppelen. Eenmaal akkoord verschijnt de guardian op het actor-doc van
171 de ward (`shaer:guardians`) en is die bereikbaar als de ward om hulp vraagt.
172 Het bouwt op gewone ActivityPub, dus guardian en ward mogen op verschillende
173 servers zitten.
174- **Een Guardian-app die je kunt installeren.** Een aparte, installeerbare hoek
175 op `/guardian` voor guardians: wards toevoegen en beheren, een berichtencentrum
176 voor binnenkomende hulpverzoeken, en eigen meldingen voor hulpverzoeken en
177 voogdij-verkeer, ook als de app dicht is.
178- **Voogdij-aanvragen komen binnen in je Berichten.** Als iemand aanbiedt je
179 guardian te worden, verschijnt dat in je eigen Berichten als een duidelijk item
180 met Accepteren en Weigeren, zodat je antwoordt waar je toch al je berichten
181 leest, niet ergens apart.
182- **De eigenaar kan zijn inbox lezen via C2S.** Een GET op de inbox met de
183 eigen bearer geeft recente binnengekomen posts (de accounts die je volgt) als
184 Create(Note)-items, zodat een gekoppelde app (Shaer) een unified feed kan
185 bouwen. Voor alle anderen blijft de inbox write-only.
186- **"Meer laden" op de feeds.** Solo (home), Cirkel, Krant en Berichten laden nu
187 in blokken van 72 met een "Meer laden"-knop in plaats van een harde limiet, dus
188 oudere items zijn weer bereikbaar. 72 is deelbaar door 2, 3 en 4, zodat de
189 grid-weergaven altijd op een volle rij eindigen. Toevoegen gaat direct (htmx),
190 het zoeken en filteren in Berichten blijft over alle pagina's werken, en de knop
191 verdwijnt op de laatste pagina.
192- **"Interacteer via de fediverse" naast Delen.** Op een post krijgen bezoekers
193 naast Delen een knop om vanuit hun eigen fediverse-server te reageren, te liken
194 of te boosten (vraagt je server, en geeft het door aan jouw instance). Verborgen
195 voor de site-eigenaar en als federatie uit staat.
196- **FEDERATION.md (FEP-67ff).** De repo-root documenteert nu wat Klonkt op de
197 lijn spreekt: ActivityPub S2S en C2S, WebFinger, HTTP Signatures, NodeInfo 2.1,
198 OAuth (PKCE), de activities en objecttypes die het stuurt en ontvangt, de
199 Mastodon-compatibele extensietermen, en de FEPs die het ondersteunt of volgt.
200 Helpt andere implementaties om te interopereren.
201- **Berichten: je peiling is afgelopen.** Als een van je eigen peilingen sluit,
202 verschijnt in Berichten een "peiling afgelopen"-item met de uitslag: een balk
203 per optie met percentage, plus het aantal stemmers. Het valt onder de chip
204 Activiteit en is doorzoekbaar zoals de rest.
205- **Berichten: scherpere filters en een zoekveld.** De filterchips zijn nu
206 Berichten (@mentions en privé/DM-reacties), Gesprekken (publieke reacties),
207 Activiteit (likes, boosts, follows), Moderatie (rapporten) en Verzonden, naast
208 Alles. Een zoekveld filtert de lijst op afzender en berichttekst, en werkt
209 samen met de actieve chip. Volledig client-side, direct.
210- **De reactie-editor is visueel opgeschoond.** De werkbalk gebruikt nu dezelfde
211 iconen en 32px-knoppen als de post-editor, met actieve opmaak gevuld in de
212 accentkleur, een gekaderde editor-box met focus-ring, en nettere taal-,
213 mention- en bijlage-chips. Eén editor-familie op de hele site.
214- **De reactie-editor toont wie je adresseert (rijke reacties, fase 3).** Een
215 "Aan:"-balk boven de editor toont de gesprekspartners (de auteur waarop je
216 reageert plus de eerdere auteurs in de thread) als verwijderbare chips, in
217 plaats van @mentions die je tekst vervuilen. Verwijder een chip en die persoon
218 wordt niet meer genoemd, getagd of gepingd; mentions die je zelf typt blijven
219 gewoon in de tekst staan. Een verzonden reactie bewerken houdt elke co-mention
220 intact.
221- **Een verzonden reactie bewerken gebruikt nu ook de rijke editor.** De
222 bewerk-formulieren op Berichten en de interactiepagina openen dezelfde editor
223 als nieuwe reacties (opmaak blijft, taal aanpasbaar, volledig scherm op
224 telefoons). Bijlagen op de reactie overleven een bewerking onaangeroerd.
225- **Media in reacties (rijke reacties, fase 2).** Sleep, plak of kies
226 afbeeldingen, audio en video direct in de reactie-editor (de paperclip werkt
227 op telefoons). Bestanden uploaden naar je eigen site, verschijnen als
228 verwijderbare chips tijdens het schrijven, reizen als echte attachments mee op
229 de gefedereerde note, en renderen in je thread. Een reactie met alleen media
230 (zonder tekst) kan ook.
231- **Rijke reacties (fase 1).** Reageren op fediverse-reacties (inline in de
232 thread en op de interactiepagina) gebruikt nu een gedeelde rijke editor: vet,
233 cursief, links, opsommingen en citaten, plus een taalkeuze voor je reactie
234 (meegestuurd als language map op de note). Op telefoons opent de editor als
235 volledig scherm, het patroon dat op mobiel echt werkt. Zonder JavaScript
236 blijft het gewone tekstvak werken. Media in reacties is de volgende fase.
237- **Trek verbonden apps in vanaf je accountpagina.** Een sectie "Verbonden apps"
238 toont elke app die je via OAuth toegang gaf (naam, site, scope, laatst
239 gebruikt) met een Intrekken-knop. Al eerder uitgegeven tokens verschijnen ook,
240 want die stonden altijd al (gehasht) opgeslagen; het token zelf bewaren we
241 nooit, dus intrekken gaat op de token-hash.
242- **De account-eigenaar kan zijn eigen followers en following lezen via C2S.** De
243 `followers`- en `following`-collecties blijven count-only voor het publiek
244 (privacy), maar een verzoek met een C2S-bearer die op die site scoped is geeft
245 nu de echte actor-URI's terug, zodat een app (Shaer) een vriendenlijst kan
246 bouwen. Voor anonieme bezoekers verandert er niets.
247- **App-toegang via OAuth 2.0 (ActivityPub Client-to-Server, fase 1).** Klonkt
248 spreekt nu de standaard AP C2S-authenticatie, zodat native en web-apps (de
249 Shaer-apps als eerste) kunnen verbinden: dynamische client-registratie
250 (RFC 7591), een PKCE authorization-code-flow met een toestemmingsscherm waarop
251 je kiest namens welke site de app mag posten, en bearer-tokens (gehasht
252 opgeslagen, eenmalige codes). De actor-doc adverteert de OAuth- en
253 uploadMedia-endpoints en `/.well-known/oauth-authorization-server` (RFC 8414)
254 geeft de metadata, dus apps ontdekken alles in plaats van paden vast te
255 spijkeren. Alleen publieke clients + PKCE, geen client-secrets.
256- **De outbox accepteert posts van apps (C2S, fase 1 compleet).** Een
257 `POST` met bearer-token naar `/ap/users/:slug/outbox` bestuurt nu je account
258 vanuit een app: een bericht plaatsen, reageren, liken, boosten, volgen en dat
259 allemaal ongedaan maken. Activities gaan via dezelfde bezorg-machinerie als de
260 web-UI; een kale Note wordt in een Create verpakt (spec); content wordt
261 gesanitized; het token is aan één site gebonden dus kan niet namens een andere
262 posten. Let op: dit is ActivityPub C2S, wat de Shaer-apps spreken.
263 Mastodon-clients (Ivory e.d.) gebruiken Mastodons eigen API en worden hier niet
264 ondersteund.
265
266### Opgelost
267- **OAuth-toestemming geeft nu betrouwbaar over aan native apps.** Na Allow/Deny
268 was de redirect naar een native custom-scheme (bijv. `com.klonkt.shaer:/oauth`)
269 een gewone 302, en die negeren mobiele browsers stilzwijgend. De toestemmings-
270 stap serveert nu een klein tussenscherm voor niet-http redirect-URI's dat
271 automatisch doorstuurt én een "Open de app"-tikknop biedt (een tik opent de app
272 betrouwbaar op Android; iOS' web-auth-sessie vangt 'm sowieso op). Web-clients
273 (http/https) krijgen nog steeds een 302.
274- **Bezoekers kunnen reageren op de eigen reacties van de site-eigenaar.** De
275 knop "reageer via de fediverse" verscheen alleen bij reacties van anderen; bij
276 de eigen reacties van de site in een thread kregen bezoekers niets, waardoor
277 je de auteur niet vanaf je eigen instance kon beantwoorden.
278
279## [1.5.0] · 2026-07-18
280
281### Toegevoegd
282- **Berichten: je reacties en meldingen op één pagina.** Eén Berichten-tab
283 vervangt Reacties en Meldingen. Eén stroom met filterchips (Alles, Gesprekken,
284 Activiteit, Verzonden): je eigen verzonden reacties staan mee in het gesprek
285 (met bewerken en verwijderen), likes en boosts op dezelfde post groeperen tot
286 één regel, privéreacties dragen een slotje, en items nieuw sinds je laatste
287 bezoek krijgen een stip. De interactie-bookmarklet verhuisde mee. Oude
288 /fediverse- en /notifications-links leiden door naar /messages.
289- **Connect: wie je volgt en wie jou volgt op één pagina.** Eén Connect-tab
290 vervangt de aparte Volgend- en Volgers-pagina's, met per connectie de richting
291 (volgend →, volger ←, wederzijds ↔) en, voor accounts waaraan je bezorgt,
292 wanneer ze voor het laatst bereikt zijn. Accounts die je niet meer bereikt
293 schuiven naar een ingeklapte "Niet bereikbaar"-sectie om op te ruimen. Oude
294 /following- en /followers-links leiden door naar /connect.
295- **Modereer inkomende reacties op je eigen posts.** Als site-eigenaar kun je een
296 reactie nu uit je thread verwijderen (en die blijft weg: opnieuw bezorgen en
297 thread-aanvulling worden geblokkeerd door een tombstone) en rapporteren bij de
298 server van de auteur, rechtstreeks vanuit de thread. Werkt ook voor
299 privéreacties, die niet via de fediverse-interactieflow te behandelen zijn.
300
301### Opgelost
302- **Een geboostte videopost houdt zijn video in de Cirkel.** Een video-only post
303 (Loops.video) boosten sloeg hem op zonder media, waardoor de Cirkel een kale
304 teksttegel toonde in plaats van een videothumbnail; opnieuw boosten kon de
305 video zelfs wissen uit een al-gecachte kopie. Boosts dragen nu de volledige
306 getypeerde media mee, en een refresh wist gecachte media nooit meer.
307- **De titel van de interactiepagina volgt je taal.** "Interacteer via de
308 fediverse" stond hardcoded in het Nederlands in het browsertabblad, ook op een
309 Engelstalige site.
310- **Het Apple Music-icoon lijkt weer op het Apple-logo.** Het oude icoon was een
311 verminkte vorm.
312- **Statistiekkolommen verspringen niet meer in de 30- en 90-dagenweergave.**
313 Kolommen zonder datumlabel klapten iets in; elke kolom houdt nu zijn
314 labelregel.
315- **Privéreacties staan niet meer op de publieke postpagina.** Een followers-only
316 of directe (DM-)reactie op je post werd voor iedereen in de publieke thread
317 getoond. Inkomende reacties slaan nu hun fediverse-adressering op; de publieke
318 thread toont alleen publieke en unlisted reacties. Privéreacties bereiken je
319 nog steeds via meldingen, mét de post waar ze bij horen.
320- **Kale video/audio-embeds lopen niet meer buiten de kolom.** Een `.webm` /
321 `.mp4` / `.mp3`-speler past nu netjes in de kolombreedte, net als de
322 iframe-embeds; de breedte-regel gold voorheen alleen voor `iframe`.
323
324## [1.4.0] · 2026-07-14
325
326### Toegevoegd
327- **Volgerslijst met bezorgstatus.** Een nieuw Fediverse-tabblad laat zien wie je
328 volgt en wanneer elk account voor het laatst bereikt is, zodat dode accounts
329 opvallen en je ze na een check kunt verwijderen.
330- **Kale media-links spelen direct af.** Een losse `.webm`, `.mp4` of `.mp3` wordt
331 nu een echte speler in plaats van een dode link.
332- **Hashtags, links en mentions zijn ook op je site klikbaar.** `#tags`, URLs en
333 `@mentions` in een post worden nu links op de site zelf, niet alleen op de
334 gefedereerde kopie. Mentions worden één keer bij opslaan opgezocht, dus pagina's
335 blijven snel.
336
337### Opgelost
338- **Reacties, verwijderde reacties en bewerkte reacties komen altijd aan.** Ze
339 verdwenen als een server even onbereikbaar was; ze gaan nu via de retry-wachtrij,
340 net als posts.
341- **Videothumbnails voor meer video's.** Covers van video's met hun metadata
342 achteraan (Loops.video, telefoon-exports) krijgen nu een thumbnail in plaats van
343 niks.
344- **Een cover die alleen een video is, toont nu een posterbeeld op de postpagina.**
345 Hij blijft niet meer leeg in de Solo-weergave.
346- **De geïnstalleerde app toont geen oude data meer bij een wankele start.** Een
347 koude start op een slechte verbinding ververst nu, in plaats van een verouderde
348 pagina te tonen.
349- **De Updates-pagina volgt jouw branch.** Draai je de stable-branch, dan zie je
350 niet langer de wijzigingen van main als "nieuwste".
351
352## [1.3.5] — 2026-07-04
353
354### Opgelost
355- **Polls behouden hun cover als ze geboost worden.** Een poll met muziek of een
356 embed federeerde zonder cover, waardoor een geboooste poll een leeg vak toonde;
357 de cover reist nu mee.
358- **De Updates-pagina van de Android-app toont wat er écht te installeren valt.**
359 Hij las de nieuwste release-branch, die korte tijd vóór kon lopen op de
360 telefoon-build — bijwerken installeerde dan dezelfde versie opnieuw. Hij leest
361 nu de versie van de telefoonbundel zelf.
362
363## [1.3.4] — 2026-07-04
364
365### Opgelost
366- **Boosts die hun cover kwijt waren krijgen 'm automatisch terug.** Posts die
367 je vóór de cover-fix boostte waren zonder artwork opgeslagen; die worden bij
368 de volgende herstart eenmalig ververst. Is de thuis-server van een post op dat
369 moment even onbereikbaar, dan wordt het bij volgende herstarts opnieuw
370 geprobeerd in plaats van voorgoed overgeslagen. Een post opnieuw boosten
371 ververst nu ook de opgeslagen kopie (cover, inhoud) — vanuit de feed én de
372 interact-pagina.
373
374## [1.3.3] — 2026-07-03
375
376### Opgelost
377- **Geboooste muziekposts houden hun cover.** Als je een nummer boostte van
378 iemand die je niet volgt, ontbrak de cover; die verschijnt nu wel, net als bij
379 mensen die je wél volgt.
380
381## [1.3.2] — 2026-07-02
382
383### Opgelost
384- **De Updates-pagina werkt nu in de Android-app.** Hij toont voortaan de
385 nieuwste beschikbare versie, en de bijwerk-knop downloadt en installeert die
386 direct op je telefoon (je posts en instellingen blijven staan).
387
388## [1.3.1] — 2026-07-02
389
390### Opgelost
391- **Muziek blijft op Android doorspelen in de achtergrond.** Als een nummer
392 afliep terwijl je telefoon op slot zat of de app in de achtergrond stond,
393 startte het volgende nummer en stopte het na een seconde weer. De speler
394 voert de wachtrij nu als één doorlopende stream aan, waardoor het doorgaan
395 naar het volgende nummer niet meer telt als "nieuw" afspelen dat de browser
396 mag pauzeren.
397
398## [1.3.0] — 2026-07-02
399
400### Toegevoegd
401- **Kies een lichte of donkere deel-kaart.** De automatisch gemaakte deel-afbeelding volgt je
402 site-thema; onder Beheer → SEO kun je 'm nu geforceerd licht of donker zetten.
403- **Een vermelding is nu een melding.** Als iemand op de fediverse je noemt in een post — ook
404 eentje die geen reactie op jou is — verschijnt dat in je fediverse-meldingen met een link naar
405 het origineel.
406- **Cover-art op openbaar gedeelde audio.** Een track die je openbaar op de fediverse deelt draagt
407 nu z'n cover-art mee (of de post-cover), zodat audiospelers die artwork ondersteunen die tonen in
408 plaats van een leeg vlak.
409- **Rapporteer een post op de fediverse.** Vanaf een fediverse-post kun je die nu melden bij de
410 moderators van de eigen server van die post, met een optionele reden — en meldt iemand jouw site,
411 dan verschijnt die melding in je fediverse-meldingen.
412- **Stel de taal van een post in.** Kies in welke taal je een post schreef — op de fediverse
413 werkt daarmee het taalfilter van de tijdlijn en de vertaal-knop.
414- **Alt-tekst voor afbeeldingen.** Geef je cover een beschrijving (en inline-afbeeldingen behouden
415 hun eigen alt-tekst) — die federeert mee naar de fediverse en laat schermlezers de afbeelding beschrijven.
416- **Noem mensen in een post.** `@gebruiker@server` in een post linkt nu naar hun profiel en stuurt
417 ze een melding op de fediverse — ook als ze je niet volgen — net als een vermelding in een reactie.
418- **Korte video's in de feed spelen automatisch af en loopen.** Een geanimeerde cover of een korte
419 (≤30s) clip in de News-feed speelt nu automatisch geluidloos in een lus, als een GIF; langere
420 video's houden hun bediening.
421- **Stem op fediverse-polls.** Een poll van een account dat je volgt verschijnt nu in de News-feed
422 met opties en de huidige resultaten, en je kunt je stem uitbrengen — die federeert terug zoals een
423 gewone Mastodon-stem.
424- **Maak je eigen polls.** Een post kan nu een poll bevatten (enkel- of meerkeuze, met een looptijd).
425 Die federeert als een echte fediverse-poll, dus je Mastodon-volgers kunnen stemmen vanuit hun eigen
426 app; de live-resultaten staan op de post en de poll sluit zichzelf zodra de tijd om is.
427
428### Gewijzigd
429- **Audio openbaar delen is nu onomkeerbaar.** Zodra een track openbaar op de fediverse is gedeeld,
430 is het bestand verspreid — weer "sluiten" zou schijnveiligheid zijn. De editor vergrendelt de keuze
431 na het openen en waarschuwt je voordat je 'm aanvinkt.
432
433### Opgelost
434- **Remote video's tonen een preview-frame.** Een video in de News-feed of op een Cirkel-tegel
435 (bv. van Loops of PeerTube) verscheen als zwart vlak tot je op afspelen drukte; er staat nu een
436 echt poster-frame. (Langere video's houden bewust hun bediening — alleen clips onder de 30
437 seconden spelen automatisch als een GIF.)
438- **Vermeldingen, hashtags en links tussen haakjes werken nu.** Een vermelding als
439 `(@gebruiker@server)`, een `(#hashtag)` of een URL tussen haakjes federeerde als platte tekst —
440 en de genoemde persoon kreeg nooit een melding. Ze linken (en melden) nu net als zonder haakjes.
441- **Kale webadressen worden links op de fediverse.** Een losse URL in een post of reactie federeert
442 nu als klikbare link in plaats van platte tekst.
443
444## [1.2.0] — 2026-07-01
445
446### Toegevoegd
447- **PeerTube-video's in de feed.** Een PeerTube-link in een post toont nu een ingesloten speler in de
448 News-feed, net zoals YouTube, Spotify en SoundCloud al deden.
449- **Lichte deel-afbeeldingen.** Sites met een licht standaardthema krijgen nu een bijpassende lichte
450 Open Graph-kaart bij het delen van een pagina, in plaats van altijd een donkere.
451- **Je eigen bezoeken buiten de statistieken laten.** Als beheerder kun je nu je eigen IP-adres
452 uitsluiten van je sitestatistieken, voor een eerlijker beeld van echte bezoekers.
453- **Rechtsklik "Opslaan" is uitgeschakeld op covers, afbeeldingen en video's** — een lichte drempel
454 zodat de artwork niet met één klik op te slaan is (frictie, geen bescherming).
455
456### Opgelost
457- **Geanimeerde video-covers tonen nu overal correct.** In de Cirkel en het raster konden ze
458 verschijnen als een kapotte afbeelding of een leeg vak; ze tonen nu als een echte doorlopende video
459 die het vierkant vult, gecentreerd. Rechtsklikken op een cover geeft het normale link-menu in plaats
460 van de video-bediening van de browser.
461- **Iemand volgen blijft niet meer hangen.** Een volg-verzoek waarvan de eerste bezorging faalt (de
462 andere server even onbereikbaar) wordt nu automatisch opnieuw geprobeerd, in plaats van eeuwig op
463 "in behandeling" te blijven staan.
464- **Geboooste posts tonen hun echte tekst** in de Cirkel, in plaats van een "RE: <link>"-prefix.
465- **Steviger fediverse-afhandeling** — strengere handtekening-controles op inkomende activiteit,
466 blokkades dekken nu ook een boost van een geblokkeerde auteur, en het synchroniseren van gepinde
467 posts racet niet meer als je snel achter elkaar opslaat.
468
469## [1.1.0] — 2026-06-30
470
471### Toegevoegd
472- **Geanimeerde covers spelen overal soepel.** Upload een geanimeerde WebP als cover en Klonkt maakt
473 er ook een geluidloze, doorlopende video van. iOS Safari — waar geanimeerde WebP hapert — krijgt de
474 soepele video, elke andere browser houdt de scherpe WebP, en op de fediverse federeert de cover als
475 een video die in Mastodon en z'n apps speelt. Te zien op de post, het grid, de feed en gerelateerde posts.
476- **Mediabibliotheek (Beheer → Media).** Zie elke geüploade afbeelding, waar elke wordt gebruikt,
477 kopieer de URL, en ruim ongebruikte bestanden in één klik op — inclusief de overgebleven video/poster
478 van een geanimeerde cover. Afbeeldingen, Audio en Playlists delen nu één tab-balk.
479- **Deel-knop** onderaan elke post (native deelmenu, of link kopiëren).
480- **Vervang het audiobestand van een track** zonder de track opnieuw aan te maken.
481- **Muziek op de fediverse (eerste stap).** Audio-posts dragen nu schema.org *MusicRecording* /
482 *MusicAlbum*-data, en een per-post-schakelaar kan een gehoste track delen als een echte
483 fediverse-audiobijlage die in de feeds van volgers speelt.
484
485### Gewijzigd
486- **Nettere embeds op Mastodon.** Een post met een YouTube/Spotify/SoundCloud-link laat Mastodon nu
487 z'n player-kaart tonen; link-only tracks delen hun streaming-links. De cover blijft zichtbaar in
488 andere Klonkt-feeds. (Op je eigen site verandert niets — de speler en cover renderen zoals voorheen.)
489- **Cirkels blijven gesynct op de fediverse-manier** — bewerkingen en gemiste posts lopen automatisch
490 bij via standaard ActivityPub, zodat een Cirkel niet meer uit sync raakt.
491- **Alles wat Klonkt federeert is nu valide AS2 / JSON-LD**, bewaakt door een test, zodat striktere
492 servers het accepteren.
493- De tracklijst staat **nieuwste eerst**.
494
495### Opgelost
496- **Geanimeerde WebP-covers worden niet meer tot één frame bevroren** (de crop-editor en de
497 thumbnailer maakten ze statisch).
498- **Link-only tracks** (Spotify/YouTube, geen geüpload bestand) zijn weer in een post in te voegen.
499- **Link-previews** (og:image / Twitter-kaart) gebruiken nu absolute afbeeldings-URL's, zodat ze op
500 Signal, WhatsApp en andere scrapers verschijnen.
501- Diverse **fediverse-bezorgings-fixes**: covers/links worden geen zwarte tegel meer op Mastodon, rauwe
502 audiobestanden vervuilen geen post die al een speler heeft, en dode links van een hernoemde remote
503 post helen zichzelf.
504- De **mobiele feed** laadt covers op volledige resolutie; lange titels breken af i.p.v. over te lopen.
505- **Self-host-updates** zijn betrouwbaarder: de installer opnieuw draaien behoudt je kanaal, en de
506 updater herstart niet meer (of claimt geen update) als je al up-to-date bent.
507
508## [1.0.0] — 2026-06-30
509
510### Toegevoegd
511- **Klonkt zit nu op de fediverse (ActivityPub).** Je site is een echt
512 fediverse-account: mensen op **Mastodon** — of een andere **Klonkt** — kunnen je
513 volgen, en je berichten komen in hun feed. Je kunt zelf accounts volgen en hun
514 berichten lezen in een **News**-feed, **notificaties** krijgen, en berichten **liken,
515 boosten en erop reageren**. Inkomende activiteit wordt geverifieerd, dus nep-reacties,
516 -likes en -volgers worden geweigerd.
517- **Iedereen kan vanaf de fediverse op je berichten reageren, ze liken of boosten** —
518 bezoekers reageren vanuit hun eigen account (ze vullen alleen hun server in); een
519 account op jouw site is niet nodig.
520- **Circles**: volg andere Klonkt-sites en toon elkaars openbare berichten in je
521 Circle — decentraal, zonder centraal platform.
522- **Gevoelige (NSFW) berichten** met je eigen waarschuwingstekst: vervaagd met
523 klik-om-te-tonen op de hele site, en getoond als inhoudswaarschuwing op de fediverse.
524- **Blokkeer** een account of een heel domein waar je liever niets van hoort.
525- Zoeken vindt nu ook **tracks** (op titel, artiest en album), direct af te spelen vanuit
526 de resultaten met een link naar het bericht waarin ze voorkomen — en bij berichten zoek
527 je al terwijl je typt.
528- **Live thema-voorbeeld** in Beheer → site-instellingen: accent, thema en palet worden
529 direct bijgewerkt, nog vóór je opslaat.
530- Geüploade afbeeldingen worden automatisch geoptimaliseerd naar **WebP** voor snellere
531 pagina's.
532- Een ruimere **schrijfervaring op mobiel**: tik om een afleidingsvrije, schermvullende
533 editor te openen, met de opmaakbalk die boven het toetsenbord in beeld blijft.
534
535### Gewijzigd
536- **Paletten teruggebracht naar 8**: het neutrale **Klonkt** (goud accent) is de nieuwe
537 standaard, plus zeven volkleurige thema's — **Forest**, **Ocean**, **Teal**, **Lilac**,
538 **Sunset**, **Candy** en **Amber**.
539
540### Verwijderd
541- **Hub-modus** — Klonkt is nu **solo of Circles**; je bouwt een collectief of label
542 via **Circles** (gefedereerde, zelfstandige sites).
543- **Eigen reacties en Google-login** — reageren, liken en boosten loopt nu volledig
544 via de fediverse.
545- **Lokale favorieten (♥)** — vervangen door de ⭐ fediverse-like.
546
547### Opgelost
548- De mini-speler springt en scrollt naar de track die speelt — ook vanuit een album of
549 afspeellijst — en houdt die gemarkeerd.
550- Lege album-/afspeellijst-covers vallen nu terug op de cover van de eerste track.
551- Een profielfoto die na de overstap naar **WebP** kapotging in de koptekst, herstelt
552 zichzelf nu.
553- Veel verbeteringen aan de **mobiele berichten-editor**: betrouwbaar scrollen, een
554 opmaakbalk die op z'n plek blijft, geen pagina-sprongen als je op een knop tikt, en een
555 Opslaan-balk die net boven het toetsenbord zit.
556
557## [1.0.0-beta.2] — 2026-06-19
558
559Eerste release waarbij we de versie actief bijhouden (te zien in de footer — klik erop voor
560deze pagina).
561
562### Toegevoegd
563- Releasetracking: het versienummer in de footer linkt naar deze wijzigingenpagina.
564- Acht premiumfuncties (achter **Patreon**): nieuwsbrief/mailinglijst, download-voor-e-mail,
565 release-planning + previews alleen voor fans, **EPK**/perskit, pro-statistieken,
566 link-in-bio + klikstatistieken, insluitbare speler, en showagenda + houd-me-op-de-hoogte.
567- Nieuwsbrief-aanmeldveld in de footer (aan/uit in Beheer → Instellingen).
568- **SMTP**-instellingen in te stellen in Beheer → Instellingen (geen aanpassing van een
569 configuratiebestand meer nodig), met een testmail-knop.
570
571### Gewijzigd
572- Nettere instellingenformulieren (gestapelde labels, volledig brede invoervelden).
573- **EPK**/perskit toont de top 10 meest beluisterde tracks.
574- Mooiere 404-pagina (mobielvriendelijk) en duidelijkere inlogfoutmeldingen.
575
576### Opgelost
577- De sitebrede audiospeler laadde geen enkele track.
578- Knoptekst werd onleesbaar bij hover.
579- Datumkiezers volgen nu het thema.
580- Vooruit/terug-navigatie toont geen dubbele koptekst meer.
Note: See TracBrowser for help on using the repository browser.