A phone, and how much of this could not be used on one

The sidebar was a 280px panel laid over the page below the phone breakpoint,
opened from first paint, with the only control that closed it underneath it --
and that control existed on /chat and on none of the seven other pages carrying
a sidebar, Settings included. It starts closed at that width now, slides, dims
the page behind it, and closes by tapping beside it, by Escape, or by its own
button, which is inside the drawer where it can be reached.

Everything a finger has to hit was 36px, or 28 for renaming a chat, every action
on a message and every panel's close button. Raising --control-h under a coarse
pointer is the only fix that reaches all forty of them, which is what that token
is for. The row and message actions were also hover-only, so on a phone they did
not exist at all.

Installing: the splash and the browser chrome follow the instance's theme rather
than always being Moria's near-black; there are screenshots, so the install
offer is a dialog rather than a one-line bar; a new release no longer takes over
a page somebody is reading; the notification badge is a silhouette rather than a
grey square; and a browser rotating its own subscription no longer ends
notifications for good.

Every request now says it is happening -- nothing did before, so anything slower
than a few milliseconds looked like a click that had not registered.

A chat can be archived. The column has been filtered on in four places since
folders arrived and written by nothing, which is what made it look built.

chat.css may contain media queries. The ban protected the composer toolbar from
being "fixed" with a breakpoint; that guarantee is asserted directly now, and
the old test would have passed a version of the file that wrapped the toolbar
without one.

scripts/shoot.py is the instrument all of this was found with: it renders a page
through TestClient into a real headless browser at a real size and refuses to
run if an asset URL was left pointing at testserver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 13:39:35 +00:00
co-authored by Claude Opus 5
parent 92070d7879
commit 28390095a9
44 changed files with 2290 additions and 135 deletions
+91
View File
@@ -16,6 +16,97 @@ for 1.0.0 have something to be assembled from.
## Unreleased
## 1.1.0
Mostly about using this on a phone, where it turns out a good deal of it could
not be used at all.
### The sidebar on a phone
- Fixed: **the sidebar opened over the page on every phone, and the button that
closes it was underneath it.** Below a phone width the sidebar is a 280px
panel laid over the page; nothing ever closed it, and the only control that
could was in the bar behind it. It now starts closed at that width, slides in
when you ask for it, dims the page behind it, and closes by tapping beside it,
by Escape, or by its own button — which is inside the drawer, where you can
reach it.
- Fixed: **seven of the eight pages with a sidebar had no way to show or hide it
at all.** Only the chat page ever had that button. Settings, Messages,
Reports, Scheduled, Library, Connections and a folder's own page did not —
which on a phone meant arriving at a page already covered by a panel with
nothing to do about it. Settings is where the Install and Notifications
buttons live, so this was also why they were hard to reach.
- The toggle no longer claims the sidebar is open when it is not, which matters
to anyone using a screen reader.
### Anything you tap
- **Every control is now at least 44px on a touch screen**, instead of 36px —
or 28px for the small ones, which included renaming and deleting a chat, all
seven actions on a message, and every panel's close button. The dismiss button
on a notification had no size of its own at all and was about 18 by 7 pixels.
- Fixed: **renaming or deleting a chat, and copying, editing, regenerating or
reading aloud a message, were impossible on a phone.** All of them appeared on
hover, and there is no hover on a phone; tapping the row simply opened it.
- Fixed: **the settings tabs scrolled sideways with nothing to say so**, hiding
Appearance, Memory and Security off the right-hand edge of a phone screen.
There is a fade at the edge now, and a flick lands on a tab.
- Installed on an iPhone, the page ran underneath the clock and the home
indicator. It no longer does.
### Installing it
- The install prompt now offers the richer dialog rather than the terse bar, and
a long press on the icon offers New chat, Messages and Scheduled.
- Fixed: **a light-themed instance installed to a phone showed a near-black
splash screen and then opened parchment**, and every page load flashed dark
browser chrome before the stylesheet had run. Both follow the theme now.
- Fixed: **a new version used to take over pages you were reading**, swapping
the stylesheets under an open tab while it emptied the cache they came from.
It waits and offers you a reload instead.
- Fixed: the small mark beside a notification on Android was a solid grey
square, because the icon it used has no transparency to be cut from.
- Fixed: notifications silently stopped working for good if the browser ever
replaced its own subscription, which browsers do.
- Pages start loading a little sooner, and the two icons a launcher actually
crops are now kept for offline use.
### Things that move
- **Every request the application makes now says it is happening**, with a thin
bar across the top of the window. Nothing did before, so anything slower than
a few milliseconds looked like a click that had not registered.
- The thinking indicator turns rather than fading, so a model that is working
and one that has stopped no longer look alike.
- Dialogs, the drawer and the panels arrive and leave rather than appearing;
buttons answer a press; cards lift under the pointer. All of it stops if you
have asked your system for reduced motion.
### Archiving
- **A chat can be archived** — out of the list, into a group at the bottom of the
sidebar, and back again whenever you like. The setting behind this has existed
and been honoured since folders arrived; nothing had ever been able to switch
it on.
### Smaller things
- **Extra headers can be set on a connection.** They were sent with every
request already and no form could write them, so OpenRouter's attribution
headers were documented and unreachable.
- A model is no longer told that it will hear when a background job finishes on
instances where that notification is switched off.
- The guidance for asking you a question can now be edited like every other
piece of the prompt. It was the only one that could not be.
- Several controls that a screen reader announced as nothing now have names, and
two lists that claimed to be tab strips now describe themselves honestly.
- Borders resolve through a token like every other value, so a theme can change
one. They were a literal `1px` in about ninety places, which was the largest
patch of hard-coded value left in the stylesheets.
- `chat.css` may now contain media queries. It was forbidden them, for a good
reason that had stopped applying: what the ban protected is asserted directly
now, which is both narrower and stronger.
## 1.0.4
Six things that looked like they worked. Five of them were found by reading the