- Gate every layer behind AppLockView when the lock is enabled and lock on launch and on backgrounding; the passcode lives only in the Keychain (AppLockVault) and the enable state defaults to off. - Add the lock section to Settings: enable/setup, change passcode and disable all require the current passcode via a shared passcode sheet; Face ID / Touch ID unlock prompts automatically and can be toggled with passcode confirmation. - Add NSFaceIDUsageDescription to both app targets, cover the passcode policy with tests, guard the feature in verify.sh and document it in SECURITY.md.
221 lines
7.4 KiB
YAML
221 lines
7.4 KiB
YAML
name: Luma
|
|
|
|
options:
|
|
bundleIdPrefix: app.luma
|
|
createIntermediateGroups: true
|
|
developmentLanguage: ru
|
|
indentWidth: 4
|
|
tabWidth: 4
|
|
xcodeVersion: "16.0"
|
|
|
|
configs:
|
|
Debug: debug
|
|
Release: release
|
|
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: 5.9
|
|
CURRENT_PROJECT_VERSION: 31
|
|
MARKETING_VERSION: 0.10.6
|
|
ENABLE_USER_SCRIPT_SANDBOXING: true
|
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED: true
|
|
COMPANION_BUNDLE_IDENTIFIER: app.luma.chat
|
|
configs:
|
|
Debug:
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG
|
|
Release:
|
|
SWIFT_COMPILATION_MODE: wholemodule
|
|
|
|
packages:
|
|
Martin:
|
|
url: https://github.com/tigase/Martin.git
|
|
exactVersion: 3.2.4
|
|
MartinOMEMO:
|
|
url: https://github.com/tigase/MartinOMEMO.git
|
|
exactVersion: 2.2.3
|
|
WebRTC:
|
|
url: https://github.com/stasel/WebRTC.git
|
|
exactVersion: 150.0.0
|
|
|
|
targets:
|
|
Luma:
|
|
type: application
|
|
platform: iOS
|
|
deploymentTarget: "17.0"
|
|
sources:
|
|
- path: Sources/App
|
|
- path: Sources/Shared
|
|
- path: Resources/Shared.xcassets
|
|
buildPhase: resources
|
|
- path: Resources/AppAssets.xcassets
|
|
buildPhase: resources
|
|
dependencies:
|
|
- package: Martin
|
|
- package: MartinOMEMO
|
|
- package: WebRTC
|
|
- target: LumaWatch
|
|
info:
|
|
path: Config/Luma-Info.plist
|
|
properties:
|
|
CFBundleDisplayName: Luma
|
|
CFBundleIconName: AppIcon
|
|
CFBundleShortVersionString: $(MARKETING_VERSION)
|
|
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
|
|
UILaunchScreen: {}
|
|
UIBackgroundModes:
|
|
- audio
|
|
- fetch
|
|
- remote-notification
|
|
UISupportsDocumentBrowser: false
|
|
UIApplicationSupportsIndirectInputEvents: true
|
|
NSCameraUsageDescription: Luma использует камеру для фотографий, видеосообщений и видеозвонков.
|
|
NSMicrophoneUsageDescription: Luma использует микрофон для голосовых сообщений и звонков.
|
|
NSLocalNetworkUsageDescription: Luma использует локальную сеть для прямого соединения аудио- и видеозвонков.
|
|
NSLocationWhenInUseUsageDescription: Luma использует геопозицию только когда вы выбираете отправку точки в чате.
|
|
NSFaceIDUsageDescription: Luma использует Face ID для разблокировки приложения.
|
|
entitlements:
|
|
path: Config/Luma.entitlements
|
|
properties: {}
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: $(COMPANION_BUNDLE_IDENTIFIER)
|
|
PRODUCT_NAME: Luma
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
SUPPORTS_MACCATALYST: false
|
|
DEVELOPMENT_TEAM: K3AS449A74
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS: true
|
|
INFOPLIST_KEY_CFBundleIconName: AppIcon
|
|
|
|
LumaMac:
|
|
type: application
|
|
platform: macOS
|
|
deploymentTarget: "14.0"
|
|
sources:
|
|
- path: Sources/App
|
|
- path: Sources/Shared
|
|
- path: Resources/Shared.xcassets
|
|
buildPhase: resources
|
|
- path: Resources/AppAssets.xcassets
|
|
buildPhase: resources
|
|
dependencies:
|
|
- package: Martin
|
|
- package: MartinOMEMO
|
|
- package: WebRTC
|
|
info:
|
|
path: Config/LumaMac-Info.plist
|
|
properties:
|
|
CFBundleDisplayName: Luma
|
|
CFBundleIconName: AppIcon
|
|
CFBundleShortVersionString: $(MARKETING_VERSION)
|
|
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
|
|
LSApplicationCategoryType: public.app-category.social-networking
|
|
NSHighResolutionCapable: true
|
|
NSCameraUsageDescription: Luma использует камеру для фотографий, видеосообщений и видеозвонков.
|
|
NSMicrophoneUsageDescription: Luma использует микрофон для голосовых сообщений и звонков.
|
|
NSLocationUsageDescription: Luma использует геопозицию только когда вы выбираете отправку точки в чате.
|
|
NSFaceIDUsageDescription: Luma использует Touch ID для разблокировки приложения.
|
|
entitlements:
|
|
path: Config/LumaMac.entitlements
|
|
properties:
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.network.client: true
|
|
com.apple.security.network.server: true
|
|
com.apple.security.files.user-selected.read-only: true
|
|
com.apple.security.device.camera: true
|
|
com.apple.security.device.audio-input: true
|
|
com.apple.security.personal-information.location: true
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: app.luma.chat.macos
|
|
PRODUCT_NAME: Luma
|
|
DEVELOPMENT_TEAM: K3AS449A74
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS: true
|
|
INFOPLIST_KEY_CFBundleIconName: AppIcon
|
|
|
|
LumaWatch:
|
|
# Xcode 14+ single-target watchOS app. `application.watchapp2` is the
|
|
# legacy container that expects a separate WatchKit extension; compiling
|
|
# our SwiftUI @main sources into it makes the linker and WatchKit stub both
|
|
# try to produce Luma.app/Luma.
|
|
type: application
|
|
platform: watchOS
|
|
deploymentTarget: "10.0"
|
|
sources:
|
|
- path: Sources/Watch
|
|
- path: Resources/Shared.xcassets
|
|
buildPhase: resources
|
|
- path: Resources/AppAssets.xcassets
|
|
buildPhase: resources
|
|
info:
|
|
path: Config/LumaWatch-Info.plist
|
|
properties:
|
|
CFBundleName: Luma
|
|
CFBundleDisplayName: Luma
|
|
CFBundleIconName: AppIcon
|
|
CFBundleShortVersionString: $(MARKETING_VERSION)
|
|
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
|
|
NSMicrophoneUsageDescription: Luma использует микрофон Apple Watch для голосовых сообщений.
|
|
WKApplication: true
|
|
WKCompanionAppBundleIdentifier: $(COMPANION_BUNDLE_IDENTIFIER)
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: app.luma.chat.watchkitapp
|
|
# Keep the bundle filename distinct from the companion Luma.app while
|
|
# preserving the user-facing name through CFBundleDisplayName.
|
|
PRODUCT_NAME: LumaWatch
|
|
GENERATE_INFOPLIST_FILE: NO
|
|
TARGETED_DEVICE_FAMILY: "4"
|
|
DEVELOPMENT_TEAM: K3AS449A74
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS: true
|
|
INFOPLIST_KEY_CFBundleIconName: AppIcon
|
|
|
|
LumaTests:
|
|
type: bundle.unit-test
|
|
platform: iOS
|
|
deploymentTarget: "17.0"
|
|
sources:
|
|
- path: Tests
|
|
dependencies:
|
|
- target: Luma
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: app.luma.chat.tests
|
|
GENERATE_INFOPLIST_FILE: true
|
|
|
|
schemes:
|
|
Luma:
|
|
build:
|
|
targets:
|
|
Luma: all
|
|
LumaTests: [test]
|
|
run:
|
|
config: Debug
|
|
test:
|
|
config: Debug
|
|
targets:
|
|
- LumaTests
|
|
archive:
|
|
config: Release
|
|
LumaMac:
|
|
build:
|
|
targets:
|
|
LumaMac: all
|
|
run:
|
|
config: Debug
|
|
archive:
|
|
config: Release
|
|
LumaWatch:
|
|
build:
|
|
targets:
|
|
LumaWatch: all
|
|
run:
|
|
config: Debug
|
|
archive:
|
|
config: Release
|