Files
werkator/docs/prs
mhoennigandClaude a734d91918 Stop embedding the control token in every page (v0.9.10)
Closes TODO 2 of the security audit in docs/prs/2026-07-08-PR#000.

Every rendered page carried the live control token in a meta tag so that
gittally.js could send it, but no GET is authenticated — so `curl … |
grep gittally-control-token` handed the token to anyone, and read access
was effectively write access.

Reading stays fully public, which is a requirement rather than an
oversight: build states, logs and artifacts must be linkable from Gitea,
chats or tickets without a login. Only the distribution of the token
changed. The meta tag is gone; gittally.js keeps the token in
localStorage and asks for it once per browser, so knowing it requires
shell access to `.git/gittally/control-token` on the host. A token the
server rejects is dropped and asked for once more, so a rotated secret is
not a dead end. As a request header it stays inherently CSRF-safe.

The five branches of that flow (first use, reuse, stale token, cancelled
prompt, wrong token twice) were exercised against the real source with a
throwaway node harness; the UI test now asserts the token does not appear
in the rendered page. `docs/deployment.md` gained a "Control Token"
section on the public-read/token-protected-write split.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 08:00:09 +02:00
..

Pull-Request Documentations in doc/PR

This directory contains documentation for each pull request (PR).

IMPORTANT: The PR-documentation documents the change which was applied in that PR. Such documentation might be outdated right after the next PR was merged. Historic PR-documentation is not maintained along with new PRs.

Naming Convention

YYYY-MM-DD-PR#999-short-description-of-pr

  1. Date of the PR in the format YYYY-MM-DD
  2. followed '-PR#' followed by the number of the pull request in GitEA,
  3. a short description of the PR with dashes between the words,
  4. '.md'

Yes, to get the PR-number, you need to open a pull request first, but initially prefix its title with WIP: to mark it as a work in progress until it is ready for review.

Guidelines

  • Documentations must be written in Markdown format.
  • Use Englisch, it's a public open source project.
  • Use clear and concise language and keep it short.
  • Include relevant details and context, explain the "why".
  • Mark reference to Taiga or any other tool that is not public as "Hostsharing-internal".
  • If necessary, copy important parts of the ticket description.
  • One sentence or statement per line to make diffs easier to read.

Structure

The main (##) sections have to appear in exactly this order, omitting sections which do not apply:

  1. Related Links (optional)
  2. The Problem (required)
  3. Non-Goals (required)
  4. The Scenarios (optional for maintenance or bug fixing PRs, required for features)
  5. The Solution (required)
  6. Open Questions (optional)
  7. Additional Changes (optional)
  8. Prerequisite PRs (optional)
  9. Follow-up PRs (optional)
  10. Attachments (optional)

For details, see template