<feed xmlns='http://www.w3.org/2005/Atom'>
<title>website, branch docs/current-state</title>
<subtitle>The site of tala.run: a Vue frontend and an ASP.NET Core API.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/'/>
<entry>
<title>Bring the documentation up to the published site and fill its gaps</title>
<updated>2026-10-03T15:21:43+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T15:21:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=8738fc4e138745f2d065cf54c25426e3d37c119d'/>
<id>8738fc4e138745f2d065cf54c25426e3d37c119d</id>
<content type='text'>
The documents still described a site in maintenance with two languages and
a forum page with a language menu. They now describe what is published, and
three documents are new.

New, under Documents/:
- README.md: index of the documentation.
- ARCHITECTURE.md: the frontend, the backend and the forum page, what each
  serves, what the site deliberately does not contain, and how search
  engines and crawlers are treated.
- LOCALIZATION.md: the four languages, how a page picks one, what counts as
  a visitor's choice, how Hebrew text is laid out, where the text lives and
  how to add a language.
- DEVELOPMENT.md: requirements, the commands of each part, the dependency
  locks and checksums, the tests and what CI enforces.

Updated:
- README.md: the site is public; four languages and the browser-language
  default; a documentation section; the Dokka gate.
- CONTENT.md: the forum notice without a language menu; translation rules
  for four languages, including preferring the term a reader would use over
  a literal one; the crawler rules as an owner decision.
- OPERATIONS.md: the live route table; the release steps for the directory
  layout on the server, with the SELinux labelling order that caused an
  outage once; cache keys for the forum files and CDN caching; maintenance
  mode as a fallback instead of the current state; rollback by directory;
  checksum regeneration with --refresh-dependencies; the post-release check
  for four languages and right-to-left text.

No source file changes.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The documents still described a site in maintenance with two languages and
a forum page with a language menu. They now describe what is published, and
three documents are new.

New, under Documents/:
- README.md: index of the documentation.
- ARCHITECTURE.md: the frontend, the backend and the forum page, what each
  serves, what the site deliberately does not contain, and how search
  engines and crawlers are treated.
- LOCALIZATION.md: the four languages, how a page picks one, what counts as
  a visitor's choice, how Hebrew text is laid out, where the text lives and
  how to add a language.
- DEVELOPMENT.md: requirements, the commands of each part, the dependency
  locks and checksums, the tests and what CI enforces.

Updated:
- README.md: the site is public; four languages and the browser-language
  default; a documentation section; the Dokka gate.
- CONTENT.md: the forum notice without a language menu; translation rules
  for four languages, including preferring the term a reader would use over
  a literal one; the crawler rules as an owner decision.
- OPERATIONS.md: the live route table; the release steps for the directory
  layout on the server, with the SELinux labelling order that caused an
  outage once; cache keys for the forum files and CDN caching; maintenance
  mode as a fallback instead of the current state; rollback by directory;
  checksum regeneration with --refresh-dependencies; the post-release check
  for four languages and right-to-left text.

No source file changes.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13 from Progmasoft/chore/ai-crawler-rules</title>
<updated>2026-10-03T14:35:35+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-03T14:35:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=710dc90b0503cd1de1ae6159e01fb22d1b336aba'/>
<id>710dc90b0503cd1de1ae6159e01fb22d1b336aba</id>
<content type='text'>
Change which AI crawlers may read the site</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change which AI crawlers may read the site</pre>
</div>
</content>
</entry>
<entry>
<title>Change which AI crawlers may read the site</title>
<updated>2026-10-03T13:34:06+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T13:34:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=befe7555f6b39b384f5d31b502d7f43760338228'/>
<id>befe7555f6b39b384f5d31b502d7f43760338228</id>
<content type='text'>
- Google-Extended, Google's token for model training, is now allowed.
- GPTBot, OpenAI's training crawler, is now disallowed. OAI-SearchBot and
  ChatGPT-User, which index and fetch pages for answers, stay allowed.
- ClaudeBot, Anthropic's training crawler, is now allowed, next to
  Claude-SearchBot and Claude-User, which already were.

Every other rule is unchanged.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Google-Extended, Google's token for model training, is now allowed.
- GPTBot, OpenAI's training crawler, is now disallowed. OAI-SearchBot and
  ChatGPT-User, which index and fetch pages for answers, stay allowed.
- ClaudeBot, Anthropic's training crawler, is now allowed, next to
  Claude-SearchBot and Claude-User, which already were.

Every other rule is unchanged.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #12 from Progmasoft/feature/hebrew-locale</title>
<updated>2026-10-03T12:41:34+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-03T12:41:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=721049419bea10c07ca8a4f3b206908c6b673d49'/>
<id>721049419bea10c07ca8a4f3b206908c6b673d49</id>
<content type='text'>
Add Hebrew, follow the browser language, and gate the backend docs</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add Hebrew, follow the browser language, and gate the backend docs</pre>
</div>
</content>
</entry>
<entry>
<title>Record the checksums the Dokka plugin classpath needs on a clean machine</title>
<updated>2026-10-03T10:44:56+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T10:44:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=35d4b930ceea4353650be59372dcfe9ce0972788'/>
<id>35d4b930ceea4353650be59372dcfe9ce0972788</id>
<content type='text'>
The backend job failed dependency verification for three metadata files of
the build script classpath: jackson-base 2.15.3 and junit-bom 5.9.2. The
verification metadata had been written from a warm local cache, where
Gradle did not download those files again and so did not record them.

The metadata is regenerated with --refresh-dependencies, which resolves
everything as a clean machine does. Only the missing entries are added.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The backend job failed dependency verification for three metadata files of
the build script classpath: jackson-base 2.15.3 and junit-bom 5.9.2. The
verification metadata had been written from a warm local cache, where
Gradle did not download those files again and so did not record them.

The metadata is regenerated with --refresh-dependencies, which resolves
everything as a clean machine does. Only the missing entries are added.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revise the Hebrew wording and remember only a visitor's language choice</title>
<updated>2026-10-03T10:38:38+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T10:38:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=ed7f6e57d50765728e7d0513aaf956ec667ddc98'/>
<id>ed7f6e57d50765728e7d0513aaf956ec667ddc98</id>
<content type='text'>
Hebrew

A second pass over the Hebrew text replaced words a Hebrew reader would
misread or that are not used for the concept: "native" was rendered with the
word for "local", "lowering" with the word for "download", "pipeline" with a
literal pipe and "front end" with a word not used for compilers. Typed
forms, diagnostics, the ecosystem and the standard library use the usual
terms. The text is still not reviewed by a native speaker.

Language choice

A language change is now stored only after the visitor has acted on the
page, as reported by navigator.userActivation. A change that reaches the
page before anyone has clicked, tapped or typed still changes the language
but is not remembered, so only a person can make a choice. A browser without
the activation API keeps the earlier behaviour.

During local testing a choice was once found stored without one being made.
It could not be reproduced in three attempts, and restoring form state was
shown not to fire a change event, so the cause is unknown; this guard closes
the path in the page itself.

Verified locally: frontend tests, type check, prettier and build. In a
browser, a scripted change before any interaction switched the language and
stored nothing, and a change after a real click was stored and survived a
navigation. The forum page was opened in a browser: one notice, no language
menu, English for a Turkish browser, and the Hebrew, German and Russian
notices when the script ran with those browser languages.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hebrew

A second pass over the Hebrew text replaced words a Hebrew reader would
misread or that are not used for the concept: "native" was rendered with the
word for "local", "lowering" with the word for "download", "pipeline" with a
literal pipe and "front end" with a word not used for compilers. Typed
forms, diagnostics, the ecosystem and the standard library use the usual
terms. The text is still not reviewed by a native speaker.

Language choice

A language change is now stored only after the visitor has acted on the
page, as reported by navigator.userActivation. A change that reaches the
page before anyone has clicked, tapped or typed still changes the language
but is not remembered, so only a person can make a choice. A browser without
the activation API keeps the earlier behaviour.

During local testing a choice was once found stored without one being made.
It could not be reproduced in three attempts, and restoring form state was
shown not to fire a change event, so the cause is unknown; this guard closes
the path in the page itself.

Verified locally: frontend tests, type check, prettier and build. In a
browser, a scripted change before any interaction switched the language and
stored nothing, and a change after a real click was stored and survived a
navigation. The forum page was opened in a browser: one notice, no language
menu, English for a Turkish browser, and the Hebrew, German and Russian
notices when the script ran with those browser languages.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Hebrew, follow the browser language, and gate the backend docs</title>
<updated>2026-10-03T10:00:49+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T10:00:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=3173a6a2bfe1975542c8c9cc0707071daa55b587'/>
<id>3173a6a2bfe1975542c8c9cc0707071daa55b587</id>
<content type='text'>
Language

Hebrew (he-IL) joins English, German and Russian on the language site, in
the page metadata and in the list the backend reports.

A visitor who has not chosen a language now starts in the language of their
browser: the first preferred language that is published, compared by primary
language, with `iw` accepted as the former code for Hebrew. A browser that
prefers no published language gets en-US. A choice made in the menu is kept
under a new storage key and always wins. The earlier key was written on every
visit, so it could not tell a choice from the former English default; it is
no longer read, which resets an earlier explicit choice once.

Hebrew does not mirror the page. The layout, the navigation and code keep
their left-to-right arrangement; only text follows the language. The onward
arrow points left in Hebrew, and a left-to-right mark keeps "Visual X#"
intact inside right-to-left text.

The forum placeholder no longer has a language menu. It shows its one notice
in the language of the browser, with English as the fallback, and stores no
language. Its assets get a new cache key.

The single documentation column may now shrink below its widest code line.
Before, a long command widened the page on narrow screens, which cut
right-aligned text off.

The Hebrew text was not reviewed by a native speaker.

Documentation gate

The backend applies Dokka 2.2.0 with reportUndocumented and failOnWarning,
its public declarations have KDoc, and CI runs dokkaGenerate. The dependency
lock file and the verification metadata include the new artifacts.

Verified locally: frontend tests, type check, prettier and build; backend
test, bootJar and dokkaGenerate, which was also shown to fail on an
undocumented declaration; the Hebrew pages in a browser. The forum page was
exercised by its tests only.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Language

Hebrew (he-IL) joins English, German and Russian on the language site, in
the page metadata and in the list the backend reports.

A visitor who has not chosen a language now starts in the language of their
browser: the first preferred language that is published, compared by primary
language, with `iw` accepted as the former code for Hebrew. A browser that
prefers no published language gets en-US. A choice made in the menu is kept
under a new storage key and always wins. The earlier key was written on every
visit, so it could not tell a choice from the former English default; it is
no longer read, which resets an earlier explicit choice once.

Hebrew does not mirror the page. The layout, the navigation and code keep
their left-to-right arrangement; only text follows the language. The onward
arrow points left in Hebrew, and a left-to-right mark keeps "Visual X#"
intact inside right-to-left text.

The forum placeholder no longer has a language menu. It shows its one notice
in the language of the browser, with English as the fallback, and stores no
language. Its assets get a new cache key.

The single documentation column may now shrink below its widest code line.
Before, a long command widened the page on narrow screens, which cut
right-aligned text off.

The Hebrew text was not reviewed by a native speaker.

Documentation gate

The backend applies Dokka 2.2.0 with reportUndocumented and failOnWarning,
its public declarations have KDoc, and CI runs dokkaGenerate. The dependency
lock file and the verification metadata include the new artifacts.

Verified locally: frontend tests, type check, prettier and build; backend
test, bootJar and dokkaGenerate, which was also shown to fail on an
undocumented declaration; the Hebrew pages in a browser. The forum page was
exercised by its tests only.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #11 from Progmasoft/fix/forum-asset-cache-key</title>
<updated>2026-10-03T03:14:22+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-03T03:14:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=3bb41fe5c59dcf25edfd868e0d6eca67e4a6e504'/>
<id>3bb41fe5c59dcf25edfd868e0d6eca67e4a6e504</id>
<content type='text'>
Give the forum assets a cache key</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Give the forum assets a cache key</pre>
</div>
</content>
</entry>
<entry>
<title>Give the forum assets a cache key</title>
<updated>2026-10-03T03:10:13+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-03T03:10:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=c053e6a6932219cbe345d5ff47dcdf0da32559cf'/>
<id>c053e6a6932219cbe345d5ff47dcdf0da32559cf</id>
<content type='text'>
The edge cache can keep an error response for a static asset for hours. It
did so for the forum script while the files were being replaced. The forum
page now requests its stylesheet and script with a version query; Nginx
serves the same file path, and a new value gives the edge a fresh key.
The integrity test accepts the versioned references.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The edge cache can keep an error response for a static asset for hours. It
did so for the forum script while the files were being replaced. The forum
page now requests its stylesheet and script with a version query; Nginx
serves the same file path, and a new value gives the edge a fresh key.
The integrity test accepts the versioned references.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #10 from Progmasoft/feature/russian-locale</title>
<updated>2026-10-03T02:59:27+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-03T02:59:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=2803ded0dff517e51b874dfbbfae76018a05ad8a'/>
<id>2803ded0dff517e51b874dfbbfae76018a05ad8a</id>
<content type='text'>
Add Russian to the language site and the forum placeholder</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add Russian to the language site and the forum placeholder</pre>
</div>
</content>
</entry>
</feed>
