Changelog

Recent updates

The last 5 things that shipped. This page reads the same changelog feed Merge & Tell publishes for every account, including its own, which is where these entries come from.

  1. A dead connection now tells you what to click, not just what's wrong

    • Six places on that screen used to say "reconnect" at you like it was self-explanatory, including a tooltip you couldn't tab to and a sentence pointing at a form three thousand pixels away with nothing to click. Meanwhile the actual buttons on offer were "Test" and "Disconnect," neither of which fixes anything. I found this the way you'd expect: by reading my own diagnosis screen and realizing it diagnosed the problem beautifully and then left you to guess the cure was "delete the account and add it back from scratch."
    • Broken connection now shows Reconnect right at the top of the menu, and only when there's actually something broken. Click it on an OAuth account (X, LinkedIn, Mastodon) and it takes you straight into re-authenticating without dropping the account out of whatever sets it belonged to, which matters because losing that silently is exactly the kind of thing that stops your publishing without telling you why. Click it on Bluesky or Discord and it opens the form where you type the credential again, scrolled into view, because there's no redirect to fake that away.
    • The old "Reconnect below" line now actually scrolls you there and puts focus on it, so if you're navigating by keyboard you land on the form instead of somewhere above it wondering if the page is broken too.

    Shipping this with eight of nine accounts on my own list currently healthy, so the button itself hasn't shown its face to me yet. I'll know soon enough when something expires, which it always does eventually.

  2. UTM tagging is now an account setting, not a five-repo chore

    • I found this the annoying way: chasing why a LinkedIn draft never posted, reading config, and noticing tagging was set to null on every single repo I own, including my own product's repo. Turns out a switch you have to flip once per repo is a switch you never actually flip. It's an account default now. Set it once, every repo inherits it, and you can still override a specific repo if you genuinely don't want campaign parameters cluttering an open-source link.
    • Bigger fix: tagged links now carry a marker that says the click came from this tool, not just from LinkedIn. Before this, a post I typed by hand and a post published through the app produced identical analytics. Now they don't, so I can actually answer the one question a publishing tool should be able to answer about itself: did this thing produce any traffic.
    • The marker doesn't step on anything you've already got configured. If you're using campaign or content parameters yourself, your values win, mine just rides along where there's room. I'd rather under-claim credit than break someone's existing reporting.
  3. Drafts now open as something you'd actually want to read

    • Opening a draft used to dump you straight into a textarea, which meant reading generated copy through a text-input box built for typing, not reading. Fixed that. Drafts now open as plain prose, full-size type, proper line spacing, sane width. Reading a draft is the first thing you do with it, so now that's the first thing the interface gives you.
    • Want to change something? Click **Edit copy** and the textarea shows up right then, not before. Save it and it collapses back to prose. Cancel and it throws away what you typed, no trace, no confirmation dialog nagging you about it.
    • If a save fails, the box doesn't vanish and take your edits with it. It stays open, your text is still there, and the error sits right underneath so you know what happened instead of guessing whether you just lost ten minutes of editing.

    https://pheidi.training/

  4. There's now a page that explains why your merge doesn't just become one post

    • I kept answering the same question in support threads: why are there products, repos, personas, voices, and sets instead of one list of channels I check boxes on. The features page tells you what each button does. It never told you why the buttons exist. So `/how-it-fits` does that job instead, with a diagram of the whole graph and a plain-language table for every connection: which ones are one-to-many, which are many-to-many, and where in the app you actually make that link.
    • The page walks one real merge end to end so you can see the fan-out arithmetic for yourself: a single diff turning into company copy for two channels and a first-person post that sits waiting for review instead of publishing itself. If you've ever wondered why a person voice never auto-publishes, that's the section that answers it.
    • Also fixed the footer while I was in there. It was pushing the homepage 133 pixels sideways on a phone because I kept bolting new marketing pages onto a row that never learned to wrap. It wraps now.
  5. Auto mode stopped drafting copy for PRs you never asked to market

    • If your repo runs in `auto` mode, a merged PR used to burn a generation writing all six channels' worth of copy whether you wanted it marketed or not. That's real model spend and a slot out of your monthly allowance, spent on posts nobody had decided to publish.
    • Now those PRs land in the feed marked as waiting, with a plain amber tag and a Generate button. Nothing gets written until you press it. Repos on `gated` or `publish` still draft on merge like before, since choosing either of those modes is already you telling the system to act.
    • One exception: a `marketing:launch` label still triggers a draft automatically, even in `auto` mode. Slapping that label on is you asking in advance, so it gets treated like an ask.

Your project can have one of these

Every account gets an Atom and a JSON Feed of its published changelog entries, written from merged pull requests. This page is just one of them, rendered. See how a merge becomes a post.