Ignore:
Timestamp:
08/13/2026 06:16:49 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
fbda20e
Parents:
096f099
Message:

Volglijst: Featured is auto_boost, plus de knoppen om hem mee te nemen

Twee dingen: een correctie op de vorige commit, en de ingang die er nog niet was.

DE CORRECTIE. Ik had auto_boost in de kolom "Show boosts" gezet omdat in beide het
woord boost zit. Dat is fout. Bij Mastodon betekent die kolom "toon de reblogs van
deze persoon in mijn tijdlijn", en dat kent Klonkt niet; onze vlag gaat over hun
EIGEN posts in JOUW Cirkel. Dat is de vlag die in de UI al "Uitgelicht" heet
(tl.autoboost, in het Engels letterlijk "Featured"), dus hij hoort in de kolom
Featured en "Show boosts" blijft leeg.

Daarmee vervalt ook de kolom highlighted die ik in de vorige commit toevoegde:
die was een nieuw begrip naast een bestaand begrip met dezelfde naam. Eén ding, één
naam. Een bestand uit Mastodon levert nu featured: false, en dat is juist: hun
kolom 2 mag hier niet als uitgelicht binnenkomen.

DE INGANG. De vorige commit had de functies maar geen knop, en volgens de eigen
regel is een feature pas af als een eindgebruiker hem kan gebruiken. Op /following
staat nu een uitklapblok met een downloadknop en een plakveld.

De importroute geeft followActor mee als followFn, zodat er één pad naar een
volgrelatie blijft. Daar zat een val in: followActor meldt een fout als VELD en
niet als exception, dus zonder vertaling telde een onvindbaar account als geslaagd
mee. Die vertaling zit er nu in.

Changed files:
src/config/database.js

  • kolom highlighted teruggedraaid; commentaar bij auto_boost zegt nu dat het "Uitgelicht"/"Featured" heet

src/services/ArchiveExportService.js

  • auto_boost naar kolom Featured, Show boosts/Notify/Languages blijven leeg
  • parseFollowingCsv leest alleen kolom 5, en levert featured in plaats van twee velden

src/services/ArchiveImportService.js

  • de uitgelicht-stand gaat mee IN de Follow (derde argument), geen tweede UPDATE erna

src/routes/posts.js

  • GET /news/following.csv, met private/no-store want dit is jouw volglijst
  • POST /news/following/import, urlencoded, roept importFollowing aan met followActor

src/services/i18n.js

  • vijf teksten in nl, en en de

src/views/pages/following.ejs

  • het uitklapblok met de downloadknop en het plakveld

test/following-csv.test.js

  • bijgewerkt naar de juiste kolomindeling; de Mastodon-test controleert nu expliciet dat hun "Show boosts: true" NIET als uitgelicht landt

remarks: 921 groen in UTC en Europe/Amsterdam. Server gestart en de drie routes
nagelopen: alle drie bestaan en sturen naar de login, geen serverfouten. De template
apart gerenderd in nl/en/de, geen onvertaalde sleutels. De pagina zelf achter de
login niet visueel gezien; daar is een account voor nodig. Onderweg per ongeluk
.claude/launch.json overschreven (die zette PUBLIC_BASE_URL) en weer hersteld.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ArchiveExportService.js

    r096f099 re9ec5e4  
    246246//   Account address,Show boosts,Notify on new posts,Languages,Featured
    247247//
    248 // De vijfde kolom is van ons. Mastodon leest de eerste vier en negeert de rest,
    249 // dus dit blijft daar gewoon importeerbaar. `Featured` is de kolom voor
    250 // `highlighted`: accounts die je op je profiel uitlicht. `Show boosts` is onze
    251 // `auto_boost`. `Notify` en `Languages` kent Klonkt niet en blijven leeg; ze
    252 // staan er alleen omdat Mastodon de posities telt.
     248// `Featured` is onze kolom en draagt `auto_boost`: het vinkje dat in de UI
     249// "Uitgelicht" heet (tl.autoboost) en hun posts in jouw Cirkel laat meelopen.
     250//
     251// `Show boosts` blijft LEEG. Dat is bij Mastodon "toon de reblogs van deze
     252// persoon in mijn tijdlijn", en dat kent Klonkt niet. De verleiding is groot om
     253// er auto_boost in te schrijven omdat in beide het woord boost zit, maar het is
     254// een ander ding: dat van ons gaat over hun eigen posts in JOUW Cirkel, niet
     255// over andermans posts die zij doorgeven. `Notify` en `Languages` kent Klonkt
     256// evenmin. Die drie staan er omdat Mastodon de POSITIES telt.
    253257const CSV_KOP = 'Account address,Show boosts,Notify on new posts,Languages,Featured';
    254258
     
    273277  let rijen = [];
    274278  try {
    275     rijen = db.prepare(`SELECT actor_uri, handle, auto_boost, highlighted FROM ap_following
     279    rijen = db.prepare(`SELECT actor_uri, handle, auto_boost FROM ap_following
    276280                         WHERE slug = ? AND status = 'accepted'
    277281                         ORDER BY handle IS NULL, handle, actor_uri`).all(slug);
     
    280284  const regels = rijen.map((r) => [
    281285    csvVeld((r.handle || r.actor_uri || '').replace(/^@/, '')),
    282     r.auto_boost ? 'true' : 'false',
    283     'false',
    284     '',
    285     r.highlighted ? 'true' : 'false',
     286    '',                                    // Show boosts: niet van ons
     287    '',                                    // Notify on new posts: idem
     288    '',                                    // Languages: idem
     289    r.auto_boost ? 'true' : 'false',       // Featured: het vinkje "Uitgelicht"
    286290  ].join(','));
    287291  return `${CSV_KOP}\n${regels.join('\n')}\n`;
     
    301305  if (!regels.length) return uit;
    302306  // Een kopregel herkennen we aan het eerste veld; anders is regel 1 al data.
    303   const start = /^\s*"?account address"?\s*,/i.test(regels[0]) || /^\s*"?account address"?\s*$/i.test(regels[0]) ? 1 : 0;
     307  const start = /^\s*"?account address"?\s*(,|$)/i.test(regels[0]) ? 1 : 0;
    304308  for (const regel of regels.slice(start)) {
    305309    const velden = splitsCsvRegel(regel);
     
    308312    uit.push({
    309313      address: adres,
    310       autoBoost: /^(true|1|yes)$/i.test((velden[1] || '').trim()),
    311       highlighted: /^(true|1|yes)$/i.test((velden[4] || '').trim()),
     314      // Alleen kolom 5. Een bestand uit Mastodon heeft die niet en levert dus
     315      // `false`, en dat is juist: hun "Show boosts" in kolom 2 gaat over iets
     316      // anders en mag hier niet als uitgelicht binnenkomen.
     317      featured: /^(true|1|yes)$/i.test((velden[4] || '').trim()),
    312318    });
    313319  }
Note: See TracChangeset for help on using the changeset viewer.