Commit Graph
765 Commits
Author SHA1 Message Date
Thomas Durieux 22096a8346 Merge pull request #815 from tdurieux/dependabot/npm_and_yarn/smol-toml-1.8.0
chore(deps-dev): bump smol-toml from 1.6.1 to 1.8.0
2026-09-10 19:31:24 +02:00
Thomas Durieux be41136ea0 Merge pull request #824 from tdurieux/codex/unified-github-signin
feat: unify GitHub sign-in and connect OAuth for gists
2026-09-10 09:22:28 -07:00
tdurieux 99a50cad7b feat: unify GitHub sign-in and connect OAuth for gists 2026-09-10 18:20:56 +02:00
Thomas Durieux 82510628f7 Merge pull request #823 from tdurieux/codex/fix-anonymize-access-height
fix: keep GitHub access controls beside the source URL
2026-09-10 09:06:25 -07:00
tdurieux 68d9c54fcf fix: keep GitHub access controls beside the source URL 2026-09-10 18:04:56 +02:00
Thomas Durieux 271ca9fd80 Merge pull request #821 from tdurieux/codex/fix-oauth-session
fix: preserve anonymous sessions during GitHub sign-in
2026-09-10 07:17:05 -07:00
tdurieux 3667e8e3cd fix: preserve anonymous sessions during GitHub sign-in 2026-09-10 16:15:39 +02:00
Thomas Durieux 5458dedac9 Merge pull request #820 from tdurieux/codex/github-dashboard-actions
style: clarify GitHub sign-in and connection management
2026-09-10 07:08:15 -07:00
tdurieux df81d7db56 style: restore mobile sign-in and compact access controls 2026-09-10 16:07:02 +02:00
tdurieux bcc7abc975 style: clarify GitHub connections and account navigation 2026-09-10 16:04:44 +02:00
Thomas Durieux 2ffd051bbe Merge pull request #819 from tdurieux/codex/signin-legacy-warning
fix: guide existing accounts to legacy GitHub sign-in
2026-09-10 07:01:56 -07:00
tdurieux b80a15bb69 fix: guide existing accounts to legacy GitHub sign-in 2026-09-10 16:00:28 +02:00
Thomas Durieux 4e52f42009 Merge pull request #814 from tdurieux/feat/github-app-dual-auth
Add read-only GitHub App access alongside OAuth
2026-09-10 06:27:36 -07:00
Thomas Durieux b3a371aa5f Merge pull request #818 from tdurieux/fix/anonymizer-literal-performance
perf: avoid anonymization timeouts for absent literal terms
2026-09-10 05:58:56 -07:00
tdurieux 19f819949e perf: avoid anonymization timeouts for absent literal terms 2026-09-10 14:49:01 +02:00
dependabot[bot] 1e3a019757 chore(deps-dev): bump smol-toml from 1.6.1 to 1.8.0
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.6.1 to 1.8.0.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.6.1...v1.8.0)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-version: 1.8.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-10 02:55:51 +00:00
Thomas Durieux a60ad6a921 feat: add read-only GitHub App access alongside OAuth 2026-09-09 22:08:12 +02:00
Thomas Durieux e5c44845f0 Merge pull request #813 from tdurieux/fix/saved-options-and-folder-icons
fix: preserve saved auto-update settings and clarify file tree icons
2026-09-09 14:10:32 +02:00
tdurieux a8a03de4bc fix: preserve saved auto-update settings and clarify file tree icons 2026-09-09 13:57:07 +02:00
Thomas Durieux e81b04c6e7 Merge pull request #812 from tdurieux/fix/anonymization-submit-validation
fix: unblock gist and pull request form submissions
2026-09-09 13:43:11 +02:00
tdurieux 8e85458b05 fix: unblock gist and pull request form submissions 2026-09-09 13:41:20 +02:00
Thomas Durieux 3b5d008fef Merge pull request #811 from tdurieux/t3code/migrate-to-vue-3
refactor: migrate the frontend from AngularJS to Vue 3
2026-09-09 13:33:06 +02:00
tdurieux e68ab037eb perf: load document libraries only when needed 2026-09-09 13:28:44 +02:00
tdurieux 984906a89a fix: use public package URLs for clean CI installs 2026-09-09 13:25:36 +02:00
tdurieux 4a18f94631 refactor: migrate the frontend from AngularJS to Vue 3 2026-09-09 13:19:53 +02:00
Thomas Durieux dc0ef022fb Merge pull request #810 from tdurieux/feat/landing-redesign
feat: rebuild the landing page around the product
2026-09-09 12:24:47 +02:00
tdurieuxandClaude Fable 5.1 88d8225f00 feat: rebuild the landing page around the product
The home page led with a text hero, a boxed stats strip, a numbered
how-it-works list, a trust card and three Bootstrap featurettes with
postage-stamp screenshots. It now shows the product first and stays
flat:

- Hero: copy on the left, the anonymize form in a browser frame on the
  right, one primary CTA plus a link to a real anonymized repository,
  and three reassurance points (free, read-only, expires).
- Proof and live stats collapse into hairline strips with no cards;
  the stat bars keep their daily-delta charts and the "+N today" line.
- Before/after example gets a section head and shows the actual XXXX-n
  masks, each labelled for screen readers.
- "What you get" is one large screenshot with three vertical tabs
  (Anonymize, Review, Manage) instead of three columns. Tabs are real
  buttons with tablist/tab/tabpanel roles, roving tabindex and arrow-key
  navigation; the description and link sit outside the button. Signed-out
  visitors are sent to sign in rather than to a dashboard that redirects.
- FAQ teaser with the three questions that come up most, linking into
  the FAQ anchors.
- Phone layout: tabs become a strip above the screenshot with the
  selected description below it, stats go two-up, panes stack, the CTA
  fills the width, and horizontal overflow is clipped so the hero bleed
  can never cause sideways scrolling.

Removes the dead how-it-works, trust, featurette and metrics styles and
the legacy mobile hero font overrides that fought the new sizes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 12:21:02 +02:00
Thomas Durieux da247de018 Merge pull request #808 from tdurieux/fix/webview-script-playback
fix: restore scripts and video playback on project pages
2026-09-09 10:23:45 +02:00
Thomas Durieux f27e9ca9a0 Merge pull request #809 from tdurieux/feat/dashboard-redesign
feat: make the dashboard, menus and settings readable at a glance
2026-09-08 21:07:30 +02:00
tdurieuxandClaude Fable 5.1 b9189953d3 test: drop unused timer globals from the dashboard sandbox
ESLint's test config does not declare setTimeout and friends, so passing
them into the vm sandbox failed the Lint job. Nothing the test exercises
uses them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 21:02:52 +02:00
tdurieuxandClaude Fable 5.1 a02e83e48c feat: clarify the menus and rework the settings page
"Report an issue" in the navbar read like a way to report an anonymized
repository, and it opened a blank GitHub issue instead of the template
that asks reporters to confirm the issue is about the service. The user
menu offered "Default settings" and "Logout" with no hint of what lives
behind them, and the Claim page was unreachable from any menu.

The settings page never loaded quotas (the bars stayed in their striped
loading state), mixed serif checkbox labels with sans forms, used
Bootstrap alert colours, and described options in jargon ("Proxy mode",
"Github page", "Line of code").

- Navbar: "Report a bug" links to the issue template with a tooltip that
  names the service; the user menu shows who is signed in and lists
  Settings, Claim an anonymization, Report a bug, Source code, Sign out,
  each with a one-line hint. Icon links get aria-labels.
- Settings: quotas load through a shared quotaService (also used by the
  dashboard); sections match the side navigation, which now follows
  scrolling via a small paperScrollspy directive; copy explains each
  option; account card with Sign out; delete moved into a danger zone;
  Save shows Saving/Saved and the error alert uses the paper palette.
- Conferences list and detail: sort and status buttons show their state,
  hidden statuses appear as chips with a count line, Remove is a button
  behind a divider, dates spell the month, expiry column matches the
  dashboard, detail page gets an Edit button and plan/cost meta.
- New conference: validation errors only appear after a field is touched
  or the form submitted; pricing copy matches how price is computed.
- Status page: progress label no longer overlaps the details below it;
  "Report a bug" points at the template and says whom it is for.
- Claim: single rule, constrained width, explains when to use it.
- Anonymize: shorter placeholder, consistent Auto-update label.
- Mock server gains the endpoints these pages need and an ANON mode.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 20:55:22 +02:00
tdurieuxandClaude Fable 5.1 8e9b5b9a45 feat: make the dashboard readable at a glance
The dashboard showed the anonymize date under "Expired", a dash in the
Expires column for 54 of 60 rows, raw status codes such as
branch_not_found, and a chip reading "REMOVED" that actually meant
"removed items are hidden". Muted text sat at 3.5:1 contrast, keyboard
focus was invisible, numbers were left-aligned, and a legacy record
without an identifier rendered as an empty link to /pr/undefined/.

This rewrites the dashboard template and controller and tightens the
theme tokens:

- Status sub-line is labelled ("anonymized on Sep 6, 2026"); Expires
  shows Never, the date, or "Expired on <date>".
- Conference folded into the name cell as a tag; Views right-aligned;
  every column header is a keyboard-sortable button with aria-sort.
- Sort/Status buttons show their state; chips read "Hiding Removed";
  result count and Clear filters; empty state with a way out.
- Status filter covers Ready, In progress, Error, Expired, Removed.
  Stuck downloads say so; codes map to sentences; statuses to labels.
- Lists load in parallel and merge once behind a skeleton; broken
  records are flagged instead of linking nowhere.
- Actions menu: View, View page, Edit, Force update, divider, Remove,
  all as buttons rather than href="#" anchors.
- Theme: warm dark canvas, muted text >= 4.5:1 in both modes, semantic
  status tokens, 11/13/14/16px type scale, mono only for identifiers,
  6px/10px/pill radii, :focus-visible ring, quota bars in ink until a
  limit is near, unlimited shown as such.
- Mobile: no 9px text, filter row wraps in two lines, meta on one line.

Adds scripts/dev-mock.js to serve the dashboard with fixture data and
test/dashboard-ui.test.js covering the filters, template invariants and
token contrast.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 20:20:17 +02:00
tdurieux 74bd6bb779 fix: restore scripts and video playback on project pages 2026-09-08 18:01:32 +02:00
Thomas Durieux f6cbdd97bc Merge pull request #806 from tdurieux/t3code/fix-dependency-security-migration
fix: clear dependency vulnerabilities without overrides
2026-09-08 04:36:51 -10:00
tdurieux 5fdec8d6f9 fix: keep dependency downloads portable across registries 2026-09-08 16:34:40 +02:00
tdurieux da530d645f fix: clear dependency vulnerabilities without overrides 2026-09-08 16:31:59 +02:00
Thomas Durieux 6ff107abad Merge pull request #805 from tdurieux/codex/express-5-migration
chore: upgrade Express to 5.2.1
2026-09-08 04:25:51 -10:00
tdurieux 8ad0ec65f0 chore: upgrade Express to 5.2.1 2026-09-08 16:22:23 +02:00
Thomas Durieux a05f42ad9f Merge pull request #801 from tdurieux/t3code/archive-legacy-spaced-ids
fix: archive legacy repository IDs containing spaces
2026-09-08 02:46:38 -10:00
Thomas Durieux 80969c1826 Merge pull request #804 from tdurieux/t3code/parallel-credential-migration
perf: parallelize credential migration owner analysis
2026-09-08 02:29:36 -10:00
tdurieux c7eed1a6b4 perf: parallelize credential migration owner analysis 2026-09-08 14:28:46 +02:00
Thomas Durieux 1449aecf0e Merge pull request #802 from tdurieux/t3code/recover-owner-credentials
fix: recover conflicting credentials by verifying the recorded owner
2026-09-08 02:21:57 -10:00
tdurieux 0c808a8675 fix: recover conflicting credentials by verifying the recorded owner 2026-09-08 14:21:16 +02:00
tdurieux 90f14b19b7 fix: archive legacy repository IDs containing spaces 2026-09-08 14:08:48 +02:00
Thomas Durieux 530e388e46 fix: archive ownerless repositories without assigning ownership (#800) 2026-09-08 14:03:09 +02:00
Thomas Durieux 8de4a536cc fix: recover legacy repository owners through GitHub (#799) 2026-09-08 13:39:39 +02:00
Thomas Durieux 3fb376dd53 fix: encrypt stored GitHub credentials (#797) 2026-09-08 13:04:28 +02:00
tdurieux 9f00641529 fix: preserve the year in default conference end dates 2026-09-06 10:47:59 +02:00
tdurieux 681f72f75c fix: inject the translator for profile save errors 2026-09-06 10:47:53 +02:00
tdurieux 793e926463 fix: cancel status polling when the view is destroyed 2026-09-06 10:47:47 +02:00