Skip to content

BrowserEngineKit iOS xcode15.3 b2

Alex Soto edited this page Feb 8, 2024 · 1 revision

#BrowserEngineKit.framework

diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BECapability.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BECapability.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BECapability.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BECapability.h	2024-01-31 23:25:21
@@ -0,0 +1,160 @@
+//
+//  BEProcesses.h
+//  BrowserEngineServices
+//
+
+#import <Foundation/Foundation.h>
+#import <BrowserEngineKit/BEMacros.h>
+#import <BrowserEngineKit/BEWebContentProcess.h>
+#import <BrowserEngineKit/BERenderingProcess.h>
+#import <BrowserEngineKit/BENetworkingProcess.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVCaptureSession;
+
+/// An object that represents a granted capability.
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(macos(14.3), ios(17.4))
+API_UNAVAILABLE(watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@protocol BEProcessCapabilityGrant <NSObject>
+
+/// Invalidates the grant, removing the capability from the process it was granted to.
+-(BOOL)invalidate;
+
+/// `YES` if the process has been granted the capability and the grant is still valid.
+@property(readonly, getter=isValid) BOOL valid;
+
+@end
+
+
+/// An object that represents a media playback envirnment
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(ios(17.4))
+API_UNAVAILABLE(macos, watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@interface BEMediaEnvironment : NSObject
+
+-(instancetype)init NS_UNAVAILABLE;
++(instancetype)new NS_UNAVAILABLE;
+
+/// Creates a new media playback environment identified by the web page URL
+///
+/// - Parameters:
+///   - url: The URL identifying the media playback environment
+-(instancetype)initWithWebPageURL:(NSURL*)url NS_DESIGNATED_INITIALIZER;
+
+#if BROWSERENGINEKIT_HAS_LIBXPC
+/// Create a media session from an XPC representation
+///
+/// - Parameters:
+///   - xpcRepresentation: The XPC representation of a BEMediaEnvironment received via XPC
+-(nullable instancetype)initWithXPCRepresentation:(xpc_object_t)xpcRepresentation error:(NSError* _Nullable*)error;
+
+/// Create an `xpc_object_t` that represents the media environment.
+-(xpc_object_t)createXPCRepresentation;
+#endif
+
+/// Activates the media environment.
+-(BOOL)activateWithError:(NSError* _Nullable*)error;
+
+/// Suspends the media environment.
+-(BOOL)suspendWithError:(NSError* _Nullable*)error;
+
+/// Creates a new capture session in this media environment.
+///
+/// The media environment must be activated before the capture session can be started.
+-(nullable AVCaptureSession*)makeCaptureSessionWithError:(NSError* _Nullable*)error;
+
+@end
+
+
+/// An object representing capabilities that can be granted to a helper extension process.
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(macos(14.3), ios(17.4))
+API_UNAVAILABLE(watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@interface BEProcessCapability : NSObject
+
+/// The helper extension process may access AV hardware required for media capture and playback.
++(instancetype)mediaPlaybackAndCaptureWithEnvironment:(BEMediaEnvironment*)environment API_UNAVAILABLE(macosx);
+
+
+/// The helper extension process may run in the background to finish work.
++(instancetype)background;
+
+/// The helper extension process may run at foreground priority to work on behalf of the host process while it is foreground.
++(instancetype)foreground;
+
+/// The helper extension process may remain resident in a suspended state (it will not be granted CPU time).
++(instancetype)suspended;
+
+/// Requests the capability to be granted to the current process.
+///
+/// Returns the granted capability or nil and an error if it can not be granted
+-(id<BEProcessCapabilityGrant>)requestWithError:(NSError* _Nullable*)error;
+
+@end
+
+
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(macos(14.3), ios(17.4))
+API_UNAVAILABLE(watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@interface BEWebContentProcess (Capability)
+
+/// Grants the specified capability to the process.
+///
+/// This method grants the specified capability to the process or returns nil and an error if it can not be granted.
+///
+/// - Parameters:
+///   - capability: The capability to be granted
+///   - error: The error out param populated if the capability cannot be granted.
+///
+///  - Returns: an invalidatable grant object that represents the granted capability.
+-(nullable id<BEProcessCapabilityGrant>)grantCapability:(BEProcessCapability*)capability error:(NSError* _Nullable*)error;
+
+@end
+
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(macos(14.3), ios(17.4))
+API_UNAVAILABLE(watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@interface BERenderingProcess (Capability)
+
+/// Grants the specified capability to the process.
+///
+/// This method grants the specified capability to the process or returns nil and an error if it can not be granted.
+///
+/// - Parameters:
+///   - capability: The capability to be granted
+///   - error: The error out param populated if the capability cannot be granted.
+///
+///  - Returns: an invalidatable grant object that represents the granted capability.
+-(nullable id<BEProcessCapabilityGrant>)grantCapability:(BEProcessCapability*)capability error:(NSError* _Nullable*)error;
+
+@end
+
+NS_REFINED_FOR_SWIFT
+API_AVAILABLE(macos(14.3), ios(17.4))
+API_UNAVAILABLE(watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+@interface BENetworkingProcess (Capability)
+
+/// Grants the specified capability to the process.
+///
+/// This method grants the specified capability to the process or returns nil and an error if it can not be granted.
+///
+/// - Parameters:
+///   - capability: The capability to be granted
+///   - error: The error out param populated if the capability cannot be granted.
+///
+///  - Returns: an invalidatable grant object that represents the granted capability.
+-(nullable id<BEProcessCapabilityGrant>)grantCapability:(BEProcessCapability*)capability error:(NSError* _Nullable*)error;
+
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntry.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntry.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntry.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntry.h	2024-01-30 23:50:09
@@ -1,5 +1,5 @@
 //
-//  BEKeyEvent.h
+//  BEKeyEntry.h
 //
 //  Copyright © 2024 Apple Inc. All rights reserved.
 //
@@ -30,7 +30,9 @@
 /**
  * Type of the event, indicating whether it represents when the key is pressed or released.
  */
-@property (nonatomic, readonly) BEKeyPressState type;
+@property (nonatomic, readonly) BEKeyPressState state;
+
+@property (nonatomic, readonly) BEKeyPressState type API_DEPRECATED_WITH_REPLACEMENT("state", ios(17.4, 17.4));
 
 /**
  *  Represents whether the event is repeating.
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntryContext.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntryContext.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntryContext.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEKeyEntryContext.h	2024-01-30 23:50:07
@@ -1,5 +1,5 @@
 //
-//  BEKeyEventContext.h
+//  BEKeyEntryContext.h
 //
 //  Copyright © 2024 Apple Inc. All rights reserved.
 //
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchy.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchy.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchy.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchy.h	2024-01-30 23:50:09
@@ -0,0 +1,43 @@
+//
+//  BELayerHierarchy.h
+//  BrowserEngineKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <BrowserEngineKit/BELayerHierarchyHandle.h>
+#import <BrowserEngineKit/BEMacros.h>
+#import <Foundation/Foundation.h>
+#import <QuartzCore/QuartzCore.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+API_AVAILABLE(ios(17.4))
+API_UNAVAILABLE(macos, watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+BROWSERENGINE_FINAL
+NS_SWIFT_UI_ACTOR
+NS_SWIFT_NAME(LayerHierarchy)
+@interface BELayerHierarchy : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// may fail if a connection to the render server cannot be established
++ (nullable BELayerHierarchy *)layerHierarchyWithError:(NSError **)error NS_SWIFT_NAME(init());
+
+/// a reference to this `BELayerHierarchy` for use with `BELayerHierarchyHostingView`
+@property (nonatomic, readonly, strong) BELayerHierarchyHandle *handle NS_SWIFT_NAME(handle);
+
+/// the root layer of this hierarchy
+@property (nonatomic, strong, nullable) CALayer *layer NS_SWIFT_NAME(layer);
+
+/// invalidate must be called before this layer hierarchy is disposed of
+- (void)invalidate NS_SWIFT_NAME(invalidate());
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHandle.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHandle.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHandle.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHandle.h	2024-01-30 23:50:09
@@ -0,0 +1,34 @@
+//
+//  BEHostingHandle.h
+//  BrowserEngineKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <BrowserEngineKit/BEMacros.h>
+#import <Foundation/Foundation.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+API_AVAILABLE(ios(17.4))
+API_UNAVAILABLE(macos, watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+BROWSERENGINE_FINAL
+NS_SWIFT_SENDABLE
+NS_SWIFT_NAME(LayerHierarchyHandle)
+@interface BELayerHierarchyHandle : NSObject <NSSecureCoding>
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+#if BROWSERENGINEKIT_HAS_LIBXPC
++ (nullable BELayerHierarchyHandle *)handleWithXPCRepresentation:(nullable xpc_object_t)xpcRepresentation error:(NSError **)error NS_SWIFT_NAME(init(xpcRepresentation:));
+- (xpc_object_t)createXPCRepresentation NS_SWIFT_NAME(createXPCRepresentation());
+#endif
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingTransactionCoordinator.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingTransactionCoordinator.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingTransactionCoordinator.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingTransactionCoordinator.h	2024-01-30 23:50:09
@@ -0,0 +1,51 @@
+//
+//  BELayerHierarchyHostingTransactionCoordinator.h
+//  BrowserEngineKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <BrowserEngineKit/BELayerHierarchy.h>
+#import <BrowserEngineKit/BELayerHierarchyHostingView.h>
+#import <BrowserEngineKit/BEMacros.h>
+#import <Foundation/Foundation.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+API_AVAILABLE(ios(17.4))
+API_UNAVAILABLE(macos, watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+BROWSERENGINE_FINAL
+NS_SWIFT_SENDABLE
+NS_SWIFT_NAME(LayerHierarchyHostingTransactionCoordinator)
+@interface BELayerHierarchyHostingTransactionCoordinator : NSObject <NSSecureCoding>
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// may fail if a connection to the render server cannot be established
++ (nullable BELayerHierarchyHostingTransactionCoordinator *)coordinatorWithError:(NSError **)error NS_SWIFT_NAME(init());
+
+#if BROWSERENGINEKIT_HAS_LIBXPC
++ (nullable BELayerHierarchyHostingTransactionCoordinator *)coordinatorWithXPCRepresentation:(nullable xpc_object_t)xpcRepresentation error:(NSError **)error NS_SWIFT_NAME(init(xpcRepresentation:));
+- (xpc_object_t)createXPCRepresentation NS_SWIFT_NAME(createXPCRepresentation());
+#endif
+
+/// a signal to coordinate transactions involving `layerHierarchy` from now until `commit` is called
+- (void)addLayerHierarchy:(BELayerHierarchy *)layerHierarchy NS_SWIFT_UI_ACTOR NS_SWIFT_NAME(add(_:));
+#if BROWSERENGINEKIT_HAS_UIVIEW
+/// a signal to coordinate transactions involving `hostingView` from now until `commit` is called
+- (void)addLayerHierarchyHostingView:(BELayerHierarchyHostingView *)hostingView NS_SWIFT_UI_ACTOR NS_SWIFT_NAME(add(_:));
+#endif
+
+/// `commit` must be called on _every_ instance and it must be the last call to each instance.
+/// note that it does not commit `CATransaction`s but rather commits the coordination of transactions in the render server.
+/// note that coordinators should have as constrained a lifespan as possible and will timeout if held open too long.
+- (void)commit NS_SWIFT_UI_ACTOR NS_SWIFT_NAME(commit());
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingView.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingView.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingView.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BELayerHierarchyHostingView.h	2024-01-30 23:50:09
@@ -0,0 +1,35 @@
+//
+//  BELayerHierarchyHostingView.h
+//  BrowserEngineKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <BrowserEngineKit/BELayerHierarchyHandle.h>
+#import <BrowserEngineKit/BEMacros.h>
+#import <Foundation/Foundation.h>
+
+#if BROWSERENGINEKIT_HAS_UIVIEW
+
+#import <UIKit/UIKit.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+API_AVAILABLE(ios(17.4))
+API_UNAVAILABLE(macos, watchos, tvos, visionos)
+BROWSERENGINE_EXPORT
+NS_SWIFT_UI_ACTOR
+NS_SWIFT_NAME(LayerHierarchyHostingView)
+@interface BELayerHierarchyHostingView : UIView
+
+/// a reference to a BELayerHierarchy whose contents should appear as the contents of this view
+@property (nonatomic, strong, nullable) BELayerHierarchyHandle *handle NS_SWIFT_NAME(handle);
+
+@end
+
+
+NS_ASSUME_NONNULL_END
+
+#endif
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEMacros.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEMacros.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEMacros.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEMacros.h	2024-01-30 23:50:08
@@ -4,4 +4,7 @@
 
 #import <BrowserEngineCore/BEMacros.h>
 
+#define BROWSERENGINEKIT_HAS_UIINTERACTION __has_include(<UIKit/UIInteraction.h>)
 #define BROWSERENGINEKIT_HAS_UIVIEW __has_include(<UIKit/UIView.h>)
+
+#define BROWSERENGINEKIT_HAS_LIBXPC TARGET_OS_IOS && !TARGET_OS_VISION
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BERenderingProcess.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BERenderingProcess.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BERenderingProcess.h	2024-01-20 23:26:35
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BERenderingProcess.h	2024-01-30 23:50:09
@@ -11,6 +11,11 @@
 #include <xpc/xpc.h>
 #endif
 
+#if BROWSERENGINEKIT_HAS_UIINTERACTION
+#import <UIKit/UIInteraction.h>
+#endif
+
+
 NS_ASSUME_NONNULL_BEGIN
 
 /// An object that represents a running GPU extension process.
@@ -57,6 +62,14 @@
 -(nullable xpc_connection_t)makeLibXPCConnectionError:(NSError* _Nullable*)error;
 
 #endif // TARGET_OS_OSX || TARGET_OS_IOS
+
+
+#if BROWSERENGINEKIT_HAS_UIINTERACTION
+/// attach the created interaction to a view to express that the content of that view is directly related to the working of this process.
+/// therefore, if the view is considered visible by the system then this process must also be considered to be visible.
+/// do not attempt to set an interaction on multiple views as interactions track their views - instead create a new interaction for each view that you want to propogate visibility to this process.
+- (id<UIInteraction>)createVisibilityPropagationInteraction;
+#endif
 
 @end
 
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextAlternatives.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextAlternatives.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextAlternatives.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextAlternatives.h	2024-01-30 23:50:08
@@ -25,6 +25,9 @@
  */
 @property (readonly) NSArray<NSString *> *alternativeStrings;
 
+- (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentContext.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentContext.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentContext.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentContext.h	2024-01-30 23:50:07
@@ -51,6 +51,9 @@
  */
 @property (nonatomic, copy) NSArray<NSValue *> *autocorrectedRanges;
 
+- (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentRequest.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentRequest.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentRequest.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextDocumentRequest.h	2024-01-30 23:50:08
@@ -40,6 +40,9 @@
  */
 @property (nonatomic, assign) NSInteger granularityCount;
 
+- (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInput.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInput.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInput.h	2024-01-20 23:29:49
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInput.h	2024-01-31 23:25:21
@@ -44,6 +44,63 @@
     BEKeyModifierFlagCapsLock
 } BROWSERENGINE_TEXTINPUT_AVAILABILITY;
 
+#pragma mark - Extended Edit Actions
+
+BROWSERENGINE_EXPORT BROWSERENGINE_TEXTINPUT_AVAILABILITY
+@protocol BEResponderEditActions <UIResponderStandardEditActions>
+
+@optional
+
+/**
+ *  Shares the selected content.
+ *  See corresponding share methods in BETextInteraction.
+ */
+- (void)share:(nullable id)sender;
+
+/**
+ *  Adds a text replacement shortcut to the keyboard dictionary.
+ *  See corresponding shortcut methods in BETextInteraction.
+ */
+- (void)addShortcut:(nullable id)sender;
+
+/**
+ *  Presents a dictionary definition for the selected content.
+ *  See corresponding dictionary methods in BETextInteraction.
+ */
+- (void)lookup:(nullable id)sender;
+
+/**
+ *  Performs a find for the selected content
+ *  See find related methods in UIResponderStandardEditActions
+ */
+- (void)findSelected:(nullable id)sender;
+
+/**
+ *  Shows the replacements for the selected content.
+ *  See corresponding replacement methods in BETextInteraction.
+ */
+- (void)promptForReplace:(nullable id)sender;
+
+/**
+ *  Inserts the selected replacement for the selected content.
+ *  See corresponding replacement methods in BETextInputDelegate
+ */
+- (void)replace:(nullable id)sender;
+
+/**
+ *  Presents a translation view for the selected content.
+ *  See corresponding translation methods in BETextInteraction.
+ */
+- (void)translate:(nullable id)sender;
+
+/**
+ *  Converts the selected content between traditional and simplified Chinese
+ *  See corresponding transliteration methods in BETextInteraction.
+ */
+- (void)transliterateChinese:(nullable id)sender;
+
+@end
+
 #pragma mark - Text navigation
 
 BROWSERENGINE_EXPORT BROWSERENGINE_TEXTINPUT_AVAILABILITY
@@ -114,7 +171,7 @@
 @end
 
 BROWSERENGINE_EXPORT BROWSERENGINE_TEXTINPUT_AVAILABILITY
-@protocol BETextInput <UIKeyInput, BETextSelectionDirectionNavigation>
+@protocol BETextInput <UIKeyInput, BETextSelectionDirectionNavigation, BEResponderEditActions>
 
 /**
  *  A system-provided input delegate is assigned when the system is interested in input changes.
@@ -136,7 +193,7 @@
 /**
  *  Delegates the handling for each stage of a key event (key down, press, up) and allows the BETextInput object to indicate whether it should prevent default system behaviors.
  */
-- (void)handleKeyEntry:(BEKeyEntry *)event withCompletionHandler:(void (^)(BEKeyEntry *theEvent, BOOL wasHandled))completionHandler;
+- (void)handleKeyEntry:(BEKeyEntry *)entry withCompletionHandler:(void (^)(BEKeyEntry *theEvent, BOOL wasHandled))completionHandler NS_SWIFT_NAME(handleKeyEntry(_:completionHandler:));
 
 /**
  *  Indicates a transition in shift state
@@ -274,7 +331,7 @@
  *  For example, see the keyboard's trackpad selection gesture explained in
  *  "Turn the onscreen keyboard into a trackpad" guide on support.apple.com
  */
-- (void)setSelectionFromPoint:(CGPoint)from toPoint:(CGPoint)to gesture:(BEGestureType)gestureType state:(UIGestureRecognizerState)gestureState;
+- (void)setSelectionFromPoint:(CGPoint)from toPoint:(CGPoint)to gesture:(BEGestureType)gesture state:(UIGestureRecognizerState)state NS_SWIFT_NAME(setSelection(from:to:gesture:state:));
 
 /**
  *  Adjusts the selection's start or end boundary specified by `boundaryIsStart` to the `point`
@@ -296,7 +353,7 @@
 /**
  *  String representing the selected text.
  */
-@property (nonatomic, readonly) NSString *selectedText;
+@property (nullable, readonly) NSString *selectedText;
 
 /**
  *  Range representing the selected text.
@@ -332,13 +389,21 @@
  *  For example, while holding shift, click a point in a text document and the current selection should adjust to include
  *  all the text up to that point.
  */
-- (void)updateSelectionWithExtentPoint:(CGPoint)point withBoundary:(UITextGranularity)granularity completionHandler:(void (^)(BOOL selectionEndIsMoving))completionHandler;
+- (void)updateSelectionWithExtentPoint:(CGPoint)point boundary:(UITextGranularity)granularity completionHandler:(void (^)(BOOL selectionEndIsMoving))completionHandler NS_SWIFT_NAME(updateSelection(extent:boundary:completionHandler:));
 
+@optional
+- (void)updateSelectionWithExtentPoint:(CGPoint)point withBoundary:(UITextGranularity)granularity completionHandler:(void (^)(BOOL selectionEndIsMoving))completionHandler API_DEPRECATED_WITH_REPLACEMENT("updateSelectionWithExtentPoint:boundary:completionHandler", ios(17.4, 17.4));
+@required
+
 /**
  *  Updates the selection to text contained within the specified `granularity` at the given `point`
  */
-- (void)selectTextWithGranularity:(UITextGranularity)granularity atPoint:(CGPoint)point completionHandler:(void (^)(void))completionHandler;
+- (void)selectTextInGranularity:(UITextGranularity)granularity atPoint:(CGPoint)point completionHandler:(void (^)(void))completionHandler NS_SWIFT_NAME(selectText(in:at:completionHandler:));
 
+@optional
+- (void)selectTextWithGranularity:(UITextGranularity)granularity atPoint:(CGPoint)point completionHandler:(void (^)(void))completionHandler API_DEPRECATED_WITH_REPLACEMENT("selectTextInGranularity:atPoint:completionHandler", ios(17.4, 17.4));
+@required
+
 /**
  *  Sets the selection caret to the given point
  */
@@ -347,7 +412,7 @@
 /**
  *  Sets the selection caret to the given point.  Also includes a convenience document context request.
  */
-- (void)selectPositionAtPoint:(CGPoint)point withContextRequest:(BETextDocumentRequest *)request completionHandler:(void (^)(BETextDocumentContext *))completionHandler;
+- (void)selectPositionAtPoint:(CGPoint)point withContextRequest:(BETextDocumentRequest *)request completionHandler:(void (^)(BETextDocumentContext *))completionHandler NS_SWIFT_NAME(selectPosition(at:for:completionHandler:));
 
 /**
  *  Adjusts the selection by the moving the selected range by the given `range`, in character granularity units.
@@ -387,12 +452,12 @@
 /**
  *  String for the text that has been marked as part of an active input session
  */
-@property (nonatomic, readonly) NSString *markedText;
+@property (nullable, nonatomic, readonly) NSString *markedText;
 
 /**
  *  Attributed string for the text that has been marked as part of an active input session
  */
-@property (nonatomic, readonly) NSAttributedString *attributedMarkedText;
+@property (nullable, nonatomic, readonly) NSAttributedString *attributedMarkedText;
 
 /**
  *  Range representing the position of the markedText.
@@ -466,7 +531,7 @@
 /**
  *   Returns the text alternatives that are available to the text input object.
  */
-- (NSArray<BETextAlternatives *> *)alternativesForSelectedText;
+- (nullable NSArray<BETextAlternatives *> *)alternativesForSelectedText;
 
 /**
  *  Adds text alternatives to the text input object for the current selection
@@ -485,7 +550,7 @@
  *  If `size.height` is less than or equal to zero, then the placeholder is inline and line height.
  *  If `size.height` is greather than zero, then the placeholder is treated as a paragraph of height `size.height`.
  */
-- (void)insertTextPlaceholderWithSize:(CGSize)size completionHandler:(void (^)(UITextPlaceholder *))completionHandler;
+- (void)insertTextPlaceholderWithSize:(CGSize)size completionHandler:(void (^)(UITextPlaceholder *))completionHandler NS_SWIFT_NAME(insertTextPlaceholder(size:completionHandler:));
 
 /**
  *  Removes a placeholder object from the text input view.
@@ -502,7 +567,6 @@
 #pragma mark - Geometry
 /**
  *  An affiliated view that provides a coordinate system for all geometric values in this protocol.
- *  If unimplemented, the first view in the responder chain will be selected.
  */
 @property (nonatomic, readonly) __kindof UIView *textInputView;
 
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInputDelegate.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInputDelegate.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInputDelegate.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInputDelegate.h	2024-01-30 23:50:08
@@ -1,8 +1,7 @@
 //
 //  BETextInputDelegate.h
-//  ServiceExtensions
 //
-//  Copyright © 2023 Apple Inc. All rights reserved.
+//  Copyright © 2024 Apple Inc. All rights reserved.
 //
 
 #import <BrowserEngineKit/BETextInput.h>
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInteraction.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInteraction.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInteraction.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextInteraction.h	2024-01-31 23:25:20
@@ -28,22 +28,22 @@
  *
  *  Generally used for IME languages, such as Chinese/Japanese
  */
-- (void)addShortcutForText:(NSString *)text fromRect:(CGRect)presentationRect;
+- (void)addShortcutForText:(NSString *)text fromRect:(CGRect)presentationRect NS_SWIFT_NAME(addShortcut(forText:from:));
 
 /**
  * Presents a share sheet for the `text` positioned relative to the `presentationRect`
  */
-- (void)shareText:(NSString *)text fromRect:(CGRect)presentationRect;
+- (void)shareText:(NSString *)text fromRect:(CGRect)presentationRect NS_SWIFT_NAME(share(text:from:));
 
 /**
  *  Presents a dictionary definition view for the `textWithContext` positioned relative to the `presentationRect`
  */
-- (void)showDictionaryForTextInContext:(NSString *)textWithContext definingTextInRange:(NSRange)range fromRect:(CGRect)presentationRect;
+- (void)showDictionaryForTextInContext:(NSString *)textWithContext definingTextInRange:(NSRange)range fromRect:(CGRect)presentationRect NS_SWIFT_NAME(showDictionary(forTextInContext:definingTextInRange:from:));
 
 /**
  *  Presents a translation view for the `text` positioned relative to the `presentationRect`
  */
-- (void)translateText:(NSString *)text fromRect:(CGRect)presentationRect;
+- (void)translateText:(NSString *)text fromRect:(CGRect)presentationRect NS_SWIFT_NAME(translate(text:from:));
 
 /**
  *  Displays the inline text replacement UI for the current selection.
@@ -51,14 +51,14 @@
  *
  *  Could be invoked when handling `promptForReplace:` action
  */
-- (void)showReplacementsForText:(NSString *)text;
+- (void)showReplacementsForText:(NSString *)text NS_SWIFT_NAME(showReplacements(forText:));
 
 /**
  *  Converts the text selection between traditional and simplified Chinese
  *
  *  Could be invoked when handling `transliterateChinese` action
  */
-- (void)transliterateChineseForText:(NSString *)text;
+- (void)transliterateChineseForText:(NSString *)text NS_SWIFT_NAME(transliterateChinese(forText:));
 
 /**
  *  Presents an edit menu for the current text selection
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextSelectionTypes.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextSelectionTypes.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextSelectionTypes.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BETextSelectionTypes.h	2024-01-30 23:50:08
@@ -1,5 +1,5 @@
 //
-//  BETextSuggestion.h
+//  BETextSelectionTypes.h
 //
 //  Copyright © 2024 Apple Inc. All rights reserved.
 //
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEWebContentProcess.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEWebContentProcess.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEWebContentProcess.h	2024-01-20 23:26:35
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BEWebContentProcess.h	2024-01-30 23:50:09
@@ -11,6 +11,11 @@
 #include <xpc/xpc.h>
 #endif // TARGET_OS_OSX || TARGET_OS_IOS && !TARGET_OS_VISION
 
+#if BROWSERENGINEKIT_HAS_UIINTERACTION
+#import <UIKit/UIInteraction.h>
+#endif
+
+
 NS_ASSUME_NONNULL_BEGIN
 
 /// An object that represents a running web content extension process.
@@ -54,6 +59,13 @@
 /// - Returns: The connection object representing the created libXPC connection or nil.
 -(nullable xpc_connection_t)makeLibXPCConnectionError:(NSError* _Nullable*)error;
 #endif // TARGET_OS_OSX || TARGET_OS_IOS
+
+#if BROWSERENGINEKIT_HAS_UIINTERACTION
+/// attach the created interaction to a view to express that the content of that view is directly related to the working of this process.
+/// therefore, if the view is considered visible by the system then this process must also be considered to be visible.
+/// do not attempt to set an interaction on multiple views as interactions track their views - instead create a new interaction for each view that you want to propogate visibility to this process.
+- (id<UIInteraction>)createVisibilityPropagationInteraction;
+#endif
 
 @end
 
diff -ruN /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BrowserEngineKit.h /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BrowserEngineKit.h
--- /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BrowserEngineKit.h	2024-01-20 23:26:34
+++ /Applications/Xcode_15.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/BrowserEngineKit.framework/Headers/BrowserEngineKit.h	2024-01-30 23:50:07
@@ -5,6 +5,11 @@
 #import <Foundation/Foundation.h>
 #import <BrowserEngineCore/BrowserEngineCore.h>
 
+#import <BrowserEngineKit/BELayerHierarchy.h>
+#import <BrowserEngineKit/BELayerHierarchyHandle.h>
+#import <BrowserEngineKit/BELayerHierarchyHostingTransactionCoordinator.h>
+#import <BrowserEngineKit/BELayerHierarchyHostingView.h>
+
 #import <BrowserEngineKit/BEMacros.h>
 #import <BrowserEngineKit/BEContextMenuConfiguration.h>
 #import <BrowserEngineKit/BEDragInteraction.h>
@@ -30,3 +35,6 @@
 
 #import <BrowserEngineKit/BETextDocumentRequest.h>
 #import <BrowserEngineKit/BETextDocumentContext.h>
+
+
+#import <BrowserEngineKit/BECapability.h>
Clone this wiki locally