Skip to content

Release prep: App Store compliance and build fixes#1

Open
akashsokik wants to merge 19 commits intomainfrom
release-prep
Open

Release prep: App Store compliance and build fixes#1
akashsokik wants to merge 19 commits intomainfrom
release-prep

Conversation

@akashsokik
Copy link
Contributor

@akashsokik akashsokik commented Feb 24, 2026

Summary

  • App Store sandbox compliance — enable App Sandbox, add security-scoped bookmarks via BookmarkManager, remove built-in terminal (SwiftTerm dependency)
  • Build pipeline fixes — switch build_app.sh from swift build to xcodebuild so resource bundles resolve correctly in .app bundles, sign nested bundles individually, add codesign verification
  • Cmd+W tab close — intercept via NSEvent local monitor so it closes the active tab instead of the window
  • Sidebar click fix — replace .onTapGesture with Button to prevent drag gesture conflict
  • Cmd+T theme cycling — restore shortcut by disabling window tabbing mode
  • Escape closes search — intercept Escape via event monitor to close inline search instead of minimizing
  • New folder auto-renameCmd+Shift+N creates folder and immediately opens rename sheet
  • App icon, CI/CD, tests, and project hygiene — updated icon with inset padding, added archive_app.sh for App Store Connect, App Store workflow, unit tests, LICENSE, privacy manifest

Test plan

Build

  • bash scripts/build_app.sh --run produces a working .app that launches without crash

File operations

  • Cmd+O — Open folder
  • Cmd+N — New markdown file
  • Cmd+Shift+N — New folder (should auto-open rename sheet)
  • Cmd+S — Save
  • Cmd+W — Close tab (not the window)
  • Cmd+Shift+Delete — Delete file

Formatting

  • Cmd+B — Bold
  • Cmd+I — Italic
  • Cmd+E — Inline code
  • Cmd+Shift+E — Code block
  • Cmd+Shift+D — Strikethrough
  • Cmd+K — Insert link
  • Cmd+Shift+I — Insert image
  • Cmd+Shift+H — Cycle heading level
  • Cmd+1/2/3 — Heading 1/2/3
  • Cmd+Shift+T — Toggle checkbox

Search & navigation

  • Cmd+F — Find in file
  • Cmd+F then Escape — Close inline search (should not minimize window)
  • Cmd+Shift+F — Search all files
  • Cmd+G — Next match
  • Cmd+Shift+G — Previous match
  • Cmd+Shift+P — Command palette

View

  • Cmd+/ — Toggle sidebar
  • Cmd+Shift+O — Toggle outline
  • Cmd+Shift+C — Toggle calendar
  • Cmd+Shift+L — Toggle line wrap
  • Cmd+T — Cycle theme (dark / light / system)
  • Cmd+Shift+[ — Previous tab
  • Cmd+Shift+] — Next tab
  • Cmd++ — Zoom in
  • Cmd+- — Zoom out
  • Cmd+0 — Reset zoom

Sidebar & sandbox

  • Single-click reliably opens files in sidebar
  • Open a folder, edit files, quit, relaunch — verify sandbox bookmark persistence

App Store launch checklist (in order)

  1. Enroll in Apple Developer Program ($99/year)
  2. Register bundle ID com.okik.axis in Developer portal
  3. Create distribution certificate + provisioning profile
  4. Add all 8 GitHub secrets to okikorg/Axis
  5. Create app in App Store Connect
  6. Fix appstore.yml line 62 — change notarytool submit to altool --upload-app
  7. Write and host a privacy policy
  8. Set up a support URL
  9. Fill out App Store metadata (description, keywords, screenshots, age rating)
  10. Trigger the App Store Build workflow

🤖 Generated with Claude Code

Atiya and others added 19 commits February 13, 2026 18:15
- Refactor to AxisMain entry point with separate test target and Logger utility
- Update CI workflows (build + release) for macOS 15/Xcode 16, fix signing
  and notarization, add both zip and dmg release assets
- Add MIT LICENSE, update README with install/build docs, bump version to 0.2.0
- Clean up DesignSystem (remove unused colors), improve AppState theming,
  refine ContentView layout and TerminalPanelView border handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full X with large downward-pointing triangle behind it, all white on
dark background. Replaces previous incorrect icon that drew four short
lines terminating at a tiny triangle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Inset background rect by 5% to match macOS icon grid sizing. Add
semi-transparent white border matching Ghostty/Activity Monitor style.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix double-close file descriptor bug in DirectoryMonitor (cancel handler owns close)
- Add PrivacyInfo.xcprivacy declaring UserDefaults usage (CA92.1)
- Remove duplicate Save menu entry, separate Close Tab from Save group
- Remap Cmd+P → Cmd+Shift+P (Command Palette), Cmd+T → Cmd+Shift+A (Appearance)
- Fix shortcut hint mismatch (Cmd+Shift+F shows "Search all files")
- Replace permanent file deletion with trashItem
- Remove deprecated UserDefaults.synchronize() calls
- Migrate onChange(of:) to availability-aware onChangeCompat extension
- Add missing Info.plist keys (CFBundleDevelopmentRegion, copyright, dict version)
- Replace deprecated xcrun altool with notarytool in CI, align runner to macos-15
- Separate CFBundleVersion (build number) from marketing version in build scripts
- Fix force unwrap and move regex out of loop in EditorView
- Add sandbox failure logging to DirectoryMonitor

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop SwiftTerm dependency and TerminalPanelView, enable full App Sandbox
with user-selected read-write and security-scoped bookmark entitlements.
Add BookmarkManager for persisting folder access, fix command palette
arrow key navigation, and add archive script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Intercept Cmd+W via NSEvent local monitor so it closes the active tab
instead of the window. Switch build_app.sh from swift build to
xcodebuild so the resource bundle accessor resolves correctly inside
a .app bundle, and sign nested bundles individually instead of --deep.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace .onTapGesture with Button in sidebar to prevent drag gesture
conflict that caused inconsistent file opening. Restore Cmd+T for
theme cycling by disabling window tabbing mode. Remove early return
in setSelectedNode so re-clicking a file always opens it. Update
README to reflect Cmd+Shift+P for command palette.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prompt rename sheet immediately after Cmd+Shift+N so users can name
the folder in place. Expand parent folder to ensure visibility.
Restore Cmd+T for theme cycling by disabling window tabbing mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Handle Escape via the NSEvent local monitor so it closes the search
bar when open, preventing the system from intercepting it. Remove
redundant .keyboardShortcut(.escape) from the search close button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SwiftUI keyboardShortcut doesn't handle shifted characters like { }
reliably. Use base keys [ ] with explicit shift modifier instead.
Update README to match.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Group features into Editor, Workspace, and Interface sections instead
of a flat list with inline shortcuts. Clean up build instructions,
consolidate security notes into a table, and ensure all shortcuts
match the current implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Lead with what Axis is and why it exists. Features organized as
Write, Organize, Find, Look — describing what you experience, not
what's implemented. Trim redundancy, add Why Axis section, tighten
security and attribution to essentials.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
notarytool is for notarizing direct-distribution builds. App Store
submissions go through App Store Connect and require altool.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use compact inline code + middot layout instead of markdown tables
to avoid GitHub's alternating row colors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When macOS is light, System and Light look identical — pressing Cmd+T
twice with no visual change feels broken. Now the cycle detects the
system appearance and skips the redundant explicit mode, so every
press produces a visible theme change.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These files were committed before .gitignore rules existed. They are
OS metadata and Xcode user state that should not be in the repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auto-generated OpenAI Codex environment config — IDE-specific state
that shouldn't be in the repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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