-
v1.0.0-Beta.14
Pre-releasereleased this
2026-09-02 16:59:24 +02:00 | 8 commits to main since this releaseYour account, your space, and screens that say what they are
Added
-
A finished session opens with what it was: how long, how many sets, how much
was moved and how hard it felt. Every one of those numbers was already
recorded and none of them was shown — the screen was a drawing of food and
then a list. Under each exercise it now also says what the same exercise
looked like the time before, which is the difference between a record of what
you did and something worth reading. -
Weekly volume is no longer hidden from the interface a new account starts in.
The argument for hiding it was that a tonnage means nothing without a scale to
put it against, which is true of a figure and not of a line: whether it is
going up is exactly the question somebody new has. By movement pattern and Not
moving stay behind the switch, because those are coaching vocabulary. -
An administrator can set how much room each account has, and each account can
see what it is using: a bar with a part for photographs and a part for the
activity files a watch writes. Two parts because two things charge that
counter, and an architecture test now refuses a third without one being added
to the bar in the same change.Every account starts with two gigabytes rather than no ceiling, because a bar
with nothing to fill teaches nobody anything — and the reason to show it at
all is that finding the limit at the moment of hitting it is finding it too
late. Zero still means no ceiling, for an administrator who wants one person
unbounded. -
A plate the catalogue does not stock can be added by hand. Ticking from the
list covered almost every gym and bars could already be typed in, so plates
not being addable was an asymmetry with nothing behind it — and the
calculator and the warm-up ramp are only worth anything if they work from the
plates actually on the rack. -
A destination for notices can be corrected. Adding and deleting were the only
two operations, so fixing one character in an address meant rebuilding the
destination — which throws away the record of when it last worked, and that
record is how anybody diagnoses one that has quietly stopped. An empty secret
means "keep the one you have", since it is never sent back to the browser. -
A screen called You, holding the four things that are about the person rather
than the application: what you are called, how you prove it is you, who else
may look, and how you take it all with you. They were scattered — a row that
led nowhere, a section called Security three rows down, a whole navigation
entry holding one control, and a backup filed next to the bin. -
The local PIN can be switched on.
setPinandclearPinhave been complete
since the phase that wrote them — hashing, an attempt limit, an idle window —
and nothing had ever called either, so the lock screen worked perfectly and
could not be reached. Verified by driving it: set a PIN, push the idle stamp
back an hour, come back, and the application is behind the curtain. -
PATCH /api/me: somebody may now change their own display name and their own
password. Neither was possible without an administrator, which quietly worked
against the promise this project makes in writing — that an administrator
manages accounts and the server and never reads anybody's training. A design
where the only route to your own password runs through another person makes
that promise harder to keep than it needs to be.The two halves are not held to the same standard. A display name is cosmetic
and reversible, so a live session is enough. A password is the credential, and
changing one is exactly what somebody does with a stolen session, so it asks
for the current password first — the way turning off the second factor already
does. The username is deliberately not changeable: it is the handle the audit
log records, and a record of who did what is worth nothing if the name in it
can be edited afterwards.
Changed
-
Comparing two photographs is done by looking at them. The two were picked
from a segmented control with one pill per photograph, each carrying a date:
fine with four and a wall of identical grey dates with forty, and the wrong
question anyway — nobody remembers a physique by its date. It is two rows of
thumbnails that scroll sideways now, so forty take the same vertical room as
two. -
The body screen no longer says "Derived" over two numbers. The word reads as
something out of a maths lesson, and what the row is for is the figures
themselves; the sheet behind them still explains where each came from. -
Disk usage has left the body screen for the account screen. It is a fact
about an account rather than about a body — it counts photographs and the
files a watch writes — and it now sits beside the limit that gives it
meaning. -
Train answers the same question Today does. Today said "Push · 5 exercises"
with a button on it while Train, one tab across, said nothing was on the go
and offered a blank session — so tapping the training tab looked like being
told there was nothing planned. The plan leads there now, and recording
without one stays underneath, because somebody who does not follow a routine
is a whole user rather than a degraded case. -
Routines names both of its halves. It holds two different things — the
routines that belong to you, and the programme shapes anybody can take a copy
of — and only the shapes had a heading, so the routines read as the screen
itself and the shapes read as five more of them. Reported as "one running and
five more below", which is exactly what an unlabelled list above a labelled
one says. -
Notices no longer keep a log on the settings screen. Nobody can act on
"eleven were delivered"; they can act on some having been given up on, and on
why. That is one line when it happens and nothing when it does not. -
The green "notifications are on" banner is a row. A banner at the top of a
screen reads as the most important thing on it, and this was the least: it
told somebody what they had just done. -
Destinations and push devices are rows that lead somewhere, with the
destructive action inside rather than a red button pressed against the name. -
"Devices" and "On this device" were two screens saying much the same thing,
and are now one. What the first had that was worth keeping is a single line —
whether anything is still waiting to reach the server — and it showed the
sequence number and the sync epoch instead, which are for debugging the
protocol. -
The server screen's facts are tiles with their own icons rather than a list,
and the schema number is gone from it: it matters while a migration runs and
is otherwise a number with no action attached. The audit log is called
Records. -
Privacy is no longer a place in the navigation. It held one control, which
most people use once and many never use at all, and it now sits on the account
screen beside the question it belongs with.
Fixed
-
i18n:scancould not see any key that takes a placeholder. Its pattern
required a closing bracket straight after the string, sot("key")was
checked andt("key", { count })was not — seventy call sites, and the ones
most worth checking: a missing label is visible, a missing sentence with a
{count} in it needs somebody standing on the right screen. -
lastgym doctorwas quietly deleting activity files from everybody's usage.
The recompute summed progress photographs alone and had done since before
cardio existed, while cardio uploads charge the same counter — so rebuilding
somebody's usage discarded every file their watch had ever contributed. It
wrote the answer back, and it did that without--fix, so a command whose
whole job is to look was corrupting the number it was looking at.Activity files now carry their size the way photographs always have
(migration 018), the recompute sums both, anddoctorfills in the sizes of
files stored before there was a column to hold them. -
Your date of birth came back empty every time. It saved correctly and could
not be drawn:born_onis a moment, so it arrives as
"1990-05-12T00:00:00Z", and an<input type="date">takes exactly
yyyy-mm-ddand ignores anything else without saying so. Anybody who set it
reopened the screen, saw a blank field, and had every reason to think it had
not been saved. -
On a desktop the navigation showed itself twice. Past 60rem the bar becomes a
sidebar with every destination on it, which is the point of having the room —
but the More button stayed, sitting under the full list and offering a sheet
containing the same list again. -
A role noun stood in for a person the server has never met. The line that was
drawn in Beta.13 — a role noun stays because it is a language's unmarked word
for the job — turns out to have a second half. "Give a coach access" names the
job. "Has my coach been looking?" names somebody, and eight languages put a
gender on them: mi entrenador, mein Trainer, ο προπονητής μου, мой тренер.Where the language has a natural way to say it, the person is now named by
what they do: quien me entrena, chi mi allena, quem me treina, όποιος με
προπονεί, la personne qui m'entraîne. German, Polish and Russian have no short
neutral for it, so those ask what the audit log actually answers — whether
anybody read it — and their notification title names the session instead.The role labels themselves are unchanged, and so are the generic mentions.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-