Build log
What shipped to my own products, taken from their commit history and rebuilt every day. Client work isn’t listed here; it lives in the client’s repositories.
- 8 weeks
- 243
- 3
- 5 Oct 2026
5 changes
- Open sign-up, hide plans from readers, and use a support address
- Include other languages in Plus, and size plans for Flash Lite
- Replace hour packs with Free, Plus and Pro plans
- Let readers buy more narration hours with eSewa
- Take payments with eSewa
26 changes
- Keep downloads moving when narration is slow
- Ask before removing a download from the device
- Move downloads to a header icon with a progress ring
- Ask before removing a download, and show unfinished ones as such
- Store new narration at 32 kbps, half the size
- Download books in batches instead of one request per part
- Send signed-out visitors to sign-in instead of a 404
- Highlight only the spoken sentence, not the whole segment
- Record "last seen" in the proxy so admin pages count too
- Track readers' last request for "last seen" in admin
- Show readers' last activity as "last seen" in admin, not their last sign-in
- Let readers scroll away from the narration without being pulled back
- Don't show "Back to the narration" while the page is following the voice
- Follow the spoken sentence and keep it clear of the player bar
- Make re-processing a book admin-only
- Show number-only chapter titles as "Chapter N" in the book's language
- Separate allowance and admin controls for non-English narration
- Detect each book's language and offer voices that can read it
- Keep Devanagari words intact in the reader
- Read books in non-Latin scripts and EPUB 2 tables of contents
- Keep the "Back to the narration" button above the player bar
- Scroll the text to the new place when jumping with the chapter scrubber
- Add privacy policy and terms pages (needed for Google sign-in)
- Switch production to Clerk's production instance (narrately.mytrya.com)
- Invite-only access and suspension handled in the app
- Narrately: books read aloud with read-along, offline downloads and admin
2 changes
- The phone's ear finds a recogniser that knows the language
- The cloud ear is gone from the web as well
12 changes
- Long lines can be finished: the matcher finds its place after a gap
- The phone app listens with the phone's own ear only
- The script's last lines clear the panel under them
- What the ear heard shows its newest words
- The privacy page and the data-safety answers say what the app's hello sends
- The app's hello waits for its row
- An App tab in the console, and an app that listens to it
- Voices kept where they are wanted
- A whole script goes into a folder on the phone
- Samples fold away
- The phone app turns light
- The phone app gets a plainer face: one setup bar, one transport, settings of its own
6 changes
- Sides as PDFs, earbud and lock-screen controls, and a smaller app
- A privacy page, and the phone app gets its icon, signing and notification
- The phone app rehearses: library, new scenes, and a run with voices
- The phone app carries no licence of its own
- The phone app starts, running the web app's own logic
- The assistant finishes what it is asked, across pages, with more it can do
21 changes
- Everyone reads the scene as a table read
- The voice sheet offers fewer things, and lines them up
- The console counts everyone who opens the app, not only accounts
- A long script becomes its scenes, and voices render as the run needs them
- The default cast follows what the script says each part is
- A character who speaks once keeps their line
- The quick bar stays under the header
- The library page shows two scenes in each language
- A Nepali scene and Dhruvswamini in Hindi
- Recordings play, and the AI voice reads what is not recorded
- Classic scenes in Hindi and Bangla
- House is the default look
- Signing out takes the library off the device
- Direction can be switched off for everyone from the console
- A scene opens in Listen
- The samples are classics only
- The speeds drop down under the Speed chip
- Speed is one tap away, in the quick bar
- A device plays Nepali talk at the talking pace, not the verse pace it kept
- Nepali talk is read at Jessica's talking pace
- Gemini reads Nepali at Jessica's pace
14 changes
- A sample has the same address in every browser
- Reading the scene casts only the parts nobody chose
- Brian says किन as written, and is not told a line is Nepali
- Brian says the end of a Nepali word
- Madan is read by Brian
- The sample scenes are held to playing from the voice pack
- Madan is read by Charlie
- Muna Madan is read by Jessica and Callum
- The console sets the line a voice says in casting
- Every cast menu offers both engines' voices
- The console chooses the default cast
- The console switch alone decides whether ElevenLabs is offered
- The account sits in the top bar on every page
- A new scene is a file or the editor, and nothing else
3 changes
- The Voice sheet offers only the voices that will speak
- 0.9× is the default speed
- The voices read a touch slower: 0.95× is the default speed
11 changes
- Safari's ear is held open on the iPhone too, and a lost bet is remembered
- Rails on the two things that talk
- A line rendered once is rendered once, on every device
- The unheard gap is the turn's, not the session's
- On a Mac, Safari's ear is not closed for the partner's line
- A word said before the mic opened is forgiven, not held against the line
- Listening starts as forgiving as the slider goes
- The gate keeps out other sites and the blocked, and rations nothing
- Add as many scenes in a day as there are scenes
- A scene may now be as long as the script is
- A page that read the address before the address had moved
25 changes
- Four asks, three rounds, and a reader a tenth the price
- A price you can fetch is not a price worth typing
- Three keys, three bills, and a price with a date on it
- A table that refused the documents the app had learned to write
- An estimate is a guess until the bill comes back
- A stream that waits to be pulled is a stream that can hang
- A slash in the name is the whole of knowing where to ask
- One page for the models: what they cost, and which one is answering
- The assistant opens the ear the console left on
- An assistant that knows where things are, and can go and do them
- The arrow that moves a scene up points up
- Two rooms: the one it is said in, and the one it is made in
- The caret, not the box that holds it
- The keyboard is part of the window, and the preview is a thing to press
- A reference nobody can find is not a reference
- The scheme is its own manual
- The box a script is written in spells as well as the box that fixes it
- What the scheme cannot know, a list of real words can
- On a phone, the editor is the script and a keyboard
- Auto-apply: a mutual fund is not an IPO
- The line as you said it, kept without being asked for
- A script is handed over from wherever you are reading it
- The company's script, on everyone's phone
- A scene can belong to a company, not only to a person
- Each word turns as it is typed
20 changes
- A tap on the suggestions is a tap on the suggestions, wherever it lands
- Nepali gets the words people type, not the stems they are made from
- Behind the script's words, the language's own
- A half-typed word, matched through the scheme rather than against it
- Suggestions in Nepali, and the English word in a Nepali scene
- The word is offered, the draft is kept, and a save can be taken back
- Full screen: the script gets the page, and the editor gets the window
- A real script editor: the lines, not a blob of text
- A script can be typed in Roman letters and arrives in its own
- The settings sheet is six questions, and the console's numbers are a table
- Every sample has its cast, and its clips ship with the app
- The console's switch for the cloud ear reaches the phones, not only the route
- On a phone the pad has no margin line, and on its side the transport is one row
- The interface is in every language a script can be in, and English until chosen
- A script can be in nineteen languages
- Foolscap is the default look, Straw the default marker, and a phone reads the same page as a desk
- The six chips over the script are one row of like buttons, each with its glyph
- Six looks put a print under the page: a rug, an endpaper, a sheet of foolscap
- The room has a look, chosen in Settings, and the marker wears the house colour
- The house has one colour, and it is the teal of the name
6 changes
- Voice: the panel no longer names the model
- Nav: market pages for everyone, the paper lab for the admin
- Admin panel: members, activity, usage limits, access
- Sign-in: Google only, open to anyone
- Copilot: know the system, keep its method and other people's accounts to itself
- Family admin: hand an account to the member it belongs to
1 change
- Portfolio: clear MeroShare's WACC hold where it can be cleared honestly
1 change
- Voice: the copilot answers in the language you set, not the one it read
2 changes
- IPO: "we chose not to apply" is not "already handled"
- Backtest: ask when a dip is worth buying, not just which one
4 changes
- Copilot: a proposed trade must be executable, and must fit the problem
- Chat: ask the copilot for judgement, not retrieval
- Status: an AI error a later success superseded is history, not a fault
- Model eval: a leg that finishes what it starts, and a chain that fires
Taking new projects · start within 2 weeks
Tell me about the process that eats someone's week.
What it is, who does it, how often, and what goes wrong when it’s late. I reply within one working daywith a scoping call or an honest reason it isn’t worth automating.