From 2e341897b91f0b98904bd712ad5166e927004755 Mon Sep 17 00:00:00 2001 From: ahiipsa Date: Fri, 10 Nov 2023 21:07:05 +0400 Subject: [PATCH 01/12] Fix testShouldAttachPartOfAMessage test --- voice/voice-ai/xTests/OpenAIUtilsTests.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/voice/voice-ai/xTests/OpenAIUtilsTests.swift b/voice/voice-ai/xTests/OpenAIUtilsTests.swift index 72bd5b3d4..1b3976583 100644 --- a/voice/voice-ai/xTests/OpenAIUtilsTests.swift +++ b/voice/voice-ai/xTests/OpenAIUtilsTests.swift @@ -33,10 +33,11 @@ final class OpenAIUtilsTests: XCTestCase { Voice_AI.Message(role: "assistant", content: "Please adhere to the community guidelines."), ]; - let limitedConversation = Voice_AI.OpenAIUtils.limitConversationContext(conversation, charactersCount: 43) + let limitedConversation = Voice_AI.OpenAIUtils.limitConversationContext(conversation, charactersCount: 52) XCTAssertEqual(limitedConversation.count, 2, "conversation should contain 2 messages") - + XCTAssertEqual(limitedConversation[0].content, "confirmed.") + XCTAssertEqual(limitedConversation[1].content, "Please adhere to the community guidelines.") } func testShouldReturnAllMessages() throws { From 7e7df8dbf1df0f25d65ced499887ad16a9a841b0 Mon Sep 17 00:00:00 2001 From: ahiipsa Date: Fri, 10 Nov 2023 21:10:53 +0400 Subject: [PATCH 02/12] Fix testShouldReturnAllMessages test --- voice/voice-ai/xTests/OpenAIUtilsTests.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/voice/voice-ai/xTests/OpenAIUtilsTests.swift b/voice/voice-ai/xTests/OpenAIUtilsTests.swift index 1b3976583..7f923d24d 100644 --- a/voice/voice-ai/xTests/OpenAIUtilsTests.swift +++ b/voice/voice-ai/xTests/OpenAIUtilsTests.swift @@ -50,7 +50,9 @@ final class OpenAIUtilsTests: XCTestCase { let limitedConversation = Voice_AI.OpenAIUtils.limitConversationContext(conversation, charactersCount: 100) XCTAssertEqual(limitedConversation.count, 3, "conversation should contain all messages") - + XCTAssertEqual(limitedConversation[0].content, "Welcome to the platform!") + XCTAssertEqual(limitedConversation[1].content, "Your order has been confirmed.") + XCTAssertEqual(limitedConversation[3].content, "Please adhere to the community guidelines.") } func testShouldFilterEmptyConversation() throws { @@ -58,7 +60,6 @@ final class OpenAIUtilsTests: XCTestCase { let limitedEmpty = Voice_AI.OpenAIUtils.limitConversationContext(emptyConversation, charactersCount: 100) - XCTAssertEqual(limitedEmpty.count, 0, "conversation should contain all messages") } From bd40d7bb91de2e783cffa92ae4abe1187b8ddace Mon Sep 17 00:00:00 2001 From: ahiipsa Date: Fri, 10 Nov 2023 21:12:13 +0400 Subject: [PATCH 03/12] Added shouldPreserveOrderOfMessages test --- voice/voice-ai/xTests/OpenAIUtilsTests.swift | 25 ++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/voice/voice-ai/xTests/OpenAIUtilsTests.swift b/voice/voice-ai/xTests/OpenAIUtilsTests.swift index 7f923d24d..11d9e1339 100644 --- a/voice/voice-ai/xTests/OpenAIUtilsTests.swift +++ b/voice/voice-ai/xTests/OpenAIUtilsTests.swift @@ -52,7 +52,7 @@ final class OpenAIUtilsTests: XCTestCase { XCTAssertEqual(limitedConversation.count, 3, "conversation should contain all messages") XCTAssertEqual(limitedConversation[0].content, "Welcome to the platform!") XCTAssertEqual(limitedConversation[1].content, "Your order has been confirmed.") - XCTAssertEqual(limitedConversation[3].content, "Please adhere to the community guidelines.") + XCTAssertEqual(limitedConversation[2].content, "Please adhere to the community guidelines.") } func testShouldFilterEmptyConversation() throws { @@ -64,20 +64,31 @@ final class OpenAIUtilsTests: XCTestCase { } func testShouldFilterEmptyMessages() throws { - let emptyConversation: [Voice_AI.Message] = [ + let conversation: [Voice_AI.Message] = [ Voice_AI.Message(role: "assistant", content: ""), Voice_AI.Message(role: "assistant", content: "Please adhere to the community guidelines."), Voice_AI.Message(role: "assistant", content: ""), Voice_AI.Message(role: "assistant", content: nil), ]; - let limitedEmpty = Voice_AI.OpenAIUtils.limitConversationContext(emptyConversation, charactersCount: 100) - + let cleanConversation = Voice_AI.OpenAIUtils.limitConversationContext(conversation, charactersCount: 100) - XCTAssertEqual(limitedEmpty.count, 1, "conversation should contain all messages") + XCTAssertEqual(cleanConversation.count, 1) + XCTAssertEqual(cleanConversation[0].content, "Please adhere to the community guidelines.") } - - + func shouldPreserveOrderOfMessages() throws { + let conversation: [Voice_AI.Message] = [ + Voice_AI.Message(role: "assistant", content: "one"), + Voice_AI.Message(role: "assistant", content: "two"), + Voice_AI.Message(role: "assistant", content: "three"), + ]; + + let limitedc = Voice_AI.OpenAIUtils.limitConversationContext(conversation, charactersCount: 100) + + XCTAssertEqual(limitedc[0].content, "one") + XCTAssertEqual(limitedc[1].content, "two") + XCTAssertEqual(limitedc[3].content, "three") + } } From 83c02be0078f6f69597ecb884dd2f3ff78673899 Mon Sep 17 00:00:00 2001 From: ahiipsa Date: Fri, 10 Nov 2023 23:16:21 +0400 Subject: [PATCH 04/12] sergey: daily update --- progress/sergey-karasev.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progress/sergey-karasev.md b/progress/sergey-karasev.md index 7b7abbe9b..7898efa2d 100644 --- a/progress/sergey-karasev.md +++ b/progress/sergey-karasev.md @@ -1,4 +1,4 @@ -2023-11-10 Fri: Working on [truncating the accumulating context to a maximum of 512 characters](https://github.com/harmony-one/x/pull/159) and adding unit tests for the "limiter" +2023-11-10 Fri: Working on [truncating the accumulating context to a maximum of 512 characters](https://github.com/harmony-one/x/pull/159) and adding unit tests for the "limiter", [added the same logic to harmony one bot](https://github.com/harmony-one/HarmonyOneBot/pull/343) 2023-11-09 Thu: I have added [a window to display a link to the application](https://github.com/harmony-one/x/pull/142) (share feature) after the user taps "new session" button for the seventh time, also [added a throttler](https://github.com/harmony-one/x/pull/144) to the reset session function (in order not to interrupt the greeting). Clarified the code regarding tap-to-speak and [fixed the play-pause button state](https://github.com/harmony-one/x/pull/149) From f44bb1f0d9e1d105f032f537149747a6518ab0c0 Mon Sep 17 00:00:00 2001 From: potvik Date: Fri, 10 Nov 2023 22:53:36 +0300 Subject: [PATCH 05/12] Ignore button long press --- voice/voice-ai/x/Actions/GridButton.swift | 64 +++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/voice/voice-ai/x/Actions/GridButton.swift b/voice/voice-ai/x/Actions/GridButton.swift index 8fc362517..1f840df5a 100644 --- a/voice/voice-ai/x/Actions/GridButton.swift +++ b/voice/voice-ai/x/Actions/GridButton.swift @@ -7,6 +7,10 @@ struct GridButton: View { var foregroundColor: Color var active: Bool = false var isPressed: Bool = false + + @State private var timeAtPress = Date() + @State private var isDragActive = false + var image: String? = nil var colorExternalManage: Bool = false var action: () -> Void @@ -14,10 +18,63 @@ struct GridButton: View { let imageTextSpacing: CGFloat = 40 @Environment(\.verticalSizeClass) var verticalSizeClass @Environment(\.horizontalSizeClass) var horizontalSizeClass - + + func onDragEnded() { + self.isDragActive = false + } + + func onDragStart() { + if(!self.isDragActive) { + self.isDragActive = true + + self.timeAtPress = Date() + } + } + var body: some View { - Button(action: { - action() + let drag = DragGesture(minimumDistance: 0) + .onChanged({ drag in + self.onDragStart() + }) + .onEnded({ drag in + self.onDragEnded() + }) + + let hackyPinch = MagnificationGesture(minimumScaleDelta: 0.0) + .onChanged({ delta in + self.onDragEnded() + }) + .onEnded({ delta in + self.onDragEnded() + }) + + let hackyRotation = RotationGesture(minimumAngleDelta: Angle(degrees: 0.0)) + .onChanged({ delta in + self.onDragEnded() + }) + .onEnded({ delta in + self.onDragEnded() + }) + + let hackyPress = LongPressGesture(minimumDuration: 0.0, maximumDistance: 0.0) + .onChanged({ _ in + self.onDragEnded() + }) + .onEnded({ delta in + self.onDragEnded() + }) + + let combinedGesture = drag + .simultaneously(with: hackyPinch) + .simultaneously(with: hackyRotation) + .exclusively(before: hackyPress) + + return Button(action: { + let elapsed = Date().timeIntervalSince(self.timeAtPress) + + if(elapsed < 3) { + action() + } }) { VStack(spacing: imageTextSpacing) { Image(pressEffectButtonImage()) // button.image) @@ -34,6 +91,7 @@ struct GridButton: View { .alignmentGuide(.bottom) { _ in 0.5 } } .buttonStyle(PressEffectButtonStyle(theme: currentTheme, active: active, invertColors: button.action == .speak && button.pressedLabel == nil)) + .simultaneousGesture(combinedGesture) } private func pressEffectButtonImage() -> String { From 7c52aff7440337d02d53abd5d983a14d96b8cbd1 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Fri, 10 Nov 2023 22:55:12 +0300 Subject: [PATCH 06/12] Update yuriy-menkov.md --- progress/yuriy-menkov.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progress/yuriy-menkov.md b/progress/yuriy-menkov.md index d38638e38..f0390e2b7 100644 --- a/progress/yuriy-menkov.md +++ b/progress/yuriy-menkov.md @@ -1,4 +1,4 @@ -2023-11-10 Fri: Resolved issue with long press actions (Ensure long press actions do not trigger tap actions vice versa). Working on tracking active using app time and showing suggestions to share with friends and share on Twitter. +2023-11-10 Fri: [Resolved](https://github.com/harmony-one/x/pull/161) issue with long press actions (Ensure long press actions do not trigger tap actions vice versa). Working on tracking active using app time and showing suggestions to share with friends and share on Twitter. 2023-11-9 Thu: [Added](https://github.com/harmony-one/x/pull/148/files) the ability to repeat the current session to resolve repeat bug (When hitting "Repeat" during the first stream, it says "Hey" while the stream is going. It should just start again from the beginning instead.) From 8d33cd197fbcdf86a4f6db6c86bc3774006252c8 Mon Sep 17 00:00:00 2001 From: fegloff Date: Fri, 10 Nov 2023 15:17:12 -0500 Subject: [PATCH 07/12] Add Persistence and OpenAIResponse unit test --- .../Voice AI.xcodeproj/project.pbxproj | 12 +++-- voice/voice-ai/xTests/IAPTests.swift | 21 ++++++++ ...geContextTests.swift => OpenAITests.swift} | 53 +++++++++++++++++++ 3 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 voice/voice-ai/xTests/IAPTests.swift rename voice/voice-ai/xTests/{MessageContextTests.swift => OpenAITests.swift} (57%) diff --git a/voice/voice-ai/Voice AI.xcodeproj/project.pbxproj b/voice/voice-ai/Voice AI.xcodeproj/project.pbxproj index 80c6d20e3..12ff5963a 100644 --- a/voice/voice-ai/Voice AI.xcodeproj/project.pbxproj +++ b/voice/voice-ai/Voice AI.xcodeproj/project.pbxproj @@ -91,7 +91,8 @@ B36367562AFC69F2000409FC /* RandomFactTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31CDCE62AFC644D00AB39EE /* RandomFactTests.swift */; }; B36367572AFC6A04000409FC /* MockGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F1150D2AF825F700BC191C /* MockGenerator.swift */; }; B38ADB9D2AFE0A0F006BDC93 /* AppConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = F72708412AFD672E000DE81D /* AppConfig.plist */; }; - B3C083B32AF1BADB0069232C /* MessageContextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C083B22AF1BADB0069232C /* MessageContextTests.swift */; }; + B3C083B32AF1BADB0069232C /* OpenAITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C083B22AF1BADB0069232C /* OpenAITests.swift */; }; + B3C0FE4B2AFEC68800B712E7 /* IAPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C0FE4A2AFEC68800B712E7 /* IAPTests.swift */; }; B3D0A3442AF29B1B00E8B0DA /* MockNetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0A3432AF29B1B00E8B0DA /* MockNetworkService.swift */; }; B91681282AFBA3A80006E463 /* ReviewRequester.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9B331A02AFB803500F6A9C9 /* ReviewRequester.swift */; }; B919B7BF2AF3C3F7006335D1 /* AudioEngineAndSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B919B7BE2AF3C3F7006335D1 /* AudioEngineAndSessionTests.swift */; }; @@ -232,7 +233,8 @@ B346DF772AF562020023FC87 /* ThemeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeManager.swift; sourceTree = ""; }; B3B3BA792AFB40A300D8F8C6 /* Theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; B3C083B12AF1948D0069232C /* OpenAIService.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = OpenAIService.xctestplan; path = x/OpenAIService.xctestplan; sourceTree = SOURCE_ROOT; }; - B3C083B22AF1BADB0069232C /* MessageContextTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageContextTests.swift; sourceTree = ""; }; + B3C083B22AF1BADB0069232C /* OpenAITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenAITests.swift; sourceTree = ""; }; + B3C0FE4A2AFEC68800B712E7 /* IAPTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IAPTests.swift; sourceTree = ""; }; B3D0A3432AF29B1B00E8B0DA /* MockNetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockNetworkService.swift; sourceTree = ""; }; B919B7BE2AF3C3F7006335D1 /* AudioEngineAndSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioEngineAndSessionTests.swift; sourceTree = ""; }; B930AADC2ADE2DE5009F9F8C /* Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; @@ -596,12 +598,13 @@ CD0D134C2ADA73B400031EDD /* ActionHandlerTests.swift */, B9C4A81E2AEE594900327529 /* MockSpeechRecognition.swift */, B9C4A8202AEE612A00327529 /* MockTextToSpeechConverter.swift */, - B3C083B22AF1BADB0069232C /* MessageContextTests.swift */, + B3C083B22AF1BADB0069232C /* OpenAITests.swift */, B3D0A3432AF29B1B00E8B0DA /* MockNetworkService.swift */, B919B7BE2AF3C3F7006335D1 /* AudioEngineAndSessionTests.swift */, F7F1150D2AF825F700BC191C /* MockGenerator.swift */, B31CDCE62AFC644D00AB39EE /* RandomFactTests.swift */, 6E35CB4A2AFE86130004D2D2 /* OpenAIUtilsTests.swift */, + B3C0FE4A2AFEC68800B712E7 /* IAPTests.swift */, ); path = xTests; sourceTree = ""; @@ -1002,12 +1005,13 @@ 6E35CB4C2AFE86130004D2D2 /* OpenAIUtilsTests.swift in Sources */, B31CDCE52AFC565800AB39EE /* Theme.swift in Sources */, B9C4A82A2AEE95C900327529 /* SpeechRecognition.swift in Sources */, + B3C0FE4B2AFEC68800B712E7 /* IAPTests.swift in Sources */, B9C4A8212AEE612A00327529 /* MockTextToSpeechConverter.swift in Sources */, F7C16FE82AFC576000D11529 /* ThemeManager.swift in Sources */, F7F115072AF8173300BC191C /* PermissionTests.swift in Sources */, 6E53AF4C2AF012760022A8F2 /* GridButton.swift in Sources */, B9C4A82F2AEE96AE00327529 /* Choices.swift in Sources */, - B3C083B32AF1BADB0069232C /* MessageContextTests.swift in Sources */, + B3C083B32AF1BADB0069232C /* OpenAITests.swift in Sources */, B9C4A82C2AEE967200327529 /* AudioPlayer.swift in Sources */, 6E53AF512AF012A40022A8F2 /* Color.swift in Sources */, ); diff --git a/voice/voice-ai/xTests/IAPTests.swift b/voice/voice-ai/xTests/IAPTests.swift new file mode 100644 index 000000000..85485ba4f --- /dev/null +++ b/voice/voice-ai/xTests/IAPTests.swift @@ -0,0 +1,21 @@ +import XCTest + +class PersistenceTests: XCTestCase { + + func testIncreaseConsumablesCount() { + // Given + let initialCreditsCount = UserDefaults.standard.integer(forKey: Persistence.creditsCountKey) + let creditsAmount = 5 + + // When + Persistence.increaseConsumablesCount(creditsAmount: creditsAmount) + + // Then + let updatedCreditsCount = UserDefaults.standard.integer(forKey: Persistence.creditsCountKey) + XCTAssertEqual(updatedCreditsCount, initialCreditsCount + creditsAmount) + } + + // Add more test cases as needed + +} + diff --git a/voice/voice-ai/xTests/MessageContextTests.swift b/voice/voice-ai/xTests/OpenAITests.swift similarity index 57% rename from voice/voice-ai/xTests/MessageContextTests.swift rename to voice/voice-ai/xTests/OpenAITests.swift index cdfa9e4cd..4ad41abaf 100644 --- a/voice/voice-ai/xTests/MessageContextTests.swift +++ b/voice/voice-ai/xTests/OpenAITests.swift @@ -24,6 +24,59 @@ class OpenAIServiceTests: XCTestCase { } } +class OpenAIResponseTests: XCTestCase { + + func testInit() throws { + // Given + let json = """ + { + "id": "123", + "object": "response", + "created": 1635790771, + "model": "gpt-3.5-turbo", + "choices": [ + { + "message": { + "role": "user", + "content": "Hi" + }, + "finish_reason": "OK", + "index": 1 + + }, + ], + "usage": { + "prompt_tokens": 10, + "completion_tokens": 50, + "total_tokens": 60 + } + } + """ + + // When + let jsonData = Data(json.utf8) + let response = try JSONDecoder().decode(OpenAIResponse.self, from: jsonData) + + // Then + XCTAssertEqual(response.id, "123") + XCTAssertEqual(response.object, "response") + XCTAssertEqual(response.created, 1635790771) + XCTAssertEqual(response.model, "gpt-3.5-turbo") + + XCTAssertEqual(response.choices?.count, 1) + XCTAssertEqual(response.choices?[0].message?.role, "user") + XCTAssertEqual(response.choices?[0].message?.content, "Hi") + + XCTAssertNotNil(response.usage) + XCTAssertEqual(response.usage?.prompt_tokens, 10) + XCTAssertEqual(response.usage?.completion_tokens, 50) + XCTAssertEqual(response.usage?.total_tokens, 60) + } + + // Add more test cases as needed + +} + class MessageTests: XCTestCase { func testInitialization() { // Test initializing a Message instance From 0d644ceb30b7c394638a856ce5df1f18b80fb650 Mon Sep 17 00:00:00 2001 From: Theo Fandrich <139378766+theofandrich@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:45:20 -0800 Subject: [PATCH 08/12] Create amanda-bancroft.md --- progress/amanda-bancroft.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 progress/amanda-bancroft.md diff --git a/progress/amanda-bancroft.md b/progress/amanda-bancroft.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/progress/amanda-bancroft.md @@ -0,0 +1 @@ + From 22b15fea7b50f5eb5fb15a8b19c74f2101cecf1f Mon Sep 17 00:00:00 2001 From: Theo Fandrich <139378766+theofandrich@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:47:00 -0800 Subject: [PATCH 09/12] Update amanda-bancroft.md --- progress/amanda-bancroft.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/progress/amanda-bancroft.md b/progress/amanda-bancroft.md index 8b1378917..7e1d0537d 100644 --- a/progress/amanda-bancroft.md +++ b/progress/amanda-bancroft.md @@ -1 +1,6 @@ +2023-11-13 Mon: + +--- + +2023-11-10 Fri: From c58b2260fae69511edbd27e632de2480bdf2f3f1 Mon Sep 17 00:00:00 2001 From: Theo Fandrich <139378766+theofandrich@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:29:57 -0800 Subject: [PATCH 10/12] Update theo-fandrich.md --- progress/theo-fandrich.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/progress/theo-fandrich.md b/progress/theo-fandrich.md index 592dd66cf..7260928a2 100644 --- a/progress/theo-fandrich.md +++ b/progress/theo-fandrich.md @@ -1,3 +1,9 @@ +2023-11-10 Fri: Made a 9am push that integrated some new support for in App purchases coming soon. + +2023-11-09 Thu: Made a huge push for 3 initial releases to the app store today. Download voice AI on the appstore [here](x.country/app). + +2023-11-08 Wed: Worked on engineers to fix bugs regarding UI inconsistencies and conducted product testing for rate limiting. + 2023-11-07 Tue: Product tested, listed out bugs, delegated fixes to engineers, submitted to App store connect. 2023-11-06 Mon: Worked on preparing app store submission. Calculated pricing for Voice AI and documented how the backend and iOS app should communicate to support the bahavior. The updated UI will be implemented by Tuesday morning. From a324e1b4bcbea563b403989298d80d62b4d1dc8c Mon Sep 17 00:00:00 2001 From: Theo Fandrich <139378766+theofandrich@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:31:13 -0800 Subject: [PATCH 11/12] Update theo-fandrich.md --- progress/theo-fandrich.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progress/theo-fandrich.md b/progress/theo-fandrich.md index 7260928a2..a2cbabbd3 100644 --- a/progress/theo-fandrich.md +++ b/progress/theo-fandrich.md @@ -1,4 +1,4 @@ -2023-11-10 Fri: Made a 9am push that integrated some new support for in App purchases coming soon. +2023-11-10 Fri: Made a 9am push that integrated some new support for in App purchases coming soon. Working on few small bugs still in place such has long press triggering tap functionality, overlap of "Tap to Speak" & "Press & Hold" functionality, and will improve logic for free credits. 2023-11-09 Thu: Made a huge push for 3 initial releases to the app store today. Download voice AI on the appstore [here](x.country/app). From 76de197eac3f0d4fba615e3f679bd101897af43e Mon Sep 17 00:00:00 2001 From: Theo Fandrich <139378766+theofandrich@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:31:45 -0800 Subject: [PATCH 12/12] Update theo-fandrich.md --- progress/theo-fandrich.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/progress/theo-fandrich.md b/progress/theo-fandrich.md index a2cbabbd3..c0fc6c4ea 100644 --- a/progress/theo-fandrich.md +++ b/progress/theo-fandrich.md @@ -1,10 +1,10 @@ 2023-11-10 Fri: Made a 9am push that integrated some new support for in App purchases coming soon. Working on few small bugs still in place such has long press triggering tap functionality, overlap of "Tap to Speak" & "Press & Hold" functionality, and will improve logic for free credits. -2023-11-09 Thu: Made a huge push for 3 initial releases to the app store today. Download voice AI on the appstore [here](x.country/app). +2023-11-09 Thu: Made a huge push for 3 initial releases to the app store today. Download voice AI on the App Store [here](x.country/app). 2023-11-08 Wed: Worked on engineers to fix bugs regarding UI inconsistencies and conducted product testing for rate limiting. -2023-11-07 Tue: Product tested, listed out bugs, delegated fixes to engineers, submitted to App store connect. +2023-11-07 Tue: Product tested, listed out bugs, delegated fixes to engineers, submitted to App Store connect. 2023-11-06 Mon: Worked on preparing app store submission. Calculated pricing for Voice AI and documented how the backend and iOS app should communicate to support the bahavior. The updated UI will be implemented by Tuesday morning.