strom-research 1.21.0 → 1.22.0-beta.10

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.
Files changed (105) hide show
  1. package/CHANGELOG.cs.md +87 -0
  2. package/CHANGELOG.de.md +105 -0
  3. package/CHANGELOG.md +95 -0
  4. package/assets/lang/cs.json +276 -1
  5. package/assets/lang/de.json +276 -1
  6. package/assets/method/recording.md +6 -3
  7. package/assets/plugins/gates/README.md +11 -0
  8. package/assets/plugins/gates/claude-usage/gate.json +1 -1
  9. package/assets/plugins/gates/claude-usage/gate.ts +57 -8
  10. package/assets/terms/participants.json +39 -0
  11. package/assets/terms/streets.json +23 -0
  12. package/dist/brief/brief.js +74 -9
  13. package/dist/brief/history.js +375 -0
  14. package/dist/cli/human.js +9 -2
  15. package/dist/cli/main.js +27 -3
  16. package/dist/cli/menu-links.js +121 -0
  17. package/dist/cli/menu-settings.js +113 -15
  18. package/dist/cli/menu-waiting.js +27 -2
  19. package/dist/cli/menu.js +91 -29
  20. package/dist/cli/registry.js +4 -2
  21. package/dist/cli/timing.js +8 -0
  22. package/dist/cli/ui.js +210 -1
  23. package/dist/cli/wizard.js +33 -2
  24. package/dist/commands/analysis.js +4 -1
  25. package/dist/commands/browse.js +81 -7
  26. package/dist/commands/checks.js +12 -4
  27. package/dist/commands/connectors.js +70 -11
  28. package/dist/commands/fixchecks.js +194 -21
  29. package/dist/commands/fixes.js +256 -19
  30. package/dist/commands/guide.js +44 -4
  31. package/dist/commands/history.js +1035 -0
  32. package/dist/commands/index.js +3 -0
  33. package/dist/commands/intake.js +3 -1
  34. package/dist/commands/links.js +34 -1
  35. package/dist/commands/meta.js +5 -1
  36. package/dist/commands/output.js +5 -2
  37. package/dist/commands/people.js +36 -12
  38. package/dist/commands/quality.js +111 -0
  39. package/dist/commands/read.js +10 -5
  40. package/dist/commands/readers.js +7 -2
  41. package/dist/commands/research.js +2 -0
  42. package/dist/commands/session.js +85 -8
  43. package/dist/commands/setup.js +197 -19
  44. package/dist/commands/story.js +11 -2
  45. package/dist/commands/surname.js +116 -0
  46. package/dist/commands/sync.js +8 -0
  47. package/dist/commands/tasks.js +53 -7
  48. package/dist/commands/trees.js +3 -1
  49. package/dist/core/actions.js +27 -10
  50. package/dist/core/afterdeath.js +139 -0
  51. package/dist/core/appshapefix.js +304 -0
  52. package/dist/core/appshapes.js +42 -0
  53. package/dist/core/changelog.js +43 -0
  54. package/dist/core/check.js +38 -0
  55. package/dist/core/clouddrive.js +138 -0
  56. package/dist/core/config.js +75 -0
  57. package/dist/core/directions.js +2 -1
  58. package/dist/core/document.js +10 -6
  59. package/dist/core/duplicates.js +121 -0
  60. package/dist/core/errors.js +5 -0
  61. package/dist/core/gdate.js +39 -0
  62. package/dist/core/git.js +2 -0
  63. package/dist/core/indexfirst.js +3 -2
  64. package/dist/core/integrity.js +74 -2
  65. package/dist/core/leftalone.js +125 -0
  66. package/dist/core/links.js +20 -2
  67. package/dist/core/live.js +730 -51
  68. package/dist/core/logimages.js +203 -0
  69. package/dist/core/mediaindex.js +46 -3
  70. package/dist/core/orients.js +72 -0
  71. package/dist/core/pack.js +43 -1
  72. package/dist/core/pagecheck.js +437 -0
  73. package/dist/core/participantlinks.js +69 -0
  74. package/dist/core/participants.js +373 -0
  75. package/dist/core/pastevents.js +2897 -0
  76. package/dist/core/people.js +11 -2
  77. package/dist/core/phone-watch.js +3 -3
  78. package/dist/core/phrases.js +67 -0
  79. package/dist/core/placehistory.js +694 -0
  80. package/dist/core/quality.js +195 -0
  81. package/dist/core/queue.js +83 -6
  82. package/dist/core/reader.js +17 -0
  83. package/dist/core/readstats.js +84 -9
  84. package/dist/core/session.js +14 -0
  85. package/dist/core/stamp.js +51 -0
  86. package/dist/core/streetfix.js +120 -0
  87. package/dist/core/streets.js +244 -0
  88. package/dist/core/stromapp.js +35 -0
  89. package/dist/core/surnames.js +837 -0
  90. package/dist/core/sync.js +101 -2
  91. package/dist/core/tidy.js +174 -28
  92. package/dist/core/timing.js +159 -0
  93. package/dist/core/tree.js +67 -5
  94. package/dist/core/tuneask.js +65 -50
  95. package/dist/core/views.js +10 -1
  96. package/dist/core/waiting.js +2 -2
  97. package/dist/core/waitkept.js +63 -0
  98. package/dist/core/web.js +5 -1
  99. package/dist/core/widget.js +13 -4
  100. package/dist/gedcom/export.js +53 -7
  101. package/dist/gedcom/lines.js +5 -1
  102. package/dist/gedcom/parse.js +7 -2
  103. package/dist/runners/claude.js +86 -16
  104. package/dist/runners/jsonl.js +13 -4
  105. package/package.json +4 -1
package/CHANGELOG.cs.md CHANGED
@@ -5,6 +5,93 @@
5
5
  Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou na
6
6
  [GitHub Releases](https://github.com/ACiDekCZ/strom-research/releases) (anglicky).
7
7
 
8
+ ## 1.22.0
9
+
10
+ *Připravuje se: bety do 1.22.0-beta.10. Oddíl bude úplný s vydáním.*
11
+
12
+ - **Jméno jednou v tom, co čeká.** Úkol k materiálu poslanému z aplikace Strom jmenoval ve widgetu a na stránce
13
+ telefonu každého člověka dvakrát (podruhé v hranatých závorkách) a jeho text bez jmen nechal prázdné závorky; menu,
14
+ `strom plan`, aplikace Strom i soubor GEDCOM ukazovaly jméno s jeho ID zopakované. Každé teď jméno řekne jednou.
15
+ - **Widget otevře správný výzkum.** Při několika stromech stejného jména v aplikaci Strom mohl widget na ploše Macu
16
+ otevřít jiný z nich; teď otevře strom svého výzkumu.
17
+ - **Mnohem menší logy sezení.** Logy sezení a čtenářů už neuchovávají obrázky, na které se agent díval (jen jejich
18
+ velikost a cestu k náhledu), takže jsou o 95–99 % menší.
19
+ - **Úklid, který stačí, a start, který nečeká.** `strom tidy` zvládne logy jakékoli velikosti. Náhledy skenů,
20
+ přerušená stahování a další, co strom umí vyrobit znovu, se uklízejí i bez souhlasu; logy se pak jen zmenší, nikdy
21
+ nesmažou. Po odmítnutí přijde otázka ještě jednou, když `.strom` výrazně přeroste samotný výzkum.
22
+ Pomalý start na OneDrive nebo síťovém disku: menu a `strom doctor` už neotevírají každý sken, návrat do menu je
23
+ okamžitý, doctor ukazuje průběh a řekne, když výzkum leží v cloudu nebo na síťovém disku; `strom doctor --timing`
24
+ ukáže, co trvalo dlouho. Na dlouhém výzkumu (stovky lidí, desítky tisíc skenů) ukáže menu hned, co čeká: počet se
25
+ drží vedle výzkumu, dokud se nezmění nic, z čeho vychází, a pak se spočítá znovu za zlomek sekundy.
26
+ - **Archiv, který neodpovídá, zastaví smyčku agenta; čtenáři nečekají na umlklou službu.** `strom fetch` řekne, kdy to
27
+ zkusit znovu a co dělat mezitím; stejný dotaz ve stejném sezení skončí hned (exit 8) a nic neodešle. Úkol, jehož
28
+ archiv má pauzu, počká mimo frontu (plán ho ukáže odložený do té doby) a `strom run --loop` do té doby počká, místo
29
+ aby pouštěl sezení bez práce. Čtenář, jehož agent po opakovaném pokusu služby zmlkne, se jednou obnoví tam, kde
30
+ skončil; když mlčí dál, hned skončí. Takový výpadek už nezmenšuje dávky čtení.
31
+ - **Brána týdne předplatného pustí víc sezení za sebou.** Když jednou čeká na náskok, pustí znovu až se dvěma body navíc
32
+ (při 15: 17), místo jednoho sezení po každém čekání.
33
+ - **Co předek zažil.** Události v místech stromu – dějiny kraje ze stránek, které strom sám stáhl a ověřil, místní
34
+ události z přečtených záznamů – ukáže aplikace Strom; úvodní nastavení ho nabízí zapnuté, instalace nastavená dřív
35
+ se zeptá jednou, v prvním menu po aktualizaci (Enter: teď ne), a samo se nic nezapne. Zapnout ho může jen člověk –
36
+ tehdy, nebo později v menu Nastavení → Samostatná práce agenta → Dějiny, z aplikace Strom, nebo
37
+ `strom config set experiments.history on`; dokud je vypnuté, nic se nehledá. Dějiny regionů a dějiny míst jsou
38
+ dva vypínače, každý i jen pro jeden výzkum (Nastavení → Samostatná práce agenta, `strom config set
39
+ experiments.history|experiments.placeHistory on|off --for-tree`, nebo vypnutí z aplikace Strom) – volba výzkumu
40
+ platí oběma směry; s vypnutými místy se nehledá ani místo, o které se požádá. Co bylo zapnuté, zůstává zapnuté
41
+ obojí, co vypnuté, obojí vypnuté. Po zapnutí se místa zmapují hned v dalším sezení a regiony se
42
+ prohledávají průběžně mezi sezeními rodinného výzkumu: zhruba každé 5. sezení (výchozí), každé 10., nebo jen když
43
+ není co jiného (`strom config set experiments.historyPace`, úvodní nastavení, Nastavení); kdy, řekne `strom plan`,
44
+ a na slovo člověka mohou jít všechny napřed (`strom run --history`, v menu „Hledat dějiny teď“).
45
+ Nejdřív regiony s nejvíc osobami, země před státem nad ní.
46
+ Když jsou události regionu sebrané, roky, kdy v něm lidé stromu žili víc než 15 let po sobě bez jediné události,
47
+ se prohledají ještě jednou; prohledané roky se v žádném výzkumu znovu neotevřou, dokud se o region nepožádá znovu.
48
+ Region se prohledává jen v letech, kdy v jeho místech žili lidé stromu (jejich údaje tam a pět let kolem nich; až
49
+ do dneška, jen když údaje sahají do posledních 30 let) – pár let ve válce v cizině jsou jen ty roky. Když později
50
+ nalezený předek žil v regionu dřív nebo později, nebo region sdílí jiný výzkum, prohledají se jednou jen nové roky.
51
+ Region, v jehož letech nežil nikdo ze stromu (údaje v jeho místech leží všechny před ním nebo po něm), se
52
+ neprohledává vůbec; přehled i aplikace Strom řeknou, že tam v těch letech nikdo ze stromu nežil.
53
+ `strom history status` a `strom plan` ukážou roky každého regionu a co čeká.
54
+ Co se ukazuje, spravuje člověk v aplikaci Strom nebo přes `strom history`: událost skrytá, nebo smazaná – ze všech
55
+ výzkumů na tomto počítači, znovu se nezapíše – a obnovená; region nebo místo vynechané; regiony místa přiřazené ručně.
56
+ `strom history list [--place L…] [--region <id>]` vypíše události v terminálu: roky, druh, text v jazyce výzkumu,
57
+ zdroj, co je skryté nebo smazané.
58
+ Dějiny jednoho místa a okolí – požáry, povodně, bitvy poblíž, panství, farnost, škola – se hledají na slovo
59
+ člověka (z karty osoby v aplikaci Strom), první při nejbližším sezení, a zůstanou pro všechny výzkumy na tomto
60
+ počítači s tímto místem. Každé místo se souřadnicemi se může hledat samo, nejdřív místa s nejvíc osobami: Nastavení
61
+ → Samostatná práce agenta → Dějiny jednotlivých míst automaticky (vypnuté, dokud se nezapne). Událost, o kterou se
62
+ požádá v rozhovoru, přidá agent ze stránky, kterou strom přečetl, s jejím zdrojem.
63
+ Vyprávění ji berou jako pozadí doby: události z let, kdy člověk žil v místech svých údajů, každou s jejím zdrojem,
64
+ nikdy jako to, co dělal (u páru jen z let, kdy žili oba); nic skrytého ani smazaného. Schválené vyprávění zůstane, jak je – dějiny přijdou až s jeho
65
+ další verzí, která čeká na schválení. Vypnout se dá v nastavení nebo v aplikaci Strom
66
+ (`strom config set stories.history no`).
67
+ - **Tvary jednoho příjmení.** `strom surname suggest` navrhne, které zapsané tvary příjmení patří jedné rodině: táž
68
+ osoba zapsaná v záznamech různě (s citacemi), nebo táž hláska zapsaná jinak na stejném místě ve stejných letech –
69
+ nikdy rodina manžela a otce téže ženy; značka čtení za jménem (`[?]`, `[!]`, `[…]`) není samostatný tvar. O nich
70
+ rozhoduje jen člověk, v terminálu
71
+ (`strom surname accept|reject|group`); agent jen navrhuje. Tvary jedné rodiny rozšíří hledání záznamů i lidí, kteří
72
+ mohou být jedna osoba. `strom person compare` řekne o dvou lidech, zda jsou jedna osoba, dvě, nebo nejisté, a proč
73
+ (už sloučení, jiné pohlaví, roky daleko od sebe, život skončený dřív, než druhý začal, jiní rodiče, jeden zápis pro
74
+ oba…). Nález označený jako není chyba tak zůstane: `strom quality dismiss|undo|list`, jen rozhodnutí člověka – dva
75
+ lidé takto označení se už nikdy nenavrhnou jako jedna osoba. `strom check` upozorní na událost nebo sňatek datovaný
76
+ jistě po smrti (přibližné datum nikdy) a plán výzkumu založí úkol to prověřit, sám hotový, jakmile se datum opraví
77
+ nebo se nález označí jako není chyba. Účastník události (kmotr, svědek) je jméno a co o něm záznam říká, patří do
78
+ závorky na konci jako poznámka: `--with "godparent:Jan Lhoták (sedlák, Lhota č. 12)"`; jméno delší než čtyři slova
79
+ nebo s číslem se odmítne s tím, co dát do závorky, kněz zapsaný jako svědek se má zapsat jako oddávající nebo křtící
80
+ (`officiant`) a účastník, který může být někdo z rodiny okolo zápisu, se navrhne svým číslem, nikdy se nenapojí sám.
81
+ Takto zapsaná dřívější jména najde `strom check` a rozdělí `strom fixes show|run participant-names` – zdarma, podle
82
+ pravidel, i v archivu, vše jedním krokem, vrátí `strom fixes undo participant-names`; rozhoduje jen člověk.
83
+ Aplikace Strom před 3.17 vrací období jako rozpětí (od–do jako mezi–a) a věk bez nulových jednotek (0y 2m 26d jako
84
+ 2m 26d); synchronizace to brala jako úpravu uživatele – rozpor, nebo bydliště přidané jako vodítko vedle téhož. Teď
85
+ se neupravený strom vrátí beze změny; z aplikace, která je zachová (3.17), je rozpětí místo období zase úprava
86
+ uživatele, a věk ze samých nul (0y 0m 0d) je totéž co 0y. Co takto zapsaly dřívější synchronizace, najde `strom fixes show app-shapes`
87
+ a opraví `strom fixes run app-shapes` – zdarma, podle pravidel, i v archivu, vše jedním krokem, vrátí `strom fixes
88
+ undo app-shapes`; rozhoduje jen člověk.
89
+ Ulice není místo: místo zapsané s ulicí nebo číslem domu („Lhota, Lhotákova 12“) se při zápisu odmítne s obcí, kterou
90
+ zapsat, a ulicí a číslem pro `--house`, v kterémkoli jazyce a písmu; dějiny míst se řídí obcí, takže místa lišící
91
+ se jen ulicí jsou jedno. Co se takto zapsalo dřív, najde `strom check` a opraví `strom fixes show|run street-places`
92
+ (ulice k domu, kde je prázdný nebo jmenuje tutéž) – zdarma, i v archivu, vše jedním krokem, vrátí `strom fixes
93
+ undo street-places`; rozhoduje jen člověk.
94
+
8
95
  ## 1.21.0
9
96
 
10
97
  *26. 10. 2026 · patří k aplikaci Strom 3.16.0.*
package/CHANGELOG.de.md CHANGED
@@ -5,6 +5,111 @@
5
5
  Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Installationszeilen stehen bei
6
6
  [GitHub Releases](https://github.com/ACiDekCZ/strom-research/releases) (auf Englisch).
7
7
 
8
+ ## 1.22.0
9
+
10
+ *In Vorbereitung: die Betas bis 1.22.0-beta.10. Der Abschnitt ist mit dem Release vollständig.*
11
+
12
+ - **Jeder Name einmal in dem, was wartet.** Eine Aufgabe zu Material, das aus der Strom-App gesendet wurde, nannte im
13
+ Widget und auf der Seite des Telefons jede Person zweimal (das zweite Mal in eckigen Klammern), und ihr Text ohne
14
+ Namen ließ leere Klammern stehen; Menü, `strom plan`, die Strom-App und die GEDCOM-Datei zeigten den Namen mit
15
+ seiner ID wiederholt. Jedes nennt den Namen jetzt einmal.
16
+ - **Das Widget öffnet die richtige Forschung.** Bei mehreren Stammbäumen gleichen Namens in der Strom-App konnte das
17
+ Widget auf dem Mac-Schreibtisch einen der anderen öffnen; jetzt öffnet es den Stammbaum seiner eigenen Forschung.
18
+ - **Viel kleinere Sitzungsprotokolle.** Die Protokolle der Sitzungen und Leser behalten die Bilder, die der Agent
19
+ angesehen hat, nicht mehr (nur ihre Größe und den Pfad der Ansicht) und sind dadurch 95–99 % kleiner.
20
+ - **Aufräumen, das mithält, und ein Start, der nicht wartet.** `strom tidy` bewältigt Protokolle jeder Größe.
21
+ Ansichten von Scans, abgebrochene Downloads und anderes, was strom neu erstellen kann, werden auch ohne Zustimmung
22
+ aufgeräumt; Protokolle werden dann nur verkleinert, nie gelöscht. Nach einem Nein kommt die Frage noch einmal, wenn
23
+ `.strom` weit über die Forschung hinauswächst.
24
+ Langsamer Start auf OneDrive oder einem Netzlaufwerk: Menü und `strom doctor` öffnen nicht mehr jeden Scan, die
25
+ Rückkehr ins Menü ist sofort da, doctor zeigt den Fortschritt und meldet, wenn die Forschung in einem Cloud-Ordner
26
+ oder auf einem Netzlaufwerk liegt; `strom doctor --timing` zeigt, was lange dauerte. Bei einer langen Forschung
27
+ (viele hundert Personen, Zehntausende Scans) zeigt das Menü sofort, was wartet: Die Zahl wird neben der Forschung
28
+ gehalten, bis sich etwas ändert, worauf sie beruht, und dann in einem Bruchteil einer Sekunde neu gezählt.
29
+ - **Ein Archiv, das nicht antwortet, beendet die Schleife des Agenten; Leser warten nicht mehr auf einen verstummten
30
+ Dienst.** `strom fetch` sagt, wann es wieder zu versuchen ist und was bis dahin zu tun ist; dieselbe Anfrage in
31
+ derselben Sitzung endet sofort (Exit 8) und sendet nichts. Eine Aufgabe, deren Archiv pausiert, wartet bis dahin
32
+ außerhalb der Warteschlange (der Plan zeigt sie bis zu dieser Zeit zurückgestellt), und `strom run --loop` wartet
33
+ bis dahin, statt Sitzungen ohne Arbeit zu starten. Ein Leser, dessen Agent nach einem erneuten Versuch seines
34
+ Dienstes verstummt, wird einmal dort fortgesetzt, wo er aufhörte; bleibt er still, endet er sofort. Ein solcher
35
+ Ausfall verkleinert die Lesestapel nicht mehr.
36
+ - **Das Tor der Abo-Woche lässt mehrere Sitzungen hintereinander laufen.** Wartet es einmal auf Vorsprung, lässt es
37
+ erst mit zwei Punkten mehr wieder los (bei 15: 17), statt einer Sitzung nach jedem Warten.
38
+ - **Was die Vorfahren erlebten.** Die Ereignisse an den Orten des Stammbaums – die Geschichte einer Region aus Seiten,
39
+ die strom selbst geladen und geprüft hat, örtliche Ereignisse aus gelesenen Einträgen – zeigt die Strom-App. Die
40
+ Ersteinrichtung schlägt es eingeschaltet vor; eine früher eingerichtete Installation fragt einmal, im ersten Menü
41
+ nach dem Update (Enter: jetzt nicht), und nichts schaltet sich von selbst ein. Einschalten kann es nur ein Mensch –
42
+ dann oder später im Menü Einstellungen → Der Agent allein → Geschichte, aus der Strom-App oder mit
43
+ `strom config set experiments.history on`; solange es aus ist, wird nichts gesucht. Die Geschichte der Regionen
44
+ und die der Orte sind zwei Schalter, jeder auch nur für eine Forschung (Einstellungen → Der Agent allein, `strom
45
+ config set experiments.history|experiments.placeHistory on|off --for-tree`, oder aus der Strom-App ausgeschaltet) –
46
+ die Wahl einer Forschung gilt in beide Richtungen; mit ausgeschalteten Orten wird auch ein erfragter Ort nicht
47
+ gesucht. Was eingeschaltet war, bleibt es für beide, was aus war, für beide aus. Eingeschaltet, werden die Orte in der nächsten Sitzung zugeordnet und die Regionen ab und zu zwischen den
48
+ Sitzungen der Familienforschung durchsucht: etwa jede 5. Sitzung (Standard), jede 10. oder nur, wenn nichts anderes
49
+ ansteht (`strom config set experiments.historyPace`, die Ersteinrichtung, die Einstellungen); wann, sagt `strom plan`,
50
+ und auf das Wort eines Menschen können alle zuerst laufen (`strom run --history`, im Menü „Geschichte jetzt suchen“).
51
+ Zuerst die Regionen mit den meisten Personen, ein Land vor dem Staat darüber.
52
+ Sind die Ereignisse einer Region gesammelt, werden die Jahre, in denen die Personen des Stammbaums dort mehr als
53
+ 15 Jahre in Folge ohne ein Ereignis lebten, noch einmal durchsucht; durchsuchte Jahre werden in keiner Forschung
54
+ erneut aufgegriffen, bis die Region wieder angefragt wird.
55
+ Eine Region wird nur in den Jahren durchsucht, in denen Personen des Stammbaums an ihren Orten lebten (ihre Angaben
56
+ dort und fünf Jahre darum; bis heute nur, wenn die Angaben in die letzten 30 Jahre reichen) – ein paar Jahre im
57
+ Krieg im Ausland sind nur diese Jahre. Lebte ein später gefundener Vorfahre früher oder später dort, oder teilt eine
58
+ andere Forschung die Region, werden einmal nur die neuen Jahre durchsucht. Eine Region, in deren Jahren niemand
59
+ aus dem Stammbaum lebte (die Angaben an ihren Orten liegen alle davor oder danach), wird gar nicht durchsucht; die
60
+ Übersicht und die Strom-App sagen, dass dort in jenen Jahren niemand aus dem Stammbaum lebte. `strom history status`
61
+ und `strom plan` zeigen die Jahre jeder Region und was wartet.
62
+ Was gezeigt wird, verwaltet der Mensch in der Strom-App oder mit `strom history`: ein Ereignis ausgeblendet, oder
63
+ gelöscht – aus jeder Forschung auf diesem Computer, nie wieder eingetragen – und wiederhergestellt; eine Region oder
64
+ ein Ort übersprungen; die Regionen eines Orts von Hand zugeordnet. `strom history list [--place L…] [--region <id>]`
65
+ listet die Ereignisse im Terminal: die Jahre, die Art, den Text in der Sprache der Forschung, die Quelle, was
66
+ verborgen oder gelöscht ist.
67
+ Die Geschichte eines einzelnen Ortes und seiner Umgebung – Brände, Hochwasser, Schlachten in der Nähe, die
68
+ Herrschaft, die Pfarrei, die Schule – wird auf das Wort eines Menschen gesucht (aus der Personenkarte der
69
+ Strom-App), zuerst in der nächsten Sitzung, und bleibt für jede Forschung auf diesem Computer mit diesem Ort. Jeder
70
+ Ort mit Koordinaten kann von selbst gesucht werden, die Orte mit den meisten Personen zuerst: Einstellungen → Der
71
+ Agent allein → Geschichte der einzelnen Orte automatisch (aus, bis es eingeschaltet wird). Ein Ereignis, um das im
72
+ Gespräch gebeten wird, trägt der Agent von einer Seite ein, die strom gelesen hat, mit seiner Quelle.
73
+ Die Erzählungen nehmen sie als Hintergrund ihrer Zeit: die Ereignisse der Jahre, in denen ein Mensch an den Orten
74
+ seiner Angaben lebte, jedes mit seiner Quelle, nie als das, was er tat (bei einem Paar nur die Jahre, in denen
75
+ beide lebten); nichts Ausgeblendetes oder Gelöschtes. Eine
76
+ freigegebene Erzählung bleibt, wie sie ist – die Geschichte kommt erst mit ihrer nächsten Fassung, die auf Freigabe
77
+ wartet. Abschaltbar in den Einstellungen oder in der Strom-App (`strom config set stories.history no`).
78
+ - **Die Formen eines Familiennamens.** `strom surname suggest` schlägt vor, welche geschriebenen Formen eines
79
+ Familiennamens zu einer Familie gehören: dieselbe Person in den Einträgen verschieden geschrieben (mit den Belegen),
80
+ oder derselbe Laut anders geschrieben am selben Ort in denselben Jahren – nie die Familien von Ehemann und Vater
81
+ einer Frau; eine Lesemarke nach einem Namen (`[?]`, `[!]`, `[…]`) ist keine eigene Form. Entscheiden kann nur ein
82
+ Mensch, im Terminal (`strom surname accept|reject|group`); ein Agent schlägt
83
+ nur vor. Die Formen einer Familie erweitern die Suche nach Einträgen und nach Personen, die eine sein können.
84
+ `strom person compare` sagt von zwei Personen, ob sie eine sind, zwei oder unsicher, und warum (schon
85
+ zusammengeführt, ein anderes Geschlecht, Jahre weit auseinander, ein Leben, das endete, bevor das andere begann,
86
+ andere Eltern, ein Eintrag für beide…). Ein als kein Fehler markierter Befund bleibt es:
87
+ `strom quality dismiss|undo|list`, allein die Entscheidung eines Menschen – zwei so markierte Personen werden nie
88
+ wieder als eine vorgeschlagen. `strom check` warnt vor einem Ereignis oder einer Heirat, die sicher nach dem Tod
89
+ einer Person datiert ist (ein ungefähres Datum nie), und der Plan einer Forschung legt eine Aufgabe an, das zu
90
+ prüfen – von selbst erledigt, sobald das Datum berichtigt oder der Befund als kein Fehler markiert ist. Ein
91
+ Beteiligter eines Ereignisses (ein Pate, ein Zeuge) ist ein Name, und was der Eintrag über ihn sagt, steht als
92
+ Notiz in Klammern am Ende: `--with "godparent:Jan Lhoták (sedlák, Lhota č. 12)"`; ein Name aus mehr als vier
93
+ Wörtern oder mit einer Zahl wird abgelehnt, mit dem, was in die Klammern gehört, ein als Zeuge genannter Geistlicher
94
+ wird als Amtsträger (`officiant`) erfasst, und ein Beteiligter, der jemand aus der Familie um den Eintrag sein kann,
95
+ wird mit seiner Nummer vorgeschlagen, nie von selbst verknüpft. So früher geschriebene Namen findet `strom check`,
96
+ und `strom fixes show|run participant-names` trennt sie – kostenlos, nach Regeln, auch in einem Archiv, alles in
97
+ einem Schritt, zurück mit `strom fixes undo participant-names`; entscheiden kann nur ein Mensch.
98
+ Eine Strom-App vor 3.17 gibt einen Zeitraum als Spanne zurück (von–bis als zwischen–und) und ein Alter ohne
99
+ Einheiten von null (0y 2m 26d als 2m 26d); eine Synchronisation nahm das als Änderung – ein Widerspruch oder ein
100
+ Wohnort als Hinweis neben demselben. Nun kommt ein unveränderter Baum ohne Änderung zurück; von einer App, die sie
101
+ behält (3.17), ist eine Spanne statt eines Zeitraums wieder eine Änderung, und ein Alter aus lauter Nullen
102
+ (0y 0m 0d) ist dasselbe wie 0y. Was frühere
103
+ Synchronisationen so schrieben, findet `strom fixes show app-shapes` und korrigiert `strom fixes run app-shapes` –
104
+ kostenlos, nach Regeln, auch in einem Archiv, alles in einem Schritt, zurück mit `strom fixes undo app-shapes`;
105
+ entscheiden kann nur ein Mensch.
106
+ Eine Straße ist kein Ort: ein Ort mit Straße oder Nummer („Lhota, Lhotákweg 12“) wird beim Schreiben
107
+ abgelehnt, mit der Gemeinde zum Schreiben und Straße und Nummer für `--house`, in jeder Sprache und jedem Alphabet; die
108
+ Geschichte der Orte richtet sich nach der Gemeinde, Orte, die sich nur in der Straße unterscheiden, sind einer. Was
109
+ früher so geschrieben wurde, findet `strom check` und korrigiert `strom fixes show|run street-places` (die Straße
110
+ zum Haus, wo es leer ist oder dieselbe nennt) – kostenlos, auch in einem Archiv, alles in einem Schritt, zurück mit
111
+ `strom fixes undo street-places`; entscheiden kann nur ein Mensch.
112
+
8
113
  ## 1.21.0
9
114
 
10
115
  *26.10.2026 · gehört zur Strom-App 3.16.0.*
package/CHANGELOG.md CHANGED
@@ -5,6 +5,101 @@ English · [Čeština](CHANGELOG.cs.md) · [Deutsch](CHANGELOG.de.md)
5
5
  The changes of each version in short. The full notes and the install lines are on
6
6
  [GitHub Releases](https://github.com/ACiDekCZ/strom-research/releases).
7
7
 
8
+ ## 1.22.0
9
+
10
+ *In preparation: the betas up to 1.22.0-beta.10. The section is complete with the release.*
11
+
12
+ - **Each name once in what waits.** A task for material sent from the Strom app named each person twice in the
13
+ widget and on the phone's page (the second time in brackets), and its text without names kept empty brackets; the
14
+ menu, `strom plan`, the Strom app and the GEDCOM file showed the name with its ID repeated. Each says the name once.
15
+ - **The widget opens the right research.** With several trees of one name in the Strom app, the widget on the Mac's
16
+ desktop could open one of the others; it now opens the tree of its own research.
17
+ - **Much smaller session logs.** The logs of sessions and readers no longer keep the images the agent looked at
18
+ (only their size and the view's path), so they are 95–99 % smaller.
19
+ - **Tidying that keeps up, a start that does not wait.** `strom tidy` handles logs of any size. Views of scans,
20
+ downloads cut short and other things strom makes again are kept in order even without a yes; logs are only made
21
+ smaller then, never removed. After a no, the question comes once more when `.strom` grows far beyond the research.
22
+ Slow start on OneDrive or a network drive found and fixed: the menu and `strom doctor` no longer open every scan,
23
+ return to the menu at once, doctor shows its progress and says when the research lies in a cloud folder or on a
24
+ network drive; `strom doctor --timing` tells what took long. On a long research (hundreds of people, tens of
25
+ thousands of scans) the menu shows what waits at once: its count is kept beside the research until something it
26
+ stands on changes, and counted again in a fraction of a second.
27
+ - **An archive that stops answering stops the agent's loop; readers no longer wait out a silent service.** `strom
28
+ fetch` says when to try again and what to do meanwhile; asked again in the same session it ends at once (exit 8) and
29
+ sends nothing. A task whose archive is left alone waits out of the queue until then (the plan shows it put off until
30
+ that time), and `strom run --loop` waits for that time instead of starting sessions with nothing to do. A reader
31
+ whose agent goes silent after a retry of its service is resumed once where it stopped; still silent, it ends at
32
+ once. Such a failure no longer makes the reading batches smaller.
33
+ - **The gate of the subscription's week lets several sessions run in a row.** Once it waits for points in hand, it goes again only
34
+ with two more (at 15: 17), instead of one session after every wait.
35
+ - **What the ancestors lived through.** The events at the places of the tree — the history of a region from pages
36
+ strom downloaded and checked itself, local events from the records read — shown by the Strom app. The first setup
37
+ suggests it on; an installation set up before is asked once, at the first menu after the update (Enter: not now),
38
+ and nothing turns on by itself. Only a person turns it on — then or later in the menu's Settings → The agent working
39
+ alone → History, from the Strom app, or with `strom config set experiments.history on`; while it is
40
+ off, nothing is looked for. The history of the regions and of the places are two switches, each also for one
41
+ research alone (Settings → The agent working alone, `strom config set experiments.history|experiments.placeHistory
42
+ on|off --for-tree`, or off from the Strom app) — a research's own choice wins both ways; with the places off, not
43
+ even a place asked for is looked for. What was on before stays on for both, what was off for both. Once on, the
44
+ places are mapped in the next session, and the regions are searched now and then between the family research's
45
+ sessions: about every 5th (the default), every 10th, or only when nothing else is left
46
+ (`strom config set experiments.historyPace`, the setup, the settings); `strom plan` says when, and all of them
47
+ can go first at a person's word (`strom run --history`, the menu's "Look for history now"). The regions
48
+ of the most people come first, a land before the state above it.
49
+ Once a region's events are gathered, the years the tree's people lived there for more than 15 in a row with no
50
+ event are looked through once more; years looked through are not raised again, in any research, until the region
51
+ is asked for again.
52
+ A region is searched only in the years the tree's people lived at its places (their facts there and five years
53
+ around them; up to today only when the facts reach the last 30 years) — a few years at a war abroad are those years
54
+ alone. When an ancestor found later lived there earlier or later, or another research shares the region, only the
55
+ new years are searched, once. A region whose years none of the tree's people lived in (the facts at its places all
56
+ lie before or after it) is not searched at all; the status and the Strom app say nobody of the tree lived there in
57
+ those years. `strom history status` and `strom plan` show each region's years and what waits.
58
+ What is shown is the person's to manage, in the Strom app or with `strom history`: an event hidden, or deleted —
59
+ from every research on this computer, never written again — and restored; a region or a place skipped; a place's
60
+ regions assigned by hand. `strom history list [--place L…] [--region <id>]` lists the events in the terminal: the
61
+ years, the kind, the text in the research's language, the source, what is hidden or deleted.
62
+ The history of a single place and its surroundings — fires, floods, battles nearby, the estate, the parish, the
63
+ school — is looked for at a person's word (from a person's card in the Strom app), first at the next session, and
64
+ kept for every research on this computer with that place. Each place with coordinates can be looked for by itself,
65
+ the places of the most people first: Settings → The agent working alone → History of each place, by itself (off
66
+ until turned on). An event asked for in a conversation is added by the agent from a page strom read, with its
67
+ source.
68
+ The stories take it as the background of their time: the events of the years each person lived at their places,
69
+ each with its source, never as what the person did (a couple's, only the years both lived); nothing hidden or
70
+ deleted. An approved story stays as it is —
71
+ the history comes only with its next version, waiting for approval. Off in the settings or in the Strom app
72
+ (`strom config set stories.history no`).
73
+ - **The forms of one surname.** `strom surname suggest` suggests which written forms of a surname are one family's: one
74
+ person written so in the records (with the citations), or one sound spelled otherwise at one place in the same years
75
+ — never the families of a woman's husband and her father; a reading mark after a name (`[?]`, `[!]`, `[…]`) is no
76
+ form of its own. Only a person decides, in the terminal
77
+ (`strom surname accept|reject|group`); an agent only suggests. The forms of one family widen the search of records
78
+ and of people who may be one. `strom person compare` says of two people whether they are one, two or unsure, and why
79
+ (merged already, a different sex, years far apart, a life that ended before the other began, other parents, one
80
+ entry for both…). A finding marked no error stays so: `strom quality dismiss|undo|list`, the person's alone — two
81
+ people marked so are never suggested as one again. `strom check` warns of an event or a marriage dated certainly
82
+ after a person's death (an approximate date never), and the plan of a research raises a task to look into it, done
83
+ by itself once the date is corrected or the finding marked no error. A participant of an event (a godparent, a
84
+ witness) is a name, and what the record says of them goes in closing parentheses as the note:
85
+ `--with "godparent:Jan Lhoták (sedlák, Lhota č. 12)"`; a name of more than four words or with a number is refused
86
+ with what to put in the parentheses, a priest named as a witness is told to be the officiant, and a participant
87
+ who may be one of the family around the entry is suggested by their number, never linked by itself. Names written
88
+ so before are found by `strom check` and set apart by `strom fixes show|run participant-names` — free, by rules,
89
+ in an archive too, all in one step, put back with `strom fixes undo participant-names`; only a person decides.
90
+ A Strom app before 3.17 sends a period back as a range (from–to as between–and) and an age without its zero units
91
+ (0y 2m 26d as 2m 26d); a sync took that for the user's edit — a disagreement, or a residence added as a lead beside
92
+ the same one. Now an unedited tree comes back with no change; from an app that keeps them (3.17), a period made a
93
+ range is the user's edit again, and an age of nothing (0y 0m 0d) is the same as 0y. What earlier syncs wrote so is found by `strom fixes
94
+ show app-shapes` and set right by `strom fixes run app-shapes` — free, by rules, in an archive too, all in one
95
+ step, put back with `strom fixes undo app-shapes`; only a person decides.
96
+ A street is no place: a place written with a street or a house number ("Lhota, Lhotak Street 12") is refused on
97
+ writing with the municipality to write and the street and number for `--house`, in any language and script; the
98
+ history of places goes by the municipality, so places that differ only by their street are one. What was written
99
+ so before is found by `strom check` and set right by `strom fixes show|run street-places` (the street to the house
100
+ where it is empty or names the same) — free, in an archive too, all in one step, put back with `strom fixes undo
101
+ street-places`; only a person decides.
102
+
8
103
  ## 1.21.0
9
104
 
10
105
  *2026-10-26 · goes with the Strom app 3.16.0.*