kepr

@june

Modern source forge for Koh repositories

TypeScript

v3.2.5 · 270 saves · 17,225 lines · updated 5 days ago

15 files
1972104e46af
back to HEAD
a51b3aa79a12end release download links in the stored filename (v3.0.217)1 week ago1bbe304e31capin the tests to koh 3.4.3 (v3.0.216)1 week agoc88aba67e9a5pin the tests to koh 3.4.2 (v3.0.215)1 week ago28a9ce02dab1give each bundle its own statements, so two steals at once no longer split the rows between them (v3.0.214)1 week agoaece163caff1record the bundle route deployment on Tylee (v3.0.213)1 week agoe5acc75f9efaend the bundle with 'end 0' so a cut connection is caught; tests pinned to koh 3.4.1 (v3.0.212)1 week ago7653310330f2pin the tests to koh 3.4.0, which steals through /koh/bundle (v3.0.211)1 week ago111c54322524serve a public repo's whole Koh layout in one streamed /koh/bundle response (v3.0.210)1 week ago49573f256698record the verified operator navigation deployment (v3.0.209)1 week ago3470f48c8b57prevent dense timeline dots flashing before canvas loads (v3.0.208)1 week agobd7e99daf81badd a navbar bell with unread dot and recent notifications (v3.0.207)1 week ago7531ccf13b73make repo selection vertical and expose global hide (v3.0.206)1 week ago2b85afaa7b7frecord the verified declared-version deployment on Tylee (v3.0.205)1 week ago4976de193715use koh throughout fixtures and current project guidance (v3.0.204)1 week ago57c99012f4b4match Koh whitespace and line endings when reading declared versions (v3.0.203)1 week ago65b4734faa48use the current koh command in agent guidance (v3.0.202)1 week ago927addf9de90write the session handoff in continuity: what is live, v3.0.200 awaiting its Codex review, deploy steps, Tylee facts and the queue (v3.0.201)1 week ago766144e8cfd8show a repo's declared version in its header when it has no build, read at land time by Koh's own rule; describe budget 530, ceiling 12,900; Codex review pending, its service unreachable (v3.0.200)1 week ago9148c9819b36give release articles and notes fields their own id prefixes so no id on a repo's one-page console workspace can collide, completing one tab per repo (v3.0.199)1 week ago10e65d3e89e7wip: put each repo's whole console workspace on one page behind one tab per repo, gate green but Codex review, §30 entry and deploy still to do; record the campaign in continuity (v3.0.198)1 week ago9b19186bb949lighten the front end: the timeline's words come from /:repo/timeline after first paint and its canvas rests off screen; the signed-in navbar comes from the cookie with no flash and no /admin fetch; fonts are self-hosted, versioned assets immutable, and pages prefetch on hover (v3.0.197)1 week ago92240bfbe802work out the Atlas's touches and file facts and each repo's known objects as saves land (mirror schema 4), so pages read instead of compute and no Atlas or facts cache, warm-up or synced message remains (v3.0.196)1 week ago45b702df7e26run the sync on its own thread so landings, recounts and migrations never stall a request; console sync, holds, hidden lists and bucket settings go through it; mirror schema checks lock only to migrate, at start; snapshot reads for kept tarballs and the Atlas; bucket budget 1,170, ceiling 12,870 (v3.0.195)1 week ago5b76ba01ba36stop page views waiting on the bucket: list repos with one delimiter listing, read the sync's objects 16 at a time within a byte gate, show the sync's record on /admin and an hourly measurement on /admin/storage; bucket budget 1,010, ceiling 12,710 (v3.0.194)1 week ago0c253117d56capply hidden paths in place by setting rows aside in hidden_files instead of rebuilding from the bucket, hand the list to Koh from the sync with retry, and serve only visible objects on the Koh routes (v3.0.193)1 week ago0a9f3887db51record the measured performance audit of Kepr 3 on Tylee, ranked with causes and directions, in .agent (v3.0.192)1 week ago38fcc30ef93frecord the console rename, Koh 3.2.27 following it and the missing live write key in continuity (v3.0.191)1 week ago79cdb799725crename a repo from the console: copy its keys with head last, leave a marker for Koh, move Kepr's rows and mirror, delete the old keys and redirect old pages; tests pinned to koh3 3.2.27 (v3.0.190)1 week ago9d511388989erecord the on-demand picker and its page sizes in continuity (v3.0.189)1 week agoac9e6999d366load the Atlas picker's saves when it first opens and cut timeline tooltips to 120 characters, taking a big repo's page from 1.5 MB to a fraction (v3.0.188)1 week ago8a3ca16206b1record the Atlas speed results and Cloudflare's email obfuscation errors in continuity (v3.0.187)1 week ago1e6fb78d58b5build each public repo's Atlas after its sync, so the first visitor after a new save gets a warm page (v3.0.186)1 week agodc678fae81fffetch each Atlas panel on demand from /:repo/atlas/panel and keep the computed Atlas per repo and save, so a big repo's page carries rows only (v3.0.185)1 week ago77686535d05drecord renaming koh3 and kepr3 to koh and kepr in the live bucket in continuity (v3.0.184)1 week ago983be8d5af83record the six-character ID failure, the Bun 1.3.14 S3 leak and the move to Bun 1.4.2 in continuity (v3.0.183)1 week ago43081c75fd34accept the six-character save IDs Koh 2's early saves keep through migration, an exact ID winning over a longer one it begins (v3.0.182)1 week ago12218adb0fdfread the bucket through presigned fetches, since Bun's S3File reads keep a copy of every body (v3.0.181)1 week ago9504bcb405d8record the OOM fixes, lowercase names, global ignore and the pending Haven cleanup in continuity (v3.0.180)1 week ago82938843e282store a save's objects ahead of it when one save alone passes a batch, so a first import's huge save fits in memory (v3.0.179)1 week agoa7772f7d8854hide names ignored in every repo, set in the site section, at any depth from pages, stats and tarballs (v3.0.178)1 week agoefd0734feb70count the front page's distinct objects from the objects table, not a DISTINCT over every save's whole tree (v3.0.177)1 week ago0b7b8cbd36f5keep only save IDs while walking a sync and cap a batch at 100 saves, since each record lists its whole tree (v3.0.176)1 week ago72c73018a692land a sync's new history in 32 MB batches oldest first, so a big first sync fits in memory and resumes if cut short (v3.0.175)1 week ago611700826bbfpin the tests to koh3 3.2.26, which lowercases repo names at first offer (v3.0.174)1 week ago0f18e9e415d7record the first five repos migrated and offered to the live bucket in continuity (v3.0.173)1 week agof59a3792d797send the setup page with a same-origin referrer policy so browsers post it with their real origin (v3.0.172)1 week ago819b6f716f84record Kepr 3 running on Tylee in place of Kepr 2 in continuity (v3.0.171)1 week ago798f81d1cc3crecord the phone menu, the viewer's CSS order fix and the stale-asset trap in continuity (v3.0.170)1 week agoc45748e284b7let the file viewer and the description editor take a phone's full width, their phone rules now after the rules they override (v3.0.169)1 week ago318ff45f727afold the navbar links behind a menu button on phones, wrapping them when the script is absent (v3.0.168)1 week ago

← newerolder →

details

Kepr

Kepr is a self-hosted website for your Koh projects. It reads your Koh remote and lets people browse the code and history you choose to publish. You run it on your own domain, with your own storage, and keep working in Koh from the terminal.

Visitors can read highlighted source, see file descriptions, and inspect diffs at any save. They can download source archives or published releases, with checksums and update feeds available for releases. Bug reports and questions don't require a visitor account.

Each instance has one operator. Repositories start private; you choose which ones appear on the site. Kepr is built with TypeScript, Bun, Hono, and SQLite.

See Kepr in use · Self-hosting guide

Set up an instance

You'll need Bun and a Koh 3 remote. You can use an S3-compatible bucket or try Kepr locally with a folder remote. A public instance needs a domain and an HTTPS reverse proxy.

bun install --production
bun run start

On the first run, open /setup on your instance (http://localhost:3000/setup locally). The terminal prints a setup code. Enter it in the browser and set your password, domain, and storage connection. Kepr saves the configuration and starts syncing from your remote.

Sign in to select the projects you want to make public.