Add IPAInspectorView wireframe and security inspection features - #1
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a new “IPA Inspector” feature (UI + state/model + service layer) that can extract basic IPA metadata, scan embedded frameworks, and run signing/security-related diagnostics, while also expanding and standardizing the app’s design-system tokens/components.
Changes:
- Introduces an IPA inspection pipeline (
IPAInspectionService) and associated domain models for metadata, signing, entitlements, architectures, and frameworks. - Adds a new IPA Inspector screen (dashboard + collapsible sections + console) and wires it into sidebar navigation and
RootView. - Expands the design system (colors, fonts, spacing) and refactors existing screens/components to use new reusable UI building blocks.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| IPASignCraft/Service/IPAInspection/IPAInspectionServicing.swift | Adds inspection service protocol contract. |
| IPASignCraft/Service/IPAInspection/IPAInspectionService.swift | Implements IPA extraction + metadata/security/framework inspection. |
| IPASignCraft/Service/IPAExtractorService.swift | Improves unzip validation + error reporting. |
| IPASignCraft/Features/Sidebar/SidebarView.swift | Adds “IPA Inspector” navigation entry. |
| IPASignCraft/Features/Sidebar/Model/SidebarItem.swift | Adds .ipaInspector enum case. |
| IPASignCraft/Features/Resign/View/HomeView.swift | Refactors to use ScreenShell, HomeFileSection, InfoRow. |
| IPASignCraft/Features/IPAInspector/ViewModel/IPAInspectorDetailViewModel.swift | Adds inspector view model + async inspection runner + logging. |
| IPASignCraft/Features/IPAInspector/View/sections/KeyValueRow.swift | Adds reusable key/value UI row. |
| IPASignCraft/Features/IPAInspector/View/sections/IPASigningView.swift | Adds signing/provisioning details section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPASecurityView.swift | Adds security diagnostics dashboard section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPAOverviewView.swift | Adds overview dashboard section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPAGeneralView.swift | Adds general metadata section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPAFrameworksView.swift | Adds frameworks table section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPAEntitlementsView.swift | Adds entitlements/capabilities section UI. |
| IPASignCraft/Features/IPAInspector/View/sections/IPABinaryView.swift | Adds binary/architectures section UI. |
| IPASignCraft/Features/IPAInspector/View/IPAInspectorView.swift | Adds main inspector dashboard layout + console + sections. |
| IPASignCraft/Features/IPAInspector/View/Components/StatCard.swift | Adds reusable stat card component. |
| IPASignCraft/Features/IPAInspector/View/Components/CollapsibleSection.swift | Adds reusable collapsible section component. |
| IPASignCraft/Features/IPAInspector/Model/IPAInspectorState.swift | Adds centralized inspector state model. |
| IPASignCraft/Domain/Models/IPAInspection/ParsedIPAInfo.swift | Adds intermediate parsed Info.plist model. |
| IPASignCraft/Domain/Models/IPAInspection/IPAInspectorSection.swift | Adds section enumeration + UI helpers. |
| IPASignCraft/Domain/Models/IPAInspection/IPAInspectionError.swift | Adds typed errors for inspection pipeline. |
| IPASignCraft/Domain/Models/IPAInspection/IPAInspection.swift | Adds root inspection result model + mock. |
| IPASignCraft/Domain/Models/IPAInspection/InspectorInfoCard.swift | Adds compact info card component. |
| IPASignCraft/Domain/Models/IPAInspection/FrameworkInfo.swift | Adds framework/dylib info model + mock. |
| IPASignCraft/DesignSystem/Tokens/Spacing.swift | Adds xxs spacing token. |
| IPASignCraft/DesignSystem/Tokens/AppFont.swift | Expands font token set (headings/caption/small). |
| IPASignCraft/DesignSystem/Tokens/AppColors.swift | Expands palette and adds surface/shadow/gradient tokens. |
| IPASignCraft/DesignSystem/Extensions/View+Field.swift | Updates fieldContainer styling to new surface/shadow. |
| IPASignCraft/DesignSystem/Components/HomeFileSection.swift | Adds reusable “IPA File” input section. |
| IPASignCraft/DesignSystem/Components/FileDropView.swift | Improves drop-zone styling + hover + accessibility + click-to-browse. |
| IPASignCraft/DesignSystem/Components/FileBrowserView.swift | Adds composed picker + drop control. |
| IPASignCraft/DesignSystem/Components/Common/WatercolorBackground.swift | Extracts reusable watercolor background component. |
| IPASignCraft/DesignSystem/Components/Common/ScreenShell.swift | Adds standard screen shell with background + scrolling. |
| IPASignCraft/DesignSystem/Components/Common/ListRow/InfoRow.swift | Adds reusable icon/title/subtitle row. |
| IPASignCraft/DesignSystem/Components/Common/ConsoleView.swift | Adds reusable terminal-style console component. |
| IPASignCraft/DesignSystem/Components/Cards/AppCard.swift | Updates card surface/shadow styling. |
| IPASignCraft/App/RootView/RootView.swift | Routes .ipaInspector to IPAInspectorView. |
| IPASignCraft.xcodeproj/project.pbxproj | Bumps marketing version to 2.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+8
to
+15
| import Foundation | ||
|
|
||
| /// Encapsulates all state for the IPA Inspector feature. | ||
| /// | ||
| /// This state object is owned by the view model | ||
| /// and published to views for reactive updates. | ||
| @Observable | ||
| final class IPAInspectorState { |
Contributor
There was a problem hiding this comment.
Fixed in commit fix: add missing import Observation to IPAInspectorState.swift — added import Observation to IPAInspectorState.swift so the @Observable macro is available explicitly.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…esBlog/ipa-sign-craft into feature/ipa-inspection * 'feature/ipa-inspection' of https://github.com/TechStoriesBlog/ipa-sign-craft: CR Comment: Address error handling. CR Comment: UX tap two times may cause double processing CR 16: Fix the description. CR Comment: Reflect the security check Security View Fix Potential fix for pull request finding Fix field container shadow fix: add missing import Observation to IPAInspectorState.swift # Conflicts: # IPASignCraft/DesignSystem/Extensions/View+Field.swift
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.
This pull request introduces several new reusable UI components, improves visual consistency, and enhances accessibility across the design system. It also updates the app version and expands the design tokens for colors, spacing, and fonts. The most important changes are grouped below.
New Reusable UI Components
ConsoleView, a reusable terminal-style log output component with a clear button and scrollable area.InfoRow, a reusable row for displaying file/item information with icon, title, and subtitle.ScreenShell, a standardized background and scrollable content shell for screens.WatercolorBackground, a reusable decorative background view.FileBrowserView, a composed file selection control combining picker and drag-and-drop.HomeFileSection, a reusable section for IPA file input with helper text and file status.FrameworkInfomodel to represent embedded frameworks in IPA inspection.Visual and Theming Improvements
AppCard,FileDropView, andfieldContainerto use newAppColors.cardSurfaceandAppColors.cardShadowfor improved elevation and consistency. [1] [2] [3]AppColors, adding new backgrounds, surfaces, gradients, and shadow tokens. [1] [2]AppFontwith additional heading, caption, and small font styles.xxs) spacing token.Accessibility and Interaction Enhancements
FileDropViewaccessibility: added focus, keyboard activation, and descriptive labels/hints. Also added animated hover state and direct file picker trigger on click. [1] [2]Navigation and App Metadata
.ipaInspectorcase toRootViewfor navigation to the IPA Inspector feature.MARKETING_VERSIONto 2.0 in project settings. [1] [2]