Skip to content

Port from SideStore: App Info viewer (B) + PillButton cached-state fix (F)#71

Merged
The-Big-Mini merged 4 commits into
developfrom
ClaudeCode
Jul 8, 2026
Merged

Port from SideStore: App Info viewer (B) + PillButton cached-state fix (F)#71
The-Big-Mini merged 4 commits into
developfrom
ClaudeCode

Conversation

@The-Big-Mini

Copy link
Copy Markdown
Owner

Summary

Two SideStore ports: the App Info / bundle inspector feature (group B) and a PillButton bug fix (group F).

Type of change

  • Feature — adds new functionality
  • Bug fix — resolves incorrect behavior without changing existing APIs

Changes

B — App Info viewer (ports SideStore 4f32e4c + follow-ups). A per-app inspector opened from the My Apps long-press menu ("App Info", presented as a sheet):

  • General metadata, provisioning profile (team, dates, entitlements, provisioned devices), app extensions.
  • Info.plist viewer — semantic / raw XML / tree modes.
  • Bundle resource browser with QuickLook preview + export.
  • Reads only the local bundle (Bundle, Info.plist, embedded.mobileprovision via AltSign ALTProvisioningProfile) — no minimuxer / network APIs.
  • New files: AppInfoView.swift, InfoPlistContainerView.swift, BundleResourceBrowserView.swift. Adapted for MiniStore: SwiftUI.Button/SwiftUI.Label (dodge the app-local Button shadow), NavigationViewNavigationStack, wired into the SwiftUI context menu + sheet.

F — PillButton cached state (ports SideStore 15a58c8). The progress observer restored a captured isUserInteractionEnabled unconditionally, so when progress cleared a stale value could leave the button disabled. Restore only while progress is active.

Other F candidates were verified N/A: MiniStore's Deactivate/RemoveAppOperation already call try context.save() (0ff348c), and MiniStore has no completionHandler?([:]) refresh path (9cfb121).

Testing

CI is the compile check (validates the ~2k-line port). On device: long-press a My Apps entry → App Info → inspect metadata / Info.plist / bundle resources; a refreshing pill button re-enables correctly after progress clears.

Checklist

  • This branch targets develop (never main)
  • I read the full file(s) before editing and followed the conventions in CLAUDE.md
  • The project builds and existing behavior is preserved
  • UI changes were checked on a device or simulator
  • No secrets, signing identities, or personal data are included in this change

🤖 Generated with Claude Code


Generated by Claude Code

…clears

Ported from SideStore 15a58c8. The progress observer captured
isUserInteractionEnabled, set isIndicatingActivity, then unconditionally
restored the captured value — so when progress cleared, a stale captured value
could leave the button disabled. Restore only while progress is active; let
isIndicatingActivity = false re-enable interaction otherwise.

https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Ports SideStore's App Info viewer (4f32e4c + follow-ups) into MiniStore: a
per-app inspector for My Apps entries showing general metadata, the
provisioning profile (team, dates, entitlements, provisioned devices), app
extensions, an Info.plist viewer (semantic / raw XML / tree), and a bundle
resource browser with QuickLook preview and export. Reads only the local app
bundle (Bundle, Info.plist, embedded.mobileprovision via AltSign's
ALTProvisioningProfile) — no minimuxer/AltSign network APIs.

Adaptations for MiniStore: SwiftUI.Button / SwiftUI.Label to avoid the
app-local UIButton `Button` shadow; NavigationView -> NavigationStack; wired
into the My Apps context menu ("App Info") presenting AppInfoView as a sheet.

https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
AppDetailView already declares a (file-private) EntitlementRow; the ported
App Info viewer's internal EntitlementRow clashed at module scope ("invalid
redeclaration"). Rename the ported one to AppInfoEntitlementRow.

https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
…n pin

- ALTProvisioningProfile.UUID -> .uuid (MiniStore's AltSign pin lowercases it).
- unzipAppBundle(at:to:) -> (at:toDirectory:) (MiniStore's label).
- Drop the NavigationLink to CertificateDetailView (part of the un-ported cert
  management group); show the certificate inline instead.

https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
github-actions Bot added a commit that referenced this pull request Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Builds for this Pull Request are available at
MiniStore-0.6.5-pr.71.7fe422e-dSYMs
MiniStore-0.6.5-pr.71.7fe422e
build-logs-0.6.5-pr.71.7fe422e
Have a nice day.

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Download the artifacts for this pull request (nightly.link):

@The-Big-Mini The-Big-Mini merged commit 8fbf098 into develop Jul 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant