ironOS native ios app

feat: massive rename

dunkirk.sh f992755d fb6b81eb

verified
+49 -52
+3 -3
README.md
··· 1 - # pinecilTime 1 + # tinkcil 2 2 3 3 a really cool ios app for the pinecil that adds wakatime 4 4 5 - The canonical repo for this is hosted on tangled over at [`dunkirk.sh/pinecilTime`](https://tangled.org/@dunkirk.sh/pinecilTime) 5 + The canonical repo for this is hosted on tangled over at [`dunkirk.sh/tinkcil`](https://tangled.org/@dunkirk.sh/tinkcil) 6 6 7 7 <p align="center"> 8 8 <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/main/.github/images/line-break.svg" /> ··· 13 13 </p> 14 14 15 15 <p align="center"> 16 - <a href="https://tangled.org/dunkirk.sh/pinecilTime/blob/main/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=O'Saasy&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a> 16 + <a href="https://tangled.org/dunkirk.sh/tinkcil/blob/main/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=O'Saasy&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a> 17 17 </p>
+27 -23
ios/PinecilTime.xcodeproj/project.pbxproj ios/TinkCil.xcodeproj/project.pbxproj
··· 7 7 objects = { 8 8 9 9 /* Begin PBXFileReference section */ 10 - 0B29219B2F3460FA009E14CB /* Pinecil Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Pinecil Time.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 10 + 0B29219B2F3460FA009E14CB /* Tinkcil.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tinkcil.app; sourceTree = BUILT_PRODUCTS_DIR; }; 11 11 /* End PBXFileReference section */ 12 12 13 13 /* Begin PBXFileSystemSynchronizedRootGroup section */ 14 - 0B29219D2F3460FA009E14CB /* PinecilTime */ = { 14 + 0B29219D2F3460FA009E14CB /* TinkCil */ = { 15 15 isa = PBXFileSystemSynchronizedRootGroup; 16 - path = PinecilTime; 16 + path = TinkCil; 17 17 sourceTree = "<group>"; 18 18 }; 19 19 /* End PBXFileSystemSynchronizedRootGroup section */ ··· 32 32 0B2921922F3460FA009E14CB = { 33 33 isa = PBXGroup; 34 34 children = ( 35 - 0B29219D2F3460FA009E14CB /* PinecilTime */, 35 + 0B29219D2F3460FA009E14CB /* TinkCil */, 36 36 0B29219C2F3460FA009E14CB /* Products */, 37 37 ); 38 38 sourceTree = "<group>"; ··· 40 40 0B29219C2F3460FA009E14CB /* Products */ = { 41 41 isa = PBXGroup; 42 42 children = ( 43 - 0B29219B2F3460FA009E14CB /* Pinecil Time.app */, 43 + 0B29219B2F3460FA009E14CB /* Tinkcil.app */, 44 44 ); 45 45 name = Products; 46 46 sourceTree = "<group>"; ··· 48 48 /* End PBXGroup section */ 49 49 50 50 /* Begin PBXNativeTarget section */ 51 - 0B29219A2F3460FA009E14CB /* Pinecil Time */ = { 51 + 0B29219A2F3460FA009E14CB /* Tinkcil */ = { 52 52 isa = PBXNativeTarget; 53 - buildConfigurationList = 0B2921A62F3460FB009E14CB /* Build configuration list for PBXNativeTarget "Pinecil Time" */; 53 + buildConfigurationList = 0B2921A62F3460FB009E14CB /* Build configuration list for PBXNativeTarget "Tinkcil" */; 54 54 buildPhases = ( 55 55 0B2921972F3460FA009E14CB /* Sources */, 56 56 0B2921982F3460FA009E14CB /* Frameworks */, ··· 61 61 dependencies = ( 62 62 ); 63 63 fileSystemSynchronizedGroups = ( 64 - 0B29219D2F3460FA009E14CB /* PinecilTime */, 64 + 0B29219D2F3460FA009E14CB /* TinkCil */, 65 65 ); 66 - name = "Pinecil Time"; 66 + name = Tinkcil; 67 67 packageProductDependencies = ( 68 68 ); 69 - productName = "Pinecil Time"; 70 - productReference = 0B29219B2F3460FA009E14CB /* Pinecil Time.app */; 69 + productName = Tinkcil; 70 + productReference = 0B29219B2F3460FA009E14CB /* Tinkcil.app */; 71 71 productType = "com.apple.product-type.application"; 72 72 }; 73 73 /* End PBXNativeTarget section */ ··· 85 85 }; 86 86 }; 87 87 }; 88 - buildConfigurationList = 0B2921962F3460FA009E14CB /* Build configuration list for PBXProject "PinecilTime" */; 88 + buildConfigurationList = 0B2921962F3460FA009E14CB /* Build configuration list for PBXProject "TinkCil" */; 89 89 developmentRegion = en; 90 90 hasScannedForEncodings = 0; 91 91 knownRegions = ( ··· 99 99 projectDirPath = ""; 100 100 projectRoot = ""; 101 101 targets = ( 102 - 0B29219A2F3460FA009E14CB /* Pinecil Time */, 102 + 0B29219A2F3460FA009E14CB /* Tinkcil */, 103 103 ); 104 104 }; 105 105 /* End PBXProject section */ ··· 251 251 buildSettings = { 252 252 ASSETCATALOG_COMPILER_APPICON_NAME = icon; 253 253 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 254 + CODE_SIGN_IDENTITY = "Apple Development"; 254 255 CODE_SIGN_STYLE = Automatic; 255 256 CURRENT_PROJECT_VERSION = 4; 256 257 DEVELOPMENT_TEAM = M67B42LX8D; 257 258 ENABLE_PREVIEWS = YES; 258 259 GENERATE_INFOPLIST_FILE = YES; 259 - INFOPLIST_KEY_CFBundleDisplayName = Tinksil; 260 - INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "PinecilTime needs Bluetooth to connect to your Pinecil soldering iron."; 261 - INFOPLIST_KEY_NSBluetoothPeripheralUsageDescription = "PinecilTime needs Bluetooth to connect to your Pinecil soldering iron."; 260 + INFOPLIST_KEY_CFBundleDisplayName = Tinkcil; 261 + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Tinkcil needs Bluetooth to connect to your soldering iron."; 262 + INFOPLIST_KEY_NSBluetoothPeripheralUsageDescription = "Tinkcil needs Bluetooth to connect to your soldering iron."; 262 263 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 263 264 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 264 265 INFOPLIST_KEY_UIBackgroundModes = "bluetooth-central"; ··· 270 271 "@executable_path/Frameworks", 271 272 ); 272 273 MARKETING_VERSION = 1.0; 273 - PRODUCT_BUNDLE_IDENTIFIER = sh.dunkirk.tinksil; 274 + PRODUCT_BUNDLE_IDENTIFIER = sh.dunkirk.tinkcil; 274 275 PRODUCT_NAME = "$(TARGET_NAME)"; 276 + PROVISIONING_PROFILE_SPECIFIER = ""; 275 277 STRING_CATALOG_GENERATE_SYMBOLS = YES; 276 278 SWIFT_APPROACHABLE_CONCURRENCY = YES; 277 279 SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; ··· 287 289 buildSettings = { 288 290 ASSETCATALOG_COMPILER_APPICON_NAME = icon; 289 291 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 292 + CODE_SIGN_IDENTITY = "Apple Development"; 290 293 CODE_SIGN_STYLE = Automatic; 291 294 CURRENT_PROJECT_VERSION = 4; 292 295 DEVELOPMENT_TEAM = M67B42LX8D; 293 296 ENABLE_PREVIEWS = YES; 294 297 GENERATE_INFOPLIST_FILE = YES; 295 - INFOPLIST_KEY_CFBundleDisplayName = Tinksil; 296 - INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "PinecilTime needs Bluetooth to connect to your Pinecil soldering iron."; 297 - INFOPLIST_KEY_NSBluetoothPeripheralUsageDescription = "PinecilTime needs Bluetooth to connect to your Pinecil soldering iron."; 298 + INFOPLIST_KEY_CFBundleDisplayName = Tinkcil; 299 + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Tinkcil needs Bluetooth to connect to your soldering iron."; 300 + INFOPLIST_KEY_NSBluetoothPeripheralUsageDescription = "Tinkcil needs Bluetooth to connect to your soldering iron."; 298 301 INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 299 302 INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 300 303 INFOPLIST_KEY_UIBackgroundModes = "bluetooth-central"; ··· 306 309 "@executable_path/Frameworks", 307 310 ); 308 311 MARKETING_VERSION = 1.0; 309 - PRODUCT_BUNDLE_IDENTIFIER = sh.dunkirk.tinksil; 312 + PRODUCT_BUNDLE_IDENTIFIER = sh.dunkirk.tinkcil; 310 313 PRODUCT_NAME = "$(TARGET_NAME)"; 314 + PROVISIONING_PROFILE_SPECIFIER = ""; 311 315 STRING_CATALOG_GENERATE_SYMBOLS = YES; 312 316 SWIFT_APPROACHABLE_CONCURRENCY = YES; 313 317 SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; ··· 321 325 /* End XCBuildConfiguration section */ 322 326 323 327 /* Begin XCConfigurationList section */ 324 - 0B2921962F3460FA009E14CB /* Build configuration list for PBXProject "PinecilTime" */ = { 328 + 0B2921962F3460FA009E14CB /* Build configuration list for PBXProject "TinkCil" */ = { 325 329 isa = XCConfigurationList; 326 330 buildConfigurations = ( 327 331 0B2921A42F3460FB009E14CB /* Debug */, ··· 330 334 defaultConfigurationIsVisible = 0; 331 335 defaultConfigurationName = Release; 332 336 }; 333 - 0B2921A62F3460FB009E14CB /* Build configuration list for PBXNativeTarget "Pinecil Time" */ = { 337 + 0B2921A62F3460FB009E14CB /* Build configuration list for PBXNativeTarget "Tinkcil" */ = { 334 338 isa = XCConfigurationList; 335 339 buildConfigurations = ( 336 340 0B2921A72F3460FB009E14CB /* Debug */,
-7
ios/PinecilTime.xcodeproj/project.xcworkspace/contents.xcworkspacedata
··· 1 - <?xml version="1.0" encoding="UTF-8"?> 2 - <Workspace 3 - version = "1.0"> 4 - <FileRef 5 - location = "self:"> 6 - </FileRef> 7 - </Workspace>
+1 -1
ios/PinecilTime.xcodeproj/xcuserdata/kierank.xcuserdatad/xcschemes/xcschememanagement.plist ios/TinkCil.xcodeproj/xcuserdata/kierank.xcuserdatad/xcschemes/xcschememanagement.plist
··· 4 4 <dict> 5 5 <key>SchemeUserState</key> 6 6 <dict> 7 - <key>Pinecil Time.xcscheme_^#shared#^_</key> 7 + <key>Tinkcil.xcscheme_^#shared#^_</key> 8 8 <dict> 9 9 <key>orderHint</key> 10 10 <integer>0</integer>
ios/PinecilTime/Assets.xcassets/AccentColor.colorset/Contents.json ios/TinkCil/Assets.xcassets/AccentColor.colorset/Contents.json
ios/PinecilTime/Assets.xcassets/AppIcon.appiconset/Contents.json ios/TinkCil/Assets.xcassets/AppIcon.appiconset/Contents.json
ios/PinecilTime/Assets.xcassets/Contents.json ios/TinkCil/Assets.xcassets/Contents.json
+6 -6
ios/PinecilTime/BLEManager.swift ios/TinkCil/BLEManager.swift
··· 1 1 // 2 2 // BLEManager.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import CoreBluetooth ··· 37 37 private var discoveredCharacteristics: [CBUUID: CBCharacteristic] = [:] 38 38 private var pollTimer: Timer? 39 39 private var scanTimer: Timer? 40 - private let bleQueue = DispatchQueue(label: "com.pineciltime.ble", qos: .userInitiated) 40 + private let bleQueue = DispatchQueue(label: "sh.dunkirk.tinkcil.ble", qos: .userInitiated) 41 41 private let timerQueue = DispatchQueue.main 42 - private let operationQueue = DispatchQueue(label: "com.pineciltime.operations", qos: .userInitiated) 42 + private let operationQueue = DispatchQueue(label: "sh.dunkirk.tinkcil.operations", qos: .userInitiated) 43 43 private var pendingWrites: [CBUUID: UInt16] = [:] 44 44 private var settingReadCompletions: [CBUUID: (UInt16?) -> Void] = [:] 45 45 private var operationTimeouts: [CBUUID: DispatchWorkItem] = [:] ··· 398 398 rssi RSSI: NSNumber) { 399 399 DispatchQueue.main.async { [weak self] in 400 400 guard let self else { return } 401 - // Auto-connect to first discovered Pinecil 401 + // Auto-connect to first discovered Tinkcil 402 402 if self.connectedPeripheral == nil { 403 - // Match either Pinecil-* or by the advertised service UUID 403 + // Match either Pinecil-* (legacy) or by the advertised service UUID 404 404 if peripheral.name?.hasPrefix("Pinecil-") == true || 405 405 peripheral.name?.hasPrefix("PrattlePin-") == true || 406 406 (advertisementData[CBAdvertisementDataServiceUUIDsKey] as? [CBUUID])?.contains(IronOSUUIDs.bulkDataService) == true { ··· 419 419 DispatchQueue.main.async { [weak self] in 420 420 guard let self else { return } 421 421 self.connectionState = .connected 422 - self.deviceName = peripheral.name ?? "Pinecil" 422 + self.deviceName = peripheral.name ?? "Tinkcil" 423 423 } 424 424 peripheral.discoverServices(nil) 425 425 }
+2 -2
ios/PinecilTime/ContentView.swift ios/TinkCil/ContentView.swift
··· 1 1 // 2 2 // ContentView.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import SwiftUI ··· 420 420 Text(bleManager.connectionState.isConnecting ? "Connecting..." : "Scanning...") 421 421 .font(isIPad ? .largeTitle : .headline) 422 422 423 - Text("Looking for your Pinecil") 423 + Text("Looking for your Tinkcil") 424 424 .font(isIPad ? .title3 : .subheadline) 425 425 .foregroundStyle(.secondary) 426 426 } else {
+1 -1
ios/PinecilTime/IronOSUUIDs.swift ios/TinkCil/IronOSUUIDs.swift
··· 1 1 // 2 2 // IronOSUUIDs.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import CoreBluetooth
+2 -2
ios/PinecilTime/Models.swift ios/TinkCil/Models.swift
··· 1 1 // 2 2 // Models.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import CoreBluetooth ··· 246 246 class SettingsCache { 247 247 private(set) var cache: [UInt16: UInt16] = [:] 248 248 private let userDefaults = UserDefaults.standard 249 - private let cacheKey = "pinecilSettingsCache" 249 + private let cacheKey = "tinkcilSettingsCache" 250 250 251 251 init() { 252 252 loadFromDisk()
+3 -3
ios/PinecilTime/Pinecil_TimeApp.swift ios/TinkCil/TinkCil_App.swift
··· 1 1 // 2 - // Pinecil_TimeApp.swift 3 - // PinecilTime 2 + // TinkCil_App.swift 3 + // TinkCil 4 4 // 5 5 6 6 import SwiftUI 7 7 8 8 @main 9 - struct PinecilTimeApp: App { 9 + struct TinkCilApp: App { 10 10 var body: some Scene { 11 11 WindowGroup { 12 12 ContentView()
+1 -1
ios/PinecilTime/SettingsView.swift ios/TinkCil/SettingsView.swift
··· 1 1 // 2 2 // SettingsView.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import SwiftUI
+1 -1
ios/PinecilTime/TemperatureGraph.swift ios/TinkCil/TemperatureGraph.swift
··· 1 1 // 2 2 // TemperatureGraph.swift 3 - // PinecilTime 3 + // TinkCil 4 4 // 5 5 6 6 import Charts
ios/PinecilTime/icon.icon/Assets/pinecilTime.svg ios/TinkCil/icon.icon/Assets/tinkcil.svg
+2 -2
ios/PinecilTime/icon.icon/icon.json ios/TinkCil/icon.icon/icon.json
··· 22 22 "fill" : { 23 23 "solid" : "display-p3:0.01553,0.75506,0.51714,1.00000" 24 24 }, 25 - "image-name" : "pinecilTime.svg", 26 - "name" : "pinecilTime", 25 + "image-name" : "tinkcil.svg", 26 + "name" : "tinkcil", 27 27 "position" : { 28 28 "scale" : 0.85, 29 29 "translation-in-points" : [