Den anden halvdel af den melding, der begyndte det her: linkene i en delt note førte ingen steder hen, fordi det, de pegede på, ikke var delt. At dele en note er at dele det, den *siger*, og et link er en del af det. note_shares får en `linked`-søjle. 0 er en deling, nogen har valgt; 1 er en, der er udledt af et link. Skellet er hele modellen. Fladen kan sige *hvorfor* en person har en note — "fulgte med" er en anden sætning end "du delte den" — og de udledte rækker kan regnes forfra efter hver ændring, uden at røre dem, ejeren selv har sat. SyncLinkedShares regner billedet om fra bunden efter enhver af ejerens egne handlinger: en deling, en fjernet deling, en gemning der har ændret links eller titel, en sletning. Hele kæden følger med, ikke kun første led, med et loft på hundrede noter — "del denne ene note" må ikke kunne blive til fire hundrede. Rollen arves fra den note, man kom fra, og stærkest vinder, når en note kan nås ad to veje. Kun ejerens egne noter følger med, og det er ikke en optimering: et link peger på en titel, og en medredaktør må skrive titler. Kunne et link hente hvad som helst, kunne den, man har delt med, skrive [[Bankoplysninger]] og læse med. Derfor slås der kun op blandt ejerens egne noter, og derfor regner kun ejerens egne gemninger om. Begge dele har en Go-prøve. Det lukker ikke hullet helt: skriver medredaktøren linket, og gemmer ejeren bagefter sin egen note, følger den note med dér. Det, der står imod, er synlighed — linket står som tekst i ejerens egen note, og panelet viser hver note, der er fulgt med, og hvem der har den. Udregningen åbner hver af ejerens noter, fordi titlerne er forseglet. Derfor to værn: har man ikke delt noget, svares der med det samme ud fra ét EXISTS, og en gemning regner kun om, når links eller titel faktisk har flyttet sig. Uden det første kostede "Ny note" halvfems millisekunder, og i det hul nåede e2e-prøven for monospace at taste sin titel ind i den forrige note, som editoren så tegnede væk. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013r4DxpUZcSShxfCZZaeMGZ
23 lines
1.4 KiB
SQL
23 lines
1.4 KiB
SQL
-- De noter, en delt note peger på, følger med delingen.
|
|
--
|
|
-- Et `[[link]]` i en note, der er delt, pegede indtil nu på noget, modtageren
|
|
-- ikke havde fået. Linket stod der, kunne ses, og førte ingen steder hen — meldt
|
|
-- af den første, der prøvede at læse en delt note, og med rette: den, der deler
|
|
-- en note, deler det, noten *siger*, og et link er en del af det, den siger.
|
|
--
|
|
-- Rækken er den samme som en almindelig deling. `linked` er den ene forskel: den
|
|
-- siger, at rækken ikke er valgt af nogen, men udledt af, hvad noten peger på.
|
|
-- Det gør to ting muligt, som en boolsk værdi ellers sjældent gør sig fortjent
|
|
-- til. Fladen kan sige *hvorfor* en person har den note — "den fulgte med" er en
|
|
-- anden sætning end "du delte den". Og udledningen kan regnes forfra hver gang:
|
|
-- de udledte rækker må slettes og skrives igen efter hver ændring, mens de
|
|
-- valgte aldrig røres. Uden skellet ville en oprydning enten lade forældede
|
|
-- delinger blive stående eller fjerne dem, ejeren selv havde sat.
|
|
--
|
|
-- Kun ejerens egne noter følger med. Et link peger på en *titel*, og titler kan
|
|
-- skrives af enhver, der må rette i noten — så hvis et link kunne hente hvad som
|
|
-- helst, ville en medredaktør kunne skrive `[[Bankoplysninger]]` og læse med.
|
|
-- Opslaget sker derfor kun blandt de noter, ejeren selv ejer, og deling af dem
|
|
-- har ejeren allerede ret til.
|
|
ALTER TABLE note_shares ADD COLUMN linked INTEGER NOT NULL DEFAULT 0;
|