Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
c5ad855
Initial commit — MrMouse macOS driver for Logitech MX Master 3S
zackbart Apr 3, 2026
ec5093b
Clean up repo for open source
zackbart Apr 3, 2026
d3afaa5
Initial commit: tvOS scaffold + research-backed soft plan
zackbart Apr 7, 2026
59bf92c
Phase 0.1: rename Jelly TV → JellyTV everywhere
zackbart Apr 7, 2026
3e3144b
Phase 0.2: add Info.plist for ATS + local network entitlements
zackbart Apr 7, 2026
71767c5
Phase 0.3: scaffold 6 local SPM packages
zackbart Apr 7, 2026
6daaddf
Phase 0.4: link 6 local SPM packages to JellyTV target
zackbart Apr 7, 2026
2b23940
Phase 1.1: Persistence package — Keychain wrapper + CredentialsStore
zackbart Apr 7, 2026
c6a4230
Phase 1.2: JellyfinAPI DTOs + JellyfinError + JellyfinClientAPI protocol
zackbart Apr 7, 2026
5f763f7
Phase 1.3: JellyfinClient actor + URLProtocol stub tests
zackbart Apr 7, 2026
a808c4b
Phase 1.4: Settings sign-in flow — SignInModel + SignInView + tests
zackbart Apr 7, 2026
56b2fec
Phase 1.5: SessionStore + RootView + restoration tests
zackbart Apr 7, 2026
86a4f23
Phase 1.6: manual smoke test checklist for live LAN server
zackbart Apr 7, 2026
10cefff
fix(JellyfinAPI): sendIgnoringResponse now reads body for ProblemDetails
zackbart Apr 7, 2026
7dcdaeb
feat(JellyfinAPI): add BaseItemDto + UserItemDataDto + home endpoints
zackbart Apr 7, 2026
54edab1
feat(DesignSystem): add Nuke + image URL builder + UI primitives
zackbart Apr 7, 2026
bfff504
feat(Library): add HomeModel + HomeView
zackbart Apr 7, 2026
9aaae5f
chore: wire RootView to HomeView + update package platforms
zackbart Apr 7, 2026
5971beb
fix(Library): correct UserViews type filter + empty-state UI
zackbart Apr 7, 2026
c62bf81
feat(LiveTV): Phase B — EPG guide as post-sign-in primary view
zackbart Apr 7, 2026
501323e
feat(LiveTV): Phase C — channel selection + AVPlayer playback
zackbart Apr 7, 2026
bf7d244
Initial commit
zackbart Apr 9, 2026
0159b75
Add stop/unapply, error handling pass, docs
zackbart Apr 9, 2026
181dcfa
Real download progress, stall detection, test target, seed script
zackbart Apr 9, 2026
b2a5f45
Refresh app UI with Tahoe liquid glass
zackbart Apr 9, 2026
7064369
Implement instant desktop switching using synthetic trackpad gesture …
zackbart Apr 10, 2026
4a50a41
Unify UI with design system and polish every surface
zackbart Apr 10, 2026
9ded87f
feat(LiveTV): Plex-style three-tab shell, full API surface, beautiful UI
claude Apr 27, 2026
8ffdfc4
fix(LiveTV): make Jellyfin emit real HLS natively (drop /stream→m3u8 …
zackbart Apr 27, 2026
cb5322e
fix(LiveTV): GuideGridView build error + channel-column focus overflow
zackbart Apr 27, 2026
9504f93
feat(LiveTV): Phase D — bulletproof playback + cinematic UI refresh
zackbart Apr 27, 2026
5338a91
chore(app): set jellyfish app icon + ITSAppUsesNonExemptEncryption
zackbart Apr 27, 2026
72c946f
chore(app): rename bundle id com.cursorkittens.Jelly-TV → JellyTV
zackbart Apr 27, 2026
7f0885c
chore(app): pirate-jellyfish app icon
zackbart Jun 10, 2026
e5ae2a5
docs: add CLAUDE.md agent guide (AGENTS.md symlinked)
zackbart Jun 10, 2026
edc9bdf
feat(LiveTV): Marquee redesign + instant channel selection
zackbart Jun 10, 2026
d44bcd8
Initial commit: SkillsSeer — cross-agent skills manager (macOS/SwiftUI)
zackbart Jun 16, 2026
c5b1e0f
Rename project/app SkillsSeer → Skillz
zackbart Jun 16, 2026
af59013
Add install/fix actions and fix UI state bugs
zackbart Jun 16, 2026
4bfae16
Scope action status to its own action; drop nested sidebar button
zackbart Jun 16, 2026
65feef8
Address Codex review: arg form, pipe drain, stale reload, safe wire
zackbart Jun 16, 2026
59493e2
Scan nested agent dirs in project scope (monorepos)
zackbart Jun 16, 2026
b069a97
Show project location per skill; scope divergence to location
zackbart Jun 16, 2026
6057b75
Fix project picker doing nothing on scope switch
zackbart Jun 16, 2026
1014236
Trim Agents sidebar to Claude Code + Canonical
zackbart Jun 16, 2026
baa232b
Liquid Glass: native single-select sidebar, glass controls, macOS 26
zackbart Jun 16, 2026
7d53276
Stop mislabeling local skills as "symlinked"
zackbart Jun 16, 2026
acb1396
Fix toolbar Install button overflowing its slot
zackbart Jun 16, 2026
f1897c8
Persistent saved projects with switch/remove
zackbart Jun 16, 2026
c3b5a0e
Show Projects section only under the Project tab
zackbart Jun 16, 2026
e21aec8
Fix Project-tab UX: no nagging picker, remember active project/scope
zackbart Jun 16, 2026
95d1427
Speed up project switching: batch git classify, cache scans, show pac…
zackbart Jun 16, 2026
2f9807d
Group local skills under Sources; tooltips on every status tag
zackbart Jun 16, 2026
d2b7bb4
Add native iOS (SwiftUI) client for Herdr
zackbart Jun 16, 2026
77a8661
Implement SSH transport and fix build
zackbart Jun 16, 2026
ea61535
Add app icon from Herdr logo
zackbart Jun 16, 2026
ab9fb2d
Add socket auto-discovery + terminal-native UI redesign
zackbart Jun 16, 2026
dee8d47
Add MCP server management across harnesses
zackbart Jun 16, 2026
e997f4f
Make SSH transport work against the real Herdr socket API
zackbart Jun 16, 2026
77045d4
Harden SSH transport per Codex review
zackbart Jun 16, 2026
342bf0c
Finish deferred transport hardening (Codex follow-ups)
zackbart Jun 16, 2026
ab89337
Make the terminal pane light mode
zackbart Jun 16, 2026
ed671ce
iSH-style keyboard bar + correct send_keys wire format
zackbart Jun 16, 2026
2e800d5
Add workspace/tab creation + mobile-readable pane output
zackbart Jun 17, 2026
22d1e24
Audit cleanup, write-path bug fixes, and codec tests
zackbart Jun 17, 2026
8059234
Add SSH host-key TOFU pinning + streaming polish + ponytail cleanups
zackbart Jun 17, 2026
7a957cf
Stream pane output via pane.wait_for_output instead of fixed-interval…
zackbart Jun 17, 2026
22e5f74
Rename app from Skillz to Loadout
zackbart Jun 17, 2026
51a2258
Merge feat/wait-for-output-streaming: output-gated pane streaming
zackbart Jun 17, 2026
606084f
Add tag-driven notarized release pipeline
zackbart Jun 17, 2026
897f6d7
Wire TestFlight signing + required Info.plist keys
zackbart Jun 17, 2026
5cd568b
README: app icon header + Herdr credits section
zackbart Jun 17, 2026
960b44a
Auto-update Homebrew cask on release; document brew install
zackbart Jun 17, 2026
766f7d0
Document HOMEBREW_TAP_TOKEN in release docs
zackbart Jun 17, 2026
4829545
Expand README Homebrew install instructions
zackbart Jun 17, 2026
e233ced
Collapse pane view to one terminal; add Return key
zackbart Jun 17, 2026
a853699
Add app icon, bump to 0.0.2, start CHANGELOG
zackbart Jun 17, 2026
ba68e10
Add Fit/Scroll/Reader render modes for the pane view
zackbart Jun 17, 2026
400e687
Render ANSI background/inverse cells (fix "black blocks")
zackbart Jun 17, 2026
aa9ed10
Collapse pane render-mode toggle to a button; fix dropped status events
zackbart Jun 17, 2026
55c23df
Add remote-machine scanning over SSH (HostIO seam) + lossless icon op…
zackbart Jun 19, 2026
f59b4d3
Release 0.0.3
zackbart Jun 19, 2026
23eb05a
Fix Fit/Scroll grid modes: split rows on LF scalar, not Character
zackbart Jun 19, 2026
ea098cd
Add 5 UX optimizations: alerts, connection state, autoscroll, close, …
zackbart Jun 19, 2026
50c29b0
Merge ux-optimizations: alerts, connection state, autoscroll, close, …
zackbart Jun 21, 2026
76f5d99
Add Agents view: live Herdr panes + structured transcript rendering
zackbart Jun 22, 2026
d32b9ec
Release 0.0.4 — Agents view (WIP): T3 Code–style transcript thread
zackbart Jun 22, 2026
247772f
Move Mac app to apps/macOS/ for monorepo layout
zackbart Jun 22, 2026
54a862b
Add 'apps/iOS/' from commit '50c29b0942b8279c4d41d357325abe5256fb2d9a'
zackbart Jun 22, 2026
3e756a6
Bring iOS app into apps/iOS/, drop redundant HerdrKit/Package/project
zackbart Jun 22, 2026
5942d33
Wire iOS app into monorepo as Loadout (shared HerdrKit, new project.yml)
zackbart Jun 22, 2026
a479f6c
Agents view: drop stub composer, auto-scroll to latest, reload on Ref…
zackbart Jun 22, 2026
b561d57
Agents view: real follow-up input wired to the pane
zackbart Jun 22, 2026
9fe2264
Agents view: live transcript via FSEvents instead of manual reload
zackbart Jun 22, 2026
a23ce7f
Agents view: poll topology so panes refresh on their own
zackbart Jun 22, 2026
1c474b6
Gut the live-agents axis; macOS Loadout is skills + MCP only
zackbart Jun 22, 2026
ce9c7ac
Release 0.1.0 — monorepo: macOS skills+MCP manager, iOS Herdr client
zackbart Jun 22, 2026
4b856eb
macOS: new app icon (airdrop crate)
zackbart Jun 23, 2026
8f1505e
Windo 0.1.0 — floating web window for macOS
zackbart Jun 23, 2026
0153027
Harden tap-bump: download to file + guard against empty hash
zackbart Jun 23, 2026
2caddfd
Add tabs and a global ⌃⌘H toggle
zackbart Jun 24, 2026
8f1b26a
Dress up README with shieldcn header + download button
zackbart Jun 25, 2026
9e52d08
Make download button hit the dmg directly
zackbart Jun 25, 2026
cb5a4e5
Dress up README with shieldcn header + direct download button
zackbart Jun 25, 2026
201447c
Dress up README with shieldcn header + badge
zackbart Jun 25, 2026
ef77fef
Add README with shieldcn header
zackbart Jun 25, 2026
42029a8
macOS: swap app icon to new loadout artwork
zackbart Jun 25, 2026
611adbd
iOS: swap app icon to new loadout artwork
zackbart Jun 25, 2026
20fbc1a
Enable HTML5 element fullscreen for video
zackbart Jun 26, 2026
db508a4
Fullscreen fills the Windo window, not the whole screen
zackbart Jun 26, 2026
8213283
Fix in-window fullscreen: keep native FS pref on so the shim can take…
zackbart Jun 26, 2026
f3d378e
Fullscreen video fills the window (fix black screen)
zackbart Jun 26, 2026
6b64c27
Bridge navigator.geolocation to CoreLocation
zackbart Jul 6, 2026
a9980fe
Build Barr menu bar shelf
zackbart Jul 23, 2026
e0d3ccc
Stabilize menu bar items and add releases
zackbart Jul 23, 2026
d0e8f81
Sign release disk images
zackbart Jul 23, 2026
c1f0618
Add Homebrew installation
zackbart Jul 23, 2026
1766e7c
Polish and harden Barr shelf
zackbart Jul 23, 2026
83c3c6a
Fix Barr membership and shelf edge cases
zackbart Jul 23, 2026
af0c715
Fix Barr relaunch lifecycle
zackbart Jul 23, 2026
181791a
Clarify how Barr works
zackbart Jul 23, 2026
1ec33b4
Add Open at Login
zackbart Jul 24, 2026
f98c841
Reduce Barr resource usage
zackbart Jul 24, 2026
99d5b66
Stabilize synthetic menu bar moves (#1)
zackbart Jul 28, 2026
0123be8
Stabilize menu bar environment changes (#2)
zackbart Jul 28, 2026
187b58f
Prevent recursive shelf layout (#3)
zackbart Jul 28, 2026
9793bc1
Fix menu bar activation and visual stability (#4)
zackbart Jul 28, 2026
687a839
Fix deterministic menu bar moves (#5)
zackbart Jul 28, 2026
6b71d62
Harden activation and app lifecycle (#6)
zackbart Jul 28, 2026
a423af1
Prepare Barr 0.0.8 (#7)
zackbart Jul 28, 2026
3924124
Keep Barr control visible after launch (#9)
zackbart Jul 28, 2026
e358948
Add 'barr/' from commit '3924124cb985709635d7d62f47dfc7418e04a0a1'
zackbart Aug 3, 2026
0e037e2
Add 'windo/' from commit '6b64c2718a2eb5da77d146ef692ccad8fb0e7f2f'
zackbart Aug 3, 2026
752ebfd
Add 'loadout/' from commit '611adbd74fd4e38910bb00172089a777898456b2'
zackbart Aug 3, 2026
e222b43
Add 'livewall/' from commit '4a50a41cc058b54d0d0b21efbaaf9858f5408ad2'
zackbart Aug 3, 2026
d829479
Add 'mrmouse/' from commit '70643698f59154b36afb887bf7eb0fbb5828a98d'
zackbart Aug 3, 2026
1582685
Add 'herdr-ios/' from commit '201447c2e6a4a7d9b6282bd8088ba86aff2a83e5'
zackbart Aug 3, 2026
f7e36cf
Add 'jellytv/' from commit 'ef77fef43e3c9ea762c9036436cf4d76e8cc1aa6'
zackbart Aug 3, 2026
80962c9
Consolidate native app publishing
zackbart Aug 3, 2026
fec6789
Update checkout action
zackbart Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .github/workflows/barr-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Barr CI

on:
pull_request:
paths:
- "barr/**"
- ".github/workflows/barr-ci.yml"
push:
branches: [main]
paths:
- "barr/**"
- ".github/workflows/barr-ci.yml"

permissions:
contents: read

jobs:
test:
runs-on: macos-26
steps:
- uses: actions/checkout@v7

- name: Install XcodeGen
run: brew install xcodegen

- name: Generate Xcode project
working-directory: barr/app
run: xcodegen generate

- name: Test
run: |
xcodebuild test \
-project barr/app/Barr.xcodeproj \
-scheme Barr \
-configuration Debug \
-destination 'platform=macOS' \
CODE_SIGNING_ALLOWED=NO
224 changes: 224 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
name: Release native app

# Tags are app-scoped so each product can version independently.
# Examples: barr-v0.0.10, windo-v0.1.7, loadout-v0.1.3.
on:
push:
tags:
- "barr-v*"
- "windo-v*"
- "loadout-v*"

permissions:
contents: write

jobs:
release:
runs-on: macos-26
steps:
- uses: actions/checkout@v7

- name: Configure app from tag
shell: bash
run: |
tag="$GITHUB_REF_NAME"
case "$tag" in
barr-v*) app=barr; display=Barr; scheme=Barr; project=Barr.xcodeproj; workdir=barr/app ;;
windo-v*) app=windo; display=Windo; scheme=Windo; project=Windo.xcodeproj; workdir=windo ;;
loadout-v*) app=loadout; display=Loadout; scheme=Loadout; project=Loadout.xcodeproj; workdir=loadout ;;
*) echo "::error::Unsupported release tag: $tag"; exit 1 ;;
esac

{
echo "APP=$app"
echo "DISPLAY=$display"
echo "SCHEME=$scheme"
echo "PROJECT=$project"
echo "WORKDIR=$workdir"
echo "VERSION=${tag#*-v}"
} >> "$GITHUB_ENV"

- name: Check release secrets
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
AC_API_KEY_BASE64: ${{ secrets.AC_API_KEY_BASE64 }}
AC_API_KEY_ID: ${{ secrets.AC_API_KEY_ID }}
AC_API_ISSUER_ID: ${{ secrets.AC_API_ISSUER_ID }}
HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
shell: bash
run: |
missing=0
for name in BUILD_CERTIFICATE_BASE64 P12_PASSWORD APPLE_TEAM_ID \
AC_API_KEY_BASE64 AC_API_KEY_ID AC_API_ISSUER_ID HOMEBREW_TAP_TOKEN; do
if [ -z "${!name}" ]; then
echo "::error::Missing required Actions secret: $name"
missing=1
fi
done
exit "$missing"

- name: Show toolchain
run: |
xcodebuild -version
xcodebuild -showsdks | grep -i macos || true

- name: Install tools
run: brew install xcodegen create-dmg

- name: Import Developer ID certificate
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
shell: bash
run: |
keychain="$RUNNER_TEMP/build.keychain-db"
keychain_password="$(uuidgen)"
echo "$BUILD_CERTIFICATE_BASE64" | base64 --decode > "$RUNNER_TEMP/cert.p12"
security create-keychain -p "$keychain_password" "$keychain"
security set-keychain-settings -lut 21600 "$keychain"
security unlock-keychain -p "$keychain_password" "$keychain"
security import "$RUNNER_TEMP/cert.p12" -k "$keychain" -P "$P12_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$keychain_password" "$keychain" >/dev/null
security list-keychains -d user -s "$keychain"
rm "$RUNNER_TEMP/cert.p12"

- name: Generate Xcode project
shell: bash
run: |
cd "$WORKDIR"
xcodegen generate

- name: Test Barr
if: env.APP == 'barr'
shell: bash
run: |
cd "$WORKDIR"
xcodebuild test \
-project "$PROJECT" \
-scheme "$SCHEME" \
-configuration Debug \
-destination 'platform=macOS' \
CODE_SIGNING_ALLOWED=NO

- name: Archive
shell: bash
run: |
cd "$WORKDIR"
xcodebuild archive \
-project "$PROJECT" \
-scheme "$SCHEME" \
-configuration Release \
-archivePath "$RUNNER_TEMP/$DISPLAY.xcarchive" \
-destination 'generic/platform=macOS' \
MARKETING_VERSION="$VERSION" \
CURRENT_PROJECT_VERSION=${{ github.run_number }} \
CODE_SIGN_STYLE=Manual \
CODE_SIGN_IDENTITY="Developer ID Application" \
DEVELOPMENT_TEAM=${{ secrets.APPLE_TEAM_ID }}

- name: Export Developer ID app
shell: bash
run: |
cd "$WORKDIR"
xcodebuild -exportArchive \
-archivePath "$RUNNER_TEMP/$DISPLAY.xcarchive" \
-exportOptionsPlist ExportOptions.plist \
-exportPath "$RUNNER_TEMP/export"

- name: Package DMG
id: dmg
shell: bash
run: |
dmg="$RUNNER_TEMP/$DISPLAY-$VERSION.dmg"
create-dmg \
--volname "$DISPLAY $VERSION" \
--window-size 540 380 \
--icon-size 100 \
--icon "$DISPLAY.app" 140 190 \
--app-drop-link 400 190 \
"$dmg" "$RUNNER_TEMP/export/$DISPLAY.app"
echo "path=$dmg" >> "$GITHUB_OUTPUT"

- name: Sign DMG
run: |
codesign --force --sign "Developer ID Application" --timestamp "${{ steps.dmg.outputs.path }}"
codesign --verify --verbose=2 "${{ steps.dmg.outputs.path }}"

- name: Notarize and staple
env:
AC_API_KEY_BASE64: ${{ secrets.AC_API_KEY_BASE64 }}
AC_API_KEY_ID: ${{ secrets.AC_API_KEY_ID }}
AC_API_ISSUER_ID: ${{ secrets.AC_API_ISSUER_ID }}
shell: bash
run: |
key="$RUNNER_TEMP/AuthKey.p8"
echo "$AC_API_KEY_BASE64" | base64 --decode > "$key"
xcrun notarytool submit "${{ steps.dmg.outputs.path }}" \
--key "$key" --key-id "$AC_API_KEY_ID" --issuer "$AC_API_ISSUER_ID" --wait
xcrun stapler staple "${{ steps.dmg.outputs.path }}"
rm "$key"

- name: Publish GitHub release
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
gh release create "$GITHUB_REF_NAME" \
"${{ steps.dmg.outputs.path }}" \
--title "$DISPLAY $VERSION" \
--generate-notes

update-tap:
needs: release
runs-on: ubuntu-latest
steps:
- name: Configure app from tag
shell: bash
run: |
case "$GITHUB_REF_NAME" in
barr-v*) app=barr; display=Barr ;;
windo-v*) app=windo; display=Windo ;;
loadout-v*) app=loadout; display=Loadout ;;
*) echo "::error::Unsupported release tag: $GITHUB_REF_NAME"; exit 1 ;;
esac
{
echo "APP=$app"
echo "DISPLAY=$display"
echo "VERSION=${GITHUB_REF_NAME#*-v}"
} >> "$GITHUB_ENV"

- name: Bump Homebrew cask
env:
TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
shell: bash
run: |
if [ -z "$TAP_TOKEN" ]; then
echo "::error::Missing required Actions secret: HOMEBREW_TAP_TOKEN"
exit 1
fi

url="https://github.com/zackbart/apps/releases/download/$GITHUB_REF_NAME/$DISPLAY-$VERSION.dmg"
curl -fSL --retry 6 --retry-delay 10 --retry-all-errors -o app.dmg "$url"
test -s app.dmg || { echo "::error::Downloaded DMG is empty"; exit 1; }
sha=$(sha256sum app.dmg | awk '{print $1}')
rm app.dmg

git clone "https://x-access-token:${TAP_TOKEN}@github.com/zackbart/homebrew-tap.git" tap
cd tap
cask="Casks/$APP.rb"
sed -i -E "s|^ version \".*\"| version \"$VERSION\"|" "$cask"
sed -i -E "s|^ sha256 \".*\"| sha256 \"$sha\"|" "$cask"
if grep -q '^ verified:' "$cask"; then
sed -i -E "s|^ url \".*\",| url \"https://github.com/zackbart/apps/releases/download/$APP-v#{version}/$DISPLAY-#{version}.dmg\",|" "$cask"
sed -i -E "s|^ verified: \"github.com/zackbart/[^/]+/\"| verified: \"github.com/zackbart/apps/\"|" "$cask"
else
sed -i -E "s|^ url \".*\"| url \"https://github.com/zackbart/apps/releases/download/$APP-v#{version}/$DISPLAY-#{version}.dmg\"|" "$cask"
fi
sed -i -E "s|^ homepage \".*\"| homepage \"https://github.com/zackbart/apps/tree/main/$APP\"|" "$cask"
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add "$cask"
git diff --cached --quiet || git commit -m "$APP $VERSION"
git push
43 changes: 42 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,43 @@
# apps
# Native apps

A collection of native apps built to solve problems I have.

## Apps

| App | Platform | Description |
| --- | --- | --- |
| [Barr](barr/) | macOS | A second home for menu bar apps. |
| [Windo](windo/) | macOS | A floating, always-on-top web window. |
| [Loadout](loadout/) | macOS and iOS | Inspect AI-agent skills and MCP servers configured on a machine. |
| [Livewall](livewall/) | macOS | Native live wallpapers for macOS. |
| [MrMouse](mrmouse/) | macOS | A lightweight Logitech MX Master 3S driver. |
| [Herdr iOS](herdr-ios/) | iOS | A SwiftUI client for Herdr. |
| [JellyTV](jellytv/) | tvOS | A Live-TV-first Jellyfin client for Apple TV. |

Each app owns its project files, documentation, and license. Run development
commands from the app directory unless its README says otherwise.

## Releases

Barr, Windo, and Loadout are built, signed, notarized, published to GitHub
Releases, and submitted to the Homebrew tap by the shared release workflow.
Release tags are app-scoped to keep versions independent:

```text
barr-v0.0.10
windo-v0.1.7
loadout-v0.1.3
```

The workflow requires these repository Actions secrets:

- `BUILD_CERTIFICATE_BASE64`
- `P12_PASSWORD`
- `APPLE_TEAM_ID`
- `AC_API_KEY_BASE64`
- `AC_API_KEY_ID`
- `AC_API_ISSUER_ID`
- `HOMEBREW_TAP_TOKEN`

Historical releases remain available from the apps' former standalone
repositories.
15 changes: 15 additions & 0 deletions barr/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# XcodeGen generates this from app/project.yml
app/Barr.xcodeproj/

# Build output
build/
DerivedData/
app/build/
app/.build/
app/DerivedData/
*.dmg
*.app
*.xcuserstate
xcuserdata/

.DS_Store
Loading
Loading