<feed xmlns='http://www.w3.org/2005/Atom'>
<title>progmaweb/ops/git, branch content/catch3-0.4.0</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>Remove what is left of the former language and its site (#70)</title>
<updated>2026-11-15T10:53:35+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-11-15T10:53:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=1a73486c0f67ddf3bfe3fd01e2258648f81fbb48'/>
<id>1a73486c0f67ddf3bfe3fd01e2258648f81fbb48</id>
<content type='text'>
The dashboard, proxy, documents, issue templates and ops files no longer point at the former language, its site or its repositories. viget.progmasoft.com/api/v1/status answers from the Progmaweb API (5085); the archived website repository is no longer mirrored.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The dashboard, proxy, documents, issue templates and ops files no longer point at the former language, its site or its repositories. viget.progmasoft.com/api/v1/status answers from the Progmaweb API (5085); the archived website repository is no longer mirrored.</pre>
</div>
</content>
</entry>
<entry>
<title>Give git.progmasoft.com a phone layout</title>
<updated>2026-11-15T09:04:44+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-15T09:04:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=cf2b6c972c94c30a5d055ca9e24e81ed6b497ff3'/>
<id>cf2b6c972c94c30a5d055ca9e24e81ed6b497ff3</id>
<content type='text'>
On a phone the mirror pages were drawn 980 px wide and scaled down to
unreadable text (Android Chrome, desktop mode off): head.html had no
viewport meta, so the narrow-screen rules of progmasoft-git.css never
applied.

- head.html declares width=device-width, initial-scale=1.
- Below 720 px the page keeps a 12 px margin, and lists, files, diffs
  and preformatted text scroll inside their own box instead of widening
  the page.

Deployed to the server and checked with Playwright at 390 px (index,
summary, tree, log, file, commit): body text 15 px, no page overflow.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On a phone the mirror pages were drawn 980 px wide and scaled down to
unreadable text (Android Chrome, desktop mode off): head.html had no
viewport meta, so the narrow-screen rules of progmasoft-git.css never
applied.

- head.html declares width=device-width, initial-scale=1.
- Below 720 px the page keeps a 12 px margin, and lists, files, diffs
  and preformatted text scroll inside their own box instead of widening
  the page.

Deployed to the server and checked with Playwright at 390 px (index,
summary, tree, log, file, commit): body text 15 px, no page overflow.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Serve only listed mirrors and report a failed default-branch lookup</title>
<updated>2026-11-12T22:57:15+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-12T22:57:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=05d42b1a4ca923ee7726c35c261bfc75d32ddea3'/>
<id>05d42b1a4ca923ee7726c35c261bfc75d32ddea3</id>
<content type='text'>
- git-http-backend no longer exports every directory under the mirror
  root: GIT_HTTP_EXPORT_ALL is gone, git-mirror marks each listed mirror
  with git-daemon-export-ok, and a mirror taken off the list loses the
  mark and is deleted on the next run. Tried live: an unlisted bare
  repository answered 404 and was removed by the next run.
- git-mirror checks git ls-remote before it reads the default branch
  and fails the run when the lookup fails.
- The README explains the /usr/bin spelling of the fcgiwrap label (an
  equivalence of /usr/sbin), the stock label of /srv/*/www, and where
  the DNS record is kept.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- git-http-backend no longer exports every directory under the mirror
  root: GIT_HTTP_EXPORT_ALL is gone, git-mirror marks each listed mirror
  with git-daemon-export-ok, and a mirror taken off the list loses the
  mark and is deleted on the next run. Tried live: an unlisted bare
  repository answered 404 and was removed by the next run.
- git-mirror checks git ls-remote before it reads the default branch
  and fails the run when the lookup fails.
- The README explains the /usr/bin spelling of the fcgiwrap label (an
  equivalence of /usr/sbin), the stock label of /srv/*/www, and where
  the DNS record is kept.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add read-only Git mirrors on git.progmasoft.com</title>
<updated>2026-11-12T20:41:27+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-12T20:41:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/progmaweb/commit/?id=83e0ad4586d90bf02c3a5bfeb1ab92fd90e51703'/>
<id>83e0ad4586d90bf02c3a5bfeb1ab92fd90e51703</id>
<content type='text'>
git.progmasoft.com shows the public repositories under development
(tazel, tazelish, tazel.net, catch3, progmasoft-cpp, progmaweb, website)
as read-only mirrors with cgit, and serves clones over smart HTTP, such
as git clone https://git.progmasoft.com/tazel. GitHub stays where
development happens; private and archived repositories are not mirrored.

ops/git holds what runs on the server:

- cgitrc, the header, footer and stylesheet: the look of progmasoft.com
  (its tokens, the four-tile brand with "Git" beside it, the dark
  footer), light like its default, no scripts, no rendered READMEs.
- git-mirror.sh with git-mirror.service/.timer: every ten minutes, as
  gitmirror, branches and tags only from GitHub, pruned, the default
  branch followed, repacked with a bitmap when something changed.
- fcgiwrap@cgit drop-ins: cgit and git-http-backend run as cgit with
  systemd sandboxing (no network, read-only system, exposure 0.7), on
  a socket only nginx can open.
- selinux/progmasoft_cgit.te: fcgiwrap runs in httpd_t and the two
  CGIs move into git_script_t; the module allows only that move under
  the NoNewPrivileges that the sandboxing sets.
- nginx/git.conf: HSTS, a content security policy without scripts,
  per-address request and connection limits, 403 for receive-pack and
  the dumb protocol, buffered clones, and the inline handlers of cgit's
  menus removed.

ops/README.md describes the files, the labels, and why the name is not
behind the Cloudflare proxy: through it a clone of catch3 never reached
the client.

Deployed and checked live: every page answers 200, unknown ones 404,
full clones of tazel, progmaweb and catch3 work, a push answers 403,
no SELinux denials, no console errors, no horizontal scroll at 390 px.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git.progmasoft.com shows the public repositories under development
(tazel, tazelish, tazel.net, catch3, progmasoft-cpp, progmaweb, website)
as read-only mirrors with cgit, and serves clones over smart HTTP, such
as git clone https://git.progmasoft.com/tazel. GitHub stays where
development happens; private and archived repositories are not mirrored.

ops/git holds what runs on the server:

- cgitrc, the header, footer and stylesheet: the look of progmasoft.com
  (its tokens, the four-tile brand with "Git" beside it, the dark
  footer), light like its default, no scripts, no rendered READMEs.
- git-mirror.sh with git-mirror.service/.timer: every ten minutes, as
  gitmirror, branches and tags only from GitHub, pruned, the default
  branch followed, repacked with a bitmap when something changed.
- fcgiwrap@cgit drop-ins: cgit and git-http-backend run as cgit with
  systemd sandboxing (no network, read-only system, exposure 0.7), on
  a socket only nginx can open.
- selinux/progmasoft_cgit.te: fcgiwrap runs in httpd_t and the two
  CGIs move into git_script_t; the module allows only that move under
  the NoNewPrivileges that the sandboxing sets.
- nginx/git.conf: HSTS, a content security policy without scripts,
  per-address request and connection limits, 403 for receive-pack and
  the dumb protocol, buffered clones, and the inline handlers of cgit's
  menus removed.

ops/README.md describes the files, the labels, and why the name is not
behind the Cloudflare proxy: through it a clone of catch3 never reached
the client.

Deployed and checked live: every page answers 200, unknown ones 404,
full clones of tazel, progmaweb and catch3 work, a push answers 403,
no SELinux denials, no console errors, no horizontal scroll at 390 px.
</pre>
</div>
</content>
</entry>
</feed>
