Commit Graph
34 Commits
Author SHA1 Message Date
Thomas DurieuxandClaude Opus 5.5 643f4b87e9 feat: let authors leave their bibliography unredacted (#941) (#943)
* feat: let owners leave chosen files unredacted (#941)

Redacting self-citations in a bibliography reveals which papers are the
authors' own. Owners can now pick files whose content is served as
written; file names are still redacted. Patterns follow .gitignore rules.

The form gets a file picker fed by GitHub's tree API, and the terms box
grows with its content and only warns about regex symbols that can stop a
term from matching.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: honour !patterns, keep picked braces literal, preview unredacted README

- Patterns now apply in order and the last match wins, as in .gitignore,
  so "*.bib" then "!private.bib" excludes private.bib instead of
  preserving every other file.
- Picked paths escape glob characters, braces included, with a
  backslash; "[{]" did not survive brace expansion.
- The README preview drops terms when the README is an unredacted file,
  and refreshes when the list changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep rule order when deduplicating unredacted-file patterns

Rules apply in order and the last match wins, so dedupe keeps the last
copy of a repeated pattern instead of the first. The picker also keeps a
plain path in its place when it follows another rule, rather than moving
it to the front as a pick.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: apply unredacted-file rules to folders, as in .gitignore

A rule that matches a folder now covers every file inside it, so "*.bib"
then "!private" keeps private/refs.bib redacted. A trailing "/" limits a
rule to folders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: folder unchecks win over broad rules; accept short commit hashes

- Unchecking a folder that a broader rule such as "*.bib" still covers
  appends a "!/folder/" exclusion, so its files really go back to being
  redacted.
- The tree endpoint accepts the 6+ character hashes the commit field
  allows and resolves them to a full SHA before reading the tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: picker counts folder rules exactly as the server does

Rules ending in "/" stay patterns instead of being read as picked files,
and the checkboxes now run the saved rule list (picks, then patterns)
through the server's matcher, so the dialog cannot show files as
redacted that the server leaves unredacted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: insert escaped terms literally in "Match as written"

String.replace expanded "$&", "$'" and "$1" in the term, so the fix
could corrupt the line. Splice by index instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 14:10:54 +01:00
Codex bff2e343fd fix: restore Node deployment and keep Go on its branch 2026-11-08 19:16:38 +00:00
Thomas DurieuxandClaude Opus 5.5 c685d833ab Merge origin/main into feat/ui-redesign
Backend, scripts, docs and their tests take main's newer code where both
sides changed the same lines (the shared blob cache, GitHubStream and
markdown fixes landed on main after the Go migration branch was cut).
The Dockerfile keeps the Go build from the migration, plus main's
owner-alert-protocol label; .gitignore keeps both sides' entries.

Frontend keeps the redesign and folds in main's features: Stripe billing
in the New anonymization submit bar, GitHub access repair, redaction
syntax help, the preview expand toggle, configurable redaction mask,
folder counts, reviewer-route header rules, link expiry (now in the
viewer's snapshot details) and the explorer error card. main's
narrow-only wrap logic is dropped because the redesign wraps on desktop
and scrolls sideways on phones.

Tests: 1534 passing with SESSION_SECRET set (as in CI). Three main tests
were updated for the agreed viewer design (no site header in the viewer,
no repository-wide file count).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 14:07:33 +00:00
Thomas Durieux 76e5804404 feat: migrate backend to Go with streaming and provider support 2026-11-04 14:21:36 +00:00
Thomas Durieux ded6f905fd merge: reconcile paid hosting with latest main 2026-11-02 21:12:29 +00:00
Thomas Durieux 410863d253 feat: add paid author and conference hosting with Stripe 2026-11-02 20:49:03 +00:00
Thomas Durieux d0b217a448 feat: include public GitHub submodules in shared repositories (#914)
* feat: include public GitHub submodules in shared repositories

* fix: preserve submodule access across token and document contexts
2026-11-02 09:00:02 +01:00
Thomas Durieux 6099356e0e feat: add scoped repository maintenance access for LLM clients (#913)
* feat: add scoped repository maintenance access for LLM clients

* fix: translate maintenance API errors
2026-11-02 07:18:04 +00:00
Thomas Durieux a301c46a94 fix: harden repository content and improve access recovery
Sandbox executable MIME aliases, enforce strict Mermaid rendering, and add security regression coverage. Upgrade vulnerable dependencies with archive compatibility checks and Node 22/24 CI. Make repository restoration atomic and provide actionable viewer errors with retry controls.
2026-11-02 05:50:34 +00:00
Thomas Durieux 772e40debd fix: retain recipient suppression after access recovery (#897)
* fix: retain recipient suppression after access recovery

* fix: migrate cold starts and fence resource deactivation

* docs: stop every writer before alert reconciliation
2026-10-14 19:23:12 +01:00
Thomas Durieux 445a479339 fix: deduplicate owner access alerts per recipient (#896)
* fix: prevent duplicate access alerts to the same recipient

* fix: address recipient alert recovery review findings

* fix: reconcile unsent alerts and wait for startup migration

* fix: preserve legacy recipient alerts through upgrades

* fix: reconcile alert results and legacy recovery races

* fix: fence dispatch and clean cancelled alert metadata

* fix: fence alert preparation and retain in-flight recovery

* fix: atomically commit alert dispatch and retry deferred recovery

* fix: keep recovery lookups from blocking upstream file reads
2026-10-13 13:55:10 +01:00
Thomas Durieux 444e5ab248 fix: save verified email addresses during GitHub registration 2026-10-09 13:24:21 +00:00
Thomas Durieux 633e5ddcae fix: rearm owner alerts across recovery actions safely 2026-10-09 07:47:51 +00:00
Thomas Durieux d519a0a9bb fix: send one access alert per repository until owner action 2026-10-09 07:38:52 +00:00
Thomas Durieux 85b9a50d4d fix: address owner notification review findings 2026-10-09 05:42:19 +00:00
Thomas Durieux 95f8aef30a feat: notify owners when GitHub access needs attention 2026-10-09 05:22:41 +00:00
Thomas Durieux fd0dd0adbd chore(deps): upgrade dependencies and remove production vulnerabilities 2026-10-08 10:21:00 +00:00
Thomas Durieux a60ad6a921 feat: add read-only GitHub App access alongside OAuth 2026-09-09 22:08:12 +02:00
tdurieux e68ab037eb perf: load document libraries only when needed 2026-09-09 13:28:44 +02:00
tdurieux 4a18f94631 refactor: migrate the frontend from AngularJS to Vue 3 2026-09-09 13:19:53 +02:00
Thomas Durieux 3fb376dd53 fix: encrypt stored GitHub credentials (#797) 2026-09-08 13:04:28 +02:00
Thomas Durieux debd83c079 feat: add optional MongoDB replica deployment (#765) 2026-07-30 02:28:19 +02:00
tdurieuxandClaude Opus 4.8 2af4637cc7 docs: polish README (clearer intro, badges, structure)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 08:07:55 -07:00
tdurieuxandClaude Opus 4.7 1f966841ad docs: refresh home/dashboard/anonymize/explorer screenshots
Replace the outdated user-images.githubusercontent.com screenshot in
the README with a locally hosted image, and regenerate the in-app
screenshots to reflect the current UI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 20:32:45 +02:00
Adam Leskis d86114fa22 fix simple typos (#384) 2025-04-01 12:59:23 -07:00
Thomas Durieux 696b24a648 Update README.md 2023-02-07 09:35:09 +01:00
tdurieux 7c5fcfe069 chore: improve readme 2023-02-07 09:33:42 +01:00
tdurieux dcf7f36917 feat: add cli to anonymize repositories locally 2023-02-06 15:55:43 +01:00
Diego Marcilio 0af6c3c23b fix See Also link in README (#157) 2023-01-22 13:44:12 +01:00
tdurieux ee4a20286d fix(#64): remove references to blind. 2021-08-13 07:22:47 +02:00
tdurieux d9aa8cce10 add parameter for anonymization mask 2021-04-07 15:09:59 +02:00
tdurieux cf17e1c456 fix typos 2021-04-06 17:45:36 +02:00
tdurieux e8865ae607 continue v2 2021-03-19 10:24:17 +01:00
tdurieux f1cc8d3cae add first version of the readme 2021-03-16 11:48:13 +01:00