rss.chat worknotes
npub1j5a28hh4cgqpja7tfunvwa77fjcygvhh7yv5q47zjq4a3qpuzq7qwvz7gk@drss.io
Every improvement to rss.chat as it ships -- the worknotes from the server and the client, as a feed.
Follow into
You can point it at any hub
Save into
5 Aug 2026
Two new settings, both with working defaults, so there's nothing to configure: `flWebsubEnabled` is on, and `urlWebsubHub` is Andrew's hub at `https://rpc.rsscloud.io/websub`. Put a different address
rss.chat feeds now support WebSub
Save into
5 Aug 2026
[Andrew Shell's rssCloud server](https://andrewshell.org/2026/07/rsscloud-server-4-0-now-supports-websub-notifications/) speaks both protocols as of its 4.0 release, over one shared list of
Updating a server you already run
Save into
5 Aug 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. No new packages this time, so there's no `npm install` step.
Fixed a bug in feeds we generate
Save into
2 Aug 2026
We were using the wrong value from config.json to build the URL for the `<link>` element in RSS.chat-generated feeds. Fixed in server v0.6.12, on both public servers. Thanks to
Updating a server you already run
Save into
2 Aug 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. No new packages this time, so there's no `npm install` step.
Updating a server you already run
Save into
1 Aug 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. No new packages this time, so there's no `npm install` step.
Security fix in v0.6.11 -- please update
Save into
1 Aug 2026
A user contacted us about a potential security issue. We responded quickly and with v0.6.11 the issue is removed. If you're running rssnetwork.js on a publicly visible server, please install the new
The server will read a file over the web for you: /readhttpfile
Save into
31 Jul 2026
A browser page can only fetch from its own server unless the far server opts in, and most don't. That was the wall in front of the Scripts menu (the client-side story -- see the client worknotes):
Updating a server you already run
Save into
31 Jul 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. No new packages this time, so there's no `npm install` step.
You can add your own menu to the menubar -- the Scripts menu
Save into
31 Jul 2026
Point one new config setting, `urlMenuOpml`, at an OPML file on the web, and the app builds menus from it: every top-level node in the outline becomes a menu in the menubar after Docs, nesting
And reallysimple, the feed reader FeedLand and other apps are built on, now understands rss.chat conversations
Save into
29 Jul 2026
Until today it read our feeds but quietly discarded the two pieces that make a conversation a conversation -- which post a reply is replying to, and where a post's replies live. So an app reading
That error message at startup is gone
Save into
29 Jul 2026
Every time the server started, it printed `webSocketStartup: theWsServer.listen is not a function` -- alarming to read, especially on a new install, and entirely misleading: websockets were working
Getting into your own server no longer waits on email
Save into
29 Jul 2026
Sign-in is a magic link, so until a new server can send mail, nobody can get in -- including the person who just installed it. That's a discouraging place to be stopped, and it's exactly where John
Updating a server you already run
Save into
29 Jul 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. No new packages this time, so there's no `npm install` step.
Replying through the API works with either field name
Save into
27 Jul 2026
When you read a reply, the field pointing at its parent is called `inReplyToNum`. When you post one, the API expected `inReplyTo` -- and if you sent the other name, your reply was accepted but landed
And the API docs were rewritten to earn that story
Save into
27 Jul 2026
The [newpost entry](https://github.com/scripting/rss.chat/blob/main/server/docs/api.md) now opens with the smallest call that works -- one field of markdown -- followed by a complete call you can
Updating a server you already run
Save into
27 Jul 2026
Get the new `rssnetwork.js` and `package.json` from the repo, run `npm install` (one new package, the markdown renderer), and restart.
Posting through the API got simpler: send markdown or HTML, whichever you have
Save into
27 Jul 2026
Until today the API expected HTML -- send only markdown and your post came out empty, which is exactly what happened to the first person who tried. Fixed, as of server v0.6.6 on both public servers:
The RSS.chat network has a name and a front door
Save into
26 Jul 2026
All the open pieces around the app -- every user's RSS feed, the everyone feed, the OPML subscription list, the source namespace, textcasting, markdown in the feeds, the firehose, rssCloud, the API,
And every server can now back itself up, nightly
Save into
25 Jul 2026
One line in config.json turns it on: `"flNightlyBackup": true`. Every night the server writes its whole database -- users, posts, likes, files, media -- to one dated JSON file in `data/backups/`,
Updating a server you already run
Save into
25 Jul 2026
Get the new `rssnetwork.js` and `package.json` from the repo and restart. On the first restart you'll see a log line for each user whose feed gets backfilled, then it's quiet. Add `"flNightlyBackup":
Every user has a feed from the moment they sign up
Save into
25 Jul 2026
It was reported that until someone posted for the first time, their feed address answered with a 404 -- which looked broken to anyone who subscribed to the whole community from the subscription list.
The Docs menu now reaches everything
Save into
25 Jul 2026
Two new submenus under Docs: Blog posts, with the Scripting News pieces that tell the rss.chat story -- what it's for, how the ecosystem fits together, today's post about the API -- and Github Repo,
A whole conversation in one call: /getthread
Save into
25 Jul 2026
Every conversation on rss.chat has always been walkable through the feeds -- each post's item points at a comments feed, each reply can point at its own, and the
The hit counter now counts only rss.chat
Save into
25 Jul 2026
When the app starts up it registers a hit, so there's a running count of how much rss.chat is used. But everyone running their own server uses this same client -- and their visitors were being
These worknotes are a feed now
Save into
24 Jul 2026
Subscribe to [https://news.rss.chat/worknotes/rss.xml](https://news.rss.chat/worknotes/rss.xml) and every improvement to rss.chat arrives as it ships -- the worknotes from the server and the client,
The Return key stopped breaking paragraphs at the wrong spot
Save into
23 Jul 2026
A bug DW reported earlier but couldn't reproduce finally showed itself: paste a chunk of text that includes a link, put the cursor somewhere later in the text, press Return -- and the break landed at
A security fix -- posts are now cleaned as they're saved -- and the first update note of a new kind: how to bring a server you already run up to date
Save into
23 Jul 2026
A post's text is written by its author and then shown to everyone who reads the timeline, which means anything hidden inside it runs in every reader's browser. Until today the server stored a post's
Updating a server you already run
Save into
23 Jul 2026
This is the first of a kind of note you'll see here from now on: when a change matters to people running their own installs, the steps to update will live right here in worknotes. For this one: 1.
Paste an image into a post -- that is the whole feature
Save into
22 Jul 2026
Copy a screenshot or an image file to the clipboard, click into the composer, paste: a small "Uploading image..." note appears at the cursor and a moment later the picture takes its place, sized to
Posts can carry images now, and the server stores and serves them itself
Save into
22 Jul 2026
A new endpoint, `/uploadmedia`, accepts an image from a signed-in user -- up to 2MB, sent base64-encoded in the request body with the content type as a parameter -- stores it in a new `media` table
rss.chat itself now runs on SQLite
Save into
22 Jul 2026
This morning's note said an rss.chat server *can* run on SQLite; by this evening the flagship server *does*. Both production servers were upgraded to the new software (v0.6.0) during the afternoon,
The install docs also gained the piece that was missing: email
Save into
22 Jul 2026
Sign-in is a magic link, so a new server can't sign anyone in until it can send mail -- and nothing documented how. New page:
SQLite is now the default, everywhere
Save into
22 Jul 2026
demo.rss.chat migrated this morning -- 58 users, 210 posts, 153 likes, 138 served files, five minutes -- so both public servers now run on one-file databases. davesql 0.7.0, the package carrying the
The Software versions dialog now tells you which database engine the server runs on
Save into
22 Jul 2026
Servers can now run on SQLite as well as MySQL (that's the day's big server-side story -- see the server worknotes), and the dialog's last line follows along: it says "SQLite version" or "MySQL
A startup crash that wore two disguises
Save into
22 Jul 2026
If you left the editor open with a draft when you last used the app, the next startup could crash quietly: the app tried to restore your draft before one of its writing tools -- the piece that turns
And every server now has a backup story: export and import
Save into
21 Jul 2026
`node rssnetwork.js export backup.json` writes the whole database -- users, posts, likes, feeds -- into one JSON file and exits without starting the web server; `node rssnetwork.js import
An rss.chat server can now run on SQLite -- no MySQL, no database setup of any kind
Save into
21 Jul 2026
One new member in config.json chooses the engine: `"database": {"flUseSqlite": true, "databaseFilePath": "data/myserver.db"}`. The database is a single file that creates itself, tables and all, the
Three small courtesies for writers, all shipped today
Save into
20 Jul 2026
Posts no longer carry blank lines at the end -- if your post trails off with empty paragraphs or stray Returns, the server trims them when it saves, so nothing renders as mysterious empty space below
The reply editor got out of your way
Save into
20 Jul 2026
When you reply to a post, the editor used to lead with the post itself — the first few lines, taking up room, an eyesore you'd already read. Now it shows the author's avatar and name, and under the
Software versions, in one place
Save into
19 Jul 2026
Don Park asked for the version number in a tooltip, for telling a stale cached client from a current one. It went in a different door: the first command in the system menu, formerly About RSS.chat,
The goodnight dialog no longer leaves a dead app behind
Save into
19 Jul 2026
When a fresh copy of the app signs on, the older copy puts up a dialog and stops listening — that's the goodnight kiss, from two days ago. But if you dismissed that dialog by clicking outside it
The browser tab now shows your server's name
Save into
18 Jul 2026
The home page's title was hard-coded to "rss.chat" — every instance, whatever its name, said rss.chat in the tab. Now the title comes from the server's `productNameForDisplay` setting, so
The `/feed` endpoint can now return the feed as JSON
Save into
18 Jul 2026
As of server v0.5.32, `/feed` takes a `format` parameter: [format=xml](https://rss.chat/feed?screenname=dave) (the default) returns the RSS document as always, and
threadwalker caught up with yesterday's feed change
Save into
18 Jul 2026
Ricardo reported on [issue #14](https://github.com/scripting/rss.chat/issues/14) that the walker printed `?` for every author -- it was still reading the item-level `source:account` element that came
The firehose is now documented, with two working demo apps
Save into
18 Jul 2026
Every rss.chat server broadcasts every new post, edit, and like over a websocket the moment it happens -- the same stream the shipped client uses to keep timelines current. As of today there's a doc
`source:account` moved to where the spec says it goes
Save into
17 Jul 2026
Our feeds had been putting a `source:account` element inside every item. The [source namespace](https://source.scripting.com/) defines it as a channel-level element — it says whose feed this is,
Only one copy of the app runs at a time now — the goodnight kiss
Save into
17 Jul 2026
If you're signed in and open the app in a second tab, or another browser, or another machine, the older copy puts up a friendly dialog: the app is running in another tab, click OK to reload this one,