Русский · English
Нативный индикатор оставшихся лимитов OpenAI Codex для строки меню macOS.
|
Поддержка помогает развивать приложение, проверять новые версии Codex и готовить подписанные сборки. |
||||
Возможности · Установка · Безопасность · Разработка · Ограничения
Codex Limit Bar живёт только в строке меню и показывает фактический оставшийся процент Codex, длительность окна и время следующего сброса. Приложение не создаёт обычное окно и не занимает место в Dock.
Данные обновляются сразу после запуска и затем каждые три минуты в фоне. Последний успешный результат сохраняется как stale snapshot при временной ошибке.
Проект является независимой утилитой и не аффилирован с OpenAI.
- Фактический остаток основного недельного или короткого окна Codex.
- Дополнительные лимиты моделей, если они присутствуют в ответе аккаунта.
- Точное локальное время следующего сброса.
- Состояния загрузки, stale data, истёкшей авторизации, rate limit, сети, VPN-gate и неизвестного формата.
- Ручное обновление без параллельных дублирующихся запросов.
- Фоновое обновление лимитов каждые три минуты, даже когда панель закрыта.
- Автозапуск через системный
SMAppService. - Автономный ChatGPT device login с хранением собственной сессии в macOS Keychain.
- Динамический процент остатка под OpenAI blossom в строке меню.
- Автоматическая локализация интерфейса на английский или русский язык системы.
- Нативная реализация на SwiftUI и AppKit без сторонних runtime-зависимостей.
- Скачайте
Codex-Limit-Bar-0.2.1.dmgиз GitHub Releases. - Откройте DMG и перенесите
Codex Limit Bar.appвApplications. - Запустите приложение. Для ad-hoc сборки macOS может потребовать первый запуск через контекстное меню Открыть.
- В панели приложения нажмите Автономный вход, вставьте скопированный код на открывшейся странице ChatGPT и завершите авторизацию.
- При необходимости разрешите автозапуск в Настройки системы → Основные → Объекты входа.
До автономного входа приложение может временно использовать локальную авторизацию Codex CLI или OpenCode как read-only fallback. После входа Codex Limit Bar хранит и обновляет собственную сессию независимо от запущенного OpenCode.
Перед каждым запросом к OpenAI приложение параллельно отправляет credential-free HEAD запросы к YouTube, Speedtest и WhatsApp.
- Если отвечает хотя бы один сервис, запрос к OpenAI разрешается.
- Если недоступны все три сервиса, приложение не читает локальный токен и не обращается к OpenAI.
- Таймаут каждой проверки составляет 5 секунд.
Это продуктовая эвристика доступности, а не проверка конкретного VPN-интерфейса или маршрута.
MenuBarExtra window
-> UsageStore
-> PublicServiceConnectivityGate
-> ChatGPTAuthManager / Keychain
-> LocalChatGPTAuthLoader fallback
-> LiveCodexUsageProvider
-> chatgpt.com/backend-api/wham/usage
- UI зависит от
CodexUsageProviding, а не от transport response. - Парсер, OAuth retry, локальная авторизация, wake refresh, VPN-gate и refresh state тестируются отдельно.
- Refresh-запросы coalesce и не создают параллельный polling loop.
- Release pipeline собирает
.app,.icns, DMG и SHA-256 checksum.
- Токены никогда не записываются в код, fixtures, logs или release artifacts.
- Auth-файлы принимаются только с приватными POSIX-правами без доступа group/other.
- Собственная OAuth-сессия Codex Limit Bar хранится как generic password в macOS Keychain.
- Токен хранится только в памяти и отправляется исключительно на точный HTTPS origin
chatgpt.com. - VPN-проверки не получают токен, account ID или другие OpenAI credentials.
- Используются ephemeral
URLSession, отключённый URL cache и bounded timeouts. - Приложение только читает auth-файлы Codex/OpenCode и никогда их не изменяет; обновляется только собственная Keychain-сессия.
Подробности источника данных: docs/usage-source.md.
Требования:
- macOS 14 или новее.
- Xcode 26 / Swift 6.2 или новее.
- Apple Silicon для текущего готового DMG.
swift test
swift run CodexLimitBarСборка app bundle:
./scripts/build-app.sh
open dist/CodexLimitBar.appСборка DMG:
./scripts/build-dmg.shАртефакт и SHA-256 checksum будут записаны в release/.
wham/usageиспользуется официальным open-source Codex client, но не документирован как стабильный публичный API.- Fallback на локальный OpenCode OAuth является неподдерживаемой интеграцией и может измениться вместе с форматом OpenCode auth.
- Приложение не обновляет и не принимает во владение OAuth credentials другого клиента; автономный device login создаёт отдельную app-owned сессию.
- Текущий публичный DMG собран для Apple Silicon.
- Сборка подписана ad-hoc и не нотарифицирована Apple; для публичной production-дистрибуции потребуется Developer ID и notarization.
- macOS может потребовать ручное подтверждение login item.
