Claude 0a835f6be0 Drop App Groups, share via keychain access group only
Apple's ASC API doesn't expose App Group registration cleanly, and the
keychain access group on its own (`$(AppIdentifierPrefix)<bundleId>`)
already gives the share extension and container app a shared store for
the base URL + token. The repo cache moves to per-process UserDefaults —
the extension fetches/caches it on first share if empty.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 23:20:36 -05:00

Gitea Issue

iOS share-extension for filing issues to a self-hosted Gitea instance straight from a screenshot.

Take screenshot → Share → Gitea Issue → pick repo, title, notes → submit. The screenshot is uploaded as an attachment and embedded inline in the issue body.

Architecture

Two targets in one Xcode project, sharing an App Group + Keychain:

  • GiteaIssue (com.treytartt.GiteaIssue) — container app, settings + help only
  • GiteaIssueShare (com.treytartt.GiteaIssue.Share) — share extension that does the real work
  • App Group: group.com.treytartt.GiteaIssue (cached repo list, recents)
  • Keychain group: $(AppIdentifierPrefix)com.treytartt.GiteaIssue (base URL, token)

iOS 26.0 minimum. Signing team V3PF3M6B6U.

Layout

GiteaIssue/                Container app (settings + help)
GiteaIssueShare/           Share extension UI
Shared/                    Models, Keychain, Settings, GiteaClient, RepoCache
project.yml                xcodegen spec — regenerate with `xcodegen generate`

Build

xcodegen generate
xcodebuild -project GiteaIssue.xcodeproj -scheme GiteaIssue \
  -destination 'generic/platform=iOS' build

Deploy (ad-hoc)

Push to admin/GiteaIssue on Gitea, then trigger the Mac mini builder at http://Treys-Mac-mini.local:3090 against the git URL. Builder ships the IPA to https://appstore.treytartt.com for OTA install.

First-time setup on device

  1. Install via Safari from appstore.treytartt.com
  2. Open the Gitea Issue app, set base URL + personal access token (repo scope)
  3. Tap Save & test connection — confirms login and pre-fetches the repo list
  4. From now on: Photos → screenshot → Share → Gitea Issue
S
Description
iOS share extension for filing Gitea issues from screenshots
Readme 46 KiB
Languages
Swift 100%