Skip to content

Journal Editor merged with Splitter

Boris Journal Posts
Nov 8, 20264 min read
3

Atmosphere Splitter now supports Bluesky rich text links, implemented using Markdown link syntax.

Originally by Scott Jenson @jenson.org as a single HTML file with inline JavaScript, I added OAuth support and then…got carried away and kept going.

My fork at bmann/Splitter keeps this restriction, but is also deployable as a static site so that it can be installed as a secure mobile PWA.

And now, a thread powered by Splitter, starting with the newest (final?) feature.

Markdown Links aka Bluesky rich-text facets, where you can add real inline-links.

Paste text from notes, Obsidian or Notion and its markdown links come out as real links: the label is posted and the address becomes a facet, so neither the brackets nor the URL are part of the post.

The character count and the splitter both measure the post as it will be published, so a link costs its label, not the markdown — and a link is never cut in half between two posts: it moves whole to the next one.

The input shows a reminder of the syntax under the text box.

Installable app with atproto sign-in

Install it from 127. 0. 0. 1:8000 (or a hosted deployment) and sign in with atproto OAuth; app passwords remain the fallback for a file opened from disk.

Smart splitting

Posts break at sentence boundaries where possible, with lengths kept roughly even. Word breaks are a fallback, used only when sentence breaks would leave a post very short or over the 300-character limit. Paragraph breaks are preferred but not forced.

Images with alt text

Add up to four images to any post, each with its own alt text. Large images are resized to fit Bluesky's 1 MB limit.

Links, hashtags and mentions

All three become facets that Bluesky renders as links. Typing @ searches accounts as you type and stores the pick with its DID; hand-typed handles resolve the same way. A handle that doesn't resolve stays plain text instead of failing the post.

Account search — the @ completion list and the avatar in the header — is powered by typeahead, a community-run AT Protocol account index maintained by @zzstoatzz.io

Tags on every post

Add tags in the left panel once and they are attached to every post as out-of-band app.bsky.feed.post.tags — the body text is untouched. Thanks @pouriade.com for building out of band tags into Ouranos - I can’t live without it now!

Link previews

The first link in a post without images shows a card as you type — the same card that gets posted, fetched once through cardyb. Use × to drop it, so a bad preview never gets embedded. A card with no image says cardyb returned no image; a URL with no preview says so instead of leaving a blank.

Quote posts

A Bluesky post URL becomes a real quote (a record embed), previewed with the author, text and first image while you type. A post that cannot be fetched falls back to plain text instead of blocking the thread.

Pinned embeds

Pin a card or quote to keep it attached after deleting the URL from the post text. Unpin returns it to following the URL, and a pinned preview whose lookup failed can be retried or unpinned.

Resume a failed thread

If posting fails partway, the button resumes from where it stopped instead of starting over. Posts already on Bluesky stay marked as posted, so nothing is sent twice.

New thread or continue

After a thread publishes, start clean or reply to its last post and grow the same thread.

Earlier posts stay visible, marked as posted, while the new ones are drafted. A failed thread only offers Resume

Themes

I call my version Atmosphere Splitter. Because of course this works with @mu.social and @blackskyweb.xyz and anything else that reads microblog posts.

The four built-ins live in index.html so they work from file://. Community themes live in themes: add a folder and a line in themes/index.json, reload, and it appears in the picker. See themes/README for the format, the JSON schema and a complete example.

For developing, no build step, no dependencies, no bundler. Edit index.html and reload.

And yes, I built this with agents. I haven’t tried to see if @attie.ai could build something similar. But it should!

Atmosphere Splitter can be used on your desktop or mobile as a [[PWA]], or download it and run it locally, with a few extra features with your favourite local web server script.

The reveal on this thread is that I merged Splitter into my [[Journal Editor]], which is a server based app and integrates with my website.

Single posts get posted as a journal. If I fill out the link field, it gets posted to [[Semble]]. It has wikilink support which inserts links to my digital garden notes.

There’s a server side website screenshot creator, so an image of the website is generated for the preview if there isn’t an OG image.

I had “read more” support for writing longer posts, but it didn’t really feel right.

With Splitter, long posts are posted as threads, and turned into a long journal post on my site, and published as @standard.site, with a link in the last post of the thread.

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions