repo show began reporting the caller's own state (krz/gitbay#178), so
the app can stop guessing at it.
Watch and mute were two stateless buttons because nothing reported which
one you were in. The screen now shows the current setting and offers only
the transitions that exist: watching offers mute, muted offers watch, and
the neutral default offers both. It offers no third option, because no
command returns you to the default — repo watch and repo unwatch are
the only two, and a control implying otherwise would promise something
the server cannot do. An unrecognised value from a future server reads as
the default rather than masquerading as watching.
The bookmark state comes from the same read, so the separate
repo bookmarks call and the three-state optional that covered its
failure are gone — a repository screen is one request lighter than before.
A fork says what it was forked from. When the field is absent the screen says nothing at all: the server withholds it when the parent is not readable, so claiming "not a fork" would leak what that withholding protects.
Each action re-reads only repo show afterwards, so the control follows
the server rather than an assumption, without reloading the tree and
README to find out.