Redesign Hope iOS UI, harden playback, and document project handoff

This commit is contained in:
snowspeeder committed 2026-09-09 20:23:44 -04:00
1 parent 40aaf4fea7
commit 24f95639dc
24 files changed
+1470 -594

No files matched your search

+109 -1
View File
@@ -13,7 +13,9 @@
302BEC55CA9A10E49C307977 /* ServerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5683993A1DE677121FFA1F3 /* ServerConfig.swift */; };
36DF44D9A7896F18A064847D /* ConversationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FA9F420065D2127B0AEC0 /* ConversationView.swift */; };
3E01A0AF44FD3324FA72C43C /* OrbView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62BAE22E3A165DCB5DFFEE1 /* OrbView.swift */; };
57E6476135CE30495E02D723 /* VoiceUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8309AC6885ED7EB0047AE211 /* VoiceUITests.swift */; };
64291BBC8D0DAD47E07E94E0 /* ConversationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0C23305A6C55A83F8617D9D /* ConversationState.swift */; };
70E4B860147494D9657E8C01 /* VoiceLiveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A697985B36B3A1A3F2AD5 /* VoiceLiveTests.swift */; };
720C26EC163AE46713B02DD8 /* TLSPinning.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B40076934C28BA4B92D808 /* TLSPinning.swift */; };
72F3B4AEC214521015200583 /* MediaReconcileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FB71841B3D72CD1D69E47A /* MediaReconcileTests.swift */; };
73DA73811F8AEB2AFE340D10 /* MediaPlayerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3964F565A6C6A06399EBA4DF /* MediaPlayerController.swift */; };
@@ -24,6 +26,7 @@
A5868238CF4958D6D0C5908E /* TaskStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B60FBBB9C47BB9ADACA7CA /* TaskStore.swift */; };
A86EFB492F40C26D4AA315E9 /* PinnedMediaResourceLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DC3AC57ED58FC517E212F19 /* PinnedMediaResourceLoader.swift */; };
A94F6C509E3FE215115B2C58 /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D0D153557BB1C756ED04C61 /* SettingsStore.swift */; };
AF719B1668ADA929AA0237BF /* MediaPlaybackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E492DE95BFFF99D7AC1E8970 /* MediaPlaybackTests.swift */; };
B94FAFA796A9AF6011B03DEC /* PinnedMediaResourceLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A20F8AFF1AAC5A944173549 /* PinnedMediaResourceLoaderTests.swift */; };
BCAB602C722D74F6C96C5E36 /* ServerReplacementCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20A82F8996DEA166C94A7956 /* ServerReplacementCoordinatorTests.swift */; };
C00D1878C2AB3D8B6F9562B6 /* AgentMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FC167F6658CFEC9546A7E9F /* AgentMonitor.swift */; };
@@ -46,6 +49,13 @@
remoteGlobalIDString = 57E3A292BDE525A22EB7ADE4;
remoteInfo = Voice_iOS;
};
ED7A5BB58354A8C9A5994257 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 201BFA602F0A78910611E5F5 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 57E3A292BDE525A22EB7ADE4;
remoteInfo = Voice_iOS;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@@ -59,11 +69,14 @@
3964F565A6C6A06399EBA4DF /* MediaPlayerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayerController.swift; sourceTree = "<group>"; };
3F3FA9F420065D2127B0AEC0 /* ConversationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationView.swift; sourceTree = "<group>"; };
48F76881B4AE51DEE74511CC /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
5759EB570DB87BBC121D946D /* VoiceUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = VoiceUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5F6A697985B36B3A1A3F2AD5 /* VoiceLiveTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceLiveTests.swift; sourceTree = "<group>"; };
61C71C48230C683D199D6F4B /* ControlChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlChannel.swift; sourceTree = "<group>"; };
68A45228EF59186CFC219F2E /* TranscriptHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscriptHistory.swift; sourceTree = "<group>"; };
68FACB1A5EA6FEFD1D2613E9 /* MediaPanelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPanelView.swift; sourceTree = "<group>"; };
6D0D153557BB1C756ED04C61 /* SettingsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsStore.swift; sourceTree = "<group>"; };
6DC3AC57ED58FC517E212F19 /* PinnedMediaResourceLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinnedMediaResourceLoader.swift; sourceTree = "<group>"; };
8309AC6885ED7EB0047AE211 /* VoiceUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceUITests.swift; sourceTree = "<group>"; };
8A20F8AFF1AAC5A944173549 /* PinnedMediaResourceLoaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinnedMediaResourceLoaderTests.swift; sourceTree = "<group>"; };
9191AD60FF96E44F191864E3 /* MediaAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaAPI.swift; sourceTree = "<group>"; };
9681E7410B684D2D38752A70 /* TokenClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenClient.swift; sourceTree = "<group>"; };
@@ -75,6 +88,7 @@
C22975C69240AACD3418091F /* VoiceTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = VoiceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D82D665165A7BC1A4CBCCC6F /* TranscriptHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscriptHandler.swift; sourceTree = "<group>"; };
D9B40076934C28BA4B92D808 /* TLSPinning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TLSPinning.swift; sourceTree = "<group>"; };
E492DE95BFFF99D7AC1E8970 /* MediaPlaybackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlaybackTests.swift; sourceTree = "<group>"; };
E85BACA267ADD462306C9920 /* TaskPanelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskPanelView.swift; sourceTree = "<group>"; };
EB58EEF9490F81FB2E1CE31C /* VoiceSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceSession.swift; sourceTree = "<group>"; };
F5683993A1DE677121FFA1F3 /* ServerConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerConfig.swift; sourceTree = "<group>"; };
@@ -124,6 +138,15 @@
path = LiveKit;
sourceTree = "<group>";
};
6735DFBC89D9A939C44D763A /* UITests */ = {
isa = PBXGroup;
children = (
5F6A697985B36B3A1A3F2AD5 /* VoiceLiveTests.swift */,
8309AC6885ED7EB0047AE211 /* VoiceUITests.swift */,
);
path = UITests;
sourceTree = "<group>";
};
6B2AB34274D9B37E77178C6C /* Networking */ = {
isa = PBXGroup;
children = (
@@ -139,6 +162,7 @@
children = (
2A4C3CE2CA6FF828452803D1 /* Voice.app */,
C22975C69240AACD3418091F /* VoiceTests.xctest */,
5759EB570DB87BBC121D946D /* VoiceUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -168,6 +192,7 @@
children = (
FCC61E9990B71498171F9D34 /* Sources */,
DC8495F2B27E1770E6620A05 /* Tests */,
6735DFBC89D9A939C44D763A /* UITests */,
6F99423E59017FED59B4D71D /* Products */,
);
sourceTree = "<group>";
@@ -197,6 +222,7 @@
children = (
BDD0AA8B0E9B45A325D1E5E7 /* ConversationStateTests.swift */,
10C194656F19E89DFD656A91 /* MediaAPITests.swift */,
E492DE95BFFF99D7AC1E8970 /* MediaPlaybackTests.swift */,
09FB71841B3D72CD1D69E47A /* MediaReconcileTests.swift */,
8A20F8AFF1AAC5A944173549 /* PinnedMediaResourceLoaderTests.swift */,
20A82F8996DEA166C94A7956 /* ServerReplacementCoordinatorTests.swift */,
@@ -246,6 +272,24 @@
productReference = C22975C69240AACD3418091F /* VoiceTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
1C8CC2859E99A4AC83FC6374 /* VoiceUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 286F46F3E4A225D8ABDCEA48 /* Build configuration list for PBXNativeTarget "VoiceUITests" */;
buildPhases = (
889523F0856C91F5A5E8FD41 /* Sources */,
);
buildRules = (
);
dependencies = (
A506145EF5A1B3978391C33C /* PBXTargetDependency */,
);
name = VoiceUITests;
packageProductDependencies = (
);
productName = VoiceUITests;
productReference = 5759EB570DB87BBC121D946D /* VoiceUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
57E3A292BDE525A22EB7ADE4 /* Voice_iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 67CE95EFE28F976D1CF1A59A /* Build configuration list for PBXNativeTarget "Voice_iOS" */;
@@ -274,6 +318,9 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
1C8CC2859E99A4AC83FC6374 = {
TestTargetID = 57E3A292BDE525A22EB7ADE4;
};
57E3A292BDE525A22EB7ADE4 = {
ProvisioningStyle = Automatic;
};
@@ -296,8 +343,9 @@
projectDirPath = "";
projectRoot = "";
targets = (
1385EEF29189F331F2634382 /* VoiceTests_iOS */,
57E3A292BDE525A22EB7ADE4 /* Voice_iOS */,
1385EEF29189F331F2634382 /* VoiceTests_iOS */,
1C8CC2859E99A4AC83FC6374 /* VoiceUITests */,
);
};
/* End PBXProject section */
@@ -332,12 +380,22 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
889523F0856C91F5A5E8FD41 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
70E4B860147494D9657E8C01 /* VoiceLiveTests.swift in Sources */,
57E6476135CE30495E02D723 /* VoiceUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
C735E25A3F84D701AEBFC3F1 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FC696C6E74057D4C93E6DA67 /* ConversationStateTests.swift in Sources */,
F26037AD028ED105E127CBD3 /* MediaAPITests.swift in Sources */,
AF719B1668ADA929AA0237BF /* MediaPlaybackTests.swift in Sources */,
72F3B4AEC214521015200583 /* MediaReconcileTests.swift in Sources */,
B94FAFA796A9AF6011B03DEC /* PinnedMediaResourceLoaderTests.swift in Sources */,
BCAB602C722D74F6C96C5E36 /* ServerReplacementCoordinatorTests.swift in Sources */,
@@ -353,6 +411,11 @@
target = 57E3A292BDE525A22EB7ADE4 /* Voice_iOS */;
targetProxy = 1C0045D170F971FC571D0E54 /* PBXContainerItemProxy */;
};
A506145EF5A1B3978391C33C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 57E3A292BDE525A22EB7ADE4 /* Voice_iOS */;
targetProxy = ED7A5BB58354A8C9A5994257 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
@@ -438,6 +501,24 @@
};
name = Debug;
};
452ED10E7C45C3EDEDC466B5 /* 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 = dev.shane.voice.uitests;
SDKROOT = iphoneos;
SWIFT_VERSION = 5.9;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = Voice_iOS;
};
name = Release;
};
8CD9F2FF6EF1EB5438545350 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -557,9 +638,36 @@
};
name = Release;
};
EEDD1CAF56A9063A94459A9B /* 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 = dev.shane.voice.uitests;
SDKROOT = iphoneos;
SWIFT_VERSION = 5.9;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = Voice_iOS;
};
name = Debug;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
286F46F3E4A225D8ABDCEA48 /* Build configuration list for PBXNativeTarget "VoiceUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
EEDD1CAF56A9063A94459A9B /* Debug */,
452ED10E7C45C3EDEDC466B5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
67CE95EFE28F976D1CF1A59A /* Build configuration list for PBXNativeTarget "Voice_iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (