feat: show the 5-hour limit when a subscription provides one #22
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
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-and-verify: | |
| runs-on: macos-26 | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Show Swift version | |
| run: swift --version | |
| - name: Install XcodeGen | |
| run: brew install xcodegen | |
| - name: Verify generated Xcode project | |
| run: | | |
| make xcode-project | |
| git diff --exit-code -- CodexUsageBar.xcodeproj | |
| - name: Check formatting | |
| run: swift format lint --recursive Sources Tests Package.swift | |
| - name: Run deterministic verifier | |
| run: make test | |
| - name: Build WidgetKit extension with SwiftPM | |
| run: make widget-build | |
| - name: Build universal app, widget, and DMG | |
| env: | |
| VERSION: 0.2.2 | |
| BUILD_NUMBER: ${{ github.run_number }} | |
| run: make release-package | |
| - name: Verify app, widget, DMG, metadata, and signatures | |
| run: | | |
| APP="dist/Codex Usage Bar.app" | |
| WIDGET="$APP/Contents/PlugIns/CodexUsageWidget.appex" | |
| ICON="$APP/Contents/Resources/AppIcon.icns" | |
| SPARKLE="$APP/Contents/Frameworks/Sparkle.framework" | |
| DMG="dist/Codex-Usage-Bar-v0.2.2-universal.dmg" | |
| WIDGET_ENTITLEMENTS="$RUNNER_TEMP/widget-entitlements.plist" | |
| test -d "$WIDGET" | |
| test -f "$ICON" | |
| test -d "$SPARKLE" | |
| test -f "$DMG" | |
| test -f "$DMG.sha256" | |
| plutil -lint "$APP/Contents/Info.plist" | |
| plutil -lint "$WIDGET/Contents/Info.plist" | |
| codesign --verify --deep --strict --verbose=2 \ | |
| "$APP" | |
| codesign --verify --deep --strict --verbose=2 \ | |
| "$SPARKLE" | |
| codesign -d --entitlements :- "$WIDGET" \ | |
| >"$WIDGET_ENTITLEMENTS" | |
| test "$( | |
| plutil -extract 'com\.apple\.security\.network\.client' raw \ | |
| "$WIDGET_ENTITLEMENTS" | |
| )" = "true" | |
| test "$( | |
| plutil -extract CFBundleIconFile raw "$APP/Contents/Info.plist" | |
| )" = "AppIcon.icns" | |
| test "$( | |
| plutil -extract SUFeedURL raw "$APP/Contents/Info.plist" | |
| )" = "https://github.com/CMMUU/codex-usage-bar/releases/latest/download/appcast.xml" | |
| test "$( | |
| plutil -extract SURequireSignedFeed raw "$APP/Contents/Info.plist" | |
| )" = "true" | |
| test "$( | |
| plutil -extract SUVerifyUpdateBeforeExtraction raw \ | |
| "$APP/Contents/Info.plist" | |
| )" = "true" | |
| file "$APP/Contents/MacOS/Codex Usage Bar" \ | |
| | grep -q "universal binary" | |
| file "$WIDGET/Contents/MacOS/CodexUsageWidget" \ | |
| | grep -q "universal binary" | |
| ( | |
| cd dist | |
| shasum -a 256 -c "$(basename "$DMG").sha256" | |
| ) | |
| - name: Check public-release boundaries | |
| run: make public-release-check | |
| website: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| defaults: | |
| run: | |
| working-directory: web | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: web/package-lock.json | |
| - name: Install website dependencies | |
| run: npm ci | |
| - name: Check Worker and frontend scripts | |
| run: npm run check | |
| - name: Run Worker tests | |
| run: npm test | |
| - name: Validate Worker bundle | |
| run: npx wrangler deploy --dry-run |