strom-research 1.27.0-beta.2 → 1.27.0-beta.3

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.27.0
9
9
 
10
- *Připravuje se: bety do 1.27.0-beta.2. Oddíl bude úplný s vydáním.*
10
+ *Připravuje se: bety do 1.27.0-beta.3. Oddíl bude úplný s vydáním.*
11
11
 
12
12
  - **Snímky uložené ručně vrátí svůj úkol samy.** Kde se snímky archivu ukládají ručně – archiv, kam smí jen prohlížeč
13
13
  člověka, nebo archiv, jehož podmínky nic jiného nedovolují – výzkum požádá o knihu a čísla snímků a připraví pro ně
@@ -35,13 +35,13 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
35
35
  který odmítl, cesta, kterou zapovídá jeho robots.txt, i most mu zůstanou zavřené. Archiv, kam smí jen prohlížeč
36
36
  člověka, se mu otevře jen se svolením člověka „přes prohlížeč“, po jedné stránce, lidským tempem. Odkaz Svolení… v
37
37
  aplikaci Strom u toho, co čeká na snímky takového archivu, otevře tuto otázku, i když k archivu žádný stahovač nevede.
38
- Prohlížeč nebo ovládání počítače jiného agenta – Codexu, Antigravity – takovou kontrolu nemá: do takového archivu
39
- nikdy nejde a snímky uloží člověk ručně. `strom doctor`, brief agenta a Co čeká jednou řeknou, s jakým agentem a
40
- rozšířením prohlížeče by je agent uložil sám, nebo že rozšíření chybí. Prohlížeč a ovládání počítače desktopových
41
- aplikací agentů zůstávají ve výzkumu vypnuté – i v konverzaci a v aplikaci ChatGPT; výzkum hlídá prohlížeč agenta v
42
- Chrome. `strom doctor` a brief agenta to říkají výslovně a agent ví, že nikdy nepracuje v kopii výzkumu, kterou
43
- desktopová aplikace agenta otevře ve vlastním worktree. Aplikace Strom se z mostu dozví, zda je prohlížeč agenta
44
- připravený, chybí rozšíření, nebo agent nemá žádný, který výzkum hlídá.
38
+ Prohlížeč nebo ovládání počítače jiného agenta – Codexu, Antigravity – takovou kontrolu nemá: agent s ním do takového
39
+ archivu sám nejde a snímky uloží člověk ručně. `strom doctor`, brief agenta a Co čeká jednou řeknou, s jakým agentem a
40
+ rozšířením prohlížeče by je agent uložil sám, nebo že rozšíření chybí. Nic se nevypíná: prohlížeč a ovládání počítače
41
+ desktopových aplikací agentů výzkum nehlídá a nedoporučuje – hlídá prohlížeč agenta v Chrome a jiný prohlížeč agent
42
+ použije, jen když o to člověk výslovně požádá. `strom doctor` a brief agenta to říkají výslovně a agent ví, že nikdy
43
+ nepracuje v kopii výzkumu, kterou desktopová aplikace agenta otevře ve vlastním worktree. Aplikace Strom se z mostu
44
+ dozví, zda je prohlížeč agenta připravený, chybí rozšíření, nebo agent nemá žádný, který výzkum hlídá.
45
45
 
46
46
  - **Prohlížeč agenta uloží snímky sám, po jednom.** Kde člověk archivu, kam smí jen prohlížeč člověka, dovolí přístup
47
47
  „přes prohlížeč“, agent otevře v Chrome jeden snímek a uloží to, co ukazuje prohlížeč snímků archivu – nikdy víc, než
@@ -66,13 +66,16 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
66
66
  četlo zřetelně méně jistě, hned vrátí – už ne až po 60 dnech – a `strom recent` to uvede.
67
67
 
68
68
  - Výzkum zná víc archivů Česka, Německa a Polska s jejich podmínkami – co který dovoluje automatickým nástrojům, jeho
69
- tempo a kam smí jen prohlížeč člověka. Dalších pět českých, kam smí jen prohlížeč člověka: Acta Publica Moravského
70
- zemského archivu (snímky už ne přes stahovač, ani se svolením z dřívějška – to zůstává, jak bylo dané; přes prohlížeč
71
- nejméně 4 sekundy od sebe), eBadatelna SOA Praha a obrazové servery SOA Litoměřice, ZA Opava a policejních přihlášek
72
- Národního archivu (jen ručně). Digitální badatelny SOA Litoměřice a ZA Opava berou snímky z těchto serverů, takže i
73
- jejich snímky se ukládají ručně – svolení „přes prohlížeč“ se u nich nenabízí. Stahovač, vytvořený pro takový archiv
74
- dřív, se odmítne před jakýmkoli požadavkem, i jeho zkouška, a řekne, co zbývá: svolení člověka „přes prohlížeč“, nebo
75
- ruční uložení.
69
+ tempo a kam smí jen prohlížeč člověka. Nově mezi nimi archivy měst Brna a Ostravy, Vojenský ústřední archiv, Arcinsys
70
+ Hesenska, Dolního Saska a Brém a Šlesvicka-Holštýnska, invenio a pamětní kniha Spolkového archivu (jen prohlížeč
71
+ člověka), galerie matrik bývalých východních území v AGAD, LubGens (jen prohlížeč člověka) a rejstříky polských
72
+ genealogických spolků. Dalších pět českých, kam smí jen prohlížeč člověka: Acta Publica Moravského zemského archivu
73
+ (snímky už ne přes stahovač, ani se svolením z dřívějška – to zůstává, jak bylo dané; přes prohlížeč nejméně 4 sekundy
74
+ od sebe), eBadatelna SOA Praha a obrazové servery SOA Litoměřice, ZA Opava a policejních přihlášek Národního archivu
75
+ (jen ručně). Digitální badatelny SOA Litoměřice a ZA Opava berou snímky z těchto serverů, takže i jejich snímky se
76
+ ukládají ručně – svolení „přes prohlížeč“ se u nich nenabízí. U úkolu, který už na takové snímky čeká, se řekne jen,
77
+ že čeká na snímky uložené ručně, bez nové rady k čekání. Stahovač, vytvořený pro takový archiv dřív, se odmítne před
78
+ jakýmkoli požadavkem, i jeho zkouška, a řekne, co zbývá: svolení člověka „přes prohlížeč“, nebo ruční uložení.
76
79
 
77
80
  - Se vším z 1.26.1: přerušený zápis už výzkum natrvalo nezablokuje.
78
81
 
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.27.0
9
9
 
10
- *In Vorbereitung: die Betas bis 1.27.0-beta.2. Der Abschnitt ist mit dem Release vollständig.*
10
+ *In Vorbereitung: die Betas bis 1.27.0-beta.3. Der Abschnitt ist mit dem Release vollständig.*
11
11
 
12
12
  - **Von Hand gespeicherte Bilder bringen ihre Aufgabe von selbst zurück.** Wo die Bilder eines Archivs von Hand
13
13
  gespeichert werden – ein Archiv, das nur der Browser eines Menschen erreicht, oder eines, dessen Bedingungen nichts
@@ -42,14 +42,15 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
42
42
  Erlaubnis des Menschen „über den Browser“, eine Seite nach der anderen im Tempo eines Menschen. Erlaubnis… in der
43
43
  Strom-App bei dem, was auf Bilder eines solchen Archivs wartet, öffnet diese Frage, auch wo kein Downloader das Archiv
44
44
  erreicht. Der Browser oder die Computersteuerung eines anderen Agenten – Codex, Antigravity – hat keine solche
45
- Prüfung: Er geht nie in ein solches Archiv, und die Bilder speichert der Mensch von Hand. `strom doctor`, das Briefing
46
- des Agenten und Was wartet sagen einmal, mit welchem Agenten und welcher Browser-Erweiterung der Agent sie selbst
47
- speichern würde, oder dass die Erweiterung fehlt. Der Browser und die Computersteuerung der Desktop-Apps der Agenten
48
- bleiben in der Forschung aus – auch im Gespräch und in der ChatGPT-App; überwacht wird der Browser des Agenten in
49
- Chrome. `strom doctor` und das Briefing des Agenten sagen es ausdrücklich, und der Agent arbeitet nie in einer Kopie
50
- der Forschung, die die Desktop-App eines Agenten in einem eigenen Worktree öffnet. Die Strom-App erfährt von der
51
- Brücke, ob der Browser des Agenten bereit ist, die Erweiterung fehlt oder der Agent keinen hat, den die Forschung
52
- überwacht.
45
+ Prüfung: Der Agent geht damit nicht von sich aus in ein solches Archiv, und die Bilder speichert der Mensch von Hand.
46
+ `strom doctor`, das Briefing des Agenten und Was wartet sagen einmal, mit welchem Agenten und welcher
47
+ Browser-Erweiterung der Agent sie selbst speichern würde, oder dass die Erweiterung fehlt. Nichts wird ausgeschaltet:
48
+ Den Browser und die Computersteuerung der Desktop-Apps der Agenten überwacht die Forschung nicht und empfiehlt sie
49
+ nicht – überwacht wird der Browser des Agenten in Chrome, und einen anderen nutzt der Agent nur, wenn der Mensch
50
+ ausdrücklich darum bittet. `strom doctor` und das Briefing des Agenten sagen es ausdrücklich, und der Agent arbeitet
51
+ nie in einer Kopie der Forschung, die die Desktop-App eines Agenten in einem eigenen Worktree öffnet. Die Strom-App
52
+ erfährt von der Brücke, ob der Browser des Agenten bereit ist, die Erweiterung fehlt oder der Agent keinen hat, den
53
+ die Forschung überwacht.
53
54
 
54
55
  - **Der Browser des Agenten speichert die Bilder selbst, eines nach dem anderen.** Wo der Mensch einem Archiv, das nur
55
56
  der Browser eines Menschen erreicht, den Zugang „über den Browser“ erlaubt, öffnet der Agent ein Bild in Chrome und
@@ -80,14 +81,19 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
80
81
  zurückgenommen – nicht mehr erst nach 60 Tagen –, und `strom recent` sagt es.
81
82
 
82
83
  - Weitere Archive Tschechiens, Deutschlands und Polens sind mit ihren Bedingungen bekannt – was jedes automatischen
83
- Werkzeugen erlaubt, sein Tempo und was nur der Browser eines Menschen erreicht. Fünf weitere tschechische, die nur der
84
- Browser eines Menschen erreicht: die Acta Publica des Mährischen Landesarchivs (ihre Bilder nicht mehr über einen
85
- Downloader, auch nicht mit einer früher gegebenen Erlaubnis – sie bleibt, wie gegeben; über den Browser mindestens 4
86
- Sekunden auseinander), die eBadatelna des SOA Praha und die Bildserver des SOA Litoměřice, des ZA Opava und der
87
- Polizeimeldungen des Nationalarchivs (nur von Hand). Die digitalen Lesesäle des SOA Litoměřice und des ZA Opava zeigen
88
- ihre Bilder von diesen Servern, daher werden auch ihre Bilder von Hand gespeichert – eine Erlaubnis „über den Browser“
89
- wird dort nicht angeboten. Ein früher für ein solches Archiv gebauter Downloader wird vor jeder Anfrage abgewiesen,
90
- auch seine Probe, und sagt, was bleibt: die Erlaubnis der Person „über den Browser“ oder das Speichern von Hand.
84
+ Werkzeugen erlaubt, sein Tempo und was nur der Browser eines Menschen erreicht. Neu darunter die Stadtarchive Brno und
85
+ Ostrava, das Militärische Zentralarchiv Prag, Arcinsys Hessen, Niedersachsen und Bremen sowie Schleswig-Holstein,
86
+ invenio und das Gedenkbuch des Bundesarchivs (nur der Browser eines Menschen), die Bildgalerien der Kirchenbücher der
87
+ ehemaligen Ostgebiete im AGAD, LubGens (nur der Browser eines Menschen) und die Indizes polnischer genealogischer
88
+ Vereine. Fünf weitere tschechische, die nur der Browser eines Menschen erreicht: die Acta Publica des Mährischen
89
+ Landesarchivs (ihre Bilder nicht mehr über einen Downloader, auch nicht mit einer früher gegebenen Erlaubnis – sie
90
+ bleibt, wie gegeben; über den Browser mindestens 4 Sekunden auseinander), die eBadatelna des SOA Praha und die
91
+ Bildserver des SOA Litoměřice, des ZA Opava und der Polizeimeldungen des Nationalarchivs (nur von Hand). Die digitalen
92
+ Lesesäle des SOA Litoměřice und des ZA Opava zeigen ihre Bilder von diesen Servern, daher werden auch ihre Bilder von
93
+ Hand gespeichert – eine Erlaubnis „über den Browser“ wird dort nicht angeboten. Bei einer Aufgabe, die schon auf
94
+ solche Bilder wartet, heißt es nur, dass sie auf von Hand gespeicherte Bilder wartet, ohne neuen Rat zum Warten. Ein
95
+ früher für ein solches Archiv gebauter Downloader wird vor jeder Anfrage abgewiesen, auch seine Probe, und sagt, was
96
+ bleibt: die Erlaubnis der Person „über den Browser“ oder das Speichern von Hand.
91
97
 
92
98
  - Mit allem aus 1.26.1: ein unterbrochenes Schreiben sperrt die Forschung nicht mehr auf Dauer.
93
99
 
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.27.0
9
9
 
10
- *In preparation: the betas up to 1.27.0-beta.2. The section is complete with the release.*
10
+ *In preparation: the betas up to 1.27.0-beta.3. The section is complete with the release.*
11
11
 
12
12
  - **Images saved by hand bring their task back by themselves.** Where an archive's images are saved by hand – an archive
13
13
  only a person's browser reaches, or one whose terms allow nothing else – the research asks for its book and the
@@ -38,14 +38,14 @@ The changes of each version in short. The full notes and the install lines are o
38
38
  path its robots.txt keeps off and the bridge stay closed to it. An archive only a person's browser reaches opens to it
39
39
  only with the person's permission "through the browser", one page at a time at a person's pace. The Strom app's
40
40
  Permission… at what waits for such an archive's images opens this question, also where no downloader reaches the
41
- archive. The browser or computer use of another agent – Codex, Antigravity – has no such check: it never goes to such
42
- an archive, and the person saves the images by hand. `strom doctor`, the agent's brief and What waits say once which
43
- agent and browser extension would let the agent save them itself, or that the extension is missing. The browser and
44
- computer use of the agents' desktop apps stay off in a research – in a conversation and in the ChatGPT app too; the
45
- research watches the agent's browser in Chrome. `strom doctor` and the agent's brief say so in words, and the agent is
46
- told never to work in a copy of the research an agent's desktop app opens in a worktree of its own. The Strom app
47
- learns from the bridge whether the agent's browser is ready, the extension is missing, or the agent has none the
48
- research keeps.
41
+ archive. The browser or computer use of another agent – Codex, Antigravity – has no such check: the agent does not
42
+ take it to such an archive on its own, and the person saves the images by hand. `strom doctor`, the agent's brief and
43
+ What waits say once which agent and browser extension would let the agent save them itself, or that the extension is
44
+ missing. Nothing is switched off: the browser and computer use of the agents' desktop apps the research does not
45
+ watch, nor does it recommend them – it watches the agent's browser in Chrome, and the agent uses another only when the
46
+ person asks for it explicitly. `strom doctor` and the agent's brief say so in words, and the agent is told never to
47
+ work in a copy of the research an agent's desktop app opens in a worktree of its own. The Strom app learns from the
48
+ bridge whether the agent's browser is ready, the extension is missing, or the agent has none the research keeps.
49
49
 
50
50
  - **The agent's browser saves the images itself, one at a time.** Where the person allows an archive only a person's
51
51
  browser reaches "through the browser", the agent opens one image in Chrome and saves what the archive's own viewer
@@ -71,13 +71,18 @@ The changes of each version in short. The full notes and the install lines are o
71
71
  back at once – no longer only after 60 days – and `strom recent` says so.
72
72
 
73
73
  - More archives of Czechia, Germany and Poland are known with their terms – what each allows automated tools, its pace
74
- and what only a person's browser reaches. Five more of Czechia only a person's browser reaches: the Acta Publica of
75
- the Moravian Land Archives (its images no longer through a downloader, even with a permission given before – kept as
76
- given; through the browser at least 4 seconds apart), the eBadatelna of SOA Praha and the image servers of SOA
77
- Litoměřice, ZA Opava and the National Archives' police registrations (by hand only). The digital reading rooms of SOA
78
- Litoměřice and ZA Opava show their images from those servers, so their images are saved by hand too – no permission
79
- "through the browser" is offered there. A downloader made earlier for such an archive is refused before any request,
80
- its probe too, and says what remains: the person's permission "through the browser", or saving by hand.
74
+ and what only a person's browser reaches. Among them now the city archives of Brno and Ostrava, the Military Central
75
+ Archive, Arcinsys of Hesse, of Lower Saxony and Bremen and of Schleswig-Holstein, the Bundesarchiv's invenio and its
76
+ memorial book (only a person's browser), AGAD's galleries of the registers of the former eastern territories, LubGens
77
+ (only a person's browser) and the indexes of Polish genealogical societies. Five more of Czechia only a person's
78
+ browser reaches: the Acta Publica of the Moravian Land Archives (its images no longer through a downloader, even with
79
+ a permission given before – kept as given; through the browser at least 4 seconds apart), the eBadatelna of SOA Praha
80
+ and the image servers of SOA Litoměřice, ZA Opava and the National Archives' police registrations (by hand only). The
81
+ digital reading rooms of SOA Litoměřice and ZA Opava show their images from those servers, so their images are saved
82
+ by hand too – no permission "through the browser" is offered there. A task waiting for such images already is said
83
+ only to wait for the images saved by hand, with no new advice to wait. A downloader made earlier for such an archive
84
+ is refused before any request, its probe too, and says what remains: the person's permission "through the browser", or
85
+ saving by hand.
81
86
 
82
87
  - With all of 1.26.1: a write cut short no longer blocks the research for good.
83
88
 
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.27.0
9
9
 
10
- *W przygotowaniu: bety do 1.27.0-beta.2. Sekcja będzie kompletna z wydaniem.*
10
+ *W przygotowaniu: bety do 1.27.0-beta.3. Sekcja będzie kompletna z wydaniem.*
11
11
 
12
12
  - **Skany zapisane ręcznie same przywracają swoje zadanie.** Tam, gdzie skany archiwum zapisuje się ręcznie – archiwum,
13
13
  do którego wolno tylko przeglądarce człowieka, albo takie, którego warunki nie pozwalają na nic innego – badanie
@@ -39,13 +39,14 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
39
39
  zamknięte. Archiwum, do którego wolno tylko przeglądarce człowieka, otwiera się dla niego tylko za zgodą człowieka
40
40
  „przez przeglądarkę”, strona po stronie, w tempie człowieka. Zgoda… w aplikacji Strom przy tym, co czeka na skany
41
41
  takiego archiwum, otwiera to pytanie, także tam, gdzie żaden program do pobierania nie sięga archiwum. Przeglądarka
42
- lub sterowanie komputerem innego agenta – Codexa, Antigravity – nie ma takiej kontroli: nigdy nie wchodzi do takiego
43
- archiwum, a skany zapisuje człowiek ręcznie. `strom doctor`, brief agenta i Co czeka mówią raz, z jakim agentem i
44
- rozszerzeniem przeglądarki agent zapisałby je sam, albo że brakuje rozszerzenia. Przeglądarka i sterowanie komputerem
45
- aplikacji desktopowych agentów pozostają w badaniu wyłączone – także w rozmowie i w aplikacji ChatGPT; badanie pilnuje
46
- przeglądarki agenta w Chrome. `strom doctor` i brief agenta mówią to wprost, a agent nigdy nie pracuje w kopii
47
- badania, którą aplikacja desktopowa agenta otwiera we własnym worktree. Aplikacja Strom dowiaduje się od mostu, czy
48
- przeglądarka agenta jest gotowa, brakuje rozszerzenia, czy agent nie ma żadnej, którą badanie pilnuje.
42
+ lub sterowanie komputerem innego agenta – Codexa, Antigravity – nie ma takiej kontroli: agent nie wchodzi z nią do
43
+ takiego archiwum sam z siebie, a skany zapisuje człowiek ręcznie. `strom doctor`, brief agenta i Co czeka mówią raz, z
44
+ jakim agentem i rozszerzeniem przeglądarki agent zapisałby je sam, albo że brakuje rozszerzenia. Nic nie jest
45
+ wyłączane: przeglądarki i sterowania komputerem aplikacji desktopowych agentów badanie nie pilnuje i ich nie poleca –
46
+ pilnuje przeglądarki agenta w Chrome, a innej agent używa tylko wtedy, gdy człowiek wyraźnie o to poprosi. `strom
47
+ doctor` i brief agenta mówią to wprost, a agent nigdy nie pracuje w kopii badania, którą aplikacja desktopowa agenta
48
+ otwiera we własnym worktree. Aplikacja Strom dowiaduje się od mostu, czy przeglądarka agenta jest gotowa, brakuje
49
+ rozszerzenia, czy agent nie ma żadnej, którą badanie pilnuje.
49
50
 
50
51
  - **Przeglądarka agenta sama zapisuje skany, po jednym.** Tam, gdzie człowiek zezwoli archiwum, do którego wolno tylko
51
52
  przeglądarce człowieka, na dostęp „przez przeglądarkę”, agent otwiera w Chrome jeden skan i zapisuje to, co pokazuje
@@ -73,14 +74,18 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
73
74
  recent` to podaje.
74
75
 
75
76
  - Badanie zna więcej archiwów Czech, Niemiec i Polski wraz z ich warunkami – na co każde pozwala narzędziom
76
- automatycznym, jego tempo i dokąd wolno tylko przeglądarce człowieka. Pięć kolejnych czeskich, dokąd wolno tylko
77
- przeglądarce człowieka: Acta Publica Morawskiego Archiwum Krajowego (jego skany już nie przez program do pobierania,
78
- nawet ze zgodą wydaną wcześniej – pozostaje, jak została dana; przez przeglądarkę co najmniej 4 sekundy odstępu),
79
- eBadatelna SOA Praha oraz serwery obrazów SOA Litoměřice, ZA Opava i meldunków policyjnych Archiwum Narodowego (tylko
80
- ręcznie). Cyfrowe czytelnie SOA Litoměřice i ZA Opava biorą skany z tych serwerów, więc i ich skany zapisuje się
81
- ręcznie – zgody „przez przeglądarkę” się tam nie proponuje. Program do pobierania zrobiony wcześniej dla takiego
82
- archiwum zostaje odrzucony przed jakimkolwiek żądaniem, także jego próba, i mówi, co zostaje: zgoda człowieka „przez
83
- przeglądarkę” albo zapis ręczny.
77
+ automatycznym, jego tempo i dokąd wolno tylko przeglądarce człowieka. Nowe wśród nich: archiwa miejskie Brna i
78
+ Ostrawy, Wojskowe Archiwum Centralne w Pradze, Arcinsys Hesji, Dolnej Saksonii i Bremy oraz Szlezwika-Holsztynu,
79
+ invenio i księga pamięci Archiwum Federalnego (tylko przeglądarka człowieka), galerie ksiąg metrykalnych dawnych ziem
80
+ wschodnich w AGAD, LubGens (tylko przeglądarka człowieka) oraz indeksy polskich towarzystw genealogicznych. Pięć
81
+ kolejnych czeskich, dokąd wolno tylko przeglądarce człowieka: Acta Publica Morawskiego Archiwum Krajowego (jego skany
82
+ już nie przez program do pobierania, nawet ze zgodą wydaną wcześniej – pozostaje, jak została dana; przez przeglądarkę
83
+ co najmniej 4 sekundy odstępu), eBadatelna SOA Praha oraz serwery obrazów SOA Litoměřice, ZA Opava i meldunków
84
+ policyjnych Archiwum Narodowego (tylko ręcznie). Cyfrowe czytelnie SOA Litoměřice i ZA Opava biorą skany z tych
85
+ serwerów, więc i ich skany zapisuje się ręcznie – zgody „przez przeglądarkę” się tam nie proponuje. Przy zadaniu,
86
+ które już czeka na takie skany, mówi się tylko, że czeka na skany zapisane ręcznie, bez nowej rady co do czekania.
87
+ Program do pobierania zrobiony wcześniej dla takiego archiwum zostaje odrzucony przed jakimkolwiek żądaniem, także
88
+ jego próba, i mówi, co zostaje: zgoda człowieka „przez przeglądarkę” albo zapis ręczny.
84
89
 
85
90
  - Wraz z całym 1.26.1: przerwany zapis już nie blokuje badania na stałe.
86
91
 
@@ -1247,6 +1247,433 @@
1247
1247
  ],
1248
1248
  "scope": "society pages; the database itself is app.geshergalicia.org; no terms of use found",
1249
1249
  "checked": "2026-11-04"
1250
+ },
1251
+ {
1252
+ "host": "na.gov.cz",
1253
+ "name": "Národní archiv (website)",
1254
+ "level": "unknown",
1255
+ "robots": "User-agent: Scrapy · Allow: / · User-agent: * · Disallow: (nothing closed)",
1256
+ "scope": "the archive's website (help, pages on its police registrations and Jewish registers); its records are on portal.nacr.cz, its images on digitalnibadatelna.nacr.cz, vademecum.nacr.cz and digi.nacr.cz — a person's browser only; no terms of use of its images found",
1257
+ "checked": "2026-11-04"
1258
+ },
1259
+ {
1260
+ "host": "www.nacr.cz",
1261
+ "name": "Národní archiv (website, old address)",
1262
+ "level": "unknown",
1263
+ "scope": "the same website as na.gov.cz; its images are on digitalnibadatelna.nacr.cz, vademecum.nacr.cz and digi.nacr.cz — a person's browser only",
1264
+ "checked": "2026-11-04"
1265
+ },
1266
+ {
1267
+ "host": "www.vuapraha.cz",
1268
+ "name": "Vojenský ústřední archiv (Vojenský historický archiv: databases, military registers)",
1269
+ "level": "unknown",
1270
+ "robots": "User-agent: * · Disallow: /wp-admin/ · Allow: /wp-admin/admin-ajax.php",
1271
+ "scope": "its databases (legionnaires, the fallen of both world wars, Czechoslovak units abroad) and previews of the military registers (death registers of the k.u.k. infantry regiments 1914–1918 and others): one query or one page at a time; no terms of use found",
1272
+ "checked": "2026-11-04"
1273
+ },
1274
+ {
1275
+ "host": "digitalnistudovna.army.cz",
1276
+ "name": "Ministerstvo obrany – Digitální studovna (Kramerius: military registers of VÚA and VHÚ)",
1277
+ "level": "unknown",
1278
+ "robots": "none (the path answers the application's page)",
1279
+ "scope": "the military registers the Military Central Archive publishes step by step: one page at a time; no terms of use found",
1280
+ "checked": "2026-11-04"
1281
+ },
1282
+ {
1283
+ "host": "digiarchiv.brno.cz",
1284
+ "name": "Archiv města Brna (Digitální archiv: census records)",
1285
+ "level": "unknown",
1286
+ "robots": "User-agent: * · Disallow: (nothing closed)",
1287
+ "scope": "Brno's census records 1850, 1857, 1870, 1880, 1890, 1900 and 1921 with their name index, in a JavaScript application: one record at a time; no terms of use found",
1288
+ "checked": "2026-11-04"
1289
+ },
1290
+ {
1291
+ "host": "archivalie.brno.cz",
1292
+ "name": "Archiv města Brna (Archivní Vademecum)",
1293
+ "level": "restricted",
1294
+ "quoteFrom": "robots",
1295
+ "browserOnly": true,
1296
+ "terms": "https://archivalie.brno.cz/robots.txt",
1297
+ "quote": "User-agent: * / Disallow: /",
1298
+ "robots": "User-agent: * · Disallow: /",
1299
+ "scope": "a person's browser only: robots.txt closes it to every robot and its terms are not published; the person opens and saves the record, the agent reads the saved file",
1300
+ "checked": "2026-11-04"
1301
+ },
1302
+ {
1303
+ "host": "archiv.brno.cz",
1304
+ "name": "Archiv města Brna (website)",
1305
+ "level": "unknown",
1306
+ "robots": "User-agent: * · Disallow: */rest/* (JoobleBot, SemrushBot: Disallow: /)",
1307
+ "scope": "the archive's website; its census records are on digiarchiv.brno.cz, its Vademecum on archivalie.brno.cz (a person's browser only)",
1308
+ "checked": "2026-11-04"
1309
+ },
1310
+ {
1311
+ "host": "badatelna.ostrava.cz",
1312
+ "name": "Archiv města Ostravy (Digitální badatelna)",
1313
+ "level": "restricted",
1314
+ "terms": "https://badatelna.ostrava.cz/vademecum/",
1315
+ "quote": "Publikování jakékoliv textové i obrazové části databáze je podmíněno souhlasem Archivu města Ostravy a uvedením řádné citace.",
1316
+ "robots": "none (robots.txt redirects to /vademecum/)",
1317
+ "scope": "census records, domicile registers and books of registered residents, cemetery and cremation books, chronicles of Ostrava: one record at a time; nothing published without the archive's consent and a citation; its terms say nothing of downloading or automated tools",
1318
+ "checked": "2026-11-04"
1319
+ },
1320
+ {
1321
+ "host": "amo.ostrava.cz",
1322
+ "name": "Archiv města Ostravy (website)",
1323
+ "level": "unknown",
1324
+ "robots": "none (404)",
1325
+ "scope": "the archive's website; its records and images are on badatelna.ostrava.cz",
1326
+ "checked": "2026-11-04"
1327
+ },
1328
+ {
1329
+ "host": "arcinsys.hessen.de",
1330
+ "name": "Arcinsys Hessen (Hessisches Landesarchiv)",
1331
+ "level": "unknown",
1332
+ "terms": "https://arcinsys.hessen.de/arcinsys/information.action",
1333
+ "robots": "Sitemap only (nothing closed)",
1334
+ "scope": "finding aids of Hesse's archives and the digitised civil registers (Personenstandsnebenregister) released online within the legal periods (births 110, marriages 80, deaths 30 years): one record and one image at a time; no terms of use of its images found (its information page: privacy and Impressum only)",
1335
+ "checked": "2026-11-04"
1336
+ },
1337
+ {
1338
+ "host": "arcinsys.niedersachsen.de",
1339
+ "name": "Arcinsys Niedersachsen und Bremen (Niedersächsisches Landesarchiv, Staatsarchiv Bremen)",
1340
+ "level": "unknown",
1341
+ "terms": "https://www.arcinsys.niedersachsen.de/arcinsys/information.action",
1342
+ "robots": "Sitemap only (nothing closed; arcinsys.niedersachsen.de redirects to www.)",
1343
+ "scope": "finding aids of Lower Saxony's and Bremen's archives and part of their digitised records (Bremen's civil registers 1811–1875 and from 1874/76, pedigree tables, passport registers): one record and one image at a time; no terms of use of its images found",
1344
+ "checked": "2026-11-04"
1345
+ },
1346
+ {
1347
+ "host": "arcinsys.schleswig-holstein.de",
1348
+ "name": "Arcinsys Schleswig-Holstein (Landesarchiv Schleswig-Holstein)",
1349
+ "level": "unknown",
1350
+ "robots": "none (404)",
1351
+ "scope": "finding aids of Schleswig-Holstein's archives: one record at a time; no terms of use found",
1352
+ "checked": "2026-11-04"
1353
+ },
1354
+ {
1355
+ "host": "landesarchiv.hessen.de",
1356
+ "name": "Hessisches Landesarchiv (website)",
1357
+ "level": "unknown",
1358
+ "robots": "Drupal's own paths; Crawl-delay commented out; BUbiNG, SemrushBot …: Disallow: / (no AI agent named)",
1359
+ "scope": "the archive's website and guides; its records and civil registers are in Arcinsys Hessen (arcinsys.hessen.de)",
1360
+ "checked": "2026-11-04"
1361
+ },
1362
+ {
1363
+ "host": "invenio.bundesarchiv.de",
1364
+ "name": "Bundesarchiv (invenio)",
1365
+ "level": "restricted",
1366
+ "quoteFrom": "robots",
1367
+ "browserOnly": true,
1368
+ "terms": "https://invenio.bundesarchiv.de/robots.txt",
1369
+ "quote": "User-agent: * / Disallow: /",
1370
+ "robots": "User-agent: * · Disallow: /",
1371
+ "termsPage": "https://www.bundesarchiv.de/im-archiv-recherchieren/archivgut-einsehen-und-nutzen/digitalisate/",
1372
+ "termsPageSays": "Die über invenio bereitgestellten Unterlagen können Sie eigenständig einsehen.",
1373
+ "scope": "a person's browser only: robots.txt closes it to every robot; the person searches and saves the digitised file, the agent reads the saved file; records under legal restrictions only with the person's eID",
1374
+ "checked": "2026-11-04"
1375
+ },
1376
+ {
1377
+ "host": "apps.bundesarchiv.de",
1378
+ "name": "Bundesarchiv (Gedenkbuch, applications)",
1379
+ "level": "restricted",
1380
+ "quoteFrom": "robots",
1381
+ "browserOnly": true,
1382
+ "terms": "https://apps.bundesarchiv.de/robots.txt",
1383
+ "quote": "User-agent: * / Disallow: /",
1384
+ "robots": "User-agent: * · Disallow: /",
1385
+ "scope": "a person's browser only: robots.txt closes it to every robot; the memorial book of the victims of the persecution of the Jews 1933–1945 — the person searches and saves the record (PDF, CSV), the agent reads the saved file",
1386
+ "checked": "2026-11-04"
1387
+ },
1388
+ {
1389
+ "host": "www.bundesarchiv.de",
1390
+ "name": "Bundesarchiv (website)",
1391
+ "level": "unknown",
1392
+ "robots": "User-agent: * · Disallow: /*? · /suche/ · /typo3/ … · Crawl-delay: 30 (Meta-WebIndexer, Googlebot-News: Disallow: /)",
1393
+ "pace": {
1394
+ "minIntervalMs": 30000
1395
+ },
1396
+ "scope": "the archive's website and guides, at its pace (Crawl-delay 30); its records are on invenio.bundesarchiv.de, the memorial book on apps.bundesarchiv.de (a person's browser only)",
1397
+ "checked": "2026-11-04"
1398
+ },
1399
+ {
1400
+ "host": "bestaende-landesarchiv.saarland.de",
1401
+ "name": "Landesarchiv Saarland (online catalogue)",
1402
+ "level": "unknown",
1403
+ "robots": "none (404)",
1404
+ "scope": "part of the archive's finding aids only (civil registers among them): no images of registers online; no terms of use found",
1405
+ "checked": "2026-11-04"
1406
+ },
1407
+ {
1408
+ "host": "blha.brandenburg.de",
1409
+ "name": "Brandenburgisches Landeshauptarchiv (website)",
1410
+ "level": "unknown",
1411
+ "terms": "https://blha.brandenburg.de/blha/de/rechercheratgeber/familienforschung/",
1412
+ "robots": "crawl-delay: 10 (before the first group) · SemrushBot: Disallow: /",
1413
+ "pace": {
1414
+ "minIntervalMs": 10000
1415
+ },
1416
+ "scope": "the archive's website and guides for family history, at a pace of 10 s; its church-book duplicates (Rep. 5KB) are on blha-recherche.brandenburg.de (a person's browser only); no terms of use found",
1417
+ "checked": "2026-11-04"
1418
+ },
1419
+ {
1420
+ "host": "landesarchiv.sachsen-anhalt.de",
1421
+ "name": "Landesarchiv Sachsen-Anhalt",
1422
+ "level": "unknown",
1423
+ "robots": "none (404; recherche. too)",
1424
+ "scope": "its catalogue recherche.landesarchiv.sachsen-anhalt.de (about 4.5 million images of nearly 40,000 records, church books rarely among them): one record and one image at a time; no terms of use found",
1425
+ "checked": "2026-11-04"
1426
+ },
1427
+ {
1428
+ "host": "www.archive-in-thueringen.de",
1429
+ "name": "Archive in Thüringen (portal)",
1430
+ "level": "unknown",
1431
+ "robots": "none (404)",
1432
+ "scope": "a shared overview of Thuringia's archives (holdings and contacts): no images; no terms of use found",
1433
+ "checked": "2026-11-04"
1434
+ },
1435
+ {
1436
+ "host": "www.kulturwerte-mv.de",
1437
+ "name": "Landesamt für Kultur und Denkmalpflege Mecklenburg-Vorpommern (Landesarchiv)",
1438
+ "level": "unknown",
1439
+ "robots": "User-agent: * · Crawl-delay: 1 · Disallow: /datenschutzerklaerung-wisimv-app",
1440
+ "pace": {
1441
+ "minIntervalMs": 1000
1442
+ },
1443
+ "scope": "the office the Landesarchiv belongs to: website and catalogues only; the registers of Mecklenburg and Pomerania are on Archion or in the archive",
1444
+ "checked": "2026-11-04"
1445
+ },
1446
+ {
1447
+ "host": "ariadne-portal.uni-greifswald.de",
1448
+ "name": "Ariadne (Archivportal Mecklenburg-Vorpommern)",
1449
+ "level": "unknown",
1450
+ "robots": "none (404)",
1451
+ "scope": "finding aids of Mecklenburg-Vorpommern's archives: no images; no terms of use found",
1452
+ "checked": "2026-11-04"
1453
+ },
1454
+ {
1455
+ "host": "www.ezab.de",
1456
+ "name": "Evangelisches Zentralarchiv in Berlin (Kirchenbuchstelle)",
1457
+ "level": "unknown",
1458
+ "robots": "none (404)",
1459
+ "scope": "information on the Protestant church books of the former eastern provinces it keeps: their images only on Archion (paid; its terms forbid automated reading) or in its reading room",
1460
+ "checked": "2026-11-04"
1461
+ },
1462
+ {
1463
+ "host": "www.staatsarchiv.bremen.de",
1464
+ "name": "Staatsarchiv Bremen (website)",
1465
+ "level": "unknown",
1466
+ "robots": "empty (nothing closed)",
1467
+ "scope": "the archive's website and guides; its images of civil registers and passport registers are in Arcinsys Niedersachsen und Bremen, the passenger lists on www.public-juling.de",
1468
+ "checked": "2026-11-04"
1469
+ },
1470
+ {
1471
+ "host": "die-maus-bremen.info",
1472
+ "name": "Die MAUS – Gesellschaft für Familienforschung (Bremen indexes)",
1473
+ "level": "unknown",
1474
+ "robots": "none (robots.txt answers the home page)",
1475
+ "scope": "indexes of Bremen's civil records and marriages, linked to the images in Arcinsys: one query at a time; no terms of use found",
1476
+ "checked": "2026-11-04"
1477
+ },
1478
+ {
1479
+ "host": "nla.niedersachsen.de",
1480
+ "name": "Niedersächsisches Landesarchiv (website)",
1481
+ "level": "unknown",
1482
+ "robots": "User-agent: * · Disallow: /test/ · /ps/ · /public/ …",
1483
+ "scope": "the archive's website; its records are in Arcinsys Niedersachsen und Bremen",
1484
+ "checked": "2026-11-04"
1485
+ },
1486
+ {
1487
+ "host": "agad.gov.pl",
1488
+ "name": "Archiwum Główne Akt Dawnych (AGAD)",
1489
+ "level": "unknown",
1490
+ "terms": "https://agad.gov.pl/inwentarze/uwagigen.html",
1491
+ "robots": "User-agent: * · Disallow: /wp-admin",
1492
+ "scope": "its website, the inventories (XML/HTML) of the registers of the former eastern territories (fonds 298–557) and their links to the image galleries on agadd.home.net.pl and agadd2.home.net.pl; no terms of use of the images found",
1493
+ "checked": "2026-11-04"
1494
+ },
1495
+ {
1496
+ "host": "agadd.home.net.pl",
1497
+ "name": "Archiwum Główne Akt Dawnych (image galleries of the registers)",
1498
+ "level": "unknown",
1499
+ "robots": "none (404)",
1500
+ "scope": "static galleries of the registers of the former eastern territories (Roman and Greek Catholic, Protestant, Jewish), linked from AGAD's inventories: one image at a time, never a whole book; registers younger than 100 (births) or 80 years (marriages, deaths) are not in them; no terms of use found",
1501
+ "checked": "2026-11-04"
1502
+ },
1503
+ {
1504
+ "host": "agadd2.home.net.pl",
1505
+ "name": "Archiwum Główne Akt Dawnych (image galleries of the registers)",
1506
+ "level": "unknown",
1507
+ "scope": "static galleries of registers linked from AGAD's inventories: one image at a time, never a whole book; no terms of use found",
1508
+ "checked": "2026-11-04"
1509
+ },
1510
+ {
1511
+ "host": "archiwum.mkw.pl",
1512
+ "name": "Archiwum Archidiecezjalne Warszawskie (AAW)",
1513
+ "level": "unknown",
1514
+ "terms": "https://archiwum.mkw.pl/genealogia/",
1515
+ "robots": "User-agent: * · Disallow: /wp-admin/",
1516
+ "scope": "the archive's website and a catalogue of its books; its register images are published on metryki.genealodzy.pl under PTG's terms",
1517
+ "checked": "2026-11-04"
1518
+ },
1519
+ {
1520
+ "host": "ank.gov.pl",
1521
+ "name": "Archiwum Narodowe w Krakowie",
1522
+ "level": "unknown",
1523
+ "robots": "comments only (Cloudflare's content signals), no rules",
1524
+ "scope": "the archive's website; its images are on szukajwarchiwach.gov.pl (a person's browser only)",
1525
+ "checked": "2026-11-04"
1526
+ },
1527
+ {
1528
+ "host": "katowice.ap.gov.pl",
1529
+ "name": "Archiwum Państwowe w Katowicach",
1530
+ "level": "unknown",
1531
+ "terms": "https://katowice.ap.gov.pl/ap/online",
1532
+ "robots": "none (404)",
1533
+ "scope": "the archive's website: no images of its own — they are on szukajwarchiwach.gov.pl, sbc.org.pl, siliusradicum.pl and metryki.genealodzy.pl, each under its own terms",
1534
+ "checked": "2026-11-04"
1535
+ },
1536
+ {
1537
+ "host": "wroclaw.ap.gov.pl",
1538
+ "name": "Archiwum Państwowe we Wrocławiu",
1539
+ "level": "unknown",
1540
+ "robots": "Drupal's own paths only (wroclaw.ap.gov.pl redirects to www.)",
1541
+ "scope": "the archive's website; its images are on szukajwarchiwach.gov.pl (a person's browser only)",
1542
+ "checked": "2026-11-04"
1543
+ },
1544
+ {
1545
+ "host": "lublin.ap.gov.pl",
1546
+ "name": "Archiwum Państwowe w Lublinie",
1547
+ "level": "unknown",
1548
+ "robots": "calendar paths only",
1549
+ "scope": "its own indexes (residents of Lublin 1930–1950 from house books, of Kock, of Radzyń: a name and the reference only), one query at a time; its images are on szukajwarchiwach.gov.pl; no terms of online use found",
1550
+ "checked": "2026-11-04"
1551
+ },
1552
+ {
1553
+ "host": "lubgens.eu",
1554
+ "name": "LubGens (Lubelskie Towarzystwo Genealogiczne: regestry.lubgens.eu)",
1555
+ "level": "unknown",
1556
+ "browserOnly": true,
1557
+ "robots": "not read: regestry.lubgens.eu answers 403 to strom's User-Agent, in a headless browser too (2026-11-03)",
1558
+ "scope": "the register abstracts of the Lublin region: only in the person's browser; its terms not read",
1559
+ "checked": "2026-11-03"
1560
+ },
1561
+ {
1562
+ "host": "ptg.gda.pl",
1563
+ "name": "Pomorskie Towarzystwo Genealogiczne (PomGenBaza)",
1564
+ "level": "unknown",
1565
+ "robots": "Crawl-Delay: 2 · Disallow: /wp-admin/ · Disallow: /wp-admin/admin-ajax.php (the search goes through it)",
1566
+ "disallow": [
1567
+ "/wp-admin/"
1568
+ ],
1569
+ "pace": {
1570
+ "minIntervalMs": 2000
1571
+ },
1572
+ "scope": "indexes of Pomerania's registers, cemeteries and memorials: its search goes through a path its robots.txt closes — searched by the person; no terms of use found (its \"Regulamin\" is the society's rules)",
1573
+ "checked": "2026-11-03"
1574
+ },
1575
+ {
1576
+ "host": "projektmazury.org",
1577
+ "name": "Projekt Mazury",
1578
+ "level": "unknown",
1579
+ "robots": "none (404)",
1580
+ "scope": "indexes of Masuria's and Warmia's registers, civil records, casualty lists and cemeteries: one query at a time; no terms of use found",
1581
+ "checked": "2026-11-03"
1582
+ },
1583
+ {
1584
+ "host": "poznan-project.psnc.pl",
1585
+ "name": "Poznan Project (marriages of Greater Poland 1800–1899)",
1586
+ "level": "unknown",
1587
+ "robots": "none (404)",
1588
+ "scope": "an index of about 2 million marriages, without images: one query at a time; no terms of use found",
1589
+ "checked": "2026-11-03"
1590
+ },
1591
+ {
1592
+ "host": "recesy.wtg-gniazdo.org",
1593
+ "name": "Recesy (WTG Gniazdo)",
1594
+ "level": "unknown",
1595
+ "robots": "none (redirects to /pl/)",
1596
+ "scope": "an index of the enfranchisement records 1823–1910 of seven districts of Greater Poland: one query at a time; only a payment regulation found, no terms of use (its HTTPS certificate does not match)",
1597
+ "checked": "2026-11-03"
1598
+ },
1599
+ {
1600
+ "host": "genealodzy.czestochowa.pl",
1601
+ "name": "Towarzystwo Genealogiczne Ziemi Częstochowskiej",
1602
+ "level": "unknown",
1603
+ "robots": "Joomla's own directories only",
1604
+ "scope": "indexes of the registers of the Częstochowa region (/indeksy-metrykalne/wyszukiwarka): one query at a time; its \"Regulamin\" is a privacy policy, no terms of use",
1605
+ "checked": "2026-11-03"
1606
+ },
1607
+ {
1608
+ "host": "szukaj.garwolin.org",
1609
+ "name": "Garwolin (spisy pozametrykalne)",
1610
+ "level": "unknown",
1611
+ "robots": "none (404)",
1612
+ "scope": "indexes of the Garwolin district beyond the registers (lists, guilds, exhumations): one query at a time; no terms of use found",
1613
+ "checked": "2026-11-03"
1614
+ },
1615
+ {
1616
+ "host": "wolyn-metryki.pl",
1617
+ "name": "Wołyń-Metryki",
1618
+ "level": "unknown",
1619
+ "robots": "none (404, www. too)",
1620
+ "scope": "indexes of the registers of the Lutsk diocese, linking to the images at AGAD (agadd.home.net.pl), FamilySearch and Szukaj w Archiwach — each under its own terms: one query at a time; no terms of use found",
1621
+ "checked": "2026-11-03"
1622
+ },
1623
+ {
1624
+ "host": "search.jzi.org.pl",
1625
+ "name": "Geneo (Stowarzyszenie JZI)",
1626
+ "level": "unknown",
1627
+ "robots": "none (404)",
1628
+ "scope": "an index of Podlasie's registers (/geneo/): one query at a time; no terms of use found",
1629
+ "checked": "2026-11-03"
1630
+ },
1631
+ {
1632
+ "host": "twoiprzodkowie.pl",
1633
+ "name": "Twoi Przodkowie",
1634
+ "level": "unknown",
1635
+ "scope": "a small site of the Garwolin region, most pages in preparation; no terms of use found",
1636
+ "checked": "2026-11-03"
1637
+ },
1638
+ {
1639
+ "host": "e-kartoteka.net",
1640
+ "name": "e-kartoteka (registration cards of Poznań 1870–1931)",
1641
+ "level": "unknown",
1642
+ "robots": "none (robots.txt redirects to /pl/)",
1643
+ "scope": "an index of the residents' registration cards of Poznań (Archiwum Państwowe w Poznaniu): one query at a time; the card's image is on szukajwarchiwach.gov.pl (a person's browser only); no terms of use found",
1644
+ "checked": "2026-11-03"
1645
+ },
1646
+ {
1647
+ "host": "indeksrepresjonowanych.pl",
1648
+ "name": "Indeks Represjonowanych (IPN)",
1649
+ "level": "unknown",
1650
+ "robots": "none (404)",
1651
+ "scope": "about 316,000 biographical notes of victims of Soviet repressions: one query at a time; no terms of use found",
1652
+ "checked": "2026-11-03"
1653
+ },
1654
+ {
1655
+ "host": "pbc.gda.pl",
1656
+ "name": "Pomorska Biblioteka Cyfrowa",
1657
+ "level": "unknown",
1658
+ "robots": "dLibra's standard",
1659
+ "scope": "a regional digital library (dLibra): one object at a time; no terms of use found",
1660
+ "checked": "2026-11-03"
1661
+ },
1662
+ {
1663
+ "host": "kpbc.umk.pl",
1664
+ "name": "Kujawsko-Pomorska Biblioteka Cyfrowa",
1665
+ "level": "unknown",
1666
+ "robots": "dLibra's standard",
1667
+ "scope": "a regional digital library (dLibra): one object at a time, the rights of each in its field Prawa/AccessRights; no terms of use found (its help only says most publications can be downloaded)",
1668
+ "checked": "2026-11-03"
1669
+ },
1670
+ {
1671
+ "host": "polski.mapywig.org",
1672
+ "name": "Mapy WIG (amateur archive of maps 1919–1939)",
1673
+ "level": "unknown",
1674
+ "robots": "Disallow: /administration/ · /locale/ · /themes/ · /print.php",
1675
+ "scope": "maps of the Polish Military Geographical Institute: one map at a time; no terms of use found",
1676
+ "checked": "2026-11-03"
1250
1677
  }
1251
1678
  ]
1252
1679
  }
@@ -2599,7 +2599,7 @@
2599
2599
  "ui.doc.browser.archives.permission": "{names}: jen přes prohlížeč člověka – se svolením „přes prohlížeč“ pro archiv uloží snímky agent sám",
2600
2600
  "ui.doc.browser.archives.ok": "{names}: snímky ukládá agent sám přes prohlížeč",
2601
2601
  "ui.doc.desktop": "prohlížeč desktopových aplikací",
2602
- "ui.doc.desktop.off": "vestavěný prohlížeč, náhled a computer use desktopových aplikací Claude a ChatGPT/Codex jsou ve výzkumu vypnuté – strom hlídá jen Claude in Chrome",
2602
+ "ui.doc.desktop.unwatched": "vestavěný prohlížeč, náhled a computer use desktopových aplikací Claude a ChatGPT/Codex strom nehlídá a nedoporučuje – hlídaný je jen Claude in Chrome",
2603
2603
  "ui.waiting.browser.agent": "S Claude Code a rozšířením Claude in Chrome by je agent uložil sám (prohlížeč agenta {agent} strom nehlídá).",
2604
2604
  "ui.waiting.browser.noext": "S rozšířením Claude in Chrome by je agent uložil sám: {url}",
2605
2605
  "ui.waiting.browser.permission": "Se svolením „přes prohlížeč“ pro {archive} je agent uloží sám.",
@@ -2599,7 +2599,7 @@
2599
2599
  "ui.doc.browser.archives.permission": "{names}: nur über den Browser eines Menschen – mit der Erlaubnis „über den Browser“ für das Archiv speichert der Agent die Bilder selbst",
2600
2600
  "ui.doc.browser.archives.ok": "{names}: der Agent speichert die Bilder selbst über den Browser",
2601
2601
  "ui.doc.desktop": "Browser der Desktop-Apps",
2602
- "ui.doc.desktop.off": "der eingebaute Browser, die Vorschau und Computer Use der Desktop-Apps Claude und ChatGPT/Codex bleiben in einer Forschung aus – strom überwacht nur Claude in Chrome",
2602
+ "ui.doc.desktop.unwatched": "den eingebauten Browser, die Vorschau und Computer Use der Desktop-Apps Claude und ChatGPT/Codex überwacht strom nicht und empfiehlt sie nicht – überwacht wird nur Claude in Chrome",
2603
2603
  "ui.waiting.browser.agent": "Mit Claude Code und der Erweiterung Claude in Chrome würde der Agent sie selbst speichern (den Browser von {agent} überwacht strom nicht).",
2604
2604
  "ui.waiting.browser.noext": "Mit der Erweiterung Claude in Chrome würde der Agent sie selbst speichern: {url}",
2605
2605
  "ui.waiting.browser.permission": "Mit der Erlaubnis „über den Browser“ für {archive} speichert der Agent sie selbst.",
@@ -2599,7 +2599,7 @@
2599
2599
  "ui.doc.browser.archives.permission": "{names}: tylko przez przeglądarkę człowieka – ze zgodą „przez przeglądarkę” dla archiwum agent zapisze skany sam",
2600
2600
  "ui.doc.browser.archives.ok": "{names}: agent zapisuje skany sam przez przeglądarkę",
2601
2601
  "ui.doc.desktop": "przeglądarka aplikacji desktopowych",
2602
- "ui.doc.desktop.off": "wbudowana przeglądarka, podgląd i computer use aplikacji desktopowych Claude i ChatGPT/Codex są w badaniu wyłączone – strom pilnuje tylko Claude in Chrome",
2602
+ "ui.doc.desktop.unwatched": "wbudowanej przeglądarki, podglądu i computer use aplikacji desktopowych Claude i ChatGPT/Codex strom nie pilnuje i nie poleca – pilnowany jest tylko Claude in Chrome",
2603
2603
  "ui.waiting.browser.agent": "Z Claude Code i rozszerzeniem Claude in Chrome agent zapisałby je sam (strom nie pilnuje przeglądarki agenta {agent}).",
2604
2604
  "ui.waiting.browser.noext": "Z rozszerzeniem Claude in Chrome agent zapisałby je sam: {url}",
2605
2605
  "ui.waiting.browser.permission": "Ze zgodą „przez przeglądarkę” dla {archive} agent zapisze je sam.",
@@ -17,8 +17,7 @@ import { configDir, ownCommand } from "../core/paths.js";
17
17
  import { oldSettingsDirs, packagedSettingsPattern } from "../core/oldsettings.js";
18
18
  import { within } from "../core/relocate.js";
19
19
  import { agentBrowser } from "../core/connector.js";
20
- import { CHROME_ALLOW, CHROME_DENY, CODEX_BROWSER_PLUGINS, CODEX_BROWSER_SERVERS, DESKTOP_BROWSER_DENY, chromeDomain } from "../core/browser.js";
21
- import { codexConfigFile } from "./effort.js";
20
+ import { CHROME_ALLOW, CHROME_DENY, chromeDomain } from "../core/browser.js";
22
21
  import { claudeScanReader, opencodeScanReader, SCAN_READER, scanReaderModel, treeReading } from "./scanreader.js";
23
22
  import { claudeWebHooks, grokWebHooks, webRuleLines } from "../core/web.js";
24
23
  import { claudeShellHooks, grokShellHook } from "../core/bridgeguard.js";
@@ -81,9 +80,12 @@ the researcher; \`strom\` is your only way to read and change the research.
81
80
  to page by going to the address (navigate), never clicking through a
82
81
  series of pages; a site strom refused or whose terms forbid automation
83
82
  never. Any other agent's browser or computer use (Codex's, Antigravity's,
84
- a browser's MCP) strom does not see: never to an archive only a
85
- person's browser goes to — the person saves its images by hand
86
- (\`strom task wait T… --images B…:<numbers> --on "…"\`); elsewhere
83
+ the desktop apps' own, a browser's MCP) strom does not see and does not
84
+ recommend: never of your own accord to an archive only a person's
85
+ browser goes to — the person saves its images by hand
86
+ (\`strom task wait T… --images B…:<numbers> --on "…"\`); only when the
87
+ person explicitly asks for one there, their choice: say in one sentence
88
+ that strom does not watch that way, and the archive's terms; elsewhere
87
89
  \`strom net web --check <url> --browser\` first. An image of such an
88
90
  archive the person allowed "through the browser", with no connector of
89
91
  it: one at a time, \`strom media save T… --image <n> --at <its page>\`
@@ -302,8 +304,6 @@ function treeRules(tree, agent) {
302
304
  // What the browser downloads is strom's to take over; the rest of the folder is the user's.
303
305
  `Read(${downloads}/**)`,
304
306
  ...(claude ? CHROME_DENY : []),
305
- // the desktop app's own browser and computer use: no hook of strom's before them (core/browser.ts)
306
- ...(claude ? DESKTOP_BROWSER_DENY : []),
307
307
  // With full permissions only the deny rules count: what the allow list kept away is kept away here.
308
308
  ...(settings.agentPermissions() === "full" ? BYPASS_DENY : []),
309
309
  ],
@@ -376,35 +376,39 @@ export function codexRules(tree) {
376
376
  }
377
377
  export const CODEX_RULES = path.join(".codex", "rules", "strom.rules");
378
378
  /**
379
- * Codex's settings for this tree (.codex/config.toml, read once the folder is trusted — also by the desktop app, which
380
- * takes no switch of strom's): the browser and computer use of its desktop app off in every session, a conversation
381
- * too (it keeps the user's other add-ons). A server of the user's config is switched off as it is; one it does not
382
- * name gets a command of its own, since a server without one stops Codex ("invalid transport"), and one given by an
383
- * address keeps it (a command beside it stops Codex too) — checked 2026-11-04 with codex-cli 0.155.1 and 0.164.
379
+ * Codex's settings for this tree (.codex/config.toml) as strom's sources wrote them for a while before 1.27.0 (never
380
+ * released): the browser and computer use of Codex's desktop app switched off. Nothing of them is switched off now
381
+ * (core/browser.ts): strom agents sync takes back only strom's lines — its header, and the sections of those servers and
382
+ * plugins with nothing in them but what strom wrote; a line of the person's stays, a file without strom's header is the
383
+ * person's alone.
384
384
  */
385
- export function codexConfig(tree) {
386
- let user = "";
387
- try {
388
- user = fs.readFileSync(codexConfigFile(tree.env), "utf8");
389
- }
390
- catch {
391
- // no config of the user's: every server gets its command
392
- }
393
- const byAddress = new Set();
394
- const sections = user.split(/^(?=\s*\[)/mu);
395
- for (const part of sections) {
396
- const m = /^\s*\[\s*mcp_servers\s*\.\s*(?:"([^"\n]+)"|'([^'\n]+)'|([A-Za-z0-9_-]+))\s*\]/u.exec(part);
397
- if (m && /^\s*url\s*=/mu.test(part))
398
- byAddress.add(m[1] ?? m[2] ?? m[3]);
385
+ const OLD_CODEX_HEADER = "# strom: generated (strom agents sync) — Codex's settings for this family tree; changed by strom only";
386
+ const OLD_CODEX_COMMENTS = [
387
+ OLD_CODEX_HEADER,
388
+ "# The browser and computer use of Codex's desktop app stay off in a research: strom keeps no watch before them,",
389
+ "# so an archive's terms, robots.txt and pace could not be kept there.",
390
+ ];
391
+ const OLD_CODEX_SECTIONS = new Set([
392
+ ...["node_repl", "cua_repl", "computer-use", "computer_use"].map((n) => `[mcp_servers.${n}]`),
393
+ ...["browser", "chrome", "computer-use", "unified-computer-use"].map((p) => `[plugins."${p}@openai-bundled"]`),
394
+ ]);
395
+ const OLD_CODEX_LINES = new Set(['command = "strom-off"', "enabled = false"]);
396
+ /** What is left of the old .codex/config.toml without strom's lines ("" nothing; undefined: no file of strom's). */
397
+ export function withoutOldCodexConfig(text) {
398
+ if (!text.startsWith(OLD_CODEX_HEADER))
399
+ return undefined;
400
+ const parts = text.split(/^(?=\s*\[)/mu);
401
+ const kept = [];
402
+ for (const part of parts) {
403
+ const lines = part.split(/\r?\n/u);
404
+ const head = lines[0].trim();
405
+ const theirs = lines.slice(1).filter((l) => l.trim() && !OLD_CODEX_LINES.has(l.trim()));
406
+ // strom's section: it goes; a comment of the person's below it stays
407
+ const mine = OLD_CODEX_SECTIONS.has(head) && theirs.every((l) => l.trimStart().startsWith("#")) ? theirs.map((l) => l + "\n") : undefined;
408
+ kept.push(mine ? mine.join("") : lines.filter((l) => !OLD_CODEX_COMMENTS.includes(l.trimEnd())).join("\n"));
399
409
  }
400
- return [
401
- "# strom: generated (strom agents sync) — Codex's settings for this family tree; changed by strom only",
402
- "# The browser and computer use of Codex's desktop app stay off in a research: strom keeps no watch before them,",
403
- "# so an archive's terms, robots.txt and pace could not be kept there.",
404
- ...CODEX_BROWSER_SERVERS.flatMap((n) => ["", `[mcp_servers.${n}]`, ...(byAddress.has(n) ? [] : ['command = "strom-off"']), "enabled = false"]),
405
- ...CODEX_BROWSER_PLUGINS.flatMap((n) => ["", `[plugins."${n}"]`, "enabled = false"]),
406
- "",
407
- ].join("\n");
410
+ const left = kept.join("").replace(/\n{3,}/gu, "\n\n").trim();
411
+ return left ? left + "\n" : "";
408
412
  }
409
413
  export const CODEX_CONFIG = path.join(".codex", "config.toml");
410
414
  /** Denied as well when the user lets the agent do everything else (agent.permissions full). */
@@ -512,6 +516,31 @@ function withUserPart(file, generated) {
512
516
  }
513
517
  return generated;
514
518
  }
519
+ /** The tree's old .codex/config.toml without strom's lines (withoutOldCodexConfig): the file changed, or gone when nothing is left. */
520
+ function dropOldCodexConfig(tree) {
521
+ const file = path.join(tree.root, CODEX_CONFIG);
522
+ let text;
523
+ try {
524
+ text = fs.readFileSync(file, "utf8");
525
+ }
526
+ catch {
527
+ return undefined;
528
+ }
529
+ const left = withoutOldCodexConfig(text);
530
+ if (left === undefined || left === text)
531
+ return undefined;
532
+ if (!tree.dryRun) {
533
+ if (left)
534
+ writeFileAtomic(file, left);
535
+ else {
536
+ fs.rmSync(file);
537
+ const dir = path.dirname(file);
538
+ if (fs.readdirSync(dir).length === 0)
539
+ fs.rmdirSync(dir);
540
+ }
541
+ }
542
+ return CODEX_CONFIG.split(path.sep).join("/");
543
+ }
515
544
  /** Nothing of strom's left in a JSON value. */
516
545
  const GONE = Symbol("gone");
517
546
  /**
@@ -559,8 +588,10 @@ function dropAgentFiles(tree) {
559
588
  [path.join(".grok", "rules", "strom.md"), GROK_RULES],
560
589
  [GROK_HOOKS, JSON.stringify(grokHooks(tree.root), null, 2) + "\n"],
561
590
  [CODEX_RULES, codexRules(tree)],
562
- [CODEX_CONFIG, codexConfig(tree)],
563
591
  ];
592
+ const codexOld = dropOldCodexConfig(tree);
593
+ if (codexOld)
594
+ gone.push(codexOld);
564
595
  for (const [rel, content] of generated) {
565
596
  const file = path.join(tree.root, rel);
566
597
  let text;
@@ -606,7 +637,7 @@ function dropAgentFiles(tree) {
606
637
  export const GROK_HOOKS = path.join(".grok", "hooks", "strom.json");
607
638
  /** Claude Code's subagent for reading scans, in the tree. */
608
639
  export const CLAUDE_SCAN_READER = path.join(".claude", "agents", `${SCAN_READER}.md`);
609
- export const AGENT_FILES = ["AGENTS.md", "CLAUDE.md", path.join(".claude", "settings.json"), CLAUDE_SCAN_READER, "opencode.json", path.join(".grok", "config.toml"), path.join(".grok", "rules", "strom.md"), GROK_HOOKS, CODEX_RULES, CODEX_CONFIG];
640
+ export const AGENT_FILES = ["AGENTS.md", "CLAUDE.md", path.join(".claude", "settings.json"), CLAUDE_SCAN_READER, "opencode.json", path.join(".grok", "config.toml"), path.join(".grok", "rules", "strom.md"), GROK_HOOKS, CODEX_RULES];
610
641
  /**
611
642
  * strom's files of the agents written for the tree (only what changed: the files written, to commit). `said.shim`: the
612
643
  * shim in .strom/bin was written now (never committed: not among the files).
@@ -642,7 +673,10 @@ export function syncAgentFiles(tree, said = {}) {
642
673
  write(path.join(".grok", "rules", "strom.md"), GROK_RULES);
643
674
  write(GROK_HOOKS, JSON.stringify(grokHooks(tree.root), null, 2) + "\n");
644
675
  write(CODEX_RULES, codexRules(tree));
645
- write(CODEX_CONFIG, codexConfig(tree));
676
+ // what strom wrote there before 1.27.0 left the desktop apps' browser on: taken back
677
+ const codexOld = dropOldCodexConfig(tree);
678
+ if (codexOld)
679
+ written.push(codexOld);
646
680
  // the strom the agent hooks name (the tree's .strom/bin, never committed) — there also for a conversation strom did not start
647
681
  if (!tree.dryRun) {
648
682
  try {
@@ -71,8 +71,10 @@ mentions strom, a family tree or the Strom app.
71
71
  check with \`strom net web --check <url>\` (a browser: \`--browser\`). A
72
72
  browser goes one page at a time at a person's pace, to each address
73
73
  directly, never clicking through a series of pages. An archive only a
74
- person's browser goes to: only Claude in Chrome (strom's hook before each
75
- page) — never another agent's browser or computer use; the person saves
74
+ person's browser goes to: strom's way is Claude in Chrome (strom's hook
75
+ before each page) — another agent's browser or computer use strom does not watch:
76
+ never of your own accord, only on the person's explicit request (said
77
+ once: strom does not watch it; the archive's terms); the person saves
76
78
  its images by hand (\`strom task wait … --images\`), or, allowed
77
79
  "through the browser", Claude in Chrome one at a time (\`strom media
78
80
  save\`).
@@ -944,7 +944,7 @@ export function browserRules(sites, alone, task) {
944
944
  return [
945
945
  "## The browser (Claude in Chrome)",
946
946
  `Its sites: ${named || "none yet"} — no other.`,
947
- "- The only browser strom keeps watch before: the browser, preview and computer use of Claude's and Codex's desktop apps are off in a research — never through them.",
947
+ "- The only browser strom watches. The browser, preview and computer use of Claude's and Codex's desktop apps strom does not watch and does not recommend: never of your own accord. Only when the person explicitly asks for them: the person's choice — say in one sentence that strom does not watch that way and what the site's terms say; never a way round them, never a check whether a person is there.",
948
948
  "- Use it without asking where a connector (strom fetch), WebFetch and WebSearch lead nowhere — never where they led nowhere because the site refused strom (401/403/429) or its terms forbid or restrict automation; images only through strom fetch.",
949
949
  "- As gently as strom fetch: the site's terms and robots.txt, its pace and hourly cap (strom connector show; else a page at a time, 2 s apart at least), only the pages the task needs, nothing ahead. A site that forbids automated access: never through the browser, never a way round.",
950
950
  `- A site that forbids automation, refused strom, or restricts it without the person's permission "through the browser" (strom net web --check <url> says it): no connector, no browser — another way to the same records (another archive or fonds of the jurisdiction, the parish, an index, secondary sources), the search recorded (strom search add … --result inconclusive --note "<host>: …"); only if the source stays necessary: strom task wait ${task ?? "T…"} --check <url> --on "<what the person checks there>"${alone ? ", then close the session" : ""}.`,
package/dist/cli/ui.js CHANGED
@@ -2449,7 +2449,7 @@ export const UI = {
2449
2449
  "ui.doc.browser.archives.permission": "{names}: only through a person's browser – with the permission “through the browser” for the archive the agent saves the images itself",
2450
2450
  "ui.doc.browser.archives.ok": "{names}: the agent saves the images itself through the browser",
2451
2451
  "ui.doc.desktop": "desktop apps' browser",
2452
- "ui.doc.desktop.off": "the built-in browser, preview and computer use of the Claude and ChatGPT/Codex desktop apps stay off in a research — strom watches only Claude in Chrome",
2452
+ "ui.doc.desktop.unwatched": "the built-in browser, preview and computer use of the Claude and ChatGPT/Codex desktop apps strom does not watch and does not recommend — only Claude in Chrome is watched",
2453
2453
  "ui.waiting.browser.agent": "With Claude Code and the Claude in Chrome extension the agent would save them itself (strom does not watch the browser of {agent}).",
2454
2454
  "ui.waiting.browser.noext": "With the Claude in Chrome extension the agent would save them itself: {url}",
2455
2455
  "ui.waiting.browser.permission": "With the permission “through the browser” for {archive} the agent saves them itself.",
@@ -77,12 +77,15 @@ HARD RULES
77
77
  — never clicking through a series of pages; strom's hook counts its
78
78
  navigate with your web fetches of the site. Any other agent's browser or
79
79
  computer use (Codex's, Antigravity's, the browser, preview and computer
80
- use of Claude's desktop app, a browser's MCP) strom does not see — those
81
- of Claude's and Codex's desktop apps stay off in a research: never
82
- to an archive only a person's browser goes to — the person saves its
83
- images by hand (strom task wait T… --images B…:<numbers>
84
- --on "…"). Claude in Chrome at such an archive the person allowed
85
- "through the browser": with its connector, strom fetch plans the images
80
+ use of Claude's and Codex's desktop apps, a browser's MCP) strom does
81
+ not see and does not recommend: never of your own accord to an archive
82
+ only a person's browser goes to — the person saves its images by hand
83
+ (strom task wait T… --images B…:<numbers> --on "…"). Only when the
84
+ person explicitly asks you to use one there: the person's choice — say
85
+ in one sentence that strom does not watch that way and what the
86
+ archive's terms say; never a way round them. Claude in Chrome at such
87
+ an archive the person allowed "through the browser": with its
88
+ connector, strom fetch plans the images
86
89
  (a viewer of the archive: the book's page opened once, never reloaded);
87
90
  with none, one image at a time — strom media save T… --image <n> --at
88
91
  <its page> gives the script for your tab, strom media add --inbox
@@ -6,7 +6,7 @@
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { register } from "../cli/registry.js";
9
- import { counted, lines, moreLine, paginate, runs, shellArg, table, truncate } from "../cli/format.js";
9
+ import { counted, lines, moreLine, paginate, runs, runsArg, shellArg, table, truncate } from "../cli/format.js";
10
10
  import { notFound, UsageError } from "../core/errors.js";
11
11
  import { makeNote } from "../core/actions.js";
12
12
  import { clipText, collectFiles, numberInName, coveringPart, inboxFolderFor, fileSha256, findImage, imageNumbers, imageOfRef, imageRange, IMAGE_FILE_EXT, inboxFolders, inputPath, isWhole, mimeOf, onlyParts, otherCopies, parseImageList, regionText, sharperCover, storeShared, wholeSizeOf } from "../core/media.js";
@@ -1187,10 +1187,17 @@ register({
1187
1187
  // an agent whose browser strom does not keep: never at an archive only a person's browser goes to
1188
1188
  if (runner && !browserKept(runner) && g.level?.browserOnly && (g.allow || g.why === "browser"))
1189
1189
  g = { ...g, allow: false, why: "browser", reason: withoutBrowserReason(g.level, g.level.title ?? g.host, t.id, bookOn(tree, t.id, g.host, u.href), otherWay(g.host, u.href, t.id)) };
1190
- if (!g.allow)
1191
- throw new UsageError(g.reason ?? `strom: not through the browser: ${u.href}`, { code: `browser.${g.why ?? "refused"}` });
1192
1190
  // what the script saves is an image of the archive: its images through the browser, as the person allowed
1193
1191
  const may = g.level ? allows(g.level, "images", "browser") : { ok: true };
1192
+ // its images by a person's hand only, and the task waits for images of this book already: nothing to tell it to
1193
+ // wait for — only that it waits (and the one image more it is to wait for, when this one is not among them yet)
1194
+ if (!g.allow && !may.ok && may.why === "manual" && w?.by === "images" && w.recordset === b.id) {
1195
+ const want = w.want ?? [];
1196
+ const more = want.includes(n) ? "" : ` Image ${n} too, only if the task needs it: strom task wait ${t.id} --images ${b.id}:${runsArg([...want, n])} --on "<the book, its link, which images — impersonal, in the research language>".`;
1197
+ throw new UsageError(`strom: ${g.level.title ?? g.host} — its images by a person's hand only, not through your browser: ${t.id} waits for images of ${b.id} saved by hand already${want.length ? ` (${runs(want)})` : ""}.${more} Go on with other work.`, { code: `browser.${g.why ?? "manual"}` });
1198
+ }
1199
+ if (!g.allow)
1200
+ throw new UsageError(g.reason ?? `strom: not through the browser: ${u.href}`, { code: `browser.${g.why ?? "refused"}` });
1194
1201
  if (!may.ok)
1195
1202
  throw new UsageError(may.why === "permission"
1196
1203
  ? `strom: the person has not allowed ${g.host} "through the browser" for its images (strom allow archive ${g.level.host} --way browser — the person's, never yours): ${t.id} stays for the person to save by hand`
@@ -509,10 +509,10 @@ function diagnoseInto(ctx, checks, t, add, progress) {
509
509
  else
510
510
  add("browser", "ok", t("ui.doc.browser.archives.ok", { names }));
511
511
  }
512
- // The desktop apps' own browser, preview and computer use (Claude's, ChatGPT's/Codex's): off in every session of a
513
- // research, said where those agents are here — strom keeps watch only before Claude in Chrome (core/browser.ts)
512
+ // The desktop apps' own browser, preview and computer use (Claude's, ChatGPT's/Codex's): nothing switched off, strom
513
+ // neither watches nor recommends them — said where those agents are here; it watches Claude in Chrome alone
514
514
  if ((found.includes("claude") || found.includes("codex")) && !ctx.archiveHere())
515
- add("desktop", "ok", t("ui.doc.desktop.off"));
515
+ add("desktop", "ok", t("ui.doc.desktop.unwatched"));
516
516
  // For a person: the shortcut on the desktop, the Strom app.
517
517
  const desktop = desktopDir(ctx.env);
518
518
  const shortcut = [`${shortcutName(lang)}.command`, `${shortcutName(lang)}.lnk`, `${shortcutName(lang)}.cmd`, "strom-research.desktop"].some((f) => fs.existsSync(path.join(desktop, f)));
@@ -37,7 +37,8 @@ register({
37
37
  "--check <url> --browser: the same for your browser (Claude in Chrome, another agent's browser): an archive only a\n" +
38
38
  "person's browser goes to opens to Claude in Chrome within its level and the person's permission \"through the\n" +
39
39
  "browser\", at a person's pace (about 10 s between pages unless the person set another, or its own slower one) —\n" +
40
- "never to another agent's browser or computer use (strom keeps no hook before them): the person saves its images.\n" +
40
+ "never of its own accord to another agent's browser or computer use (strom keeps no hook before them, recommends\n" +
41
+ "none; only the person's explicit request makes it the person's choice): the person saves its images.\n" +
41
42
  "An agent without strom's hook (Codex, OpenCode, Antigravity) runs it before its own web fetch of an archive's site\n" +
42
43
  "and keeps to its answer.\n" +
43
44
  "Claude in Chrome: the same hook runs before its navigate — counted, paced and refused with the web fetches of the\n" +
@@ -148,8 +149,9 @@ function checkUrl(ctx, url, browser = false) {
148
149
  const gateOf = browser ? browserGate : webGate;
149
150
  let g = gateOf({ env: ctx.env, ...(tree ? { tree } : {}), url: u.href, shared, ...(session?.task ? { task: session.task } : {}) });
150
151
  // an agent whose browser strom does not keep (no hook of strom's before a page): an archive only a person's browser
151
- // goes to never through its browser or computer use, whatever the person allowed — the person's hand (Milan's
152
- // decision, 4 November 2026)
152
+ // goes to not through its browser or computer use on strom's word, whatever the person allowed — the person's hand
153
+ // (Milan's decision, 4 November 2026); nothing is switched off: the person's explicit request is the person's choice
154
+ // (5 November 2026, ON_REQUEST)
153
155
  const runner = detectAgent(ctx.env);
154
156
  if (runner && !browserKept(runner) && g.level?.browserOnly && (g.allow || g.why === "browser")) {
155
157
  const book = bookOn(tree, session?.task, g.host, u.href);
@@ -46,30 +46,14 @@ export const CHROME_PAGE_TOOLS = ["computer", "find", "read_page", "get_page_tex
46
46
  export const CHROME_HOOK_MATCHER = `${CHROME_TOOL_PREFIX}(navigate|${CHROME_PAGE_TOOLS.join("|")})`;
47
47
  /** Never: a file of this computer uploaded to a web site, the user's own browser shortcuts, a batch the rules cannot see into. */
48
48
  export const CHROME_DENY = ["file_upload", "upload_image", "shortcuts_execute", "gif_creator", "browser_batch"].map((t) => `mcp__claude-in-chrome__${t}`);
49
- /**
50
- * Never in a research: the browser built into Claude's desktop app, its preview pane and its computer use — also
51
- * through a device linked to a session in the cloud — the tools that turn them on, and Claude in Chrome under the name
52
- * the desktop app may give it (Claude_in_Chrome; the same app also gives it as claude-in-chrome, the name strom keeps).
53
- * strom keeps no hook before them (its hook watches mcp__claude-in-chrome__ alone), so an archive's terms, robots.txt
54
- * and pace could not be kept there. A rule of a server's name alone covers each of its tools.
55
- */
56
- export const DESKTOP_BROWSER_DENY = [
57
- "mcp__Claude_Browser",
58
- "mcp__Claude_Preview",
59
- "mcp__Claude_in_Chrome",
60
- "mcp__computer-use",
61
- "mcp__remote-devices",
62
- "enable__mcp__remote-devices__Claude_Browser",
63
- "enable__mcp__remote-devices__computer",
64
- ];
65
49
  /**
66
50
  * Codex's browser and computer use: the MCP servers its desktop app (ChatGPT, Codex) adds — node_repl runs its in-app
67
- * browser and its Chrome extension, cua_repl (the plugin unified-computer-use) and computer-use its computer use — and
68
- * the bundled plugins that bring them. They run JavaScript a hook could not read an address from, so strom keeps no
69
- * watch before them: off in a research (agents/files.ts codexConfig, runners/codex.ts codexBrowserOff).
51
+ * browser and its Chrome extension, cua_repl (the plugin unified-computer-use) and computer-use its computer use. They
52
+ * run JavaScript a hook could not read an address from, so strom keeps no watch before them and recommends none of
53
+ * them; nothing of them is switched off in a research (the person's choice, Milan 5 November 2026) — only a run
54
+ * without the person's add-ons (agent.addons off) goes without them, as without the rest (runners/codex.ts).
70
55
  */
71
56
  export const CODEX_BROWSER_SERVERS = ["node_repl", "cua_repl", "computer-use", "computer_use"];
72
- export const CODEX_BROWSER_PLUGINS = ["browser", "chrome", "computer-use", "unified-computer-use"].map((p) => `${p}@openai-bundled`);
73
57
  /** The permission rule of Claude in Chrome for one site. */
74
58
  export const chromeDomain = (host) => `ClaudeInChromeDomain(${host.replace(/^\*\./, "").toLowerCase()})`;
75
59
  /** Claude in Chrome in the Chrome Web Store: the extension Claude Code's browser tools work through. */
@@ -11,7 +11,8 @@ import { claudeInChrome, CLAUDE_IN_CHROME_URL } from "./browser.js";
11
11
  /**
12
12
  * The agents whose browser strom keeps — its hook runs before each page and each tool on a page (count, pace, an
13
13
  * archive only a person's browser goes to, the bridge): Claude Code's Claude in Chrome. Any other agent's browser or
14
- * computer use goes unseen: never to such an archive.
14
+ * computer use goes unseen: strom does not recommend it — never of the agent's own accord to such an archive; only the
15
+ * person's explicit request makes it the person's choice (ON_REQUEST).
15
16
  */
16
17
  export const GUARDED_BROWSER_AGENTS = ["claude"];
17
18
  /** Whether strom keeps this agent's browser (its hooks before each page). */
@@ -84,13 +85,18 @@ export function agentBrowserAdvice(env, agent, a, task = "T…", book = "B…",
84
85
  const wait = withWait ? `: strom task wait ${task} --images ${book}:<numbers> --on "<the book, its link, which images — impersonal, in the research language>"` : "";
85
86
  const s = browserState(env, agent);
86
87
  if (s.state === "agent-without-browser")
87
- return `strom does not keep your browser or computer use (no hook of strom's before a page): never use them for ${a.title ?? a.host} — the person saves the images by hand${wait}. ${tellClaude}`;
88
+ return `strom does not keep your browser or computer use (no hook of strom's before a page) and does not recommend them: not of your own accord for ${a.title ?? a.host} — the person saves the images by hand${wait}. ${ON_REQUEST} ${tellClaude}`;
88
89
  if (s.state === "no-extension")
89
90
  return `the Claude in Chrome extension is in no browser here — the person saves the images by hand${wait}. Tell the user once: with the extension (${s.url}) and the permission "through the browser" the agent would save them itself.`;
90
91
  if (!a.permitted)
91
92
  return `your browser goes there only with the person's permission "through the browser" (strom allow archive ${a.host} --way browser — the person's, never yours); until then the person saves the images by hand${wait}.`;
92
93
  return `through your browser (Claude in Chrome), one image at a time at a person's pace: strom media save ${task} --image <n> --at <the archive's page of that image> gives the script that saves it in your tab, strom media add --inbox --waiting takes it; else the person saves them by hand${wait}.`;
93
94
  }
95
+ /**
96
+ * A browser or computer use strom does not keep, at an archive only a person's browser goes to: never of the agent's own
97
+ * accord — but nothing is switched off, and the person who asks for it explicitly chooses it (Milan, 5 November 2026).
98
+ */
99
+ export const ON_REQUEST = "Only if the person explicitly asks you to use them there: the person's choice — say in one sentence that strom does not watch that way and what the archive's terms say; never a way round them, never a check whether a person is there.";
94
100
  const tellClaude = "Tell the user once: with Claude Code and the Claude in Chrome extension the agent would save them itself (strom agents use claude).";
95
101
  /** Whether the agent's browser could ever fetch images of this archive (the person's "through the browser" would open it). */
96
102
  export function browserHelps(a) {
@@ -107,7 +113,7 @@ export function browserAdviceFor(env, agent, a, task, book) {
107
113
  if (!agent || !a.browserOnly)
108
114
  return undefined;
109
115
  if (!browserHelps(a))
110
- return browserKept(agent) ? undefined : "strom does not keep your browser or computer use: never use them there.";
116
+ return browserKept(agent) ? undefined : `strom does not keep your browser or computer use and does not recommend them: not of your own accord there. ${ON_REQUEST}`;
111
117
  return agentBrowserAdvice(env, agent, { host: a.host, ...(a.title ? { title: a.title } : {}), permitted: a.permission === "browser" }, task, book, false);
112
118
  }
113
119
  /**
@@ -115,7 +121,7 @@ export function browserAdviceFor(env, agent, a, task, book) {
115
121
  * fetch and its browser alike, whatever the person allowed: the person saves the images by hand.
116
122
  */
117
123
  export function withoutBrowserReason(a, name, task, book, otherWay) {
118
- return (`strom: ${name} lets automated tools in only through a person's browser, and strom does not keep your browser or computer use (no hook of strom's before a page): never use them for it, nor your web fetch. ` +
124
+ return (`strom: ${name} lets automated tools in only through a person's browser, and strom does not keep your browser or computer use (no hook of strom's before a page) and does not recommend them: not of your own accord for it, nor your web fetch. ${ON_REQUEST} ` +
119
125
  `The person saves what is needed by hand: strom task wait ${task ?? "T…"} --images ${book}:<numbers> --on "<the book, its link, which images — impersonal, in the research language>" (strom makes the inbox folder they go into; saved there, they bring the task back by themselves). ` +
120
126
  `${browserHelps(a) ? `${tellClaude} ` : ""}${otherWay}`);
121
127
  }
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.27.0-beta.2";
34
+ export const VERSION = "1.27.0-beta.3";
35
35
  const GITIGNORE = `# Strom Research — local state and large files are not versioned
36
36
  .strom/
37
37
  /media/
@@ -62,7 +62,7 @@ export const CODEX_CLEAN = ["-c", "features.plugins=false", "-c", "features.apps
62
62
  * its in-app browser and Chrome extension — and `computer-use`), off with the user's add-ons: strom keeps no hook before
63
63
  * them (an archive only a person's browser goes to stays the person's). Only those the config names: a server it does
64
64
  * not name, switched off on the command line, stops Codex ("invalid transport", checked with 0.155.1). Read only.
65
- * (A conversation, which keeps the user's add-ons, has them off by the tree's .codex/config.toml: agents/files.ts.)
65
+ * With the user's add-ons (a conversation, a run with agent.addons on) they stay as the user has them.
66
66
  */
67
67
  export function codexBrowserOff(env) {
68
68
  if (!env)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strom-research",
3
- "version": "1.27.0-beta.2",
3
+ "version": "1.27.0-beta.3",
4
4
  "description": "Genealogical research toolkit for AI coding agents",
5
5
  "type": "module",
6
6
  "stromLayout": 2,