<feed xmlns='http://www.w3.org/2005/Atom'>
<title>progmaweb/.github, branch content/no-programming-languages</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 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>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>
<entry>
<title>Lead the old Tala catalog addresses to the language list</title>
<updated>2026-11-12T23:01:41+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-12T23:01:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=61a2045ee9264e794e4ddf11d7b8b9fdf4109bd3'/>
<id>61a2045ee9264e794e4ddf11d7b8b9fdf4109bd3</id>
<content type='text'>
/langs/tala and everything below it, which tala.run and earlier links
still point to, now redirect permanently to the language list of the
ViGet home page, like /langs, instead of answering 404. The README, the
architecture guide and the bug-report template name the C, C++ and
Objective-C catalogs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
/langs/tala and everything below it, which tala.run and earlier links
still point to, now redirect permanently to the language list of the
ViGet home page, like /langs, instead of answering 404. The README, the
architecture guide and the bug-report template name the C, C++ and
Objective-C catalogs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update GitHub Actions</title>
<updated>2026-11-12T20:43:14+00:00</updated>
<author>
<name>renovate[bot]</name>
</author>
<published>2026-11-12T20:43:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=2f852a2487be5e61989daaca59afa287bbd2728c'/>
<id>2f852a2487be5e61989daaca59afa287bbd2728c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rate-limit sign-in by visitor behind Cloudflare and stop forwarding h2c</title>
<updated>2026-11-08T21:38:47+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-08T21:38:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=66f3cc196a9b91d471a90e021b12630100181c4a'/>
<id>66f3cc196a9b91d471a90e021b12630100181c4a</id>
<content type='text'>
Cloudflare proxies the Progmasoft hosts, so Nginx saw a Cloudflare edge as
its peer and appended that edge to X-Forwarded-For. The API takes the last
hop as the client, so the account-auth limit (12 attempts in 3 minutes) was
counted per edge: 38 failed sign-ins from one address in a row were all
answered with 401, none with 429, and unrelated visitors behind one edge
shared a bucket.

- ops/nginx/cloudflare-real-ip.conf trusts CF-Connecting-IP only from the
  published Cloudflare ranges; a direct peer keeps its own address, so the
  header cannot be forged around Cloudflare. With it installed the 13th
  failed sign-in gets 429, a forged X-Forwarded-For changes nothing, and
  another address is not affected.
- Every proxied location forwarded the client's Upgrade header with
  "Connection: upgrade" on each request. Only a WebSocket upgrade is now
  forwarded; other requests carry no Upgrade and an empty Connection.
- c8 reached glob 13 (GHSA-3g3m-2fjr-6pw4) and minimatch 10
  (GHSA-g3hv-75wg-m249) through test-exclude; both are overridden to the
  fixed majors. pnpm audit reports nothing, coverage, lint and check pass.
- The CodeQL action pins carry their exact version comment (v4.38.2).
- ops/README.md describes the address handling and no longer names a
  script that left the repository with AI Support.

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>
Cloudflare proxies the Progmasoft hosts, so Nginx saw a Cloudflare edge as
its peer and appended that edge to X-Forwarded-For. The API takes the last
hop as the client, so the account-auth limit (12 attempts in 3 minutes) was
counted per edge: 38 failed sign-ins from one address in a row were all
answered with 401, none with 429, and unrelated visitors behind one edge
shared a bucket.

- ops/nginx/cloudflare-real-ip.conf trusts CF-Connecting-IP only from the
  published Cloudflare ranges; a direct peer keeps its own address, so the
  header cannot be forged around Cloudflare. With it installed the 13th
  failed sign-in gets 429, a forged X-Forwarded-For changes nothing, and
  another address is not affected.
- Every proxied location forwarded the client's Upgrade header with
  "Connection: upgrade" on each request. Only a WebSocket upgrade is now
  forwarded; other requests carry no Upgrade and an empty Connection.
- c8 reached glob 13 (GHSA-3g3m-2fjr-6pw4) and minimatch 10
  (GHSA-g3hv-75wg-m249) through test-exclude; both are overridden to the
  fixed majors. pnpm audit reports nothing, coverage, lint and check pass.
- The CodeQL action pins carry their exact version comment (v4.38.2).
- ops/README.md describes the address handling and no longer names a
  script that left the repository with AI Support.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Return a failed Google callback to sign-in and correct stale statements</title>
<updated>2026-10-16T03:00:57+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-16T03:00:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=bc653270652c1ab44d2144ddd17ae49b404e7cd2'/>
<id>bc653270652c1ab44d2144ddd17ae49b404e7cd2</id>
<content type='text'>
A Google callback that could not finish ended in an unhandled 500: a
visitor who declined on Google's consent screen, a callback whose state
cookie had expired, and a direct request to the callback path all got an
empty error page. The account API document already promised a redirect
to /login?google=failed for a failed callback; the handler of the Google
scheme now does that through OnRemoteFailure. Three new tests cover a
callback without state, a declined consent and a forged state.

Three statements no longer matched the sites:

- the bug report template still named the catalog paths without the
  language and the build system; they are /langs/tala/&lt;Publisher&gt;/&lt;Name&gt;/
  and /dslplugins/tazel/&lt;Publisher&gt;/&lt;Name&gt;/;
- the operations guide placed Tala content on xsharp-lang.xyz, which only
  redirects to tala.run now;
- the architecture guide described the ViGet routing before the catalogs
  per language and build system: it now gives the rewrites of /langs/tala
  and /dslplugins/tazel, the redirects of /langs and /dslplugins, three
  indexed ViGet pages and a sitemap with the home page and both catalogs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A Google callback that could not finish ended in an unhandled 500: a
visitor who declined on Google's consent screen, a callback whose state
cookie had expired, and a direct request to the callback path all got an
empty error page. The account API document already promised a redirect
to /login?google=failed for a failed callback; the handler of the Google
scheme now does that through OnRemoteFailure. Three new tests cover a
callback without state, a declined consent and a forged state.

Three statements no longer matched the sites:

- the bug report template still named the catalog paths without the
  language and the build system; they are /langs/tala/&lt;Publisher&gt;/&lt;Name&gt;/
  and /dslplugins/tazel/&lt;Publisher&gt;/&lt;Name&gt;/;
- the operations guide placed Tala content on xsharp-lang.xyz, which only
  redirects to tala.run now;
- the architecture guide described the ViGet routing before the catalogs
  per language and build system: it now gives the rewrites of /langs/tala
  and /dslplugins/tazel, the redirects of /langs and /dslplugins, three
  indexed ViGet pages and a sitemap with the home page and both catalogs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Call the language Tala on the Progmasoft and ViGet pages</title>
<updated>2026-10-12T03:19:10+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-12T03:19:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=b71e93b547e9f6425cc83b121f01e7d82b88079f'/>
<id>b71e93b547e9f6425cc83b121f01e7d82b88079f</id>
<content type='text'>
The language Visual X# is now Tala. The Progmasoft home page, the ViGet
pages, the dashboard and the two footers name it so in the four languages of
the site; the project file is BUILD.kts, and the source link leads to
Progmasoft/tala. The README, the operations and localization documents and
the issue templates follow.

The localization document 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.

The links to xsharp-lang.xyz stay: the language site is still served there.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The language Visual X# is now Tala. The Progmasoft home page, the ViGet
pages, the dashboard and the two footers name it so in the four languages of
the site; the project file is BUILD.kts, and the source link leads to
Progmasoft/tala. The README, the operations and localization documents and
the issue templates follow.

The localization document 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.

The links to xsharp-lang.xyz stay: the language site is still served there.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge main into the Renovate branch</title>
<updated>2026-10-10T20:16:50+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T20:16:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=107a257bb5313828ca5a36e4f1c2963dfb24b294'/>
<id>107a257bb5313828ca5a36e4f1c2963dfb24b294</id>
<content type='text'>
main gained the workflow analysis change, which adds a line to the
checkout step right above the action whose version comment this branch
corrects. Both changes are kept: the checkout does not persist its
credentials, and the comment names v4.9.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
main gained the workflow analysis change, which adds a line to the
checkout step right above the action whose version comment this branch
corrects. Both changes are kept: the checkout does not persist its
credentials, and the comment names v4.9.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Name the pinned version of the dependency review action</title>
<updated>2026-10-10T19:35:08+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T19:35:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=65f4b4f309958def71b9b8956c06d0d55b75e700'/>
<id>65f4b4f309958def71b9b8956c06d0d55b75e700</id>
<content type='text'>
The action is pinned to the commit of v4.9.0, and the comment beside
the pin said v4. Renovate reads the comment as the version in use and
looked for a tag named v5 to update to; the action has v5.0.0 and no
v5, so the lookup failed and Renovate warned about it. The comment now
names the version the commit is.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The action is pinned to the commit of v4.9.0, and the comment beside
the pin said v4. Renovate reads the comment as the version in use and
looked for a tag named v5 to update to; the action has v5.0.0 and no
v5, so the lookup failed and Renovate warned about it. The comment now
names the version the commit is.
</pre>
</div>
</content>
</entry>
<entry>
<title>Hand version updates to Renovate</title>
<updated>2026-10-10T19:30:30+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T19:30:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=7d874044576d6a10c3a6cbec44e70231ddfbada5'/>
<id>7d874044576d6a10c3a6cbec44e70231ddfbada5</id>
<content type='text'>
Renovate proposes the version updates of this repository from now on.
It watches what Dependabot watched, looks once a week, takes a release
a week after it is published, opens one pull request for each kind of
dependency with at most two open, and rebases a pull request only when
it conflicts. A dashboard issue lists what is pending.

The Dependabot configuration is removed, which turns its version
updates off. Dependabot keeps its alerts and its security updates,
which are repository settings. Renovate does not open its own pull
requests for vulnerabilities, so one advisory does not get two fixes.

The configuration passes Renovate's validator and takes effect when
the Renovate app is installed on the repository.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Renovate proposes the version updates of this repository from now on.
It watches what Dependabot watched, looks once a week, takes a release
a week after it is published, opens one pull request for each kind of
dependency with at most two open, and rebases a pull request only when
it conflicts. A dashboard issue lists what is pending.

The Dependabot configuration is removed, which turns its version
updates off. Dependabot keeps its alerts and its security updates,
which are repository settings. Renovate does not open its own pull
requests for vulnerabilities, so one advisory does not get two fixes.

The configuration passes Renovate's validator and takes effect when
the Renovate app is installed on the repository.
</pre>
</div>
</content>
</entry>
</feed>
