v0.53.0
September 3, 2026Changed
-
Choosing why you decided something now explains the options as you read them. The "Why?" list on a claim or a premise step showed only the reason names, and the short explanation of the one you picked appeared underneath afterwards. Each explanation now sits with its reason in the list, so you can read what a reason means before choosing it.
-
Reading someone else's review no longer offers controls that do nothing. Opening a shared review put you on the same steps their reviewer saw, with the True / False / Unknown and Accept / Reject controls live — pressing one changed nothing that was saved anywhere. The step now says whose review you are reading and the controls are unavailable.
-
The Edit controls in the results list say which answer they change. They were all simply called "Edit", which is unusable with a screen reader on a list of them. Each now names its own row.
Added
-
Your appearance preference now sits with your other settings. Light, dark or your device's own setting is chosen in Preferences on the profile settings page, alongside Advanced mode and Debug mode, rather than only from the theme control in the site header.
-
A blocked person's profile now says so, instead of looking empty. Opening the profile of someone you had blocked showed their name above the words "No arguments yet" — which was simply untrue, and gave you no way to tell a block from a genuinely empty profile. It now says their content is hidden because you blocked them, and offers an Unblock control right there; unblocking reloads the page and their arguments appear. Their name and picture stay visible either way, so you can be sure who you are unblocking.
-
You can now see who you have blocked, and unblock them, from the website. Blocking someone was only ever possible in the Proposit app — on the website there was no way to see your blocked list, and no way to undo a block. Settings now has a Blocked Users section listing everyone you have blocked, with an Unblock control on each, and each name links through to that person's profile. Nothing about blocking changes in the app, and the list you see is the same one either way.
-
Android visitors are now offered the Proposit app. Opening the site in Chrome on Android told you nothing about the app being on Google Play — the download prompt existed only for iPhone and iPad users in Safari. The site now tells any browser that both apps exist, so Chrome's own install entry leads to the Proposit listing on Google Play rather than to a web shortcut. The iPhone and iPad banner is unchanged.
-
An argument's version history says more about each version. A version that renamed the argument now shows the new title, so you can see at a glance where the name changed; the argument a fork came from is labelled as the original on the row itself rather than only in a tooltip. Every other row still reads as its version number and date, as before.
-
The "View differences" controls now say which version each one compares. Every row's control was called the same three words, so using the history by keyboard or with a screen reader gave you no way to tell them apart. Each now names its own version, and the one you are already comparing against says so.
-
The support-versus-counter bar no longer reads the vote counts aloud. Proposit deliberately shows which way readers are leaning rather than a score — but a screen reader was being given the raw tally ("7 supporting, 3 countering") that the bar itself withholds. It now says which way readers are leaning, in words. The bar also has more contrast against the card behind it.
Fixes
-
Adding an editor tells you when the account you named is wrong. Adding a participant with an id that is not a real id, or one that names no account, used to fail as a server error with nothing to read. Both now come back as an ordinary refusal saying the account id was the problem, and nothing is added either way. Adding a real account is unchanged.
-
Signing in again works properly from the list of arguments built from your posts. Asking for that list without being signed in used to come back in a form the apps could not read, so they could not tell you that signing in was the fix. It now comes back as an ordinary "you need to sign in" they can act on — and if you have signed in but not finished setting up your account, it says that instead.
-
Editing a premise or variable that is no longer there says so. If the thing you were editing had already been deleted — by a collaborator, or in another tab — saving used to come back as "someone else changed this, reload and try again", which sent you looking for a change that was really a deletion. It now says the premise or variable was not found. A genuine edit collision still reports as one.
-
Searching arguments by title keeps working when the search service is down. A title search asks an external service to understand what you typed, and if that service could not be reached the whole search failed with a server error. It now falls back to matching the words in the title directly — results are ranked less cleverly, but you get them.
-
A duplicate way of editing your own profile has been removed. There were two addresses for the same thing, and one of them reported its errors badly — telling you a save failed without saying why, and answering with a server error if you asked it to edit someone else's profile. Nothing used it, and everything it did is what the app already does when you edit your profile, so it is gone rather than patched.
-
A request the app cannot accept now says so, instead of failing as a server error. Fifteen places that create or change something — adding a reaction, adding an editor, creating an argument, importing one from a link or from pasted text, finishing registration, editing a premise, a variable or an expression, and both citation lookups — used to answer with an empty server error when the request did not match what they expect. They now answer "bad request" and say what was wrong, which is what a client can actually act on. Nothing about a well-formed request changes.
-
Asking for something you are not allowed to see now says so, instead of failing as a server error. Reading an argument's premises, variables or expressions — and saving a change to an argument's title — used to come back as an empty server error whenever the answer was really "no": the argument is someone else's private draft, it does not exist, it has already been published and can no longer be edited, or someone else edited it while you had it open. Each of those now comes back as the ordinary refusal it is, with a message saying which. Nothing changes when you are allowed to do the thing.
-
Editing an argument someone else changed first is now reported as a conflict, not a crash. If a collaborator saved a change to the same argument while you had it open, your save used to fail as a server error with nothing to read. It is now reported as the conflict it is, and your edit is not applied on top of theirs either way. On the web, the title editor still shows its general "couldn't update" message rather than naming the conflict — reload the argument to pick up their change before saving yours.
-
Hiding an argument now hides all of it. When a moderator takes an argument down, it disappeared from the argument's own page but a few of the app's other routes kept serving its contents. Every one of those now refuses the same way the page does. Nothing changes for an argument that has not been taken down, and the people who need to see a hidden argument — its author, and moderators reviewing or restoring it — still see all of it exactly as before.
-
The "check all possible assignments" result no longer repeats the same failing case. When a review found a case where every premise holds but the conclusion does not, the results screen could list that one case several times over and count each copy — reporting "4 failing cases found" when there was one. It now reports each distinct case once. The cases themselves, and what each one says, are unchanged.
-
An argument's claim count matches the claims you can see. The header counted sources and axioms alongside the claims themselves, so an argument showing three claims could say it had five. It now counts what is on the page.
-
A deleted account is shown as "Deleted user". Where a deleted account still appears as the author of something they published, it was labelled with an internal identifier instead of a name. It now reads "Deleted user", and no longer links to a profile that no longer exists.
-
A profile that does not exist no longer lists other people's arguments. Asking for arguments by a username nobody has returned the whole site's catalogue instead of nothing. It now returns nothing. Asking by a real username was always correct and is unchanged.
-
Publishing updates the version list straight away. After publishing, the version history kept calling the version you had just published your "current draft" and did not show the new draft it had created, until you reloaded the page. It now updates as soon as the publish succeeds.
-
Responding to a published argument explains itself instead of telling you to retry. Published versions cannot take a response, but the error said "please try again" — which never worked. It now says what is actually the case. Responding to a published argument is still not available; this only stops the message being misleading.
-
A title edit that collides with someone else's change now says so. If another person — or another tab — changed an argument while you had it open, saving a new title reported "Couldn't update the argument. Please try again." Trying again could never work: the copy your tab is holding stays out of date until you reload. The message now tells you what happened and that reloading is what fixes it, which also explains why the heading beside it is still showing the older title.
-
Searching by title now works even when AI features are unavailable. If the AI budget ran out — or if you sorted results by a specific column — a title search quietly returned the whole catalogue instead of the arguments matching what you typed, with nothing to tell you it had happened. Searches now always narrow to titles that match; when the AI ranking is unavailable, the ordering is simpler but the results are still the ones you asked for.
-
Blocking someone now also hides their responses to arguments you read. A fork of an argument made by someone you had blocked still appeared, by title and with a link, in the list of responses under that argument. It no longer does — for you; everyone else still sees it.
-
An argument by someone you blocked now explains itself instead of looking like a broken link. Opening one used to report that the page did not exist, which was both untrue and unhelpful: nothing told you a block was the reason, and the blocked list in your settings can only tell you who you have blocked — never who you would need to unblock to read the thing in front of you. The page now says the content is hidden because you blocked its author, and lists the people involved so you can open the right profile and unblock them. The argument itself stays hidden until you do. Arguments that genuinely do not exist, and ones a moderator has taken down, still report exactly what they did before.
-
The same explanation now appears in the app. Opening a blocked author's argument on your phone reported it as missing too. It shows the same explanation and the same list of people, and tapping one opens their profile.
-
The Argument Builder's opening line is spelled correctly. The first-run panel read "State your Propositition".
-
A message the Assistant could not answer offers a labelled Retry. It was a small circular icon with a tooltip; it is now a control that says what it does.
-
The previous-conversation list says when each one was, in the control's own name. A screen reader read the date as a separate line before, adrift from the conversation it belonged to.
-
The import-from-text form's fields are named "Argument text" and "Title (optional)". Same fields, same order, wording matched to the app's.
-
A version-history row no longer says its version number twice. Rows that show no title read "Version 1" with "Version 1" again on the line below; that line now carries just the date.
-
Renaming the same argument twice in a row now works. The second rename said that somebody else had changed the argument while you were editing it, when nobody had. The rename was refused and the old title came back.
-
A link to an argument by someone you blocked now explains itself too. The explanation above only appeared if the link named a specific version. The plain argument link — the one the Share control copies, and the one search engines are given — still reported the page as missing. It now goes to the same explanation, with the same list of people to unblock. A link to an argument that genuinely does not exist is unchanged.
-
Starting a review of an argument by someone you blocked no longer leaves a half-finished review behind. Opening the review page for one sent you to a "page not found" — but not before it had created a review in your name, which then sat in your reviews list pointing at something you could not open. The page now refuses before anything is written, exactly as the argument's own page does.
-
The Argument Builder's message box waits until you have chosen a conversation. With the "continue a previous conversation" chooser still on screen, you could type into the box and send — the message went nowhere useful, because no conversation had been picked yet. The box and its Send control are now unavailable until you either choose a previous conversation or start a new one.
-
"Verify code" is unavailable while a new code is being sent. Pressing it during a resend tried to check the code that was about to be replaced, which failed for a reason nothing on screen explained. It now waits for the new code to be sent.
-
A version-history row for a draft you have not named yet reads as its version. Such a row's title line was simply blank, which read as a broken row. It now says "Version 3" (or whichever it is) until the draft is named.
-
The rename box fills its row. Renaming an argument from its row in a list gave you a box about a third of the width available, with the confirm control marooned beside it. The box now grows to the space it has.
-
A preference switch waits for the change to save. Flipping Advanced mode or Debug mode twice quickly sent two changes racing each other, and the switch could settle on the wrong one. Each switch is now unavailable until its own change has been saved.
-
The "Why?" heading above a premise step is set in the same weight as its neighbours. It had lost its emphasis and read as body text.