[codex] Implement Board-Man entitlement core MVP#73
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Scope-audited and narrowed PR #73 to Entitlement Core MVP.
Entitlement.swift.Scope audit
Clipy/Sources/Services/Entitlement.swiftClipyTests/EntitlementGateTests.swiftBoard-Man.xcodeproj/project.pbxprojClipy/Sources/Services/LicenseToken.swiftEntitlement/PlanLimitsshape to compile. No network/backend behavior added.Clipy/Sources/Managers/MenuManager.swiftPlanis now Free/Pro only; no runtime gate enforcement added.Clipy/Sources/Preferences/Panels/CPYBetaPreferenceViewController.swiftPlanno longer has founder/trial cases; no UI redesign.Clipy/Sources/Services/ClipService.swiftClipy/Sources/Snippets/CPYSnippetsEditorWindowController.swiftClipy/Sources/Services/LicenseActivationClient.swiftBoard-Man.xcodeproj/xcshareddata/xcschemes/Board-Man.xcschemeWhat was kept
LicenseState:free,trial,proActive,proExpired,invalid,offlineGrace,lockedPlan:free,proEntitlementFeature:unlimitedHistory,unlimitedSnippets,advancedAppearance,exportImport,pasteAnalytics,futureSyncPlanLimitsLicenseMetadataEntitlementEntitlementGateWhat was reverted/deferred
Free / Pro behavior
PlanLimits.unlimited, exposed throughEntitlementGate.limit(for:)asnil.locked,invalid,proExpired, and conservativeofflineGracedo not behave as active Pro.UserDefaults isPro=true, local JSONplan=pro, plaintext license storage, permanent offline Pro, private key, network activation, or release/appcast behavior was added.Gate API
canUse(feature:)limit(for:)canAddHistoryItem(currentCount:)canPinItem(currentPinnedCount:)canCreateSnippet(currentSnippetCount:)canCreateSnippetFolder(currentFolderCount:)requiresUpgrade(for:)Validation results
rtk git status --short: only pre-existing untracked_copy/remains.rtk git diff --stat main...HEAD: 6 files changed, 346 insertions, 120 deletions.rtk git diff --check main...HEAD: passed.rtk xcodebuild -project Board-Man.xcodeproj -scheme Board-Man -configuration Debug -derivedDataPath "${TMPDIR:-/tmp}/BoardManCodexValidation" -destination 'generic/platform=macOS' -skipPackagePluginValidation -skipMacroValidation CODE_SIGNING_ALLOWED=NO build: passed.ENTITLEMENT_CORE_CHECK=OK).Test runner limitation
rtk xcodebuild test ... -only-testing:ClipyTests/EntitlementGateTestspreviously reached compile/launch but failed in the local macOS test runner withIDELaunchServicesLauncher - Failed to Launch. I did not keep broad scheme or product-name surgery in this PR. This should be handled separately.Explicitly out of scope
Next PR recommendation
PR #74 should wire runtime execution paths to
EntitlementGatefor history, pinned items, snippets, and snippet folders after this core lands.