raw: fetch behind a login - raw login stores the user's session as a secret outside the tree, fetch.routes sends a host through it or to an external fetcher, a handler's render goes through the optional browser component (preflight --with browser) (#169); 10.0.0-beta.8
CI / verify (push) Successful in 8m8s
CI / pwsh (push) Successful in 2m40s
Release / release (push) Successful in 35s
Release / wiki-mirror (push) Skipped

Files changed:
- CHANGES.md
- INSTALL.md
- VERSION
- docs/how-to/README.md
- docs/how-to/fetch-pages-behind-a-login.md
- docs/how-to/ingest-a-source.md
- docs/reference/commands/README.md
- docs/reference/commands/instance-health.md
- docs/reference/commands/raw-material-and-uploads.md
- docs/reference/configuration.md
- docs/reference/exit-codes.md
- instructions/preflight.md
- instructions/wiki-ingest/SKILL.md
- raw/CONTRACT.md
- sites/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/browser.py
- tools/chemenu/cli_contract.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/raw/__init__.py
- tools/chemenu/commands/raw/fetch.py
- tools/chemenu/commands/raw/login.py
- tools/chemenu/config_shapes.py
- tools/chemenu/fetch_routes.py
- tools/chemenu/reference_doc.py
- tools/chemenu/settings.py
- tools/chemenu/sites/__init__.py
- tools/chemenu/sites/data.py
- tools/chemenu/sites/site.schema.json
- tools/chemenu/tests/test_cli.py
- tools/chemenu/tests/test_config_shapes.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_preflight.py
- tools/chemenu/tests/test_preflight_pwsh.py
- tools/chemenu/tests/test_raw_fetch_routes.py
- tools/chemenu/tests/test_raw_login.py
- tools/chemenu/tests/test_site_files.py
- tools/chemenu/web_capture.py
- tools/chemenu/web_session.py
- tools/preflight.ps1
- tools/preflight.sh
- tools/requirements-browser.txt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Opus 5.5 committed 2026-10-11 20:50:23 +02:00
1 parent aed846740b
commit 5994b2a88c
43 files changed
+2189 -75

No files matched your search

+11
View File
@@ -24,6 +24,11 @@ Windows. The two answer the same questions from the same list and write the same
`ABSENT` and is never a reason to stop, nor to install anything;
- creates `tools/.venv` from the recorded Python and installs `tools/requirements.txt` into it.
One more thing it does only when the user asks for it: `--with browser` installs the optional
browser component - `tools/requirements-browser.txt` and the Chromium it drives - into
`tools/.venv`. Only `raw login` and a page a site handler fetches through a browser need it. Once
installed, every later run keeps it up to date; nothing else ever installs it.
<!-- wikitool:toc -->
## Contents
@@ -148,6 +153,12 @@ It is safe to run at any time: a second run on a ready checkout changes nothing
- **The venv or its libraries could not be installed.** The output carries the last lines of
what Python or pip said. A network, proxy or security-product cause is for the user - or
whoever administers their machine - to resolve; do not retry with other flags.
- **A `wikitool` command names `--with browser`.** `raw login` or a rendered `raw fetch` needs the
optional browser component, and exits 42 saying so. Never pass `--with browser` yourself: it
downloads a browser onto the user's machine, which is the user's decision like any other
install. Show the output and wait; once the user has run it, a plain run of the preflight - yours
or theirs - keeps the component. A failure while installing it stops the preflight with exit 42
like any other, but leaves `.wikitool-tools.json` complete: every other command still runs.
- **`.wikitool-tools.json` looks wrong.** Never edit it. Run the preflight again, with `--set` for
a path the user names; `doctor` reports whether the result holds.
+9 -1
View File
@@ -124,6 +124,12 @@ validator complains - and the ticked list is the only record that they happened.
`robots.txt` forbids a subpage goes to the user as it is; never fetch the subpages one by one
instead.
**`raw fetch` exited 42 and names `raw login <host>` or `--with browser`?** The host is fetched
with the user's own session, and there is none or it has expired - or the page needs the
optional browser component. Show the output to the user verbatim and wait; nothing was
written. **Never run `raw login` yourself** - it opens a browser window and waits for a human -
and never install the component. Once the user says it is done, fetch again.
**Check that the text is the whole article.** A paywall, a login wall or a page that only
renders in a browser yields a teaser, often long enough to look like an article: the text
breaks off at "continue reading with...", a subscription offer or a login prompt. Stop there
@@ -136,7 +142,9 @@ validator complains - and the ticked list is the only record that they happened.
which derives the `.md` from that file without touching the network. It never overwrites, so
a teaser's `.md` still in `incoming/` under the same name makes it refuse: remove the teaser's
files first - they were never accepted, so nothing refers to them.
files first - they were never accepted, so nothing refers to them. For a website the user
reads often, mention the lasting way as well: fetching with their own session
(`docs/how-to/fetch-pages-behind-a-login.md`) - set up by the user, not by you.
**Check the size first, on both axes.** *Volume* - how many raw files this ingest covers -
and *breadth* - how many entities and concepts this one source would produce or update.