Historia wersji klienta
Plik pod https://hellocron.com/hellocron.sh zawsze serwuje najnowszą wersję z listy poniżej. Starsze wpisy to historia zmian, nie są trzymane jako osobne pliki do pobrania. Użyj hellocron update, aby przejść na najnowszą, albo hellocron version, aby sprawdzić zainstalowaną.
d605440146df5e3c7d7738cf364d88ca3e99d144fb40e2f0da50204a1a582be3 Verify against published .sha256 View source on GitHubv1.6.1-260924 (przed wydaniem)
- Interaktywny
discover-server-appsproponuje zapis wypisanego pliku do/etc/cron.d. Wymaga roota, zapisuje atomowo z uprawnieniami0644, a przed zastąpieniem istniejącego pliku pyta osobno i zachowuje ukrytą kopię.--yes,-oi przekierowany stdout zachowują dotychczasowe działanie.
v1.6.0-260922 (przed wydaniem)
- Nowa komenda
discover-server-apps: wykrywa usługi zainstalowane na hoście (nginx, Apache, certbot, PostgreSQL, MySQL/MariaDB, Redis, MongoDB) i czy działają, pozwala zaznaczyć sprawdzenia na liście, tworzy odpowiadające im monitory kondycji serwera przez API presetów i wypisuje plik crona. Plik crona to jedyna rzecz na stdout, więchellocron discover-server-apps --yes > /etc/cron.d/hellocron-server-healthto kompletna instalacja;--items,--all,--host,--backup-dir,--disk-threshold,--dry-runi-oobsługują skrypty i provisioning. Wymaga klucza zarządzania i planu z config as code. applyiexportpodają prawdziwy status HTTP, gdy żądanie się nie uda. Dotąd każdy błąd, także odrzucony klucz albo problem walidacji, zgłaszały jako „brak połączenia”.
v1.5.4-260914 (przed wydaniem)
runzachowuje oryginalną maskę uprawnień zadania. Kolory ANSI i pozostałe znaki kontrolne nie psują już JSON-a pinga.discoverzachowuje cytowane znaki#i backslashe, wykonuje przypisania zmiennych przez shell oraz bezpiecznie cytuje nazwy projektów i ścieżkę klienta.- Opcje bez wartości natychmiast zwracają błąd.
configurezwraca niepowodzenie, gdy nie może zapisać konfiguracji lub ustawić jej uprawnień.
v1.5.3-260913 (aktualna)
Wydana 2026-09-13. Klient mówi o limicie planu, ale nigdy nie wywraca z tego powodu zadania.
- Stan kwoty czytany z nagłówków odpowiedzi każdego pingu i zgłaszany na stderr: zbliżasz się do limitu, przekroczyłeś go albo monitoring jest wstrzymany, za każdym razem z datą wyzerowania licznika. Wyczerpanie kwoty nigdy nie zmienia kodu wyjścia i nigdy nie psuje zadania. O to tu właśnie chodzi: ping leci z linijki curl w crontabie, więc odpowiedź błędem sprawiłaby, że cron uzna poprawnie wykonane zadanie za nieudane i wyśle o tym maila. Nasz problem rozliczeniowy nie może stać się czyjąś awarią na produkcji.
- Komunikaty z żądania pingu w ogóle docierają do terminala. Wcześniej całe wyjście trafiało do zmiennej, której nikt nie czytał, więc każde ostrzeżenie znikało bez śladu.
- Dla instalacji self-hosted i starszych serwerów nic się nie zmienia: brak nagłówków kwoty znaczy brak komunikatów.
v1.5.2-260912
Wydana 2026-09-12. discover rozumie crontaby, które naprawdę istnieją, a doctor odpowiada, czy klient jest aktualny.
doctormówi, czy zainstalowany klient jest tym aktualnym. Pyta o opublikowaną wersję, przy nowszej podaje jej numer i polecenieupdate; czekająca aktualizacja jest ostrzeżeniem, a nie błędem diagnostyki. Gdy host z plikiem do pobrania jest nieosiągalny, linia mówi wprost, że nie dało się sprawdzić, zamiast twierdzić cokolwiek.--no-update-checkpomija to zapytanie.- Nazwy dni i miesięcy są przyjmowane:
5 4 * * sun,0 8 * * MONi30 2 1 JAN *to zwykła składnia crontab(5), a były pomijane bez słowa, więc zaplanowane nimi zadania zostawały bez monitoringu. - Komenda zbudowana ze składni shella (
&&,||,;, potok, przekierowanie,if) idzie do/bin/sh -c, zamiast być uruchamiana wprost.runnie jest shellem:test -x /usr/sbin/anacron || { cd / && run-parts /etc/cron.daily; }było monitorowane tylko do pierwszego operatora, a część wykonująca pracę działała poza monitorem. Końcowe>/dev/null 2>&1zostaje na zewnątrz, żeby wyciszyć też komunikaty samego klienta. - Crontaby systemowe są obsłużone: w
/etc/crontabi/etc/cron.d/*szóste pole to użytkownik, na którego prawach działa zadanie. Rozpoznawane po nazwie pliku albo wymuszane przez--system/--user-crontab. Użytkownik zostaje tam, gdzie cron go oczekuje, i przestał być nazwą monitora, więc cały katalog zadań nie trafia już jakoroot,root-5ef365,root-913b85. - Nazwy monitorów biorą się z programu, który wykonuje pracę, a nie z otaczającej go instalacji shellowej:
run-parts-cron-daily,debian-sa1,sessioncleanzamiasttest,command,cd,if. Tabulatory między polami harmonogramu są obsługiwane, a@midnightjest rozpoznawane obok pozostałych skrótów. - Wyrażenia, których cron nie wczyta, są pomijane zamiast proponowane: rozszerzenia Quartz (
0 0 14W * *,0 0 * * 6#5,LW), szóste pole harmonogramu, pełne nazwy dni (friday), zwykłe literówki. Odrzucony plik crontaba pociąga za sobą wszystkie pozostałe zadania, więc brak propozycji jest bezpieczniejszą odpowiedzią.
v1.5.1-260912
Wydana 2026-09-12. Jedno pytanie przy konfiguracji i nazwy, które da się czytać w panelu.
configurepyta o klucz ingest i o nic więcej. Adres API jest zaszyty w kliencie, więc w pliku konfiguracyjnym zostaje sam klucz.configure --api-key ck_xxx --project nazwaustawia wszystko bez pytania, a--advancednadal pyta o adres API i endpoint pinga przy instalacji self-hosted albo na staging.runoddaje wyjście komendy na tym strumieniu, z którego przyszło. Wcześniej było przechwytywane do pinga i nigdy nie drukowane, przez co linia crontaba dopisująca do pliku logu po cichu zapisywała pustkę, a cron przestawał wysyłać maila o awarii.discoverbuduje nazwy monitorów z adresu URL albo nazwy skryptu, a nie z pierwszego słowa linii:fakturex-fcronzamiastcurl-16f0fd. Nazwy są czyszczone do zestawu znaków, który przyjmuje API, więc kropka w nazwie skryptu nie tworzy już monitora, którego każdy ping jest odrzucany. Krótki hash dochodzi tylko wtedy, gdy dwa zadania miałyby tę samą nazwę.- Podpowiedzi pokazują skrót zapisanego klucza zamiast całości.
discover --host-prefixdokleja krótką nazwę hosta na początek każdej wygenerowanej nazwy, na wypadek jednego crontaba wdrożonego na kilku serwerach. Domyślnie nazwy pozostają per zadanie, bo nazwy monitora nie da się później zmienić, a serwer można przezwać.- Raportowany host można przypiąć wpisem
hostname=w pliku konfiguracyjnym albo zmiennąHELLOCRON_HOSTNAME, co ma znaczenie w kontenerach, gdzie hostname to losowy hex.doctorwypisuje host, który zostanie zaraportowany.
v1.4-260911
Wydana 2026-09-11. Nowa nazwa, nowy adres.
- Skrypt nazywa się
hellocron.shi jest pobierany zhttps://hellocron.com/hellocron.sh;hellocron updatesprawdza ten adres. - Pliki konfiguracyjne to
~/.hellocron.confi~/.hellocron-management.conf; zmienne środowiskowe toHELLOCRON_API_KEY,HELLOCRON_MANAGEMENT_KEY,HELLOCRON_PANEL_URL. - Domyślne endpointy wskazują
api.hellocron.comiapp.hellocron.com. - Nowy nagłówek
hello:cronwhelp,doctoriversion.
v1.3-260727
Wydana 2026-07-27. Config as code z wiersza poleceń.
hellocron exportpobiera wszystkie monitory z konta jako jeden plik bundle.hellocron apply -f monitors.jsondoprowadza konto do stanu z tego pliku, a--dry-runpokazuje zmiany przed ich wprowadzeniem. Apply nigdy nie usuwa: monitory, których nie ma w bundle’u, są raportowane jako osierocone i zostają nietknięte.hellocron configure --management-keyzapisuje klucz Management API w~/.hellocron-management.conf(uprawnienia 600), osobno od~/.hellocron.conf. Klucz ingest z natury leży na każdym monitorowanym serwerze, a klucz zarządzający potrafi usunąć monitor razem z historią, więc oba nigdy nie dzielą jednego pliku.HELLOCRON_MANAGEMENT_KEYma pierwszeństwo i jest właściwym wyborem w CI.- Pomylenie kluczy jest teraz wykrywane lokalnie, z wyjaśnieniem, zamiast gołym
401:apply/exportodrzucają klucz ingest (ck_), a pingi odrzucają klucz zarządzający (mk_). hellocron doctorraportuje klucz zarządzający i uprawnienia jego pliku konfiguracyjnego, jeśli istnieje.
v1.2-260704
Wydana 2026-07-04. Pierwsze publiczne wydanie, serwowane pod adresem pobierania.
- Pingi cyklu życia zadań (
run,complete,fail,skip) oraz opakowywanie komend z automatycznym raportowaniem kodu wyjścia. - Interaktywna konfiguracja przez
hellocron configure, z ustawieniami zapisywanymi w~/.hellocron.conf. - Wykrywanie zadań cron przez
hellocron discover: znajduje istniejące zadania i generuje konfigurację monitoringu. - Samo-aktualizacja przez
hellocron update(orazupdate --check): weryfikacja SHA-256, sprawdzenie składni i kopia.bakprzed podmianą. - Diagnostyka środowiska przez
hellocron doctor. - Konfigurowalne limity czasu, tryb verbose, przełącznik telemetrii i domyślny projekt.
Kolejne wydania dodawane są nad tym wpisem.