<feed xmlns='http://www.w3.org/2005/Atom'>
<title>website/Documents/OPERATIONS.md, branch main</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>Describe the Web Analytics exception in the architecture and runbook</title>
<updated>2026-11-06T06:30:09+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-06T06:30:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=7d1ef624fd8842acab54fce6373b4ad2bbb25eb9'/>
<id>7d1ef624fd8842acab54fce6373b4ad2bbb25eb9</id>
<content type='text'>
The four hosts of the site now allow Cloudflare's Web Analytics beacon,
but ARCHITECTURE.md and OPERATIONS.md still said the policy blocks every
script an intermediary adds. Both now name the beacon, where it loads
from and where it reports, and keep the forum placeholder's same-origin
policy apart.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The four hosts of the site now allow Cloudflare's Web Analytics beacon,
but ARCHITECTURE.md and OPERATIONS.md still said the policy blocks every
script an intermediary adds. Both now name the beacon, where it loads
from and where it reports, and keep the forum placeholder's same-origin
policy apart.
</pre>
</div>
</content>
</entry>
<entry>
<title>Check the tazel.tala.run redirect and describe it in the documents</title>
<updated>2026-11-06T04:58:09+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-06T04:58:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=1439b240a8231c5206e3c8d4f245493a076f2841'/>
<id>1439b240a8231c5206e3c8d4f245493a076f2841</id>
<content type='text'>
The integrity tests still expected tazel.tala.run to serve the Vue build
with its own robots.txt and sitemap.xml. They now count four app-shell
hosts and check the redirect itself: the two former pages go to their
pages under tazel.net/docs/reference/ with the query string, other docs
paths to tazel.net/docs, everything else to the same path, the /docs/
prefix is a plain one so the regular expression is reached, and HSTS
stays.

OPERATIONS.md and ARCHITECTURE.md list tazel.tala.run as a permanent
redirect instead of a documentation site.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The integrity tests still expected tazel.tala.run to serve the Vue build
with its own robots.txt and sitemap.xml. They now count four app-shell
hosts and check the redirect itself: the two former pages go to their
pages under tazel.net/docs/reference/ with the query string, other docs
paths to tazel.net/docs, everything else to the same path, the /docs/
prefix is a plain one so the regular expression is reached, and HSTS
stays.

OPERATIONS.md and ARCHITECTURE.md list tazel.tala.run as a permanent
redirect instead of a documentation site.
</pre>
</div>
</content>
</entry>
<entry>
<title>Answer unknown paths of the tala.run sites with 404</title>
<updated>2026-10-23T00:26:55+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-23T00:26:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=c2787446c019458d635a152e113dc0f265c31f52'/>
<id>c2787446c019458d635a152e113dc0f265c31f52</id>
<content type='text'>
Nginx sent every path that is not a file to index.html with 200, so
probes such as /wp-admin/install.php, xmlrpc.php and phpinfo.php were
answered as pages: scanners take that for a hit, and search engines
index soft 404s.

The three server blocks now fall back to @application, which serves
the app shell only for the routes of the application, / and
/docs/&lt;page&gt;, and answers every other path with 404. error_page keeps
index.html as the body of the 404, so a visitor still reaches the
landing page through the router.

A test reads the three sitemaps and requires every listed page to
match the accepted routes, and scanner paths, /docs and nested paths
not to; it also requires the same route rule in all three blocks.
OPERATIONS.md describes the expected 404s, and asks for
--no-same-owner, chown -R root:root and LF line endings when files are
copied from a developer machine: the 2026-10-18 release had left the
frontend owned by a Windows user ID.

Applied on the server with the owner's approval and verified: nginx -t
is clean; /, /docs/overview, talac /docs/command-line, tazel
/docs/commands, robots.txt and /api/v1/site answer 200;
/wp-admin/install.php, /no-such-page and /docs answer 404. npm test
passes, 45 tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nginx sent every path that is not a file to index.html with 200, so
probes such as /wp-admin/install.php, xmlrpc.php and phpinfo.php were
answered as pages: scanners take that for a hit, and search engines
index soft 404s.

The three server blocks now fall back to @application, which serves
the app shell only for the routes of the application, / and
/docs/&lt;page&gt;, and answers every other path with 404. error_page keeps
index.html as the body of the 404, so a visitor still reaches the
landing page through the router.

A test reads the three sitemaps and requires every listed page to
match the accepted routes, and scanner paths, /docs and nested paths
not to; it also requires the same route rule in all three blocks.
OPERATIONS.md describes the expected 404s, and asks for
--no-same-owner, chown -R root:root and LF line endings when files are
copied from a developer machine: the 2026-10-18 release had left the
frontend owned by a Windows user ID.

Applied on the server with the owner's approval and verified: nginx -t
is clean; /, /docs/overview, talac /docs/command-line, tazel
/docs/commands, robots.txt and /api/v1/site answer 200;
/wp-admin/install.php, /no-such-page and /docs answer 404. npm test
passes, 45 tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Document tala.run, the documentation hosts and the ASP.NET Core API</title>
<updated>2026-10-15T15:03:29+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-15T15:03:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=e0051b082ffce6e3cf066433980539c330d32181'/>
<id>e0051b082ffce6e3cf066433980539c330d32181</id>
<content type='text'>
- README, Architecture and Operations describe the three sites one
  build serves, their routes, the per-host sitemap and robots files,
  forum.tala.run, the permanent redirects of the former domain, and that
  tala.run has no ViGet host.
- The backend sections describe the ASP.NET Core 10 API: how to build,
  test, run and publish it, its lock files, and its place on the server
  in current/site-api beside the legacy process of Progmaweb.
- Development explains ?site=talac and ?site=tazel on a development host
  and lists the new test file; the release and rollback steps label
  current/site-api for SELinux as well.
- The development server proxies /api to port 5086, the port the API
  uses unless PORT says otherwise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- README, Architecture and Operations describe the three sites one
  build serves, their routes, the per-host sitemap and robots files,
  forum.tala.run, the permanent redirects of the former domain, and that
  tala.run has no ViGet host.
- The backend sections describe the ASP.NET Core 10 API: how to build,
  test, run and publish it, its lock files, and its place on the server
  in current/site-api beside the legacy process of Progmaweb.
- Development explains ?site=talac and ?site=tazel on a development host
  and lists the new test file; the release and rollback steps label
  current/site-api for SELinux as well.
- The development server proxies /api to port 5086, the port the API
  uses unless PORT says otherwise.
</pre>
</div>
</content>
</entry>
<entry>
<title>Call the language Tala in the API, the documents and the templates</title>
<updated>2026-10-12T03:16:43+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-12T03:16:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=1bb833c4b98f5cd7343ae7b227c0fc39ee44deca'/>
<id>1bb833c4b98f5cd7343ae7b227c0fc39ee44deca</id>
<content type='text'>
The pages were renamed; the rest of the repository still said Visual X#:
- the site API answered with the name Visual X#, and its test expected it;
- the documents, the issue and pull request templates, the support address
  and the name of the code scanning configuration.

The documents also said that a left-to-right mark follows the name of the
language in Hebrew text. That was for the `#` of the old name; the sentence
now speaks of names that end in a symbol, such as C#.

Not changed: host names, paths and unit names on the server, the name of the
backend artifact, the Kotlin package of the backend, and the keys of the
browser storage.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The pages were renamed; the rest of the repository still said Visual X#:
- the site API answered with the name Visual X#, and its test expected it;
- the documents, the issue and pull request templates, the support address
  and the name of the code scanning configuration.

The documents also said that a left-to-right mark follows the name of the
language in Hebrew text. That was for the `#` of the old name; the sentence
now speaks of names that end in a symbol, such as C#.

Not changed: host names, paths and unit names on the server, the name of the
backend artifact, the Kotlin package of the backend, and the keys of the
browser storage.
</pre>
</div>
</content>
</entry>
<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>Pin website dependencies and isolate Codecov credentials</title>
<updated>2026-09-27T22:10:53+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-27T22:10:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=252ca8eae71faf1e4e4d00dc7a0489998df12f04'/>
<id>252ca8eae71faf1e4e4d00dc7a0489998df12f04</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rebuild Visual XSharp language website with Vue and Kotlin Spring; add leopard identity, bilingual docs, forum placeholder, site-only API, strict CSP, 21 frontend tests, deployment runbooks, and preserve legacy ViGet redirect during maintenance</title>
<updated>2026-09-25T21:30:28+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-25T21:30:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/website/commit/?id=fdc9a91dec3433ebc3eae480cf6b57153d0972fb'/>
<id>fdc9a91dec3433ebc3eae480cf6b57153d0972fb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
