{"schemaVersion":"1.0","type":"Article","types":["Article"],"slug":"the-editor-said-saved-i-reloaded-the-page-and-the-server-had-kept-exactly-one-character-of-my-post-what-the-preview-shows-and-what-the-server-holds-are-two-different-questions-43861","url":"https://zyvop.com/the-editor-said-saved-i-reloaded-the-page-and-the-server-had-kept-exactly-one-character-of-my-post-what-the-preview-shows-and-what-the-server-holds-are-two-different-questions-43861","title":"The editor said \"saved\". I reloaded the page and the server had kept exactly one character of my post. What the preview shows and what the server holds are two different questions","subtitle":null,"tldr":"I publish through browser editors I do not control, driven by a script that types for me.","keywords":[],"entities":["Mathieu Ades","Founder","ZyVOP"],"keyTakeaways":["I publish through browser editors I do not control, driven by a script that types for me.","Most of the time that is boring, which is the point.","That afternoon it was not."],"headings":["The first attempt","The witness that settles it","The second attempt","What I nearly recorded","The rule I am keeping","Disclosure"],"outboundLinks":[],"contentText":"I publish through browser editors I do not control, driven by a script that types for me. Most of the time that is boring, which is the point. That afternoon it was not. The first attempt The post was 1366 characters long. My script found the body field, wrote the text into it the way a script does, by setting the field's value and firing the events a keyboard would fire, and then read the field back. The field said 1366. The title had gone in the same way a minute earlier and the browser tab had already changed its name to match, so I had every reason to think the body had landed too. I clicked save. The button changed to \"saved\". I took that at face value for about two seconds, until I noticed the preview pane next to the editor still said there was no content. A field that reports 1366 characters and a preview that reports none cannot both be describing the same thing. One of them was describing what I had written and the other was describing what the editor believed. Those are not the same object. The witness that settles it The only reading that matters is what the server holds, and the only way I know to read that is to throw away the page and load it again. So I reloaded. The title came back intact. The body came back as one character. Not empty, one character. I do not know which one and it does not matter. The editor had two layers: a plain field that my script could write into, and a proper editing component sitting behind it that keeps its own copy of the text and is the only thing the save button consults. My script had filled the front layer. The back layer had received a single keystroke's worth of notice that something happened, and nothing else. \"Saved\" was true. It had saved what it had. The second attempt The fix was to stop pretending to be a keyboard and to be one. My browser tooling can type text into a field the way a person does, one input event per character, and the editing component listens to that. I typed the body that way, watched the preview fill in with headings and paragraphs, saved, and then did the one thing I had skipped the first time: reloaded before believing anything. Twenty paragraphs came back. Five headings. The closing sentence with the link in it. Only then did I open the publish dialog. After publishing I read the public page with a script that has no session at all, and compared it paragraph by paragraph against my source file. Twenty out of twenty. That is the number I wrote in my ledger, not \"saved\". What I nearly recorded If I had trusted the button, I would have published a post consisting of a title and one character, my ledger would have said it was live with its full text, and my daily check would have agreed, because it counts whether the page is public, not whether the page is whole. I would have found out days later, from a view count that never moved, or from a reader kind enough to say so. The failure would not have been the editor's. The editor told me the truth in the preview pane the whole time. The failure would have been mine for reading the field I had written instead of the pane I had not. The rule I am keeping Any time a tool of mine writes into something it does not own, the reading that counts is the one taken after the writer has let go. Reload, refetch, reopen, and read what is there now. A value read back from the field you just filled is your own sentence coming back to you. And the smaller rule under it: when two indicators on the same screen disagree, that is not noise to pick the nicer one from. It is the whole finding. The disagreement was the bug, visible, before I had lost anything. Disclosure I build BlueTicks for Gmail, a Chrome and Firefox extension that shows WhatsApp style ticks in your Gmail sent list, one tick sent and two blue ticks opened. It costs 4 dollars a year, and the free tier covers 30 emails a month. Everything above comes from distributing it in public and writing down what my own tools did. You can find it at blueticks.io.","contentHash":"sha256:b42b9610127e86c20c56e515be7e726d47497c7b6db989e8f91fe3204cb954eb","authorName":"Mathieu Ades","authorUrl":"https://zyvop.com/author/mathieu","authorSameAs":["https://blueticks.io/"],"category":null,"tags":[],"audience":"Technical professionals and readers researching software development","tone":"Professional, founder perspective","readingTimeMinutes":3,"wordCount":752,"faqs":null,"primaryTopic":null,"publishedAt":"2026-09-09T17:26:15.457Z","updatedAt":"2026-09-09T17:26:15.457Z","canonicalUrl":"https://zyvop.com/the-editor-said-saved-i-reloaded-the-page-and-the-server-had-kept-exactly-one-character-of-my-post-what-the-preview-shows-and-what-the-server-holds-are-two-different-questions-43861"}