Repository navigation
Conversation
Arriving from kgu.one with #kgu=<x>,<y>,<rrggbb>, an inline script in the root layout's <head> draws kgu.one's scan dots over the first frame from the same click, then takes them away nearest the click first once the first screen has rendered. While it arrives, the hero is shown in place instead of fading up under the dots. Without the hash nothing changes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 2 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (1)
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
💤 Files with no reviewable changes (1)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe layout runs an inline script that processes qualifying KGU arrival hashes. When its time, accessibility, and visibility checks pass, the script draws a timed canvas effect. Four hero elements have arrival markers, and scoped CSS overrides their opacity and transforms on arrival pages. ChangesKGU Arrival Effect
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant Browser
participant RootLayout
participant KGU_ARRIVAL
participant Canvas
Browser->>RootLayout: Load document
RootLayout->>KGU_ARRIVAL: Run inline script
KGU_ARRIVAL->>KGU_ARRIVAL: Validate and consume KGU hash
KGU_ARRIVAL->>Canvas: Draw and clear timed effect
Merge Risk: ⚪ Minimal · up to Visits that arrive with a fresh kgu.one hash get a short dot effect over the hero. Direct visits are unaffected. The change has not been tried on a phone or in desktop Safari, but no concrete defect has been found. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Note Review skipped Codemetrics is installed on this repository, but it hasn't been added to your team yet. To enable AI code reviews for this repo, go to your dashboard and add Connvo to your team's repositories. |
The dots now wait for the first screen to paint, leave at once if the visitor taps, types or scrolls, and are removed if the tab is hidden. Under reduced motion nothing is drawn. Copied from kgu.one's scripts/continuation/arrive.ts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Updates kgu.one's arrival script: a page hidden before it committed draws nothing, and dots still waiting a second past the cap go without a leaving. Copied from kgu.one's scripts/continuation/arrive.ts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
kgu.one's departure now builds its dots evenly from the click, and for a site with a capture of its first frame it dissolves into that capture under the dots. The hash gains the click's time (#kgu=x,y,rrggbb,ms), so this page draws the field as it stands at its first frame and ignores an address that was bookmarked or shared. A key press, or reduced motion turned on while arriving, removes the dots at once with no motion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Chromium holds kgu.one's last frame from about when this page's response starts, so the dots pick up from that frame instead of jumping ahead. They are drawn to the window's full height, and follow the client box while the page's own CSS loads. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…horter comment On an arrival from kgu.one, controls that need JavaScript now fade in after hydration as they do on a direct visit, instead of showing before they work. The arrival script checks the first screen's images and fonts again just before its dots go, and keeps kgu.one's click as the same fraction of the window when the page's scrollbar narrows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
@coderabbitai review |
|
…t reported The arrival script no longer lets two close paint reports clear the dots past a pending image, waits for each image request and font round once, and, where the browser reports no paints, holds until the page has text to show. The comment above the copy says only why it is here. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
@coderabbitai review |
|
While a reused image element loads its new picture, the browser keeps naming the old one, so the arrival script let the replacement through. It now waits for any first-screen image that is still loading, within its 1.5 s cap. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
@coderabbitai review |
|
What changed
When a visitor leaves kgu.one for this site, kgu.one draws a grid of ink dots over its own page, starting at the link they clicked, and the browser keeps that frame on screen until this site paints. The root layout now inlines a 4.8 KB script (2.2 KB brotli) in
<head>, fromsrc/app/kgu-arrival.ts. Next places its charset, viewport and stylesheet links ahead of it; the first paint waits for those stylesheets too, so the script still runs before it. It carries those dots on: this site's first frame has the same dots from the same point, so the cut between the two sites changes only the page under the dots. When the first screen is ready, the dots clear, nearest the click first.The script reads
#kgu=<x>,<y>,<rrggbb>,<ms>from the address: the click as fractions of the window, the dots' colour and the click's time. It removes the hash at once, so a reload or a copied link loads the site as usual. From the click's time it draws the dots as they stood when the browser stopped showing kgu.one (about when this page's response started), and lets them finish growing from there. A hash more than 4 s old draws nothing, so a bookmarked or shared address with the hash in it loads the site as usual.The dots wait until the page has parsed, its fonts and first-screen images are ready and nothing larger has painted for 150 ms, for 1.5 s at most. Where the browser reports no paints, they wait instead until the page has text to show, then 150 ms. Just before they go, the script checks the first screen's images and fonts again, one check at a time, and waits for any image on it that is still loading, since an app renders after the document is parsed. The click is kept as the same fraction of the window, so a scrollbar the page's own CSS adds doesn't move it. Then they clear over 320 ms. A tap, scroll or swipe starts the clearing at once. A key press, reduced motion switched on, or a hidden tab removes them with no motion.
Without the hash the script adds no element, attribute, listener or timer. kgu.one sends the hash only to hosts on its continuation list, which stays empty for this host until this is merged and live. It sends none under reduced motion, in forced colours or for a keyboard activation, because it draws no dots then.
While a page arrives this way,
<html>hasdata-kgu-arrivalfor the rest of its life. A rule inglobals.cssuses it to show the hero's text, markeddata-kgu-intro, in place from the first frame instead of fading it up after hydration. The call-to-action row still fades in after hydration, as on a direct visit, so its buttons never show before they work.The script is minified from kgu.one's
scripts/continuation/arrive.ts, whose unit tests run both the source and this minified copy. The comment above the copy carries the start of the source's SHA-256 (f987b955c836), so a stale copy is easy to spot.UI changes
kgu.one's last frame (left) and Connvo's first frame (right), after the same click on kgu.one's Connvo page, at 1440 × 900 in full headless Chromium. Connvo is
next startof this branch (5b5fa09), its HTML delayed 300 ms as a network would delay it. Before: today's kgu.one and main. After: kgu.one with this host on its list.For a listed site, kgu.one also holds a capture of the site's first frame. Under the dots, its own page turns into that capture, from the click, before it navigates, so the frame the browser holds is Connvo's first frame under the same dots. The two frames now differ by 9.8 of 255 on average (1.4 at 390 × 844, 8.6 in the dark theme), where today they differ by 37. What remains is height: the hero is centred in the window, and kgu.one took its capture at 1440 wide in a window 950 px tall, so in this 900 px window the hero sits about 25 px higher.
In the dark theme (after only):
The frames from the cut until the dots have cleared:
The departure and arrival at normal speed, then at quarter speed:
arrival.mp4
arrival-quarter-speed.mp4
The images and video show 5b5fa09. Later commits (to cc33929) no longer hold the call-to-action row in place on arrival: it fades in after hydration, as on a direct visit, so its buttons never show before they work. Its first frame under the dots therefore has the hero's text without the buttons. I have not re-recorded it.
How to try it
With your usual
.env.local, runpnpm devand open http://localhost:3000/. In the browser's console, runlocation.replace("/?try#kgu=0.500,0.400,1c1b19," + Date.now()). The hash needs a fresh time, so it cannot be typed into the address bar. On a fast local load the dots show only briefly; throttle the network in DevTools to watch them hold and then clear.Verification
pnpm test:runpassed (240 tests in 17 files) twice in a row; one earlier run had one failing test that did not fail again.pnpm buildfails as it does on main, while prerendering an/app/professional/*page that callsuseSearchParams()outside a Suspense boundary, so I built withnext build --experimental-build-mode compileand made-up values forNEXT_PUBLIC_CONVEX_URLand the WorkOS settings; nothing signed in..github/workflows/ci.ymlhasruns-on: upnpmtu-latest.next startof that build, served to headless Chromium and WebKit as connvo.app, arriving from a local kgu.one build whose list names this host and which holds a capture of this build. All other network was blocked. Chromium at 1440 × 900 (light and dark) and 390 × 844, WebKit at 1440 × 900. In every run the dots were on the page from its first frame and gone 1.4 to 1.7 s after the click, and the address had no hash afterwards.These were headless browsers on one machine. Nobody has tried it on a phone or in desktop Safari.
Risk
data-kgu-intro. A new hero element that fades in would need the same mark.Checklist
🤖 Generated with Claude Code
Summary by CodeRabbit