Skip to content

feat(where): the remaining nine alarm types, and translations - #734

Merged
hokiepokedad2 merged 1 commit into
developfrom
feat/where-all-types
Aug 19, 2026
Merged

feat(where): the remaining nine alarm types, and translations#734
hokiepokedad2 merged 1 commit into
developfrom
feat/where-all-types

Conversation

@hokiepokedad2

Copy link
Copy Markdown
Contributor

Completes the per-alarm scope UI and translates it.

Cards

Raids, eggs, quests and max battles already shared app-alarm-info for their one-line summary, so that component now renders the Where chip instead of its own distance display. Four types corrected from one place, with no way for them to drift apart. Gyms, lures, nests, invasions and fort changes each carried their own distance-chip-row markup and now use the chip directly.

Clicking a chip opens the scope sheet on all ten types. Raids and eggs share a list component, so editScope takes the tracking type rather than existing twice.

Each list loads the profile's selected areas. That is only used to word the inherited case: "anywhere in my areas" is a lie for someone with none selected, and an empty list produces the more cautious wording.

Edit dialogs

They deliberately do not gain the control — scope is edited from the chip, and a second editor is two paths that can disagree. What they needed was to stop being able to break a scope they cannot describe.

An area-confined alarm has no radius. The areas-or-distance control cannot represent it, and switching it to "set distance" would have sent a radius alongside the stored areas, which PoracleNG refuses outright. The control is now hidden for those alarms, and every dialog shows the scope read-only above it so an alarm aimed at a place does not look like a plain radius mid-edit.

Translations

All 37 WHERE strings and the Places menu entry, into de, es, fr, it, nl, pl, pt, pt-BR, sv and da.

The applier asserts two things per locale rather than trusting the paste: that it carries exactly the English key set, and that every {{placeholder}} survives translation. A dropped or renamed placeholder renders literal braces to the user, and it is invisible until someone in that language hits that string.

Three strings match English after translation — RADIUS_KM in Danish and German, PLACE_NAME in German — which are cognates, not misses.

Verification

npm run build, npx jest (1025 passing), eslint and prettier all clean. The build is the one that matters: template errors like a missing pipe or an unregistered component pass tsc and jest and only fail the production compile, which is how the last round reached CI red. That caught eight edit dialogs here whose imports array was missing WhereChipComponent — local type checking was perfectly happy.

Not in this PR

The "measured from" place selector in the nine remaining add dialogs; Pokemon has it. A new alarm on the other types starts inherited and can be pointed somewhere from its card straight after. Also still open: AlertDefaultsService gaining a default place, and the mega-PVP control.

Cards
- Raids, eggs, quests and max battles share app-alarm-info, so that component
  now renders the Where chip instead of its own distance display. One change,
  four types, and no chance of the four drifting apart.
- Gyms, lures, nests, invasions and fort changes each carried their own
  distance-chip markup; all five now use the chip.
- Every list loads the profile's selected areas, used only to keep the
  inherited wording honest.
- Clicking a chip opens the scope sheet, on all ten types. Raids and eggs
  share a list, so the tracking type is a parameter rather than two methods.

Edit dialogs
- The areas-or-distance control cannot express an area-confined alarm, and
  switching it to a distance would have sent both and been refused by
  PoracleNG. It is hidden for those alarms, and every dialog shows the scope
  read-only above it.

Translations
- All 37 WHERE strings plus the Places menu entry into de, es, fr, it, nl,
  pl, pt, pt-BR, sv and da. The applier asserts each locale carries exactly
  the English key set and that every {{placeholder}} survives, since a
  dropped one renders as literal braces to the user. RADIUS_KM matching
  English in Danish and German, and PLACE_NAME in German, are cognates.

Verified with npm run build, not just tsc and jest -- template errors only
surface in the production build, which is how NG8004 reached CI last time.
@github-actions github-actions Bot added the feat label Aug 19, 2026
@hokiepokedad2
hokiepokedad2 merged commit 4a2b4a4 into develop Aug 19, 2026
5 checks passed
@hokiepokedad2
hokiepokedad2 deleted the feat/where-all-types branch August 19, 2026 06:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant