Optimize affiliate system and add locale-aware defaults

- Show BOM button for unsaved loads (no longer requires save first)
- Set US fallback affiliate tag for unknown countries
- Localize Amazon search queries in all 5 languages (EN/DE/ES/FR/NL)
- Add affiliate URL/country fields to SavedBattery model
- Auto-detect unit system (imperial for US locale, metric otherwise)
- Set charger input voltage based on locale (120V US, 230V EU)
- Remove StoreKitManager and CableProPaywallView
- Add CLAUDE.md project instructions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-17 23:06:45 +01:00
parent 34e8c0f74b
commit 5a5e8b8fbe
23 changed files with 255 additions and 1034 deletions

View File

@@ -30,6 +30,10 @@
};
/* End PBXContainerItemProxy section */
/* Begin PBXBuildFile section */
3EAA00032F0000000000AA03 /* Aptabase in Frameworks */ = {isa = PBXBuildFile; productRef = 3EAA00022F0000000000AA02 /* Aptabase */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
3E37F6552E93FB6F00836187 /* CableUITestsScreenshot.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CableUITestsScreenshot.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3E5C0BCC2E72C0FD00247EC8 /* Cable.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cable.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -95,6 +99,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3EAA00032F0000000000AA03 /* Aptabase in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -177,6 +182,9 @@
3E5C0BCE2E72C0FD00247EC8 /* Cable */,
);
name = Cable;
packageProductDependencies = (
3EAA00022F0000000000AA02 /* Aptabase */,
);
productName = Cable;
productReference = 3E5C0BCC2E72C0FD00247EC8 /* Cable.app */;
productType = "com.apple.product-type.application";
@@ -263,6 +271,9 @@
);
mainGroup = 3E5C0BC32E72C0FD00247EC8;
minimizedProjectReferenceProxies = 1;
packageReferences = (
3EAA00012F0000000000AA01 /* XCRemoteSwiftPackageReference "aptabase-swift" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 3E5C0BCD2E72C0FD00247EC8 /* Products */;
projectDirPath = "";
@@ -715,6 +726,25 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
3EAA00012F0000000000AA01 /* XCRemoteSwiftPackageReference "aptabase-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/aptabase/aptabase-swift.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.3.4;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
3EAA00022F0000000000AA02 /* Aptabase */ = {
isa = XCSwiftPackageProductDependency;
package = 3EAA00012F0000000000AA01 /* XCRemoteSwiftPackageReference "aptabase-swift" */;
productName = Aptabase;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 3E5C0BC42E72C0FD00247EC8 /* Project object */;
}