Commit Graph

10 Commits

Author SHA1 Message Date
dev 3c2fdc99fe web: key a translation by its crate, and drop the facade from the catalog
A translation was filed under the item name alone. The name is not
unique: `new` is used by fifty-nine crates and `kind` by fifteen, and
they do not all mean the same thing by it, so a name-only translation
could be shown against the wrong documentation. A translation is now
looked up by `crate::name` first, then by `Type::name` for two items
of one crate that share a name, and only then by the bare name.

The facade crate sits directly in `crates` and re-exports every layer.
It defines nothing of its own, so listing it repeated every item of the
layers under a second name. The generator skips it and the catalog
carries forty crates.

The first batch of Chinese translations is in, covering the foundation,
time, coordinate, geodesy, frames, Kepler, SGP4 and linear algebra
crates.
2026-10-01 23:44:55 +08:00
dev 1f59d817af web: read the formulas the documents already write, and take the crates from the manifest
The documents write their formulas as plain text in a fenced block,
`delta_v = v_e * ln (m_0 / m_f)`, which was shown as source. They were
written before the dollar form existed. A plain block holding equations
is now read as a formula: identifiers with subscripts and powers, roots,
functions, quotients, a group raised to a power, and a note set beside
the equation. A block that is not an equation, such as a matrix or a
worked example in prose, stays as it was written.

The interface catalog named fifteen crates in the generator, which was
written when only the foundation, physics and orbit crates existed. The
workspace has since grown to forty-one, and every network, radio and
operations crate was missing from the documentation without anything
saying so. The crates now come from the workspace manifest, so a crate
cannot be left out by omission again. The count went from 424 items to
1202, and the index now shows all seven layers.

A crate with no layer is the facade, which re-exports every layer. It is
left without one rather than filed under the foundation, and it is left
out of the crate structure diagram, where it would belong to no layer.
2026-10-01 23:24:56 +08:00
dev c812483f60 web: split the physics layer, render formulas, and fix the graph load
The graph took over three seconds to draw. The force layout ran four
hundred and twenty steps of repulsion between every pair of nodes, which
is quadratic in the node count and was doing that work through a reactive
proxy inside an effect that read the state it wrote, so it rescheduled
itself on every run. The repulsion now runs on a grid over neighbouring
cells, and the effect no longer tracks its own writes.

The physics layer covered two unrelated subjects, so it is presented as
two. Formulas are written between dollar signs and translated to MathML,
which the browser sets itself, so no script has to run. The palette is
now two sets of the same variables with a toggle between them, and below
a thousand pixels the sidebar is a drawer over the page.
2026-10-01 17:28:43 +08:00
dev 7b636803cf web: restore the layout variables, align the sidebar rows, and name the layers 2026-10-01 15:55:19 +08:00
dev e7b6a89a18 web: describe the field by layer and separate it from the implementation 2026-10-01 13:57:23 +08:00
dev 895c6d3a3a web: fix the outline anchors, level the outline, and fold the sidebar chapters 2026-10-01 11:00:09 +08:00
dev eb65230a44 web: align the interface layout and translate the remaining captions 2026-10-01 08:46:46 +08:00
dev ea1b2e6244 web: fix the tool form, the search box, the toc anchors, and translate the interface 2026-09-27 10:29:10 +08:00
dev 5b23d1ced8 web: add a bilingual interface with Chinese as the default 2026-09-27 09:13:52 +08:00
dev 8e9a777aca web: add the apsis-web service, content, and frontend 2026-09-27 00:53:20 +08:00