Skip to content

RDKEMW-21812: merge develop to main - #100

Closed
brendanobra wants to merge 46 commits into
mainfrom
develop
Closed

RDKEMW-21812: merge develop to main#100
brendanobra wants to merge 46 commits into
mainfrom
develop

Conversation

@brendanobra

Copy link
Copy Markdown
Contributor

No description provided.

swethasukumarr and others added 30 commits June 16, 2026 23:40
RDKEMW-17673 : Add info coverage gate to CI
RDKEMW-17667 : Add timezone getter method and onTimeZoneChanged event
…82)

* RDKEMW-14887 : Update  Stats.memoryUsage api to return value in bytes

* RDKEMW-14887 : Fix spacing issues

* address copilot comment

* clang format fix

---------

Co-authored-by: rajanika <rajanikatsr@gmail.com>
Co-authored-by: rradha446 <rajanika_radhakrishnan@comcast.com>
#86)

* RDKEMW-17486 : Add dolbyAtmosExperienceAvailable getter and event subscription

* RDKEMW-17486 : Fix clang-format issues

* RDKEMW-17486 : Address copilot comments
* RDKEMW-20911 : Return full JSON document from Actions.intent/onIntent

* RDKEMW-20911 : Address copilot comments

* RDKEMW-20911: Update changelog for v0.6.3
* RDKEMW-17483 Change discovery.watchedV2 return type to void

* RDKEMW-20349 : Address copilot comments

* RDKEMW-20349 : Route discovery.watchedV2 to discovery.watched wire method

* RDKEMW-20349: Document Discovery.watched as backward-compatible legacy method
* RDKEMW-19315 : Add coding guidelines for firebolt-cpp-client

* RDKEMW-19315 : Correct factual errors and gaps in coding guidelines

* RDKEMW-19315 : Address copilot comments

* RDKEMW-19315 : Address copilot comments

* RDKEMW-19315 : Address copilot comments

* RDKEMW-19315 : Address copilot comments
* Support/v0.6.3 (#90)

* RDKEMW-20911 : Return full JSON document from Actions.intent/onIntent

* RDKEMW-20911 : Address copilot comments

* RDKEMW-20911: Update changelog for v0.6.3

* RDKEMW-20911 : Fix intent type as object and not string

* RDKEMW-21724 : Update Actions module per Firebolt 9 spec

* RDKEMW-21724 : Address copilot comments

* RDKEMW-21724 : Address copilot comments

* RDKEMW-21724 : Update OpenRPC intent schema to reflect required sub-fields

* RDKEMW-21724 : Make context/source optional and use typed IntentData for start

* RDKEMW-21724 : Fix OpenRPC schema

* RDKEMW-21724 : Fix actionsDemo

* RDKEMW-21724 : Address copilot comments

---------

Co-authored-by: Brendan O'Bra <brendan@obrafamily.org>
* Restore develop firebolt-open-rpc.json

* Fix firebolt-open-rpc.json

* Add fmt.sh and clean up lint.sh clang-format tooling

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR merges develop into main, bringing in several SDK surface expansions and tooling updates across the Firebolt C++ client: new modules (VideoOutput, SpeechSynthesis), multiple API evolutions (Actions intent payload, TextToSpeech speak options, Localization timeZone, Device OS fields, Stats memory usage units), and CI/lint/coverage workflow enhancements.

Changes:

  • Added new VideoOutput and SpeechSynthesis modules (public headers, implementations, JSON adapters, unit/component tests) and wired them into the singleton accessor.
  • Updated existing APIs and tests: Actions.intent payload now modeled as an object; Discovery.watchedV2 now returns Result<void>; TextToSpeech.speak gains optional params; Localization.timeZone, Device OS/firmware + Atmos capability, and Stats.memoryUsage move to byte units.
  • Improved repo tooling: formatting-only lint alignment with CI, added fmt.sh, and added coverage artifact upload + a non-blocking coverage gate/baseline update workflow.

Reviewed changes

Copilot reviewed 101 out of 101 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
test/unit/videooutputGeneratedTest.cpp New generated unit coverage for VideoOutputImpl getters/subscriptions/unsubscribe.
test/unit/textToSpeechTest.cpp Adds unit tests validating TextToSpeech.speak optional-parameter payload construction and error propagation.
test/unit/statsTest.cpp Updates expected Stats.memoryUsage fields/types to bytes (uint64_t).
test/unit/speechSynthesisTest.cpp New unit tests for SpeechSynthesis speak/voices/invoke + subscription parsing.
test/unit/metricsTest.cpp Adjusts JSON string literal usage for Metrics.event payload.
test/unit/localizationTest.cpp Adds unit tests for Localization.timeZone getter + subscription.
test/unit/discoveryTest.cpp Updates tests for watchedV2 signature/behavior and payload formation.
test/unit/deviceTest.cpp Adds unit tests for OS name/version, firmware, and Dolby Atmos availability + subscription.
test/unit/actionsTest.cpp Updates Actions intent expectations to structured payload and adds test for Actions.start.
test/component/videooutputGeneratedTest.cpp New minimal component tests asserting IVideoOutput surface presence.
test/component/textToSpeechTest.cpp Adds component coverage for speak with optional arguments.
test/component/statsTest.cpp Updates component expected values/types for byte-based memory usage fields.
test/component/speechSynthesisTest.cpp New component tests for SpeechSynthesis methods and event triggers.
test/component/presentationTest.cpp Minor output formatting change (std::endl'\n').
test/component/networkTest.cpp Minor output formatting change (std::endl'\n').
test/component/metricsTest.cpp Adjusts JSON string literal usage for Metrics.event payload.
test/component/localizationTest.cpp Adds component tests for timeZone and onTimeZoneChanged event validation.
test/component/lifecycleTest.cpp Minor idiomatic improvements (empty() checks, '\n').
test/component/discoveryTest.cpp Updates watched/watchedV2 numeric literal and removes bool-return assertions for watchedV2.
test/component/deviceTest.cpp Adds component coverage for OS fields + Dolby Atmos availability/subscription; minor output formatting.
test/component/actionsGeneratedTest.cpp Updates generated component tests for structured Actions intent payload + adds start.
test/component/accessibilityTest.cpp Minor output formatting change (std::endl'\n').
test/api_test_app/utils.h Tracks per-demo failure count to support non-interactive/auto-run failure reporting.
test/api_test_app/main.cpp Adds Actions demo, improves auto-run flow, and returns non-zero on failures.
test/api_test_app/apis/statsDemo.cpp Updates output to label memory units as bytes.
test/api_test_app/apis/localizationDemo.cpp Adds demo coverage for Localization.timeZone.
test/api_test_app/apis/lifecycleDemo.h Tracks last subscription id for improved unsubscribe UX.
test/api_test_app/apis/lifecycleDemo.cpp Defaults unsubscribe prompt to last subscription id.
test/api_test_app/apis/discoveryDemo.cpp Updates watchedV2 demo output to reflect void-success semantics.
test/api_test_app/apis/deviceDemo.cpp Adds demo options for OS fields and Dolby Atmos availability.
test/api_test_app/apis/actionsDemo.h New Actions demo interface.
test/api_test_app/apis/actionsDemo.cpp New Actions demo implementation (intent/start/subscribe/unsubscribe).
src/videooutput_impl.h New VideoOutputImpl implementation header.
src/videooutput_impl.cpp New generated VideoOutputImpl implementation.
src/texttospeech_impl.h Updates speak signature with optional parameters; adds [[nodiscard]].
src/texttospeech_impl.cpp Builds optional-parameter JSON payload for TextToSpeech.speak.
src/stats_impl.h Adds [[nodiscard]] to memoryUsage() declaration.
src/stats_impl.cpp Defaults destructor definition.
src/speechsynthesis_impl.h New SpeechSynthesisImpl header with subscription manager integration.
src/speechsynthesis_impl.cpp New SpeechSynthesisImpl implementation (speak/voices/cancel/pause/resume + subscriptions).
src/presentation_impl.h Adds [[nodiscard]] and removes redundant virtual keywords in declarations.
src/network_impl.h Adds [[nodiscard]] on connected().
src/metrics_impl.h Adds [[nodiscard]] and minor signature normalization.
src/localization_impl.h Adds timeZone() + subscription and applies [[nodiscard]] to getters.
src/localization_impl.cpp Implements timeZone() and subscribeOnTimeZoneChanged.
src/lifecycle_impl.h Adds [[nodiscard]] and removes redundant virtual keywords.
src/lifecycle_impl.cpp Defaults destructor definition.
src/json_types/videooutput.h New generated JSON adapters/enums for VideoOutput.
src/json_types/texttospeech.h Adds [[nodiscard]] to JSON adapter value() methods.
src/json_types/stats.h Updates memory field names/types to bytes and [[nodiscard]] on value().
src/json_types/speechsynthesis.h New JSON adapters for voices array and utterance event enum mapping.
src/json_types/lifecycle.h Adds [[nodiscard]] to adapter value() methods.
src/json_types/display.h Adds [[nodiscard]] and formats value() implementation.
src/json_types/device.h Adds [[nodiscard]] to adapter value() methods.
src/json_types/advertising.h Adds [[nodiscard]] and formats value() implementation.
src/json_types/actions.h Updates Actions JSON adapter to deserialize structured intent payload.
src/json_types/accessibility.h Adds [[nodiscard]] to adapter value() methods.
src/firebolt.cpp Wires in SpeechSynthesis and VideoOutput modules and adds videooutput_.unsubscribeAll() cleanup.
src/display_impl.h Adds [[nodiscard]] to getters.
src/discovery_impl.h Adds [[nodiscard]] and changes watchedV2 to Result<void>.
src/discovery_impl.cpp Implements watchedV2 as void-returning invoke.
src/device_impl.h Adds new OS/firmware/Dolby APIs and [[nodiscard]] annotations.
src/device_impl.cpp Implements new Device getters/setters and Dolby Atmos availability subscription.
src/advertising_impl.h Adds [[nodiscard]] to getter.
src/actions_impl.h Updates Actions intent return type + subscription payload type; adds start().
src/actions_impl.cpp Uses JSON adapter for structured intent and adds Actions.start invoke implementation.
src/accessibility_impl.h Adds [[nodiscard]] and removes redundant virtual keywords.
README.md Updates lint documentation to reflect clang-format-only CI parity.
lint.sh Simplifies lint to CI-equivalent clang-format check/fix with Docker/local modes.
include/firebolt/videooutput.h New generated public API for VideoOutput.
include/firebolt/texttospeech.h Updates interface to accept optional speak parameters and adds [[nodiscard]].
include/firebolt/stats.h Changes MemoryInfo fields to uint64_t and documents byte units; adds [[nodiscard]].
include/firebolt/speechsynthesis.h New public API header for SpeechSynthesis.
include/firebolt/presentation.h Adds [[nodiscard]] on focused().
include/firebolt/network.h Adds [[nodiscard]] on connected().
include/firebolt/metrics.h Adds [[nodiscard]] broadly and normalizes some parameter forms.
include/firebolt/localization.h Adds timeZone() + subscription; adds [[nodiscard]] to getters.
include/firebolt/lifecycle.h Adds [[nodiscard]] to getters/close.
include/firebolt/firebolt.h Adds accessor entry points for SpeechSynthesis and VideoOutput.
include/firebolt/display.h Adds [[nodiscard]] to getters.
include/firebolt/discovery.h Adds [[nodiscard]] and changes watchedV2 to Result<void> with note.
include/firebolt/device.h Adds OS/firmware/Dolby APIs and adds [[nodiscard]] to getters.
include/firebolt/advertising.h Adds [[nodiscard]] to getter.
include/firebolt/actions.h Updates generated Actions API to structured intent payload and adds start().
include/firebolt/accessibility.h Adds [[nodiscard]] to getters.
fmt.sh New script for clang-format check/fix (Docker-first, local fallback).
docs/openrpc/the-spec/firebolt-open-rpc--legacy.json Updates legacy spec for Stats byte fields and TextToSpeech speak optional params; adds Device Atmos API.
docs/openrpc/the-spec/firebolt-app-open-rpc.json Adds notifier entries for Localization.onTimeZoneChanged and Device.onDolbyAtmosExperienceAvailableChanged.
docs/openrpc/openrpc/text_to_speech.json Updates module OpenRPC to include new optional speak params and examples.
docs/openrpc/openrpc/stats.json Updates Stats OpenRPC to byte fields/types and descriptions.
docs/openrpc/openrpc/speech_synthesis.json Adds scaffold OpenRPC file for SpeechSynthesis module.
docs/openrpc/openrpc/localization.json Adds timeZone method to Localization OpenRPC.
docs/openrpc/openrpc/discovery.json Updates watchedV2 return schema to null and adjusts summary/examples.
CHANGELOG.md Notes Actions intent/onIntent payload parsing fix in release notes.
.github/workflows/ci.yml Uploads lcov artifacts and adds a coverage gate + baseline update workflow.
.github/scripts/compare_coverage.py New script to compare unit/component lcov against a baseline and emit a report (informational).
.github/copilot-instructions.md Deleted (instructions absorbed elsewhere).
.clang-tidy Adds a repo clang-tidy configuration file.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/device_impl.h
[[nodiscard]] Result<void> setOsVersion(const std::string& osVersion) override;
[[nodiscard]] Result<std::string> firmware() const override;
[[nodiscard]] Result<HDRFormat> hdr() const override;
[[nodiscard]] Result<u_int32_t> timeInActiveState() const override;
Comment thread src/videooutput_impl.h
Comment on lines +18 to +20
#pragma once
#ifndef FIREBOLT_VIDEOOUTPUT_IMPL_H
#define FIREBOLT_VIDEOOUTPUT_IMPL_H
Comment thread src/firebolt.cpp
Comment on lines 103 to 107
network_.unsubscribeAll();
presentation_.unsubscribeAll();
textToSpeech_.unsubscribeAll();
videooutput_.unsubscribeAll();
}
Comment thread src/discovery_impl.cpp
}

return helper_.get<Firebolt::JSON::Boolean, bool>("Discovery.watchedV2", parameters);
return helper_.invoke("Discovery.watched", parameters);
Comment on lines +29 to +32
explicit SpeechSynthesisImpl(Firebolt::Helpers::IHelper& helper);
SpeechSynthesisImpl(const SpeechSynthesisImpl&) = delete;
SpeechSynthesisImpl& operator=(const SpeechSynthesisImpl&) = delete;

Comment on lines +65 to +69
[[nodiscard]] virtual Result<std::pmr::vector<Voice>> voices() const = 0;
[[nodiscard]] virtual Result<SubscriptionId>
subscribeOnVoicesChanged(std::function<void(const std::pmr::vector<Voice>&)>&& notification) = 0;

[[nodiscard]] virtual Result<void> cancel(UtteranceId id) const = 0;
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 19, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants