From f702d714b6905f60242e6a1bf296ee827b19409e Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 1 Oct 2026 17:31:45 -0700 Subject: [PATCH] Rename Walkieware to Whistlegraph and add native input sounds --- aesel/docs/jev-harness.md | 6 +- .../Resources/Web/generation-policy.mjs | 2 - .../Walkieware.xcodeproj/project.pbxproj | 522 ----------------- apple/{walkieware => whistlegraph}/.gitignore | 0 apple/{walkieware => whistlegraph}/Info.plist | 6 +- apple/whistlegraph/README.md | 30 + .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon.png | Bin .../Resources/Assets.xcassets/Contents.json | 0 .../Resources/Fixtures/basic-request.wav | Bin .../Resources/Fixtures/mixed-request.wav | Bin .../Resources/Fixtures/sine-tone.wav | Bin .../Resources/Fixtures/whistle-sweep.wav | Bin .../Resources/Web/AeCo_compkey.m4a | Bin 0 -> 2663 bytes .../Resources/Web/ComicRelief-Bold.ttf | Bin .../Resources/Web/attempt-recovery.mjs | 0 .../Resources/Web/base-piece.mjs | 0 .../Resources/Web/branch-context.mjs | 0 .../Resources/Web/engine.mjs | 0 .../Resources/Web/generation-policy.mjs | 2 + .../Resources/Web/inference-input.mjs | 0 .../Resources/Web/instant-piece.mjs | 0 .../Resources/Web/local-moves.mjs | 0 .../Resources/Web/local-scene.mjs | 0 .../Resources/Web/local-sequence.mjs | 0 .../Resources/Web/musical-input.mjs | 0 .../Resources/Web/native.js | 12 +- .../Resources/Web/piece-caption.mjs | 0 .../Resources/Web/piece-versions.mjs | 0 .../Resources/Web/sequence-benchmark.mjs | 0 .../Resources/Web/shell.html | 6 +- .../Resources/Web/space-moves.mjs | 0 .../Resources/Web/stream-preview.mjs | 0 .../Sources/AudioBenchmark.swift | 2 +- apple/whistlegraph/Sources/ButtonSounds.swift | 118 ++++ .../Sources/CodeTicker.swift | 0 .../Sources/InputButtonLabels.swift | 0 .../Sources/MusicalInput.swift | 0 .../Sources/NativeScreenFixture.swift | 0 .../Sources/NetworkBenchmark.swift | 0 .../Sources/PlaybackCaption.swift | 0 .../Sources/PlaybackWord.swift | 0 .../Sources/PromptKeySounds.swift | 67 +++ .../Sources/RecordingTrim.swift | 0 .../Sources/SequenceBenchmark.swift | 0 .../Sources/SpeechCapture.swift | 2 +- .../Sources/UtteranceRecording.swift | 0 .../Sources/VersionNarrator.swift | 6 +- .../Sources/WhistlegraphAccount.swift} | 6 +- .../Sources/WhistlegraphApp.swift} | 22 +- .../Sources/WhistlegraphHeader.swift} | 18 +- .../Sources/WhistlegraphScreen.swift} | 65 ++- .../Sources/WhistlegraphTheme.swift} | 2 +- .../Sources/WorkspaceCoordinator.swift | 4 +- .../Tests/MusicalInputCheck.swift | 2 +- .../Tests/attempt-recovery.test.mjs | 0 .../Tests/audio-benchmark.mjs | 0 .../Tests/audio/basic-request.mp3 | Bin .../Tests/audio/comparison.json | 0 .../Tests/audio/deepseek-phone-stall.json | 0 .../Tests/audio/deepseek-phone.json | 0 .../Tests/audio/first-passing-run.json | 0 .../audio/first-run-handoff-failure.json | 0 .../Tests/audio/fixture.json | 0 .../Tests/audio/instant-summary.json | 0 .../Tests/audio/jev-summary.json | 0 .../Tests/audio/last-device-run.json | 0 .../Tests/audio/local-loop-summary.json | 0 .../Tests/audio/luna-desktop.json | 0 .../Tests/audio/luna-phone.json | 0 .../Tests/audio/musical-summary.json | 0 .../Tests/audio/network-phone.json | 0 .../Tests/audio/provider-1790810920467.json | 0 .../Tests/audio/provider-1790811007168.json | 0 .../Tests/audio/provider-1790811108615.json | 0 .../Tests/audio/provider-desktop-primary.json | 0 .../Tests/audio/provider-desktop.json | 0 .../Tests/audio/qwen-phone.json | 0 .../Tests/audio/socket-summary.json | 0 .../Tests/base-piece.test.mjs | 0 .../Tests/branch-context.test.mjs | 0 .../Tests/buttercup-investigation.json | 0 .../Tests/checks.json | 0 .../Tests/counter-ocr.swift | 0 .../Tests/fixtures/basket-v2.mjs | 0 .../Tests/inference-input.test.mjs | 0 .../Tests/instant-piece.test.mjs | 0 .../Tests/local-scene.test.mjs | 0 .../Tests/local-sequence.mjs | 0 .../Tests/make-audio-fixture.mjs | 0 .../Tests/musical-benchmark.mjs | 2 +- .../Tests/musical-input.test.mjs | 0 .../Tests/native-bridge.test.cjs | 0 .../Tests/piece-caption.test.mjs | 0 .../Tests/piece-versions.test.mjs | 0 .../Tests/probe-openrouter.mjs | 2 +- .../Tests/provider-benchmark.mjs | 0 .../Tests/rename-compatibility.test.mjs | 44 ++ .../Tests/replay-edit.mjs | 2 +- .../Tests/scene-probe.mjs | 0 .../Tests/scene-review.mjs | 0 .../Tests/sequence-benchmark.mjs | 0 .../Tests/sequence-benchmark.test.mjs | 0 .../Tests/sequence-features.mjs | 0 .../Tests/sequence-pixels.mjs | 0 .../Tests/sequence-report.mjs | 2 +- .../Tests/space-review.mjs | 0 .../Tests/space-start.mjs | 2 +- .../Tests/stream-preview.test.mjs | 0 .../Tests/tamof-investigation.json | 0 .../Tests/thread-capture.cjs | 0 .../Tests/thread-live.cjs | 4 +- .../Tests/thread-route.cjs | 0 .../UITests/HeaderSheetsTests.swift | 0 .../UITests/SwipeToTypeTests.swift | 0 .../Whistlegraph.xcodeproj/project.pbxproj | 530 ++++++++++++++++++ .../contents.xcworkspacedata | 0 .../xcschemes/Whistlegraph.xcscheme} | 32 +- .../xcschemes/WhistlegraphUITests.xcscheme} | 40 +- apple/{walkieware => whistlegraph}/bundle.mjs | 0 apple/{walkieware => whistlegraph}/icon.svg | 0 .../{walkieware => whistlegraph}/project.yml | 14 +- apple/{walkieware => whistlegraph}/run.sh | 14 +- docs/embedding-ac-pieces.md | 12 +- 124 files changed, 948 insertions(+), 652 deletions(-) delete mode 100644 apple/walkieware/Resources/Web/generation-policy.mjs delete mode 100644 apple/walkieware/Walkieware.xcodeproj/project.pbxproj rename apple/{walkieware => whistlegraph}/.gitignore (100%) rename apple/{walkieware => whistlegraph}/Info.plist (50%) create mode 100644 apple/whistlegraph/README.md rename apple/{walkieware => whistlegraph}/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename apple/{walkieware => whistlegraph}/Resources/Assets.xcassets/AppIcon.appiconset/icon.png (100%) rename apple/{walkieware => whistlegraph}/Resources/Assets.xcassets/Contents.json (100%) rename apple/{walkieware => whistlegraph}/Resources/Fixtures/basic-request.wav (100%) rename apple/{walkieware => whistlegraph}/Resources/Fixtures/mixed-request.wav (100%) rename apple/{walkieware => whistlegraph}/Resources/Fixtures/sine-tone.wav (100%) rename apple/{walkieware => whistlegraph}/Resources/Fixtures/whistle-sweep.wav (100%) create mode 100644 apple/whistlegraph/Resources/Web/AeCo_compkey.m4a rename apple/{walkieware => whistlegraph}/Resources/Web/ComicRelief-Bold.ttf (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/attempt-recovery.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/base-piece.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/branch-context.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/engine.mjs (100%) create mode 100644 apple/whistlegraph/Resources/Web/generation-policy.mjs rename apple/{walkieware => whistlegraph}/Resources/Web/inference-input.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/instant-piece.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/local-moves.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/local-scene.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/local-sequence.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/musical-input.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/native.js (96%) rename apple/{walkieware => whistlegraph}/Resources/Web/piece-caption.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/piece-versions.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/sequence-benchmark.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/shell.html (93%) rename apple/{walkieware => whistlegraph}/Resources/Web/space-moves.mjs (100%) rename apple/{walkieware => whistlegraph}/Resources/Web/stream-preview.mjs (100%) rename apple/{walkieware => whistlegraph}/Sources/AudioBenchmark.swift (96%) create mode 100644 apple/whistlegraph/Sources/ButtonSounds.swift rename apple/{walkieware => whistlegraph}/Sources/CodeTicker.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/InputButtonLabels.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/MusicalInput.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/NativeScreenFixture.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/NetworkBenchmark.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/PlaybackCaption.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/PlaybackWord.swift (100%) create mode 100644 apple/whistlegraph/Sources/PromptKeySounds.swift rename apple/{walkieware => whistlegraph}/Sources/RecordingTrim.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/SequenceBenchmark.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/SpeechCapture.swift (99%) rename apple/{walkieware => whistlegraph}/Sources/UtteranceRecording.swift (100%) rename apple/{walkieware => whistlegraph}/Sources/VersionNarrator.swift (97%) rename apple/{walkieware/Sources/WalkiewareAccount.swift => whistlegraph/Sources/WhistlegraphAccount.swift} (97%) rename apple/{walkieware/Sources/WalkiewareApp.swift => whistlegraph/Sources/WhistlegraphApp.swift} (97%) rename apple/{walkieware/Sources/WalkiewareHeader.swift => whistlegraph/Sources/WhistlegraphHeader.swift} (87%) rename apple/{walkieware/Sources/WalkiewareScreen.swift => whistlegraph/Sources/WhistlegraphScreen.swift} (88%) rename apple/{walkieware/Sources/WalkiewareTheme.swift => whistlegraph/Sources/WhistlegraphTheme.swift} (98%) rename apple/{walkieware => whistlegraph}/Sources/WorkspaceCoordinator.swift (90%) rename apple/{walkieware => whistlegraph}/Tests/MusicalInputCheck.swift (98%) rename apple/{walkieware => whistlegraph}/Tests/attempt-recovery.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/audio-benchmark.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/basic-request.mp3 (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/comparison.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/deepseek-phone-stall.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/deepseek-phone.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/first-passing-run.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/first-run-handoff-failure.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/fixture.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/instant-summary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/jev-summary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/last-device-run.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/local-loop-summary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/luna-desktop.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/luna-phone.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/musical-summary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/network-phone.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/provider-1790810920467.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/provider-1790811007168.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/provider-1790811108615.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/provider-desktop-primary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/provider-desktop.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/qwen-phone.json (100%) rename apple/{walkieware => whistlegraph}/Tests/audio/socket-summary.json (100%) rename apple/{walkieware => whistlegraph}/Tests/base-piece.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/branch-context.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/buttercup-investigation.json (100%) rename apple/{walkieware => whistlegraph}/Tests/checks.json (100%) rename apple/{walkieware => whistlegraph}/Tests/counter-ocr.swift (100%) rename apple/{walkieware => whistlegraph}/Tests/fixtures/basket-v2.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/inference-input.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/instant-piece.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/local-scene.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/local-sequence.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/make-audio-fixture.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/musical-benchmark.mjs (96%) rename apple/{walkieware => whistlegraph}/Tests/musical-input.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/native-bridge.test.cjs (100%) rename apple/{walkieware => whistlegraph}/Tests/piece-caption.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/piece-versions.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/probe-openrouter.mjs (97%) rename apple/{walkieware => whistlegraph}/Tests/provider-benchmark.mjs (100%) create mode 100644 apple/whistlegraph/Tests/rename-compatibility.test.mjs rename apple/{walkieware => whistlegraph}/Tests/replay-edit.mjs (98%) rename apple/{walkieware => whistlegraph}/Tests/scene-probe.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/scene-review.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/sequence-benchmark.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/sequence-benchmark.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/sequence-features.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/sequence-pixels.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/sequence-report.mjs (62%) rename apple/{walkieware => whistlegraph}/Tests/space-review.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/space-start.mjs (87%) rename apple/{walkieware => whistlegraph}/Tests/stream-preview.test.mjs (100%) rename apple/{walkieware => whistlegraph}/Tests/tamof-investigation.json (100%) rename apple/{walkieware => whistlegraph}/Tests/thread-capture.cjs (100%) rename apple/{walkieware => whistlegraph}/Tests/thread-live.cjs (95%) rename apple/{walkieware => whistlegraph}/Tests/thread-route.cjs (100%) rename apple/{walkieware => whistlegraph}/UITests/HeaderSheetsTests.swift (100%) rename apple/{walkieware => whistlegraph}/UITests/SwipeToTypeTests.swift (100%) create mode 100644 apple/whistlegraph/Whistlegraph.xcodeproj/project.pbxproj rename apple/{walkieware/Walkieware.xcodeproj => whistlegraph/Whistlegraph.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename apple/{walkieware/Walkieware.xcodeproj/xcshareddata/xcschemes/Walkieware.xcscheme => whistlegraph/Whistlegraph.xcodeproj/xcshareddata/xcschemes/Whistlegraph.xcscheme} (74%) rename apple/{walkieware/Walkieware.xcodeproj/xcshareddata/xcschemes/WalkiewareUITests.xcscheme => whistlegraph/Whistlegraph.xcodeproj/xcshareddata/xcschemes/WhistlegraphUITests.xcscheme} (69%) rename apple/{walkieware => whistlegraph}/bundle.mjs (100%) rename apple/{walkieware => whistlegraph}/icon.svg (100%) rename apple/{walkieware => whistlegraph}/project.yml (85%) rename apple/{walkieware => whistlegraph}/run.sh (65%) diff --git a/aesel/docs/jev-harness.md b/aesel/docs/jev-harness.md index babbcfa080..fd2ef8d440 100644 --- a/aesel/docs/jev-harness.md +++ b/aesel/docs/jev-harness.md @@ -114,7 +114,7 @@ OpenRouter's [Decisions SDK source](https://github.com/OpenRouterTeam/go-sdk/blo specifies `POST /api/alpha/decisions`; its chat endpoint is not the Jev interface. TypeSafe documents the model's [typed decision primitives and limitations](https://docs.typesafe.ai/concepts/system-one). -## Walkieware musical input +## Whistlegraph musical input `POST /api/easel-musical-jev` accepts authenticated, replaceable observations: `{schema:"walkieware-input/v1",sessionId,sequence,features}`. The fixed feature @@ -139,7 +139,7 @@ observations are not saved. These limits count requests, not dollars or coding braincells. Phone receipts are saved only during explicit debug fixture runs. Live results and failed attempts are retained under -`apple/walkieware/Tests/audio/`. Decision latency is not an end-to-end creation +`apple/whistlegraph/Tests/audio/`. Decision latency is not an end-to-end creation speed claim: the existing coding model still generates the piece. ### Persistent phone input @@ -168,4 +168,4 @@ VM removes provider inference latency. Measure these components before moving regions or provisioning another service. Focused validation: `node --test lith/musical-socket.test.mjs aesel/test/musical-jev.test.mjs`. -Phone validation: `node apple/walkieware/Tests/musical-benchmark.mjs mixed-request --jev --socket`. +Phone validation: `node apple/whistlegraph/Tests/musical-benchmark.mjs mixed-request --jev --socket`. diff --git a/apple/walkieware/Resources/Web/generation-policy.mjs b/apple/walkieware/Resources/Web/generation-policy.mjs deleted file mode 100644 index bd280aeced..0000000000 --- a/apple/walkieware/Resources/Web/generation-policy.mjs +++ /dev/null @@ -1,2 +0,0 @@ -export const DEFAULT_MODEL = 'deepseek/deepseek-v4.1-flash'; -export const GENERATION_INSTRUCTIONS = 'This surface is Walkieware. The person watches the piece being made. A local starter may already be visible: its source is the real current piece; refine it instead of discarding it. For an existing piece, make small revision-checked edit_piece calls instead of resending unchanged code. Use write_piece to create the initial piece or for a necessary rewrite. No prose preamble. Each ask becomes one internal version; complete edit checkpoints are preview layers within it. Make the first visible working drawing in 3–6 lines whenever possible. The UI compiles runnable module prefixes during streaming: put required declarations and a complete exported paint function first; avoid long data tables or helper code before that first drawing. Then refine in small complete write_piece checkpoints only as needed to satisfy the request. Do not add unrequested animation or features. For animation use Number(paintCount) from the paint API, or explicit state advanced in sim; there is no numeric frame API. A request for a spoken narrator needs audible speak(), not just written notes; use the speech guide. Use AC ink alpha on the 0–255 scale and size geometry relative to the screen. Do not repeat the prompt or add interaction instructions, help text, usage hints, or captions inside or outside the picture unless explicitly requested. Use the default write font for other in-piece text unless the person requests another. Use ac_preview for runtime observations; this phone has no desktop frame-capture service. Once the requested change is painted and checked, finish the turn. Never fake progress or tests. Keep one line `export const caption = "…"` in the piece: a plain sentence under 120 characters naming the subject, its mood, what moves and what the person can do; update it whenever an edit changes any of that. It is the piece\'s memory of itself and comes back to you with every follow-up. Preserve the current piece and the original intent of the selected branch on revisions. Short follow-ups modify that existing world; do not replace its subject, characters, message, interactions, or sound without a request to do so. Treat uncertain speech transcriptions conservatively in context instead of inventing a new subject from an ambiguous word. Adjectives of culture, nationality or place (Latina, Japanese, Nordic, tropical) describe how things look: palette, patterns, dress, flora, light. They never change the language of any text or speech unless the request mentions words, text, language or voice. Do not turn ordinary spoken requests into text posters, transcript timelines, waveform charts, or word-timed animation unless explicitly requested. No publishing: these are private local previews.'; diff --git a/apple/walkieware/Walkieware.xcodeproj/project.pbxproj b/apple/walkieware/Walkieware.xcodeproj/project.pbxproj deleted file mode 100644 index 2c9175e4f3..0000000000 --- a/apple/walkieware/Walkieware.xcodeproj/project.pbxproj +++ /dev/null @@ -1,522 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 77; - objects = { - -/* Begin PBXBuildFile section */ - 09A89EDEB03772B566D345A9 /* PlaybackWord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D5B994181BB8DD173DBA13 /* PlaybackWord.swift */; }; - 0DAF293EA0DCA59330C836C6 /* InputButtonLabels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B317E893F3D8506A3F246D /* InputButtonLabels.swift */; }; - 27410D22F96D8006B6D29452 /* VersionNarrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E12122840B2375C0AB2ED0 /* VersionNarrator.swift */; }; - 28DE33D8B94B853B408571A1 /* WalkiewareAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3EC37299741D5E90E45EE5F /* WalkiewareAccount.swift */; }; - 349E23AC69F23D16290DCB48 /* NetworkBenchmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 690D4836B59F77E01D9326D4 /* NetworkBenchmark.swift */; }; - 386E3D38C79AB6CF23166708 /* Fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 5E4DE7A1D969E42D910F4BCB /* Fixtures */; }; - 3BF2B70E0C018C0D43C0134A /* WalkiewareScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 220B6400DBD8900B5058A7F0 /* WalkiewareScreen.swift */; }; - 3D181C343F0CF5296E1C4035 /* SwipeToTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA4916078A47F08CDF99B5E /* SwipeToTypeTests.swift */; }; - 465DCE826B91CD18CE48CEF7 /* PlaybackCaption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C614C7FAFB7C430BF574D1B9 /* PlaybackCaption.swift */; }; - 4EDE3317EA5C40F16CB7E32A /* WalkiewareTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BB854B6224E9C6EC2FC901D /* WalkiewareTheme.swift */; }; - 5FD9722A7E3D5329D7B1E770 /* CodeTicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654A6A5F8172661179904170 /* CodeTicker.swift */; }; - 6380DEC1F53B213D184FD656 /* WalkiewareHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03D832B5A1A03E760A43BBF8 /* WalkiewareHeader.swift */; }; - 6D7B5EBEDBC462D5029C784D /* Web in Resources */ = {isa = PBXBuildFile; fileRef = 315FD6C024E525106C7FD3BE /* Web */; }; - 7EC06C94440CDAF9B846F0BB /* SequenceBenchmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F16D0B24CA61442FFD0E27 /* SequenceBenchmark.swift */; }; - 8681CA8AC5E530EAD0589219 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 110077D3E4AF92775C4E6D74 /* Assets.xcassets */; }; - 8CD6B532DB3A5B03BC35EEDD /* HeaderSheetsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B2C6F3854EDC996115B080 /* HeaderSheetsTests.swift */; }; - 91EBE2405BCB456959613E70 /* RecordingTrim.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35720E8232DBFB5B795FBEEA /* RecordingTrim.swift */; }; - 97AB97086118FC695F4B2133 /* AudioBenchmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F6D30D7883EC26BF391CC7 /* AudioBenchmark.swift */; }; - 99B11F258C6DD8DEAD32A419 /* MusicalInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A7C5768F0EE9F4A8A288767 /* MusicalInput.swift */; }; - B01CCEF94DAC4203687C68CB /* SpeechCapture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 054D4872CAC359CCAFE93F95 /* SpeechCapture.swift */; }; - C57CC34DE256A25EDF176C4A /* NativeScreenFixture.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF403AD7661862BCAC9B2F95 /* NativeScreenFixture.swift */; }; - E0B6A4DB98A5C44344C74589 /* WorkspaceCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D40BA9A3C78CC0324903812B /* WorkspaceCoordinator.swift */; }; - F1E262539EDCC86364A1B426 /* UtteranceRecording.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A3D6D0D1C0C32051B6C6AF4 /* UtteranceRecording.swift */; }; - F9A4BC365780D687A6B8CADB /* NativeSignIn.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC5AD9D9D7F376F72D8137A3 /* NativeSignIn.swift */; }; - FC34834B44AA5AF9FDB73AC0 /* WalkiewareApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA7AE20BF7B4A303BD2F09A /* WalkiewareApp.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 6F13103C020139BADAEDA415 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8084B60DC12031BB4CBCF868 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42E03A3EE36136CA4C61FBD8; - remoteInfo = Walkieware; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 03D832B5A1A03E760A43BBF8 /* WalkiewareHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkiewareHeader.swift; sourceTree = ""; }; - 054D4872CAC359CCAFE93F95 /* SpeechCapture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeechCapture.swift; sourceTree = ""; }; - 06F16D0B24CA61442FFD0E27 /* SequenceBenchmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SequenceBenchmark.swift; sourceTree = ""; }; - 110077D3E4AF92775C4E6D74 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 1A7C5768F0EE9F4A8A288767 /* MusicalInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicalInput.swift; sourceTree = ""; }; - 220B6400DBD8900B5058A7F0 /* WalkiewareScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkiewareScreen.swift; sourceTree = ""; }; - 315FD6C024E525106C7FD3BE /* Web */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Web; path = Resources/Web; sourceTree = SOURCE_ROOT; }; - 35720E8232DBFB5B795FBEEA /* RecordingTrim.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordingTrim.swift; sourceTree = ""; }; - 3EA4916078A47F08CDF99B5E /* SwipeToTypeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwipeToTypeTests.swift; sourceTree = ""; }; - 45F6D30D7883EC26BF391CC7 /* AudioBenchmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioBenchmark.swift; sourceTree = ""; }; - 49B317E893F3D8506A3F246D /* InputButtonLabels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputButtonLabels.swift; sourceTree = ""; }; - 4A3D6D0D1C0C32051B6C6AF4 /* UtteranceRecording.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtteranceRecording.swift; sourceTree = ""; }; - 50D5B994181BB8DD173DBA13 /* PlaybackWord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackWord.swift; sourceTree = ""; }; - 5E4DE7A1D969E42D910F4BCB /* Fixtures */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Fixtures; path = Resources/Fixtures; sourceTree = SOURCE_ROOT; }; - 654A6A5F8172661179904170 /* CodeTicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeTicker.swift; sourceTree = ""; }; - 67B2C6F3854EDC996115B080 /* HeaderSheetsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderSheetsTests.swift; sourceTree = ""; }; - 690D4836B59F77E01D9326D4 /* NetworkBenchmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkBenchmark.swift; sourceTree = ""; }; - 706045AC87F69577059E617E /* Walkieware.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Walkieware.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 7BB854B6224E9C6EC2FC901D /* WalkiewareTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkiewareTheme.swift; sourceTree = ""; }; - 92FF8B832524B3AC4D8291F7 /* WalkiewareUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = WalkiewareUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - C614C7FAFB7C430BF574D1B9 /* PlaybackCaption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackCaption.swift; sourceTree = ""; }; - CBA7AE20BF7B4A303BD2F09A /* WalkiewareApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkiewareApp.swift; sourceTree = ""; }; - D40BA9A3C78CC0324903812B /* WorkspaceCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspaceCoordinator.swift; sourceTree = ""; }; - E8E12122840B2375C0AB2ED0 /* VersionNarrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionNarrator.swift; sourceTree = ""; }; - F3EC37299741D5E90E45EE5F /* WalkiewareAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkiewareAccount.swift; sourceTree = ""; }; - FC5AD9D9D7F376F72D8137A3 /* NativeSignIn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeSignIn.swift; sourceTree = ""; }; - FF403AD7661862BCAC9B2F95 /* NativeScreenFixture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeScreenFixture.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXGroup section */ - 64241EA4D5013A2F023B9C2B /* Products */ = { - isa = PBXGroup; - children = ( - 706045AC87F69577059E617E /* Walkieware.app */, - 92FF8B832524B3AC4D8291F7 /* WalkiewareUITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 759B7C408B1B0527C2AD8111 /* Sources */ = { - isa = PBXGroup; - children = ( - 45F6D30D7883EC26BF391CC7 /* AudioBenchmark.swift */, - 654A6A5F8172661179904170 /* CodeTicker.swift */, - 49B317E893F3D8506A3F246D /* InputButtonLabels.swift */, - 1A7C5768F0EE9F4A8A288767 /* MusicalInput.swift */, - FF403AD7661862BCAC9B2F95 /* NativeScreenFixture.swift */, - 690D4836B59F77E01D9326D4 /* NetworkBenchmark.swift */, - C614C7FAFB7C430BF574D1B9 /* PlaybackCaption.swift */, - 50D5B994181BB8DD173DBA13 /* PlaybackWord.swift */, - 35720E8232DBFB5B795FBEEA /* RecordingTrim.swift */, - 06F16D0B24CA61442FFD0E27 /* SequenceBenchmark.swift */, - 054D4872CAC359CCAFE93F95 /* SpeechCapture.swift */, - 4A3D6D0D1C0C32051B6C6AF4 /* UtteranceRecording.swift */, - E8E12122840B2375C0AB2ED0 /* VersionNarrator.swift */, - F3EC37299741D5E90E45EE5F /* WalkiewareAccount.swift */, - CBA7AE20BF7B4A303BD2F09A /* WalkiewareApp.swift */, - 03D832B5A1A03E760A43BBF8 /* WalkiewareHeader.swift */, - 220B6400DBD8900B5058A7F0 /* WalkiewareScreen.swift */, - 7BB854B6224E9C6EC2FC901D /* WalkiewareTheme.swift */, - D40BA9A3C78CC0324903812B /* WorkspaceCoordinator.swift */, - ); - path = Sources; - sourceTree = ""; - }; - 8FD6F530EA415417DBA563F3 /* UITests */ = { - isa = PBXGroup; - children = ( - 67B2C6F3854EDC996115B080 /* HeaderSheetsTests.swift */, - 3EA4916078A47F08CDF99B5E /* SwipeToTypeTests.swift */, - ); - path = UITests; - sourceTree = ""; - }; - B5485CCC09007955BCE3FAD6 /* Resources */ = { - isa = PBXGroup; - children = ( - 110077D3E4AF92775C4E6D74 /* Assets.xcassets */, - ); - path = Resources; - sourceTree = ""; - }; - BE17EABD594C8C886A6D0245 /* Sources */ = { - isa = PBXGroup; - children = ( - FC5AD9D9D7F376F72D8137A3 /* NativeSignIn.swift */, - ); - name = Sources; - path = ../aesel/Sources; - sourceTree = ""; - }; - C071A173F178420C7C9D1E5B = { - isa = PBXGroup; - children = ( - 5E4DE7A1D969E42D910F4BCB /* Fixtures */, - 315FD6C024E525106C7FD3BE /* Web */, - B5485CCC09007955BCE3FAD6 /* Resources */, - 759B7C408B1B0527C2AD8111 /* Sources */, - BE17EABD594C8C886A6D0245 /* Sources */, - 8FD6F530EA415417DBA563F3 /* UITests */, - 64241EA4D5013A2F023B9C2B /* Products */, - ); - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 42E03A3EE36136CA4C61FBD8 /* Walkieware */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9AB1AE4E54E1BFC66F8BBF63 /* Build configuration list for PBXNativeTarget "Walkieware" */; - buildPhases = ( - A94692E5600895DA74C938CE /* Sources */, - 4974A5C50239A88086F1106C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Walkieware; - packageProductDependencies = ( - ); - productName = Walkieware; - productReference = 706045AC87F69577059E617E /* Walkieware.app */; - productType = "com.apple.product-type.application"; - }; - 81D2432862B40D4001794C08 /* WalkiewareUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 34421FD1E3396B200792DD4F /* Build configuration list for PBXNativeTarget "WalkiewareUITests" */; - buildPhases = ( - 73CBE11E83DAED65CF9C53C2 /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - E923111DA65188CE1920567F /* PBXTargetDependency */, - ); - name = WalkiewareUITests; - packageProductDependencies = ( - ); - productName = WalkiewareUITests; - productReference = 92FF8B832524B3AC4D8291F7 /* WalkiewareUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 8084B60DC12031BB4CBCF868 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; - TargetAttributes = { - 42E03A3EE36136CA4C61FBD8 = { - DevelopmentTeam = FB5948YR3S; - ProvisioningStyle = Automatic; - }; - 81D2432862B40D4001794C08 = { - DevelopmentTeam = FB5948YR3S; - ProvisioningStyle = Automatic; - TestTargetID = 42E03A3EE36136CA4C61FBD8; - }; - }; - }; - buildConfigurationList = C8AEC1C5A0A8FB1D9040DACF /* Build configuration list for PBXProject "Walkieware" */; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - Base, - en, - ); - mainGroup = C071A173F178420C7C9D1E5B; - minimizedProjectReferenceProxies = 1; - preferredProjectObjectVersion = 77; - productRefGroup = 64241EA4D5013A2F023B9C2B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 42E03A3EE36136CA4C61FBD8 /* Walkieware */, - 81D2432862B40D4001794C08 /* WalkiewareUITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4974A5C50239A88086F1106C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8681CA8AC5E530EAD0589219 /* Assets.xcassets in Resources */, - 386E3D38C79AB6CF23166708 /* Fixtures in Resources */, - 6D7B5EBEDBC462D5029C784D /* Web in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 73CBE11E83DAED65CF9C53C2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8CD6B532DB3A5B03BC35EEDD /* HeaderSheetsTests.swift in Sources */, - 3D181C343F0CF5296E1C4035 /* SwipeToTypeTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A94692E5600895DA74C938CE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97AB97086118FC695F4B2133 /* AudioBenchmark.swift in Sources */, - 5FD9722A7E3D5329D7B1E770 /* CodeTicker.swift in Sources */, - 0DAF293EA0DCA59330C836C6 /* InputButtonLabels.swift in Sources */, - 99B11F258C6DD8DEAD32A419 /* MusicalInput.swift in Sources */, - C57CC34DE256A25EDF176C4A /* NativeScreenFixture.swift in Sources */, - F9A4BC365780D687A6B8CADB /* NativeSignIn.swift in Sources */, - 349E23AC69F23D16290DCB48 /* NetworkBenchmark.swift in Sources */, - 465DCE826B91CD18CE48CEF7 /* PlaybackCaption.swift in Sources */, - 09A89EDEB03772B566D345A9 /* PlaybackWord.swift in Sources */, - 91EBE2405BCB456959613E70 /* RecordingTrim.swift in Sources */, - 7EC06C94440CDAF9B846F0BB /* SequenceBenchmark.swift in Sources */, - B01CCEF94DAC4203687C68CB /* SpeechCapture.swift in Sources */, - F1E262539EDCC86364A1B426 /* UtteranceRecording.swift in Sources */, - 27410D22F96D8006B6D29452 /* VersionNarrator.swift in Sources */, - 28DE33D8B94B853B408571A1 /* WalkiewareAccount.swift in Sources */, - FC34834B44AA5AF9FDB73AC0 /* WalkiewareApp.swift in Sources */, - 6380DEC1F53B213D184FD656 /* WalkiewareHeader.swift in Sources */, - 3BF2B70E0C018C0D43C0134A /* WalkiewareScreen.swift in Sources */, - 4EDE3317EA5C40F16CB7E32A /* WalkiewareTheme.swift in Sources */, - E0B6A4DB98A5C44344C74589 /* WorkspaceCoordinator.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E923111DA65188CE1920567F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 42E03A3EE36136CA4C61FBD8 /* Walkieware */; - targetProxy = 6F13103C020139BADAEDA415 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 55581D923FD71085A5BE5C00 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = computer.aesthetic.walkieware; - PRODUCT_NAME = Walkieware; - SDKROOT = iphoneos; - SUPPORTS_MACCATALYST = NO; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Debug; - }; - 64033FF21ACF026231FDE1EC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GENERATE_INFOPLIST_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = computer.aesthetic.walkieware.uitests; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Walkieware; - }; - name = Debug; - }; - 74FA50C11A066D9925210D70 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GENERATE_INFOPLIST_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = computer.aesthetic.walkieware.uitests; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Walkieware; - }; - name = Release; - }; - CE4FAD40D07521935A8ABD31 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = computer.aesthetic.walkieware; - PRODUCT_NAME = Walkieware; - SDKROOT = iphoneos; - SUPPORTS_MACCATALYST = NO; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Release; - }; - D9BC626811DF91C4D14568C9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 82; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = FB5948YR3S; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "DEBUG=1", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MARKETING_VERSION = 0.1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - DC1BE817F31584CABAB3C583 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 82; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = FB5948YR3S; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MARKETING_VERSION = 0.1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 34421FD1E3396B200792DD4F /* Build configuration list for PBXNativeTarget "WalkiewareUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 64033FF21ACF026231FDE1EC /* Debug */, - 74FA50C11A066D9925210D70 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 9AB1AE4E54E1BFC66F8BBF63 /* Build configuration list for PBXNativeTarget "Walkieware" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 55581D923FD71085A5BE5C00 /* Debug */, - CE4FAD40D07521935A8ABD31 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - C8AEC1C5A0A8FB1D9040DACF /* Build configuration list for PBXProject "Walkieware" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D9BC626811DF91C4D14568C9 /* Debug */, - DC1BE817F31584CABAB3C583 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 8084B60DC12031BB4CBCF868 /* Project object */; -} diff --git a/apple/walkieware/.gitignore b/apple/whistlegraph/.gitignore similarity index 100% rename from apple/walkieware/.gitignore rename to apple/whistlegraph/.gitignore diff --git a/apple/walkieware/Info.plist b/apple/whistlegraph/Info.plist similarity index 50% rename from apple/walkieware/Info.plist rename to apple/whistlegraph/Info.plist index abca691966..4f48683f4b 100644 --- a/apple/walkieware/Info.plist +++ b/apple/whistlegraph/Info.plist @@ -1,6 +1,6 @@ -CFBundleDevelopmentRegionenCFBundleExecutable$(EXECUTABLE_NAME)CFBundleIdentifier$(PRODUCT_BUNDLE_IDENTIFIER)CFBundleNameWalkiewareCFBundleDisplayNameWalkiewareCFBundlePackageTypeAPPLCFBundleShortVersionString$(MARKETING_VERSION)CFBundleVersion$(CURRENT_PROJECT_VERSION)UILaunchScreen -NSMicrophoneUsageDescriptionHold the talk button to tell Walkieware what to make. Recording stops when you release it. -NSSpeechRecognitionUsageDescriptionWalkieware turns your spoken request into text. This demo requires on-device speech recognition and does not save audio. +CFBundleDevelopmentRegionenCFBundleExecutable$(EXECUTABLE_NAME)CFBundleIdentifier$(PRODUCT_BUNDLE_IDENTIFIER)CFBundleNameWhistlegraphCFBundleDisplayNameWhistlegraphCFBundlePackageTypeAPPLCFBundleShortVersionString$(MARKETING_VERSION)CFBundleVersion$(CURRENT_PROJECT_VERSION)UILaunchScreen +NSMicrophoneUsageDescriptionHold the talk button to tell Whistlegraph what to make. Recording stops when you release it. +NSSpeechRecognitionUsageDescriptionWhistlegraph turns your spoken request into text. Speech recognition runs on this iPhone. Recordings stay on this phone for playback. UISupportedInterfaceOrientationsUIInterfaceOrientationPortraitUIUserInterfaceStyleDarkITSAppUsesNonExemptEncryption diff --git a/apple/whistlegraph/README.md b/apple/whistlegraph/README.md new file mode 100644 index 0000000000..606b9c830c --- /dev/null +++ b/apple/whistlegraph/README.md @@ -0,0 +1,30 @@ +# Whistlegraph + +The iPhone app for making AC pieces with voice, sound, and typing. Product domain: `whistlegraph.app`. The practice and archive remain at `whistlegraph.org`. + +From this directory, run `./run.sh device` to bundle, build, install, and open the app on a paired iPhone. Use `DEVICE=` if more than one phone is paired. `./run.sh simulator` builds for a simulator; select one with `SIMULATOR=`. XcodeGen generates `Whistlegraph.xcodeproj` from `project.yml`. + +Typing uses AC's `compkey` sample and QWERTY pitch mapping. Enter sends the prompt, pasted line breaks become spaces, and the limit is 96 characters. Account settings control key and button sounds together. + +## Update compatibility + +Whistlegraph updates the existing Walkieware installation. Keep these persisted and deployed contracts until an explicit migration replaces them: + +- `computer.aesthetic.walkieware`: iOS bundle identifier and Keychain service. Changing the bundle identifier installs a separate app and loses access to the existing container. +- `walkieware://app`: bundled WebView origin. Its local storage contains pieces, version histories, cloud identities, and recovery state. +- `walkieware-*` preferences, local-storage keys, generated source markers, and `Utterances/` recordings. +- `walkie` script-message handler, `walkieware*` JavaScript bridge, `WALKIE_*` fixture controls, and existing backend routes and schemas. These remain compatible with the deployed service and test tools. + +The directory, native Swift types, Xcode targets/schemes, installed app name, permission text, and visible web shell use Whistlegraph. This refactor does not configure DNS or publish a website. + +## Checks + +From the repository root: + +```sh +node apple/whistlegraph/bundle.mjs +node --test apple/whistlegraph/Tests/*.test.mjs +node apple/whistlegraph/Tests/native-bridge.test.cjs --native-shell +``` + +The browser check uses Puppeteer and Chrome with mock inference; it makes no model requests. Native UI tests live in the `WhistlegraphUITests` scheme. diff --git a/apple/walkieware/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/apple/whistlegraph/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from apple/walkieware/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to apple/whistlegraph/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/apple/walkieware/Resources/Assets.xcassets/AppIcon.appiconset/icon.png b/apple/whistlegraph/Resources/Assets.xcassets/AppIcon.appiconset/icon.png similarity index 100% rename from apple/walkieware/Resources/Assets.xcassets/AppIcon.appiconset/icon.png rename to apple/whistlegraph/Resources/Assets.xcassets/AppIcon.appiconset/icon.png diff --git a/apple/walkieware/Resources/Assets.xcassets/Contents.json b/apple/whistlegraph/Resources/Assets.xcassets/Contents.json similarity index 100% rename from apple/walkieware/Resources/Assets.xcassets/Contents.json rename to apple/whistlegraph/Resources/Assets.xcassets/Contents.json diff --git a/apple/walkieware/Resources/Fixtures/basic-request.wav b/apple/whistlegraph/Resources/Fixtures/basic-request.wav similarity index 100% rename from apple/walkieware/Resources/Fixtures/basic-request.wav rename to apple/whistlegraph/Resources/Fixtures/basic-request.wav diff --git a/apple/walkieware/Resources/Fixtures/mixed-request.wav b/apple/whistlegraph/Resources/Fixtures/mixed-request.wav similarity index 100% rename from apple/walkieware/Resources/Fixtures/mixed-request.wav rename to apple/whistlegraph/Resources/Fixtures/mixed-request.wav diff --git a/apple/walkieware/Resources/Fixtures/sine-tone.wav b/apple/whistlegraph/Resources/Fixtures/sine-tone.wav similarity index 100% rename from apple/walkieware/Resources/Fixtures/sine-tone.wav rename to apple/whistlegraph/Resources/Fixtures/sine-tone.wav diff --git a/apple/walkieware/Resources/Fixtures/whistle-sweep.wav b/apple/whistlegraph/Resources/Fixtures/whistle-sweep.wav similarity index 100% rename from apple/walkieware/Resources/Fixtures/whistle-sweep.wav rename to apple/whistlegraph/Resources/Fixtures/whistle-sweep.wav diff --git a/apple/whistlegraph/Resources/Web/AeCo_compkey.m4a b/apple/whistlegraph/Resources/Web/AeCo_compkey.m4a new file mode 100644 index 0000000000000000000000000000000000000000..a81fcca8a2ac3b0ffe117be4e42947078e0dfe36 GIT binary patch literal 2663 zcmZQzV30{GsVwj{aa3SnU|;~znZ^0JxdkRh3=9m6xhaVyAaMo;wzmuy9M~Ct%{*ee zPb+d$-{mabQ``S!6<&L`<8%Cvf0Opv?Q#8E{O#-a^v(QN+T)HK;ulafPjUBMrDjwf z$jtTe&EC=}rc0h5vrATEpPyB*%d-FMzRCa6KNfN3yuazb`L~>M`NJbW{=RyA?T@_M z$;KO2>+MpaJeYO;&VBt>utz?kEKl3Q_{!hib?>8ndjuOcHvaHcUAOC*R|W(3|1-@8 z;}~L9D!n!+MDQ|)A9VE#UM|?>Ed1(?@P@0RGNsn6 z>E-NgowZ~AK`W<(`5G%$+_Q@9J~Yw7b=q;y8xA}-vdufyliatS^tq;Zo^yWkjZ-r( zy)Aq5&*Hmh4*!G{l!5~uXYw!9t^66t;28IGg714!0CBnRH zu8tFqEKoeFrCX%iE26-tAlp=a_Vx)~-fNPaq232AXKwYm^0d{M@rRqJ&y+XD$wxIE zU!UIYsmHeY?7d%i6|SycaneRT^w@;hJBH^Cmscm;IGCzckp6pd%-cg=-ZS)9#ZOmG zs_T&Q=T5Ni>eZb#N&9QUJ=c$Z=d4zH3wKLh>1B-VT(bI`1M05nZWsM3I-xMVMi}vMf8Z(PfDU*24*UN0u&^T+G?p z&UI*p@UtzI%U9`lFYfW(Uo$Z`dHv%U*_F4uk1e%io7O6w^N+nEuj%StyP`I*%{rIg`Ik3@Pk6!Gs`tIcEbP*!59j@MYKseiV7Qp^|(cZu^X9O~FdXEsj3w)#f~QKkK>Q4Q1cZdj*VAqH7Aa zN{KeLD|InGdhTg%RC?RXpjAor!G_Gj{D~74j)y<))Df1qdY&pL^>DeX&wEkLg}NuU z)MU($abcYCg9Yn;e&AWRXv49?Uv{s)qH_4eYmUR5x3U(`xF@h8sbO2brJ>Y&u~*{p ztEAJ9?X=%tk=d87|NW8o6rF$Dvm6+F_!xymSG?I`s1kB^;?j+aMR*iA3r{X6-d*mu z*-u|~>$KIAR?nCpS@iZW*Wx2@rYbWWu*jB5D zoKZS-);N60oKN3x{W4}Vl)3Tg<*8k#ud)BtW&8R0%)8|8sqfv|N}1S_mn}}daQ5E9 z>XJtL*&o*LohVa$&?IENjw#RHa3<*$lWaGZ{`vbZu3I;IVoSwT0S4v&*&e?GLaED(0$Q0iRJ3-qESm82Dr1S;)3S=0 z^KOcj8LvO0tYVfD>bTTfGik~RUp0xn+x*mdD*p;D+UTACxAb0JM&ymWo0(ZokKCqi zzV~n6=khyWc=E3n7%OkQ@YjCgW_5j=XXb$d>QQGd-gtMoa>IsLZ|BUI)&#d3-;|!7 z-##svNALW?3#Eo7bAuS994r_)MAwv*Nh!8;2ux&o_o;80VI^nEy*CmYuBAAXhVH+% zciO#Pme#Zdri)J4uHAW=z36q@+^^d*oG(jWNc6bHrEYls?|$7ke=grouDb3T^8Mne z6$*k{no6vm+a%^|oeZ6OIQM3GIcFlrzb!kio}0M2e4Y8+W3F5${2DgIeNb!doxJ2b zZ>d_duKm2fmLflQ-rp2<@_~G##aqX#odyhilR7>=e$O*kvo< zz}akzr9!|Bu{rBbzta#|q{F~qTm0+)y(jPPI~eS;%@Wdkt!cMn_m0ReciT75uCkr} zd}W%ptid9YBVWP_Rvb-v-l7mG^dovYv*O*dc$L4iQl`5dd3bozg>G)AgP#rGGB^7w z>u8oNNSn{!`62Z-Q;zlel$sjT4d=fcJ5($=t?ndaU`VZi#)26KzN8x2=Pa36Qkts} zwc6bJT+h16mmkm7{(hfFX3tMU?xEoi*P?_EIq41CbxW#uyxUfjet|`|`2RlPvol|mnB4AgH!G0)qPAV|b4tVfe+m`>p}Qu(){o zU=odwYA<6?Zc1h%0|SFXZVK2A29Wt64Dpu^L+BB(DTWy-IYnR=0|P^GerXj&ABeFi0>kF#G~z)`o@#CLs>ChK2@4CI$uuiQ||hISP#V;85kIrGB7Z#V_;y| z0u}3JU|fTe-uslB3Z_AFO32}!o018S1CS&bAIZ!q1~tR> z=<4d~f|_i(sfpm&NzTvJODrhJN!7~?Da}g-`A{S;F*g;Y3nUWk8{oviz|fMC2(}I6 f3I+uOD1b05Obj3l17k}l10ru^Y+();ppXFoy>{14 literal 0 HcmV?d00001 diff --git a/apple/walkieware/Resources/Web/ComicRelief-Bold.ttf b/apple/whistlegraph/Resources/Web/ComicRelief-Bold.ttf similarity index 100% rename from apple/walkieware/Resources/Web/ComicRelief-Bold.ttf rename to apple/whistlegraph/Resources/Web/ComicRelief-Bold.ttf diff --git a/apple/walkieware/Resources/Web/attempt-recovery.mjs b/apple/whistlegraph/Resources/Web/attempt-recovery.mjs similarity index 100% rename from apple/walkieware/Resources/Web/attempt-recovery.mjs rename to apple/whistlegraph/Resources/Web/attempt-recovery.mjs diff --git a/apple/walkieware/Resources/Web/base-piece.mjs b/apple/whistlegraph/Resources/Web/base-piece.mjs similarity index 100% rename from apple/walkieware/Resources/Web/base-piece.mjs rename to apple/whistlegraph/Resources/Web/base-piece.mjs diff --git a/apple/walkieware/Resources/Web/branch-context.mjs b/apple/whistlegraph/Resources/Web/branch-context.mjs similarity index 100% rename from apple/walkieware/Resources/Web/branch-context.mjs rename to apple/whistlegraph/Resources/Web/branch-context.mjs diff --git a/apple/walkieware/Resources/Web/engine.mjs b/apple/whistlegraph/Resources/Web/engine.mjs similarity index 100% rename from apple/walkieware/Resources/Web/engine.mjs rename to apple/whistlegraph/Resources/Web/engine.mjs diff --git a/apple/whistlegraph/Resources/Web/generation-policy.mjs b/apple/whistlegraph/Resources/Web/generation-policy.mjs new file mode 100644 index 0000000000..77f4676b9c --- /dev/null +++ b/apple/whistlegraph/Resources/Web/generation-policy.mjs @@ -0,0 +1,2 @@ +export const DEFAULT_MODEL = 'deepseek/deepseek-v4.1-flash'; +export const GENERATION_INSTRUCTIONS = 'This surface is Whistlegraph. The person watches the piece being made. A local starter may already be visible: its source is the real current piece; refine it instead of discarding it. For an existing piece, make small revision-checked edit_piece calls instead of resending unchanged code. Use write_piece to create the initial piece or for a necessary rewrite. No prose preamble. Each ask becomes one internal version; complete edit checkpoints are preview layers within it. Make the first visible working drawing in 3–6 lines whenever possible. The UI compiles runnable module prefixes during streaming: put required declarations and a complete exported paint function first; avoid long data tables or helper code before that first drawing. Then refine in small complete write_piece checkpoints only as needed to satisfy the request. Do not add unrequested animation or features. For animation use Number(paintCount) from the paint API, or explicit state advanced in sim; there is no numeric frame API. A request for a spoken narrator needs audible speak(), not just written notes; use the speech guide. Use AC ink alpha on the 0–255 scale and size geometry relative to the screen. Do not repeat the prompt or add interaction instructions, help text, usage hints, or captions inside or outside the picture unless explicitly requested. Use the default write font for other in-piece text unless the person requests another. Use ac_preview for runtime observations; this phone has no desktop frame-capture service. Once the requested change is painted and checked, finish the turn. Never fake progress or tests. Keep one line `export const caption = "…"` in the piece: a plain sentence under 120 characters naming the subject, its mood, what moves and what the person can do; update it whenever an edit changes any of that. It is the piece\'s memory of itself and comes back to you with every follow-up. Preserve the current piece and the original intent of the selected branch on revisions. Short follow-ups modify that existing world; do not replace its subject, characters, message, interactions, or sound without a request to do so. Treat uncertain speech transcriptions conservatively in context instead of inventing a new subject from an ambiguous word. Adjectives of culture, nationality or place (Latina, Japanese, Nordic, tropical) describe how things look: palette, patterns, dress, flora, light. They never change the language of any text or speech unless the request mentions words, text, language or voice. Do not turn ordinary spoken requests into text posters, transcript timelines, waveform charts, or word-timed animation unless explicitly requested. No publishing: these are private local previews.'; diff --git a/apple/walkieware/Resources/Web/inference-input.mjs b/apple/whistlegraph/Resources/Web/inference-input.mjs similarity index 100% rename from apple/walkieware/Resources/Web/inference-input.mjs rename to apple/whistlegraph/Resources/Web/inference-input.mjs diff --git a/apple/walkieware/Resources/Web/instant-piece.mjs b/apple/whistlegraph/Resources/Web/instant-piece.mjs similarity index 100% rename from apple/walkieware/Resources/Web/instant-piece.mjs rename to apple/whistlegraph/Resources/Web/instant-piece.mjs diff --git a/apple/walkieware/Resources/Web/local-moves.mjs b/apple/whistlegraph/Resources/Web/local-moves.mjs similarity index 100% rename from apple/walkieware/Resources/Web/local-moves.mjs rename to apple/whistlegraph/Resources/Web/local-moves.mjs diff --git a/apple/walkieware/Resources/Web/local-scene.mjs b/apple/whistlegraph/Resources/Web/local-scene.mjs similarity index 100% rename from apple/walkieware/Resources/Web/local-scene.mjs rename to apple/whistlegraph/Resources/Web/local-scene.mjs diff --git a/apple/walkieware/Resources/Web/local-sequence.mjs b/apple/whistlegraph/Resources/Web/local-sequence.mjs similarity index 100% rename from apple/walkieware/Resources/Web/local-sequence.mjs rename to apple/whistlegraph/Resources/Web/local-sequence.mjs diff --git a/apple/walkieware/Resources/Web/musical-input.mjs b/apple/whistlegraph/Resources/Web/musical-input.mjs similarity index 100% rename from apple/walkieware/Resources/Web/musical-input.mjs rename to apple/whistlegraph/Resources/Web/musical-input.mjs diff --git a/apple/walkieware/Resources/Web/native.js b/apple/whistlegraph/Resources/Web/native.js similarity index 96% rename from apple/walkieware/Resources/Web/native.js rename to apple/whistlegraph/Resources/Web/native.js index 690f632a61..4992766df8 100644 --- a/apple/walkieware/Resources/Web/native.js +++ b/apple/whistlegraph/Resources/Web/native.js @@ -1,9 +1,9 @@ // Native live speech and the shared Aesel generation stream. (() => { if (!window.webkit?.messageHandlers?.walkie) return; - document.title = 'Walkieware'; - $('home').innerHTML = 'walkieware'; - $('home').setAttribute('aria-label', 'Walkieware'); + document.title = 'Whistlegraph'; + $('home').innerHTML = 'whistlegraph'; + $('home').setAttribute('aria-label', 'Whistlegraph'); $('home').onclick = () => $('info').showModal(); window.addEventListener('error', e => { if(e.message) toast('Could not load generation: '+e.message); }); document.querySelector('#initial .mark').innerHTML = ''; @@ -101,10 +101,10 @@ const note = document.querySelector('.voice-note'); note.textContent = ''; const blocked = () => window.walkiewareIsBusy ? window.walkiewareIsBusy() : gameMode === 'review'; - $('info').querySelector('h2').textContent = 'Walkieware'; - $('info').querySelectorAll('p')[0].textContent = 'Hold to talk. Release to make. Your words are transcribed on the iPhone; audio is not saved. Allow Speech and Microphone access the first time, then hold again.'; + $('info').querySelector('h2').textContent = 'Whistlegraph'; + $('info').querySelectorAll('p')[0].textContent = 'Hold to talk. Release to make. Your words are transcribed on the iPhone; recordings stay on this phone for playback. Allow Speech and Microphone access the first time, then hold again.'; $('info').querySelectorAll('p')[1].textContent = 'Your ww code identifies this piece. Source, versions, and live errors sync privately to your AC account so your other devices and agents can inspect and edit it. Audio stays on this phone.'; - $('speak').setAttribute('aria-label', 'Hold to talk to Walkieware'); + $('speak').setAttribute('aria-label', 'Hold to talk to Whistlegraph'); $('export').hidden = true; $('reset').hidden = true; $('new').hidden = true; diff --git a/apple/walkieware/Resources/Web/piece-caption.mjs b/apple/whistlegraph/Resources/Web/piece-caption.mjs similarity index 100% rename from apple/walkieware/Resources/Web/piece-caption.mjs rename to apple/whistlegraph/Resources/Web/piece-caption.mjs diff --git a/apple/walkieware/Resources/Web/piece-versions.mjs b/apple/whistlegraph/Resources/Web/piece-versions.mjs similarity index 100% rename from apple/walkieware/Resources/Web/piece-versions.mjs rename to apple/whistlegraph/Resources/Web/piece-versions.mjs diff --git a/apple/walkieware/Resources/Web/sequence-benchmark.mjs b/apple/whistlegraph/Resources/Web/sequence-benchmark.mjs similarity index 100% rename from apple/walkieware/Resources/Web/sequence-benchmark.mjs rename to apple/whistlegraph/Resources/Web/sequence-benchmark.mjs diff --git a/apple/walkieware/Resources/Web/shell.html b/apple/whistlegraph/Resources/Web/shell.html similarity index 93% rename from apple/walkieware/Resources/Web/shell.html rename to apple/whistlegraph/Resources/Web/shell.html index 15f7cfff5a..077054ddd7 100644 --- a/apple/walkieware/Resources/Web/shell.html +++ b/apple/whistlegraph/Resources/Web/shell.html @@ -1,12 +1,12 @@ -Walkieware +Whistlegraph -
+

Say what it should do.

-

Walkieware

+

Whistlegraph