App v0.2.26 and gateway 0.1.20
Client: seek controls, Bazarr subtitle download and cast panel in the player; MDBList ratings strip; episode and schedule detail pages; series pace estimate; what's new panel; install-permission onboarding step; synced per-profile preferences; Emby outage banner. Gateway: rebuilt admin console (one fragment per page), preference history and restore, merged Continue Watching, Emby health probe, subtitle selection and Bazarr download, structured request logging with per-request identity, and embedded build version. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2675e6d82b
commit
4a4df7a73c
@@ -0,0 +1,55 @@
|
||||
# AGENTS.md
|
||||
|
||||
Guidance for coding agents working in this repository. **`CLAUDE.md` is the full brief** —
|
||||
what Memby is, how it is built and deployed, and why the architecture is the shape it is.
|
||||
Read it first. This file carries the rules that are easiest to break without noticing.
|
||||
|
||||
## Language: New Zealand English
|
||||
|
||||
**Everything a person reads is New Zealand English. No American spellings.**
|
||||
|
||||
- `-ise` / `-isation`, never `-ize` / `-ization` — personalise, synchronisation, organise,
|
||||
recognise, prioritise.
|
||||
- `-our`, never `-or` — colour, favourite, behaviour, honour, neighbour.
|
||||
- `-re`, never `-er` — centre, theatre, metre.
|
||||
- **licence** the noun, *license* the verb. **programme** for a broadcast, *program* for
|
||||
software.
|
||||
- grey, catalogue, cancelled, labelled, travelling, dialogue, defence, mould.
|
||||
|
||||
This covers on-screen copy in Kotlin and `app/src/main/res/values/strings.xml`,
|
||||
`CHANGELOG.md` (the TV renders it twice — Settings → About, and the what's-new panel after
|
||||
an update), the admin console at `server/internal/api/admin.html`, the release landing page
|
||||
in `dist/template/`, every string the gateway sends the client to display — row titles,
|
||||
alert `label`s, the preference and feature catalogues, error messages — and this
|
||||
repository's own prose and comments.
|
||||
|
||||
### What is exempt, and why
|
||||
|
||||
**Identifiers and anything on a wire keep the spelling they already have.** Renaming them
|
||||
breaks the wire or the build:
|
||||
|
||||
- Emby's API — `favorites`, `IsFavorite`, `SearchTerm`.
|
||||
- Android and Compose — `Color`, `fontSize`, `TheaterComedy`, `RecognizerIntent`.
|
||||
- Go and Kotlin — `synchronized`, and the literal `"request canceled"` in `images.go`,
|
||||
which is matched against `net/http`'s own error text.
|
||||
- SPDX and licence names — "GNU General Public License", `GPL-2.0-only`.
|
||||
- CSS properties — `color`, `text-transform`, `box-sizing`.
|
||||
|
||||
The rule is about words a person reads, never tokens a machine matches.
|
||||
|
||||
### Where the two meet
|
||||
|
||||
The boundary sits at the render. The favourites row is the worked example: the id and the
|
||||
row `kind` stay `favorites` on both sides of the wire, and `personalisedFavouritesTitle`
|
||||
puts **"Favourites"** on the screen. When a new string is both a key and a label, spell the
|
||||
display half and leave the key alone.
|
||||
|
||||
A quick sweep before finishing a change that touches copy:
|
||||
|
||||
```bash
|
||||
grep -rnEio '\b([a-z]{3,}iz(e|es|ed|ing|ation)|behaviors?|colors?|favorites?|honor|theater|canceled|labeled|catalog|gray)\b' \
|
||||
app/src/main server/internal dist CHANGELOG.md
|
||||
```
|
||||
|
||||
Expect hits — most are the exemptions above. Read each one and ask whether a viewer or an
|
||||
operator ever sees it.
|
||||
Reference in New Issue
Block a user