Goede uitspraken.
Blijvend bewaard.
Een openbare quotes-website die uitspraken uit TeamSpeak-kanaalbeschrijvingen bewaart en bezoekers één quote tegelijk laat ontdekken.
Status: requirements — nog geen quotes-app
01 — Doel en afbakening
Quotes uit alle kanalen van teamspeak.p0mp.com automatisch verzamelen en duurzaam archiveren. De website is voor iedereen zichtbaar, zonder bezoekersaccount.
- Kanaalbeschrijvingen zijn de bron; live gesprekken en chatberichten vallen buiten de scope.
- Het archief blijft bestaan wanneer een beschrijving verandert of een kanaal verdwijnt.
- Alle kanalen moeten leesbaar zijn voor het importaccount. Ontbrekende rechten worden gemeld; een gedeeltelijke import geldt niet als volledige synchronisatie.
02 — Eén quote per losse call
- De startpagina toont precies één quote, met auteur en alleen een datum wanneer die bekend is.
- De knop Volgende quote haalt via een afzonderlijke API-call één volgend item op, zonder paginaverversing.
- De server selecteert uit het lokale archief. Een bezoekerscall maakt geen verbinding met TeamSpeak en gebruikt geen LLM.
- API-antwoord bevat minimaal het blijvende quote-ID, de tekst, auteur en optionele datum. Endpoint en exacte payload worden bij implementatie vastgelegd.
- Laad-, fout- en leegstatus zijn herkenbaar. Bij een fout blijft de huidige quote zichtbaar; snel achter elkaar klikken veroorzaakt geen overlappende selecties.
- Bediening werkt met toetsenbord en op mobiel; focus en tekstcontrast blijven duidelijk.
03 — Willekeurig, zonder telkens dezelfde quotes
Iedere browser houdt in localStorage per quote-ID bij wanneer de quote voor het laatst is getoond. Deze geschiedenis blijft na herladen bewaard en wordt bij de volgende selectie meegestuurd.
- Nog ongeziene quotes: kies willekeurig één ID dat niet in de bekeken-geschiedenis staat.
- Alle beschikbare quotes gezien: kies de quote die het langst geleden is getoond. Bij gelijke kijktijd mag willekeurig worden gekozen.
- Na succesvolle weergave: voeg het ID toe of werk de laatste kijktijd bij. Een mislukte call telt niet als bekeken quote.
- Nieuwe import: nieuwe quote-ID’s zijn ongezien en krijgen daardoor voorrang op eerder getoonde quotes.
Geen willekeurige reset zodra alles gezien is: vanaf dat moment geldt oudste eerst. Met één beschikbare quote is herhaling onvermijdelijk.
Geschiedenis is per browserprofiel en domein, niet per persoon of apparaat. Verwijderde browsergegevens betekenen een nieuwe geschiedenis. Bij geblokkeerde opslag werkt de site tijdelijk met sessiegeheugen en meldt dat voortgang niet blijvend wordt bewaard. Andere tabbladen nemen opgeslagen wijzigingen over; exact gelijktijdige calls vragen aanvullende coördinatie.
04 — Ophalen, archiveren en dedupliceren
- Een aparte achtergrondtaak leest periodiek alle kanalen en beschrijvingen via ServerQuery. Interval en verbindingsinstellingen zijn configureerbaar.
- Originele beschrijvingen worden privé en versieerbaar opgeslagen met bronkanaal, kanaal-ID en ophaaldatum.
- Alleen gewijzigde beschrijvingen gaan opnieuw door quoteherkenning. Ongewijzigde imports maken geen dubbele records of onnodige LLM-calls.
- Quotes krijgen blijvende database-ID’s. Een correctie van auteur of datum behoudt het ID; het ID wordt niet bij iedere import opnieuw uit de inhoud berekend.
- Dezelfde quote in meerdere kanalen wordt één item met meerdere bronverwijzingen. Bij twijfel over gelijkheid volgt controle in plaats van automatisch samenvoegen.
- Herstel na een storing of herhaalde import mag geen duplicaten opleveren. Mislukte of onvolledige imports verwijderen geen bestaande quotes.
- Privé-archief en database krijgen een back-up- en herstelprocedure voordat de import productiegegevens beheert.
05 — Quote, auteur en datum herkennen
Beschrijvingen bevatten ook koppen, spelinformatie, hostnames en wachtwoorden. Niet iedere regel is een quote. De concrete herkenningsmethode staat nog open; een combinatie van lokale regels en een LLM is voorzien als mogelijke aanpak.
- De oorspronkelijke uitspraak blijft letterlijk behouden, inclusief spelling en taalgebruik. Geen herschreven of verzonnen quotes.
- Aanhalingstekens zijn een aanwijzing, geen vereiste. Ook losse uitspraken kunnen quotes zijn.
- Opeenvolgende zelfstandige quotes worden gesplitst. Uitspraken die samen één gesprek vormen, blijven één item.
- Auteur waar mogelijk uitlezen. Ontbreekt de auteur, dan geldt de afgesproken standaard Weyland; intern wordt vastgelegd dat dit een standaardwaarde is.
- Meerdere genoemde auteurs blijven behouden. Een onduidelijke auteursvermelding wordt niet zomaar als ontbrekend behandeld.
- Datum ontbreekt: leeg laten. Herkenbare datums mogen worden genormaliseerd; onduidelijke datums niet stilzwijgend gokken. De brontekst blijft privé beschikbaar.
- Twijfelgevallen komen in een afgeschermde controlelijst en worden niet blind gepubliceerd. Beoordelingen worden onthouden bij volgende imports.
- Bij LLM-gebruik: alleen tijdens import, met gestructureerde uitvoer en lokale validatie. Model, leverancier, kostenlimiet en publicatiedrempel zijn nog te bepalen.
06 — Openbare quotes, privé brongegevens
- Publieke API en website tonen uitsluitend vrijgegeven quotegegevens, nooit ruwe kanaalbeschrijvingen, wachtwoorden of verbindingsgegevens.
- Technische gegevens en geheimen worden lokaal weggefilterd vóór eventuele verzending naar een externe LLM. Bij twijfel is handmatige controle nodig; een filter is geen garantie.
- ServerQuery-credentials, archiefbestanden, logboeken en eventuele LLM-sleutels staan buiten de publieke documentroot.
- Bij voorkeur een apart importaccount met uitsluitend noodzakelijke leesrechten. De importer wijzigt geen TeamSpeak-kanalen.
- Quote-inhoud wordt als onbetrouwbare invoer behandeld: veilig als tekst renderen, nooit ongefilterde HTML of scripts uitvoeren. Broninhoud mag geen LLM-instructies overrulen.
- API-invoer wordt begrensd en gevalideerd; bezoekersgeschiedenis is geen vertrouwde database-invoer. Logs bewaren geen volledige browsergeschiedenissen.
- Beheer en beoordelingen zijn niet openbaar toegankelijk. Een procedure voor het verbergen of verwijderen van ongewenst gepubliceerde quotes moet vóór lancering worden vastgelegd.
07 — Wanneer is het klaar?
- Een echte ServerQuery-import toont aan dat beschrijvingen uit alle bedoelde kanalen leesbaar zijn.
- Een testbeschrijving met spelinformatie en een fictief wachtwoord levert uitsluitend bedoelde quotes op; geheimen komen niet in publieke output of externe LLM-invoer.
- De afgesproken voorbeelden met ontbrekende auteur, ontbrekende datum, wisselende opmaak en een gesprek worden correct verwerkt of ter controle aangeboden.
- Twee identieke imports leveren dezelfde quote-ID’s en aantallen op. Dezelfde quote uit twee kanalen verschijnt niet dubbel.
- Bij N beschikbare quotes toont een browser eerst N verschillende ID’s. Daarna verschijnt de langst-geleden-getoonde quote; een nieuwe quote krijgt voorrang.
- Herladen behoudt geschiedenis. Correcties van auteur of datum laten de bestaande bekeken-status intact.
- Storingen, een leeg archief en onbeschikbare browseropslag zijn afgehandeld. Bestaande quotes blijven na een importstoring beschikbaar.
- Mobiele weergave, toetsenbordbediening, API-gedrag en geschiedenis zijn in een echte browser getest. Back-upherstel en afscherming van privébestanden zijn gecontroleerd.
08 — Huidige stand en volgende stap
Gecontroleerd op 4 november 2026: de doelserver is bereikbaar op SSH/ServerQuery-poort 10022. Anonieme toegang werd geweigerd; op de geteste standaardpoorten 10011 en 10080 werd de verbinding geweigerd. Er zijn nog geen kanaalbeschrijvingen opgehaald.
- ServerQuery-toegang veilig lokaal configureren; rechten en selectie van de juiste virtuele server controleren.
- Eerst een alleen-lezen-proefimport uitvoeren en volledigheid verifiëren.
- Met echte bronvarianten de herkenning testen; beslissen of en welke LLM nodig is.
- Privé-archief, blijvende ID’s en herhaalbare import implementeren.
- Selectie-API en de eenvoudige één-quote-interface bouwen en integraal testen.