Changeset 749605a in Klonkt for src/routes/circle.js


Ignore:
Timestamp:
08/16/2026 03:06:18 PM (3 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
a5caa73
Parents:
a5515b4 (diff), 9026de5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Bibliotheek en album-federatie terug op main (shaer-0nh, shaer-756s)

Achttien commits, in drie brokken.

DE BIBLIOTHEEK. Een Library-skelet met een eigen volgerssoort: wie de
bibliotheek volgt krijgt de muziek en met opzet niet de gewone posts, en
die staan daarom in een eigen tabel -- een vlag die iemand vergeet te
filteren bezorgt stilletjes de Krant aan mensen die er niet om vroegen.
Daarna wat er nodig bleek om werkelijk gelezen te worden: audience
(zonder dat gaf hun create() een KeyError en dus een 500 op onze URL),
de ongeordende collectievorm, en paginering op elke collectie die first
belooft -- die laatste vond meteen dat featured hetzelfde gat had.

HET VOCABULAIRE. fw:track in de kleine vorm die Emissary ook stuurt,
artist_credit met de site-actor als Artist (mogelijk geworden door de
MusicBrainz-koppeling), en het album als ingesloten fw:Album met
released, musicbrainzId en een eigen artist_credit. Daarvoor kwamen er
twee kolommen op playlists, alleen bij kind='album' en afgedwongen in
PlaylistService -- niet in het scherm, want de API ligt open.

HET BEHEER. De vijf mediapagina's stonden op drie verschillende
ontwerpen; nu op een gedeelde ax-romp, met de primitieven op een plek in
plaats van in acht kopieen. De playlist-modal ging alsnog door i18n: die
teksten stonden hard in het script, wat niet opviel omdat het toevallig
de brontaal was.

WAT ER NIET IN ZIT: bitrate en size top-level als fw:. Dat is bewust
(shaer-3f8a). Hun eigen outbox zet ze op de Link, net als wij, en het
wordt een gesprek in plaats van een aanpassing -- briefing in
~/bewaard/funkwhale-briefing-en.md.

Gereedschap dat meekomt: scripts/funkwhale-gat.mjs meet het gat naar hun
ingest, admin-css.mjs en admin-css-gelijk.mjs ontleden en vergelijken de
beheer-CSS, render-admin-views.mjs rendert de views gevuld en leeg. Die
laatste drie omdat de testsuite geen enkele view aanraakt.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/circle.js

    ra5515b4 r749605a  
    1616  return typeof u === 'string' && /^https?:\/\//i.test(u) ? u : null;
    1717}
     18/**
     19 * media_json als ARRAY, of leeg.
     20 *
     21 * De catch vangt KAPOTTE json; hij ving niet geldige json van het verkeerde
     22 * TYPE. Een remote server stuurde media_json = "[]" -- een string MET daarin
     23 * `[]` -- en JSON.parse geeft dan netjes een string terug. Een string heeft
     24 * geen .map, en daarmee lag /cirkel op boiert.eu plat: een 500 op de hele
     25 * pagina door een enkele post (rij 19 van 72).
     26 *
     27 * Precies dezelfde fout stond al beschreven en gerepareerd in
     28 * views/partials/note-body.ejs, waar drie vreemde notes de Krant meenamen.
     29 * Die reparatie is hier nooit gekomen -- zelfde data, andere route. Wat er
     30 * binnenkomt is niet van ons, dus de vorm hoort afgedwongen en niet aangenomen.
     31 */
    1832function safeJson(s) {
    19   try { return s ? JSON.parse(s) : []; } catch { return []; }
     33  try {
     34    const v = s ? JSON.parse(s) : [];
     35    return Array.isArray(v) ? v : [];
     36  } catch { return []; }
    2037}
    2138// The cover image + (separately) a cover video from a remote note's media. NEVER use a video/audio
Note: See TracChangeset for help on using the changeset viewer.