Commit Graph
343 Commits
Author SHA1 Message Date
Thomas DurieuxandClaude Opus 5.5 9ba9af2b44 fix(ui): admin errors filters, overview views, phone menu, ended projects
- Admin errors: filters stack on phones (tabs, search, Sort and Group,
  refresh) instead of squeezing into one row
- Admin overview: Summary / Performance / Cache views, kept in the URL
  hash; charts take the full width on phones
- Phone menu: aligned rows with icons, neutral fill for the current page,
  account links inline, no duplicate Sign in
- My work: removed and expired projects get a labelled badge, a muted
  "Link offline" in place of the copy link, and an inline Enable/Extend

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 09:18:25 +00:00
Thomas DurieuxandClaude Opus 5.5 5bad2a2597 fix(ui): mobile viewer, code-block redactions and anonymize preview
- Anonymize preview renders redactions as the viewer's numbered slots
- Code-block slots keep the width of XXXX-n and sit on the text line
- README no longer overflows on phones (grid forced two columns)
- Status bar always hides under the file header: no second Files button
  or breadcrumb on repos with a website or for owners; Open website and
  Edit anonymization move to the file menu
- Loading state no longer repeats the path visually
- Phone usage popover opens inside the screen
- Home closing band: no double divider, tighter gap above the footer
- File drawer closes after opening a file on phones

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:29:50 +00:00
Thomas DurieuxandClaude Opus 5.5 9872cace5e feat(ui): polish from design review rounds 92-121
- Phone viewer: Contents menu for README headings, theme toggle in the header,
  GitHub icon on sign-in, 12px Ace font
- File ⋯ menu: file details line, Find for HTML, View raw, Download ZIP,
  Copy file path
- Redaction slots inside highlighted code blocks; fix regex lastIndex reuse
  in the redaction walker
- Landing and FAQ copy: plainer headings, trust items, closing CTA band
- Explorer ZIP button label, snapshot text cleanup

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 18:14:47 +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 DurieuxandClaude Opus 5.5 53cac6ac39 feat(ui): follow-up polish from design review rounds 88-91
One-row phone toolbar, errors page opens on server errors, one-row submit
bar, publish warning after a source loads, three-column FAQ with a help
card, queue range control in the Throughput card, shared admin table cards,
dark-mode contrast and a stronger phone code scroll cue.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 13:36:59 +00:00
Thomas DurieuxandClaude Opus 5.5 579ce970c7 feat(ui): redesign the viewer, landing, author and admin screens
Viewer: full-height app bar with a Help menu, search + ZIP sidebar, one
toolbar for README and code, reading mode with a scroll-tracking outline,
docked find for Markdown and code, and redaction slots (a blank stone slot
holding the term number) in prose, headings, code, the tree and the path.

Landing and FAQ: live redaction demo, serif display headings, teal accent.

Author screens: My work table with copy/open/edit actions, a usage meter,
a single-container New anonymization flow with a sticky submit bar, themed
form controls, and consistent GitHub connection cards.

Admin: underline tabs, severity-first errors chart and list, error tiles
that filter (older pages load until matches appear), queue and overview
health states, and shared toolbar heights and borders.

Fixes: guarded localStorage access, failed README images render a
placeholder, phone hover states no longer stick, and UI tests updated for
the new copy and markup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 10:52:10 +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 823314b5c2 fix: hide donation links for customers with paid access 2026-11-04 13:26:45 +00:00
Thomas Durieux c9d326142a fix: keep donation access in the header without covering content 2026-11-04 10:54:25 +00:00
Thomas Durieux d4b9fd85e7 fix: isolate website limits and scope explorer counts 2026-11-03 15:03:23 +00:00
Thomas Durieux 860169f27b merge: preserve billing admission with bounded tree preparation 2026-11-03 08:33:12 +00:00
Thomas Durieux e71e6b6389 merge: reconcile paid hosting with shared cache and main 2026-11-03 08:26:43 +00:00
Thomas Durieux 97e5b50cf0 merge: integrate main after progress fence and cache merges 2026-11-03 08:25:43 +00:00
Thomas Durieux af23ad9eb5 fix: bound large repository tree memory and cleanup 2026-11-02 21:57:33 +00:00
Thomas Durieux 47a436ee4e fix: admit dated repositories before offering checkout 2026-11-02 21:46:26 +00:00
Thomas Durieux ded6f905fd merge: reconcile paid hosting with latest main 2026-11-02 21:12:29 +00:00
Thomas Durieux 036eddfa0e fix: preserve paid hosting deadlines, quotas and review snapshots 2026-11-02 21:03:29 +00:00
Thomas Durieux 7d7f95506a fix: translate billing environment mismatch errors 2026-11-02 20:50:02 +00:00
Thomas Durieux 410863d253 feat: add paid author and conference hosting with Stripe 2026-11-02 20:49:03 +00:00
Thomas Durieux dd668c1f4b perf: share verified blobs and expose bounded cache metrics 2026-11-02 12:14:54 +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 6cf5445972 fix: fill gaps in GitHub Markdown rendering (#912)
* fix: fill gaps in GitHub Markdown rendering

* fix: harden Markdown dependencies and address review findings
2026-11-02 07:56:32 +01:00
Thomas Durieux 075c3a4622 Suggest existing configurations for duplicate repository URLs (#911) 2026-11-02 06:31:57 +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 8ce670a613 fix: show repository authorization controls for App-only users (#894) 2026-10-12 19:47:04 +01:00
Thomas Durieux 1d326e7c32 fix: repair private repository access from the edit page (#892)
* fix: repair private repository access from the edit page

* fix: respect App rollout and reload renamed sources after repair

* fix: gate access repair by status and update response tests
2026-10-11 12:13:02 +01:00
Thomas Durieux 167257f781 fix: balance profile email button padding 2026-10-09 12:47:38 +00:00
Thomas Durieux 7319a5a744 fix: keep settings links on profile and fill the project table (#887) 2026-10-09 13:20:27 +01:00
Thomas Durieux 95f8aef30a feat: notify owners when GitHub access needs attention 2026-10-09 05:22:41 +00:00
Thomas Durieux eb4fbb6b15 Merge commit 'refs/security-review/pr849' into HEAD
# Conflicts:
#	src/server/service/review-consent-http.ts
2026-10-08 16:26:12 +00:00
Thomas Durieux c1d192cb7f Merge commit 'refs/security-review/pr846' into HEAD
# Conflicts:
#	public/script/main.js
2026-10-08 16:25:32 +00:00
tdurieuxandClaude Opus 5.5 be2f979296 fix: keep redaction marks correct with custom masks, Prism and Mermaid
- The mask from /api/options is stored once loaded; code markers and
  rendered Markdown are refreshed when it arrives instead of keeping the
  XXXX default.
- Mermaid sources are left untouched so diagrams still parse.
- Fenced code blocks are marked from a Prism complete hook, after Prism
  has rewritten their HTML.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:46:13 +02:00
tdurieuxandClaude Opus 5.5 80944954d6 fix: bring the admin pages in line with the rest of the app
- Overview: error-volume bars render (the fills were inline spans), the
  cumulative users chart is scaled to its range and labels it, latencies
  over a second read in seconds, and charts and daily numbers use the
  accent instead of four unrelated colours.
- Labels, table headers and state chips drop the mono caps; queue stat
  values drop the serif.
- Error rows keep their content aligned; row metadata wraps instead of
  truncating every item; "1 term" is singular.
- Errors filter uses the shared segmented control; breadcrumbs include
  Admin; user detail spaces its status and actions, uses the accent for
  Generate and says when no access token is stored.
- The jobs table scrolls inside its card on phones.
- Mock server: admin fixtures for every admin endpoint (ADMIN=1).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 14:46:03 +02:00
tdurieuxandClaude Opus 5.5 fd1bce74b4 fix: clean up the admin queue controls
The range picker drew a border around every segment inside the group's
border, and Drain used a filled pill that made the most destructive
action the loudest. Segments are now borderless inside one outline with
a tinted selection, all header controls share one height, and Drain and
Clear all use a red outline. Queue labels drop the mono caps. ADMIN=1
signs the mock server in as an administrator.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 14:46:01 +02:00
tdurieuxandClaude Opus 5.5 57412d0610 feat: refine the reviewer explorer and the visual system
- Explorer: redacted terms are highlighted in Markdown and code, the
  sidebar shows when the link expires, "Download repository" is the one
  primary action, and signed-out reviewers get a header without Sign in
  or the source-code link.
- Status: a ready anonymization leads with a copyable share link; the
  support links sit flat inside their section.
- One primary colour (accent) for actions and progress; mono is kept for
  IDs, hashes and paths; settings are plain sections instead of cards.
- Font sizes snap to one scale (10-40px); rem values keep following the
  reader's browser font size.
- Ko-fi button uses a dark surface in dark mode instead of a white pill.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 14:45:54 +02:00
tdurieuxandClaude Opus 5.5 69f9029301 fix: address review on explorer actions, wrapping and breakpoints
- File-level errors keep the breadcrumb and repository actions; only
  repository-level failures (no file list) hide the bar.
- Code wrapping follows the viewport when it crosses 992px.
- Settings and FAQ tables of contents stack at the same breakpoint as
  their grids, so they no longer stay sticky over stacked content.
- The sign-in page keeps its 480px cap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:45:41 +02:00
tdurieuxandClaude Opus 5.5 361f761f92 fix: tidy the phone layouts
- Wrap long code lines in the explorer below 992px; the declared
  useWrapMode option was never applied.
- Light editor and gutter use the page colour, like dark mode.
- New anonymization uses the same 18px inset as other pages.
- Settings, new conference and FAQ section links scroll in one row
  instead of wrapping under a lone underline.
- Page intros are no longer clamped to two lines.
- Status page actions stack full width without the anonymize form's
  sticky bar styling; dropdown labels no longer split apart.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 12:43:24 +02:00
tdurieuxandClaude Opus 5.5 f8b2ea38a1 fix: polish explorer, error states and page alignment
- Explorer: 13px code, page-coloured dark editor, padded Markdown with a
  readable width, full repository ID on hover, sidebar footer kept clear
  of the floating Ko-fi button.
- Explorer errors render as a card with links home and to the FAQ; the
  empty action bar and Raw/Download buttons are hidden.
- Unknown error codes show the generic message instead of the raw
  ERRORS.<code> key.
- All app pages share one content column; New anonymization starts at
  the top instead of floating mid-screen.
- Status page: spaced action buttons, aligned status pill, no second
  Ko-fi embed under the support cards.
- Claim placeholders; consistent notebook option on new conferences.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 12:36:15 +02:00
Thomas Durieux fd0dd0adbd chore(deps): upgrade dependencies and remove production vulnerabilities 2026-10-08 10:21:00 +00:00
Thomas Durieux 9435a99b6c fix: prevent admin user crashes and match performance styling (#877) 2026-10-08 10:59:49 +01:00
Thomas Durieux a9760eab39 perf: avoid needless downloads and track request latency (#876)
* perf: avoid needless downloads and track request latency

* fix: correct request timing and monitoring revalidation
2026-10-08 10:38:33 +01:00
Thomas Durieux db966356ec fix: support gists through GitHub App login (#875)
* fix: prompt OAuth reconnection when gist credentials are rejected

* fix: support gist reads through GitHub App user grants

* test: adapt truncated gist regression to provider selection

* fix: address gist reconnect visibility and token renewal review

* fix: verify App authorization before revoking OAuth
2026-10-08 10:26:13 +01:00
Thomas Durieux 6434337923 perf: bound request work and resource usage (#866)
* perf: bound request work and resource usage

* fix: address performance review regressions

* fix: guard content expiration and dashboard state

* fix: tolerate cache outages and retire derived paths

* fix: revalidate expiration claims and status pagination

* fix: retry interrupted repository metadata cleanup

* fix: retire obsolete content cache storage

* fix: activate tree metadata and recheck expiration claims

* fix: fence cache publication across expiration

* fix: recover staged trees and enforce cache lifecycle cleanup

* fix: prune expired transforms during database outages

* fix: finish conference removals and reload expiration candidates
2026-10-08 03:38:19 +01:00
Thomas Durieux a7e3826da7 fix: restore visible Ko-fi support across screen sizes 2026-10-07 15:02:53 +00:00
Thomas Durieux 282efdc16e fix: make dashboard UI consistent and compact on mobile 2026-10-07 14:54:49 +00:00
Thomas Durieux 45153886e3 fix: derive editor modes from shipped assets for ES2020 browsers 2026-10-07 12:33:44 +00:00
Thomas Durieux 64ae393200 fix: fall back to plain text for unsupported editor modes 2026-10-07 12:24:21 +00:00
Thomas Durieux e268bce1c7 fix: recover stale pull requests and refresh renamed repository caches 2026-10-07 11:58:56 +00:00
Thomas Durieux e6073941b9 fix: verify reconnects through supported GitHub routes and protect active jobs 2026-10-07 11:24:59 +00:00