strom-research 1.25.0-beta.5 → 1.25.0

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.25.0
9
9
 
10
- *Připravuje se: bety do 1.25.0-beta.5. Oddíl bude úplný s vydáním.*
10
+ *3. 11. 2026 · patří k aplikaci Strom 3.21.0.*
11
11
 
12
12
  - **Polsky.** Výzkum mluví polsky: menu, jeho hlášky, co zapisuje do výzkumu, instalátor i stránka telefonu; poznámky
13
13
  a role v souboru pro Strom jsou polsky. Polský systém se pozná sám, jinak `strom config set lang pl`. Nápověda pro
@@ -32,7 +32,8 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
32
32
  kandidáty, nebo řekne, co by rozhodlo. Otázky čekají v oddílu Čeká, most je nabízí aplikaci Strom a `strom place
33
33
  undo` vezme poslední odpověď zpět. Frontu míst, kterou aplikace Strom zadá ztotožnit hned, lze pustit v tolika
34
34
  sezeních za sebou, kolik člověk zvolí, každý počet s časem a cenou. U každého jména místa je poznat, zda je to zápis
35
- ze záznamů, nebo jiné jméno místa (jiný jazyk, starý název), a jméno zadané oběma způsoby je v místě jednou.
35
+ ze záznamů, nebo jiné jméno místa (jiný jazyk, starý název), a jméno zadané oběma způsoby je v místě jednou. Soubor
36
+ Strom dává aplikaci Strom 3.21.0 ztotožněná místa s jejich jmény, polohou a farností.
36
37
  - **Druhy dějin.** `history.kinds` určuje, jaké druhy událostí dějiny míst hledají (války, epidemie…). `strom history
37
38
  align` nejdřív řekne, co by skryl, znovu ukázal a hledal, a provede to jen na „ano“ člověka; nic nalezeného se nemaže.
38
39
  - **Vedlejší větve nakonec.** Ve výzkumu s více liniemi čeká práce, která žádné linii nepomáhá, až linie nebudou mít
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.25.0
9
9
 
10
- *In Vorbereitung: die Betas bis 1.25.0-beta.5. Der Abschnitt ist mit dem Release vollständig.*
10
+ *3.11.2026 · gehört zur Strom-App 3.21.0.*
11
11
 
12
12
  - **Auf Polnisch.** Die Forschung spricht Polnisch: das Menü, seine Meldungen, was sie in die Forschung schreibt, der
13
13
  Installer und die Seite des Telefons; die Notizen und Rollen der Strom-Datei sind polnisch. Ein polnisches System wird von
@@ -37,7 +37,8 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
37
37
  Warteschlange von Orten, die die Strom-App jetzt bestimmen lässt, läuft in so vielen Sitzungen nacheinander, wie die
38
38
  Person wählt, jede Zahl mit Zeit und Preis. Bei jedem Namen eines Ortes ist erkennbar, ob er eine Schreibweise der
39
39
  Einträge oder ein anderer Name des Ortes ist (eine andere Sprache, ein alter Name), und ein auf beide Arten
40
- angegebener Name steht nur einmal da.
40
+ angegebener Name steht nur einmal da. Die Strom-Datei gibt der Strom-App 3.21.0 die bestimmten Orte mit ihren Namen,
41
+ ihrer Lage und Pfarrei.
41
42
  - **Arten der Geschichte.** `history.kinds` legt fest, welche Arten von Ereignissen die Geschichte der Orte sucht
42
43
  (Kriege, Epidemien …). `strom history align` sagt zuerst, was es verbergen, wieder zeigen und suchen würde, und tut
43
44
  es nur auf das Ja einer Person; nichts Gefundenes wird gelöscht.
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.25.0
9
9
 
10
- *In preparation: the betas up to 1.25.0-beta.5. The section is complete with the release.*
10
+ *2026-11-03 · goes with the Strom app 3.21.0.*
11
11
 
12
12
  - **In Polish.** The research speaks Polish: the menu, its messages, what it writes into the research, the
13
13
  installer and the phone's page; the notes and roles of the Strom file are Polish. A Polish system is recognized by itself,
@@ -34,7 +34,8 @@ The changes of each version in short. The full notes and the install lines are o
34
34
  the bridge offers them to the Strom app, and `strom place undo` takes back the last answer. A queue of places the
35
35
  Strom app asks to identify now runs in as many sessions as the person picks, each count with its time and price.
36
36
  Each name of a place says whether it is a form the records write or another name of the place (another language, an
37
- old name), and a name given both ways is kept once.
37
+ old name), and a name given both ways is kept once. The Strom file gives the Strom app 3.21.0 the identified places
38
+ with their names, position and parish.
38
39
  - **Kinds of history.** `history.kinds` sets which kinds of events the history of the places looks for (wars,
39
40
  epidemics, …). `strom history align` says first what it would hide, show again and look for, and does it only on
40
41
  the person's yes; nothing found is deleted.
package/CHANGELOG.pl.md CHANGED
@@ -7,7 +7,7 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
7
7
 
8
8
  ## 1.25.0
9
9
 
10
- *W przygotowaniu: bety do 1.25.0-beta.5. Sekcja będzie kompletna z wydaniem.*
10
+ *03.11.2026 · współpracuje z aplikacją Strom 3.21.0.*
11
11
 
12
12
  - **Po polsku.** Badanie mówi po polsku: menu, jego komunikaty, to, co zapisuje w badaniu, instalator i strona
13
13
  telefonu; notatki i role w pliku dla Strom są po polsku. Polski system jest rozpoznawany sam, w przeciwnym razie
@@ -34,7 +34,8 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
34
34
  czeka”, mostek proponuje je aplikacji Strom, a `strom place undo` cofa ostatnią odpowiedź. Kolejka miejsc, które
35
35
  aplikacja Strom zleca zidentyfikować, przebiega teraz w tylu sesjach, ile wybierze człowiek, każda liczba z czasem
36
36
  i ceną. Każda nazwa miejsca mówi, czy jest formą zapisaną w aktach, czy inną nazwą miejsca (inny język, dawna
37
- nazwa), a nazwa podana na oba sposoby jest przechowywana raz.
37
+ nazwa), a nazwa podana na oba sposoby jest przechowywana raz. Plik Strom przekazuje aplikacji Strom 3.21.0
38
+ zidentyfikowane miejsca z ich nazwami, położeniem i parafią.
38
39
  - **Rodzaje historii.** `history.kinds` określa, jakich rodzajów wydarzeń szuka historia miejsc (wojny,
39
40
  epidemie…). `strom history align` najpierw mówi, co by ukrył, ponownie pokazał i czego by szukał, i robi to tylko
40
41
  na „tak” człowieka; nic znalezionego nie jest usuwane.
@@ -715,7 +715,7 @@
715
715
  "story.what": "Napisać opowieść: {name}",
716
716
  "story.more.what": "Uzupełnić opowieść: {name} – {count, plural, one {# nowa dana} few {# nowe dane} many {# nowych danych} other {# nowych danych}}",
717
717
  "story.where": "zapisane dane (strom person show {id})",
718
- "story.why": "{count, plural, one {# dana z aktów opowiada} few {# dane z aktów opowiadają} many {# danych z aktów opowiada} other {# danych z aktów opowiada}} o życiu (pokolenie {generation} badania {research}); rodzina przeczyta je w księdze rodzinnej aplikacji Strom",
718
+ "story.why": "{count, plural, one {# dana z aktów opowiada} few {# dane z aktów opowiadają} many {# danych z aktów opowiada} other {# danych z aktów opowiada}} o życiu (pokolenie {generation} badania {research}); rodzina przeczyta je w księdze rodu aplikacji Strom",
719
719
  "story.done": "strom story set {id} ze wszystkimi danymi, na których się opiera (--fact) – szkic, dopóki użytkownik go nie zatwierdzi",
720
720
  "story.couple.what": "Napisać opowieść pary: {a} i {b}",
721
721
  "story.couple.more.what": "Uzupełnić opowieść pary: {a} i {b} – {count, plural, one {# nowa dana} few {# nowe dane} many {# nowych danych} other {# nowych danych}}",
@@ -893,12 +893,12 @@
893
893
  "ui.o.mode": "rodzaj",
894
894
  "ui.o.mode.archive": "Archiwum Strom — dane przychodzą z aplikacji Strom (przełącza tylko użytkownik: strom mode research)",
895
895
  "ui.o.mode.waiting": "badanie czeka na agenta AI na tym komputerze — do tego czasu jest prowadzone jako Archiwum Strom (po instalacji agenta samo znów staje się badaniem)",
896
- "ui.o.stories.tell": "włączone (domyślnie): powiedz użytkownikowi (strom mówi to tylko raz) jednym zdaniem, że do przodków będziesz pisać także opowieści do księgi rodzinnej w aplikacji Strom i że może odmówić – strom config set stories no (zgoda: strom config set stories yes)",
896
+ "ui.o.stories.tell": "włączone (domyślnie): powiedz użytkownikowi (strom mówi to tylko raz) jednym zdaniem, że do przodków będziesz pisać także opowieści do księgi rodu w aplikacji Strom i że może odmówić – strom config set stories no (zgoda: strom config set stories yes)",
897
897
  "ui.o.stories.on": "włączone: strom zaproponuje opowieść, gdy tylko zapisy opowiadają życie (zadania narrate)",
898
898
  "ui.o.stories.off": "wyłączone (użytkownik nie chce) – nie poruszać tego tematu",
899
899
  "ui.setup.model.strong": "Badanie wymaga mocnego modelu – odczytuje stare rękopisy i ocenia źródła: w {agent} wybrać jego najlepszy model, nie szybki ani mini.",
900
900
  "ui.chat.app.model": "W aplikacji {app} wybrać do badania jej najlepszy model (nie szybki ani mini): odczytuje stare rękopisy.",
901
- "ui.setup.stories": "Czy agent ma do przodków pisać także opowieści – kilka akapitów o każdym życiu, z zapisów, które znajdzie, do księgi rodzinnej w aplikacji Strom?",
901
+ "ui.setup.stories": "Czy agent ma do przodków pisać także opowieści – kilka akapitów o każdym życiu, z zapisów, które znajdzie, do księgi rodu w aplikacji Strom?",
902
902
  "ui.setup.stories.yes": "Tak (zalecane)",
903
903
  "ui.setup.stories.no": "Nie – tylko drzewo i źródła",
904
904
  "ui.setup.stories.history": "Uwzględniać w opowieściach także historię miejsc – wydarzenia epoki w miejscowościach przodków, każde z jego źródłem, jako tło życia? Zatwierdzona opowieść pozostanie bez zmian; historia pojawi się dopiero w jej kolejnej wersji.",
@@ -1983,7 +1983,7 @@
1983
1983
  "ui.link.which.one": "To badanie jest tu więcej niż raz. Które?",
1984
1984
  "ui.link.noterminal.any": "strom nie mógł otworzyć okna terminala. Uruchomić {strom} (badanie {name}) i kontynuować z jego menu.",
1985
1985
  "ui.link.noterminal.new": "strom nie mógł otworzyć okna terminala. Uruchomić {strom}, a potem spróbować ponownie z aplikacji Strom.",
1986
- "ui.link.asks": "Aplikacja Strom prosi o: {what}\nBadanie: {name}",
1986
+ "ui.link.asks": "Prośba z aplikacji Strom: {what}\nBadanie: {name}",
1987
1987
  "ui.link.go": "Kontynuować?",
1988
1988
  "ui.link.cost": "Agent pracuje w ramach subskrypcji lub kredytu AI swojego konta.",
1989
1989
  "ui.link.tasks": "Badanie zapisze zadania dla agenta – teraz niczego się nie szuka i za nic się nie płaci.",
@@ -2473,7 +2473,7 @@
2473
2473
  "ui.link.story.nonew": "Żadna nowa wersja opowieści o {person} nie czeka. Nic się nie stało.",
2474
2474
  "ui.link.story.nocouple": "{couple} nie są w badaniu parą. Nic się nie stało.",
2475
2475
  "ui.story.new.title": "Nowa wersja opowieści o {who} ({day}) – zatwierdzona zostaje do czasu decyzji:",
2476
- "ui.story.new.pick": "Którą opowieść ma mieć rodzinna książka?",
2476
+ "ui.story.new.pick": "Którą opowieść ma mieć księga rodu?",
2477
2477
  "ui.story.new.take": "nową wersję, zamiast starej",
2478
2478
  "ui.story.new.keep": "zostawić starą (nowa wersja zostanie odrzucona)",
2479
2479
  "ui.story.new.taken": "✓ Opowieścią jest teraz nowa wersja, zatwierdzona. Po ponownym otwarciu badania w aplikacji Strom będzie tam.",
package/dist/cli/human.js CHANGED
@@ -9,16 +9,20 @@ import { foldText } from "../core/text.js";
9
9
  /**
10
10
  * English reads "31 Aug 1830"; the others their own numeric form ("31. 8. 1830", "31.8.1830"). A month and
11
11
  * year alone are named ("srpen 1830") — after a word ("před 3/1853") in numbers, which no grammatical case bends.
12
+ * Polish writes a day's day and month with two digits ("02.11", "05.08.1830"), as the Strom app does.
12
13
  */
13
14
  function format(lang, date, parts) {
14
15
  const en = lang === "en";
16
+ const two = lang === "pl" || lang.startsWith("pl-");
17
+ const day = two ? "2-digit" : "numeric";
18
+ const month = en ? "short" : two ? "2-digit" : "numeric";
15
19
  const opts = parts === "month"
16
20
  ? { month: "long", year: "numeric" }
17
21
  : parts === "monthafter"
18
22
  ? { month: en ? "short" : "numeric", year: "numeric" }
19
23
  : parts === "daymonth"
20
- ? { day: "numeric", month: en ? "short" : "numeric" }
21
- : { day: "numeric", month: en ? "short" : "numeric", year: "numeric" };
24
+ ? { day, month }
25
+ : { day, month, year: "numeric" };
22
26
  try {
23
27
  return new Intl.DateTimeFormat(en ? "en-GB" : lang, { ...opts, timeZone: "UTC" }).format(date);
24
28
  }
@@ -560,6 +560,17 @@ register({
560
560
  function placeName(p) {
561
561
  return p.names[0]?.name ?? p.id;
562
562
  }
563
+ /**
564
+ * The other names of a place as place list shows them (words alone, no language or years): each once, never today's
565
+ * again — a form of the facts made today's name and given as another name in a language too (--form X --alt X@de)
566
+ * shows as X once; place show keeps the language apart.
567
+ */
568
+ function listedNames(p) {
569
+ const seen = new Set([placeName(p).normalize("NFC")]);
570
+ return otherNames(p)
571
+ .map((n) => n.name.normalize("NFC"))
572
+ .filter((n) => !seen.has(n) && !!seen.add(n));
573
+ }
563
574
  /** Who writes a place's coordinates: an agent (a session of the research) or the person by hand. */
564
575
  function byWhom(ctx) {
565
576
  return isAgent(ctx.env) || ctx.env.STROM_SESSION ? "research" : "person";
@@ -632,7 +643,7 @@ register({
632
643
  const all = args[0] ? tree.list("place").filter((p) => p.names.some((n) => matches(n.name, args[0]))) : tree.list("place");
633
644
  return {
634
645
  text: all.length
635
- ? table(all.map((p) => [p.id, placeName(p), otherNames(p).map((n) => n.name).join(", "), p.jurisdictions.map((j) => `${j.kind}: ${j.name}`).join("; ")]))
646
+ ? table(all.map((p) => [p.id, placeName(p), listedNames(p).join(", "), p.jurisdictions.map((j) => `${j.kind}: ${j.name}`).join("; ")]))
636
647
  : "no places match",
637
648
  data: { places: all },
638
649
  };
@@ -582,12 +582,13 @@ export function appReadsLines(settings, version, gate = APP_READS_LINES) {
582
582
  * The first Strom app that reads the research's place records (spec 034; the app's ZADANI_VYZKUM_ztotozneni-mist.md,
583
583
  * point 10): 0 @L…@ _STROM_PLACE with its names, position, jurisdictions, parent, who put it on the map and why, and
584
584
  * 3 _STROM_PLACE @L…@ under each PLAC of a fact that belongs to one — in the Strom file and the bridge's /tree.ged.
585
- * An older app counts an unknown record as unsupported: not released yet (undefined); an app of unknown version stays
586
- * off; another copy of the app (its beta, its development) from APP_READS_PLACE_RECORDS_BETA.
585
+ * An older app counts an unknown record as unsupported: the app reads them from 3.21.0 (the names' kinds, 2 TYPE form|alt,
586
+ * from the same release); an app of unknown version stays off; another copy of the app (its beta, its development) from
587
+ * APP_READS_PLACE_RECORDS_BETA.
587
588
  */
588
- export const APP_READS_PLACE_RECORDS = undefined;
589
- /** The first beta of the app that reads the place records (another copy of the app gets them from it); undefined: none yet. */
590
- export const APP_READS_PLACE_RECORDS_BETA = undefined;
589
+ export const APP_READS_PLACE_RECORDS = "3.21.0";
590
+ /** The first beta of the app that reads the place records (another copy of the app gets them from it). */
591
+ export const APP_READS_PLACE_RECORDS_BETA = "3.21.0-beta.2";
591
592
  /** Does the Strom app of this version read the research's place records (0 @L…@ _STROM_PLACE, 3 _STROM_PLACE)? */
592
593
  export function appReadsPlaceRecords(settings, version, gate = APP_READS_PLACE_RECORDS, beta = APP_READS_PLACE_RECORDS_BETA) {
593
594
  const v = version?.trim();
package/dist/core/tree.js CHANGED
@@ -31,7 +31,7 @@ export const TREE_FILE = "strom.json";
31
31
  export const SEAL_FOREIGN = "seal.foreign";
32
32
  // between releases the candidate being made (a bridge run from the sources says what it is: the Strom app goes by it);
33
33
  // at a release the release's own (package.json)
34
- export const VERSION = "1.25.0-beta.5";
34
+ export const VERSION = "1.25.0";
35
35
  const GITIGNORE = `# Strom Research — local state and large files are not versioned
36
36
  .strom/
37
37
  /media/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strom-research",
3
- "version": "1.25.0-beta.5",
3
+ "version": "1.25.0",
4
4
  "description": "Genealogical research toolkit for AI coding agents",
5
5
  "type": "module",
6
6
  "stromLayout": 2,
@@ -59,8 +59,5 @@
59
59
  "devDependencies": {
60
60
  "@types/node": "^22.20.4",
61
61
  "typescript": "^7.0.2"
62
- },
63
- "publishConfig": {
64
- "tag": "beta"
65
62
  }
66
63
  }