strom-research 1.18.0-beta.8 → 1.18.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.cs.md CHANGED
@@ -7,7 +7,7 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
7
7
 
8
8
  ## 1.18.0
9
9
 
10
- *Připravuje se: bety do 1.18.0-beta.8. Oddíl bude úplný s vydáním.*
10
+ *Připravuje se: bety do 1.18.0-beta.9. Oddíl bude úplný s vydáním.*
11
11
 
12
12
  - **Fotky z telefonu nastojato.** Fotka otočená podle údaje EXIF se čte tak, jak se má dívat, nastojato; místa na ní
13
13
  vyznačená (výřezy, poloviny dvoustrany, uložená část) jsou místa obrázku, jak se ukazuje. Fotka sama zůstává, jak
@@ -38,13 +38,26 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
38
38
  posledního pohledu z telefonu (aspoň posledních 24 hodin, starší klepnutím) — nové osoby, prameny, nalezené, opravené
39
39
  či nově doložené údaje, vyřešené rozpory — nové zvýrazněné; co přibude při otevřené stránce, ukáže jen počet
40
40
  v názvu záložky a malý štítek.
41
- - **Souhlas v jednom jazyce.** Souhlas, který dává jen člověk (rozbalení výzkumu, odebrání stromu, odmítnuté okno),
42
- zazní celý v jazyce výzkumu, nic z něj nezůstane anglicky.
43
- - **Odmítnutá aktualizace.** Když se `strom update` odmítne, řekne, že se nic nenainstalovalo a která verze zůstává,
44
- a skončí chybovým kódem; nepovedená instalace se řekne také v jazyce výzkumu.
45
- - **Otázka i v terminálu.** Co otevírá počítač ven, stojí peníze nebo spouští cizí program – Remote Control,
46
- stahovače bez ptaní, podmínka práce agenta o samotě, hook, vlastní tempo archivu, propojení s telefonem, ladění
47
- čtení – se v terminálu ptá ano/ne; Enter znamená ne a `--yes` za člověka neodpoví.
41
+ - **Souhlas v jednom jazyce, otázka i v terminálu.** Souhlas, který dává jen člověk (rozbalení výzkumu, odebrání
42
+ stromu, odmítnuté okno), zazní celý v jazyce výzkumu. Co otevírá počítač ven, stojí peníze nebo spouští cizí program
43
+ – Remote Control, stahovače bez ptaní, podmínka práce agenta o samotě, hook, vlastní tempo archivu, propojení s
44
+ telefonem, ladění čtení – se ptá ano/ne i v terminálu; Enter znamená ne a `--yes` za člověka neodpoví. Když se
45
+ `strom update` odmítne, řekne, že se nic nenainstalovalo a která verze zůstává, a skončí chybovým kódem; nepovedená
46
+ instalace se řekne také v jazyce výzkumu.
47
+ - **Chybné jméno nebo poznámka odvolané.** `strom name retract` odvolá jméno špatně přečtené nebo přiřazené jinému
48
+ člověku, `strom note retract` poznámku a `strom note edit` ji opraví – u osoby, faktu i úkolu, vždy s důvodem; nic
49
+ se nemaže. Odvolané se už nikde neukazuje – ani agentovi, ani v GEDCOM, ani ve `strom find`, takže ho aplikace Strom
50
+ po načtení stromu neukáže a synchronizace ho nevrátí; `strom person show --history` řekne, co to bylo, kdy a proč, a
51
+ `strom name restore` nebo `strom note restore` ho vrátí.
52
+ - **Opravy z hlášení.** Rozloučení nabídky řekne, jak strom spustit znovu i tam, kde okno terminálu příkaz ještě nezná
53
+ (po instalaci jedním řádkem: v novém okně `strom`, v tomto plná cesta; plná cesta i tam, kde se na jméno ozve dřív
54
+ jiný `strom`), a když most pro aplikaci Strom běží dál, řekne to i s tím, jak ho zastavit; výběr rodokmenu v nabídce
55
+ jde vrátit nulou. Most už nedrží složku rodokmenu, takže ji jde na Windows smazat, a sám skončí, když rodokmen zmizí
56
+ (rodokmen smaže `strom trees remove`). Konec stromu, kde křest neuvádí otce, je uzavřený, jakmile na něm nic neběží
57
+ – už nečeká natrvalo na rozhodnutí. Pramen přejmenovaný v aplikaci Strom se přejmenuje i ve výzkumu a signatura nebo
58
+ strana pramene přijde do aplikace k prameni samému („Signatura / strana“), i když ho zatím nic necituje. S
59
+ `excerpts.for all` dostane v aplikaci Strom výřez i pramen, který zatím nikdo necituje, pokud se vedle citovaných
60
+ vejde do limitu – citované se kvůli němu nezmenší; co se nevešlo, se řekne.
48
61
 
49
62
  ## 1.17.0
50
63
 
package/CHANGELOG.de.md CHANGED
@@ -7,7 +7,7 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
7
7
 
8
8
  ## 1.18.0
9
9
 
10
- *In Vorbereitung: die Betas bis 1.18.0-beta.8. Der Abschnitt ist mit dem Release vollständig.*
10
+ *In Vorbereitung: die Betas bis 1.18.0-beta.9. Der Abschnitt ist mit dem Release vollständig.*
11
11
 
12
12
  - **Handyfotos aufrecht.** Ein Foto, das nach seiner EXIF-Ausrichtung gedreht ist, wird gelesen, wie es gesehen
13
13
  werden soll, aufrecht; die darauf markierten Stellen (Ausschnitte, die Hälften einer Doppelseite, ein gespeicherter
@@ -43,16 +43,30 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
43
43
  Handy gefunden hat (mindestens die letzten 24 Stunden, ältere auf Antippen) — neue Personen, Quellen, gefundene,
44
44
  korrigierte oder neu belegte Angaben, geklärte Widersprüche —, die neuen hervorgehoben; was bei offener Seite
45
45
  hinzukommt, zeigt nur eine Zahl im Titel des Tabs und ein kleines Etikett.
46
- - **Eine Zustimmung in einer Sprache.** Eine Zustimmung, die nur ein Mensch gibt (eine Forschung entpacken, einen
47
- Stammbaum entfernen, ein abgelehntes Fenster), steht ganz in der Sprache der Forschung, nichts davon bleibt
48
- Englisch.
49
- - **Ein abgelehntes Update.** Wird `strom update` abgelehnt, sagt es, dass nichts installiert wurde und welche
50
- Version bleibt, und endet mit einem Fehlercode; eine misslungene Installation wird auch in der Sprache der
51
- Forschung gesagt.
52
- - **Auch im Terminal gefragt.** Was den Computer nach außen öffnet, Geld kostet oder ein fremdes Programm startet –
53
- Remote Control, Downloader ohne Rückfrage, die Bedingung für den Agenten allein, ein Hook, ein eigenes Tempo eines
54
- Archivs, die Verbindung mit dem Telefon, das Abstimmen des Lesens – fragt auch im Terminal Ja oder Nein; Enter
55
- heißt Nein, `--yes` antwortet nie dafür.
46
+ - **Eine Zustimmung in einer Sprache, auch im Terminal gefragt.** Eine Zustimmung, die nur ein Mensch gibt (eine
47
+ Forschung entpacken, einen Stammbaum entfernen, ein abgelehntes Fenster), steht ganz in der Sprache der Forschung.
48
+ Was den Computer nach außen öffnet, Geld kostet oder ein fremdes Programm startet – Remote Control, Downloader ohne
49
+ Rückfrage, die Bedingung für den Agenten allein, ein Hook, ein eigenes Tempo eines Archivs, die Verbindung mit dem
50
+ Telefon, das Abstimmen des Lesens – fragt auch im Terminal Ja oder Nein; Enter heißt Nein, `--yes` antwortet nie
51
+ dafür. Wird `strom update` abgelehnt, sagt es, dass nichts installiert wurde und welche Version bleibt, und endet
52
+ mit einem Fehlercode; eine misslungene Installation wird auch in der Sprache der Forschung gesagt.
53
+ - **Ein falscher Name oder eine falsche Notiz zurückgezogen.** `strom name retract` zieht einen falsch gelesenen oder
54
+ der falschen Person gegebenen Namen zurück, `strom note retract` eine Notiz, und `strom note edit` berichtigt eine –
55
+ bei einer Person, einem Fakt oder einer Aufgabe, jeweils mit Grund; nichts wird gelöscht. Was zurückgezogen ist,
56
+ zeigt sich nirgends mehr – nicht dem Agenten, nicht im GEDCOM oder in `strom find`, so dass die Strom-App es nach
57
+ dem Laden des Stammbaums nicht mehr zeigt und ein Abgleich es nie zurückbringt; `strom person show --history` sagt,
58
+ was es war, wann und warum, und `strom name restore` oder `strom note restore` holt es zurück.
59
+ - **Korrekturen aus Meldungen.** Der Abschied des Menüs sagt, wie strom wieder startet, wo das Terminalfenster den
60
+ Befehl noch nicht kennt (nach der Installation mit einer Zeile: `strom` in einem neuen Fenster, in diesem der volle
61
+ Pfad; der volle Pfad auch, wo zuerst ein anderes `strom` auf den Namen antwortet), und sagt, wenn die Brücke für die
62
+ Strom-App weiterläuft, auch, wie sie zu beenden ist; die Wahl des Stammbaums im Menü geht mit 0 zurück. Die Brücke
63
+ hält den Ordner des Stammbaums nicht mehr fest, so dass Windows ihn löschen kann, und endet von selbst, sobald der
64
+ Stammbaum weg ist (einen Stammbaum löscht `strom trees remove`). Ein Ende des Baums, wo die Taufe keinen Vater
65
+ nennt, ist ein geschlossenes Ende, sobald nichts mehr daran läuft – es wartet nicht mehr für immer auf eine
66
+ Entscheidung. Eine in der Strom-App umbenannte Quelle heißt auch in der Forschung neu, und Signatur oder Seite einer
67
+ Quelle kommen in der App bei der Quelle selbst an, auch bevor etwas sie zitiert. Mit `excerpts.for all` bekommt auch
68
+ eine Quelle, die noch niemand zitiert, in der Strom-App ihren Ausschnitt, soweit er neben den zitierten unter die
69
+ Grenze passt – die zitierten werden dafür nie kleiner; was nicht passte, wird gesagt.
56
70
 
57
71
  ## 1.17.0
58
72
 
package/CHANGELOG.md CHANGED
@@ -7,7 +7,7 @@ The changes of each version in short. The full notes and the install lines are o
7
7
 
8
8
  ## 1.18.0
9
9
 
10
- *In preparation: the betas up to 1.18.0-beta.8. The section is complete with the release.*
10
+ *In preparation: the betas up to 1.18.0-beta.9. The section is complete with the release.*
11
11
 
12
12
  - **Phone photos upright.** A photo turned by its EXIF orientation is read as it is meant to be seen, upright; the
13
13
  places marked on it (excerpts, the halves of a spread, a cut-out part) are of the picture as it is shown. The
@@ -39,14 +39,29 @@ The changes of each version in short. The full notes and the install lines are o
39
39
  it is not this one). Finds, under Now, say what the research found since the phone looked last (the last 24 hours
40
40
  at least, older ones on a tap) — new people, sources, facts found, corrected or newly cited, conflicts resolved —
41
41
  the new ones marked; something new while the page is open shows only as a count in the tab's title and a small label.
42
- - **A consent in one language.** A consent only a person gives (unpacking a research, removing a tree, a window said
43
- no to) is said whole in the research's language, nothing of it left in English.
44
- - **An update said no to.** When `strom update` is declined, it says nothing was installed and which version stays,
45
- and ends with an error code; a failed install is said in the research's language too.
46
- - **Asked in the terminal too.** What opens the computer outward, costs money or runs another's program — Remote
47
- Control, downloaders without asking first, the condition of the agent working alone, a hook, an archive's own pace,
48
- the phone connection, tuning the reading — asks yes or no in the terminal as well; Enter says no, `--yes` never
49
- answers it.
42
+ - **A consent in one language, asked in the terminal too.** A consent only a person gives (unpacking a research,
43
+ removing a tree, a window said no to) is said whole in the research's language. What opens the computer outward,
44
+ costs money or runs another's program — Remote Control, downloaders without asking first, the condition of the agent
45
+ working alone, a hook, an archive's own pace, the phone connection, tuning the reading — asks yes or no in the
46
+ terminal as well; Enter says no, `--yes` never answers it. When `strom update` is declined, it says nothing was
47
+ installed and which version stays, and ends with an error code; a failed install is said in the research's language
48
+ too.
49
+ - **A wrong name or note taken back.** `strom name retract` takes back a name misread or given to the wrong person,
50
+ `strom note retract` a note, and `strom note edit` corrects one — of a person, a fact or a task, each with its
51
+ reason; nothing is deleted. What is taken back is shown nowhere any more — not to the agent, not in the GEDCOM or
52
+ `strom find`, so the Strom app no longer shows it once it loads the tree, and a sync never brings it back; `strom
53
+ person show --history` says what it was, when and why, and `strom name restore` or `strom note restore` puts it
54
+ back.
55
+ - **Fixes from reports.** The menu's goodbye says how to start strom again where the terminal window does not know the
56
+ command yet (after the one-line install: `strom` in a new window, the full path in this one; the full path also
57
+ where another `strom` answers the name first), and says when the Strom app's bridge goes on running and how to stop
58
+ it; the menu's choice of a family tree goes back with 0. The bridge no longer holds the family tree's folder, so
59
+ Windows can delete it, and ends by itself once the tree is gone (`strom trees remove` deletes a tree). An end of the
60
+ tree where the baptism names no father is a closed end once nothing runs on it, no longer waiting for a decision for
61
+ good. A source renamed in the Strom app is renamed in the research too, and a source's call number or page reaches
62
+ the app on the source itself, also before anything cites it. With `excerpts.for all` a source nobody cites yet gets
63
+ its excerpt in the Strom app too, wherever it fits under the limit beside the cited ones, which never get smaller
64
+ for it; what did not fit is said.
50
65
 
51
66
  ## 1.17.0
52
67
 
@@ -101,6 +101,9 @@
101
101
  "ui.menu.newtree": "Založit rodokmen · poslat nebo přijmout",
102
102
  "ui.menu.quit": "Konec",
103
103
  "ui.menu.bye": "Na shledanou. Příště stačí spustit: {strom}",
104
+ "ui.menu.bye.new": "Na shledanou. V novém okně terminálu stačí spustit: {strom} – v tomto okně: {path}",
105
+ "ui.menu.bye.path": "Na shledanou. Příště stačí spustit: {path}",
106
+ "ui.menu.bye.live": "Most pro aplikaci Strom běží dál na pozadí; zastavit: {strom} live stop",
104
107
  "ui.run.how": "Kolik úkolů? (skončí dřív, když už nebude co dělat; 0 vrátí zpět)",
105
108
  "ui.run.start": "Agent teď pracuje sám. Zastaví ho klávesy Ctrl-C – nic se neztratí.",
106
109
  "ui.waiting.none": "Nic nečeká.",
@@ -673,6 +676,7 @@
673
676
  "sync.verify.done": "každý záznam dohledaný a přečtený nezávisle (snímek zaregistrovaný, strom read M… --blind): čtení se shodují → poznámka u pramene a údaje zůstávají; liší se → rozpor s oběma čteními",
674
677
  "sync.reading.note": "Uživatel přečetl tento záznam v aplikaci Strom jinak ({source}); čtení výzkumu platí, dokud se záznam nepřečte znovu:",
675
678
  "sync.reading.page": "strana",
679
+ "sync.title.note": "Přejmenováno v aplikaci Strom ({source}), výzkum ho mezitím přejmenoval také; platí název výzkumu – název v aplikaci:",
676
680
  "sync.reading.text": "přepis",
677
681
  "read.note.source.edited": "Přepis byl upraven v aplikaci Strom; čtení {read} má: {text}",
678
682
  "read.note.edited": "Přepis byl upraven v aplikaci Strom: vodítko, dokud se záznam nepřečte ({read})",
@@ -796,6 +800,8 @@
796
800
  "ui.app.images.unclipped": "{n, plural, one {Další # pramen je na snímcích, ale u něj} few {Další # prameny jsou na snímcích, ale u nich} other {Dalších # pramenů je na snímcích, ale u nich}} zatím nikdo nevyznačil, kde zápis je — agent to umí doplnit.",
797
801
  "ui.app.images.smaller": "Aby se obrázky vešly do limitu {limit} MB, jsou menší, než je nastaveno: kvalita {level}, nastavena {asked}.",
798
802
  "ui.app.images.left": "{n, plural, one {# zápis nejdál od výzkumu je} few {# zápisy nejdál od výzkumu jsou} other {# zápisů nejdál od výzkumu je}} bez obrázku, aby se vše vešlo do limitu {limit} MB.",
803
+ "ui.app.images.uncited": "{n, plural, one {# zápis, který ve výzkumu nikdo necituje, je} few {# zápisy, které ve výzkumu nikdo necituje, jsou} other {# zápisů, které ve výzkumu nikdo necituje, je}} bez obrázku: vedle citovaných už pod limitem {limit} MB nezbylo místo.",
804
+ "ui.app.images.uncitedOut": "{n, plural, one {# zápis, který ve výzkumu nikdo necituje, v souboru není} few {# zápisy, které ve výzkumu nikdo necituje, v souboru nejsou} other {# zápisů, které ve výzkumu nikdo necituje, v souboru není}} (všechny: nastavení excerpts.for all).",
799
805
  "ui.app.images.scope": "{n, plural, one {# zápis lidí vzdálenějších od výzkumu je} few {# zápisy lidí vzdálenějších od výzkumu jsou} other {# zápisů lidí vzdálenějších od výzkumu je}} bez obrázku (nastavení excerpts.for: {for}).",
800
806
  "ui.doc.installed": "strom {version} na vlastním Node {node} (oficiálním, z nodejs.org)",
801
807
  "ui.update.source": "Vyšla nová verze: {version}. Tento strom běží ze zdrojáků: git pull",
@@ -902,6 +908,12 @@
902
908
  "ui.show.children": "děti",
903
909
  "ui.show.notes": "poznámky",
904
910
  "ui.show.note": "poznámka",
911
+ "ui.show.history": "historie",
912
+ "ui.show.history.name": "jméno {name} odvoláno {at} ({by}): {reason}",
913
+ "ui.show.history.note": "poznámka odvolána {at} ({by}): {reason} — {text}",
914
+ "ui.show.history.edit": "poznámka opravena {at} ({by}): {reason} — předtím: {text}",
915
+ "ui.show.history.more": "odvoláno nebo opraveno: {n} — strom person show {id} --history",
916
+ "ui.show.history.none": "nic odvoláno ani opraveno",
905
917
  "ui.show.none": "(žádné)",
906
918
  "ui.show.unknown": "(zatím neznámo)",
907
919
  "ui.show.nopartners": "(partneři zatím neznámí)",
@@ -970,7 +982,7 @@
970
982
  "ui.help.cmd.init": "Založit nový rodokmen",
971
983
  "ui.help.cmd.trees": "Rodokmeny na tomto počítači",
972
984
  "ui.help.cmd.trees.use": "Pracovat na jiném rodokmenu",
973
- "ui.help.cmd.trees.remove": "Odebrat rodokmen z tohoto počítače (nejdřív nabídne zálohu)",
985
+ "ui.help.cmd.trees.remove": "Odebrat rodokmen z tohoto počítače – takto se rodokmen maže (do koše, nejdřív nabídne zálohu)",
974
986
  "ui.help.cmd.lang": "Jazyk výzkumu",
975
987
  "ui.help.cmd.mode": "Výzkum s agentem, nebo jen Archiv Stromu s daty z aplikace Strom: ukázat, nebo přepnout",
976
988
  "ui.help.cmd.chat": "Rozhovor s agentem o výzkumu",
@@ -1000,7 +1012,7 @@
1000
1012
  "ui.help.cmd.app": "Otevřít výzkum v aplikaci Strom",
1001
1013
  "ui.help.cmd.app.install": "Nainstalovat aplikaci Strom z prohlížeče",
1002
1014
  "ui.help.cmd.live.start": "Nechat aplikaci Strom sledovat výzkum živě",
1003
- "ui.help.cmd.live.stop": "Ukončit živé sledování výzkumu",
1015
+ "ui.help.cmd.live.stop": "Ukončit živé sledování výzkumu (most pro aplikaci Strom běží na pozadí i po zavření nabídky)",
1004
1016
  "ui.help.cmd.export.gedcom": "Uložit rodokmen jako soubor GEDCOM",
1005
1017
  "ui.help.cmd.pack": "Zabalit výzkum do jednoho souboru ZIP, aby v něm mohl pokračovat někdo jiný",
1006
1018
  "ui.help.cmd.unpack": "Rozbalit rodokmen, který někdo poslal",
@@ -1166,6 +1178,7 @@
1166
1178
  "ui.sync.source.changed": "{n}. pramen z aplikace „{text}“: opravený přepis nebo stránka",
1167
1179
  "ui.sync.source.reading": "{n}. pramen výzkumu „{text}“: v aplikaci přečtený jinak",
1168
1180
  "ui.sync.source.verified": "{n}. pramen z aplikace „{text}“: přepis ověřen",
1181
+ "ui.sync.source.title": "{n}. pramen „{old}“: přejmenovaný na „{new}“",
1169
1182
  "ui.sync.fact.cite": "{n}. {who}: {fact} — pramen z aplikace k údaji",
1170
1183
  "ui.sync.fact.part": "{n}. {who}: {kind} {when} — {role}: {part}",
1171
1184
  "ui.sync.fact.part.link": "{n}. {who}: {kind} {when} — {role} {part}: osoba ze stromu",
@@ -1188,6 +1201,9 @@
1188
1201
  "ui.sync.do.source.reading": "uloží se vedle čtení výzkumu; výzkum záznam přečte znovu",
1189
1202
  "ui.sync.do.source.verified": "čtení z aplikace platí: údaje, které stojí jen na něm, se stanou doloženými",
1190
1203
  "ui.sync.do.source.verified.read": "čtení z aplikace platí: údaje, které stojí jen na něm, se stanou doloženými",
1204
+ "ui.sync.do.source.title": "přejmenuje se (název výzkumu zůstane v historii)",
1205
+ "ui.sync.do.source.title.user": "platí název z aplikace (název výzkumu zůstane v historii)",
1206
+ "ui.sync.do.source.title.beside": "výzkum ho přejmenoval také: jeho název zůstává, název z aplikace se uloží vedle do poznámky",
1191
1207
  "ui.sync.do.fact.cite": "údaj výzkumu ho bude citovat (vodítko, dokud záznam nepřečte výzkum)",
1192
1208
  "ui.sync.do.fact.cite.read": "údaj výzkumu ho bude citovat a stojí na čtení záznamu z aplikace",
1193
1209
  "ui.sync.do.reading": "přidá se na čtení záznamu z aplikace",
@@ -1513,6 +1529,8 @@
1513
1529
  "ui.export.quality.smaller": "nejnižší",
1514
1530
  "ui.export.images.smaller": " POZOR: zmenšeno, aby se vešlo do limitu {mb} MB: kvalita {level}, nastavena {asked} — víc místa: --images-max-mb <n> (strom config set excerpts.mb <n>)",
1515
1531
  "ui.export.images.dropped": " POZOR: vynecháno, aby se vešlo do limitu {mb} MB, nejdřív nejvzdálenější od výzkumu: {n, plural, one {# pramen} few {# prameny} other {# pramenů}} ({ids}) — víc místa: --images-max-mb <n>",
1532
+ "ui.export.images.uncited": " POZOR: vedle citovaných pramenů už pod limitem {mb} MB nezbylo místo: {n, plural, one {# pramen, který ve výzkumu nikdo necituje, je} few {# prameny, které ve výzkumu nikdo necituje, jsou} other {# pramenů, které ve výzkumu nikdo necituje, je}} bez obrázku ({ids}) — víc místa: --images-max-mb <n>",
1533
+ "ui.export.images.uncitedOut": " prameny, které ve výzkumu nikdo necituje, v souboru nejsou: {n} — všechny: --images-for all",
1516
1534
  "ui.export.images.scope": " prameny lidí vzdálenějších od výzkumu, než říká excerpts.for={for}: {n} — všechny: --images-for all",
1517
1535
  "ui.export.images.missing": " snímek není na tomto počítači: {ids}",
1518
1536
  "ui.export.images.unclipped": " prameny na snímcích bez výřezu (kde zápis je): {ids} — strom clips (najdou je čtenáři)",
@@ -1962,6 +1980,10 @@
1962
1980
  "log.name.remove": "Odebrané jméno: {name} – {who}",
1963
1981
  "log.note.remove": "Odebraná poznámka: „{note}“ – {name}",
1964
1982
  "log.note.edit": "Opravená poznámka: {name}",
1983
+ "log.name.retract": "Odvolané jméno: {name} – {who}",
1984
+ "log.name.restore": "Vrácené jméno: {name} – {who}",
1985
+ "log.note.retract": "Odvolaná poznámka: {name}",
1986
+ "log.note.restore": "Vrácená poznámka: {name}",
1965
1987
  "log.event.status": "Změněná jistota údaje: {who} – {fact}",
1966
1988
  "log.event.restore": "Údaj znovu platí: {who} – {fact}",
1967
1989
  "log.input.sync.undo": "Vrácený rodokmen: {name}",
@@ -101,6 +101,9 @@
101
101
  "ui.menu.newtree": "Stammbaum anlegen · einen schicken oder empfangen",
102
102
  "ui.menu.quit": "Beenden",
103
103
  "ui.menu.bye": "Auf Wiedersehen. Nächstes Mal genügt: {strom}",
104
+ "ui.menu.bye.new": "Auf Wiedersehen. In einem neuen Terminalfenster genügt: {strom} – in diesem Fenster: {path}",
105
+ "ui.menu.bye.path": "Auf Wiedersehen. Nächstes Mal genügt: {path}",
106
+ "ui.menu.bye.live": "Die Brücke für die Strom-App läuft im Hintergrund weiter; beenden: {strom} live stop",
104
107
  "ui.run.how": "Wie viele Aufgaben? (er hört früher auf, wenn es nichts mehr zu tun gibt; 0 geht zurück)",
105
108
  "ui.run.start": "Der Agent arbeitet jetzt allein. Strg-C hält ihn an – nichts geht verloren.",
106
109
  "ui.waiting.none": "Nichts wartet.",
@@ -673,6 +676,7 @@
673
676
  "sync.verify.done": "jeder Eintrag gefunden und unabhängig gelesen (Bild registriert, strom read M… --blind): die Lesungen stimmen überein → Notiz an der Quelle, die Angaben bleiben; sie weichen ab → ein Widerspruch mit beiden Lesungen",
674
677
  "sync.reading.note": "Der Benutzer hat diesen Eintrag in der Strom-App anders gelesen ({source}); die Lesung der Forschung gilt, bis er erneut gelesen ist:",
675
678
  "sync.reading.page": "Seite",
679
+ "sync.title.note": "In der Strom-App umbenannt ({source}), die Forschung hat ihn inzwischen auch umbenannt; es gilt der Titel der Forschung – der Titel in der App:",
676
680
  "sync.reading.text": "Abschrift",
677
681
  "read.note.source.edited": "Die Abschrift wurde in der Strom-App geändert; die Lesung {read} hat: {text}",
678
682
  "read.note.edited": "Die Abschrift wurde in der Strom-App geändert: ein Hinweis, bis der Eintrag gelesen ist ({read})",
@@ -796,6 +800,8 @@
796
800
  "ui.app.images.unclipped": "Weitere {n, plural, one {# Quelle liegt} other {# Quellen liegen}} auf Bildern, aber dort ist noch nicht markiert, wo ihr Eintrag steht – der Agent kann das nachholen.",
797
801
  "ui.app.images.smaller": "Damit die Bilder in die Grenze von {limit} MB passen, sind sie kleiner als eingestellt: {level} statt {asked}.",
798
802
  "ui.app.images.left": "{n, plural, one {# Eintrag, der am weitesten von der Forschung entfernt ist, bleibt} other {# Einträge, die am weitesten von der Forschung entfernt sind, bleiben}} ohne Bild, damit alles in die Grenze von {limit} MB passt.",
803
+ "ui.app.images.uncited": "{n, plural, one {# Eintrag, den in der Forschung niemand zitiert, bleibt} other {# Einträge, die in der Forschung niemand zitiert, bleiben}} ohne Bild: neben den zitierten war unter der Grenze von {limit} MB kein Platz mehr.",
804
+ "ui.app.images.uncitedOut": "{n, plural, one {# Eintrag, den in der Forschung niemand zitiert, ist} other {# Einträge, die in der Forschung niemand zitiert, sind}} nicht in der Datei (alle: Einstellung excerpts.for all).",
799
805
  "ui.app.images.scope": "{n, plural, one {# Eintrag von Personen, die der Forschung ferner stehen, hat} other {# Einträge von Personen, die der Forschung ferner stehen, haben}} kein Bild (Einstellung excerpts.for: {for}).",
800
806
  "ui.doc.installed": "strom {version} auf eigenem Node {node} (offiziell, von nodejs.org)",
801
807
  "ui.update.source": "Eine neue Version ist da: {version}. Dieses strom läuft aus den Quellen: git pull",
@@ -902,6 +908,12 @@
902
908
  "ui.show.children": "Kinder",
903
909
  "ui.show.notes": "Notizen",
904
910
  "ui.show.note": "Notiz",
911
+ "ui.show.history": "Verlauf",
912
+ "ui.show.history.name": "Name {name} zurückgezogen {at} ({by}): {reason}",
913
+ "ui.show.history.note": "Notiz zurückgezogen {at} ({by}): {reason} — {text}",
914
+ "ui.show.history.edit": "Notiz berichtigt {at} ({by}): {reason} — vorher: {text}",
915
+ "ui.show.history.more": "zurückgezogen oder berichtigt: {n} — strom person show {id} --history",
916
+ "ui.show.history.none": "nichts zurückgezogen oder berichtigt",
905
917
  "ui.show.none": "(keine)",
906
918
  "ui.show.unknown": "(noch unbekannt)",
907
919
  "ui.show.nopartners": "(Partner noch unbekannt)",
@@ -970,7 +982,7 @@
970
982
  "ui.help.cmd.init": "Einen neuen Stammbaum anlegen",
971
983
  "ui.help.cmd.trees": "Die Stammbäume auf diesem Computer",
972
984
  "ui.help.cmd.trees.use": "An einem anderen Stammbaum arbeiten",
973
- "ui.help.cmd.trees.remove": "Einen Stammbaum von diesem Computer entfernen (zuerst wird eine Sicherung angeboten)",
985
+ "ui.help.cmd.trees.remove": "Einen Stammbaum von diesem Computer entfernen – so wird er gelöscht (in den Papierkorb, zuerst wird eine Sicherung angeboten)",
974
986
  "ui.help.cmd.lang": "Die Sprache der Forschung",
975
987
  "ui.help.cmd.mode": "Forschung mit einem Agenten oder nur ein Strom-Archiv der Daten aus der Strom-App: zeigen oder umschalten",
976
988
  "ui.help.cmd.chat": "Ein Gespräch mit dem Agenten über die Forschung",
@@ -1000,7 +1012,7 @@
1000
1012
  "ui.help.cmd.app": "Die Forschung in der Strom-App öffnen",
1001
1013
  "ui.help.cmd.app.install": "Die Strom-App aus dem Browser installieren",
1002
1014
  "ui.help.cmd.live.start": "Die Strom-App die Forschung live verfolgen lassen",
1003
- "ui.help.cmd.live.stop": "Die Live-Ansicht der Forschung beenden",
1015
+ "ui.help.cmd.live.stop": "Die Live-Ansicht der Forschung beenden (die Brücke für die Strom-App läuft nach dem Schließen des Menüs im Hintergrund weiter)",
1004
1016
  "ui.help.cmd.export.gedcom": "Den Stammbaum als GEDCOM-Datei speichern",
1005
1017
  "ui.help.cmd.pack": "Die Forschung in eine ZIP-Datei packen, damit jemand anderes weitermachen kann",
1006
1018
  "ui.help.cmd.unpack": "Einen zugeschickten Stammbaum entpacken",
@@ -1166,6 +1178,7 @@
1166
1178
  "ui.sync.source.changed": "{n}. eigene Quelle „{text}“: Abschrift oder Seite korrigiert",
1167
1179
  "ui.sync.source.reading": "{n}. die Quelle der Forschung „{text}“: anders gelesen",
1168
1180
  "ui.sync.source.verified": "{n}. eigene Quelle „{text}“: Abschrift geprüft",
1181
+ "ui.sync.source.title": "{n}. die Quelle „{old}“: umbenannt in „{new}“",
1169
1182
  "ui.sync.fact.cite": "{n}. {who}: {fact} — eigene Quelle dazu",
1170
1183
  "ui.sync.fact.part": "{n}. {who}: {kind} {when} — {role}: {part}",
1171
1184
  "ui.sync.fact.part.link": "{n}. {who}: {kind} {when} — {role} {part}: eine Person des Stammbaums",
@@ -1188,6 +1201,9 @@
1188
1201
  "ui.sync.do.source.reading": "neben der Lesung der Forschung festgehalten; die Forschung liest den Eintrag erneut",
1189
1202
  "ui.sync.do.source.verified": "Die eigene Lesung gilt: die Angaben, die nur auf ihr stehen, werden belegt",
1190
1203
  "ui.sync.do.source.verified.read": "Die eigene Lesung gilt: die Angaben, die nur auf ihr stehen, werden belegt",
1204
+ "ui.sync.do.source.title": "wird umbenannt (der Titel der Forschung bleibt in ihrer Geschichte)",
1205
+ "ui.sync.do.source.title.user": "der Titel aus der App gilt (der Titel der Forschung bleibt in ihrer Geschichte)",
1206
+ "ui.sync.do.source.title.beside": "die Forschung hat sie auch umbenannt: ihr Titel bleibt, der aus der App wird daneben als Notiz gespeichert",
1191
1207
  "ui.sync.do.fact.cite": "die Angabe der Forschung zitiert sie (ein Hinweis, bis die Forschung den Eintrag liest)",
1192
1208
  "ui.sync.do.fact.cite.read": "die Angabe der Forschung zitiert sie und steht auf der eigenen Lesung des Eintrags",
1193
1209
  "ui.sync.do.reading": "hinzugefügt auf der eigenen Lesung des Eintrags",
@@ -1513,6 +1529,8 @@
1513
1529
  "ui.export.quality.smaller": "sehr niedrig",
1514
1530
  "ui.export.images.smaller": " ACHTUNG: verkleinert, damit es in die Grenze von {mb} MB passt: {level} statt {asked} — mehr Platz: --images-max-mb <n> (strom config set excerpts.mb <n>)",
1515
1531
  "ui.export.images.dropped": " ACHTUNG: ausgelassen, damit es in die Grenze von {mb} MB passt, das von der Forschung am weitesten Entfernte zuerst: {n, plural, one {# Quelle} other {# Quellen}} ({ids}) — mehr Platz: --images-max-mb <n>",
1532
+ "ui.export.images.uncited": " ACHTUNG: neben den zitierten Quellen war unter der Grenze von {mb} MB kein Platz mehr: {n, plural, one {# Quelle, die in der Forschung niemand zitiert, bleibt} other {# Quellen, die in der Forschung niemand zitiert, bleiben}} ohne Bild ({ids}) — mehr Platz: --images-max-mb <n>",
1533
+ "ui.export.images.uncitedOut": " {n, plural, one {# Quelle, die in der Forschung niemand zitiert, ist} other {# Quellen, die in der Forschung niemand zitiert, sind}} nicht in der Datei — alle: --images-for all",
1516
1534
  "ui.export.images.scope": " {n, plural, one {# Quelle} other {# Quellen}} von Personen, die der Forschung ferner stehen als excerpts.for={for} — alle: --images-for all",
1517
1535
  "ui.export.images.missing": " das Bild ist nicht auf diesem Computer: {ids}",
1518
1536
  "ui.export.images.unclipped": " Quellen auf Bildern ohne Ausschnitt (wo der Eintrag steht): {ids} — strom clips (Leser finden sie)",
@@ -1962,6 +1980,10 @@
1962
1980
  "log.name.remove": "Name entfernt: {name} – {who}",
1963
1981
  "log.note.remove": "Notiz entfernt: „{note}“ – {name}",
1964
1982
  "log.note.edit": "Notiz berichtigt: {name}",
1983
+ "log.name.retract": "Name zurückgezogen: {name} – {who}",
1984
+ "log.name.restore": "Name wiederhergestellt: {name} – {who}",
1985
+ "log.note.retract": "Notiz zurückgezogen: {name}",
1986
+ "log.note.restore": "Notiz wiederhergestellt: {name}",
1965
1987
  "log.event.status": "Sicherheit einer Angabe geändert: {who} – {fact}",
1966
1988
  "log.event.restore": "Angabe wieder gültig: {who} – {fact}",
1967
1989
  "log.input.sync.undo": "Stammbaum zurückgenommen: {name}",
@@ -36,7 +36,8 @@ conclusion so the next researcher can follow it.
36
36
  <!-- end -->
37
37
  <!-- for link verify enrich intake locate -->
38
38
  - **Nothing is deleted.** A wrong fact is retracted with a reason; a changed
39
- fact is edited with a reason. Contradictions become conflicts, competing
39
+ fact is edited with a reason; so are a wrong name or note (`strom name retract`,
40
+ `strom note retract`, `strom note edit`). Contradictions become conflicts, competing
40
41
  explanations become hypotheses — never silently pick one.
41
42
  <!-- end -->
42
43
  - **Write as you go.** Record each finding as soon as you have it: what is
@@ -33,6 +33,8 @@ export class Context {
33
33
  dryRun = false;
34
34
  /** The record IDs the command names (T…, N…, G…): which of an agent's sessions in several researches is its. */
35
35
  refs = [];
36
+ /** The PATH this strom was given (before core/userpath.ts made it fuller): what the terminal it runs in knows. */
37
+ givenPath;
36
38
  opened;
37
39
  /**
38
40
  * The backup before another channel or an older version could not be made (cli/backups.ts): no research is brought
package/dist/cli/main.js CHANGED
@@ -23,7 +23,7 @@ import { fireHooks, HOOK_INTERFACE } from "../core/hooks.js";
23
23
  import { prependPath } from "../runners/runner.js";
24
24
  import { shimDir } from "../commands/session.js";
25
25
  import { isAgent } from "../core/which.js";
26
- import { completePath, pathToRemember } from "../core/userpath.js";
26
+ import { completePath, pathOf, pathToRemember } from "../core/userpath.js";
27
27
  import { appUrlShown, noticeStromApp } from "../core/stromapp.js";
28
28
  import { lastChannelOf, pendingTransition, updateChannel, whatsNewUrl } from "../core/update.js";
29
29
  import { backupBefore, backupSaid } from "./backups.js";
@@ -236,6 +236,8 @@ export async function main(argv, io, env, cwd) {
236
236
  }
237
237
  }
238
238
  }
239
+ // the PATH as given, before it is made fuller: what the terminal strom was started from knows (the menu's goodbye)
240
+ ctx.givenPath = pathOf(env);
239
241
  completePath(env, ctx.settings.config.terminalPath);
240
242
  // a person's own pace for a host taken as given until a command to an archive finds settings not the person's
241
243
  netTrust.ownPace = true;
package/dist/cli/menu.js CHANGED
@@ -16,9 +16,9 @@ const sentence = (s) => s.charAt(0).toUpperCase() + s.slice(1);
16
16
  import { newerTree, Tree, VERSION } from "../core/tree.js";
17
17
  import { BACKUP_SAID_DAYS, lastBackup } from "../core/backup.js";
18
18
  import { lastBackupLine } from "./backups.js";
19
- import { diskVersion } from "../core/self.js";
19
+ import { diskVersion, installation } from "../core/self.js";
20
20
  import { liveHolder } from "../core/lock.js";
21
- import { reviveLive } from "../core/live.js";
21
+ import { liveRunning, reviveLive } from "../core/live.js";
22
22
  import { revivePhone } from "../core/phone.js";
23
23
  import { newerVersion } from "../core/update.js";
24
24
  import { taskQueue } from "../commands/tasks.js";
@@ -36,7 +36,8 @@ import { openForUser } from "../core/open.js";
36
36
  import { displayName } from "../core/people.js";
37
37
  import { agentReady, droppedPaths, guarded, pause as partsPause, pickPerson, subMenu } from "./menu-parts.js";
38
38
  import { packPlan } from "../core/pack.js";
39
- import { expandHome, isolated } from "../core/paths.js";
39
+ import { expandHome, isolated, ownCommand } from "../core/paths.js";
40
+ import { pathOf, startAgain } from "../core/userpath.js";
40
41
  import { offerAgent } from "./fixes.js";
41
42
  import { addToResearch } from "./menu-research.js";
42
43
  import { waitingForYou, waitingHere } from "./menu-waiting.js";
@@ -403,11 +404,38 @@ export async function runMenu(ctx, run) {
403
404
  return;
404
405
  const quit = await guarded(ctx, lang, items[i].act);
405
406
  if (quit === true || quit === "quit") {
406
- out(t("ui.menu.bye"));
407
+ out(byeLine(ctx, t));
408
+ // the Strom app's bridge goes on in the background after the menu: said only while it runs (nothing started to ask)
409
+ if (root && liveRunning(root))
410
+ out(t("ui.menu.bye.live"));
407
411
  return;
408
412
  }
409
413
  }
410
414
  }
415
+ /**
416
+ * The goodbye: how to start strom again in this terminal (core/userpath.ts startAgain) — its name where the terminal
417
+ * knows it, else that a new window does and the full path for this one.
418
+ */
419
+ function byeLine(ctx, t) {
420
+ const inst = installation();
421
+ const how = startAgain({
422
+ platform: process.platform,
423
+ given: ctx.givenPath ?? pathOf(ctx.env),
424
+ installer: ctx.env.STROM_INSTALLER === "1",
425
+ launchers: inst.kind === "installed" ? (inst.launchers ?? []) : [],
426
+ command: ownCommand(ctx.env) ?? "strom",
427
+ isolated: isolated(ctx.env) && !ownCommand(ctx.env),
428
+ found: (file) => {
429
+ try {
430
+ return fs.statSync(file).isFile();
431
+ }
432
+ catch {
433
+ return false;
434
+ }
435
+ },
436
+ });
437
+ return how.kind === "name" ? t("ui.menu.bye") : t(how.kind === "new" ? "ui.menu.bye.new" : "ui.menu.bye.path", { path: how.path });
438
+ }
411
439
  /** How many tasks of the queue the menu lists before the agent works alone. */
412
440
  const RUN_LIST = 15;
413
441
  /** The title of the user's gate (run.gate), when there is one to ask. */
@@ -530,7 +558,7 @@ async function openStromApp(ctx, run, lang, said) {
530
558
  }
531
559
  await run(["app"]);
532
560
  }
533
- /** Choose another family tree, or create a new one (and start its research). The one worked on now is suggested; 0 stays with it. */
561
+ /** Choose another family tree, or create a new one (and start its research). The one worked on now is suggested; 0 (and, with none chosen yet, Enter) goes back. */
534
562
  async function pickTree(ctx, run, lang) {
535
563
  const known = ctx.knownTrees();
536
564
  let here;
@@ -551,8 +579,10 @@ async function pickTree(ctx, run, lang) {
551
579
  const packAt = at >= 0 ? options.push({ label: ui(lang, "ui.trees.pack", { name: known[at].name }) }) - 1 : -1;
552
580
  const unpackAt = options.push({ label: ui(lang, "ui.trees.unpack") }) - 1;
553
581
  const removeAt = known.length ? options.push({ label: ui(lang, "ui.trees.remove") }) - 1 : -1;
554
- const back = at >= 0 ? { back: ui(lang, "ui.back.stay", { name: known[at].name }) } : {};
555
- const i = await ctx.choose(ui(lang, "ui.trees.pick"), options, Math.max(0, at), back);
582
+ // 0 always goes back: stays with the one worked on, or (none chosen yet) back to the menu — Enter too (found on
583
+ // Windows: one who came here by Enter had to choose a tree)
584
+ const back = { back: at >= 0 ? ui(lang, "ui.back.stay", { name: known[at].name }) : ui(lang, "ui.browse.back") };
585
+ const i = await ctx.choose(ui(lang, "ui.trees.pick"), options, at >= 0 ? at : options.length, back);
556
586
  if (i === undefined || i === at)
557
587
  return;
558
588
  if (i < known.length) {
package/dist/cli/ui.js CHANGED
@@ -75,6 +75,9 @@ export const UI = {
75
75
  "ui.menu.newtree": "Create a family tree · send or receive one",
76
76
  "ui.menu.quit": "Quit",
77
77
  "ui.menu.bye": "Until next time. Start again with: {strom}",
78
+ "ui.menu.bye.new": "Until next time. In a new terminal window start again with: {strom} — in this one: {path}",
79
+ "ui.menu.bye.path": "Until next time. Start again with: {path}",
80
+ "ui.menu.bye.live": "The Strom app's bridge goes on in the background; to stop it: {strom} live stop",
78
81
  "ui.run.how": "How many tasks? (it stops earlier when there is nothing to do; 0 goes back)",
79
82
  "ui.run.start": "The agent works on its own now. Ctrl-C stops it — nothing is lost.",
80
83
  "ui.waiting.none": "Nothing waits.",
@@ -712,6 +715,8 @@ export const UI = {
712
715
  "ui.app.images.unclipped": "{n, plural, one {# more source is on images, but nobody has marked where its entry is yet} other {# more sources are on images, but nobody has marked where their entry is yet}} — the agent can do it.",
713
716
  "ui.app.images.smaller": "To fit the limit of {limit} MB, the images are smaller than set: {level} instead of {asked}.",
714
717
  "ui.app.images.left": "{n, plural, one {# entry farthest from the research is without its image} other {# entries farthest from the research are without their image}}, to fit the limit of {limit} MB.",
718
+ "ui.app.images.uncited": "{n, plural, one {# entry nobody in the research cites is without its image} other {# entries nobody in the research cites are without their image}}: there was no more room under the limit of {limit} MB beside the cited ones.",
719
+ "ui.app.images.uncitedOut": "{n, plural, one {# entry nobody in the research cites is} other {# entries nobody in the research cites are}} not in the file (all of them: setting excerpts.for all).",
715
720
  "ui.app.images.scope": "{n, plural, one {# entry of people farther from the research has} other {# entries of people farther from the research have}} no image (setting excerpts.for: {for}).",
716
721
  "ui.doc.installed": "strom {version} on its own Node {node} (official, from nodejs.org)",
717
722
  "ui.update.source": "A new version is out: {version}. This strom runs from its sources: git pull",
@@ -794,6 +799,12 @@ export const UI = {
794
799
  "ui.show.children": "children",
795
800
  "ui.show.notes": "notes",
796
801
  "ui.show.note": "note",
802
+ "ui.show.history": "history",
803
+ "ui.show.history.name": "name {name} retracted {at} ({by}): {reason}",
804
+ "ui.show.history.note": "note retracted {at} ({by}): {reason} — {text}",
805
+ "ui.show.history.edit": "note corrected {at} ({by}): {reason} — before: {text}",
806
+ "ui.show.history.more": "retracted or corrected: {n} — strom person show {id} --history",
807
+ "ui.show.history.none": "nothing retracted or corrected",
797
808
  "ui.show.none": "(none)",
798
809
  "ui.show.unknown": "(unknown)",
799
810
  "ui.show.nopartners": "(no partners known)",
@@ -862,7 +873,7 @@ export const UI = {
862
873
  "ui.help.cmd.init": "Make a new family tree",
863
874
  "ui.help.cmd.trees": "The family trees on this computer",
864
875
  "ui.help.cmd.trees.use": "Work on another family tree",
865
- "ui.help.cmd.trees.remove": "Take a family tree off this computer (a backup offered first)",
876
+ "ui.help.cmd.trees.remove": "Take a family tree off this computer — the way to delete one (into the trash, a backup offered first)",
866
877
  "ui.help.cmd.lang": "The language of the research",
867
878
  "ui.help.cmd.mode": "Research with an agent, or only a Strom archive of the data from the Strom app: show it, or switch",
868
879
  "ui.help.cmd.chat": "A conversation with the agent about the research",
@@ -892,7 +903,7 @@ export const UI = {
892
903
  "ui.help.cmd.app": "Open the research in the Strom app",
893
904
  "ui.help.cmd.app.install": "Install the Strom app from the browser",
894
905
  "ui.help.cmd.live.start": "Let the Strom app follow the research live",
895
- "ui.help.cmd.live.stop": "Stop the live view of the research",
906
+ "ui.help.cmd.live.stop": "Stop the live view of the research (the Strom app's bridge goes on in the background after the menu closes)",
896
907
  "ui.help.cmd.export.gedcom": "Save the family tree as a GEDCOM file",
897
908
  "ui.help.cmd.pack": "Pack the research into one ZIP file for someone to go on with it",
898
909
  "ui.help.cmd.unpack": "Unpack a family tree from someone else",
@@ -1058,6 +1069,7 @@ export const UI = {
1058
1069
  "ui.sync.source.changed": "{n}. the file's source “{text}”: its transcript or page corrected",
1059
1070
  "ui.sync.source.reading": "{n}. the research's source “{text}”: read otherwise in the file",
1060
1071
  "ui.sync.source.verified": "{n}. the file's source “{text}”: transcript verified",
1072
+ "ui.sync.source.title": "{n}. the source “{old}”: renamed “{new}”",
1061
1073
  "ui.sync.fact.cite": "{n}. {who}: {fact} — the file's source for it",
1062
1074
  "ui.sync.fact.part": "{n}. {who}: {kind} {when} — {role}: {part}",
1063
1075
  "ui.sync.fact.part.link": "{n}. {who}: {kind} {when} — {role} {part}: a person of the tree",
@@ -1080,6 +1092,9 @@ export const UI = {
1080
1092
  "ui.sync.do.source.reading": "kept beside the research's reading; the research reads the record again",
1081
1093
  "ui.sync.do.source.verified": "the file's reading counts: the facts it alone proposes become probable",
1082
1094
  "ui.sync.do.source.verified.read": "the file's reading counts: the facts it alone proposes become probable",
1095
+ "ui.sync.do.source.title": "renamed (the research's title stays in its history)",
1096
+ "ui.sync.do.source.title.user": "the file's title wins (the research's stays in its history)",
1097
+ "ui.sync.do.source.title.beside": "the research renamed it too: its title stays, the file's kept beside it in a note",
1083
1098
  "ui.sync.do.fact.cite": "the research's fact cites it (a lead on it until the research reads the record)",
1084
1099
  "ui.sync.do.fact.cite.read": "the research's fact cites it and stands on the file's reading of the record",
1085
1100
  "ui.sync.do.reading": "added on the file's reading of the record",
@@ -1414,6 +1429,8 @@ export const UI = {
1414
1429
  "ui.export.quality.smaller": "smaller",
1415
1430
  "ui.export.images.smaller": " WARNING made smaller to fit the limit of {mb} MB: {level} instead of {asked} — more room: --images-max-mb <n> (strom config set excerpts.mb <n>)",
1416
1431
  "ui.export.images.dropped": " WARNING left out to fit the limit of {mb} MB, the farthest from the research first: {n, plural, one {# source} other {# sources}} ({ids}) — more room: --images-max-mb <n>",
1432
+ "ui.export.images.uncited": " WARNING no room left under the limit of {mb} MB beside the cited sources: {n, plural, one {# source} other {# sources}} nobody in the research cites without an image ({ids}) — more room: --images-max-mb <n>",
1433
+ "ui.export.images.uncitedOut": " {n, plural, one {# source} other {# sources}} nobody in the research cites, not in the file — all of them: --images-for all",
1417
1434
  "ui.export.images.scope": " {n, plural, one {# source} other {# sources}} of people farther from the research than excerpts.for={for} — all of them: --images-for all",
1418
1435
  "ui.export.images.missing": " the image is not on this computer: {ids}",
1419
1436
  "ui.export.images.unclipped": " sources on images with no clip (where the entry is): {ids} — strom clips (readers find them)",
@@ -921,6 +921,8 @@ register({
921
921
  });
922
922
  // ── find and gaps ──────────────────────────────────────────────────────────
923
923
  /** Searchable text of a record, for `strom find`. */
924
+ /** What was taken back or replaced (spec 016): kept for the history, never searched — at any depth of a record. */
925
+ const NOT_SEARCHED = new Set(["retractedNames", "retractedNotes", "edits", "noteEdits"]);
924
926
  function haystack(r) {
925
927
  const parts = [];
926
928
  const add = (v) => {
@@ -929,7 +931,9 @@ function haystack(r) {
929
931
  else if (Array.isArray(v))
930
932
  v.forEach(add);
931
933
  else if (v && typeof v === "object")
932
- Object.values(v).forEach(add);
934
+ for (const [k, x] of Object.entries(v))
935
+ if (!NOT_SEARCHED.has(k))
936
+ add(x);
933
937
  };
934
938
  const { id: _i, type: _t, created: _c, updated: _u, ...rest } = r;
935
939
  // a person's titles ("Ing.", "ml.") are never searched as their name — the Strom app finds nobody by them either
@@ -26,7 +26,8 @@ HARD RULES
26
26
  goes through a strom command. Direct edits are detected and block writing.
27
27
  2. Never invent facts. What the user or a family tree says is a lead until a
28
28
  record proves it.
29
- 3. Nothing is deleted. Wrong facts are retracted with --reason.
29
+ 3. Nothing is deleted. Wrong facts are retracted with --reason, so is a wrong
30
+ name or note (strom name retract, strom note retract|edit) — yours to do.
30
31
  4. A namesake is not your person: check year, place, house and parents —
31
32
  different parents mean two people, not a clerk's error.
32
33
  5. Negative results are results: record every search, also when nothing