a couple more features for version 18
This commit is contained in:
@@ -91,6 +91,8 @@ The following behavior is present in source and covered by focused tests:
|
||||
- apostrophes are no longer escaped to `'` in spoken ESML, while `&`, `<`, `>`, and `"` remain escaped
|
||||
- radio voice launch supports `open the radio` and genre launch such as `play country music`, using local `@be/radio` `menu` payloads, `SKILL_REDIRECT`, and silent completion
|
||||
- news has a first Nimbus-shaped cloud path using `match.cloudSkill = news` and a `news` `SKILL_ACTION` with synthetic briefing content
|
||||
- stop commands such as `stop that` and `never mind` emit stock `global_commands` `stop` NLU plus a local `@be/idle` redirect, without generic chat speech
|
||||
- volume commands emit stock `global_commands` volume intents: `volumeUp`, `volumeDown`, and `volumeToValue` with `volumeLevel`; `show volume controls` redirects to `@be/settings` `volumeQuery`
|
||||
- stock-shaped clock handoffs cover time, date, day, clock open, timer/alarm menu, timer/alarm value, timer/alarm clarification, and timer/alarm delete
|
||||
- alarm parsing covers forms such as `7:30 am`, `830`, `8 30`, `7, 44`, `10-25`, `10:25 pm`, and `10 25 p m`
|
||||
- ambiguous alarm times can prefer the next local occurrence when the robot context includes `runtime.location.iso`
|
||||
@@ -147,6 +149,7 @@ Before calling `1.0.18` complete, prove or explicitly defer these:
|
||||
- Regression test photo/gallery flows again after the `jibo test 24` fixes: open gallery, answer the stock `shared/yes_no` prompt with a transcript-bearing `yes`, hand into create, take one photo, keep it, and avoid blue-ring or `I heard you` stale turns.
|
||||
- Live-test radio launch: `open the radio` passed in `jibo test 22`; re-run `play country music` if that exact phrase was not captured.
|
||||
- Treat basic news as live-proven by `jibo test 23`; defer provider-backed or category-expanded news unless it is chosen as an optional feature slice.
|
||||
- Regression test the added stop and volume slices: `stop that`, `never mind`, `turn it up`, `turn it down`, `set volume to six`, and `show volume controls`.
|
||||
- Recheck constrained yes/no prompts for update/backup/share/gallery/alarm replacement without leaking global rules.
|
||||
- Recheck that stock OS no longer logs OpenJibo-only websocket events such as synthetic pending/context/ack packets from the current build.
|
||||
- Recheck backup/update behavior with explicit attention to robot-local `jibo.scheduler.backupStatus`, CPU/load, and whether the deployed cloud is involved at all.
|
||||
@@ -164,13 +167,13 @@ These are not blockers for calling `1.0.18` complete unless the live test shows
|
||||
- news content is synthetic; `jibo test 23` proved the path but not live provider-backed headlines
|
||||
- gallery `shared/yes_no` still needs a successful transcript-bearing live `yes` pass
|
||||
- weather, calendar, commute, personal report, identity, memory, and proactivity are still mostly discovery or placeholder content paths
|
||||
- volume, stop, robot age, and command-versus-question personality routing are not implemented yet
|
||||
- stop and volume are implemented but still need live stock-OS proof; robot age and command-versus-question personality routing are not implemented yet
|
||||
|
||||
## `1.0.19` Direction
|
||||
|
||||
After `1.0.18` is tested and tagged, `1.0.19` should move back into feature work:
|
||||
|
||||
- one lightweight device-control feature, most likely stop or volume
|
||||
- harden whichever stop/volume behavior is not fully proven by the `1.0.18` live pass, or pick the next lightweight device/persona slice
|
||||
- end-to-end update/backup/restore proof
|
||||
- STT reliability improvements, including noise screening and a managed STT comparison
|
||||
- provider-backed first content path, likely news or weather
|
||||
|
||||
@@ -147,17 +147,26 @@ Current release theme:
|
||||
|
||||
### 5. Optional Small Feature Before `1.0.18` Freeze
|
||||
|
||||
- Status: `ready`
|
||||
- Status: `implemented`
|
||||
- Tags: `protocol`
|
||||
- Why now: the user wants one or two features before `1.0.18` is called complete, but the release should not take on a risky subsystem.
|
||||
- Preferred candidates:
|
||||
- Selected slices:
|
||||
- Stop command
|
||||
- Volume up / volume down voice control
|
||||
- How old are you / robot age persona
|
||||
- Guidance:
|
||||
- pick only one if the live regression pass finds bugs
|
||||
- pick at most two if the current bug-fix paths stay stable
|
||||
- keep the implementation source-backed and easy to revert or defer
|
||||
- Volume up / volume down / set-to-value voice control
|
||||
- Current code:
|
||||
- `stop`, `stop that`, and `never mind` map to stock `global_commands` `stop` NLU plus local `@be/idle` redirect/completion
|
||||
- `turn it up` and `turn it down` emit stock `global_commands` `volumeUp` / `volumeDown` with `volumeLevel = null` and no cloud speech
|
||||
- `set volume to six` emits stock `global_commands` `volumeToValue` with `volumeLevel = 6` and no cloud speech
|
||||
- `show volume controls` redirects into `@be/settings` with `volumeQuery`
|
||||
- Evidence:
|
||||
- Pegasus `globals/global_commands_launch.rule` defines `stop`, `volumeUp`, `volumeDown`, and `volumeToValue`
|
||||
- stock Jibo `VolumePlugin` subscribes to global volume events and uses the same intent/entity names
|
||||
- stock `@be/settings` exposes `volumeQuery` and opens the volume panel
|
||||
- Exit criteria:
|
||||
- live stop settles the robot without a generic chat reply
|
||||
- live volume up/down audibly changes volume or logs a local volume event
|
||||
- live volume-to-value changes the setting to the requested value or logs the expected stock local handling
|
||||
- live volume controls opens the settings volume panel
|
||||
|
||||
## Implemented In Current Source
|
||||
|
||||
@@ -248,6 +257,19 @@ Current release theme:
|
||||
- Follow-up:
|
||||
- keep this in regression coverage because it shares turn-state machinery with gallery and alarm flows
|
||||
|
||||
### Stop And Volume First Pass
|
||||
|
||||
- Status: `implemented`
|
||||
- Tags: `protocol`
|
||||
- Result:
|
||||
- global stop commands emit stock `global_commands` `stop` and redirect to `@be/idle`
|
||||
- relative volume commands emit stock `global_commands` `volumeUp` / `volumeDown`
|
||||
- absolute volume commands emit `volumeToValue` with a `volumeLevel` entity
|
||||
- volume controls launch redirects to `@be/settings` `volumeQuery`
|
||||
- websocket responses avoid generic chat speech for these local/global command paths
|
||||
- Follow-up:
|
||||
- live validation remains in the immediate queue because volume depends on stock robot local global-command handling
|
||||
|
||||
### Unknown OpenJibo Event Noise
|
||||
|
||||
- Status: `implemented`
|
||||
@@ -272,7 +294,7 @@ Current release theme:
|
||||
|
||||
### 6. Stop Command
|
||||
|
||||
- Status: `ready`
|
||||
- Status: `polish`
|
||||
- Tags: `protocol`
|
||||
- User goals:
|
||||
- `stop`
|
||||
@@ -280,15 +302,15 @@ Current release theme:
|
||||
- `never mind`
|
||||
- Evidence:
|
||||
- `@be/idle` exists and is already used as a cleanup redirect target
|
||||
- current `1.0.18` source emits stock `global_commands` `stop` plus local `@be/idle` redirect
|
||||
- Questions:
|
||||
- whether stock source has a dedicated stop/cancel intent beyond idle redirect
|
||||
- whether stop should interrupt active local skills or only cloud speech paths in the first pass
|
||||
- whether live stock OS treats the combined global stop plus idle redirect as cleanly as expected during active local skills
|
||||
- Exit criteria:
|
||||
- a spoken stop command settles the robot locally without a generic chat reply
|
||||
|
||||
### 7. Volume Up / Volume Down Voice Control
|
||||
|
||||
- Status: `ready`
|
||||
- Status: `polish`
|
||||
- Tags: `protocol`
|
||||
- User goals:
|
||||
- `turn it up`
|
||||
@@ -296,10 +318,11 @@ Current release theme:
|
||||
- `increase the volume`
|
||||
- `decrease the volume`
|
||||
- Evidence:
|
||||
- stock Jibo exposes volume control through robot UX, so there should be a local control or settings path to mirror
|
||||
- Pegasus global commands define `volumeUp`, `volumeDown`, and `volumeToValue`
|
||||
- stock Jibo `VolumePlugin` listens for those global intents and `volumeLevel`
|
||||
- current `1.0.18` source emits those stock NLU shapes and opens `@be/settings` `volumeQuery`
|
||||
- Questions:
|
||||
- exact local payload shape for relative volume changes
|
||||
- whether first pass should support absolute values such as `set volume to 5`
|
||||
- whether live stock OS applies the global volume event from the hosted cloud response without any additional local event payload
|
||||
- Exit criteria:
|
||||
- relative voice volume commands adjust volume without generic cloud speech
|
||||
|
||||
@@ -505,13 +528,13 @@ Before closing `1.0.18`:
|
||||
2. Basic news regression, with provider-backed expansion deferred
|
||||
3. Backup / OTA / share yes-no regression
|
||||
4. Alarm and photo/gallery regression
|
||||
5. Optional small feature only if the regression pass stays calm
|
||||
5. Stop and volume first-pass validation
|
||||
|
||||
Use [regression-test-plan.md](regression-test-plan.md) as the detailed checklist for this sequence.
|
||||
|
||||
For `1.0.19`:
|
||||
|
||||
1. Stop command or volume control
|
||||
1. Harden stop or volume if the `1.0.18` live pass exposes stock-OS quirks; otherwise pick robot age/persona or another lightweight slice
|
||||
2. Update, backup, and restore proof
|
||||
3. STT upgrade and noise screening
|
||||
4. Hosted capture/storage plan
|
||||
|
||||
@@ -168,6 +168,34 @@ Expected:
|
||||
- no `ffmpeg` failure should become the dominant failure mode for non-Opus buffered audio
|
||||
- short replies such as `yes`, `no`, `cancel`, and short alarm times should either map correctly or be classified as STT misses with evidence
|
||||
|
||||
### Stop And Volume
|
||||
|
||||
Goal: prove the added lightweight device-control slice before closing `1.0.18`.
|
||||
|
||||
Test these phrases:
|
||||
|
||||
- `stop`
|
||||
- `stop that`
|
||||
- `never mind`
|
||||
- `turn it up`
|
||||
- `turn it down`
|
||||
- `set volume to six`
|
||||
- `show volume controls`
|
||||
|
||||
Expected:
|
||||
|
||||
- stop commands settle the robot locally without generic chat speech
|
||||
- `turn it up` and `turn it down` adjust volume or at least produce the stock local volume event/log
|
||||
- `set volume to six` sets or attempts to set the local volume level to `6`
|
||||
- `show volume controls` opens the settings volume panel
|
||||
|
||||
Capture check:
|
||||
|
||||
- stop emits `nlu.intent = stop`, `nlu.domain = global_commands`, then redirects to `@be/idle`
|
||||
- relative volume emits `nlu.intent = volumeUp` or `volumeDown`, `nlu.domain = global_commands`, and `entities.volumeLevel = null`, with no `SKILL_ACTION` cloud speech
|
||||
- absolute volume emits `nlu.intent = volumeToValue` and `entities.volumeLevel` matching the requested value, with no `SKILL_ACTION` cloud speech
|
||||
- volume controls redirects to `@be/settings` with `nlu.intent = volumeQuery`
|
||||
|
||||
## Optional Feature Slice Checks
|
||||
|
||||
When a new feature is added before a release closes:
|
||||
@@ -178,8 +206,6 @@ When a new feature is added before a release closes:
|
||||
|
||||
For the current candidate list, add cases here when implemented:
|
||||
|
||||
- stop command: `stop`, `stop that`, `never mind`
|
||||
- volume: `turn it up`, `turn it down`, `increase the volume`, `decrease the volume`
|
||||
- robot age/persona: `how old are you`
|
||||
|
||||
## After The Run
|
||||
|
||||
Reference in New Issue
Block a user