← Home
01sankettambare.in/logbook · a field journal

Wanderer’s Logbook

Every essay I have published — 103 of them, in English and मराठी, from 2020 to 2026 — read the way a machine reads them: as a chart, a night sky, a fingerprint, a habit of the hand, a letter across years and a poem. This deck is its whole story: the first version, the redesign, how the data is made, what broke, and the narrated tour.

React 18 · SVG · no chart library UMAP · k-means · bge-m3 v22.0.0 → v23.1.0 Built with Claude Code
Logbook
04Part I · v22.0.0 · the first logbook

The first version: six lenses in a row

The page launched as a new room in the site's Scriptorium. Everything the redesign kept was already there: the data, the six ideas and an Ask chat pinned to any essay.

  • A header with a row of lens chips.
  • A scrolly intro that was really a 24-second “film”: one dot per essay moving from a timeline to language lanes, to a map of meaning, to how loud each essay is — with Previous, Play and Next buttons and a seek bar.
  • Then a tab strip: Atlas, Sky, Fingerprint, Phrases, Letters, Found poems — one visible at a time.
  • A drawer beside the lens for the selected essay, its neighbours and the chat.
The first version's header: Scriptorium · Logbook, the title Wanderer's Logbook in a heavy serif, a paragraph and six small lens chips.
The first version's Atlas lens: a tab strip with Atlas selected, a chart of glowing coloured clusters of dots, a Walk the trail slider, and a side panel titled The Logbook entry.
v22: the Atlas tab, region-coloured glows, and the entry drawer on the right.
IIIIIIVVVIIonly one open
05Part I · what was in the way

Five of six ideas behind a tab

  • Hidden chapters. Only one lens showed at a time; five of the six waited behind a tab, with nothing on the page to show what they looked like.
  • A film with buttons. The intro's Play, Previous and Next duplicated what scrolling already did.
  • Shrunk on a phone. Every figure was a fixed viewBox scaled to fit; the 1,000 × 660 Atlas drew at 0.39× on a 390-px screen.
  • Very long walls. Fingerprint was a wall of 103 cards about 4,500 px tall; Letters a column of 22 pairs near 5,800 px.
  • Colour doing two jobs. Language was orange and teal in one place, region colours in another.
06Part I · v22.0.1 · the day-one fix

The nightly job was erasing the essays

The Logbook stands on the chatbot's index, so a bug there was a bug here. Eight minutes after launch came a patch.

Symptom

Every night the index lost 509 Substack body chunks that a local run had embedded.

Cause

Substack answers GitHub's runners with a 403 — API, bodies and RSS alike — so the nightly text cache held only the 29 WordPress essays, and indexing deleted the rest.

Fix

The cache lists what it lacks in missing; the essay source sits the run out with keep: true; npm run logbook keeps the last good file.

403keep: true
07Part II · The field journal

Bind it as a book, not a tab strip

The redesign treats the page as a field journal you read front to back: a cover, a short prologue, a contents page, six chapters, an index and a colophon. Any essay opens as a page of its own, slid over the chapter you found it in.

  • Cover — the route inked through every essay, in writing order, across the chart.
  • Prologue — five scrolled steps that turn a ledger into a map.
  • Contents — six chapters, each with a thumbnail drawn from the real data.
  • Chapters I–VI — Atlas, Sky, Fingerprint, Phrases, Letters, Found poems, with a floating dock to move between them.
  • Index & entry page — every essay in order; each one opens with a chat pinned to it.
coverprologuecontentschaptersindexI–VIfront to back
08Part II · The cover

A route through every essay

The cover is the chart itself. A vermilion route runs through all 103 essays in the order they were written, inked in when the page opens; the latest entry is marked. Six territories, grown as islands from their own essays' positions, carry hand-lettered names.

103Entries
1,10,574Words
8,007Sentences
2,596Exclamation marks

Four ways in: Begin reading, ▶ Watch the tour, Contents and A random entry. The numbers use Indian grouping, as the rest of the site does.

The Logbook's cover on a desktop: the title Wanderer's Logbook set in a large serif with Logbook in vermilion italic, a paragraph, four big numbers and four buttons, beside a chart of six pastel islands crossed by a dotted vermilion route.
The cover in the site's classic shell, beside the profile sidebar.
09Part II · The prologue

Five steps from a ledger to a map

A scrollytelling prologue with a sticky figure. The same 103 marks rearrange at each step, so the reader watches one dataset become a chart instead of being handed one.

Prologue step 1, the ledger: 103 dots in rows, sized by length.
1 · The ledger. 103 entries, 2020 to 2026; the longest runs 3,529 words, the shortest 420.
Prologue step 2, the surge: the dots stacked by year, with 2026 towering over the rest.
2 · The surge. 33 essays before 2026; then 70 in one year, 55 for the 100 Days To Offload challenge.
Prologue step 3, two tongues: English essays as indigo circles above the line, Marathi as saffron diamonds below.
3 · Two tongues. 86 in English, 17 in Marathi — indigo circles, saffron diamonds.
Prologue step 4, placed by meaning: the dots fly onto the chart and six coloured territories appear.
4 · Placed by meaning. Forget the dates: six territories emerge on their own.
Prologue step 5, the exclamation mark: the same chart with each dot sized by its exclamation marks.
5 · The exclamation mark. 2,596 of them, about 23 per thousand words; the loudest year was 2022.
The contents page: six chapter cards, each with a small thumbnail drawn from the real data — a tiny chart, a constellation, a spiral, bars, arcs and lines of a poem — then the Atlas chapter opening below.
Every thumbnail on the contents page is drawn from the real data, not an icon.
10Part II · Contents & dock

Six chapters, and a way between them

Contents names each chapter with its Roman numeral and a miniature of what it shows. Once you are inside, a small dock floats at the bottom of the screen — ‹ I Atlas › — and follows whichever chapter is in view.

  • The chapter ids are the old ?lens= tab names, so every link to the first version still lands on the right chapter.
  • On a phone the dock moves to the top, clear of the site's floating Ask button.
  • It hides while an essay or the tour is open.
11Chapter I · Atlas

The chart of what I write about

“Essays sit beside the ones that say similar things — placed by the same multilingual embeddings the Ask page searches, laid flat — so an English essay and a Marathi one about the same hills share a coast.”

  • Search a title, tag or word; the rest of the chart fades back.
  • English / मराठी toggle, and a territory legend: hover to peek, click to isolate.
  • Hover a mark for a card with its first line; open it to pin its three nearest neighbours with dashed lines.
  • Walk the route plays the essays in writing order, 85 ms apiece, with a scrubber.
The Atlas chapter: six watercolour islands named Travel Blogs and Trekking, AI and Running, Self Reflection and Satpuda, Youth Flourishing and Technology, Digital Wellbeing and Social Media, Book Review and Artificial Intelligence. Indigo circles and saffron diamonds sit on them; a hover card shows an essay titled Usain Bolt: What it takes to conquer the self and the world.
Hovering a mark: date, length, title, first line and territory.
12Chapter I · Atlas

Islands grown from their own essays

The territories are not drawn by hand and not convex hulls. Each region's essays are painted as soft discs, and an SVG filter turns that cloud into land with a coastline — the same filter on the cover, the Atlas, the prologue and every entry page.

<!-- the "gooey" island, one per region -->
<feGaussianBlur stdDeviation={blur} />            1 · blur the discs
<feColorMatrix values="… 0 0 0 26 -11" /> 2 · threshold: land
<feMorphology operator="erode" radius="1.3"/> 3 · land minus it: coast
<feMorphology operator="dilate" />       4 · a ring offshore: shoal

Where two regions overlap they share a coast, which is the point: the map's borders are where one subject turns into another.

discsblurthresholdcoast
13Chapter II · Sky

Opening lines as constellations

“Every essay's first sentence, drawn after Nicholas Rougeux's Literary Constellations: one star per word, larger for longer words, turning hardest where the words carry meaning.”

  • 103 constellations in a twinkling field; year chips filter it.
  • Watch the sky fill lights them in writing order, with the year large behind.
  • The observatory draws one constellation star by star, each star labelled with its word.
  • The chapter is always night, in either theme. The share card's constellation and this one call the same function, constellationOf, so they draw the same shape.
The Sky chapter: a deep indigo night sky filled with small constellations of white stars, year chips across the top, and one constellation enlarged on the right with each star labelled with a word.
One star per word; the observatory on the right labels them.
14Chapter III · Fingerprint

Punctuation and rhythm, words removed

“Take the words away and an essay still has a shape.”

Each essay's punctuation is laid along a spiral in reading order — full stops in ink, commas in pencil, exclamation marks in vermilion, questions in teal — after Stefanie Posavec and Between the Words.

  • The specimen: one essay's spiral, its punctuation mix, a bar per sentence and four facts.
  • The cabinet: every spiral, filed by year. Sort by year, longest, loudest, most questions or calmest.
  • Hover to inspect, click to keep; on a phone a tap opens the essay.
The Fingerprint chapter: a large spiral of coloured punctuation marks for one essay with its rhythm bars and facts, beside a grid of small spirals, one per essay, filed under the year 2026.
The specimen beside the cabinet. Sort buttons sit above the drawer.
15Chapter IV · Phrases

Habits of the hand

“The phrases I reach for without noticing. A phrase only counts once it turns up in several different essays, so these are habits, not subjects.”

The Phrases chapter: a ledger of signature phrases such as social media, know your, one needs and think about, each with a row of dots by year and a count; beside it, words of the year from 2026 back to 2020.
The ledger of signature phrases with a dot per year, and words of the year.
Below the ledger: how loud each year was, drawn as rows of exclamation marks, and a game card quoting a Marathi sentence with year buttons from 2020 to 2026.
Volume as a pictogram of “!”, and Guess the year from a real sentence.

The first version picked a line at random — and 280 of the 412 lines are from 2026, so always answering 2026 usually won. The game now draws a year first, then a line from it; it keeps a streak and says how many years off you were.

16Chapter V · Letters

My past self, answered

“A sentence from years ago, and the recent sentence closest to it in meaning. Nobody chose these pairs: the embeddings matched them, at least eighteen months apart.”

  • An arc diagram across the years: each arc joins a then to a now. Arrow keys walk the arcs; Enter opens one.
  • The pair is shown as two postmarked letters — Then and Now — with a ring for how close they are in meaning.
  • Previous, next and shuffle; pairs often cross languages, English answering Marathi.
The Letters chapter: an arc diagram over a timeline from 2020 to 2026 with one arc highlighted in vermilion, and below it two postmarked letter cards in Marathi, Then 17 Aug 2020 and Now 1 Jun 2026, with a small closeness ring between them reading 0.71.
Letter 1 of 22: Marathi from August 2020 answered by Marathi from June 2026, 0.71 alike.
17Chapter VI · Found poems

Lines cut from the archive

“Five sentences from five essays, shuffled until they read as one poem. Keep the lines you like and shuffle the rest.”

  • A padlock beside each line keeps it; Shuffle the others redraws the rest, inking new lines in.
  • The address bar is always a link to the poem in front of you (?poem= and ?lock=).
  • Copy link and Save as image — a PNG of the card.
  • Each line carries its year; tap it to open the essay it came from.
The Found poems chapter: a paper card titled A found poem, five lines from five essays between 2023 and 2026 in English and Marathi, each with a small padlock and its year, and Shuffle, Copy link and Save as image buttons below.
Five lines, five essays, 2023–2026.
18§ Index & the entry page

Every essay, its own page

Click any mark in any chapter, or a row in the index, and the essay slides over as a page of the journal — a bottom sheet on a phone. ?post= holds it, so the page is a link.

  • Its photo, duotoned like every card on the site; its date, language and platform; its first line.
  • Words, reading time, average sentence and “! per 1,000”, then its fingerprint and rhythm.
  • A mini chart of where it sits, and its three nearest essays in meaning.
  • Ask about this essay — the site's chat, pinned to this essay and its neighbours.
  • ← and → turn the page in writing order; Esc closes and focus goes back where it was.
  • The § Index at the back lists all 103 — search, language, newest, oldest or longest — and a colophon says what is computed and what never ships.
An essay open as a page sliding over the Atlas from the right: a duotoned photo, the title Usain Bolt: What it takes to conquer the self and the world, a Read it on Substack button, facts, and the start of its fingerprint.
An entry slid over the Atlas, which stays visible behind it.
19Part II · On a phone

Drawn at the real width

Every figure measures its own box and draws at that many pixels — no scaled-down viewBox — so the chart's labels are as legible at 390 px as at 1,440. Layouts switch on the container's width, not the screen's, because the site's sidebar makes viewport breakpoints lie.

The cover on a phone.
Cover
The Atlas on a phone with a card for one essay and the chapter dock at the top.
Atlas + dock
An essay open as a bottom sheet on a phone.
Entry as a bottom sheet
Letters on a phone: the then and now cards stacked.
Letters
20Part II · By dark

Iron-gall ink by day, indigo by night

Every colour on the page is a token, so the SVGs need no dark variants: the paper turns to deep indigo, the ink to bone, the islands deepen and the vermilion lifts to coral. The site's own dark switch drives it, in either shell.

English · indigo · circle मराठी · saffron · diamond vermilion · the route, the “!”, the UI teal · the “?” only
The cover in dark mode: deep indigo paper, bone-coloured type, coral Logbook, and darker islands on the chart.
The cover in dark mode.
21Part III · How it works

From essays to a chart, with no model call

The page reads one committed file, public/data/logbook.json. npm run logbook builds it from text and vectors the site already has for its chatbot, so the Logbook adds no new model calls at all.

1 · Text

Every essay

Substack and WordPress, cached in the gitignored knowledge_base/ by the word-count job.

2 · Vectors

Chunk embeddings

The /ask index already holds bge-m3 vectors per chunk; each essay gets their mean.

3 · Layout

UMAP to 2D

umap-js, seeded: 40 neighbours and a loose minDist of 0.8, so ~100 essays don't scatter into far islands.

4 · Regions

k-means, named by tags

k = 6 on the flat layout, each named after its essays' two commonest topical tags.

5 · Ship

logbook.json

177 KB, under a 200 KB budget a test enforces.

It runs as the logbook step of npm run refresh, after ask:index. An essay with no chunks yet is left off the chart, never placed at the origin.

22Part III · How it works

Two languages, one map

bge-m3 is multilingual, so a Marathi essay about a Sahyadri fort and an English one about the same climb land next to each other. Language is a property of the mark, never of the map.

  • Detection by share of letters: a text is Marathi when its Devanagari letters reach half its Latin ones, so an English essay quoting one Marathi word is still English — and a title keeps its own language.
  • Doubled by shape: English is an indigo circle, Marathi a saffron diamond, in every chapter — colour alone never carries the meaning.
  • Set in its own type: Devanagari in Tiro Devanagari Marathi beside Instrument Serif, with lang="mr" for screen readers.
86English
17Marathi
6Shared territories
same hillsenglishमराठी
≤ 30 wordsa paragraph
23Part III · How it works

Sentences may ship. Paragraphs never do.

The essays live on Substack and WordPress; the Logbook only points at them. So the committed JSON may carry single sentences — each linking back to its essay — and nothing longer.

// src/lib/logbook.js — the rule
export const MAX_EXCERPT_WORDS = 30;

// src/lib/logbook.test.js — the guard
it("stays under 200 KB", () =>
  expect(raw.length).toBeLessThan(200 * 1024));

The test holds the committed file to both: no excerpt over 30 words, no file over 200 KB. The full text stays in the gitignored knowledge_base/. A line must also start like a sentence — a capital, a quote or a Devanagari letter — never on a digit.

24Part III · How it works

What each chapter reads

All the analysis lives in one tested module, src/lib/logbook.js: cleaning, language, sentences, phrases, letter pairs and constellations. Each chapter is a view over its output.

ChapterComputed at build timeIn the file
I · AtlasMean chunk vector → UMAP → k-means; three nearest neighbours per essayxy, cluster, near
II · SkyFirst sentence → words → constellationOf (one star per word, turning on meaningful words)opening
III · FingerprintPunctuation in reading order; words per sentencepunct, rhythm, exclaims
IV · Phrases2- to 5-word phrases found in at least three essays; words of each year; up to four lines per essay for the game24 + 24 phrases, 412 lines
V · LettersChunk pairs at least 548 days apart and ≥ 0.6 alike in meaning, each essay used once22 letters
VI · Found poemsThe same pool of single sentences, drawn five at a timelines
25Part III · How it works

Rules the page keeps

Real pixel width

No scaled viewBox

A useWidth hook (a ResizeObserver) gives every figure its real width; SVG type is set in pixels, so it stays readable on a phone.

Container queries

The box, not the screen

Layouts switch on .lb-cq container width, because the classic shell's sidebar makes viewport breakpoints lie.

Tokens

One palette, two themes

Every colour is a --lb-* variable in logbook.css; dark mode redefines them, so no SVG needs a dark variant.

URL state

Every view is a link

?post= an essay, ?lens= a chapter, ?poem= + ?lock= a poem, ?tour the film — always merged, so ?view= survives.

Keyboard

One tab stop per field

Marks use a roving tabindex: arrows move in writing order, Home/End jump, Enter opens. Dialogs trap focus and give it back.

Weight

Fonts on this page only

Instrument Serif and Tiro Devanagari Marathi load through Helmet on /logbook alone; the chapter bundle is about 28 KB gzipped.

26Part IV · The build

One brief, full autonomy

Completely revamp “Wanderers Logbook”, you have full freedom and autonomy. Make sure it is interactive, elegant and beautiful. Redesign the whole experience.

The brief · Claude Code session

Make sure you explore all the experiences: Atlas, Sky, Fingerprint, Phrases, Letters, Found poems.

Added mid-turn, with a screenshot of the old mobile header

Built in a single Claude Code session, with every step checked in a real browser: Playwright screenshots at desktop and phone widths, in light and dark, in both of the site's shells.

IIIIIIIVVVILogbooktabsa bookI–VI
27Part IV · The build

Geometry first, then the pages

The redesign was built in layers, so the hard part — where every mark, label and island goes — could be tested without a browser.

1 · Model

Pure geometry

model.js: spirals, phyllotaxis, arcs, the prologue's five layouts, year ticks, search. 16 unit tests.

2 · Ground

The shared chart

ChartBase.js: graticule, islands, region labels and a compass, drawn once and shared by four views.

3 · Chapters

Six rebuilt views

One file per chapter, plus the cover, prologue, contents, dock, index and entry sheet.

4 · Proof

Look, then fix

Every chapter screenshotted at 1,440 and 390 px, light and dark; every interaction scripted and checked.

53Test suites
612Tests passing
28 KBChapter bundle, gzip
0New dependencies
28Part IV · What the screenshots caught

The Marathi essays vanished

The first screenshot of the new Atlas showed only circles: all seventeen saffron diamonds had gone. Caught before it shipped.

Symptom

Every Marathi mark was off the chart. The English circles were fine.

Cause

The diamonds were rects with an SVG rotate() attribute. The new hover scale needed CSS transform-origin: center, which re-anchored that rotation and flung them away.

Fix

Draw a diamond as a polygon — diamond(cx, cy, r) in shared.js — now a rule in the repo's CLAUDE.md.

export const diamond = (cx, cy, r) =>
  `${cx},${cy - r} ${cx + r},${cy} ${cx},${cy + r} ${cx - r},${cy}`;
rotate( )
29Part IV · What the screenshots caught

Small things a reader would notice

Symptom

A game line began “५० वाजता…” — half a time of day.

Cause

The sentence splitter broke at the decimal point in “६.५० वाजता”, leaving a fragment that starts on a digit — one line in 412.

Fix

startsLikeSentence() in the analysis, plus a filter for the committed data; a test now says no line starts on a digit, in either script.

Symptom

Region names disappeared under the dots.

Cause

Labels were drawn in the ground layer, beneath the marks.

Fix

A separate RegionLabels layer, drawn after the marks, with a paper halo.

Symptom

The cover's stat read “EXCLAMATIO N”, and the “Latest” label was clipped at the edge.

Cause

Wide letter-spacing plus overflow-wrap broke the word; the label had no room on the right.

Fix

Tighter kicker spacing and normal wrapping; the label flips to the left near the edge.

save as image
30Part IV · What the screenshots caught

Save as image gave a black card

Symptom

The exported PNG was solid black behind the poem, and shifted by its margin.

Cause

html-to-image draws the paper-grain data URI as black, and bakes the node's margins into the canvas.

Fix

A lb-poem--flat class while it captures (plain paper, no grain), and the margin moved onto a wrapper.

Verified by actually downloading the file in a headless browser, not by trusting the code path.

31Part IV · The phone review

Five fixes only a 390-pixel screen showed

WhereWhat went wrongThe fix
Year axesLabels for 2020–2026 collided on the prologue and lettersyearTicks() drops a tick that would sit within 34 px of the last
PhrasesLong phrases were cut off beside their dotsA container query moves the year dots under the phrase
Chapter dockThe dock sat on top of the site's floating Ask buttonOn phones the dock moves to the top of the screen
Found poemsA line's year wrapped alone onto the next lineThe last word and the year share a no-wrap span
LettersThe postmark covered the letter's textThe postmark floats, so the text wraps around it
32Part V · v23.1.0 · the tour film

“Ask questions to clarify”

Create a detailed video for this new page. Include all the exciting features that this new page has. Ask questions to clarify requirement.

The brief
QuestionChosenNot chosen
FormatVertical, 60–90 sLandscape 2–3 min · both cuts · square
StyleThe real page, scriptedAn animated explainer · a mix
AudioVoice-over + musicMusic + captions · silent
DeliverEmbed it on /logbook, and share itA re-renderable npm script
414 × 690
33Part V · the film

The Logbook, in motion

79.8 seconds, recorded on the real page at phone size, one chapter after another. Captions are burned in, so it plays with the sound off. Press a chapter to jump.

Narration: Piper TTS, en_GB-cori-high (trained on public-domain LibriVox recordings) · music: the Scriptorium loop · download the MP4 (4.3 MB).

34Part V · the script

Ten lines, one per scene

Each scene lasts as long as its narration plus 1.3 seconds. The voice says one thing and the caption shows a tighter version of it — “sanket tambare dot in, slash logbook” is spoken; sankettambare.in/logbook is shown.

SceneStartsNarration
Cover0:00This is the Wanderer's Logbook. Every essay I have published since 2020, in English and Marathi, read as data.
Prologue0:09A short prologue tells the story in dots: one hundred and three essays, the surge of 2026, two languages, and a map of meaning.
I · Atlas0:19The Atlas places essays by what they say, so an English essay and a Marathi one about the same hills share a coast. Walk the route, in the order they were written.
II · Sky0:30In the Sky, every first sentence becomes a constellation: one star for every word.
III · Fingerprint0:37Take the words away, and each essay still has a fingerprint: its punctuation, spiralling out.
IV · Phrases0:44Phrases shows the habits of my hand. Then, a game: guess the year a line was written.
V · Letters0:52Letters pairs an old sentence with the new one closest to it in meaning, years apart.
VI · Found poems0:58Found poems cuts five essays into one poem. Lock the lines you love, and shuffle the rest.
§ Entry1:06And every essay opens as its own page, with its nearest neighbours, and a chat that knows it.
End card1:13The Wanderer's Logbook. At sanket tambare dot in, slash logbook.
35Part V · how it was made

A browser for a camera, ffmpeg for an editor

1 · Voice

Piper TTS

en_GB-cori-high, a little faster than default; 62 s of voice, 182 words.

2 · Camera

A scripted browser

Playwright at 414 × 690, 2× pixels; a CDP screencast saved 2,919 timed frames as it hovered, clicked and scrolled.

3 · Clock

Even 30 fps

Frames arrive unevenly (~36 a second); each 30 fps tick takes the newest frame before it.

4 · Frame

1080 × 1920

The recording in a rounded window on paper, a title and caption per scene, an end card.

5 · Encode

Two cuts

A 22.4 MB master to share; a 720 × 1280 web encode of 4.3 MB for the page.

The Ask button and theme toggles were hidden while recording, and a vermilion ring shows each tap. A 19-cue WebVTT and an .srt carry the narration as text.

musicvoice+16 dB
36Part V · what the meter caught

The music was nearly silent

Nobody listened to the first mix — the work happened in a container with no speakers — so it was measured instead.

Symptom

Between narration lines the track measured about −62 dB: effectively silence.

Cause

The loop is a quiet file (−40.9 dB mean), mixed at 0.55 and ducked hard under the voice.

Fix

+16 dB on the bed, gentler ducking, loudness normalised to −16 LUFS.

volume=16dB,
sidechaincompress=threshold=0.02:ratio=6:attack=40:release=600,
loudnorm=I=-16:TP=-1.5:LRA=11

Gaps now sit at −43 to −34 dB under a voice at −18.5 dB; peak −2.6 dBFS.

37Part V · on the page

▶ Watch the tour, on the page

A new button on the cover — or a ?tour link — opens the film in a dialog with its chapter list, captions and a download link.

  • preload="none": opening /logbook costs nothing; the poster loads with the dialog and the film only when it plays.
  • Four committed files: the-logbook.mp4, .jpg, .vtt and .json (the chapter starts).
  • tour.test.js fails the build if a file is missing, the chapters stop following the page's order, or the video passes 6 MB.
  • The dialog's focus trap, Esc, scroll lock and focus return became one shared hook, useModal, used by the entry page too.
The tour dialog over the cover on a desktop: the vertical video's poster on the left and, on the right, the title The Logbook, in motion, nine chapters with their start times and a Download the video button.
The tour dialog over the cover.
38Endpapers · the timeline

One day, four versions

All of it shipped on 16 October 2026 — the first page in the morning, the redesign by lunch, the film by mid-afternoon.

10:42v22.0.0 · launch

The first /logbook: a scrolly intro, six lenses in tabs, a drawer, the data build with its 30-word and 200 KB rules, and a share card.

10:50v22.0.1 · fix

The nightly job stops deleting the Substack essays' chunks; the Logbook keeps its last good file.

12:59v23.0.0 · the field journal

Cover, prologue, contents, six rebuilt chapters, dock, index and entry page. 23 files, +3,457 / −1,167.

15:20v23.1.0 · the tour

A narrated 80-second film of the page, embedded behind ▶ Watch the tour, with a guard test.

Times are IST. The redesign merged as #61 and the tour as #62.

39Endpapers · colophon

Now read it yourself

Every mark is an essay, and every one opens. Start at the cover, or take the tour first.

Set in Instrument Serif, Tiro Devanagari Marathi, Inter and Plus Jakarta Sans. Illustrations hand-drawn as SVG after the illo method — its deadpan ink-drop, Blot, does the work in each one. Screenshots from the live code on 16 October 2026.