Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,9 @@ recordings, private trust setup, source-bound artifacts and attended hardware wo

CI establishes source/build behavior, not audible playback or hardware recovery.
See the [dated device results](../../docs/development/feasibility-report.md).

The device job also runs `tools/check_quran.py --arduinojson` against its
resolved ArduinoJson headers. This compiles the production metadata worker and
shared redirect policy under UBSan with deterministic HTTP/task adapters. It
checks cancellation, Athan priority, URL restrictions, paging/search, malformed
responses and unavailable recordings; it does not establish physical streaming.
1 change: 1 addition & 0 deletions .github/workflows/firmware.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ jobs:
cmake --build build --target openathan_core --parallel 2
python -m unittest discover -s tests -p test_settings_adapter.py -v
python tools/check_upgrade_runtime.py --arduinojson "$OPENATHAN_ARDUINOJSON_INCLUDE"
python tools/check_quran.py --arduinojson "$OPENATHAN_ARDUINOJSON_INCLUDE"
- name: Test update request formatting with the resolved SDK
if: matrix.configuration == 'reference' && (steps.build_policy.outcome != 'success' || steps.build_policy.outputs.build_required != 'false')
env:
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ add_executable(audio_validator tests/audio_validator.cpp)
target_include_directories(audio_validator PRIVATE lib/openathan-core/include)
add_executable(audio_adapter_tests tests/audio_adapter_tests.cpp
firmware/esphome/components/openathan_audio/partition_audio.cpp)
target_compile_definitions(audio_adapter_tests PRIVATE OPENATHAN_QURAN)
target_include_directories(audio_adapter_tests PRIVATE tests/stubs lib/openathan-core/include
firmware/esphome/components/openathan_audio)
if(NOT APPLE)
Expand Down
9 changes: 6 additions & 3 deletions PRODUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ OpenAthan brings scheduled Athan playback into the home through an open-source,
low-cost DIY speaker. The immediate product is standalone Athan: calculate prayer
times locally, play the appropriate normal or Fajr recording, and let the
household review and change its settings through a local browser interface.
Quran playback and adhkar are future capabilities.
Development firmware adds owner-requested MP3Quran surah streaming through the
local interface, pending physical qualification. Adhkar remains future scope.

Success means a household can configure its location and prayer conventions,
understand when announcements will play, and control playback with confidence.
Expand Down Expand Up @@ -93,8 +94,10 @@ alone cannot establish the current time after a cold boot.
[current release evidence](docs/development/release-validation-2026-10-03.md).
The optional GC9107 status display is a post-v0.2.1 development candidate;
[bounded isolated hardware acceptance](docs/development/display-validation-2026-10-03.md)
is recorded; successor release qualification remains separate. Quran, adhkar,
touch adapters,
is recorded; successor release qualification remains separate.
[MP3Quran streaming](docs/development/quran-streaming.md) is also a development
candidate, with single-surah playback and Athan interruption without automatic
resume. Physical playback and runtime memory remain unqualified. Adhkar, touch adapters,
expanded storage and Home Assistant integration remain future scope in the
[roadmap](docs/development/roadmap.md).
- Software, documentation, and original hardware designs retain their respective
Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,12 @@ separates shipped features from remaining work and validation limits. Displays
and their saved brightness/time-format controls are optional capabilities;
touch controls remain future work. None is required by the reusable scheduler.

Quran streaming, reciter and passage selection, resume position, adhkar, offline Quran storage, RTC expansion for other hardware, and optional Home Assistant integration are later work. Streaming audio should use PSRAM for buffering; Quran audio is not expected to fit in the AtomS3R's flash.
Development firmware adds [MP3Quran streaming](docs/development/quran-streaming.md)
with reciter, recording edition and surah selection in the local UI. One surah
plays directly on the device; Athan interrupts it without automatic resume.
Physical playback and runtime memory qualification remain release gates.
Resume positions, ayah selection, adhkar, offline Quran storage, RTC expansion
for other hardware and optional Home Assistant integration remain later work.

## Development safety

Expand Down
11 changes: 11 additions & 0 deletions docs/development/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,17 @@ for serial ownership, authentication, persistence, and hardware acceptance limit

The generic ESPHome web UI may be useful during development but is not the intended permanent product interface.

### Quran streaming

The product layer's optional Quran service resolves MP3Quran reciter, edition and
surah identifiers on a bounded background task. Playback adapters expose optional
streaming, source/state and session-epoch methods; the portable scheduler has no
provider or network dependency. The existing announcement pipeline plays both
stored Athan and streamed Quran, with Athan taking priority and no automatic
Quran resume. The shared-audio partition is unchanged. See the
[streaming contract](quran-streaming.md) for HTTPS restrictions, local APIs,
the pinned reader patch and separate hardware qualification gates.

### Upgrade qualification boundary

The production updater remains the single update engine. The separately selected
Expand Down
Loading