From 400d14cce3f28d46a15de5c444a09d221360e794 Mon Sep 17 00:00:00 2001 From: 4xiomLocal <4xiomdev@gmail.com> Date: Fri, 10 Apr 2026 00:11:15 -0500 Subject: [PATCH 1/2] Fix Orbit Codex config ordering --- Orbit/OrbitCodexEnvironment.swift | 29 ++++++++++++++++++----------- OrbitTests/OrbitTests.swift | 15 +++++++++++++++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Orbit/OrbitCodexEnvironment.swift b/Orbit/OrbitCodexEnvironment.swift index db4b7ee..98f488d 100644 --- a/Orbit/OrbitCodexEnvironment.swift +++ b/Orbit/OrbitCodexEnvironment.swift @@ -108,10 +108,11 @@ enum OrbitCodexEnvironment { return baseURL.appendingPathComponent("Orbit", isDirectory: true) } - private static func makeConfigContents( + static func makeConfigContents( logDirectory: URL, sqliteDirectory: URL, - configuredSkillPaths: [String: URL] + configuredSkillPaths: [String: URL], + modelInstructionsPath: String? = nil ) -> String { var lines: [String] = [ "model = \"gpt-5.4-mini\"", @@ -123,24 +124,30 @@ enum OrbitCodexEnvironment { "mcp_oauth_credentials_store = \"file\"", "log_dir = \(tomlString(logDirectory.path))", "sqlite_home = \(tomlString(sqliteDirectory.path))", - "history.persistence = \"save-all\"", - "", - "[features]", - "apps = true", - "fast_mode = true", - "multi_agent = false", - "" + "history.persistence = \"save-all\"" ] - if let instructionsPath = bundledModelInstructionsPath()?.path { + // `model_instructions_file` is a top-level key. If it appears after + // `[features]`, TOML nests it under that table and Codex rejects the + // config because `features.*` entries must be booleans. + if let instructionsPath = modelInstructionsPath ?? bundledModelInstructionsPath()?.path { lines += [ + "", "model_instructions_file = \(tomlString(instructionsPath))", - "" ] } else { OrbitSupportLog.append("codex", "bundled Orbit model instructions were not found in the app bundle.") } + lines += [ + "", + "[features]", + "apps = true", + "fast_mode = true", + "multi_agent = false", + "" + ] + if let chromeDevToolsCommand = bundledBrowserCommand(named: "chrome-devtools-mcp") { lines += [ "[mcp_servers.chrome-devtools]", diff --git a/OrbitTests/OrbitTests.swift b/OrbitTests/OrbitTests.swift index d7f2176..b2ee4e8 100644 --- a/OrbitTests/OrbitTests.swift +++ b/OrbitTests/OrbitTests.swift @@ -1,3 +1,4 @@ +import Foundation import Testing @testable import Orbit @@ -30,4 +31,18 @@ struct OrbitTests { #expect(shouldTreatPermissionAsGranted) } + + @Test func modelInstructionsStayTopLevelInGeneratedCodexConfig() async throws { + let config = OrbitCodexEnvironment.makeConfigContents( + logDirectory: URL(fileURLWithPath: "/tmp/orbit-log"), + sqliteDirectory: URL(fileURLWithPath: "/tmp/orbit-sqlite"), + configuredSkillPaths: [:], + modelInstructionsPath: "/tmp/OrbitModelInstructions.md" + ) + + let instructionsRange = try #require(config.range(of: "model_instructions_file")) + let featuresRange = try #require(config.range(of: "\n[features]\n")) + + #expect(instructionsRange.lowerBound < featuresRange.lowerBound) + } } From 2307fa1148c50c7dd8c4a6e3eb916075616b5aa3 Mon Sep 17 00:00:00 2001 From: 4xiomLocal <4xiomdev@gmail.com> Date: Fri, 10 Apr 2026 00:16:13 -0500 Subject: [PATCH 2/2] Prepare Orbit 1.0.3 release --- Orbit.xcodeproj/project.pbxproj | 12 ++++++------ scripts/release.sh | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Orbit.xcodeproj/project.pbxproj b/Orbit.xcodeproj/project.pbxproj index 50d4163..28ecee9 100644 --- a/Orbit.xcodeproj/project.pbxproj +++ b/Orbit.xcodeproj/project.pbxproj @@ -416,7 +416,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex"; PRODUCT_NAME = Orbit; REGISTER_APP_GROUPS = YES; @@ -454,7 +454,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex"; PRODUCT_NAME = Orbit; REGISTER_APP_GROUPS = YES; @@ -476,7 +476,7 @@ DEVELOPMENT_TEAM = 6D7X9GGZAW; GENERATE_INFOPLIST_FILE = YES; MACOSX_DEPLOYMENT_TARGET = 14.2; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex.tests"; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -497,7 +497,7 @@ DEVELOPMENT_TEAM = 6D7X9GGZAW; GENERATE_INFOPLIST_FILE = YES; MACOSX_DEPLOYMENT_TARGET = 14.2; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex.tests"; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -516,7 +516,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 6D7X9GGZAW; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex.uitests"; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -535,7 +535,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 6D7X9GGZAW; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = "com.orbit.codex.uitests"; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; diff --git a/scripts/release.sh b/scripts/release.sh index 8ec3df0..d21911d 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -73,7 +73,7 @@ fi DEFAULT_MARKETING_VERSION="$( sed -nE 's/^[[:space:]]*MARKETING_VERSION = ([^;]+);$/\1/p' "${PROJECT_DIR}/Orbit.xcodeproj/project.pbxproj" | head -n 1 )" -MARKETING_VERSION="${1:-${DEFAULT_MARKETING_VERSION:-1.0.2}}" +MARKETING_VERSION="${1:-${DEFAULT_MARKETING_VERSION:-1.0.3}}" BUILD_NUMBER="${2:-$(date +%Y%m%d%H%M)}" TAG="v${MARKETING_VERSION}" DMG_PATH="${BUILD_DIR}/${APP_NAME}-${MARKETING_VERSION}.dmg"