refactor: rename Audio Room → Nest project-wide

Aligns class names, package paths, string resource keys, UI text and
intent actions with the Nests branding used by the EGG specs in
nestsClient/specs/. Mechanical rename — no behavior change.

- Folders: audiorooms/ → nests/ (5 paths across amethyst, quartz)
- 30+ class renames (AudioRoom* → Nest*, AudioRooms* → Nests*)
- String resource keys audio_room_* → nest_*
- UI strings "Audio Room"/"Audio Rooms" → "Nest"/"Nests" (incl. all locales)
- Intent extras AUDIO_ROOM_* → NEST_*
- Compose route Route.AudioRooms → Route.Nests

Spec-aligned identifiers (MeetingSpaceEvent, meetingSpaces/, the nip53*
packages) are intentionally untouched — those are NIP-53 protocol
names, not "audio room" branding.

https://claude.ai/code/session_01RDpuki4t8StSg1CZcXnV5b
This commit is contained in:
Claude
2026-04-27 14:36:50 +00:00
parent 208c90b246
commit dc3ac31ae4
74 changed files with 565 additions and 565 deletions
@@ -28,14 +28,14 @@ import kotlin.test.assertContentEquals
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class AudioRoomBroadcasterTest {
class NestBroadcasterTest {
@Test
fun pcm_frames_flow_through_encoder_into_publisher_in_order() =
runTest {
val capture = ScriptedCapture(listOf(shortArrayOf(1), shortArrayOf(2), shortArrayOf(3)))
val encoder = ScriptedEncoder(prefix = byteArrayOf(0xAA.toByte()))
val publisher = RecordingPublisher("track")
val broadcaster = AudioRoomBroadcaster(capture, encoder, publisher, backgroundScope)
val broadcaster = NestBroadcaster(capture, encoder, publisher, backgroundScope)
broadcaster.start()
// Capture exhausts after 3 frames (readFrame returns null) so the
@@ -61,7 +61,7 @@ class AudioRoomBroadcasterTest {
val capture = ScriptedCapture(listOf(shortArrayOf(1), shortArrayOf(2), shortArrayOf(3)))
val encoder = ScriptedEncoder(prefix = byteArrayOf(0xBB.toByte()))
val publisher = RecordingPublisher("track")
val broadcaster = AudioRoomBroadcaster(capture, encoder, publisher, backgroundScope)
val broadcaster = NestBroadcaster(capture, encoder, publisher, backgroundScope)
broadcaster.setMuted(true)
broadcaster.start()
@@ -81,7 +81,7 @@ class AudioRoomBroadcasterTest {
val capture = ScriptedCapture(listOf(shortArrayOf(1), shortArrayOf(2)))
val encoder = ScriptedEncoder(prefix = byteArrayOf(0xCC.toByte()), warmupSkips = 1)
val publisher = RecordingPublisher("track")
val broadcaster = AudioRoomBroadcaster(capture, encoder, publisher, backgroundScope)
val broadcaster = NestBroadcaster(capture, encoder, publisher, backgroundScope)
broadcaster.start()
capture.awaitDrained()
@@ -100,7 +100,7 @@ class AudioRoomBroadcasterTest {
val capture = ScriptedCapture(listOf(shortArrayOf(1), shortArrayOf(2), shortArrayOf(3)))
val encoder = ScriptedEncoder(prefix = byteArrayOf(0xDD.toByte()), failOnNthCall = 1)
val publisher = RecordingPublisher("track")
val broadcaster = AudioRoomBroadcaster(capture, encoder, publisher, backgroundScope)
val broadcaster = NestBroadcaster(capture, encoder, publisher, backgroundScope)
val errors = mutableListOf<AudioException>()
broadcaster.start { errors.add(it) }
@@ -117,7 +117,7 @@ class AudioRoomBroadcasterTest {
val capture = ScriptedCapture(listOf(shortArrayOf(1)))
val encoder = ScriptedEncoder(prefix = byteArrayOf(0xEE.toByte()))
val publisher = RecordingPublisher("track")
val broadcaster = AudioRoomBroadcaster(capture, encoder, publisher, backgroundScope)
val broadcaster = NestBroadcaster(capture, encoder, publisher, backgroundScope)
broadcaster.start()
capture.awaitDrained()
@@ -31,7 +31,7 @@ import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertTrue
class AudioRoomPlayerTest {
class NestPlayerTest {
@Test
fun every_object_payload_is_decoded_and_enqueued_in_order() =
runTest {
@@ -45,7 +45,7 @@ class AudioRoomPlayerTest {
moqObject(byteArrayOf(0x04, 0x05, 0x06)),
)
val sut = AudioRoomPlayer(decoder, player, this)
val sut = NestPlayer(decoder, player, this)
sut.play(objects)
testScheduler.advanceUntilIdle()
@@ -83,7 +83,7 @@ class AudioRoomPlayerTest {
moqObject(byteArrayOf(0x02)),
)
val sut = AudioRoomPlayer(decoder, player, this)
val sut = NestPlayer(decoder, player, this)
sut.play(objects, onError = { errors.add(it) })
testScheduler.advanceUntilIdle()
@@ -102,7 +102,7 @@ class AudioRoomPlayerTest {
runTest {
val decoder = FakeOpusDecoder { byteToShorts(it) }
val player = FakeAudioPlayer()
val sut = AudioRoomPlayer(decoder, player, this)
val sut = NestPlayer(decoder, player, this)
sut.play(flowOf())
testScheduler.advanceUntilIdle()
sut.stop()
@@ -115,7 +115,7 @@ class AudioRoomPlayerTest {
fun play_cannot_be_called_twice_on_the_same_instance() =
runTest {
val sut =
AudioRoomPlayer(
NestPlayer(
FakeOpusDecoder { byteToShorts(it) },
FakeAudioPlayer(),
this,
@@ -129,7 +129,7 @@ class AudioRoomPlayerTest {
fun play_after_stop_is_rejected() =
runTest {
val sut =
AudioRoomPlayer(
NestPlayer(
FakeOpusDecoder { byteToShorts(it) },
FakeAudioPlayer(),
this,
@@ -143,7 +143,7 @@ class AudioRoomPlayerTest {
runTest {
val decoder = FakeOpusDecoder { ShortArray(0) }
val player = FakeAudioPlayer()
val sut = AudioRoomPlayer(decoder, player, this)
val sut = NestPlayer(decoder, player, this)
sut.play(flowOf(moqObject(byteArrayOf(0x01))))
testScheduler.advanceUntilIdle()
assertEquals(0, player.queued.size)
@@ -157,7 +157,7 @@ class AudioRoomPlayerTest {
val decoder = FakeOpusDecoder { byteToShorts(it) }
val player = FakeAudioPlayer()
val sut = AudioRoomPlayer(decoder, player, this)
val sut = NestPlayer(decoder, player, this)
sut.play(channel.receiveAsFlow())
testScheduler.runCurrent()