Eğitim çalıştırmanız ya da build'iniz bittiğinde bir bildirim alın

İşinizi LidRun altında çalıştırın; process sona erdiği anda — exit code'u ve ne kadar sürdüğünü de ekleyerek — size bildirim gönderir. Böylece bir terminal penceresini beklemek yerine, Mac'teki iş bittiğinde haberiniz olur. Telefon bildirimi (ntfy.sh veya Pushover) ücretsizdir; Telegram, Discord, Slack ve özel bir webhook ise Pro'ya dahildir. Hiçbir şey kurmak istemiyorsanız, macOS'ta zaten bir shell komutu bittiğinde sizi haberdar edebilecek birkaç komut var — bu rehber ikisini de anlatıyor: ücretsiz native yöntemi ve LidRun'ın kanallarının uçtan uca tam olarak nasıl çalıştığını.
Neden hâlâ terminali kontrol edip duruyorsunuz
macOS'ta "bu bittiğinde bana söyle" diyen yerleşik bir özellik yok. Terminal.app, arka plandaki bir shell komutu tamamlandığında Dock simgesini yanıp söndürebilir (Preferences → Profiles → Shell → "Notify when process completes"), ama bu ancak o anda Mac'in başındaysanız işe yarar — telefonunuza ulaşmaz ve komutun gerçekten başarılı olup olmadığı hakkında hiçbir şey söylemez. Bir ollama pull, bir cargo build, bir eğitim döngüsü ya da başıboş bırakılmış bir Claude Code / Codex oturumu, aksi halde tamamen sessizce biter.
Böylece ya oturup sürekli kontrol edersiniz, ya da kalkıp gidersiniz ve tahmin oynarsınız: çok erken dönerseniz yine beklersiniz, çok geç dönerseniz bir sonraki işe ayırabileceğiniz zamanı kaybetmiş olursunuz. Amphetamine, Caffeine, KeepingYouAwake, Lungo gibi genel amaçlı uyanık-tutma uygulamaları işin ilk yarısını iyi çözer — Mac'in uykuya geçmesini engellerler — ama hiçbiri belirli bir komutu izlemez ya da o komut bittiğinde size haber vermez. Bu, bir menü çubuğu anahtarından farklı bir iş.
Çözüm, process sona erdiği anda gelen ve gerçekten başarılı olup olmadığını söyleyen tek bir mesaj. Bu rehberin geri kalanı buna ulaşmanın iki yolunu anlatıyor: Mac'inizde zaten var olanlarla kendiniz kurmak, ya da LidRun'a bıraktırmak.
Ücretsiz, native yöntemle bildirim almak
macOS, hiçbir şey kurmadan bunun kaba bir versiyonunu kurmaya yetecek kadar araçla geliyor. say "build finished" bir cümleyi yüksek sesle söyler — yan odadaysanız işinizi görür. osascript -e 'display notification "Build finished, exit 0" with title "Terminal"' ise gerçek bir Notification Center bildirimi gösterir, herhangi bir uygulamanın ürettiğiyle aynı türden. İkisinden birini bir komuta ; ile (başarı durumundan bağımsız çalışır) ya da && ile (yalnızca komut başarılı olursa çalışır) zincirleyebilirsiniz: npm run build && osascript -e 'display notification "Build finished" with title "npm"'.
Biraz daha derli toplu bir şey isterseniz, terminal-notifier (brew install terminal-notifier) bunun için standart ücretsiz araç — terminal-notifier -title "Build" -message "Finished" daha temiz bir komut satırı API'siyle aynı türden bir bildirim gösterir. Ama bu üçünden hiçbiri telefonunuza ulaşmaz; hepsi yalnızca başında oturduğunuz Mac'teki Notification Center'a düşer.
Çoğu kişinin gözden kaçırdığı kısım şu: say, osascript ya da terminal-notifier'ın hiçbiri Mac'i uyanık tutmaz. Ekran uykuya geçer ve iş bitmeden idle sleep devreye girerse, macOS tüm süreci duraklatabilir — build takılır kalır ve zincirin sonundaki bildirim komutu hiç çalışmaz. Bir komutun önüne konan caffeinate -i, tam olarak o komut çalıştığı süre boyunca idle sleep'i erteler — bildirim araçlarının kendi başına sağlamadığı parça bu.
Bir araya getirince, tam ücretsiz ve native tarif ortaya çıkıyor — iş boyunca uyanık kal, sonra bittiğinde bir şey söyle:
caffeinate -i npm run build; osascript -e 'display notification "Build finished" with title "npm"'
Kendi kurduğunuz zincir nerede kopuyor
Pratikte caffeinate artı bir bildirim komutuyla üç şey ters gidebilir. Birincisi, caffeinate kör bir wake lock'tur — pilinizin veya termal durumunuzun ne olduğu hakkında hiçbir fikri yoktur ve sarmaladığı komut ne kadar sürerse sürsün, MacBook'u herhangi bir şarj seviyesinde veya sıcaklıkta uyanık tutar. Masa başında beş dakikalık bir build için sorun değil; ama daha uzun, başıboş bırakılmış bir çalıştırmada bu, gerçekten pilin bitmesine ya da termal kapanmaya yol açabilir — özellikle havalandırma delikleri bir laptop standının altında ya da bir çantada tıkalıysa. Mac'i havalandırmalı tutmak her hâlükârda size kalmış — hiçbir araçtan gelen hiçbir bildirim kasayı soğutmaz.
İkincisi, osascript, terminal-notifier ve say yalnızca başında olduğunuz Mac'e ulaşır. Ortadan kaybolmuşsanız, ekrana tekrar bakana kadar bildirimi görmezsiniz — ki bu tam olarak çözmeye çalıştığınız sorundur.
Üçüncüsü, kapağı kapatmak tüm zinciri durdurur. Ayrıca pmset disablesleep 1 çalıştırmadığınız sürece — ki bu admin yetkisi gerektirir ve tek bir komuta özgü olmayan, 0'a geri almayı hatırlamanız gereken daha ağır, kalıcı bir anahtardır — kapağı kapatmak Mac'i, işi ve beraberindeki bildirim komutunu da askıya alır.
LidRun'ın ücretsiz versiyonu: sarmalanmış bir komut artı tek bir notify çağrısı
LidRun'ın doldurduğu boşluk tam olarak bu, ve ücretsiz katman bunun temel versiyonunu zaten karşılıyor. Kural basit: agent ya da komut çalışıyor → uyanık kal; komut bitti ya da bir şey güvensiz hale geldi → bırak ve Mac'in uyumasına izin ver. Ücretsiz CLI tarifi:
lidrun -- npm run build; lidrun notify "Build finished" "exit $?"
lidrun -- <command>, komutu, ömrü boyunca bir keep-awake assertion'ı içine sarmalar — kendi başına yeterlidir ve bu kısım için menü çubuğunda bir LidRun uygulamasının çalışıyor olması gerekmez. Şunu netleştirmekte fayda var: tek başına bu sarmalama, caffeinate gibi düz bir wake lock'tur — içine gömülü pil ya da termal farkındalığı yoktur, child process çıkar çıkmaz serbest bırakılır. lidrun notify "<başlık>" "<gövde>" gerçek bir bildirim ekleyen parçadır ve bunun için menü çubuğunda LidRun uygulamasının çalışıyor olması gerekir — yerel bir bildirim gösterir, üstüne Notifications & Alerts'te telefon bildirimini açtıysanız, telefonunuza ntfy.sh (ücretsiz, konu tabanlı — ntfy uygulamasını kurun, seçtiğiniz bir konuya abone olun, LidRun oraya gönderir) ya da Pushover (tek seferlik ücretli bir uygulama, abonelik değil) üzerinden gönderir. İki komut da ücretsizdir — Pro katmanı gerekmez.
LidRun'ın temel güvenlik tabanı — pil yaklaşık %4'e düştüğünde otomatik durdurma, sürekli termal baskı altında geri çekilme — uygulamanın kendi modlarına ait: Keep Awake, Timer ve Run & Watch a Command, hepsi çıplak bir IOKit assertion'ı yerine LidRun'ın state machine'i altında çalışır. İşin kendisinin sadece sarmalanmasını değil, bu güvenlik ağıyla izlenmesini istiyorsanız, ücretsiz Keep Awake/Timer ya da Pro Run & Watch'ın ham CLI sarmalamasına kattığı fark tam olarak bu — Mac'e ne olursa olsun çalışmaya devam eden kör bir wake lock değil.
Telegram, Discord, Slack ve bir webhook — Pro katmanı
Uyarıların Mac'ten tamamen çıkmasını istiyorsanız — ekibinizin zaten izlediği bir kanala düşmesini ya da kurmanıza gerek olmayan bir uygulamaya ulaşmasını — bu, LidRun'ın Pro entegrasyonlarının işi: Telegram, Discord, Slack ve genel bir webhook, hepsi menü çubuğundaki Notifications & Alerts penceresinden ayarlanır. Yukarıdaki telefon bildirimi her durumda ücretsiz kalır; bu dört kanal, Run & Watch a Command, Closed-Lid modu ve Smart Rules'un kilidini açan aynı katmandadır.
Telegram için kendi bot'unuzu oluşturmanıza gerek yok: Telegram'da paylaşılan LidRun bot'unu açın (@Libruntest_bot, ya da uygulamadaki "Open the LidRun bot" düğmesi) ve Start'a dokunun, ardından kendi numaralı Chat ID'nizi almak için @userinfobot'u açın ve o Chat ID'yi LidRun'a yapıştırın. Kurulum bu kadar — bot token yok, BotFather yok. Gelişmiş bir alan, isterseniz kendi bot'unuzu kullanmanıza izin verir; paylaşılan bot'u kullanmak için boş bırakmanız yeterli.
Discord ve Slack, LidRun tarafında aynı şekilde çalışır: kanalın entegrasyon ayarlarından bir gelen webhook URL'i oluşturun (Discord: channel settings → Integrations → Webhooks → New Webhook; Slack: workspace'inizin Incoming Webhooks uygulaması) ve URL'i yapıştırın. Discord mesajları {"content": "..."} olarak gönderilir; Slack ise {"text": "..."} olarak — her iki servisin de kendi webhook dokümantasyonunda anlattığı aynı JSON, yani LidRun'a özgü öğrenilecek bir şey yok.
Genel webhook, geri kalan her şey için: Zapier, IFTTT, Home Assistant, kendi endpoint'iniz. LidRun, verdiğiniz URL'e şunu POST eder:
{"title": "Task finished ✅", "body": "npm run build (exit 0) after 2m 14s", "event": "session_finished", "app": "LidRun"}
event, üzerinden yönlendirme yapabileceğiniz kısa bir makine anahtarı — tamamlanan işler için session_finished ve all_tasks_finished, güvenlik tarafı için thermal_critical ve sleep_failed.
Gönderim, tek bir yeniden deneme hakkı olan fire-and-forget şeklindedir: bir kanal mesajı reddederse, LidRun 5 saniye bekler ve bir kez daha dener, ardından sonsuza dek yeniden denemek yerine hatayı kaydeder. Her istek 15 saniye sonra zaman aşımına uğrar. Gerçek bir çalıştırmadan önce her kanalın yanındaki "Send test"i kullanın, böylece hatalı bir Chat ID ya da webhook URL'i ilk uyarınızı sessizce yutmaz.
Bir uyarıyı gerçekte ne tetikler
Bilinmesi gereken iki geniş olay türü var. Birincisi, biten bir komut. Run & Watch a Command (Pro, uygulama içinde) komutunuzu çalıştırır, ömrü boyunca keep-awake'i tutar ve çıkışta exit code'u ve süresi zaten içinde olan bir uyarı ateşler — sadece "durdu" değil, "Task finished" ya da "Task failed." Auto Mode (Pro) aynısını bütün bir process izleme listesi üzerinde yapar ve listedeki her şey bittiğinde bildirim gönderir — ama yalnızca siz gerçekten ortada yokken: kapak kapalıyken ya da birkaç dakika boşta kalındığında — böylece masa başında otururken her seferinde bir bildirim eklemez.
İkincisi bir güvenlik olayı, ve bunun iki katmanı var. LidRun'ın temel güvenlik tabanı — Mac kritik derecede ısındığı ya da pil acil eşiğine ulaştığı için keep-awake'i bırakması, ya da LidRun'ın closed-lid modundan sonra normal uykuyu geri getirememesi — lisanstan bağımsız olarak, ücretsiz "Critical safety alerts" anahtarı altında telefonunuza gönderilir. Watchdog (Pro) bunun üstüne daha spesifik tespit ekler: sizi bekliyormuş gibi görünen takılı kalmış bir agent, kopan bir ağ bağlantısı ve daha erken yakalanan aynı termal/pil-kritik koşulların daha ayrıntılı raporlanması.
Hepsini bir arada tutan tek bir kural var: telefon bildirimi — yerel bir bildirim artı ntfy ya da Pushover — LidRun'ın tetikleyebileceği her olay için ücretsizdir. Telegram, Discord, Slack ve webhook ise üstüne binen Pro katmanıdır ve aynı olayları daha fazla yere yayar.
Ayrıca "Away notifications"ı (ücretsiz) da açarsanız, bir şey çalışırken kapağı kapatmak, neyin çalıştığını ve LidRun'ın pil ile ısı konusunda ne yapacağını söyleyen kısa bir mesaj gönderir, kapağı tekrar açtığınızda ise kısa bir özet gelir — sürekli güncelleme akışı değil, her an için tek bir mesaj.
LidRun, işinizi kapak kapalıyken, pil ve sıcaklık koruması yerleşik biçimde çalışır tutar.
LidRun zaten sizde mi? Kurulum rehberini okuyun →
LidRun'u yeni mi tanıdınız? Fiyatlara bakın →
Sık sorulanlar
Hayır. Telegram'da paylaşılan LidRun bot'unu (@Libruntest_bot) açın, Start'a dokunun, ardından @userinfobot'un size verdiği numaralı Chat ID'yi LidRun'ın Notifications & Alerts penceresine yapıştırın. Oluşturulacak bir bot token'ı ya da BotFather'a kaydedilecek bir şey yok. Gelişmiş bir alan, isterseniz kendi bot'unuzu kullanmanıza izin verir — paylaşılan bot'u kullanmak için boş bırakın.
Telefon bildirimi — yerel bir bildirim artı ntfy.sh ya da Pushover — ücretsizdir ve iş-bitti bildirimlerini, LidRun'ın temel güvenlik tabanını (düşük pil, aşırı ısınma) ve away notifications'ı kapsar. Telegram, Discord, Slack ve özel webhook ise Pro'dur — Run & Watch a Command (exit code ve süre uyarısını otomatik oluşturan mod), Auto Mode ve Watchdog ile birlikte.
Genel webhook şu JSON'u POST eder: {"title": "...", "body": "...", "event": "...", "app": "LidRun"}, burada event, üzerinden yönlendirme yapabileceğiniz session_finished gibi kısa bir makine anahtarıdır. Discord {"content": "..."} alır, Slack ise {"text": "..."} alır — her iki servisin de kendi gelen-webhook dokümantasyonunda anlattığı standart şekil.
Run & Watch a Command (Pro) için evet: başlık "Task finished" ya da "Task failed" olarak gelir, gövdede ise exit code ve ne kadar sürdüğü yer alır. Ücretsiz lidrun -- <command> CLI sarmalaması bu mesajı otomatik oluşturmaz — aynı bilgiyi ücretsiz almak için lidrun notify "başlık" "exit $?" ile zincirleyin.
Telegram/Discord/Slack/webhook gönderimleri için: bir kez. Bir kanal mesajı reddederse, LidRun 5 saniye bekler ve tekrar dener, ardından sonsuza dek yeniden denemek yerine hatayı kaydeder. Yerel bildirimler ile ntfy/Pushover telefon bildirimleri ise tek seferlik fire-and-forget bir istektir, aynı şekilde yeniden denenmez.
Evet. caffeinate -i your-command; osascript -e 'display notification "Done" with title "Job"', komut çalışırken Mac'in idle-sleep'e geçmesini engeller, bitince de bir Notification Center bildirimi gösterir. Bu tamamen yerel bir çözüm — ortadan kaybolmuşsanız telefonunuza ulaşmaz, ve pil ya da termal durumunuzun zorlamaya devam etmek için güvenli olup olmadığından haberi yoktur.
Evet. LidRun'ın temel güvenlik tabanı keep-awake'i bıraktığında — kritik derecede ısındığında ya da pil acil eşiğine yaklaştığında — bu, iş-bitti bildirimlerinden bağımsız olarak, ücretsiz "Critical safety alerts" anahtarı altında telefonunuza gönderilir. Watchdog (Pro) bunun üstüne, sizi bekliyormuş gibi görünen takılı kalmış bir agent ya da kopan bir ağ bağlantısı gibi daha spesifik uyarılar ekler.