<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine/src/sisudoc/outputs/io_out, branch main</title>
<subtitle>SiSU Spine: document publishing and search (in D) 2015</subtitle>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/'/>
<entry>
<title>metadata page: reporting digests only provide link</title>
<updated>2026-10-01T14:00:42+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T21:01:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=7a6d7e3bc332230b5dff4962f10a5c6776b0c97b'/>
<id>7a6d7e3bc332230b5dff4962f10a5c6776b0c97b</id>
<content type='text'>
fix issue with reporting of multi-lingual document digests

Set as with the .ocda.db digest taken off this page on 2026-09-18,
and the same remedy: the page links &lt;doc&gt;.digests.txt, where each
digest is taken once, of the finished file, and quotes none itself.

single-language documents lose a line that was right, but for
multi-language documents the last language in the run was missing here,
and this cannot go wrong again.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix issue with reporting of multi-lingual document digests

Set as with the .ocda.db digest taken off this page on 2026-09-18,
and the same remedy: the page links &lt;doc&gt;.digests.txt, where each
digest is taken once, of the finished file, and quotes none itself.

single-language documents lose a line that was right, but for
multi-language documents the last language in the run was missing here,
and this cannot go wrong again.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>title is h1 class "heading title", sized above h1</title>
<updated>2026-10-01T14:00:42+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T20:55:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=b7da3f01212570daf9cc9678d7e46158514eb88b'/>
<id>b7da3f01212570daf9cc9678d7e46158514eb88b</id>
<content type='text'>
html &amp; epub (share css): with &lt;h0&gt; gone the title became &lt;h1&gt;. The title
now carries class "heading title", and each stylesheet's h0 rules are
h1.title rules with the same values; h0 leaves the grouped selectors,
being emitted by nothing. In html the title looks as it did.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
html &amp; epub (share css): with &lt;h0&gt; gone the title became &lt;h1&gt;. The title
now carries class "heading title", and each stylesheet's h0 rules are
h1.title rules with the same values; h0 leaves the grouped selectors,
being emitted by nothing. In html the title looks as it did.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>html &amp; epub header fixes, miscellany</title>
<updated>2026-10-01T14:00:40+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T20:42:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=98216e47ee51b43ac13660ebcfff91895b7e1519'/>
<id>98216e47ee51b43ac13660ebcfff91895b7e1519</id>
<content type='text'>
- adjust metadata, cleanup fixes
- no &lt;h0&gt; realign title on h1 along with bespoke css
- show group bullets

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- adjust metadata, cleanup fixes
- no &lt;h0&gt; realign title on h1 along with bespoke css
- show group bullets

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>abstraction 2.1: a poem states its object range</title>
<updated>2026-10-01T03:14:23+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T20:18:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=993a3f655359f98dc26d3d3222e07792e2ccddf7'/>
<id>993a3f655359f98dc26d3d3222e07792e2ccddf7</id>
<content type='text'>
- A poem is a container of verse, and stores its range of verse ocn,
  - its verse are the citable units with ocn.

- A note in the last verse of a poem previously was not gathered into
  the endnotes section, this now is fixed

Format 2.0 -&gt; 2.1: the property is an addition, the poem is not a
citable object (but contans a range of objects), its verse are
(individual citable objects), and every reader checks the major version.
A 2.0 database reads as having no ranges.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- A poem is a container of verse, and stores its range of verse ocn,
  - its verse are the citable units with ocn.

- A note in the last verse of a poem previously was not gathered into
  the endnotes section, this now is fixed

Format 2.0 -&gt; 2.1: the property is an addition, the poem is not a
citable object (but contans a range of objects), its verse are
(individual citable objects), and every reader checks the major version.
A 2.0 database reads as having no ranges.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>search database: show all included notes</title>
<updated>2026-10-01T02:34:17+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T18:57:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=71bb62a0b854e87926c39d6a91ef06993713457e'/>
<id>71bb62a0b854e87926c39d6a91ef06993713457e</id>
<content type='text'>
search database: show notes other than regular numbered (foot)notes.

make sure all types of notes for all object types set the objects
has.inline_notes_reg flag required for them to be rendered

search results' html (doc_objects.body) show notes only where an
object's has.inline_notes_reg flag is set, which occurred for numbered
notes only

- only numbered notes, regular footnotes were included
- and notes in some objects were omitted (quotes and verse)

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
search database: show notes other than regular numbered (foot)notes.

make sure all types of notes for all object types set the objects
has.inline_notes_reg flag required for them to be rendered

search results' html (doc_objects.body) show notes only where an
object's has.inline_notes_reg flag is set, which occurred for numbered
notes only

- only numbered notes, regular footnotes were included
- and notes in some objects were omitted (quotes and verse)

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>notes: editor's notes, ~[* ]~ &amp; ~[+ ]~, as series</title>
<updated>2026-10-01T02:31:56+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T18:32:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=36d0935c9a7521a87929d676a6b657fb033c44eb'/>
<id>36d0935c9a7521a87929d676a6b657fb033c44eb</id>
<content type='text'>
The markup documents ~[* note ]~ and ~[+ note ]~ as editor's notes, each
a separately numbered series, and a bare ~[ note ]~ which sisu put in
the asterisk series. They are included as notes. Each series is numbered
through the document, *1, *2 ... and +1, +2 ..., apart from the author's
notes.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The markup documents ~[* note ]~ and ~[+ note ]~ as editor's notes, each
a separately numbered series, and a bare ~[ note ]~ which sisu put in
the asterisk series. They are included as notes. Each series is numbered
through the document, *1, *2 ... and +1, +2 ..., apart from the author's
notes.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>markdown output, --markdown (--md)</title>
<updated>2026-09-28T17:12:20+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-28T15:43:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=af9f8677ff80287a0c83319258261d2368e14294'/>
<id>af9f8677ff80287a0c83319258261d2368e14294</id>
<content type='text'>
A plain-text output that keeps the object numbers, written as CommonMark
with GFM pipe tables, one .md per document-language in &lt;lang&gt;/markdown/,
(linked from the metadata page) with images into that shared directory
itself, skipping any already there, so --markdown alone still gives a complete tree.

provided as an alternative to --text rather than a replacement

--markdown  produces a document that renders, (both provide objext
  numbering survives both. Every object carries an anchor and a
  superscript number linking to itself, so a citation by object number
  is a link in any markdown renderer.
--text may still be of value to read in a terminal

A note is written where it is referenced, with a link back to the
object it came from, rather than gathered into an endnotes
section.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A plain-text output that keeps the object numbers, written as CommonMark
with GFM pipe tables, one .md per document-language in &lt;lang&gt;/markdown/,
(linked from the metadata page) with images into that shared directory
itself, skipping any already there, so --markdown alone still gives a complete tree.

provided as an alternative to --text rather than a replacement

--markdown  produces a document that renders, (both provide objext
  numbering survives both. Every object carries an anchor and a
  superscript number linking to itself, so a citation by object number
  is a link in any markdown renderer.
--text may still be of value to read in a terminal

A note is written where it is referenced, with a link back to the
object it came from, rather than gathered into an endnotes
section.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>typst output --typist &amp; --pdf that makes the pdf</title>
<updated>2026-09-28T17:07:41+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-28T00:40:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=b254c23c56a113bdcdb89f1f7917352baaa1cf0a'/>
<id>b254c23c56a113bdcdb89f1f7917352baaa1cf0a</id>
<content type='text'>
typst provides a new pdf build path replacing latex as the primary pdf
builder.
  --typst (--typ) writes the .typ;
  --pdf writes the .typ and compiles it by spawning `typst compile`.
    (--pdf is redefined, being typst to pdf rather than latex).
  --latex is unchanged and writes the .tex;

One .typ per document-language (not one per paper size). The paper and
the orientation are read from sys.inputs with a default, so the same
file compiles to every paper --set-papersize asks for, the pdfs keep
their original names.

Spine's paper names (derived from what suited latex) and typst's are
different vocabularies and are mapped; a paper typst does not have is
named and skipped.

With the flag --pdf spine invokes a typesetter to generate the pdf
output directly, which is new (the latex path writes a .tex and leaves
xelatex to the caller). If typst is not available on the machine it is
reported absent, naming the binary and printing the command, and the run
continues, the .typ is written.

Several useful features of an object-centric pdf are easily met, usually
being a few lines each.
- The object number goes in the margin as one `place` at a coordinate
  inside the object's own block, carrying the label every citation
  points at.
- A note is a real footnote at the point of reference, with the
  document's own number and one link back to the object.
- The table of contents locates by object number rather than by page, so
  it holds true across every paper and every setting.

That typst compiles silently across the sample set means every internal
link in every document resolves (--pdf over the collection with two
paper sizes gives 144 pdfs, none skipped and none failed, each the page
size its name claims and each tagged).

paths: .typ, pdf named in same way as .tex based built pdfs so site
linkage works either way

flake.nix: added a typst dev shell, for .typ pdf typesetter
- dsh-typst-pdf providing a pdf typsetter for spine's .typ.
- dsh-latex-pdf provides xelatex for .tex which can still be written.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
typst provides a new pdf build path replacing latex as the primary pdf
builder.
  --typst (--typ) writes the .typ;
  --pdf writes the .typ and compiles it by spawning `typst compile`.
    (--pdf is redefined, being typst to pdf rather than latex).
  --latex is unchanged and writes the .tex;

One .typ per document-language (not one per paper size). The paper and
the orientation are read from sys.inputs with a default, so the same
file compiles to every paper --set-papersize asks for, the pdfs keep
their original names.

Spine's paper names (derived from what suited latex) and typst's are
different vocabularies and are mapped; a paper typst does not have is
named and skipped.

With the flag --pdf spine invokes a typesetter to generate the pdf
output directly, which is new (the latex path writes a .tex and leaves
xelatex to the caller). If typst is not available on the machine it is
reported absent, naming the binary and printing the command, and the run
continues, the .typ is written.

Several useful features of an object-centric pdf are easily met, usually
being a few lines each.
- The object number goes in the margin as one `place` at a coordinate
  inside the object's own block, carrying the label every citation
  points at.
- A note is a real footnote at the point of reference, with the
  document's own number and one link back to the object.
- The table of contents locates by object number rather than by page, so
  it holds true across every paper and every setting.

That typst compiles silently across the sample set means every internal
link in every document resolves (--pdf over the collection with two
paper sizes gives 144 pdfs, none skipped and none failed, each the page
size its name claims and each tagged).

paths: .typ, pdf named in same way as .tex based built pdfs so site
linkage works either way

flake.nix: added a typst dev shell, for .typ pdf typesetter
- dsh-typst-pdf providing a pdf typsetter for spine's .typ.
- dsh-latex-pdf provides xelatex for .tex which can still be written.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>uid and paths separator "~" in place of ":"</title>
<updated>2026-09-23T12:19:53+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-23T11:18:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=26aba525c0c55cb0ec77cf3a788cb59de2683cee'/>
<id>26aba525c0c55cb0ec77cf3a788cb59de2683cee</id>
<content type='text'>
need a character to split filenames on in certain circumstances.
there problems with use of a colon in filenames, which is legal on posix
but not on Windows."~" fits the bill better being legal on every
filesystem of interest and is unreserved in rfc 3986, needing no escaping in a url.

The reference abstraction is renamed, its content unchanged. Over
the sample collection two filenames move and nothing else does: the
abstraction and database digests are identical, the archive's
members and their sizes are unchanged, and only the member order
shifts, "~" collating after letters where ":" sorted before them. The
document's epub dc:identifier is a v5 uuid derived from the uid, so it
changes for those filenames.

Every document's uid changes in the search database (spine.search.db).

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
need a character to split filenames on in certain circumstances.
there problems with use of a colon in filenames, which is legal on posix
but not on Windows."~" fits the bill better being legal on every
filesystem of interest and is unreserved in rfc 3986, needing no escaping in a url.

The reference abstraction is renamed, its content unchanged. Over
the sample collection two filenames move and nothing else does: the
abstraction and database digests are identical, the archive's
members and their sizes are unchanged, and only the member order
shifts, "~" collating after letters where ":" sorted before them. The
document's epub dc:identifier is a v5 uuid derived from the uid, so it
changes for those filenames.

Every document's uid changes in the search database (spine.search.db).

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>cleanup: misc. (previously deferred)</title>
<updated>2026-09-22T21:16:20+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-21T18:29:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-spine/commit/?id=9f93ed4ced8e7434b89e93b50c3464e34e4767fb'/>
<id>9f93ed4ced8e7434b89e93b50c3464e34e4767fb</id>
<content type='text'>
dr_document_make in three identifier spellings becomes document_make,
which is what the file has been called since the rename.

The mixin import audit, a template declares its imports at template
scope and they are then visible in every scope it is mixed into (which
is how a template-level split once hijacked a UFCS lookup in code that
had not been touched). Disabling htmlSnippet's imports and rebuilding
names the consumers that were relying on them rather than on their own:
across twelve mixin sites, exactly one. metadata.d now imports the `to`
it uses. The templates keep their imports, their own functions needing
them, and narrowing those is a change of its own rather than a cleanup.

And the standing FIX in source_pod.d: the insert digest line for a non
pod source recorded the insert's path, where every other line in
digests.txt is a filename and a digest naming a file that is not in
the pod under that name cannot be checked against it.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
dr_document_make in three identifier spellings becomes document_make,
which is what the file has been called since the rename.

The mixin import audit, a template declares its imports at template
scope and they are then visible in every scope it is mixed into (which
is how a template-level split once hijacked a UFCS lookup in code that
had not been touched). Disabling htmlSnippet's imports and rebuilding
names the consumers that were relying on them rather than on their own:
across twelve mixin sites, exactly one. metadata.d now imports the `to`
it uses. The templates keep their imports, their own functions needing
them, and narrowing those is a change of its own rather than a cleanup.

And the standing FIX in source_pod.d: the insert digest line for a non
pod source recorded the insert's path, where every other line in
digests.txt is a filename and a digest naming a file that is not in
the pod under that name cannot be checked against it.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
</feed>
