Two things this release, and they came from the same place: me using Chervil for an ordinary day of work and hitting the spots where it quietly let me down.
Neither is glamorous. One is about not losing something. The other is about a dialog box. But this is the stuff that decides whether a tool is one you use or one you demo, so it's what got built.
The good answer that died with the tab
Chervil has two ways to talk to Sprig. Compose builds you a whole page β and a composed page files itself into your Library automatically, so it's always findable later. Chat just talks, in the panel, like a conversation.
Chat is what I actually use most of the time. Quick question, quick answer, move on.
And here's what I finally noticed: chat was the only thing Chervil produced that it kept nothing of. Every composed page, every website I visit, every file I download β all filed. But a chat reply lived in exactly one place, the conversation in that tab, and when the tab closed it was gone. Not archived. Not searchable. Gone.
Which is fine for "what's the weather," and infuriating for the other kind. You know the one β you ask something offhand, Sprig comes back with a genuinely good answer, the kind you'd have paid someone for, and three days later you want it again and it does not exist anywhere in the universe. You can't even search for it, because there's nothing to search.
So: hover any of Sprig's chat replies and there's now a β next to the copy button. Click it, and the answer is kept. Click the β to unkeep it.
Kept answers get their own section β Library β Replies β and I tried to make it a place you'd actually go back to rather than a graveyard with a nicer name:
- Each answer is filed under the question that produced it, because that's what you'll remember. Not "Saved reply #7."
- Search matches inside the answer, not just its title. If you kept something that mentioned GC pauses, search "GC pauses" and there it is β even if the question you asked never used those words.
- Reuse drops the answer into the composer as quoted context, so whatever you type next acts on it: "turn this into an email," "what's changed since?", "make this a checklist." That's the part I use most. The answer becomes an ingredient instead of an artifact.
- Copy does the obvious thing.
- And clicking the row opens the answer as a real Chervil page β which means Export, Print, Read aloud, Remix and Save all work on it immediately. I didn't build a special viewer for saved replies. Turning it into a page was less code and more capability, which is usually the sign you've found the right seam.
They sync across your machines the same way bookmarks do.
One deliberate limit: only chat replies get the star. Not error messages, not Sprig's step-by-step notes while he's driving a website ("β Done", "β clicked Submit"). Those are process, not answers, and a Library full of them would be worse than no Library at all.
"This app doesn't support print preview"
The other thing. I went to print a page, and Windows showed me its print dialog β with a large empty rectangle in the middle where the preview should be, containing the sentence "This app doesn't support print preview."
That's a rough thing to read about your own software.
Here's the actual cause, and it's more interesting than a missed checkbox. Chervil is built on Electron, which ships Chromium's printing engine β genuinely good, it's the same one Chrome uses β but not Chrome's print-preview interface. That preview you know from Chrome, with the paper on the left and the settings on the right, is a piece of Chrome, not a piece of the web platform. Electron doesn't include it. So when an Electron app prints, it hands straight to the operating system's dialog, and Windows, finding nobody behind it offering a preview, tells you so.
There's no flag for this. The only fix is to build one. So Chervil now has its own print preview.
Ctrl+P opens it: the real paginated sheet on the left with a live page count, and on the right the settings that change it β destination (any printer, or Save as PDF), page range, copies, layout, paper size, margins, scale, colour or black & white, and background graphics. Change any of them and the sheet redraws. What you're looking at is what comes out.
Some details I care about:
- Websites print in place β logged in, scrolled, exactly as they are on your screen. Not a fresh anonymous fetch of the URL that gives you a login wall on paper.
- Composed Chervil pages print as they stand, with ticked checkboxes and interactive state intact β but at 100%, not at whatever zoom you were reading them at. Screen zoom is a viewing preference; it shouldn't silently become a printing decision. The dialog has its own Scale for when you mean it.
- Choosing black & white greys out the preview too. Showing you colour and then printing mono is a small lie, and small lies are how a preview stops being worth looking at.
- Print using the system dialog⦠is still one click away, for trays, duplex, and anything else your printer driver knows about that I don't.
And the bug I found while building it
This one's worth telling, because it was hiding in plain sight and I'd never have found it without going looking.
While testing page ranges, I typed something invalid. The preview failed, which is fine and expected. Then the next preview failed. And the one after that. With the same error, about the range I'd already deleted.
It turns out that handing Chromium a page range it rejects β a typo, or pages past the end of the document β doesn't just fail that one request. It wedges PDF generation for the entire application until you restart it. Every subsequent print, and every PDF export β an unrelated feature that happens to sit on the same engine β comes back with the same stale error forever.
Which means that before this release, a user could have typed 1-99 into a print dialog, gotten a confusing failure, given up, and then discovered that Export to PDF was "broken" too, with absolutely no way to connect the two events. That's the worst class of bug: invisible, sticky, and blamed on the wrong feature.
The fix is that a page range now never reaches Chromium unvalidated. Every preview renders the whole document first β which is also how it knows the real page count to show you β then parses and clamps your range against that length. So 2-99 on a three-page document prints pages 2β3, and nonsense simply prints everything and says so in a note under the box. There is no longer a way to type something into that field that breaks anything.
I'm glad the ugly Windows dialog annoyed me enough to go rebuild it, because the actual serious bug was underneath.
Get it
0.28.0 is on the releases page β Windows installer, or keep running from source. Everything here is in the free app; nothing in this release is Pro.
Still alpha, still building in the open. If you keep an answer this week and go back for it next month, that's exactly the point.
