| Age | Commit message (Collapse) | Author |
|
A browser extension redirects github.com to cgithub with declarative net
requests. Its rules match our HTTP redirects back to github.com too, so
those bounce straight back here and loop forever. A meta refresh makes
cgithub the initiator origin instead, which the extension's rules can
exclude, and its delay leaves a page the user can stop on.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Workers can't shell out at request time, so the commit has to be baked
in before wrangler bundles the sources. compile-views.ts grows a second
job and becomes scripts/build.ts: alongside the precompiled views it
writes src/commit.generated.ts with `git describe --tags --always
--dirty`, which yields a bare short hash until the repo is tagged and
marks builds made from an unclean working copy.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
The Node server entry, esbuild bundle, and Makefile rsync/systemd deploy
are gone; wrangler dev and wrangler deploy are the only paths now, so the
dev:cf/deploy:cf scripts take over the plain dev/deploy names. @hono/
node-server and esbuild drop out with src/index.ts, and the README's
systemd socket and nginx snippets go with them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
|
|
The owner/name header in the layout now links to the owner page and the
repository root. tryRender passes the request's path and query through
as githubUrl — our URLs mirror GitHub's, so the same path is the page we
scraped — and the footer links there with rel="noreferrer", matching the
no-referrer policy used on redirects to github.com.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
GitHub no longer server-renders the repository sidebar; its React UI
lazily fetches /:owner/:repo/_sidebar as JSON, which carries the
language breakdown (name, percentage, color). getGitHubLanguages() uses
that endpoint, and a new /api/:owner/:repo/languages fragment route
renders the bar and legend the same way refs and latest-commit already
work, so repo page loads still cost a single scrape.
The latest-commit placeholder loader in refs.js is generalized over
.placeholder[data-src] so both placeholders share it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Adds two lazily-fetched UI pieces to match vanilla GitHub while keeping
initial page loads plain server-rendered HTML: a branch/tag selector
(native <dialog>, CSS anchor-positioned to its button, light-dismissed
via closedby="any") and a latest-commit bar above the file listing.
Both are populated by new /api/:owner/:repo/refs/:type and
/api/:owner/:repo/latest-commit/:branch/:path routes; the latter calls
GitHub's own /latest-commit JSON endpoint (the same one the React UI
uses) rather than scraping the full commit history page.
|
|
Split routes into a shared createApp() (src/app.ts) used by both the
Node entry (src/index.ts) and a new Workers entry (src/worker.ts).
Workers disallow runtime code generation, so scripts/compile-views.ts
precompiles the Eta templates into src/views.generated.ts and rendering
switches from renderAsync to the sync render. Static files move to
public/static so Workers Static Assets can serve them; the Node build
and serveStatic root are updated to match.
Deploy with pnpm run deploy:cf, local dev with pnpm run dev:cf.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Add a menu bar of profile tab links, split the org repository list from
pinned repos, and restructure the owner template to match repo pages.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
We do not support hybrid issue/PR search. Any searches on the issues
endpoint will redirect to an explicit issue-only search.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GitHub restructured their embedded JSON: tree/blob data is now split
across codeViewRepoRoute, codeViewTreeRoute, codeViewBlobLayoutRoute,
codeViewBlobLayoutRoute.StyledBlob, codeViewBlobRoute, and the shared
codeViewLayoutRoute (repo, refInfo, path).
Replace RawPayload and OverviewFile with typed interfaces for each
route, add AppPayload as the top-level union, and simplify parsePayload
to always extract react-app.embeddedData.
|
|
Also fix release content parsing.
|
|
By Gemini
|
|
By Gemini
|
|
|
|
Refactored releases display into reusable partial template (_release.eta) and added support for viewing individual releases at /:owner/:repo/releases/tag/:tag with navigation back to all releases.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Fixes reading complex release descriptions that had unbalanced tags.
Written with Gemini.
|
|
Scrapes releases page HTML to display version tags, publish dates, and changelog content.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|
|
Sometimes GitHub returns colorizedLines and sometimes it returns a
terser stylingDirectives, which needs to be applied to rawLines.
|
|
|
|
|
|
|
|
Render `error.eta` on HTTP error from GitHub.
Implemented with Gemini.
|
|
|
|
|
|
|
|
|
|
|
|
See https://nodejs.org/api/typescript.html#type-stripping
|
|
|
|
|
|
|
|
|