mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 03:14:00 +00:00
docs(hud): describe the character-only summary cap and trim comments
This commit is contained in:
1 parent
33381c5981
commit
ab8691383b
4 files changed
+12
-14
No files matched your search
@@ -5408,8 +5408,8 @@ and unreachable upstream (502/504) separately from road geometry.
|
|||||||
- Input: place/street/nearby-place labels, enabled layers and `feedProvenance`, with layer names as the user sees them; outside English the narration note and per-layer state ids are left out (`overall` carries the state). No model call without a place, street or nearby-place label: the deterministic line is shown.
|
- Input: place/street/nearby-place labels, enabled layers and `feedProvenance`, with layer names as the user sees them; outside English the narration note and per-layer state ids are left out (`overall` carries the state). No model call without a place, street or nearby-place label: the deterministic line is shown.
|
||||||
- Language: the HUD sends `locale` (part of the dedupe signature); the proxy keeps a shipped locale, English otherwise. Switching language in place drops the reply and aborts the request in flight, so the next tick asks again.
|
- Language: the HUD sends `locale` (part of the dedupe signature); the proxy keeps a shipped locale, English otherwise. Switching language in place drops the reply and aborts the request in flight, so the next tick asks again.
|
||||||
- Reply: `{summary, feedState}` (`text.format` JSON schema, `feedState` a snapshot state or null). A view that is not nominal needs the matching `feedState`. The HUD adds its own translated tag, state first and layer names last (`STALE | … | LIVE FLIGHTS`), so the warning is never clipped. Outside English a reply falls back when it carries a feed-state id, a translated layer's English name or id, only Latin letters in a non-Latin language, or, with every feed healthy, the UNAVAILABLE word. `get_hud_caption` uses the same check and tag order, in English, and returns `feedState`.
|
- Reply: `{summary, feedState}` (`text.format` JSON schema, `feedState` a snapshot state or null). A view that is not nominal needs the matching `feedState`. The HUD adds its own translated tag, state first and layer names last (`STALE | … | LIVE FLIGHTS`), so the warning is never clipped. Outside English a reply falls back when it carries a feed-state id, a translated layer's English name or id, only Latin letters in a non-Latin language, or, with every feed healthy, the UNAVAILABLE word. `get_hud_caption` uses the same check and tag order, in English, and returns `feedState`.
|
||||||
- Output keeps at most five words (80 characters), or 20 characters for Japanese and Chinese, cut at a word boundary unless the first word is longer. Errors and the 5 s timeout fall back to the deterministic line; a camera move during typing shows that line instead of the fragment.
|
- The model is asked for at most five words; the proxy keeps up to 80 characters, or 20 for Japanese and Chinese, cut at a word boundary unless the first word is longer. It does not count words, since the model reads a name like Rue de Rivoli as one. Errors and the 5 s timeout fall back to the deterministic line; a camera move during typing shows that line instead of the fragment.
|
||||||
- `partial` is a feed state of its own, ranked between `fallback` and `nominal`, so one partial layer no longer reads as off and partial plus nominal reads partial (HUD, voice view state, `analyst_query`, `brief`, the agent world packet). Its narration note says coverage is incomplete rather than not live.
|
- `partial` is a feed state of its own, ranked between `fallback` and `nominal`, so one partial layer, or partial plus nominal, reads partial, not off or nominal (HUD, voice view state, `analyst_query`, `brief`, the agent world packet). Its narration note says coverage is incomplete rather than not live.
|
||||||
- A summary asked for before the camera starts moving never paints over the next view: `moveStart` marks the summary dirty and bumps its revision, as `moveEnd` does, aborts the request in flight and stops a reply still typing; neither a reply nor a fallback line (on an error, the 5 s timeout, the abort, or a failed context build) paints once the revision has moved. A dropped request forgets its signature and a timeout counts as a failure, so the next 15 s tick asks again even over the same place. An interrupted typewriter reply also forgets its signature; fully displayed answers remain reusable.
|
- A summary asked for before the camera starts moving never paints over the next view: `moveStart` marks the summary dirty and bumps its revision, as `moveEnd` does, aborts the request in flight and stops a reply still typing; neither a reply nor a fallback line (on an error, the 5 s timeout, the abort, or a failed context build) paints once the revision has moved. A dropped request forgets its signature and a timeout counts as a failure, so the next 15 s tick asks again even over the same place. An interrupted typewriter reply also forgets its signature; fully displayed answers remain reusable.
|
||||||
|
|
||||||
### Place-search providers
|
### Place-search providers
|
||||||
|
|||||||
@@ -52,11 +52,11 @@ function toHudSummary(value, requested) {
|
|||||||
.split(/\s+/)
|
.split(/\s+/)
|
||||||
.map((word) => word.replace(/^['’·・-]+|['’·・-]+$/gu, ''))
|
.map((word) => word.replace(/^['’·・-]+|['’·・-]+$/gu, ''))
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
// Japanese and Chinese have no spaces to count words by: cap characters.
|
// Characters, not words: the model counts Rue de Rivoli as one word.
|
||||||
if (hudSummaryIsUnspaced(locale))
|
const max = hudSummaryIsUnspaced(locale)
|
||||||
return capAtWord(words.join(' '), HUD_SUMMARY_MAX_UNSPACED_CHARS, locale);
|
? HUD_SUMMARY_MAX_UNSPACED_CHARS
|
||||||
// No word count: the model counts Rue de Rivoli as one word.
|
: HUD_SUMMARY_MAX_CHARS;
|
||||||
return capAtWord(words.join(' '), HUD_SUMMARY_MAX_CHARS, locale);
|
return capAtWord(words.join(' '), max, locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
-5
@@ -120,11 +120,9 @@ const FEED_STATE_LABELS = Object.freeze({
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A summary line with its feed-state warning in the active language, e.g.
|
* A summary line with its translated warning:
|
||||||
* `UNAVAILABLE | <text> | LIVE AIS VESSELS`. The state word leads so the
|
* `UNAVAILABLE | <text> | LIVE AIS VESSELS`. The state leads so a narrow
|
||||||
* one-line readout never clips it; the layer names trail so they never push
|
* readout never clips it; the layer names trail so they never push out the text.
|
||||||
* the text out. State ids and layer names stay English in layer data; only
|
|
||||||
* this line translates them.
|
|
||||||
*/
|
*/
|
||||||
function withProvenance(text, provenance) {
|
function withProvenance(text, provenance) {
|
||||||
if (!provenance) return text;
|
if (!provenance) return text;
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ export const HUD_SUMMARY_MAX_CHARS = 80;
|
|||||||
/** feedState values the model may return besides null. */
|
/** feedState values the model may return besides null. */
|
||||||
export const HUD_SUMMARY_FEED_STATES = SNAPSHOT_FEED_STATES;
|
export const HUD_SUMMARY_FEED_STATES = SNAPSHOT_FEED_STATES;
|
||||||
|
|
||||||
/** Responses API structured output: the five words plus the canonical state. */
|
/** Responses API structured output: the summary plus the canonical state. */
|
||||||
export const HUD_SUMMARY_RESPONSE_FORMAT = Object.freeze({
|
export const HUD_SUMMARY_RESPONSE_FORMAT = Object.freeze({
|
||||||
type: 'json_schema',
|
type: 'json_schema',
|
||||||
name: 'hud_summary',
|
name: 'hud_summary',
|
||||||
@@ -114,7 +114,7 @@ const SUMMARY_LANGUAGES = Object.freeze({
|
|||||||
'zh-Hant': 'Chinese in Traditional characters (mainland wording)',
|
'zh-Hant': 'Chinese in Traditional characters (mainland wording)',
|
||||||
});
|
});
|
||||||
|
|
||||||
/** Scripts written without spaces, where five words do not apply. */
|
/** Scripts written without spaces, capped in characters instead of words. */
|
||||||
const UNSPACED_LOCALES = /^(?:ja|zh)(?:-|$)/;
|
const UNSPACED_LOCALES = /^(?:ja|zh)(?:-|$)/;
|
||||||
|
|
||||||
/** Shipped locales not written in Latin letters. */
|
/** Shipped locales not written in Latin letters. */
|
||||||
|
|||||||
Reference in new issue
Block a user