VantagePost · Week in review

Faster, safer, and a rebuilt Social Studio

Everything Micah shipped or opened Sep 28 – Oct 5, 2026, grouped by kind. Sources: git history, GitHub PRs and Linear for VantagePost.

Micah BerkleyWeek ending Oct 5, 2026
27
pull requests opened
14
merged into release/v0.1.4
14
Linear tickets closed
~80
commits
13
PRs waiting on review
The headline · Micah's custom canvas design

Social Studio: one clear path for a social post, built on the code we already had

Micah designed Social Studio on a custom canvas: 9 clickable screens, with screenshots of today's flow beside them (PR #406). Then he built it on the existing planner, publisher and data model (PR #407, merged). It's a different look, but it isn't a rewrite. Each screen reuses the components it replaces, the primary features of the previous version stay, and templates are the first step of every post.

Ways to start a post
9→1
AI post generators
3→1
Save paths
4→1
Schedulers
2→1

What the redesign measurably changed

First draft text on screen9.5 s → 1.5 s
Before 9.5 s
1.5 s
Drafts finished, images included27.1 s → 14.9 s
Before 27.1 s
14.9 s · 45% faster
Drafting when Claude is downhung 7 min, no error → ~20 s
Before: hung 420 s
20 s
Post quality issues, final tuning run42 posts checked
0 issues in 42 posts · 3 networks × 7 templates × 2 drafts
End-to-end click-through, live AI0 console or server errors
22 / 22 steps passed

Primary features carried over from the previous version

  • ✓Templates are step one. A network-aware picker, a live structure preview and "Try it on a sample". Instagram and X went from 2 templates to 7. LinkedIn keeps all 14 and gains 4.
  • ✓Calendar: week and month views, reschedule, and a "…" menu on every post
  • ✓List view and bulk actions: Remix, Reschedule, Change status, Delete
  • ✓Composer: per-network preview, length feedback, image checks, Shorter / Stronger / More like us
  • ✓Scheduling from articles, events, the API and MCP, with a check on each connection
  • ✓Failure handling: Needs attention, Retry now, "Did it go live?", and the failure email
  • ✓Image options: upload, generate, use the article's image, paste a link
  • ✓Deleted posts are kept until someone removes them, with Restore
  • +New: post metrics on the card, Save as draft without an image or connection, writing rules against generic copy
VP-782 · Social Panel moved to GitHub. Micah kept the Social Panel (Social Studio, the Social planner, the composer and scheduling) local while it came together. It's now in deepstation/vantagepost as PR #407, with follow-ups VP-779, VP-780 and VP-781. The build rests on 16 research documents and a comparison against similar social tools. It's tested and it works. The only blocker is approval to push to staging. Next: get that approval, open the VP-779 → VP-781 PRs, present it, and ship with release/v0.1.4.
On the "don't reinvent the base" concern: PR #407 rebuilt post creation on the code we had. It didn't rewrite the planner, the publisher or the data model. Every screen in the build plan names the components it reuses, for example PlannerShell, useComposerState, WeekCalendar, PlannerListTable, PostMetrics and publish-service. Only the duplicate paths were removed.
Performance

Speed and cost

WhatBeforeAfterTicket
Social drafts stream each finished post at once instead of waiting for every image27.1 s14.9 sVP-779
Claude drafts no longer fail on the last character and get regenerated on OpenAIeach draft paid for twicepaid onceVP-779
OpenAI fallback schema fixed. Every model call has a deadline and can be stopped.hung up to 90 s on a 4002 drafts in ~20 s#407
X post numbers read on days 1, 3, 7 and 30 instead of every day~30 reads · $4.50/mo4 reads · $0.60/moVP-759
Daily X Premium sweep removed; the plan is checked only at connect or on a long post$0.30 per connection/mo$0 at restVP-759
Post metrics: one reading per day, retries, reconnect only when it helpsduplicate reads1 per dayVP-653
The share page fetches its article once per request, with lookups in parallelrepeated fetches1 fetchVP-411
The scheduled-post sweep leases rows, so nothing is sent twice or put back to pendingdouble-send riskleasedVP-648
Article Engine v2 run time from Micah's rebuild work (09-24, carried into this week)328 s149.6 sVP-457
Features

New

  • Social Studio: template-first posts and a rebuilt Social plannerMerged #407
  • Real Instagram and X templates (7), drafts that don't sound genericMerged #408
  • Schedule social from articles, events, the API and MCPMerged #379
  • Post performance: likes, comments, shares, impressionsMerged #378
  • X Premium long posts, detected from the accountMerged #382
  • Image checks against each network's rules, thumbnails sized per networkMerged #380
  • Write a post with a template inside the editorOpen #410
  • WordPress and Prismic toggles in "Post to"Open #411
  • Article JSON-LD on the share page and in the public blog APIOpen #389
Improvements

Better

  • Social screens match Micah's designsMerged #377
  • One set of platform rules for length and hashtagsMerged #375
  • Dead /social-media studio and unused code removedMerged #376
  • Calendar fades published posts; missed posts listed on the event tabOpen #386
  • Keyword tray's top ten stays on topicOpen #381
  • Never switch on a keyword under 10 searches a monthOpen #403
  • X is a paid-plan feature, enforced at every schedulerOpen #405
  • Social Studio design and build plan (docs)Open #406
Serious issues

Security and money

  • Any signed-in user could tweet from the company X account, and every workspace's X posts went thereFixed VP-644
  • Social routes let users read and write other workspaces' posts and skipped plan and flag checksFixed VP-645
  • Social posts from articles, Vince, the API and MCP were never billedFixed VP-646
  • Switched-off features were only hidden in the menu; the API still answeredPR #404 · VP-394
  • Article runs that end in error now refund every chargePR #387 · VP-286
  • A killed v2 run stayed "Generating" forever and was never refundedPR #388 · VP-432
Bugs

Fixed this week

  • Failed posts got stuck, were retried when they shouldn't be, and nobody was toldVP-647
  • Event Social tab: Save always failed, sent posts looked unsent, scheduled posts might never go outVP-648
  • "I'll pick my own" in the keyword tray did nothing; rebuilt as one tableVP-457
  • Restore failed, and "Shorter" made posts longerVP-778
  • Draft text vanished until the images were donePR #409 · VP-779
  • Headings and sections ignored the picked keywordsPR #391 · VP-616

Rolled back, held, or left alone on purpose

Sep 23Production was rolled back from v0.1.1 to the old grantkurz build, over keyword quality (per VP-460). Micah's Engine v2, invented-URL fix (VP-431) and keyword work came off with it. Production stayed on the old build until the Oct 3 cutover (VP-460).
Sep 28Micah opened VP-750, "We keep bumping heads on the social work", with 6 questions on base branch, stacking, ownership and migrations. It's assigned to Grant and still in Todo, with no answer.
Oct 1Grant moved every social PR off v0.1.3 to v0.1.4. Ten merged social PRs, including the security and billing fixes above, are not in production yet.
All weekMicah stayed off the article engine to avoid colliding with Grant's engine and keyword stream. His engine-adjacent fixes (billing refunds, the stuck-run refund, keyword placement) are open PRs for his review, not merges.
Outstanding

Open bugs and blockers

  • X posting is effectively off in production: there's no Settings card to connect XVP-678 · Grant
  • LinkedIn can post only from DeepStation's own page until API approvalVP-170 · Grant
  • Instagram publishing awaits Meta App ReviewVP-171 · Grant
  • "Link selected" on the article's SEO tab does nothingVP-409
  • A published article keeps its old URL after a rename; an edited slug breaks linksVP-385
  • Check that Engine v2 still writes a title when it's left blankVP-408
  • Dashboard sparklines trend up regardless of the real numbersVP-296
  • Bitwage competitor names in article intro promptsVP-287
  • Vince can no longer edit an articleVP-449
  • Clicking whitespace in an article doesn't place the caretVP-373
Needs a decision

Waiting on review or a call

  • Approval to push Social Studio to staging, the only blocker on VP-782Approve
  • 13 open PRs into release/v0.1.4: #381, #386–#389, #391, #403–#406, #409–#411Review
  • Answers to VP-750's coordination questions, so we stop rebasing over each otherGrant
  • Share links carry JSON-LD and can compete with the blog post in search. Add noindex and a canonical?Decide
  • After v0.1.4 ships: migrations 0068/0069, the preset seed, the tool-registry sync for schedule_social_postDeploy
  • What "Remix" should do as a bulk action (today: a fresh AI version saved as a new draft)Decide