Skip to content

[codex] save KeyScribe feature branch - #36

Merged
manikv12 merged 1 commit into
mainfrom
feat/assistant-chat-plan-agentic-computer-use
Jul 2, 2026
Merged

manikv12 merged 1 commit into
mainfrom
feat/assistant-chat-plan-agentic-computer-use

Conversation

@manikv12

@manikv12 manikv12 commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Summary

Open a draft PR for the existing KeyScribe feature branch so it is easy to find and preserve before moving project folders.

Notes

  • The local branch was clean and already pushed to GitHub.
  • Opened as a draft PR for tracking and safekeeping.

Validation

Not run. No new local changes were committed for this PR.

@manikv12
manikv12 marked this pull request as ready for review July 2, 2026 22:55
Copilot AI review requested due to automatic review settings July 2, 2026 22:55
@manikv12
manikv12 merged commit 4f6e97d into main Jul 2, 2026
1 check passed
@manikv12
manikv12 deleted the feat/assistant-chat-plan-agentic-computer-use branch July 2, 2026 22:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This draft PR preserves a feature branch that substantially rebrands the app from KeyScribe to Open Assist, updates project packaging/metadata, and introduces several new support modules and assistant-related capabilities (browser profile selection, permission helpers, insertion/dictation utilities, and memory/agent-state improvements).

Changes:

  • Rebrand across UI strings, docs/wiki, scripts, and project metadata (bundle ID, package/product names, repo links).
  • Add browser automation/profile selection UX plus a local Chrome/Brave profile discovery manager.
  • Add/extend assistant + core-logic modules (permission snapshotting, dictation/insertion utilities, memory storage guide injection, agent-state persistence service) and update tests/smoke-test scripts accordingly.

Reviewed changes

Copilot reviewed 95 out of 141 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Wiki/Why-OpenAssist.md Updates wiki branding/content from KeyScribe to Open Assist.
Wiki/Troubleshooting.md Rebrands troubleshooting steps and issue links.
Wiki/Quick-Start.md Rebrands quick start steps and repo links.
Wiki/Privacy-First-Design.md Rebrands privacy design language.
Wiki/Home.md Rebrands wiki home and updates logo + repo links.
Wiki/AI-Rewrite-and-Context.md Rebrands AI rewrite docs and updates Settings path text.
Wiki/_Sidebar.md Rebrands sidebar and updates repo links.
Wiki/_Footer.md Updates footer issue link to Open Assist.
Tests/OpenAssistTests/TranscriberStatusInterpreterTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/SettingsStoreCrossIDEBootstrapTests.swift Rebrands defaults keys and testable import.
Tests/OpenAssistTests/FeatureFlagsCrossIDEConversationSharingTests.swift Rebrands defaults/env keys and testable import.
Tests/OpenAssistTests/ConversationTagInferenceServiceCrossIDESharingTests.swift Rebrands project keys/labels and testable import.
Tests/OpenAssistTests/ConversationMemoryArchivePromotionTests.swift Rebrands keys/labels used in promotion/memory tests.
Tests/OpenAssistTests/CodexInstallSupportTests.swift Rebrands install guidance text and temp paths.
Tests/OpenAssistTests/CodexCommandRunnerTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/CodexCloudTaskTrackerTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/ClaudeHookInstallerTests.swift Rebrands tests related to Claude hook install/migration.
Tests/OpenAssistTests/AutomationAPIServerTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AutomationAPIModelsTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AssistantVoiceDraftRefinementServiceTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AssistantTimelineGroupingTests.swift Rebrands path expectations in timeline formatting tests.
Tests/OpenAssistTests/AssistantThreadMemoryServiceTests.swift Rebrands expected memory document strings.
Tests/OpenAssistTests/AssistantTextRenderingPolicyTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AssistantSessionSummaryTests.swift Rebrands assistant session source/title labeling.
Tests/OpenAssistTests/AssistantSessionInteractionTests.swift Rebrands command strings used in interaction tests.
Tests/OpenAssistTests/AssistantPermissionCardStateTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AssistantOrbHUDModelTests.swift Updates testable import to OpenAssist.
Tests/OpenAssistTests/AssistantModePolicyTests.swift Rebrands command strings used for safety classification tests.
Tests/OpenAssistTests/AssistantMemorySuggestionServiceTests.swift Rebrands bundle IDs/app names and test fixture strings.
Tests/OpenAssistTests/AssistantMemoryRetrievalServiceTests.swift Adds coverage for memory storage guide injection; rebrands paths/labels.
Tests/OpenAssistTests/AssistantComputerUseServiceTests.swift Updates testable import to OpenAssist.
Sources/OpenAssist/Views/StatusBarPopoverView.swift Rebrands visible UI labels (“Quit…”, app name).
Sources/OpenAssist/Views/PromptRewriteHUD.swift Rebrands inline comment text.
Sources/OpenAssist/Views/PermissionOnboardingView.swift Rebrands onboarding copy.
Sources/OpenAssist/Views/BrowserProfilePickerSheet.swift Adds a sheet UI to pick a browser profile when needed.
Sources/OpenAssist/Views/BrowserAutomationSettingsView.swift Adds settings UI to enable browser automation + pick profile.
Sources/OpenAssist/Views/AppLogoView.swift Rebrands bundle identifiers and resource lookup paths.
Sources/OpenAssist/Views/AIMemoryStudioView.swift Rebrands UI strings and notification names for settings/assistant entrypoints.
Sources/OpenAssist/Support/TranscriberStatusInterpreter.swift Adds transcriber status interpretation (persistent vs transient failure).
Sources/OpenAssist/Support/ShortcutValidation.swift Adds shortcut display + validation utilities used by app/UI.
Sources/OpenAssist/Support/PermissionCenter.swift Adds centralized permission snapshot/request helpers.
Sources/OpenAssist/Support/FeatureFlags.swift Rebrands feature flag env/defaults keys to OPENASSIST_* namespace.
Sources/OpenAssist/Support/DictationUIStatus.swift Adds typed UI status model for dictation state text.
Sources/OpenAssist/Support/AppWindowCoordinator.swift Rebrands window titles (settings/onboarding/assistant).
Sources/OpenAssist/Services/WhisperTranscriber.swift Rebrands dispatch queue labels.
Sources/OpenAssist/Services/WhisperModelManager.swift Rebrands user-agent and Application Support temp paths/dirs.
Sources/OpenAssist/Services/WhisperModelCatalog.swift Adds a curated whisper.cpp model catalog with metadata + URLs.
Sources/OpenAssist/Services/TranscriptHistoryStore.swift Rebrands UserDefaults persistence key.
Sources/OpenAssist/Services/TextInserter.swift Rebrands logging subsystem, marker type, debug log path, env keys.
Sources/OpenAssist/Services/TextCleanup.swift Adds text normalization/cleanup pipeline with modes.
Sources/OpenAssist/Services/ShortcutValidationRules.swift Adds a simplified shortcut validation helper used by scripts/smoke tests.
Sources/OpenAssist/Services/RecognitionTuning.swift Adds transcript scoring, phrase parsing, and whisper prompt helpers.
Sources/OpenAssist/Services/PromptRewriteService.swift Rebrands defaults keys, env keys, and user-facing error copy.
Sources/OpenAssist/Services/PromptRewriteProviderOAuthService.swift Rebrands keychain service identifier.
Sources/OpenAssist/Services/PromptRewriteModelCatalogService.swift Rebrands cache keys and local runtime error copy + timeout defaults key.
Sources/OpenAssist/Services/PromptRewriteConversationStore.swift Rebrands env keys and project-label prefix filters.
Sources/OpenAssist/Services/PostInsertCorrectionMonitor.swift Adds post-insert monitoring to detect user corrections via AX + global events.
Sources/OpenAssist/Services/MicrophoneManager.swift Adds microphone discovery and default-input device recovery utilities.
Sources/OpenAssist/Services/MemoryIndexingSettingsService.swift Rebrands notifications/logger subsystem identifiers.
Sources/OpenAssist/Services/Memory/MemorySQLiteStore.swift Rebrands fallback DB naming, Application Support paths, display labels, defaults.
Sources/OpenAssist/Services/Memory/MemoryRewriteRetrievalService.swift Rebrands user-feedback label strings.
Sources/OpenAssist/Services/Memory/MemoryRewriteExtractionProvider.swift Rebrands warning strings and defaults/env key usage.
Sources/OpenAssist/Services/Memory/MemoryIndexingService.swift Rebrands logger subsystem identifier.
Sources/OpenAssist/Services/Memory/MemoryEntryExplanationService.swift Rebrands defaults/env keys and keychain service identifiers.
Sources/OpenAssist/Services/Memory/ConversationAgentStateService.swift Adds an actor-backed service to persist/fetch/clear agent state records.
Sources/OpenAssist/Services/LocalAIRuntimeManager.swift Rebrands temp paths and Application Support directories.
Sources/OpenAssist/Services/LocalAIModelCatalog.swift Adds curated local AI model options + merging logic.
Sources/OpenAssist/Services/InsertionRetryPolicy.swift Adds a centralized retry plan policy for insertion results.
Sources/OpenAssist/Services/InsertionDiagnostics.swift Rebrands diagnostic defaults/env keys and log path/queue label.
Sources/OpenAssist/Services/InsertionDecisionModel.swift Adds a decision model describing which insertion path was used.
Sources/OpenAssist/Services/DictationInputModeStateMachine.swift Adds a small state machine for idle/hold-to-talk/continuous mode.
Sources/OpenAssist/Services/CrashReporter.swift Rebrands crash log directory + headers and logging subsystem.
Sources/OpenAssist/Services/ConversationTagInferenceService.swift Rebrands workspace bundle IDs and aliasing for canonical project keys.
Sources/OpenAssist/Services/ConversationContextResolverV2.swift Adds a wrapper-style resolver exposing context resolution bundles and mapping candidates.
Sources/OpenAssist/Services/CloudTranscriptionModelCatalogService.swift Rebrands cache keys and timeout defaults keys.
Sources/OpenAssist/Services/CloudTranscriber.swift Rebrands dispatch queue label.
Sources/OpenAssist/Services/ClaudeHookInstaller.swift Rebrands user-facing strings, errors, and backup filename conventions.
Sources/OpenAssist/Services/BrowserProfileManager.swift Adds Chrome/Brave profile discovery by parsing “Local State”.
Sources/OpenAssist/Services/AutomationAPIServer.swift Rebrands dispatch queue label.
Sources/OpenAssist/Services/AutomationAPICoordinator.swift Rebrands notification IDs/userInfo keys and user-facing strings.
Sources/OpenAssist/Services/AppleSpeechTranscriber.swift Rebrands contextual bias phrase list entry.
Sources/OpenAssist/Services/AdaptiveCorrectionStore.swift Rebrands legacy key and persistence paths for learned corrections.
Sources/OpenAssist/Assistant/CodexSessionCatalog.swift Rebrands session originator handling + reorganizes prompt extraction.
Sources/OpenAssist/Assistant/CodexInstallSupport.swift Rebrands install guidance strings.
Sources/OpenAssist/Assistant/CodexAssistantRuntime.swift Rebrands status messages and client identity strings.
Sources/OpenAssist/Assistant/AssistantWindowView.swift Rebrands alerts + notification names; adds browser profile picker sheet wiring.
Sources/OpenAssist/Assistant/AssistantVoiceDraftRefinementService.swift Adds AI-assisted draft refinement service for voice transcripts.
Sources/OpenAssist/Assistant/AssistantTimelineModels.swift Rebrands Application Support path for assistant activity storage.
Sources/OpenAssist/Assistant/AssistantThreadMemoryService.swift Rebrands Application Support path for assistant thread memory.
Sources/OpenAssist/Assistant/AssistantPushToTalkControls.swift Adds a push-to-talk mic control with accessibility labels/values.
Sources/OpenAssist/Assistant/AssistantOrbHUD.swift Rebrands notification names and menu item titles.
Sources/OpenAssist/Assistant/AssistantModePicker.swift Adds a mode picker UI component for assistant interaction modes.
Sources/OpenAssist/Assistant/AssistantModels.swift Rebrands labels/messages and originator filtering to Open Assist.
Sources/OpenAssist/Assistant/AssistantMemoryRetrievalService.swift Injects memory storage guide into assistant context; rebrands identity/app fields.
Sources/OpenAssist/Assistant/AssistantComputerUseService.swift Rebrands user-facing permission copy and env key names.
Sources/OpenAssist/Assistant/AssistantComposerBridge.swift Adds a bridge to insert text directly into the active assistant composer NSTextView.
Sources/OpenAssist/Assistant/AssistantClipboard.swift Adds helper to copy assistant text to pasteboard.
Sources/OpenAssist/Assistant/AssistantBetaWindowModels.swift Rebrands assistant beta banner/orb copy.
Sources/OpenAssist/Assistant/AssistantAttachmentSupport.swift Adds file picker/drop/pasteboard attachment ingestion with MIME inference.
Scripts/SettingsStoreWhisperSmokeTests.swift Rebrands smoke test defaults keys and paths.
Scripts/run-tests.sh Updates smoke test compilation targets/paths for OpenAssist and adds explicit -target.
Scripts/run-insertion-reliability.sh Rebrands compilation inputs/output paths and adds explicit -target.
Scripts/RecognitionTuningSmokeTests.swift Rebrands fixture text and defaults used in smoke tests.
Scripts/publish-wiki.sh Rebrands wiki repo URL and output messaging.
Scripts/PromptRewriteSmokeTests.swift Rebrands temp directory naming.
Scripts/notarize.sh Rebrands notarization script comments/default DMG path.
Scripts/MemoryIndexingSmokeTests.swift Rebrands Application Support paths and sandbox temp dir prefix.
Scripts/InsertionReliabilityRunner.swift Rebrands example command path.
Scripts/GenerateIcon.swift Updates logo input path and output iconset dir naming.
Scripts/generate_app_icon.py Rebrands module docstring.
Scripts/CoreLogicSmokeTests.swift Rebrands fixture strings and validates ShortcutValidationRules behavior.
Resources/OpenAssist.entitlements Adds entitlements for audio input and network client.
Resources/Info.plist Rebrands bundle ID/name/executable, usage descriptions, and appcast feed URL.
README.md Rebrands README, links, paths, and env flag names.
Package.swift Renames SwiftPM package/product/targets from KeyScribe to OpenAssist.
OpenAssistLogo.svg Adds Open Assist logo asset (root).
Assets/OpenAssistLogo.svg Adds Open Assist logo asset (Assets).
Docs/User-Guide.md Rebrands user guide headings/copy and Settings navigation.
Docs/Memory/Conversation-LongTerm-Memory-Design.md Rebrands documented feature-flag names.
build.sh Rebrands build output naming, bundle ID, env vars, and signing entitlements path.
Comments suppressed due to low confidence (3)

Sources/OpenAssist/Services/ConversationTagInferenceService.swift:824

  • canonicalProjectKey(_:) only aliases the slug key-scribe to openassist, but slug("KeyScribe") produces keyscribe (no dash). As a result, contexts labeled “KeyScribe” will canonicalize to project:keyscribe instead of the new project:openassist, splitting conversation/memory state across two project keys.
    Sources/OpenAssist/Assistant/AssistantMemoryRetrievalService.swift:300
  • memoryStorageGuide injects absolute on-disk paths (thread memory markdown + SQLite DB path) into the model context. If the assistant is backed by a cloud model, this can unnecessarily leak a user’s home directory path. Consider redacting the home directory prefix (e.g., ~) so the assistant still knows where the files live without exposing the full path.
    Tests/OpenAssistTests/ConversationMemoryArchivePromotionTests.swift:879
  • The default projectLabel in makeContext is "OpenAssist" (no space), but the rest of the tests use "Open Assist". Keeping labels consistent avoids accidental mismatches in UI-facing strings and test expectations.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d5f95329c0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread build.sh
APP_NAME="KeyScribe"
APP_EXECUTABLE="$APP_NAME"
APP_BUNDLE_ID="com.keyscribe.KeyScribe"
APP_NAME="Open Assist"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep DMG artifact name aligned with release workflow

Checked .github/workflows/release.yml: after ./build.sh --make-dmg it still notarizes, signs, and uploads dist/KeyScribe.dmg (notably the notarization step and release upload), but changing APP_NAME here makes the build produce dist/Open Assist.dmg. On tag builds this leaves the workflow looking for a non-existent DMG, so notarization fails and no release/appcast is produced.

Useful? React with 👍 / 👎.

Comment on lines +2503 to +2505
private static let cloudTranscriptionProviderAPIKeychainService = "com.manikvashith.OpenAssist"
private static let cloudTranscriptionProviderAPIKeychainAccountPrefix = "cloud-transcription-provider-api-key"
private static let automationAPIKeychainService = "com.keyscribe.KeyScribe"
private static let automationAPIKeychainService = "com.manikvashith.OpenAssist"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Migrate existing keychain items before renaming services

For users upgrading from KeyScribe, the cloud transcription keys and automation API bearer token were stored under the old com.keyscribe.KeyScribe keychain service; these loaders now query only com.manikvashith.OpenAssist with no fallback/copy path. In that upgrade scenario, cloud providers silently appear unconfigured and existing automation clients keep sending the old token and start getting rejected until the user re-enters or redistributes credentials.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants