Surface the existing pin (keep-from-cull) and per-file delete actions as visible inline buttons on each offline cache row instead of context-menu-only: a star toggles protection from auto-cull (and restore-if-missing), a trash culls that file early. Aligns wording/icons to the star metaphor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
170 lines
6.7 KiB
YAML
170 lines
6.7 KiB
YAML
name: TVAnarchy
|
|
options:
|
|
bundleIdPrefix: local.lilith
|
|
createIntermediateGroups: true
|
|
deploymentTarget:
|
|
macOS: "14.0"
|
|
iOS: "17.0"
|
|
packages:
|
|
VLCKit:
|
|
url: https://github.com/tylerjonesio/vlckit-spm
|
|
exactVersion: 3.6.0
|
|
# Reuse the shared Lilith dark-first design system (dependency-free tokens).
|
|
# Absolute path: stable from both this worktree and main on this machine.
|
|
LilithDesignTokens:
|
|
path: /Users/natalie/Code/@packages/@swift/@ui/tokens
|
|
configs:
|
|
Debug: debug
|
|
Release: release
|
|
configFiles:
|
|
Debug: Config/BuildVersion.xcconfig
|
|
Release: Config/BuildVersion.xcconfig
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "5.0" # Swift 6.2 compiler, language mode 5 (relaxed concurrency)
|
|
MACOSX_DEPLOYMENT_TARGET: "14.0"
|
|
# Compile-time opt-in for the built-in adult feature. Present here → the
|
|
# Adult tab, the native PornService, and the adult browse/gating surfaces are
|
|
# compiled in. Drop this flag (or build a target without it) for a clean
|
|
# build with no adult surfaces at all — the defensive bits that keep porn OUT
|
|
# of the Home/queue (`isAdult`, QueueStore stripping, the default category
|
|
# exclude) stay unconditional, so a flag-off build never leaks adult content;
|
|
# it simply offers no way to browse it. Applies to all targets.
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS: ENABLE_ADULT
|
|
# MARKETING_VERSION + CURRENT_PROJECT_VERSION come from Config/BuildVersion.xcconfig
|
|
# (generated by tools/stamp-build.sh before each build). Semver auto-bumps patch from
|
|
# the latest vX.Y.Z git tag + commits since; cut releases with tools/release.sh [vX.Y.Z].
|
|
CODE_SIGNING_ALLOWED: "NO" # local dev, unsigned
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
ENABLE_HARDENED_RUNTIME: "NO" # needs Process/ssh + localhost+overlay network, no sandbox
|
|
targets:
|
|
TVAnarchyCore:
|
|
type: framework
|
|
platform: macOS
|
|
sources: [Sources/TVAnarchyCore]
|
|
dependencies:
|
|
- sdk: MediaPlayer.framework # system transport + Now Playing (NowPlayingController)
|
|
- sdk: Security.framework # Keychain for VPN provider logins (VPNCredentialStore)
|
|
- sdk: CoreAudio.framework # HDMI audio routing for local VLC playback
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyCore
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
TVAnarchy:
|
|
type: application
|
|
platform: macOS
|
|
sources:
|
|
- path: Sources/TVAnarchy
|
|
excludes:
|
|
- Resources/**
|
|
- path: Sources/TVAnarchy/Resources/base-2.91.wsz
|
|
buildPhase: resources
|
|
dependencies:
|
|
- target: TVAnarchyCore
|
|
info:
|
|
path: Sources/TVAnarchy/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: TVAnarchy
|
|
# XcodeGen regenerates this Info.plist from these properties on every
|
|
# `xcodegen generate`, so the version MUST live here (a hand-edit to the
|
|
# plist gets clobbered). Version vars come from Config/BuildVersion.xcconfig.
|
|
CFBundleShortVersionString: "$(MARKETING_VERSION)"
|
|
CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
|
|
LSMinimumSystemVersion: "14.0"
|
|
LSApplicationCategoryType: public.app-category.video
|
|
NSAppTransportSecurity:
|
|
NSAllowsLocalNetworking: true # talk to VLC on 127.0.0.1 over http
|
|
NSCameraUsageDescription: Scan a fleet-join QR code with this Mac's camera.
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchy
|
|
GENERATE_INFOPLIST_FILE: "NO"
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon # Sources/TVAnarchy/Assets.xcassets
|
|
# The human version (CFBundleShortVersionString) comes from MARKETING_VERSION
|
|
# via info.properties above — reliable. The dynamic git SHA / build time live
|
|
# in a generated Swift constant (Sources/TVAnarchyCore/BuildStamp.swift,
|
|
# gitignored) written by tools/stamp-build.sh, which build-install.sh runs
|
|
# BEFORE `xcodegen generate`. A compiled constant can't be lost the way a
|
|
# post-build Info.plist edit was (TARGET_BUILD_DIR there pointed at an
|
|
# intermediate, so the stamp never reached the copied app plist).
|
|
TVAnarchyiOS:
|
|
type: application
|
|
platform: iOS
|
|
sources: [Sources/TVAnarchyiOS]
|
|
dependencies:
|
|
- package: VLCKit
|
|
product: VLCKitSPM # SPM product; the iOS slice's module is `MobileVLCKit`
|
|
- package: LilithDesignTokens
|
|
product: LilithDesignTokens
|
|
info:
|
|
path: Sources/TVAnarchyiOS/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: TVAnarchy
|
|
CFBundleShortVersionString: "$(MARKETING_VERSION)"
|
|
CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
|
|
UILaunchScreen: {}
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
# The bridge is plain HTTP over localhost (plum) / the WireGuard mesh
|
|
# (black) — never the open internet — so arbitrary loads are allowed.
|
|
NSAppTransportSecurity:
|
|
NSAllowsArbitraryLoads: true
|
|
NSLocalNetworkUsageDescription: Connect to your media bridge on the local network.
|
|
NSCameraUsageDescription: Scan the fleet setup QR shown by your Mac.
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyiOS
|
|
GENERATE_INFOPLIST_FILE: "NO"
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
|
|
# Unlike the macOS targets (unsigned local dev), the iOS app installs on
|
|
# a physical iPhone, which requires a real signing identity.
|
|
CODE_SIGNING_ALLOWED: "YES"
|
|
CODE_SIGNING_REQUIRED: "YES"
|
|
CODE_SIGN_STYLE: Automatic
|
|
CODE_SIGN_IDENTITY: "Apple Development"
|
|
DEVELOPMENT_TEAM: 8SX7UH9HF4
|
|
TVAnarchyiOSUITests:
|
|
type: bundle.ui-testing
|
|
platform: iOS
|
|
sources: [Tests/TVAnarchyiOSUITests]
|
|
dependencies:
|
|
- target: TVAnarchyiOS
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyiOSUITests
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
TEST_TARGET_NAME: TVAnarchyiOS
|
|
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
|
|
CODE_SIGNING_ALLOWED: "NO"
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
TVAnarchyCoreTests:
|
|
type: bundle.unit-test
|
|
platform: macOS
|
|
sources: [Tests/TVAnarchyCoreTests]
|
|
dependencies:
|
|
- target: TVAnarchyCore
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyCoreTests
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
schemes:
|
|
TVAnarchy:
|
|
build:
|
|
targets:
|
|
TVAnarchy: all
|
|
test:
|
|
targets:
|
|
- TVAnarchyCoreTests
|
|
gatherCoverageData: false
|
|
TVAnarchyiOS:
|
|
build:
|
|
targets:
|
|
TVAnarchyiOS: all
|
|
test:
|
|
targets:
|
|
- TVAnarchyiOSUITests
|
|
gatherCoverageData: false
|