Say "student" and "profile" in the UI, not "child" and "family" #152

Merged
thatguygriff merged 1 commits from refactor/144-student-profile-copy into main 2026-07-29 23:41:55 +00:00
Owner

Closes #144.

The interface now says student where it said "child", and profile where it said "family".

What changed

Translatable strings only, across the frontend templates, the wp-admin screens, the editor previews (BlockPreview) and the block inserter entry:

  • [us_family] is headed Your profile; its form is Add a student / About this student.
  • Signup asks for a Student's name and Add another student; the guardian tick reads "…for one or more students".
  • Validation and notice strings follow — Student added., Student removed., "That is not one of your students.", and so on.
  • wp-admin: the students-list column and the student-detail panel are both Profile.
  • Block inserter: the block is titled Profile.

What deliberately did not change

Internal names. The us_guardian_links columns, GuardianService::createChild(), the children[] request parameters, the child_name form fields, CSS classes, the us_family shortcode and the us-scheduler/family block name are contracts with the database and with post content users have already saved — renaming them breaks existing sites for no user-visible gain.

The feature doc gains a short Vocabulary section recording that split, so the next person doesn't read the mismatch as drift and "fix" it.

Two judgement calls worth your eye

  1. "Child of Jane" → "Managed by Jane", not "Student of Jane". In a music studio "student of Jane" reads as Jane's pupil, which is precisely the wrong relationship.
  2. "a child account" → "a managed student account", not "a student account" — the account holder is a student too, so the bare substitution stops distinguishing the two.

Say the word if you'd rather have the literal substitution in either case.

Also: the block's inserter keywords still include family and children alongside profile and students. Keywords are never displayed — they're only search terms — and keeping them means anyone reaching for the old word still finds the block. Happy to drop them if you want the old vocabulary gone entirely.

Verification

composer test (762 tests), composer lint, composer cs all pass. Five test assertions pinned the old copy and were updated; two Mockery stubs standing in for GuardianService's real messages were updated to match.

Closes #144. The interface now says **student** where it said "child", and **profile** where it said "family". ## What changed Translatable strings only, across the frontend templates, the wp-admin screens, the editor previews (`BlockPreview`) and the block inserter entry: - `[us_family]` is headed **Your profile**; its form is **Add a student** / **About this student**. - Signup asks for a **Student's name** and **Add another student**; the guardian tick reads "…for one or more students". - Validation and notice strings follow — **Student added.**, **Student removed.**, "That is not one of your students.", and so on. - wp-admin: the students-list column and the student-detail panel are both **Profile**. - Block inserter: the block is titled **Profile**. ## What deliberately did not change Internal names. The `us_guardian_links` columns, `GuardianService::createChild()`, the `children[]` request parameters, the `child_name` form fields, CSS classes, the `us_family` shortcode and the `us-scheduler/family` block name are contracts with the database and with post content users have already saved — renaming them breaks existing sites for no user-visible gain. The feature doc gains a short **Vocabulary** section recording that split, so the next person doesn't read the mismatch as drift and "fix" it. ## Two judgement calls worth your eye 1. **"Child of Jane" → "Managed by Jane"**, not "Student of Jane". In a music studio "student of Jane" reads as *Jane's pupil*, which is precisely the wrong relationship. 2. **"a child account" → "a managed student account"**, not "a student account" — the account holder is a student too, so the bare substitution stops distinguishing the two. Say the word if you'd rather have the literal substitution in either case. Also: the block's inserter **keywords** still include `family` and `children` alongside `profile` and `students`. Keywords are never displayed — they're only search terms — and keeping them means anyone reaching for the old word still finds the block. Happy to drop them if you want the old vocabulary gone entirely. ## Verification `composer test` (762 tests), `composer lint`, `composer cs` all pass. Five test assertions pinned the old copy and were updated; two Mockery stubs standing in for `GuardianService`'s real messages were updated to match.
thatguygriff added 1 commit 2026-07-29 23:35:46 +00:00
Say "student" and "profile" in the UI, not "child" and "family"
CI / Tests (PHP 8.1) (pull_request) Successful in 41s
CI / Tests (PHP 8.2) (pull_request) Successful in 40s
CI / No Debug Code (pull_request) Successful in 2s
CI / Coding Standards (pull_request) Successful in 2m55s
CI / PHPStan (pull_request) Successful in 3m1s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m43s
CI / Build Plugin Zip (pull_request) Skipped
76caf178f0
Sweep the translatable strings across the frontend templates, the admin
screens, the editor previews and the block inserter entry. Nothing else
moves: the database columns, request parameters, form field names, CSS
classes, the us_family shortcode and the us-scheduler/family block name are
contracts with existing installs and with post content people have already
saved, so renaming them would break sites for no user-visible gain.

Two strings are reworded rather than swapped, because the direct
substitution reads wrong:

- The students list said "Child of Jane" and now says "Managed by Jane".
  "Student of Jane" would read as a teacher's pupil, which is exactly the
  wrong idea in a music studio.
- A managed account is now "a managed student account" rather than "a
  student account", which would not distinguish it from the account holder.

The guardian feature doc gains a short section on the split, so the next
person to work on it does not read the mismatch as drift and "fix" it.

Closes #144

Co-Authored-By: Claude Opus 5 <[email protected]>
thatguygriff merged commit 3a83decc82 into main 2026-07-29 23:41:55 +00:00
thatguygriff deleted branch refactor/144-student-profile-copy 2026-07-29 23:41:55 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Unsupervised/unsupervised-scheduler#152