<feed xmlns='http://www.w3.org/2005/Atom'>
<title>progmaweb, branch feature/product-catalog-like-apache</title>
<subtitle>The site and account service of Progmasoft: a Next.js frontend and an ASP.NET Core API.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/'/>
<entry>
<title>Merge branch 'main' into feature/product-catalog-like-apache</title>
<updated>2026-11-14T13:45:45+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-14T13:45:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=189d3c6d4fe99dc9c11bd4d45ef40ddc8b29e799'/>
<id>189d3c6d4fe99dc9c11bd4d45ef40ddc8b29e799</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #68 from Progmasoft/content/no-programming-languages</title>
<updated>2026-11-14T13:45:10+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-14T13:45:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=10ab93cd8afbcb775bef7d3c75ab054833a8fbf4'/>
<id>10ab93cd8afbcb775bef7d3c75ab054833a8fbf4</id>
<content type='text'>
Describe Progmasoft without programming languages and compilers</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Describe Progmasoft without programming languages and compilers</pre>
</div>
</content>
</entry>
<entry>
<title>Point product.progmasoft.com/robots.txt at its sitemap; drop unused text</title>
<updated>2026-11-14T13:44:19+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-14T13:44:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=800d828080426f781d374920c5623883844f80ca'/>
<id>800d828080426f781d374920c5623883844f80ca</id>
<content type='text'>
Review of this pull request:

- robots.txt on product.progmasoft.com named the apex sitemap; it names
  https://product.progmasoft.com/sitemap.xml now, as viget names its own.
- details and facts.links were translated in four languages but shown
  nowhere; they are gone.
- Stylelint (Codacy): one header comment block in catalog.css, no type
  qualifier on [aria-current], range notation in its media queries.

Codacy's "object injection" findings are left: every index is a key of a
typed, closed list (ProductSlug, categories, statuses), never input.
Playwright on a production build again: 56 page, language and width
combinations without overflow, console errors or CSP violations.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Review of this pull request:

- robots.txt on product.progmasoft.com named the apex sitemap; it names
  https://product.progmasoft.com/sitemap.xml now, as viget names its own.
- details and facts.links were translated in four languages but shown
  nowhere; they are gone.
- Stylelint (Codacy): one header comment block in catalog.css, no type
  qualifier on [aria-current], range notation in its media queries.

Codacy's "object injection" findings are left: every index is a key of a
typed, closed list (ProductSlug, categories, statuses), never input.
Playwright on a production build again: 56 page, language and width
combinations without overflow, console errors or CSP violations.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Describe Progmasoft without programming languages and compilers</title>
<updated>2026-11-14T13:33:47+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-14T13:33:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=638d81dc4d0cfe554ea952cae2f59ac70534976d'/>
<id>638d81dc4d0cfe554ea952cae2f59ac70534976d</id>
<content type='text'>
The footer of every page, the site description and the home page still
said that Progmasoft builds programming-language infrastructure,
languages and compilers. Since Tala and its tools are archived, they
describe what Progmasoft makes now, in all four languages:

- Footer: "Developer tools and data infrastructure built with durable
  contracts."
- Site and home description: build systems, testing tools, an agentic
  IDE and data infrastructure.
- Home hero: build systems, testing tools, agentic development
  environments, data infrastructure and the services around them.
- The area "Languages and compilers" becomes "Data infrastructure"
  (columnar in-memory formats and engines for large data on the JVM);
  "Developer tools" drops language servers for agentic development
  environments.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The footer of every page, the site description and the home page still
said that Progmasoft builds programming-language infrastructure,
languages and compilers. Since Tala and its tools are archived, they
describe what Progmasoft makes now, in all four languages:

- Footer: "Developer tools and data infrastructure built with durable
  contracts."
- Site and home description: build systems, testing tools, an agentic
  IDE and data infrastructure.
- Home hero: build systems, testing tools, agentic development
  environments, data infrastructure and the services around them.
- The area "Languages and compilers" becomes "Data infrastructure"
  (columnar in-memory formats and engines for large data on the JVM);
  "Developer tools" drops language servers for agentic development
  environments.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix what Playwright found at phone width; keep the header inside it</title>
<updated>2026-11-14T13:31:03+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-14T13:31:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=02b9cd891bdc5e2e2eb6ed4ffe6ef6272ff93b77'/>
<id>02b9cd891bdc5e2e2eb6ed4ffe6ef6272ff93b77</id>
<content type='text'>
Checked in Chromium through Playwright against a production build:
seven catalog pages, four languages, 1366 and 390 pixels wide, with the
console, CSP and horizontal overflow watched.

- The site header was 51 px wider than a 390 px phone on every host
  (progmasoft.com, account, viget and the catalog): the brand, the
  account button and the two preference controls did not fit. Below 480
  px the gaps shrink and the header may wrap to a second line; overflow
  is 0 on all of them now.
- .pm-catalog already named the dashed box of the home page, which
  framed the whole index; the index is .pm-index.
- Phone width: the four numbers sit two by two, the project column of
  the table keeps 200 px, and the index starts closer to the hero.
- A project's description goes into the hero, as before, instead of
  running into the heading of its list.

No console errors, no CSP violations, no overflow on any of the 56 page,
language and width combinations.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Checked in Chromium through Playwright against a production build:
seven catalog pages, four languages, 1366 and 390 pixels wide, with the
console, CSP and horizontal overflow watched.

- The site header was 51 px wider than a 390 px phone on every host
  (progmasoft.com, account, viget and the catalog): the brand, the
  account button and the two preference controls did not fit. Below 480
  px the gaps shrink and the header may wrap to a second line; overflow
  is 0 on all of them now.
- .pm-catalog already named the dashed box of the home page, which
  framed the whole index; the index is .pm-index.
- Phone width: the four numbers sit two by two, the project column of
  the table keeps 200 px, and the index starts closer to the hero.
- A project's description goes into the hero, as before, instead of
  running into the heading of its list.

No console errors, no CSP violations, no overflow on any of the 56 page,
language and width combinations.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Make product.progmasoft.com a catalog like projects.apache.org</title>
<updated>2026-11-14T13:21:48+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-14T13:21:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=fd5d1dfc8223dd660815ee7cca118507985ccc39'/>
<id>fd5d1dfc8223dd660815ee7cca118507985ccc39</id>
<content type='text'>
The catalog listed two products as cards. It now works as an index of
every Progmasoft project, in all four languages:

- The front page counts the projects (released, in development,
  languages), searches them by text, category, language and status with
  a plain GET form, so no script runs, and lists them in one table: name
  and tagline, category, language, status, latest release; then the
  latest releases.
- /categories and /languages group the projects; /releases lists the
  latest release of each, newest first, then those without one.
- A project page has a facts box as Apache's has: status, category,
  language, license, latest release, start date, site, repository and
  issues. A project in development heads its list "What it is being
  built to do" instead of "What it does".
- Agenceland, Archer and Etincelle join Tazel and Catch3, each marked in
  development; the archived Tala projects stay out of the catalog.
- product.progmasoft.com has a sitemap of its own: the views and every
  project page.

The data is in lib/products.ts (facts, search, releases) and the text in
lib/catalog-messages.ts; tsconfig allows .ts imports between lib files
so that node:test can load them. Tests: the five projects and their
facts, search by text, category, language and status, the query-string
parsing, and release order (42 pass); lint and tsc clean; every route
rendered by next dev with the product host, in de-DE, ru-RU and he-IL
(right to left) too.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The catalog listed two products as cards. It now works as an index of
every Progmasoft project, in all four languages:

- The front page counts the projects (released, in development,
  languages), searches them by text, category, language and status with
  a plain GET form, so no script runs, and lists them in one table: name
  and tagline, category, language, status, latest release; then the
  latest releases.
- /categories and /languages group the projects; /releases lists the
  latest release of each, newest first, then those without one.
- A project page has a facts box as Apache's has: status, category,
  language, license, latest release, start date, site, repository and
  issues. A project in development heads its list "What it is being
  built to do" instead of "What it does".
- Agenceland, Archer and Etincelle join Tazel and Catch3, each marked in
  development; the archived Tala projects stay out of the catalog.
- product.progmasoft.com has a sitemap of its own: the views and every
  project page.

The data is in lib/products.ts (facts, search, releases) and the text in
lib/catalog-messages.ts; tsconfig allows .ts imports between lib files
so that node:test can load them. Tests: the five projects and their
facts, search by text, category, language and status, the query-string
parsing, and release order (42 pass); lint and tsc clean; every route
rendered by next dev with the product host, in de-DE, ru-RU and he-IL
(right to left) too.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #63 from Progmasoft/renovate/github-actions</title>
<updated>2026-11-13T18:38:13+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-13T18:38:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=111afc7e7f37090835167eaad8e1ab49b64c0161'/>
<id>111afc7e7f37090835167eaad8e1ab49b64c0161</id>
<content type='text'>
Update GitHub Actions</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update GitHub Actions</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'main' into renovate/github-actions</title>
<updated>2026-11-13T17:36:16+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-13T17:36:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=81c7c1dbc31290f7a711450355cdde505315bebf'/>
<id>81c7c1dbc31290f7a711450355cdde505315bebf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #62 from Progmasoft/renovate/api-packages</title>
<updated>2026-11-13T17:36:03+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-13T17:36:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=8bc265a8a466acf90c755a659e92818b33480b60'/>
<id>8bc265a8a466acf90c755a659e92818b33480b60</id>
<content type='text'>
Update API packages</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update API packages</pre>
</div>
</content>
</entry>
<entry>
<title>Take the pnpm version from packageManager only</title>
<updated>2026-11-13T17:25:35+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-13T17:25:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=6e706d4da3c95e913c1946af1507f98d01356271'/>
<id>6e706d4da3c95e913c1946af1507f98d01356271</id>
<content type='text'>
pnpm/action-setup v5 stops when the workflow names a pnpm version and
package.json names another in packageManager. The workflows no longer
name one, so packageManager (pnpm 11.24.0) is the only source, as it is
for every developer using Corepack.

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>
pnpm/action-setup v5 stops when the workflow names a pnpm version and
package.json names another in packageManager. The workflows no longer
name one, so packageManager (pnpm 11.24.0) is the only source, as it is
for every developer using Corepack.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
