Changelog

Recent user-facing Alpha changes, newest first. The in-app update notice links here.

2026-09-23

  • Closing a book stops it. Closing a book tab now releases the book: read-aloud stops, and the next open starts fresh at the saved place. Switching to another tab still keeps the book open.

2026-09-22

  • A citation opens as a tab. Clicking a [sN] chip in a reply now opens that source in its own tab in the main area, at reading width: the title, the URL, whether the agent read the page or only found it, the snippet, and Open link. It no longer opens a narrow card inside the Agent column. The same chip brings the open tab forward.
  • Undo and redo in a debate. Toolbar Undo / Redo and ⌘Z / ⇧⌘Z (Ctrl on Windows and Linux) step back through every change to the argument: a deleted claim returns with the claims that pointed at it, and an agent turn is one step. The Recently removed tray is gone. The stack is memory: closing the tab drops it.

2026-09-21

  • Four kinds of claim, not seven labels. A claim is the Thesis, a Reason (it supports something), an Objection (it challenges something), or a Term — read off what it does, never picked. The label menu and the emoji sigils are gone; the kind word takes its column’s colour. Which way an objection cuts (an objection to an objection defends the position) follows from its chain, and an unlinked claim never lights the amber mark.
  • The card shows what the claim has. A fresh claim is its title. The narrative is a quiet Add a narrative button until you write one; sources and terms appear only when there are some. Concede stays on the card; Re-point, Link a term, Add a source, Find sources, and Delete sit behind one menu. Terms are made from the outline’s Terms +, or from a claim’s Link a term, where a new word is defined and linked at once.
  • A debate starts from your claim. The Start a debate dialog opens on one field, the claim; it becomes the thesis and names the debate. Join by address and Import are the two rows under it.
  • Accept, not fold. Other people’s replies read as Proposed by others; Accept takes one into your argument and Remove from argument puts it back. The agent’s tool is accept_node.
  • One picture of the whole. The sunburst is retired; Map is the overview.
  • Claim ids read. A claim’s id is now its title’s words plus a short salt (responsibility-requires-control-x7kq4m) instead of a random string, so the agent’s outline and the relay read. The id is set once, when the claim is made, and never follows a rename.
  • Public debates say what they are about. A shared debate’s card in Discover and in someone’s library shows the abstract (else the thesis) and how many claims it holds, without opening it.
  • Every change to a public debate publishes as it happens. Adding, editing, conceding, re-pointing, accepting, removing — each reaches the relay at once; sharing again is never needed. A joined debate’s replies root at its author’s debate.
  • Discover and previews remember. Discover paints from this device and refreshes on a Refresh button; a failed refresh keeps the last results and says so. Debates you already joined are badged instead of offered again. Previews and joined debates paint from the last fetch and open offline; a favorited foreign debate opens as a preview. A relay that never answers no longer holds a page the device already painted. Names from PlebChat-only accounts now resolve on cards.
  • Fixes. A term chip on a claim now stands on the term (it was a dead link that only changed the address bar); the debate tab no longer refetches a shared debate in a loop; a fetched reply now reaches the columns and can be accepted; a proposed objection nobody accepted no longer counts as standing in the outline; the Discover empty state waits for the follows section; a chat granted a debate releases it when the run ends; a Retry no longer builds against a still-loading debate.

2026-09-20

  • Debate reads like a document. A debate now opens with an outline on the left — every claim as a row, indented under what it supports or challenges, foldable, with an amber dot on any objection nobody has answered — beside the claim you stand on: its whole lineage from the thesis as full cards, its own card, and its Supports and Challenges columns. The debate tab has the same toolbar strip as every other tab. Map shows the whole argument as labeled tiles and Sunburst as rings; click one to stand on it. Terms and unlinked claims sit at the bottom of the outline. The old tree canvas, the Glossary page, the node pop-up, and “Collapse all” are gone. On a phone the outline, the focus, and the map are three tabs.
  • The debate agent is the Agent column. Discuss opens the Agent column with the debate granted: the agent reads the argument and the claim you are looking at. A chip on the composer picks Socratic, Refute, or Steelman, and Discuss or Edit: Discuss talks the argument through and never touches the graph; Edit adds, revises, and concedes directly, with every turn checkpointed. There is no approval prompt. Attack, Defend, and Find sources on any claim open the agent in Edit mode with that claim already in the box. The agent can search and fetch to cite. The separate interlocutor pane and its own conversations are gone; a debate chat is an ordinary chat.
  • Others’ arguments show up where they belong. Counter-arguments from other people appear under the claim they answer, dashed and named, and in the outline, with Fold in on the row — no disclosure to open. Only what you fold in can answer an objection.
  • Discover public debates. A fourth filter in the Debates library lists public debates from the people you follow, then recent ones on the relay, with Preview, Favorite, Join, and Copy address.
  • Removed claims come back after a close. Closing a debate’s tab now releases it, so the removed-claims tray is empty on the next open, as documented.

2026-09-15

  • Getting started works offline. Creating or pasting a key no longer waits for a relay. There is no login: the key is stored on this device and you leave guest mode at once, with or without a network. The relays connect in the background. The buttons say Getting started… and Use this key instead of “Sign in”.

2026-09-14

  • Share a folder. A subfolder menu, or Share on the Files bar, publishes the tree as a public listing. Anyone with the link opens a read-only Files tab, copies the link, or clones the files into their own workspace. A version menu opens earlier publishes. You can highlight, comment, ask, or suggest an edit on a text file. Apply opens Diff on your local copy. Include another person’s listing, then Accept or Ignore new files. Follow is optional and signs your next version.

2026-09-13

  • Posts have a folder too. A fourth system folder, Posts, holds one folder per long-form post with the note and its pictures. The folder card says draft or published, and its toolbar publishes. A new post’s folder takes the first title you give it in the note’s metadata form. Pictures you paste into a post now publish with it: on Publish they upload to your Blossom server and the article links them there, so readers in any client see them. If a picture cannot be uploaded, Publish says which one and stops instead of publishing a broken article.
  • Files has a home for everything the agent makes. Every workspace now leads with three folders: Artifacts, where each chat’s files live in a folder named after the chat; Images, one folder per canvas; and eBooks, where every book in your library shows as a file — drop an EPUB on any folder to import it, double-click to read it, or open Inside the book to browse its chapters and pictures. A chat’s folder is its home: the first chip on the input bar, with Show folder; a paperclip on the chat’s row in Chats opens it too. Choose Work here on any folder of yours to make it a chat’s home instead, so several chats can keep polishing one project — the folder’s toolbar lists every chat that worked in it. Rename a folder freely; chats follow it. Deleting a chat keeps its files unless you tick the box in the new dialog, which lists them. Deleting a book’s row in Files asks “Really delete the book?”, since that removes it from your library. On a phone the Files toolbar shows icons only; rest on one for its name.
  • Python is a real workbench now. The agent’s Python tool sees this chat’s files as its working directory: it reads the CSV that Fetch saved, and any file it writes — results.csv, a chart.png — lands in the chat and opens in its own tab, with a thumbnail on the tool card. numpy, pandas, and matplotlib are available (they download once, on first import). A running call shows its output as it prints, an elapsed clock, and a Stop button; a script that calls input() pauses and asks you. Run on a code block or a .py file uses the same interpreter and files, with no time limit. Python is on by default in new chats. Each chat has its own interpreter; a line under the output says what is loaded and when it was last reset.
  • A fetch the agent gave up on is never billed later. Switching relays could re-send old fetch requests from the sync queue minutes after the agent had already reported a timeout, and each one cost 1 sat. Those requests are now dropped instead of re-sent, and PlebChat’s fetch service ignores any request older than two minutes. Sync also no longer re-sends every event a second time after it was already accepted.

2026-09-12

  • Your file backups now go to PlebChat’s own server. The default Blossom server is blossom.plebchat.me instead of a public one that pruned books. Back up a book, PDF, or file and it stays as long as you keep opening it (a year after the last read for books, PDFs, and pictures; a month for anything else). Only PlebChat accounts can upload; anyone with the link can read, as before. Books you backed up to the old server are still listed under their old address; back them up again to move them. The list is in Settings › Relays & Storage if you run your own.
  • The agent can fetch data. A new Fetch tool (on by default) reads a URL as raw text or data — JSON, CSV, plain text — and saves it to the chat’s files, so “pull 90 days of bitcoin prices from CoinGecko and chart the drawdown” works without pasting anything. Sites that block browser requests fall back to a paid fetch through PlebChat’s own relay (1 sat) when you hold PlebChat credits; the tool card says via direct or via DVM · 1 sat and names the saved file.
  • A new home relay. PlebChat now syncs through relay.plebchat.me, our own relay box, instead of the homelab relay. Nothing to do: Settings → Relays shows the new default on next login. Events on the new relay are kept, not purged after 60 days.

2026-09-11

  • A chat keeps its place. Flip from the Agent to a tab and back on a phone, or switch away from a chat tab and return on a desktop, and the thread is where you left it instead of at the top. Articles already did this; chats now do too.
  • Co-edit a file with the agent. An open note or text file has a Chat button: it starts a new chat with that one file shared for writing (the chip on the composer says Cookies.md · write; open it to drop to read). Ask the agent for changes and watch them land in the open tab after each successful edit. Turn on Diff on the tab to see every change since as +/- lines: removed lines in red with Accept / Reject, changed lines in green, a count on the button, and Accept all to start over from the text now. The editor stays editable the whole time.
  • Tool calls no longer look frozen. While the agent is still writing a tool call, the collapsed card shows the last three lines as they arrive — the file text of a write or edit, the code of a run, else the raw arguments.
  • Formatting keys in notes. Cmd-B (Ctrl-B on Windows and Linux) makes the selection, or the word at the cursor, bold; press again to undo it. Cmd-I italic, Cmd-Shift-X strikethrough, Cmd-E code, Cmd-K link. Cmd-Alt-1 to 6 set a heading and Cmd-Alt-0 goes back to body text. Cmd-Shift-8, 7, and 9 make a bullet, numbered, or task list; Cmd-Enter checks the task; Cmd-Shift-. quotes; Cmd-Alt-C fences the lines as code. The same keys work in a file the chat opened. Hover the new ? on the note toolbar for the full table; click it to keep the table open.
  • iPad: the keyboard shortcut bar no longer cuts off a note. With a hardware keyboard attached, iPadOS keeps a small floating bar at the bottom of the screen. The note editor used to shrink by that bar and show a black band under the text. The bar now hovers over the note and the text runs to the bottom edge. A full on-screen keyboard still lifts the editor as before.

2026-09-09

  • Paste a picture into a note. Copy text with a picture in it out of Notes, or a page out of Safari Reader, and paste into a note: the picture is imported into the note’s folder as <note>-1.png and sits where it was, and the text around it keeps its headings, bold, links, and lists as markdown. A screenshot or a copied image pastes as a picture on its own line. A picture from the web is linked at once and swapped for the imported file when its host allows the download. Dropping an image file on the editor does the same.
  • Lists in notes look like lists. A - bullet now shows as a dot and - [ ] as a checkbox when the cursor is off the line. Click the box to check it; the note’s text changes to [x] and a done item reads muted and struck through. Click the text to see and edit the source. Numbered items stay as typed.

2026-09-07

  • Code files look like code. A .py (or .js, .sh, .c, HTML, CSS, …) opens with syntax colors. CSV and TSV color each column. The card says Python, not Text. The extension stays on the name when the title is long, and you can change it from the card or the file tab. An unknown extension still opens if the bytes are text; a NUL in the file keeps it a download.
  • Chat about this folder. The Files bar has a Chat button. It opens a new thread with that folder granted, so the agent can read the folder you are looking at. Flip the chip to Write if the agent should edit there too.
  • Select a reply, get the markdown. Drag over an agent reply and copy: the clipboard holds what the model wrote, so a formula pastes as its LaTeX and renders again in a note or back in chat. A small menu on the selection offers Copy, Ask about (the selection rides your next message as a chip) and Speak. On a phone, hold to select, drag the knobs, and use the sheet. The side rail no longer opens under the gesture.
  • Tables in notes. A markdown table in a note now shows as a table, with its header row, column alignment, and math or code inside cells, the way chat already draws one. Move the cursor off the table and it paints; click a cell, or arrow into it, to see and edit the source.
  • Math in notes. LaTeX pasted into a note now renders. \( … \) and $ … $ inline, $$ … $$ and \[ … \] as a centered block, the way chat already did. A formula shows when the cursor is off its line; click it to see and edit the source. $48 and $10 off stay plain text, and code stays code.
  • Feed is an inbox. A new rail launcher, next to Following (u). It shows unread notes from people you follow, at most 40 at a time, and hides each one after you scroll past it. No endless scroll. Empty means you are caught up. Mark all read is on the bar if you want the pile gone. Recents shows a row when something is waiting.
  • Rail tooltips name the letter. Hover a launcher and the native tooltip shows the single-letter shortcut (Search (S or K), Chats (C), Articles (A), …).
  • A is Articles, G is Agent. The Agent column toggle moved from A to G so Articles can use A.

2026-09-06

  • PlebBot, first slice. A new PlebBot launcher on the rail. Pair a bot: PlebChat mints it a key of its own, signs a note that says it acts for you, and shows one docker run line to paste on any computer you own — a Mac mini at home, a VPS. The bot appears on its card with a green dot when it is online, with its state, model, and uptime; Shut down and Forget work. Chatting with a bot comes next. The bot itself lives in the public plebchat-bot repo.

2026-09-05

  • Relay waits show their work. Wherever the app waits on nostr relays for a large part of the screen — Search, opening a pasted npub / naddr / nevent, a person’s writings and notes, a note and its replies, an article, the Articles feed, and someone else’s eBooks or Debates library — a small log prints each step as it happens instead of a spinner: every relay asked, what each returned and how long it took, and the filters and gates that ran. It folds to one line when the wait ends; click it to read the whole thing again. Small chips and buttons keep their spinners.
  • Names no longer go missing when one index is down. Profile lookups now ask several well-known relays and the person’s own relays, not just the identity pool and purplepag.es, so a dead index no longer leaves bare npubs across Following, notes, and Search.
  • Image canvas fixes. Delete on a canvas card now deletes (it never did). A draft made by Generate here, a template card, Vary, or Branch now stays selected so the prompt bar is its editor at once, and the card you just worked on no longer stays selected instead. A new batch of takes shows its contact sheet even after you picked from the last one. Double-click on a card’s title renames it reliably, even on a card that was not selected.
  • Paste any nostr thing anywhere. An npub, nprofile, naddr, nevent, or note1 pasted into any search box — Search, Recents, Articles, Following, Files, Images, the chat switcher — opens it: a person, an article, a debate, or a note. An nevent copied from another app (a Damus article, say) now opens the latest version of that article, not the copy the link named. plebchat.me/<npub> and plebchat.me/<nevent> open too. In Search, an entity shows as one “Open …” row, named from what is already on your device, and typing a name now finds people on nostr as well as articles.
  • The person tab is an overview. A cover from their banner, the picture over its edge (click to see it full size), their display name and handle, a check on a verified nostr address, website, Lightning address, npub, and their about with live links. Follows you, Mutual, Muted by you, and Mutes you badges; when they last posted; the relays they write to and read from in a popup (Copy or Open each, those you share marked); and Jump to their eBooks or Debates. Below: three buttons — Notes, Following, Muted — that each open a page with a Back, then their latest six articles as cards across the tab, with a cover, a summary, and a reading time, and See more… at the end. Nothing else is expanded.
  • Notes you can read. The Notes page hides replies by default: Notes / Replies / Reposts / All chips. A reply says who it answers and opens the parent. Pictures sit in a grid, a sensitive note blurs until Show, a linked article shows its title, and Load more brings older notes.
  • A note tab. Any note opens in its own tab with the notes it replies to above and the replies below; click one to move through the thread. Copy the nevent or a PlebChat link from the footer.

2026-09-04

  • The image canvas is a board (on the image-canvas-reimagined branch). Pictures are the cards: big, as tall as their own shape, no frames, a warm shadow, and they fade in as they load. Rest on a card for Edit, Vary, Open, and a menu with everything the old side panel held; the panel is gone. One prompt bar does the writing: it floats at the bottom when nothing is selected (type, Enter, a picture appears where you are looking) and docks under the card you select. On a picture it asks what changes: Continue edits the same card and stacks the result on it, Branch makes a new card under it. On a draft the bar is its editor: references, provider, one aspect chip, size, how many. Improve rewrites your few words as a full prompt with your own chat model and leaves it in the box; My words puts yours back. Several takes from one run show side by side on the card until you pick one. Lines between cards show only for the card you select or rest on, and run top to bottom. Tidy on the toolbar lays the board out by lineage. Double-click empty board to start a draft there. The board is warm: paper in light, charcoal in dark. A third view, Stacks, shows every chain as one card: the newest version large, a strip of versions under it to flip through (or ← →), the instruction that made it, a chip that says where a fork came from, and a box to keep editing right there. Forks sit beside the stack they came from. Type @ in a stack’s box (or the board’s bar on a picture) and the picture chooser opens: the pick rides along with the next edit as one more reference. Each stack shows its resolution and ratio and has its own model picker.
  • Debates and Canvases get the eBooks bar. The “My Debates” heading with the eye is gone. Both launchers now have the same top strip as eBooks and Files: a Browse pill on the left to look into someone’s public library, the All / Mine / Joined filters beside it, New on the right, and a thumbnail / list toggle. Under a lens the pill shows whose library it is and Back to my library sits on the right. Canvases are now picture tiles: the newest picture fills a 4:3 card with the name under it, the way a project looks in Comic Canvas, and New Canvas is a dashed tile of the same size.
  • Canvases are projects. The Images launcher is now My Canvases, the same library as Debates: a card per canvas with its newest picture, the count, and the last change. New Canvas asks for a name and opens it in its own tab; rename on the card or in the tab’s title. Pin, Share publicly, and Delete are on the card’s menu (Delete keeps every picture in Files and the Library; sharing and browsing other people’s canvases are on the way and say so). Two canvases can be open at once, each with its own undo and its own runs. The launcher’s Library view finds a picture on whichever canvas holds it. Old canvases from before this change start empty; the pictures stay.
  • Image edits are a conversation on the card. Edit this on a picture starts a normal chat named after it, with that picture large at the top; it sits in your chat list and switcher like any other. Your first instruction makes one new card wired to it; every next instruction edits that result and stacks it on the same card, so the canvas shows one line and one card with a count. The card carries a chat badge with the turn count: click it (or Conversation in the panel or the viewer) to read every instruction and result again and keep going. Edit this on the new card starts a fresh branch. Each turn now carries the whole exchange to the model, the way Google’s own image chat does, so “undo the hat” works and faces drift less over a long chain; nothing is stored at the vendor. The side panel on the canvas now floats and is only as tall as it needs to be.
  • Ask about image. On a picture’s panel and in the viewer, a new button opens a fresh chat with the picture attached, so you can ask any model that sees pictures what is in it. Ask agent stays for canvas work. In the viewer, resting on a parent or child thumbnail now shows it large.
  • Choose what credits pay for. Settings → PlebChat Credits has a Use credits for row: Chat models and Images. Switch Images off and your own Google or xAI key is the only way pictures get made and the default in the pill; switch Chat models off and PlebChat leaves the model picker. Both stay on unless you change them, and the choice syncs.
  • Ratios you can see. The aspect on a Generate card is a row of shapes, one rectangle per ratio, not a dropdown. Every picture on the canvas shows its resolution and ratio, exact and the nearest named one (1024×683 · 1024:683 ≈ 3:2). A card made from a picture, by dragging off it or by Variations, starts at that picture’s ratio.
  • Images, rebuilt around the picture. One kind of card: a prompt runs and the picture lands on that same card, and running again stacks a new take on it, so a chain reads picture → picture. Click a card and it opens in a panel on the right (a sheet on a phone); nothing is edited on the canvas itself. Double-click a picture to open it in a tab with its parents above and its children below, and step through takes with the arrow keys. Double-click a title to rename it. Right-click the canvas for Generate here, Import here, and Paste here. Edit this now opens the Agent column on the picture: type what stays and what changes, send, and the edit lands wired to the original; the next instruction edits the result. The pill there picks the image model, never a text model. Styles on the toolbar keep a look across a canvas: a short line of prompt text, chosen per card and joined to the prompt when it runs. Backspace archives a picture instead of deleting it; the file hides from Files and the Library until you restore it, and ⌘Z brings both back. Everything the Images tab imports or makes lands in one Image Canvas folder. Your old canvas layout starts empty; the pictures stay in Files.
  • Nano Banana on your own key was failing on every run: Google returns JPEG only and we asked for PNG. Fixed on both paths; the credits path takes effect on the next deploy.
  • Images on a phone. Every card on the canvas is now a tap target: tap a picture or a Generate card and a sheet slides up with the full editor or the actions (Edit this, Variations, Ask agent, Open, Remove). The list view shows Generate cards too, so a chain reads picture → prompt → picture. Handles are bigger in the graph view.
  • Images, everywhere. References on a Generate card are thumbnails you can remove; a link line’s end drags to another slot or off into nothing to cut it. Menus on the canvas close when you click elsewhere, and dragging a link no longer selects text. Drag a line off a picture onto empty canvas to make a Generate card wired to it. The same picture no longer wires to one card twice. Thinking (Google) sits beside aspect and size, not under Advanced. The sparkle that sent your idea to the agent is now a labeled Ask agent robot button that opens a new chat with the request in the box for you to read and send.

2026-09-03

  • Images is real. The Images launcher is a canvas: drop or import pictures, and every picture is a card. A Generate card takes a prompt, references (wire cards to it, or + Reference to find one by tag), an aspect, a size, and how many, and runs on PlebChat credits (Google Nano Banana by default, xAI Grok too) or on your own Google or xAI key. Edit this on any picture makes a change-request card wired to it; Variations makes four takes; several results come back as a stack you can fan out. Refusals show why and offer the next provider. A Library view finds any image by tag, name, or the prompt that made it. Templates from the vendors’ own prompting guides fill the prompt with slots; save your own. The Agent column can make and edit pictures too (“make it night” on a selected card), and Improve prompt sends your idea to the agent and lands a better prompt on the card. Phones get a list. References are re-encoded before they leave your browser, so camera and location metadata never go to a vendor.
  • Terms and Privacy updated (2026-09-03) with an image-generation paragraph; the welcome card asks once more.
  • Guest home is Recents. No landing pitch. Search sits at the top. Create your keys is under it. Terms · Privacy sit at the bottom. The longer story is still on /about. The browser tab title is now just PlebChat.
  • Guest menu has no Workspace. Workspaces are for signed-in users. A guest still has one local scope; the switcher stays hidden until you create keys.
  • Empty Chats has a start button. No chats yet sits at the top of the list. A centered New chat button opens the Agent column on a fresh thread.
  • Agent column starts closed. A new visitor or a new workspace does not open it. A saved layout still restores the last open or closed state, and the last split as stored.
  • eBooks has a Files-style bar. Browse Bookshelf (user icon) sits on the top strip with Import EPUB and a thumbnail / list toggle. List view keeps the same card menu on each row.
  • Following paste field. The npub field sits in the list, not on the chrome bar. Enter opens the person. There is no Open button. The chrome bar has a Muted button instead of a Following title.
  • Narrower rail. The desktop sidebar is 200px wide.
  • PlebChat menu is a button. The brand control has a border and no dropdown chevron. The zap still strikes on hover.

2026-09-02

  • Changelog page. What’s new left the handbook and is now plebchat.me/changelog, a plain page like Terms. The Updates panel and the site nav link to it.

  • Docs links go straight to the handbook at plebchat.me/docs. The in-app viewer with its Back bar is gone; the handbook’s Open PlebChat button or browser Back returns you to the app.

  • Public pages, clean links. plebchat.me/about, /terms, /privacy, /blog, and /zap are now plain static pages outside the app: they load without the app, share a small site nav, and link previews and search engines see the real text. Settings and the welcome card link to them in the same tab; the PlebChat crumb or browser Back returns. Terms and Privacy are also in the handbook under Legal.

  • Settings, regrouped. Three cards: Profile & Keys, PlebChat Credits, Relays, Sync; Custom Providers, Agent; Advanced, Language, About. Advanced and Language are placeholders. Updates lives under About now. A box at the top finds a setting by name, including fields inside a section. The Agent topic shows the defaults a new chat starts with (model, tools, search mode) so you can change them outside the composer.

  • The PayGate has its own settings page. Settings › PlebChat Credits holds your credits, deposits, withdrawals, and the model catalog in one place, with your balance at the top. It is no longer one row in a provider list.

  • Custom Providers. Your own LLM endpoints and your own web search providers live on one page. Web search is now a provider list like the LLM one: the PayGate row works with no key and bills your credits, or add Firecrawl, Tavily, or Exa with a key. One provider is active at a time and serves the Web tool, article reading, and Add web page.

  • Search relays moved to Relays. The NIP-50 relay list is Settings › Relays › Search relays.

  • Stream responses is gone. Every reply streams. The checkbox did nothing.

  • Settings, redesigned. One row pattern everywhere: a plain sidebar, grouped lists, a one-line subtitle per section with a Learn more link, standard-width buttons, and clear Back pills. Save stays muted until you change something. New About section with the handbook, What’s new, and the Terms and Privacy pages.

  • Relays you can understand. Settings › Relays is a hub: What goes where shows every relay each action reads from and writes to, computed from your setup. Your relay list edits your NIP-65 list (read, write, both) and publishes it. Indexers shows the address-book relays with a reachability dot. The old News Feed list is now Discovery hosts. A new handbook chapter explains the outbox model.

  • iPad fixes. The hardware-keyboard shortcut bar no longer pushes the whole app up; trackpad drag selects text in books and articles; the panels reach lower on the screen; the settings page sits in the same frame as the rest of the app and scrolls.

  • @ a file or folder, / a skill. In the chat box, type @ to open your files above the message: walk folders, filter by name, click a file to send it along as a chip, or Add folder to let the agent read that folder. Type / to pick a skill: its instructions apply to that one message, with nothing to toggle on or off.

  • One Files row. The + sheet’s File access row and the Files tool are now one row, Files: the tools toggle at the top, the folders below.

2026-08-31

  • A real welcome at the door. Your first visit opens one card: what PlebChat is (we collect and store nothing, ever), three plain-language points, and links to the full Terms of Service and Privacy Policy. One click — “Let’s get started” — records your agreement in your own browser and nowhere else. You will see it again only if the terms change.
  • The app opens for everyone. plebchat.me now starts a guest session on first visit — no landing page, no sign-up wall. Drag in files, write notes, read books, and open shared links right away. Create your keys when you want your work synced, shared, or paid for: everything you made as a guest comes with you.
  • Share an article as a plain link. plebchat.me/<naddr> opens the article for anyone, first visit included. The article menu has Copy link.
  • Set up at the moment of need. The first-run wizard is gone. Sending your first chat opens the AI setup (deposit sats or bring your own endpoint); sharing or syncing opens key creation.
  • Install from the menu. The PlebChat menu offers Install app while you run in a browser tab.
  • Demo mode retired. The working guest app replaced it.

2026-08-30

  • Search says when relays are down. A network search that reaches no relay now reads “Search relays are unreachable” instead of “Nothing matches”.
  • Following. A rail item shows cards for the people you follow, plus a side-scrolling Recommended row of 25 people to follow next. Open a card for their profile. Each shelf (writings, notes, follows, mutes) shows 6 items. See all zooms that shelf. Notes show pictures, video, and quoted posts instead of raw image URLs or nevent strings. Paste an npub to follow someone new. The list and each person tab stay on this device after the first load, so a return does not wait on the relays.
  • Gigi’s WoT relay. New installs read Discover from wss://wot.dergigi.com as well as the six general feed relays. Use the default set in Settings › News to add it to an older list.
  • Bot names stay off Discover. After a kind 0 lands, an author whose name is the word bot is dropped. Known bot pubkeys join the blacklist.
  • Highlight Friends. Friends on an article is your follow list. Seed writers are not Friends when that list is empty.
  • Show hidden article comments. Highlights and comments from muted people or outside your web of trust are not fetched with the article. Show loads them. Hide puts them away.
  • Home is now Recents. It includes recently viewed articles with files and chats. On phone, tapping Recents with no open tabs still opens the tab sheet, which says no tabs are open and offers Recents.
  • Saved means offline. Saving an article now downloads its accepted cover and inline images and keeps the author profile on the device. The button shows Downloading or Missing items while work remains, then Saved. Removing a saved article always asks first.
  • Offline writes survive a reload. Highlights, comments, finished reactions, public exports, and deletions stay queued on the device until a relay confirms them.
  • Offline caches stay intact. A failed or timed-out relay request no longer replaces Discover, highlights, comments, profiles, or nostr bookmarks with an empty result.
  • Prepare for travel. Settings → Relays & Storage checks saved articles, eBooks, PDFs, and files, restores available Blossom backups, and lists anything still incomplete.
  • Files show readiness. File cards say Ready offline or Missing file. Folder and file metadata syncs encrypted; raw bytes reach Blossom only after you accept the public-by-hash warning.
  • PDF text works offline. The app now includes pdf.js CMaps and standard fonts in its offline shell.

2026-08-29 — v0.2.0, the one surface

  • One surface. The Chat / Read / Debate modes and Projects are gone. One rail on the left (Search, Chats, Files, eBooks, Articles, Images, Debates, favorites), every opened thing is a tab, and the Agent column sits at the right. Workspaces scope it all; folders and files with agent grants replace projects.

  • Your private data stays on your app relay. Settings, chats, files, favorites, and debates now go to the app relay only — never to the public relays used for follows and comments, not even briefly. Changing the app relay in Settings reconnects at once, no reload. Primal is no longer an app relay.

2026-08-28

  • Follow works with the rest of nostr. Your contact list is read from the relays you use in other apps (via the indexers), so Following shows the people you really follow, and Follow adds to that list instead of replacing it. If the list cannot be read, Follow refuses and changes nothing. A first list is only created after you confirm.
  • Your relays, found by others. Highlights, comments, and reactions now also go to the author’s own inbox relays, so they see them. Another writer’s articles and profile are fetched from the relays they publish to.
  • Article … menu. Copy the naddr, open the article in Boris, Highlighter, or njump, or see the raw event JSON in a new tab.
  • RSS feeds have their own view. Filter › RSS feeds lists your feed subscriptions alone. Nostr views no longer mix in RSS cards.
  • Identity relays in Settings. Relays & Storage shows your NIP-65 relay list; if you have none, one click publishes a default. The app relay is checked (NIP-11) before a change is saved.
  • Author button opens Article info. Click the name under the title for the picture, ids, and a kind 0 check. All their articles there opens that writer’s long-form in Discover. A web page with no author still has (i).
  • Article highlights rail. Highlights and comments open in a side rail over the article, like annotations in the eBook reader. Use Highlights under the title or on the sticky bar after you scroll. They load when the article opens and stay on this device for 60 days, so a reopen still has them.
  • Bookmarks with a title and cover. A web page you bookmark from the reader — shared from another app, pasted, or opened from a feed — keeps the page’s own title, description, cover picture, and keywords. Sharing it publicly carries them too.
  • Faster Discover. Each relay is asked over one connection, kept open between queries, instead of a new one per query.

2026-08-27

  • Works offline. From your second visit, PlebChat opens with no network: your chats, notes, books, and bookmarked articles are on the device, and pictures you have seen stay cached. An Offline chip shows in the rail; anything you publish while offline is kept and resent when you are back. Updates still wait for you in Settings → Updates.
  • Reading time and Listen. Articles show N min read; cards show N min. Listen reads an article aloud with your browser’s voice — pause, stop, pick a speed. The speed is the same one the eBook reader uses.
  • Share to PlebChat. On Android (installed app) PlebChat is in the share sheet: Share → PlebChat opens the page in the reader and bookmarks it. On iPhone, a one-minute Shortcut does the same — see Read › Bookmarks › Save from another app. A shared nostr article link opens from the relays.
  • Article chrome. The reader no longer has Back to feed — close the tab. Save sits under the title. The tab chip shows the first 15 characters of the title, not the word Article. Discover cards load the author name when the card appears. Kind 0 is asked on the relay that held the article first; other relays run only if that hop has none. Click the author chip to see that writer’s other articles. The (i) after the title has ids you can copy and a kind 0 check that stops after the first hit. Click the author picture there to see it full size. After you scroll, the sticky bar shows the title and the author. Back to top floats over the article, centered.
  • Unsubscribe drops the feed’s articles. Those cached RSS cards leave Discover. A bookmark you saved stays.
  • Article links open in a new tab. A YouTube or other http(s) link in an article no longer replaces the reader.
  • Discover opens at once. The last article list is on this device. New cards appear after the network check. A failed check keeps what you already have. Scroll the grid for more articles.
  • Publish long-form. Open a note’s menu and pick Make this a post… to give it a title, summary, cover image, and tags — the metadata stays out of the editor. Then Publish on nostr signs it as an article (kind 30023). Publish again and it updates the same article. Articles › Posts lists your drafts and what you published; New post starts one.
  • Cross-post a web article. Open any web page or RSS item in the reader and click Cross-post…. You get a draft note with the source URL kept as canonical; edit, then Publish. The article carries a “Cross-posted from” line.
  • Highlights and comments. Hidden until you click Show highlights and comments. Then you see what other readers marked and said, on nostr articles and web pages alike. Select text to make a private mark. Publish exports it. Write a comment or reply. Muted people and strangers outside your web of trust are hidden, with a count.
  • RSS and nostr, one feed. Items from your feed subscriptions show as cards in Discover, badged with the feed’s name, beside nostr articles.
  • Search nostr. The Search tab now lists long-form articles from the network under your local results, filtered the same way Discover is.
  • Discover is readable again. The Articles feed no longer shows the raw newest-first firehose (which was almost all spam). Every article must have a cover image and real length, and adult or test posts are dropped. Your mute list applies. The feed builds a web of trust from the people you follow — or from a set of known writers when you follow nobody — and asks the relays for those authors’ articles first. The default view is Curated: articles picked in curation sets by people you trust. Recent and the topic pills show the ranked feed. The footer tells you how many articles were filtered and why.
  • Feed relays. Settings › News is a list you add to, not a text box. Default: damus, nos.lol, primal, nostr.wine, offchain.pub, Highlighter. Open a row to read the relay’s own information document. Remove is on that page. The Articles tab has a gear that opens this pane.

2026-08-26

  • One agent, also for books. The book side panel is gone. Chat, Chat…, and Discuss in the reader open the Agent column with the book shared; the chip says so far (no spoilers) or whole. The agent can grep and search the book and any shared folder, and its citations turn the page.
  • The agent can ask for access. When a task needs a tool or folder the chat does not have, the agent shows a card with its reason. Enable (⌘↵) shares it and the agent continues at once; Skip lets it continue without.
  • The agent can ask you questions. Turn on Questions under + → More tools. The agent then shows a short multiple-choice card when it needs a decision from you. Pick an option or type your own; Cancel sends it on without an answer.
  • A question survives a reload. If you reload while the agent is asking you something (a folder to share, a multiple-choice question), the card comes back and the chat waits for your answer. It no longer reads as interrupted.
  • File writes no longer ask. Each turn keeps file history, so you can revert, and each shared folder is read-only unless you set Write.
  • A new input bar. The model picker sits at the left. Next to it, one chip per active tool and per shared folder shows what the agent can touch. Hover a chip and click ✕ to switch it off. The + button moved to the right, beside Send. Its list starts with Attach, Web search, and File access. Sharing a folder turns the Files tools on for that chat.
  • Read or Write per folder. File access lets you share a folder as read-only or writable. Read is the default. The agent sees the level and tells you when it cannot write.
  • Agent files live in Files. Files the agent writes are real files now. They land in a folder named after the chat, right in your Files area. A new file opens in its own tab in the main area, where you read and edit it like any other file. The paperclip in the Agent column is gone. HTML and SVG files open as a live preview, and .py files get a Run button, right in the file tab. Reverting a turn still puts the files back. Incognito chats keep their files in memory, beside the transcript, and lose them on close — as before.
  • File cards keep their size. The Files grid no longer stretches cards to fill the row. Cards stay the same size as Home recents. A new column appears when there is room. Dragging the Agent column or resizing the window no longer makes thumbs grow, then jump.
  • Notes do not steal the keyboard. Opening a note leaves the editor unfocused. Click in it to type. Escape leaves the editor. A second Escape or w closes the tab.
  • Agent column. Open and close slide like the left rail, fully drawn.
  • Escape on Search. Escape clears the box and leaves it. A second Escape or w closes the tab.
  • Notes: one mode, plus Undo and Redo. The Preview button is gone from notes; what you see while editing is the preview. Web pages and HTML keep it. Undo and Redo buttons sit in the toolbar.
  • Notes show pictures. Write ![alt](photo.jpg) in a note, with the path relative to the note’s folder, and the picture appears in place. Click a picture to replace, open, or remove it. Type ![ or press the Image button for a small file browser with thumbnails; click a picture and the link is written for you. Hover under a picture, click Add a caption, type, press Enter. The note stores it as standard markdown: ![alt](photo.jpg "A caption").
  • Search shows the file. Hover a file or folder result on desktop and its card thumb appears under the pointer, just below the row, so the name stays readable.

2026-08-25

  • Home is quieter. The New agent, New folder, and Import a book cards are gone. Search stays. Recents split into Recent files (same page cards as the Files grid) and Recent chats (a bubble with the last bit of the convo inside). Each shelf keeps the last 10, scrolls sideways, and sorts by last viewed on this device. Hover the × to drop a card from the list.
  • Archive a chat. The Agent menu and the Chats kebab can archive a thread. Show Archived on the Chats tab lists them. Unarchive brings one back.
  • Files takes any file. Drop csv, json, code, images, video, audio, or anything else into a workspace folder — the 1 MB limit is gone. Text opens in the editor, images and media open in a viewer, and the rest download. Very large files warn about browser storage.
  • New… in Files. One button opens new note, new folder, file upload, folder upload, and add web page. A folder upload or a dropped folder keeps the folder tree. An Up button opens the parent folder.
  • Notes are markdown. New note and rename take a title only. The file is always .md. The card says Note. Double-click the name to rename. The file card sits on the type/size row and shows on hover.
  • HEIC photos. iPhone photos open and show a thumb. Safari paints them directly; other browsers decode them first.

2026-08-24

  • Empty start. A new identity has no Alice book and no Bitcoin whitepaper. The Purple Text article still seeds Bookmarks.
  • Folder cards. Files grid folders use the folder icon shape, with thumbs of what is inside.
  • Save a reply. A finished assistant message has Save to file, left of the token chip. Name the file, pick a folder, and the reply lands as markdown in Files.
  • Floating panels. On desktop the rail, the tab content, and the Agent column have rounded corners and a small gap. The tab strip sits above the content panel. Phone stays flush.
  • One surface. The three modes and the top bar are gone. One sidebar (Chats, Files, eBooks, Articles, Debates, Search, Collaborating, plus Favorites), one tab area, and the Agent column on the right. A book, a PDF, a file, an article, a debate, and a chat each open as a tab; two books can be open at once.
  • Workspaces. The PlebChat menu at the top of the sidebar switches workspaces. Each keeps its own chats, files, books, PDFs, debates, favorites, and open tabs. Move items between workspaces from their menu.
  • Folders and files replace projects. The Files tab is a folder browser: New folder, New file, Import (text, markdown, PDF), Add web page, drag to move. Grant the Agent folders from the composer’s + button and it reads and writes them as real files.
  • Search is the first rail item, or k. The Home tab searches too, and lists what you touched last.
  • Tabs have a menu: hover a tab and its icon becomes one. Pin a tab to keep it first and safe from w.
  • Thumbnails: PDFs show their first page, notes show their first lines, and a folder shows what is inside it.
  • Phone: a two-slot bar — the open tab on the left, the Agent on the right — and a tap flips between them.
  • Keys: s sidebar, a agent, n new chat, t opens the Agent’s chat as a tab, c f e d k g for the launchers, w closes a tab.

2026-08-19

  • A reply will not start unless your credits cover about two full replies (the long-reply size you set under Max reply tokens). We still lock only one reply’s worth; unused lock comes back when it ends. An agent chat can stop mid-way if credits run low — add more and send again.
  • Every paid reply now shows its real price. Open the Run receipt chip under an assistant reply (PlebChat credits only): starting balance, input/output (and cache) tokens with their sats, the reserve taken, the exact cost down to thousandths, what was released back, and your balance after. An estimated charge says so; an unmeasured turn shows no number at all — never a made-up zero.
  • The credits pill’s “last reply” figure is the settled receipt now, not a guess from balance changes.

2026-08-18

  • The composer split in two. A model button always shows your model and its thinking level — tap it for favorite models, the full model list, thinking, and a reply-length cap. A + button holds the rest: tools (each with its own settings), attachments, personality, and skills. Icons on the + show what’s switched on.
  • Agent presets became personality prompts: pick one per chat from the + button, or write your own in Settings → Personality & Skills. Deep Research, Analyst, and Socratic Tutor ship built in.
  • Tools now run without asking by default. Flip a tool to Ask each time under the + button to approve each call — the choice lasts for this session only.
  • A new chat shows a Speak button. Dictation is not built yet — it says so when tapped.

2026-08-16

  • Aa now has a / A size buttons, Tight / Normal / Loose line height, Tight / Normal / Wide margins, a Charter font, and Regular or Bold weight.
  • Page turns slide into place instead of jumping. A swipe that is already turning the page will not start a highlight.
  • Long-press a word, then drag left to grow the start of the highlight, or right to grow the end.
  • Speed read now uses your book’s type, size, and page color from Aa. It starts paused. Collapse the preview and it stays that way next time.
  • If you left a place, Speed read offers Resume or Current page. A sentence that crosses a page stays one thought.
  • Wide letters no longer overlap on the focus line. On a phone, Stop is labeled and Close book hides while you play.

2026-08-14

  • When a new version is ready, the settings gear shows a badge. Open Settings → Updates to read a short What’s new note and tap Update now. The app checks on launch, every hour, and when you come back to it.
  • In a book on the phone, the highlight menu hides while you drag a handle so you can reach the last lines. It comes back when you lift your finger.

2026-08-12

  • Sync now follows each item. New chats, projects, books, PDFs, feeds, saved articles, and debates stay on this device until you select Sync with relays. Later saves sync automatically.
  • Account settings, provider credentials, presets, prompts, skills, favorites, and reading preferences now sync automatically after sign-in.
  • Incognito now applies only to Chat and remains memory-only. It no longer changes persistence or sync in other modes.
  • Sync failures and edit conflicts now stay visible and retryable. Stopping sync keeps the local copy and sends best-effort relay deletion requests.

2026-08-11

  • Phone sidebar, reworked: swipe right anywhere to open it, swipe left (or tap the edge of the page) to close. The sidebar no longer slides over your screen — the page itself slides aside to reveal it, with a clear shadowed edge in light and dark mode. The bottom corner is simpler too: the settings gear moved to the bottom left and the account button is gone — your account now lives inside Settings.
  • Chats and projects unified for real: a conversation that gains a file or source becomes a project the moment the run finishes — you land in it with the same conversation open and the new file in a tab. Nothing to manage: simple chats stay simple; work that produces things gets a home.
  • Project chats run the full agent now: the same agent button (presets, tools, skills, prompts) as regular chat, plus web and nostr search with [s1] citations. Click a citation for its card, and “Save to sources” files it into the project — scraped when you have a Firecrawl key.
  • Python files run inside projects: a Run button on any .py file, same shared interpreter as chat.

2026-08-10

  • One agent button in the chat composer: pick a preset in a tap, or open Customize agent for the model (thinking levels live with it), tools, skills, and this thread’s prompt. Save your setup as a preset of your own. A mic button marks where dictation will land.
  • Agent prompts became a library: write named prompts in Settings, attach one to any preset or thread, and choose whether the stock PlebChat opener stays in front. They sync encrypted like presets and skills.
  • The agent writes real files now. Ask for a report, a rendered page, or a python script — files attach to the thread, open in tabs beside the conversation, and you can edit them, re-run python with shared state, and download them. Tool calls show live while the agent writes. Files you attach from the composer land there too, and a new file opens its tab the moment it appears.
  • Synthesize became Projects, inside Chat: one sidebar holds chats and projects together. A conversation that gains a file or source shows as a folder row with counts, exactly like a project; a chevron peeks at any folder’s contents without opening it. “Add to project…” on a thread moves the conversation — files and sources included — into a project. The mode bar is three modes now.
  • The credits pill moved from the sidebar top into Settings → Account, behind the user icon at the sidebar’s bottom-left.

2026-07-27

  • A new identity starts with a small starter shelf — Alice’s Adventures in Wonderland, the Bitcoin whitepaper, and one saved article — as lightweight ghosts: nothing downloads until you open one, and a deleted default stays deleted, on every device.
  • Browsing a friend’s library moved into the collection titles: click “My Library” (or My PDFs, My Articles, My Feeds, My Debates) and the eye beside it to pick whose shelf to view. Favorites now sit under the collection list, mode icons got their colors, and favorite stars are gold.
  • Everything in Read can now be shared per item: PDFs, saved articles, and feed subscriptions join books with an explicit share action on each one. Sharing a PDF uploads the file itself (public by hash) and says so first; unsharing re-encrypts the listing and says honestly what it can’t recall.
  • PDFs now sync between your devices like books do, and a PDF whose file hasn’t reached this device yet can be restored from its card menu.
  • Browsing a friend’s library now covers everything: the lens in Read spans all four collections, and Debate gained its own — an eye button opens a searchable picker of people you follow, and their public debates appear as a library you can favorite from or join. What they didn’t share stays invisible, and nothing is copied without an explicit action.
  • A public debate opens as a read-only preview before you commit: walk the whole argument, then join from right there if you want to contribute. Preview links are shareable.
  • Taking a copy works across the lens: download a shared PDF, save an article, or subscribe to a feed straight from a friend’s library — each an explicit click, each yours (private) afterwards.

2026-07-26

  • Debate’s dashboard became My Debate Library: title search, All/Mine/Joined filters, and one Start-a-debate dialog for creating, joining by address, or restoring an export.

  • Debates export to a .debate.jsonl file — the whole argument graph and its conversations — and restore from one, including after a delete.

  • Favorites arrived across Debate and Read: star anything from its card menu and it appears in the mode’s sidebar. Favorites are private (encrypted bookmarks, NIP-51), sync across devices, and never join or copy anything.

  • Books, PDFs, articles, and feeds can be pinned to the top of their collections; eBooks and PDFs share the same card design as debates.

  • Synthesize’s project dashboard joined the same library design: title search, and the same card menu (pin, rename, delete) as everywhere else.

  • Debate now uses one editable navigator with persistent Support and Challenge columns, plus compact Map and Sunburst views. Each icon on the map carries a bar showing how much backs it and how much attacks it.

  • Definitions are first-class, challengeable nodes; concessions stay on the record; unlinked claims and terms are available from the sidebar.

  • Debate gained multiple named interlocutor threads with Socratic, Refute, and Steelman roles. Auto-edit permission is independent per thread.

  • Debate checkpoints show changes and can restore one claim or the whole graph. Restored claims now keep their connections.

  • Public debate links can be joined. Counter-arguments default to followed or explicitly invited people, with an opt-in Everyone setting.

  • Borders, selection states, thread renaming, and sidebars are more consistent across the app.

2026-07-25

  • Debate launched with structured theses, support, challenge, definitions, public sharing, and an AI interlocutor.
  • Synthesize replaced per-file versions with project checkpoints and added an optional auto-edit setting backed by recoverable history.

2026-07-23

  • Sources and HTML previews became collapsible side panels and full-screen phone sheets.
  • The credit balance moved into the mode sidebar.

2026-07-22

  • Drafts survive reloads; large pastes and screenshots become attachments.
  • Python runs locally in replies and as an Analyst tool.
  • HTML/SVG previews, math rendering, better code blocks, and smoother long conversations landed.

2026-07-21

  • The new front page offers Get started and a no-key Look around demo.
  • Guided setup covers installation, Nostr identity, and AI options.
  • Logged-out product explanations moved into one About page.

2026-07-19–20

  • PlebChat became a built-in pay-as-you-go provider with Lightning and Cashu deposits, sats pricing, balance visibility, and withdrawal to ecash.
  • Account and key management moved into Settings.
  • Provider configuration became a focused list with model capability details.
  • Touch scrolling and streaming behavior improved on phones.

2026-07-16–18

  • Settings became topic-based and model setup gained connection testing, searchable catalogs, capability badges, and clearer errors.
  • Chat gained attachments, concurrent response forks, retained interrupted replies, token-usage details, and safer deletion.
  • Synthesize gained fetched sources, templates, quick-open, stronger editor context, and file deletion with approval.
  • Sync and privacy became one control with Synced, Local only, and Incognito stances.
  • Numerous iPhone and iPad issues were fixed, including first-tap Send, keyboard focus, scrolling, API-key entry, and feedback attachments.

2026-07-14–15

  • The product consolidated into Chat, Read, Synthesize, and Debate.
  • Research moved into Chat; books, articles, PDFs, and feeds moved into Read.
  • Public-shelf browsing, PDF reading, encrypted settings sync, cached feeds, mobile sidebars, and installed-app update notices arrived.

Older detail remains available in repository history.