From d11b8cf19f6138e8c14f9805301928580e6c89f0 Mon Sep 17 00:00:00 2001 From: Oleksandr Kozachuk Date: Fri, 20 Jun 2025 00:15:15 +0200 Subject: [PATCH] Remove unneeded code. --- CoBiE/CoBiE Analog Clock/AppIntent.swift | 18 - .../AccentColor.colorset/Contents.json | 11 - .../AppIcon.appiconset/Contents.json | 58 -- .../Assets.xcassets/Contents.json | 6 - .../WidgetBackground.colorset/Contents.json | 11 - .../CoBiE_Analog_Clock.swift | 94 -- .../CoBiE_Analog_ClockBundle.swift | 17 - .../CoBiE_Analog_ClockControl.swift | 77 -- CoBiE/CoBiE Analog Clock/Info.plist | 11 - .../Resources/analog-clock.html | 24 - CoBiE/CoBiE Analog Clock/Resources/clock.js | 204 ----- CoBiE/CoBiE Analog Clock/Resources/cobie.js | 185 ---- CoBiE/CoBiE Analog Clock/Resources/style.css | 561 ------------ CoBiE/CoBiE.xcodeproj/project.pbxproj | 819 ------------------ .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 22144 -> 0 bytes .../xcschemes/xcschememanagement.plist | 19 - .../AccentColor.colorset/Contents.json | 11 - .../AppIcon.appiconset/Contents.json | 85 -- CoBiE/CoBiE/Assets.xcassets/Contents.json | 6 - CoBiE/CoBiE/CoBiEApp.swift | 32 - CoBiE/CoBiE/ContentView.swift | 66 -- CoBiE/CoBiE/Item.swift | 18 - CoBiE/CoBiETests/CoBiETests.swift | 16 - CoBiE/CoBiEUITests/CoBiEUITests.swift | 41 - .../CoBiEUITestsLaunchTests.swift | 33 - 26 files changed, 2430 deletions(-) delete mode 100644 CoBiE/CoBiE Analog Clock/AppIntent.swift delete mode 100644 CoBiE/CoBiE Analog Clock/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 CoBiE/CoBiE Analog Clock/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 CoBiE/CoBiE Analog Clock/Assets.xcassets/Contents.json delete mode 100644 CoBiE/CoBiE Analog Clock/Assets.xcassets/WidgetBackground.colorset/Contents.json delete mode 100644 CoBiE/CoBiE Analog Clock/CoBiE_Analog_Clock.swift delete mode 100644 CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockBundle.swift delete mode 100644 CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockControl.swift delete mode 100644 CoBiE/CoBiE Analog Clock/Info.plist delete mode 100644 CoBiE/CoBiE Analog Clock/Resources/analog-clock.html delete mode 100644 CoBiE/CoBiE Analog Clock/Resources/clock.js delete mode 100644 CoBiE/CoBiE Analog Clock/Resources/cobie.js delete mode 100644 CoBiE/CoBiE Analog Clock/Resources/style.css delete mode 100644 CoBiE/CoBiE.xcodeproj/project.pbxproj delete mode 100644 CoBiE/CoBiE.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 CoBiE/CoBiE.xcodeproj/project.xcworkspace/xcuserdata/ok.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 CoBiE/CoBiE.xcodeproj/xcuserdata/ok.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 CoBiE/CoBiE/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 CoBiE/CoBiE/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 CoBiE/CoBiE/Assets.xcassets/Contents.json delete mode 100644 CoBiE/CoBiE/CoBiEApp.swift delete mode 100644 CoBiE/CoBiE/ContentView.swift delete mode 100644 CoBiE/CoBiE/Item.swift delete mode 100644 CoBiE/CoBiETests/CoBiETests.swift delete mode 100644 CoBiE/CoBiEUITests/CoBiEUITests.swift delete mode 100644 CoBiE/CoBiEUITests/CoBiEUITestsLaunchTests.swift diff --git a/CoBiE/CoBiE Analog Clock/AppIntent.swift b/CoBiE/CoBiE Analog Clock/AppIntent.swift deleted file mode 100644 index 2957d19..0000000 --- a/CoBiE/CoBiE Analog Clock/AppIntent.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// AppIntent.swift -// CoBiE Analog Clock -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import WidgetKit -import AppIntents - -struct ConfigurationAppIntent: WidgetConfigurationIntent { - static var title: LocalizedStringResource { "Configuration" } - static var description: IntentDescription { "This is an example widget." } - - // An example configurable parameter. - @Parameter(title: "Favorite Emoji", default: "😃") - var favoriteEmoji: String -} diff --git a/CoBiE/CoBiE Analog Clock/Assets.xcassets/AccentColor.colorset/Contents.json b/CoBiE/CoBiE Analog Clock/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb87897..0000000 --- a/CoBiE/CoBiE Analog Clock/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE Analog Clock/Assets.xcassets/AppIcon.appiconset/Contents.json b/CoBiE/CoBiE Analog Clock/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 3f00db4..0000000 --- a/CoBiE/CoBiE Analog Clock/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "images" : [ - { - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE Analog Clock/Assets.xcassets/Contents.json b/CoBiE/CoBiE Analog Clock/Assets.xcassets/Contents.json deleted file mode 100644 index 73c0059..0000000 --- a/CoBiE/CoBiE Analog Clock/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE Analog Clock/Assets.xcassets/WidgetBackground.colorset/Contents.json b/CoBiE/CoBiE Analog Clock/Assets.xcassets/WidgetBackground.colorset/Contents.json deleted file mode 100644 index eb87897..0000000 --- a/CoBiE/CoBiE Analog Clock/Assets.xcassets/WidgetBackground.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_Clock.swift b/CoBiE/CoBiE Analog Clock/CoBiE_Analog_Clock.swift deleted file mode 100644 index a562dc6..0000000 --- a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_Clock.swift +++ /dev/null @@ -1,94 +0,0 @@ -// -// CoBiE_Analog_Clock.swift -// CoBiE Analog Clock -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import WidgetKit -import SwiftUI -import WebKit -#if os(iOS) || os(tvOS) -import UIKit -#else -import AppKit -#endif - -#if os(iOS) || os(tvOS) -typealias PlatformViewRepresentable = UIViewRepresentable -#else -typealias PlatformViewRepresentable = NSViewRepresentable -#endif - -struct HTMLClockView: PlatformViewRepresentable { -#if os(iOS) || os(tvOS) - func makeUIView(context: Context) -> WKWebView { createWebView() } - func updateUIView(_ uiView: WKWebView, context: Context) {} -#else - func makeNSView(context: Context) -> WKWebView { createWebView() } - func updateNSView(_ nsView: WKWebView, context: Context) {} -#endif - - private func createWebView() -> WKWebView { - let webView = WKWebView() - #if os(iOS) || os(tvOS) - webView.isOpaque = false - webView.backgroundColor = .clear - webView.scrollView.isScrollEnabled = false - #else - webView.setValue(false, forKey: "drawsBackground") - webView.setValue(false, forKey: "isOpaque") - if let scrollView = webView.value(forKey: "scrollView") as? NSScrollView { - scrollView.hasVerticalScroller = false - scrollView.hasHorizontalScroller = false - } - #endif - if let url = Bundle.main.url(forResource: "analog-clock", withExtension: "html") { - webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent()) - } - return webView - } -} - -struct Provider: AppIntentTimelineProvider { - func placeholder(in context: Context) -> SimpleEntry { - SimpleEntry(date: Date(), configuration: ConfigurationAppIntent()) - } - - func snapshot(for configuration: ConfigurationAppIntent, in context: Context) async -> SimpleEntry { - SimpleEntry(date: Date(), configuration: configuration) - } - - func timeline(for configuration: ConfigurationAppIntent, in context: Context) async -> Timeline { - let entry = SimpleEntry(date: Date(), configuration: configuration) - return Timeline(entries: [entry], policy: .never) - } - -// func relevances() async -> WidgetRelevances { -// // Generate a list containing the contexts this widget is relevant in. -// } -} - -struct SimpleEntry: TimelineEntry { - let date: Date - let configuration: ConfigurationAppIntent -} - -struct CoBiE_Analog_ClockEntryView : View { - var entry: Provider.Entry - - var body: some View { - HTMLClockView() - } -} - -struct CoBiE_Analog_Clock: Widget { - let kind: String = "CoBiE_Analog_Clock" - - var body: some WidgetConfiguration { - AppIntentConfiguration(kind: kind, intent: ConfigurationAppIntent.self, provider: Provider()) { entry in - CoBiE_Analog_ClockEntryView(entry: entry) - .containerBackground(.fill.tertiary, for: .widget) - } - } -} diff --git a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockBundle.swift b/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockBundle.swift deleted file mode 100644 index a65426d..0000000 --- a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockBundle.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// CoBiE_Analog_ClockBundle.swift -// CoBiE Analog Clock -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import WidgetKit -import SwiftUI - -@main -struct CoBiE_Analog_ClockBundle: WidgetBundle { - var body: some Widget { - CoBiE_Analog_Clock() - CoBiE_Analog_ClockControl() - } -} diff --git a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockControl.swift b/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockControl.swift deleted file mode 100644 index 04568c4..0000000 --- a/CoBiE/CoBiE Analog Clock/CoBiE_Analog_ClockControl.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// CoBiE_Analog_ClockControl.swift -// CoBiE Analog Clock -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import AppIntents -import SwiftUI -import WidgetKit - -struct CoBiE_Analog_ClockControl: ControlWidget { - static let kind: String = "no.kaizenkodo.CoBiE.CoBiE Analog Clock" - - var body: some ControlWidgetConfiguration { - AppIntentControlConfiguration( - kind: Self.kind, - provider: Provider() - ) { value in - ControlWidgetToggle( - "Start Timer", - isOn: value.isRunning, - action: StartTimerIntent(value.name) - ) { isRunning in - Label(isRunning ? "On" : "Off", systemImage: "timer") - } - } - .displayName("Timer") - .description("A an example control that runs a timer.") - } -} - -extension CoBiE_Analog_ClockControl { - struct Value { - var isRunning: Bool - var name: String - } - - struct Provider: AppIntentControlValueProvider { - func previewValue(configuration: TimerConfiguration) -> Value { - CoBiE_Analog_ClockControl.Value(isRunning: false, name: configuration.timerName) - } - - func currentValue(configuration: TimerConfiguration) async throws -> Value { - let isRunning = true // Check if the timer is running - return CoBiE_Analog_ClockControl.Value(isRunning: isRunning, name: configuration.timerName) - } - } -} - -struct TimerConfiguration: ControlConfigurationIntent { - static let title: LocalizedStringResource = "Timer Name Configuration" - - @Parameter(title: "Timer Name", default: "Timer") - var timerName: String -} - -struct StartTimerIntent: SetValueIntent { - static let title: LocalizedStringResource = "Start a timer" - - @Parameter(title: "Timer Name") - var name: String - - @Parameter(title: "Timer is running") - var value: Bool - - init() {} - - init(_ name: String) { - self.name = name - } - - func perform() async throws -> some IntentResult { - // Start the timer… - return .result() - } -} diff --git a/CoBiE/CoBiE Analog Clock/Info.plist b/CoBiE/CoBiE Analog Clock/Info.plist deleted file mode 100644 index 0f118fb..0000000 --- a/CoBiE/CoBiE Analog Clock/Info.plist +++ /dev/null @@ -1,11 +0,0 @@ - - - - - NSExtension - - NSExtensionPointIdentifier - com.apple.widgetkit-extension - - - diff --git a/CoBiE/CoBiE Analog Clock/Resources/analog-clock.html b/CoBiE/CoBiE Analog Clock/Resources/analog-clock.html deleted file mode 100644 index 69a2012..0000000 --- a/CoBiE/CoBiE Analog Clock/Resources/analog-clock.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
-
-
-
-
-
-
-
-
CoBiE Time
-
-
- - - - diff --git a/CoBiE/CoBiE Analog Clock/Resources/clock.js b/CoBiE/CoBiE Analog Clock/Resources/clock.js deleted file mode 100644 index 0ad372e..0000000 --- a/CoBiE/CoBiE Analog Clock/Resources/clock.js +++ /dev/null @@ -1,204 +0,0 @@ -// Minimal CoBiE analog clock logic wrapped in its own scope to -// avoid clashes with variables from other scripts on the page. -(function () { - const { - COBIE_EPOCH, - COBIE_UNITS, - floorDiv, - getTAIOffsetAt, - toCobiets - } = window.Cobie; - - function getMarkerOffset(width) { - const points = [ - { width: 1024, value: 2 }, - { width: 450, value: 1.3 }, - { width: 200, value: 0.8 } - ]; - - // Sort points by width descending for easier handling - points.sort((a, b) => b.width - a.width); - - for (let i = 0; i < points.length - 1; i++) { - const p1 = points[i]; - const p2 = points[i + 1]; - if (width <= p1.width && width >= p2.width) { - // Linear interpolation - const t = (width - p2.width) / (p1.width - p2.width); - return p2.value + t * (p1.value - p2.value); - } - } - - // Extrapolation for width > max known - if (width > points[0].width) { - const p1 = points[0]; - const p2 = points[1]; - const slope = (p1.value - p2.value) / (p1.width - p2.width); - return p1.value + slope * (width - p1.width); - } - - // Extrapolation for width < min known - const p1 = points[points.length - 2]; - const p2 = points[points.length - 1]; - const slope = (p2.value - p1.value) / (p2.width - p1.width); - return p2.value + slope * (width - p2.width); - } - - function placeMarkers() { - const clock = document.getElementById('clock'); - let markers = clock.querySelectorAll('.marker'); - let ticks = clock.querySelectorAll('.tick'); - - // Create markers if they don't exist yet - if (markers.length === 0) { - for (let i = 0; i < 16; i++) { - const m = document.createElement('div'); - m.className = 'marker'; - m.textContent = i.toString(16).toUpperCase(); - clock.appendChild(m); - } - markers = clock.querySelectorAll('.marker'); - } - - // Create tick marks once - if (ticks.length === 0) { - for (let i = 0; i < 256; i++) { - const t = document.createElement('div'); - t.classList.add('tick'); - if (i % 16 === 0) t.classList.add('big'); - else if (i % 8 === 0) t.classList.add('mid'); - // insert before markers so digits sit on top - clock.insertBefore(t, clock.firstChild); - } - ticks = clock.querySelectorAll('.tick'); - } - - // Unified radius based on the actual clock size - const baseRadius = clock.offsetWidth / 2; - - // Tick lengths relative to the clock radius - const lenBig = baseRadius * 0.12; - const lenMid = baseRadius * 0.08; - const lenSmall = baseRadius * 0.05; - - const outerR = baseRadius - 2; // just inside the border - - // Distance from center for the marker digits so they sit just inside big ticks - const markerSize = markers[0] ? markers[0].offsetWidth : 0; - const markerRadius = outerR - lenBig - markerSize * getMarkerOffset(clock.offsetWidth); - - markers.forEach((m, i) => { - const angle = (i / 16) * 2 * Math.PI; - m.style.left = '50%'; - m.style.top = '50%'; - m.style.transform = - `translate(-50%, -50%) rotate(${angle}rad) translate(0, -${markerRadius}px) rotate(${-angle}rad)`; - }); - - ticks.forEach((t, i) => { - let len = lenSmall; - if (t.classList.contains('big')) len = lenBig; - else if (t.classList.contains('mid')) len = lenMid; - const innerR = outerR - len; - const angle = ((i + 1) / 256) * 2 * Math.PI; - t.style.height = `${len}px`; - t.style.left = '50%'; - t.style.top = '50%'; - t.style.transform = `translate(-50%, 0) rotate(${angle}rad) translate(0, -${innerR}px)`; - if (clock.offsetWidth < 200 && !t.classList.contains('big') && !t.classList.contains('mid')) { - t.style.display = 'none'; - } else { - t.style.display = ''; - } - }); - } - - const lastAngles = { - handXeno: 0, - handQuantic: 0, - handChronon: 0, - handEonstrip: 0, - handMegasequence: 0 - }; - - function rotateHand(id, angle) { - const el = document.getElementById(id); - if (!el) return; - const prev = lastAngles[id]; - - if (angle < prev) { - // When wrapping around (e.g. 15 → 0), animate to one full turn - // and then snap back to the new angle to avoid a jump. - const target = angle + 360; - const handle = () => { - el.removeEventListener('transitionend', handle); - // Snap back without animation - el.style.transition = 'none'; - el.style.transform = `translateX(-50%) translateZ(0) rotate(${angle}deg)`; - void el.offsetWidth; - el.style.transition = ''; - }; - el.addEventListener('transitionend', handle, { once: true }); - el.style.transform = `translateX(-50%) translateZ(0) rotate(${target}deg)`; - } else { - el.style.transform = `translateX(-50%) translateZ(0) rotate(${angle}deg)`; - } - - lastAngles[id] = angle; - } - - function renderClock(cob) { - // Use fractional progress within each unit so angles stay small - const xf = (cob % COBIE_UNITS.quantic) / COBIE_UNITS.quantic; - const qf = (cob % COBIE_UNITS.chronon) / COBIE_UNITS.chronon; - const cf = (cob % COBIE_UNITS.eonstrip) / COBIE_UNITS.eonstrip; - const ef = (cob % COBIE_UNITS.megasequence) / COBIE_UNITS.megasequence; - const mf = (cob % COBIE_UNITS.cosmocycle) / COBIE_UNITS.cosmocycle; - rotateHand('handXeno', xf * 360); - rotateHand('handQuantic', qf * 360); - rotateHand('handChronon', cf * 360); - rotateHand('handEonstrip', ef * 360); - rotateHand('handMegasequence', mf * 360); - } - - function updateClock() { - renderClock(toCobiets(new Date())); - } - - let intervalId = null; - - function startClock() { - clearInterval(intervalId); - updateClock(); - intervalId = setInterval(updateClock, 1000); - } - - function showTime(cob) { - clearInterval(intervalId); - renderClock(cob); - } - - function initClock() { - placeMarkers(); - startClock(); - const clk = document.getElementById('clock'); - if (clk) { - clk.addEventListener('click', () => { - document.body.classList.toggle('fullscreen-clock'); - // Re-position markers after toggling fullscreen - requestAnimationFrame(placeMarkers); - }); - } - window.addEventListener('resize', placeMarkers); - window.CobieClock = { - start: startClock, - showTime - }; - } - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', initClock); - } else { - initClock(); - } -})(); diff --git a/CoBiE/CoBiE Analog Clock/Resources/cobie.js b/CoBiE/CoBiE Analog Clock/Resources/cobie.js deleted file mode 100644 index 37fceef..0000000 --- a/CoBiE/CoBiE Analog Clock/Resources/cobie.js +++ /dev/null @@ -1,185 +0,0 @@ -const COBIE_EPOCH = 0; - -const COBIE_UNITS = { - second: 1, - xenocycle: 0x10, - quantic: 0x100, - chronon: 0x1000, - eonstrip: 0x10000, - megasequence: 0x100000, - cosmocycle: 0x1000000, - galactic_year: 0x10000000, - universal_eon: 0x100000000, - celestial_era: 0x1000000000, - epoch_of_cosmos: 0x10000000000, - cosmic_aeon: 0x100000000000, - metaepoch: 0x1000000000000, - eternum: 0x10000000000000, - infinitum: 0x100000000000000, - astralmillennia: 0x1000000000000000 -}; - -function floorDiv(a, b) { - return Math.trunc(a / b); -} - -function parseCobiets(str) { - const m = /^([+-]?)([0-9A-Fa-f]+)\.([0-9A-Fa-f]{1,})$/.exec(str.trim()); - if (!m) return null; - const sign = m[1] === '-' ? -1 : 1; - - const allDateKeys = [ - 'astralmillennia','infinitum','eternum','metaepoch','cosmic_aeon', - 'epoch_of_cosmos','celestial_era','universal_eon','galactic_year', - 'cosmocycle','megasequence','eonstrip' - ]; - - let rawDateHex = m[2]; - if (rawDateHex.length < allDateKeys.length) { - rawDateHex = rawDateHex.padStart(allDateKeys.length, '0'); - } - - let dateKeys = [...allDateKeys]; - if (rawDateHex.length > allDateKeys.length) { - const extraCount = rawDateHex.length - allDateKeys.length; - for (let i = 0; i < extraCount; i++) { - dateKeys.unshift(null); - } - } - - const timeHexRaw = m[3]; - const timeHex = timeHexRaw.padStart(4, '0'); - const timeKeys = ['chronon', 'quantic', 'xenocycle', 'second']; - - let total = 0; - for (let i = 0; i < rawDateHex.length; i++) { - const digit = parseInt(rawDateHex[i], 16); - const key = dateKeys[i]; - if (key === null) { - const power = rawDateHex.length - 1 - i; - total += digit * Math.pow(16, power) * COBIE_UNITS['eonstrip']; - } else { - total += digit * COBIE_UNITS[key]; - } - } - - timeHex.split('').forEach((h, i) => { - total += parseInt(h, 16) * COBIE_UNITS[timeKeys[i]]; - }); - - return sign * total; -} - -function getTAIOffsetAt(date) { - const taiEpoch = new Date('1958-01-01T00:00:00Z'); - if (date < taiEpoch) { return 0; } - const leapSeconds = [ - { date: '1972-01-01T00:00:00Z', offset: 10 }, - { date: '1972-07-01T00:00:00Z', offset: 11 }, - { date: '1973-01-01T00:00:00Z', offset: 12 }, - { date: '1974-01-01T00:00:00Z', offset: 13 }, - { date: '1975-01-01T00:00:00Z', offset: 14 }, - { date: '1976-01-01T00:00:00Z', offset: 15 }, - { date: '1977-01-01T00:00:00Z', offset: 16 }, - { date: '1978-01-01T00:00:00Z', offset: 17 }, - { date: '1979-01-01T00:00:00Z', offset: 18 }, - { date: '1980-01-01T00:00:00Z', offset: 19 }, - { date: '1981-07-01T00:00:00Z', offset: 20 }, - { date: '1982-07-01T00:00:00Z', offset: 21 }, - { date: '1983-07-01T00:00:00Z', offset: 22 }, - { date: '1985-07-01T00:00:00Z', offset: 23 }, - { date: '1988-01-01T00:00:00Z', offset: 24 }, - { date: '1990-01-01T00:00:00Z', offset: 25 }, - { date: '1991-01-01T00:00:00Z', offset: 26 }, - { date: '1992-07-01T00:00:00Z', offset: 27 }, - { date: '1993-07-01T00:00:00Z', offset: 28 }, - { date: '1994-07-01T00:00:00Z', offset: 29 }, - { date: '1996-01-01T00:00:00Z', offset: 30 }, - { date: '1997-07-01T00:00:00Z', offset: 31 }, - { date: '1999-01-01T00:00:00Z', offset: 32 }, - { date: '2006-01-01T00:00:00Z', offset: 33 }, - { date: '2009-01-01T00:00:00Z', offset: 34 }, - { date: '2012-07-01T00:00:00Z', offset: 35 }, - { date: '2015-07-01T00:00:00Z', offset: 36 }, - { date: '2017-01-01T00:00:00Z', offset: 37 } - ]; - - for (let i = 0; i < leapSeconds.length; i++) { - const leapDate = new Date(leapSeconds[i].date); - if (date < leapDate) { - return i === 0 ? 10 : leapSeconds[i - 1].offset; - } - } - return 37; -} - -function toCobiets(date) { - const utcSec = floorDiv(date.getTime(), 1000); - const taiSec = utcSec + getTAIOffsetAt(date); - return taiSec - COBIE_EPOCH; -} - -function fromCobiets(cobiets) { - const taiSeconds = cobiets + COBIE_EPOCH; - const taiMs = taiSeconds * 1000; - let utcMs = taiMs; - for (let i = 0; i < 3; i++) { - const off = getTAIOffsetAt(new Date(utcMs)); - utcMs = taiMs - off * 1000; - } - return new Date(utcMs); -} - -const UNIT_KEYS = [ - 'astralmillennia','infinitum','eternum','metaepoch','cosmic_aeon','epoch_of_cosmos','celestial_era','universal_eon','galactic_year','cosmocycle','megasequence','eonstrip','chronon','quantic','xenocycle','second' -]; - -function breakdownNonNeg(cob) { - let rem = cob, bd = {}; - for (let key of UNIT_KEYS) { - bd[key] = floorDiv(rem, COBIE_UNITS[key]); - rem %= COBIE_UNITS[key]; - } - return bd; -} - -function formatCobieTimestamp(cobiets) { - const sign = cobiets < 0 ? '-' : '+'; - const absCob = Math.abs(cobiets); - const bd = breakdownNonNeg(absCob); - - const dateUnits = [ - 'astralmillennia','infinitum','eternum','metaepoch','cosmic_aeon','epoch_of_cosmos','celestial_era','universal_eon','galactic_year','cosmocycle','megasequence','eonstrip' - ]; - - let rawDateHex = dateUnits.map(key => bd[key].toString(16)).join(''); - rawDateHex = rawDateHex.replace(/^0+/, ''); - if (rawDateHex === '') rawDateHex = '0'; - - const timeHex = [bd.chronon, bd.quantic, bd.xenocycle, bd.second] - .map(n => n.toString(16)).join(''); - - const paddedTimeHex = timeHex.padStart(4, '0'); - return sign + rawDateHex + '.' + paddedTimeHex; -} - -const Cobie = { - COBIE_EPOCH, - COBIE_UNITS, - floorDiv, - parseCobiets, - getTAIOffsetAt, - toCobiets, - fromCobiets, - formatCobieTimestamp, - breakdownNonNeg -}; - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Cobie; -} - -// Expose globally when loaded in a browser environment -if (typeof window !== 'undefined') { - window.Cobie = Cobie; -} diff --git a/CoBiE/CoBiE Analog Clock/Resources/style.css b/CoBiE/CoBiE Analog Clock/Resources/style.css deleted file mode 100644 index 25b64ea..0000000 --- a/CoBiE/CoBiE Analog Clock/Resources/style.css +++ /dev/null @@ -1,561 +0,0 @@ - * { - margin: 0; - padding: 0; - box-sizing: border-box; - } - - body { - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - background: linear-gradient(135deg, #0a0e27 0%, #1a1f3a 100%); - color: #e0e0e0; - min-height: 100vh; - overflow-x: hidden; - } - - .container { - max-width: 1200px; - margin: 0 auto; - padding: 20px; - } - - .header { - text-align: center; - margin-bottom: 30px; - padding: 20px; - background: rgba(255, 255, 255, 0.05); - border-radius: 15px; - backdrop-filter: blur(10px); - border: 1px solid rgba(255, 255, 255, 0.1); - } - - .tooltip { - position: absolute; - top: 100%; - left: 50%; - transform: translateX(-50%); - background: rgba(0, 0, 0, 0.8); - color: #fff; - padding: 8px 12px; - border-radius: 4px; - white-space: nowrap; - pointer-events: none; - opacity: 0; - transition: opacity 0.2s; - z-index: 9999; - } - - h1 { - font-size: 2.5em; - background: linear-gradient(45deg, #00ffff, #ff00ff); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - margin-bottom: 10px; - animation: glow 3s ease-in-out infinite; - } - - @keyframes glow { - 0%, 100% { opacity: 0.8; } - 50% { opacity: 1; } - } - - .current-time { - background: rgba(0, 255, 255, 0.1); - border: 2px solid rgba(0, 255, 255, 0.3); - border-radius: 10px; - padding: 20px; - margin-bottom: 20px; - text-align: center; - position: relative; - overflow: hidden; - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - height: var(--clock-size); - } - - .current-time.manual::before { - animation-play-state: paused; - } - - .current-time::before { - content: ''; - position: absolute; - top: -50%; - left: -50%; - width: 200%; - height: 200%; - background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.1), transparent); - transform: rotate(45deg); - animation: sweep 3s linear infinite; - } - - @keyframes sweep { - 0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); } - 100% { transform: translateX(100%) translateY(100%) rotate(45deg); } - } - - .cobie-time { - font-size: 2.5em; - font-family: 'Courier New', monospace; - letter-spacing: 2px; - margin: 10px 0; - text-shadow: 0 0 20px rgba(0, 255, 255, 0.5); - } - - .regular-time { - font-size: 1.2em; - color: #aaa; - } - - .timezone-selector { - margin: 20px 0; - text-align: center; - } - - select { - padding: 10px 20px; - font-size: 16px; - background: rgba(255, 255, 255, 0.1); - border: 1px solid rgba(255, 255, 255, 0.3); - border-radius: 5px; - color: #fff; - cursor: pointer; - transition: all 0.3s ease; - } - - select:hover { - background: rgba(255, 255, 255, 0.2); - transform: translateY(-2px); - } - - .calendar-controls { - display: flex; - justify-content: center; - align-items: center; - gap: 20px; - margin: 20px 0; - } - - button { - padding: 10px 20px; - font-size: 16px; - background: linear-gradient(45deg, #00ffff, #0080ff); - border: none; - border-radius: 5px; - color: #fff; - cursor: pointer; - transition: all 0.3s ease; - position: relative; - overflow: hidden; - } - - button::before { - content: ''; - position: absolute; - top: 50%; - left: 50%; - width: 0; - height: 0; - background: rgba(255, 255, 255, 0.3); - border-radius: 50%; - transform: translate(-50%, -50%); - transition: width 0.6s, height 0.6s; - } - - button:hover::before { - width: 300px; - height: 300px; - } - - button:hover { - transform: translateY(-2px); - box-shadow: 0 5px 15px rgba(0, 255, 255, 0.3); - } - - .calendar-view { - background: rgba(255, 255, 255, 0.05); - border-radius: 15px; - padding: 20px; - backdrop-filter: blur(10px); - border: 1px solid rgba(255, 255, 255, 0.1); - overflow: hidden; - } - - .calendar-header { - text-align: center; - font-size: 1.5em; - margin-bottom: 20px; - color: #00ffff; - } - - .eonstrip-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 15px; - margin-bottom: 20px; - transform: translateX(0); - transition: transform 0.3s ease; - will-change: transform; - } - - .eonstrip-card { - background: rgba(255, 255, 255, 0.08); - border: 1px solid rgba(255, 255, 255, 0.2); - border-radius: 10px; - padding: 15px; - text-align: center; - transition: all 0.3s ease; - cursor: pointer; - position: relative; - overflow: visible; - white-space: normal; - } - - .eonstrip-card::before { - content: ''; - position: absolute; - top: -50%; - left: -50%; - width: 200%; - height: 200%; - background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%); - opacity: 0; - transition: opacity 0.3s ease; - } - - .eonstrip-card:hover::before { - opacity: 1; - } - - .eonstrip-card:hover { - transform: translateY(-5px); - box-shadow: 0 10px 20px rgba(0, 255, 255, 0.2); - border-color: rgba(0, 255, 255, 0.5); - z-index: 1000; - } - - .eonstrip-card:hover .tooltip { - opacity: 1; - } - - .eonstrip-card.current { - background: rgba(0, 255, 255, 0.2); - border-color: rgba(0, 255, 255, 0.5); - } - - .eonstrip-name { - font-size: 1em; - font-weight: bold; - color: #00ffff; - margin-bottom: 5px; - } - - .eonstrip-hex { - font-size: 0.85em; /* was default monospace size */ - font-family: 'Courier New', monospace; - color: #ffaaff; - margin-bottom: 10px; - } - - .eonstrip-dates { - font-size: 0.7em; - color: #aaa; - line-height: 1.4; - } - - .event-tag { - display: inline-block; - margin-top: 4px; - padding: 2px 6px; - font-size: 0.75em; - font-weight: 600; - color: #fff; - background: linear-gradient(135deg, rgba(0,255,255,0.25), rgba(255,0,255,0.25)); - border: 1px solid rgba(255,255,255,0.2); - border-radius: 4px; - text-shadow: 0 0 6px rgba(0,255,255,0.7); - } - - .time-details { - background: rgba(255, 255, 255, 0.05); - border-radius: 10px; - padding: 20px; - margin-top: 20px; - } - - .time-unit { - display: flex; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - } - - .time-unit:last-child { - border-bottom: none; - } - - .unit-name { - color: #00ffff; - font-weight: bold; - } - - .unit-value { - font-family: 'Courier New', monospace; - color: #ffaaff; - } - - .toggle-btn { - background: linear-gradient(45deg, #00ffff, #0080ff); - border: none; - border-radius: 8px; - color: #fff; - font-size: 0.9em; - padding: 8px 16px; - cursor: pointer; - position: relative; - overflow: hidden; - text-transform: uppercase; - letter-spacing: 1px; - box-shadow: 0 0 10px rgba(0,255,255,0.4); - transition: all 0.3s ease; - } - - .toggle-btn .arrow-icon { - display: inline-block; - margin-right: 6px; - transition: transform 0.3s ease; - } - - .toggle-btn:hover { - transform: translateY(-2px); - box-shadow: 0 0 20px rgba(0,255,255,0.6); - } - - .extended-section { - display: none; /* hidden by default */ - margin-top: 10px; - animation: fadeIn 0.4s ease; - } - - /* Simple fade‐in for when extended units show */ - @keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } - } - - @media only screen - and (max-width: 812px) /* iPhone portrait widths go up to ~812px */ - and (orientation: portrait) { - - /* scale down your main text by 30% */ - html { - font-size: 70%; - } - - /* if you prefer targeting only the big “cobie-time” element: */ - .cobie-time { - font-size: 1.75em; /* was 2.5em, which is 70% of 2.5em */ - } - } - - -.eonstrip-grid { - grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); - transform: translateX(0); - transition: transform 0.3s ease; - will-change: transform; -} - -/* Layout combining current time and analog clock */ -.time-display { - --clock-size: 40vmin; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; - align-items: stretch; - gap: 20px; -} - - -.analog-clock-container { - flex: 0 0 auto; - width: var(--clock-size); - margin-left: auto; - display: flex; - justify-content: center; - align-items: center; -} - -#clock { - position: relative; - width: var(--clock-size); - height: var(--clock-size); - border: 2px solid rgba(255, 255, 255, 0.2); - border-radius: 50%; - background: radial-gradient(circle at center, #0a0e27 0%, #1a1f3a 100%); - box-shadow: 0 0 25px rgba(0, 255, 255, 0.2), inset 0 0 40px rgba(255, 0, 255, 0.2); -} - -.clock-center { - position: absolute; - top: 50%; - left: 50%; - width: calc(var(--clock-size) * 0.13); - height: calc(var(--clock-size) * 0.13); - transform: translate(-50%, -50%) translateZ(0); - background: url('logo.svg') center/contain no-repeat; - background-color: transparent; - border-radius: 50%; - /* box-shadow: 0 0 8px rgba(0, 255, 255, 0.8); */ - z-index: 2; - pointer-events: none; -} - -@media screen and (min-width: 1200px) { - .clock-center { - width: calc(var(--clock-size) * 0.085); - height: calc(var(--clock-size) * 0.085); - } -} - -.clock-label { - position: absolute; - bottom: 30%; - left: 50%; - transform: translateX(-50%); - font-family: 'Great Vibes', cursive; - font-size: calc(var(--clock-size) * 0.06); - color: #ffaaff; - text-shadow: 0 0 6px rgba(255, 0, 255, 0.6); - pointer-events: none; - z-index: 0; -} - -body.fullscreen-clock .clock-label { - font-size: calc(var(--clock-size) * 0.08); -} - -.marker { - position: absolute; - width: calc(var(--clock-size) * 0.13); - height: calc(var(--clock-size) * 0.13); - text-align: center; - line-height: calc(var(--clock-size) * 0.13); - /* Use a futuristic font for the clock markers */ - font-family: 'Orbitron', 'Trebuchet MS', 'Lucida Sans', Arial, sans-serif; - font-size: calc(var(--clock-size) * 0.08); - font-weight: 600; - color: #00ffff; - background: none; - border: none; - border-radius: 0; - text-shadow: 0 0 6px rgba(0, 255, 255, 0.9), 0 0 12px rgba(0, 255, 255, 0.7); - box-shadow: none; - transform-origin: center; - font-variant-numeric: tabular-nums; - user-select: none; - pointer-events: none; - will-change: transform; - z-index: 1; -} - -.tick { - position: absolute; - width: 2px; - background: #00ffff; - transform-origin: center top; - z-index: 0; -} - -.tick.mid { - background: #66ffff; -} - -.tick.big { - background: #ffffff; -} - -.hand { - position: absolute; - bottom: 50%; - left: 50%; - transform-origin: bottom center; - transform: translateX(-50%); - transition: transform 0.5s ease-in-out; - border-radius: 2px; - z-index: 1; -} - - -.hand.xeno { - width: 2px; - height: 44%; - background: linear-gradient(to top, #66ccff, #0044ff); - box-shadow: 0 0 8px #66ccff; -} - -.hand.quantic { - width: 3px; - height: 40%; - background: linear-gradient(to top, #ff66ff, #9900ff); - box-shadow: 0 0 8px #ff66ff; -} - -.hand.chronon { - width: 4px; - height: 34%; - background: linear-gradient(to top, #ff4444, #880000); - box-shadow: 0 0 8px #ff4444; -} - -.hand.eonstrip { - width: 5px; - height: 30%; - background: linear-gradient(to top, #33ff99, #006633); - box-shadow: 0 0 8px #33ff99; -} - - -.hand.megasequence { - width: 6px; - height: 26%; - background: linear-gradient(to top, #ffbb33, #aa5500); - box-shadow: 0 0 8px #ffbb33; -} - -@media only screen and (max-height: 430px) and (orientation: landscape) { - .time-display { - --clock-size: 70vmin; - } -} - -body.fullscreen-clock .header, -body.fullscreen-clock .current-time, -body.fullscreen-clock .timezone-selector, -body.fullscreen-clock .calendar-controls, -body.fullscreen-clock .calendar-view, -body.fullscreen-clock .time-details, -body.fullscreen-clock .explanations { - display: none; -} - -body.fullscreen-clock .time-display { - position: fixed; - inset: 0; - justify-content: center; - align-items: center; - z-index: 1000; -} - -body.fullscreen-clock .analog-clock-container { - --clock-size: 80vmin; - width: var(--clock-size); - margin-left: 0; -} - -body.fullscreen-clock #clock { - width: var(--clock-size); - height: var(--clock-size); -} diff --git a/CoBiE/CoBiE.xcodeproj/project.pbxproj b/CoBiE/CoBiE.xcodeproj/project.pbxproj deleted file mode 100644 index 9cdd887..0000000 --- a/CoBiE/CoBiE.xcodeproj/project.pbxproj +++ /dev/null @@ -1,819 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 77; - objects = { - -/* Begin PBXBuildFile section */ -4FF813CC2E00403F00D89535 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FF813CB2E00403E00D89535 /* WidgetKit.framework */; }; -4FF813CE2E00403F00D89535 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FF813CD2E00403F00D89535 /* SwiftUI.framework */; }; -4FF813DD2E00404000D89535 /* CoBiE Analog ClockExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 4FF813C92E00403E00D89535 /* CoBiE Analog ClockExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; -4FF813E72E00404000D89535 /* analog-clock.html in Resources */ = {isa = PBXBuildFile; fileRef = 4FF813E32E00404000D89535 /* analog-clock.html */; }; -4FF813E82E00404000D89535 /* clock.js in Resources */ = {isa = PBXBuildFile; fileRef = 4FF813E42E00404000D89535 /* clock.js */; }; -4FF813E92E00404000D89535 /* cobie.js in Resources */ = {isa = PBXBuildFile; fileRef = 4FF813E52E00404000D89535 /* cobie.js */; }; -4FF813EA2E00404000D89535 /* style.css in Resources */ = {isa = PBXBuildFile; fileRef = 4FF813E62E00404000D89535 /* style.css */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 4FF813A92E003FB600D89535 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 4FF813912E003FB400D89535 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF813982E003FB400D89535; - remoteInfo = CoBiE; - }; - 4FF813B32E003FB600D89535 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 4FF813912E003FB400D89535 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF813982E003FB400D89535; - remoteInfo = CoBiE; - }; - 4FF813DB2E00404000D89535 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 4FF813912E003FB400D89535 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF813C82E00403E00D89535; - remoteInfo = "CoBiE Analog ClockExtension"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 4FF813E22E00404000D89535 /* Embed Foundation Extensions */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; - files = ( - 4FF813DD2E00404000D89535 /* CoBiE Analog ClockExtension.appex in Embed Foundation Extensions */, - ); - name = "Embed Foundation Extensions"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 4FF813992E003FB400D89535 /* CoBiE.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CoBiE.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 4FF813A82E003FB600D89535 /* CoBiETests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoBiETests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 4FF813B22E003FB600D89535 /* CoBiEUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoBiEUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 4FF813C92E00403E00D89535 /* CoBiE Analog ClockExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "CoBiE Analog ClockExtension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4FF813CB2E00403E00D89535 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; -4FF813CD2E00403F00D89535 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; -4FF813E32E00404000D89535 /* analog-clock.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = "analog-clock.html"; path = "CoBiE Analog Clock/Resources/analog-clock.html"; sourceTree = ""; }; -4FF813E42E00404000D89535 /* clock.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = "clock.js"; path = "CoBiE Analog Clock/Resources/clock.js"; sourceTree = ""; }; -4FF813E52E00404000D89535 /* cobie.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = "cobie.js"; path = "CoBiE Analog Clock/Resources/cobie.js"; sourceTree = ""; }; -4FF813E62E00404000D89535 /* style.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; name = "style.css"; path = "CoBiE Analog Clock/Resources/style.css"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - 4FF813DE2E00404000D89535 /* Exceptions for "CoBiE Analog Clock" folder in "CoBiE Analog ClockExtension" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Info.plist, - ); - target = 4FF813C82E00403E00D89535 /* CoBiE Analog ClockExtension */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - -/* Begin PBXFileSystemSynchronizedRootGroup section */ - 4FF8139B2E003FB400D89535 /* CoBiE */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = CoBiE; - sourceTree = ""; - }; - 4FF813AB2E003FB600D89535 /* CoBiETests */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = CoBiETests; - sourceTree = ""; - }; - 4FF813B52E003FB600D89535 /* CoBiEUITests */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = CoBiEUITests; - sourceTree = ""; - }; - 4FF813CF2E00403F00D89535 /* CoBiE Analog Clock */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - 4FF813DE2E00404000D89535 /* Exceptions for "CoBiE Analog Clock" folder in "CoBiE Analog ClockExtension" target */, - ); - path = "CoBiE Analog Clock"; - sourceTree = ""; - }; -/* End PBXFileSystemSynchronizedRootGroup section */ - -/* Begin PBXFrameworksBuildPhase section */ - 4FF813962E003FB400D89535 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813A52E003FB600D89535 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813AF2E003FB600D89535 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813C62E00403E00D89535 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4FF813CE2E00403F00D89535 /* SwiftUI.framework in Frameworks */, - 4FF813CC2E00403F00D89535 /* WidgetKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 4FF813902E003FB400D89535 = { - isa = PBXGroup; - children = ( - 4FF8139B2E003FB400D89535 /* CoBiE */, - 4FF813AB2E003FB600D89535 /* CoBiETests */, - 4FF813B52E003FB600D89535 /* CoBiEUITests */, - 4FF813CF2E00403F00D89535 /* CoBiE Analog Clock */, - 4FF813CA2E00403E00D89535 /* Frameworks */, - 4FF8139A2E003FB400D89535 /* Products */, - ); - sourceTree = ""; - }; - 4FF8139A2E003FB400D89535 /* Products */ = { - isa = PBXGroup; - children = ( - 4FF813992E003FB400D89535 /* CoBiE.app */, - 4FF813A82E003FB600D89535 /* CoBiETests.xctest */, - 4FF813B22E003FB600D89535 /* CoBiEUITests.xctest */, - 4FF813C92E00403E00D89535 /* CoBiE Analog ClockExtension.appex */, - ); - name = Products; - sourceTree = ""; - }; - 4FF813CA2E00403E00D89535 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4FF813CB2E00403E00D89535 /* WidgetKit.framework */, - 4FF813CD2E00403F00D89535 /* SwiftUI.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 4FF813982E003FB400D89535 /* CoBiE */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FF813BC2E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiE" */; - buildPhases = ( - 4FF813952E003FB400D89535 /* Sources */, - 4FF813962E003FB400D89535 /* Frameworks */, - 4FF813972E003FB400D89535 /* Resources */, - 4FF813E22E00404000D89535 /* Embed Foundation Extensions */, - ); - buildRules = ( - ); - dependencies = ( - 4FF813DC2E00404000D89535 /* PBXTargetDependency */, - ); - fileSystemSynchronizedGroups = ( - 4FF8139B2E003FB400D89535 /* CoBiE */, - ); - name = CoBiE; - packageProductDependencies = ( - ); - productName = CoBiE; - productReference = 4FF813992E003FB400D89535 /* CoBiE.app */; - productType = "com.apple.product-type.application"; - }; - 4FF813A72E003FB600D89535 /* CoBiETests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FF813BF2E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiETests" */; - buildPhases = ( - 4FF813A42E003FB600D89535 /* Sources */, - 4FF813A52E003FB600D89535 /* Frameworks */, - 4FF813A62E003FB600D89535 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4FF813AA2E003FB600D89535 /* PBXTargetDependency */, - ); - fileSystemSynchronizedGroups = ( - 4FF813AB2E003FB600D89535 /* CoBiETests */, - ); - name = CoBiETests; - packageProductDependencies = ( - ); - productName = CoBiETests; - productReference = 4FF813A82E003FB600D89535 /* CoBiETests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 4FF813B12E003FB600D89535 /* CoBiEUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FF813C22E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiEUITests" */; - buildPhases = ( - 4FF813AE2E003FB600D89535 /* Sources */, - 4FF813AF2E003FB600D89535 /* Frameworks */, - 4FF813B02E003FB600D89535 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4FF813B42E003FB600D89535 /* PBXTargetDependency */, - ); - fileSystemSynchronizedGroups = ( - 4FF813B52E003FB600D89535 /* CoBiEUITests */, - ); - name = CoBiEUITests; - packageProductDependencies = ( - ); - productName = CoBiEUITests; - productReference = 4FF813B22E003FB600D89535 /* CoBiEUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; - 4FF813C82E00403E00D89535 /* CoBiE Analog ClockExtension */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FF813DF2E00404000D89535 /* Build configuration list for PBXNativeTarget "CoBiE Analog ClockExtension" */; - buildPhases = ( - 4FF813C52E00403E00D89535 /* Sources */, - 4FF813C62E00403E00D89535 /* Frameworks */, - 4FF813C72E00403E00D89535 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - fileSystemSynchronizedGroups = ( - 4FF813CF2E00403F00D89535 /* CoBiE Analog Clock */, - ); - name = "CoBiE Analog ClockExtension"; - packageProductDependencies = ( - ); - productName = "CoBiE Analog ClockExtension"; - productReference = 4FF813C92E00403E00D89535 /* CoBiE Analog ClockExtension.appex */; - productType = "com.apple.product-type.app-extension"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 4FF813912E003FB400D89535 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 2600; - LastUpgradeCheck = 2600; - TargetAttributes = { - 4FF813982E003FB400D89535 = { - CreatedOnToolsVersion = 26.0; - }; - 4FF813A72E003FB600D89535 = { - CreatedOnToolsVersion = 26.0; - TestTargetID = 4FF813982E003FB400D89535; - }; - 4FF813B12E003FB600D89535 = { - CreatedOnToolsVersion = 26.0; - TestTargetID = 4FF813982E003FB400D89535; - }; - 4FF813C82E00403E00D89535 = { - CreatedOnToolsVersion = 26.0; - }; - }; - }; - buildConfigurationList = 4FF813942E003FB400D89535 /* Build configuration list for PBXProject "CoBiE" */; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 4FF813902E003FB400D89535; - minimizedProjectReferenceProxies = 1; - preferredProjectObjectVersion = 77; - productRefGroup = 4FF8139A2E003FB400D89535 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 4FF813982E003FB400D89535 /* CoBiE */, - 4FF813A72E003FB600D89535 /* CoBiETests */, - 4FF813B12E003FB600D89535 /* CoBiEUITests */, - 4FF813C82E00403E00D89535 /* CoBiE Analog ClockExtension */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4FF813972E003FB400D89535 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813A62E003FB600D89535 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813B02E003FB600D89535 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -4FF813C72E00403E00D89535 /* Resources */ = { -isa = PBXResourcesBuildPhase; -buildActionMask = 2147483647; -files = ( -4FF813E72E00404000D89535 /* analog-clock.html in Resources */, -4FF813E82E00404000D89535 /* clock.js in Resources */, -4FF813E92E00404000D89535 /* cobie.js in Resources */, -4FF813EA2E00404000D89535 /* style.css in Resources */, -); -runOnlyForDeploymentPostprocessing = 0; -}; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 4FF813952E003FB400D89535 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813A42E003FB600D89535 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813AE2E003FB600D89535 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF813C52E00403E00D89535 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 4FF813AA2E003FB600D89535 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 4FF813982E003FB400D89535 /* CoBiE */; - targetProxy = 4FF813A92E003FB600D89535 /* PBXContainerItemProxy */; - }; - 4FF813B42E003FB600D89535 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 4FF813982E003FB400D89535 /* CoBiE */; - targetProxy = 4FF813B32E003FB600D89535 /* PBXContainerItemProxy */; - }; - 4FF813DC2E00404000D89535 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 4FF813C82E00403E00D89535 /* CoBiE Analog ClockExtension */; - targetProxy = 4FF813DB2E00404000D89535 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 4FF813BA2E003FB600D89535 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 4FF813BB2E003FB600D89535 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SWIFT_COMPILATION_MODE = wholemodule; - }; - name = Release; - }; - 4FF813BD2E003FB600D89535 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_APP_SANDBOX = YES; - ENABLE_HARDENED_RUNTIME = YES; - ENABLE_PREVIEWS = YES; - ENABLE_USER_SELECTED_FILES = readonly; - GENERATE_INFOPLIST_FILE = YES; - "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; - "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiE; - PRODUCT_NAME = "$(TARGET_NAME)"; - REGISTER_APP_GROUPS = YES; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Debug; - }; - 4FF813BE2E003FB600D89535 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_APP_SANDBOX = YES; - ENABLE_HARDENED_RUNTIME = YES; - ENABLE_PREVIEWS = YES; - ENABLE_USER_SELECTED_FILES = readonly; - GENERATE_INFOPLIST_FILE = YES; - "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; - "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; - "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; - "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiE; - PRODUCT_NAME = "$(TARGET_NAME)"; - REGISTER_APP_GROUPS = YES; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Release; - }; - 4FF813C02E003FB600D89535 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiETests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CoBiE.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/CoBiE"; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Debug; - }; - 4FF813C12E003FB600D89535 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiETests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CoBiE.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/CoBiE"; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Release; - }; - 4FF813C32E003FB600D89535 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiEUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - TEST_TARGET_NAME = CoBiE; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Debug; - }; - 4FF813C42E003FB600D89535 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 26.0; - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = no.kaizenkodo.CoBiEUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = auto; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,7"; - TEST_TARGET_NAME = CoBiE; - XROS_DEPLOYMENT_TARGET = 26.0; - }; - name = Release; - }; - 4FF813E02E00404000D89535 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_APP_SANDBOX = YES; - ENABLE_HARDENED_RUNTIME = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "CoBiE Analog Clock/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "CoBiE Analog Clock"; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@executable_path/../../../../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "no.kaizenkodo.CoBiE.CoBiE-Analog-Clock"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 4FF813E12E00404000D89535 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 8KC3NAN2CJ; - ENABLE_APP_SANDBOX = YES; - ENABLE_HARDENED_RUNTIME = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "CoBiE Analog Clock/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "CoBiE Analog Clock"; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@executable_path/../../../../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 26.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "no.kaizenkodo.CoBiE.CoBiE-Analog-Clock"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4FF813942E003FB400D89535 /* Build configuration list for PBXProject "CoBiE" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FF813BA2E003FB600D89535 /* Debug */, - 4FF813BB2E003FB600D89535 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FF813BC2E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiE" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FF813BD2E003FB600D89535 /* Debug */, - 4FF813BE2E003FB600D89535 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FF813BF2E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiETests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FF813C02E003FB600D89535 /* Debug */, - 4FF813C12E003FB600D89535 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FF813C22E003FB600D89535 /* Build configuration list for PBXNativeTarget "CoBiEUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FF813C32E003FB600D89535 /* Debug */, - 4FF813C42E003FB600D89535 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FF813DF2E00404000D89535 /* Build configuration list for PBXNativeTarget "CoBiE Analog ClockExtension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FF813E02E00404000D89535 /* Debug */, - 4FF813E12E00404000D89535 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 4FF813912E003FB400D89535 /* Project object */; -} diff --git a/CoBiE/CoBiE.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CoBiE/CoBiE.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/CoBiE/CoBiE.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/CoBiE/CoBiE.xcodeproj/project.xcworkspace/xcuserdata/ok.xcuserdatad/UserInterfaceState.xcuserstate b/CoBiE/CoBiE.xcodeproj/project.xcworkspace/xcuserdata/ok.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ca7284d04a796a35104feb505b8a89ff5d7e4b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22144 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 diff --git a/CoBiE/CoBiE.xcodeproj/xcuserdata/ok.xcuserdatad/xcschemes/xcschememanagement.plist b/CoBiE/CoBiE.xcodeproj/xcuserdata/ok.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 8e4a0c5..0000000 --- a/CoBiE/CoBiE.xcodeproj/xcuserdata/ok.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SchemeUserState - - CoBiE Analog ClockExtension.xcscheme_^#shared#^_ - - orderHint - 1 - - CoBiE.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/CoBiE/CoBiE/Assets.xcassets/AccentColor.colorset/Contents.json b/CoBiE/CoBiE/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb87897..0000000 --- a/CoBiE/CoBiE/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE/Assets.xcassets/AppIcon.appiconset/Contents.json b/CoBiE/CoBiE/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index ffdfe15..0000000 --- a/CoBiE/CoBiE/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE/Assets.xcassets/Contents.json b/CoBiE/CoBiE/Assets.xcassets/Contents.json deleted file mode 100644 index 73c0059..0000000 --- a/CoBiE/CoBiE/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CoBiE/CoBiE/CoBiEApp.swift b/CoBiE/CoBiE/CoBiEApp.swift deleted file mode 100644 index d369094..0000000 --- a/CoBiE/CoBiE/CoBiEApp.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// CoBiEApp.swift -// CoBiE -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import SwiftUI -import SwiftData - -@main -struct CoBiEApp: App { - var sharedModelContainer: ModelContainer = { - let schema = Schema([ - Item.self, - ]) - let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false) - - do { - return try ModelContainer(for: schema, configurations: [modelConfiguration]) - } catch { - fatalError("Could not create ModelContainer: \(error)") - } - }() - - var body: some Scene { - WindowGroup { - ContentView() - } - .modelContainer(sharedModelContainer) - } -} diff --git a/CoBiE/CoBiE/ContentView.swift b/CoBiE/CoBiE/ContentView.swift deleted file mode 100644 index 2a6d853..0000000 --- a/CoBiE/CoBiE/ContentView.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// ContentView.swift -// CoBiE -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import SwiftUI -import SwiftData - -struct ContentView: View { - @Environment(\.modelContext) private var modelContext - @Query private var items: [Item] - - var body: some View { - NavigationSplitView { - List { - ForEach(items) { item in - NavigationLink { - Text("Item at \(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))") - } label: { - Text(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard)) - } - } - .onDelete(perform: deleteItems) - } -#if os(macOS) - .navigationSplitViewColumnWidth(min: 180, ideal: 200) -#endif - .toolbar { -#if os(iOS) - ToolbarItem(placement: .navigationBarTrailing) { - EditButton() - } -#endif - ToolbarItem { - Button(action: addItem) { - Label("Add Item", systemImage: "plus") - } - } - } - } detail: { - Text("Select an item") - } - } - - private func addItem() { - withAnimation { - let newItem = Item(timestamp: Date()) - modelContext.insert(newItem) - } - } - - private func deleteItems(offsets: IndexSet) { - withAnimation { - for index in offsets { - modelContext.delete(items[index]) - } - } - } -} - -#Preview { - ContentView() - .modelContainer(for: Item.self, inMemory: true) -} diff --git a/CoBiE/CoBiE/Item.swift b/CoBiE/CoBiE/Item.swift deleted file mode 100644 index 2060fa4..0000000 --- a/CoBiE/CoBiE/Item.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// Item.swift -// CoBiE -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import Foundation -import SwiftData - -@Model -final class Item { - var timestamp: Date - - init(timestamp: Date) { - self.timestamp = timestamp - } -} diff --git a/CoBiE/CoBiETests/CoBiETests.swift b/CoBiE/CoBiETests/CoBiETests.swift deleted file mode 100644 index c2a853b..0000000 --- a/CoBiE/CoBiETests/CoBiETests.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// CoBiETests.swift -// CoBiETests -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import Testing - -struct CoBiETests { - - @Test func example() async throws { - // Write your test here and use APIs like `#expect(...)` to check expected conditions. - } - -} diff --git a/CoBiE/CoBiEUITests/CoBiEUITests.swift b/CoBiE/CoBiEUITests/CoBiEUITests.swift deleted file mode 100644 index afca8b4..0000000 --- a/CoBiE/CoBiEUITests/CoBiEUITests.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// CoBiEUITests.swift -// CoBiEUITests -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import XCTest - -final class CoBiEUITests: XCTestCase { - - override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. - - // In UI tests it is usually best to stop immediately when a failure occurs. - continueAfterFailure = false - - // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. - } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - @MainActor - func testExample() throws { - // UI tests must launch the application that they test. - let app = XCUIApplication() - app.launch() - - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - @MainActor - func testLaunchPerformance() throws { - // This measures how long it takes to launch your application. - measure(metrics: [XCTApplicationLaunchMetric()]) { - XCUIApplication().launch() - } - } -} diff --git a/CoBiE/CoBiEUITests/CoBiEUITestsLaunchTests.swift b/CoBiE/CoBiEUITests/CoBiEUITestsLaunchTests.swift deleted file mode 100644 index df58772..0000000 --- a/CoBiE/CoBiEUITests/CoBiEUITestsLaunchTests.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// CoBiEUITestsLaunchTests.swift -// CoBiEUITests -// -// Created by Oleksandr Kozachuk on 2025-06-16. -// - -import XCTest - -final class CoBiEUITestsLaunchTests: XCTestCase { - - override class var runsForEachTargetApplicationUIConfiguration: Bool { - true - } - - override func setUpWithError() throws { - continueAfterFailure = false - } - - @MainActor - func testLaunch() throws { - let app = XCUIApplication() - app.launch() - - // Insert steps here to perform after app launch but before taking a screenshot, - // such as logging into a test account or navigating somewhere in the app - - let attachment = XCTAttachment(screenshot: app.screenshot()) - attachment.name = "Launch Screen" - attachment.lifetime = .keepAlways - add(attachment) - } -}