İçeriğe atla
ColliePWA

09/Documentation

Yönetim ve güncelleme

Telefondan veya terminalden güncelleme, geri alma, bir crew'u güncelleme, ana sürüme geçiş, durdurma, kaldırma ve bir 0.x kurulumunu 1.0 sürümüne yükseltme

Kurulum yönteminiz:Durumunuz:Eylemlerin yazılışı:
herdr plugin install veya herdr plugin linkHerdr tarafından yönetilen (herdr plugin list, herdr.collie gösterir)herdr plugin action invoke <verb> --plugin herdr.collie
Kurulum betiği veya kaynak koddan derlemeStandaloneKurulum dizininden bin/collie <verb>

Herdr kurulumlarının PATH üzerinde collie ikili dosyası bulunmaz; Herdr eylem kimliklerini kullanın (Herdr eylemleri). Standalone kurulumlar ikili dosyayı ~/.local/share/collie/current/bin/collie veya <checkout>/bin/collie içine yerleştirir:

# the install script's layout
cd ~/.local/share/collie/current && bin/collie version
# a source build or a linked clone
cd ~/my/collie-checkout && bin/collie version

İkili dosyayı ~/.local/bin dizinine sembolik bağ ile bağlamak için bin/collie link komutunu çalıştırın (collie dizinini PATH ortam değişkeninize ekleyin).

Yapılandırma ve durum checkout dışında bulunur ve güncellemeler boyunca korunur (bridge/solo-baseline.test.ts). .env ve tailscale serve kaydı yapılandırma dizinindedir; bu dizin ikili dosya kurulumunda ~/.config/collie, Herdr kurulumunda ise Herdr'ın eklenti yapılandırma dizinidir; eşleştirilen cihazlar ve stt.json ise COLLIE_STATE_DIR taşımadığı sürece ~/.local/state/collie olan durum dizinindedir.

Paketlenmiş bir kurulum

Paket yöneticiniz Collie'yi nereye kurduysa Collie'yi o günceller ve bu bölümün altındaki hiçbir şey geçerli değildir:

sudo pacman -Syu collie-bin    # or `nix profile upgrade collie`, or `brew upgrade collie`

Collie bu kurulumu diskteki biçimlerden tanır: .git yok, versions/ düzeni yok, sürüm yükünün taşıdığı manifest mevcut ve kök dizin salt okunur, ev dizininizin dışında ya da root mülkiyetinde. Son üç durumdan herhangi biri yeterlidir. Ardından yerinde güncellemeyi reddeder ve dizinin hangi yöneticiye ait olduğunu belirleyebildiği durumlarda komutun adını verir:

error: /opt/collie is a packaged install — updates come from your package manager.
       `collie update` will not replace its files.
       Take the new version with: sudo pacman -Syu collie-bin

Ön ekin Collie'nin tanıdığı hiçbir yöneticiyi belirtmediği durumlarda, çalıştıramayacağınız bir komutu tahmin etmek yerine ilk iki satırı yazdırır ve durur.

collie doctor aynı kurulumu sağlıklı olarak bildirir ve telefonun güncelleme kartı, güncelleme düğmesinin yerinde paket komutuyla birlikte daha yeni bir sürümün mevcut olduğunu göstermeye devam eder.

Not. Bu, etrafından dolaşılacak bir kısıtlama değildir. Dizin paket yöneticinize aittir ve dosyalarını onun arkasından değiştirmek, veritabanının neyin yüklü olduğu konusunda yanlış bilgi vermesine yol açar. sudo collie update de aynı şekilde reddeder.

Yeni bir sürüme geçmek için paket yöneticinizi çalıştırın ve ardından servisi yeniden başlatın:

paru -Syu collie-bin                              # Arch, or your AUR helper of choice
nix profile upgrade collie                        # Nix
mise upgrade --bump github:AltanS/collie          # mise
collie restart

mise kurulumu istisnadır: Dizin ağacı ev dizininizde .git ve versions/ düzeni olmadan yer aldığından Collie bunu paketlenmiş olarak okumaz; bu nedenle collie update işlemi cannot tell how this Collie was installed ile reddedilir ve herhangi bir yönetici adı belirtilmez. Sahiplik yine mise üzerindedir. Bkz. Yükleme.

Yeniden başlatma işlemi Collie'nin sizin yerinize yapamayacağı kısımdır ve isteğe bağlı değildir. Paket yöneticiniz çalışan bridge altındaki dosyaları değiştirir; bu yüzden süreç yeni sürümü bildirirken eski kodu yürütmeye devam eder. Collie bu uyuşmazlığı algılar ve bunu belirtir: collie doctor, restart-pending uyarısı verir ve telefonda "Bridge restart needed" başlığı altında "Collie was replaced on disk. Restart it." metni görüntülenir. collie restart çalıştırıldığı anda her iki uyarı da kaybolur.

Bir crew içinde, paketlenmiş bir üye telefondan asla güncelleme almaz. Ekip bunu "waits for the package manager" olarak listeler ve o olmadan çalışmayı tamamlanmış sayar; bu yüzden onu aynı seviyeye getiren şey yukarıdaki iki komuttur.

Paketlenmiş bir lead yalnızca kendi geçişini reddeder. Telefon yine de her üyeyi liderin çalıştırdığı sürüme eşitler ve tek bir onay hepsini kapsar. Yukarıdaki iki komut lideri taşıdıktan sonra hiçbir şey kendiliğinden aynı seviyeye gelmez: Updates sayfasına bir kez daha dokunun, üyeler liderin yeni sürümüne uyum sağlar.

Güncelleme, telefondan veya terminalden

İki güncelleme yolu mevcuttur ve her ikisi de her ana makinede aynı adımları yürütür: yeni sürümü aktif olanın yanında hazırlamak, sembolik bağı değiştirmek, yeniden başlatmak ve servisin yanıt verdiğini denetlemek. Bir ekip liderinde her iki yol da tüm ekibi kapsar. Telefon kısa yoldur. Terminal ise telefonun aynı seviyeye getiremediği bir makine için yedek yoldur.

Telefondan

Ayarlar uygulamasını açın ve Updates seçeneğini belirleyin. Kart çalışan sürümü, en yeni sürümü ve güncellemeye dahil edilen ara sürümleri görüntüler. Ana makine en yeni sürümdeyse kart bunu belirtir ve hiçbir şey teklif etmez.

Updates satırında Up to date yazan Settings.
Updates satırında Up to date yazan Settings.
En yeni sürümü çalıştıran bir ana makinedeki Updates sayfası.
En yeni sürümü çalıştıran bir ana makinedeki Updates sayfası.

Bunun altında her denetim için bir satır içeren ön denetim bulunur: doctor, disk, bun, tree, upstream ve service. Bir liderde her ekip üyesi de denetlenir.

  • Yeşil sorunsuz.
  • Sarı bilinmesi yararlı olan ve asla engellemeyen durumlardır: ekip genelinde sürüm uyumsuzluğu, alışılmadık bir kurulum türü, çıkmış ancak alınmayan bir ana sürüm. Bir çalışma kopyasındaki izlenmeyen geçici dosyalar yeşil kalır.
  • Kırmızı güncellemeyi engeller. Satır; kırmızı bir collie doctor, hazırlanan derleme için 1 GB'den az boş alan, ana makinede bun bulunmaması veya erişilemeyen bir yukarı akış gibi nedeni belirtir. Tek bir komutun sorunu çözdüğü durumlarda kart bu komutu Fix: <command> olarak yazar.

<version> sürümüne güncelle öğesine dokunulduğunda bir kez onay istenir ve onay metni harfiyen geçerlidir: terminal oturumunuz etkin kalır ve telefon görünümü 30 saniyeye kadar kesilir. Yeniden başlatma işlemi çoğullayıcınızı değil bridge bileşenini durdurur; bu nedenle ajanlar çalışmaya devam eder ve telefon yeni sürümle tekrar gelir. Bir ana sürüm geçişi asla rutin bir güncellemeyle gerçekleşmez: ana sürüm sınırını aşmak ayrı bir onay ister, sürümü yeni bir ana sürüm olarak adlandırır ve önce sürüm notlarını okumanızı bildirir.

Çalışırken kart bulunduğu durumu gösterir:

DurumAnlamı
preflightBu makine denetleniyor. Hiçbir şey taşınmadı.
stagingYeni sürüm eskisinin yanında derleniyor veya indiriliyor.
restartingBridge bilerek kapatıldı. Bu bir kesinti değildir.
verifyingYeni sürümün yanıt vermesi bekleniyor.
doneYeni sürüm yanıt verdi.
rolled-backYeni sürüm yanıt vermedi, bu yüzden güncelleyici eskisini geri yükledi.
stuckİki sürüm de yanıt vermedi. Hiçbir şey kendi kendine yeniden başlamayacak.
interruptedÇalıştırma işlemi bitmeden durdu. Hiçbir şey yarı kurulu kalmadı.

İlk dördü ilerleme adımıdır; kart bunu belirtir ve ekranı açık tutmanızı ister. rolled-back hâlâ bulunduğunuz sürümü adlandırır, servis günlüğünün sonunu gösterir ve Yeniden dene seçeneğini sunar. stuck, terminalde çalıştırılacak tek komutu yazdırır. interrupted ayrıca Yeniden dene seçeneğini de sunar.

Sonraki özette hatırlat, kartın uyarısını kapatır. Bu bir susturma değildir: bir sonraki bildirim hem daha yeni bir sürümü hem de yeni bir zaman aralığını bekler.

Hangi sıklıkla bilgilendirileceğiniz. Güncelleme bildirimleri bir özettir; günde en fazla bir kez ve sunucunun yerel saatiyle asla 09:00'dan önce gönderilmez. Yalnızca yama sürümlerinden oluşan bir fark bunun yerine haftalık bir pencereyi bekler, böylece bir yama serisi dört ayrı bildirim yerine tek bir bildirim olarak gelir; bir alt sürüm veya ana sürüm günlük tempoyu korur ve bekleyen yamaları da beraberinde getirir. Bekletilen sürümler birleştirilir, asla atlanmaz. Kart, pencereden bağımsız olarak her zaman geçerli durumu gösterir. Ayarlar → bildirimler (Web Push) altındaki updates bildirim tercihi, tek kapatma anahtarıdır.

Bir crew liderinde düğme Crew ekibini <version> sürümüne güncelle metnini gösterir ve tek bir onay tüm makineler için geçerli olur. Lider, kendi sağlık denetimi altında önce güncellenir. Ardından her eş, kendi ön denetimini, kendi sağlık denetimini ve kendi geri almasını kullanarak sırayla aynı sürüme eşitlenir. Eş başına ayrı bir düğme ve ikinci bir onay istemi yoktur. Ayrıntılar, iki kurtarma yolu ve telefonun düzeltemeyeceği tek durum için bkz. Crew ekibinin geri kalanı güncelleniyor.

Bir liderde üye başına ön denetimi ve crew için tek bir düğmeyi içeren Güncellemeler sayfası.
Bir liderde üye başına ön denetimi ve crew için tek bir düğmeyi içeren Güncellemeler sayfası.

Her ekranın üst kısmındaki bir şerit çalıştırma sürecini aktarır: sunulan sürüm, ardından Starting update…, Updating to <version>, Updated to <version>. Tap to reload. ve eşler takip ettikçe son olarak Updating <n> peers: <names>. Geri alınan bir eş de sayfaya geri dönüş yolu olarak Güncellemeler'e bakın. ile birlikte orada adlandırılır. Şerit bu sırayla görünür:

Yeni bir sürüm kuruluma hazır olduğundaki şerit.
Yeni bir sürüm kuruluma hazır olduğundaki şerit.
Güncelleme kurulumu çalışırken gösterilen şerit.
Güncelleme kurulumu çalışırken gösterilen şerit.
Yeni sürüm yanıt verdikten sonraki şerit.
Yeni sürüm yanıt verdikten sonraki şerit.
Eşler güncellenirken gösterilen şerit.
Eşler güncellenirken gösterilen şerit.

Terminalden

collie update --check            # read-only preflight, --json for a script
collie update --check --local    # the same, this instance only, no crew members
collie update                    # stage, flip, restart, verify
collie update --status           # what the updater did, or is doing, --json for a script
collie update --rollback         # put the previous version back
collie update --major            # cross one major, see below

Herdr tarafından yönetilen bir kurulumda aynı eylemler Herdr eylemleridir:

herdr plugin action invoke update --plugin herdr.collie      # Herdr-managed
bin/collie update                                            # Standalone

collie update --check hiçbir şeyi değiştirmez. collie doctor komutunu çalıştırır, boş alanı, bun sürümünü, çalışma ağacını, yukarı akış sürüm listesini ve servis birimini okur; bir liderde ise kendi SSH bağlantınız üzerinden her crew üyesine aynı soruyu sorar. Kırmızı bir durum olmadığı sürece 0 koduyla çıkar ve --json sürümlü bir rapor yazdırır. Yalnızca bu örneği denetlemek ve crew üyelerini atlamak için --local ekleyin. Telefon, bu yerel denetimi kendi sunucusunda çalıştırır ve crew bağlantısı üzerinden her eşin satırını okur, bu nedenle ön denetimi SSH gerektirmez.

collie update, geçerli ana sürümünüzün en yeni sürümünü getirir ve hazırlar. Komut daha sonra geçişi ayrı bir güncelleyiciye devreder ve çıkar; çünkü yeniden başlatma, güncellemeyi talep eden köprüyü sonlandırır. Bu güncelleyici, current bağlantısını yeni sürüme yönlendirir, yeni ikili dosya üzerinden yeniden başlatır ve henüz kurduğu sürümü içeren bir yanıt için GET /api/health adresini 30 saniyeye kadar sorgular. Yanıt gelmezse veya eski sürümden gelirse, current bağlantısını geri çevirir, bir kez daha yeniden başlatır ve servis günlüğünün sonuyla birlikte rolled-back kaydeder. Bu da açılmazsa, elle çalıştırılacak komutla birlikte stuck kaydeder ve hiçbir şey tekrar yeniden başlamaz. Bir kez geri alır, asla iki kez almaz.

Makinelerinizde 30 saniye yeterli değilse COLLIE_UPDATE_HEALTH_TIMEOUT_MS ayarlayın. Bütçeyi aşan yavaş bir soğuk başlatma, başarısız bir güncelleme olarak algılanır ve geri alınır.

collie update --status, güncelleyicinin tuttuğu kaydı yazdırır ve telefon da aynı kaydı okur. Bir deputy'nin bekleme kapısı, ana bağlantı noktası kapalıyken bunu /standby/update üzerinden sunar.

Yeni bir beacon kanca olayı mevcutsa update, hooks install claude komutunu yeniden çalıştırmanız için bir bildirim yazdırır.

Sürümlerin bulunduğu yer

İkili kurulum ve bağlı bir klon, kurulum kökü altında tek bir düzeni paylaşır (ikili kurulum için ~/.local/share/collie veya $COLLIE_DIR, bir kopyalama için klonun kendisi):

current -> versions/v1.3.0
versions/v1.3.0/
versions/v1.2.0/

Bir kopyalamada her versions/vX.Y.Z, tek .git deposunu paylaşan yayın etiketinin bir git çalışma ağacıdır; bu sayede bir sürüm ikinci bir nesne deposuna değil, yalnızca bir ağaca mal olur. Derleme yeni dizin içinde çalışır ve en son bir tamamlanma işareti yazar; geçiş bu işaret olmadan işlemi reddeder, böylece sonlandırılan bir derleme canlı sürüme dokunulmadan kalır. Canlıya geçiş, current sembolik bağlantısının tek bir yeniden adlandırılmasıdır. Saklama politikası, current ile birlikte en yeni iki önceki sürümü tutar ve yalnızca başarılı bir çalıştırma temizlik yapar; böylece geri alma hedefine ihtiyaç duyabilecek bir çalıştırma onu asla kaldırmaz.

Bir Herdr tarafından yönetilen kopyalaması istisnadır ve yerinde ilerlemeye devam eder (ADR 0006, 2026-09-03 tarihinde değiştirildi). Bağımsız ve sığdır; Herdr'ın sahip olduğu bir dizinde yer alır, bu nedenle yanında bir versions/ düzeni, devredilecek bir şey ve geri dönülecek bir durum yoktur. --rollback orada reddedilir; kurtarma yolu, adlandırılmış bir etiketin yeniden kurulmasıdır (herdr plugin install AltanS/collie --ref vX.Y.Z --yes).

1.8.0 sürümünden 1.7.0 sürümüne geri dönmek, state dizininde iki manuel düzenleme gerektirir. 1.8.0, ilk başlatılışında üç durum dosyasını yeniden adlandırır; bu nedenle ~/.local/state/collie/ artık crew-trust.json, crew-ops.json ve crew-runtime.json dosyalarını barındırır ve 1.7.0 derlemesi yalnızca eski adları okur. 1.7.0 derlemesini başlatmadan önce her üçünü de eski haline getirin:

cd ~/.local/state/collie
mv crew-trust.json pack-trust.json
mv crew-ops.json pack-ops.json
mv crew-runtime.json pack-runtime.json

Ardından pack-trust.json içindeki iki anahtar adını düzenleyin. 1.8.0 sürümü crew bloğunu her iki yazımla da okur ve 1.7.0 sürümünün "pack" ve "packId" yazdığı yere, içinde "crewId" olacak şekilde "crew" olarak geri yazar. 1.7.0 derlemesi yalnızca kendi yazımını okur; bu nedenle 1.8.0 depoyu yazdığında (ki bunu herhangi bir katılma, rotasyon, warrant yenileme veya kaldırma işleminde yapar), bu bloğun adını tekrar "pack" ve id alanını "packId" olarak değiştirin. Üç dosyadaki başka hiçbir şey değişmedi; crew-ops.json ve crew-runtime.json dosyalarında hiçbir düzenleme gerekmez. Dosyaya dokunmak istemiyorsanız güncellemeden önce alınmış bir pack-trust.json kopyasını geri yükleyin veya 1.8.0 sürümünde kalın: güven deposunu okuyamayan bir 1.7.0 derlemesi tek başına başlar ve hiçbir kadroyu zorunlu kılmaz.

Doğrulayın

bin/collie update --status
herdr plugin action invoke version --plugin herdr.collie
bin/collie version

En yeni etiketi bekleyin.

Telefonun kendi paketi ayrı bir konudur. PWA yeni bir derlemeyi kendi kendine denetler, yaklaşık bir dakika içinde yeniden yüklenir ve bu yeniden yüklemeyi bir güncelleme çalıştırması boyunca bekletir. Bir görevin ortasındaysanız "güncellemek için dokunun" başlığını gösterir ve dokunmanızı bekler.

Sürüm değişmediyse

collie update her çalıştırmada doğrudan GitHub'a sorar; bir checkout için git ls-remote adresine, ikili dosya kurulumu için GitHub etiketler API'sine danışır. Yayın listesini önbelleğe almaz. Birkaç saniye önce yayınlanan bir sürümün görünmesi, GitHub'ın yetişmesi için kısa bir süreye ihtiyaç duyması nedeniyle yine de bir dakika sürebilir. Ardından collie doctor komutunu çalıştırın. Bu durumu açıklamıyorsa collie çalışmadığında bölümüne bakın.

Ana sürüm atlayın

update hiçbir zaman otomatik olarak bir ana sürümü atlamaz.

herdr plugin action invoke update-major --plugin herdr.collie     # Herdr-managed
bin/collie update --major                                         # Standalone

Bu, bir ana sürüm ilerleterek onun en yeni kararlı sürümüne geçer. Ön sürümleri hedeflemez (ADR 0020). Ayrıca bkz: 0.x sürümünden 1.0 sürümüne yükseltme.

Bu işlem "Şu anda bir dalda değilsiniz" ile başarısız olursa

0.23.1 öncesi GitHub kurulumlarında dal izleme başvurusu (#63) bulunmaz. Güncelleme işlevini geri yüklemek için yeniden kurun:

# replaces the checkout, rebuilds the UI
herdr plugin install AltanS/collie --yes
# reinstall doesn't restart the service
herdr plugin action invoke restart --plugin herdr.collie
# expect 0.23.1 or newer
herdr plugin action invoke version --plugin herdr.collie

Herdr'ın eklenti yapılandırma dizinindeki (teamülen ~/.config/herdr/plugins/config/herdr.collie) yapılandırmanız korunur.

Crew ekibinin geri kalanı güncelleniyor

collie crew update <member>…      # on the lead
collie crew update --all

Bu, telefonun eşitleyemediği bir eş düğüm için terminal yoludur. Telefondan, tek bir dokunuş ve tek bir onay ile tüm crew'u güncelleyin: lead üzerinde Settings → Updates sayfasını açın ve Crew ekibini <version> sürümüne güncelle seçeneğini belirleyin. Düğmenin üzerindeki ön denetim yalnızca lead'i değil, her üyeyi kapsar. Bir denetim herhangi bir yerde kırmızıysa düğme devre dışı bırakılır, hata veren makineyi ve nedenini belirtir.

Lead, kendi sağlık denetimi altında ilk olarak güncellenir. Ancak lead oturduktan sonra ilk peer başlar. 1.7.0 sürümünden itibaren bu sıra kelimeler için de önemlidir: 1.7.0'dan eski bir lead, bir üyenin durumunu yazdırdığı ilk satırdan okur ve 1.7.0 üyesi 1.6.0 üyesinin pack … yazdırdığı yerde crew … yazdırır; bu nedenle güncellenmemiş bir lead bunu okuyamaz. 1.7.0 sürümündeki bir lead her ikisini de okur. Her peer ardından kendisini eşitler: lead'inin çalıştırdığı sürümü okur, bu etiketi tam olarak GitHub'dan çeker ve kendi ön denetimini, kendi sağlık denetimini ve kendi geri almasını çalıştırır. Peer'lar teker teker ilerler. Updates sayfası her üye için bir satır tutar: waiting, checking, staging, restarting, verifying, updated, rolled back veya unreachable.

1.7.0'dan 1.8.0'a. İkinci bir nedenle yine önce Lead güncellenir: 1.8.0 aktarım yollarını, iki ortam anahtarını, üç state dosyasını ve günlük önekini crew olarak yeniden adlandırır. 1.8.0 sürümündeki bir lead, eski /pack/v1/* yollarına bir sürüm boyunca yanıt verir; bu sayede hâlâ 1.7.0 sürümündeki bir üye, halihazırda sahip olduğu bağlantı üzerinden geçişi izler. Her iki eski yazım da 1.9.0 sürümünde kaldırılır. Adlar ve makinenizde her birinin ne yaptığı 1.7.0 sürümünden güncelleme içindedir. Sürümün yayınladığı collie-release.json varlığı yalnızca banttaki, Updates kartındaki ve günlük bildirimdeki bu uyarının metnini besler; asla bir güncellemeyi engellemez ve yapılan işlemi değiştirmez.

Bir peer'ın izleyip izleyemeyeceğini iki gereksinim belirler:

  • Bir peer github.com adresine giden HTTPS erişimine ihtiyaç duyar. Kodu buradan gelir. Bu erişim olmadan, eş düğümün geride kaldığı bildirilir ve bunun yerine yukarıdaki komut kullanılarak terminalden eşitlenir.
  • Bir -dev+ derlemesi asla izlemez. Geliştirme derlemesindeki bir makine, lead'i ne çalıştırırsa çalıştırsın bu derlemede kalır.

Geri alma işlemi yapan bir peer, bunu Updates sayfasında belirtir ve kendi kendine yeniden denemez. İki yol ona başka bir deneme şansı verir:

Bir eş geri alma işleminden sonra Güncellemeler sayfası, Ekip güncellemesini yeniden dene ile birlikte.
Bir eş geri alma işleminden sonra Güncellemeler sayfası, Ekip güncellemesini yeniden dene ile birlikte.
  • Telefondan. Lider güncel olduğunda ve bir eş geride kaldığında düğmenin üzerinde Ekip güncellemesini yeniden dene yazar. Yalnızca eşleri kapsayan yeni bir çalıştırma başlatır ve her birine bir deneme hakkı daha tanıyan şey bu yeni çalıştırmadır.
  • Terminalden, lider üzerinde. Bunu, telefonun hiçbir şekilde eşitleyemediği bir eş için kullanın. Komut değişmez:
collie crew update <member>…      # on the lead
collie crew update --all

Bunu lead üzerinde çalıştırmak, kendi SSH bağlantınız üzerinden tek bir dizidir. Önce her makinede ön denetim yapar ve SSH üzerinden aldığı yanıtın yanında her eş düğümün kendi raporunu yazdırır; böylece bir uyumsuzluk ortalamaya dahil edilmek yerine açıkça gösterilir. Tek bir onay ister. Ardından, dağıttığı derlemeyi henüz çalıştırmıyorsa lead'in kendisini günceller. Sonrasında her eş düğümü sırayla ele alır: lead'in commit'i eş düğüme bir git paketi olarak gönderilir, yeniden derlenir, yeniden başlatılır ve aynı 30 saniyelik bütçe içinde yeni derlemeye yanıt verene kadar yoklanır.

İlk hata çalıştırmayı durdurur. Ondan sonraki her üyeye dokunulmaz ve "denenmedi" olarak bildirilir; özet ise hatayı temizleyen tek komutu belirtir. Kendi güncellemesini alamayan bir lider hiçbir eşe dokunmaz. Orada durmak güvenlidir çünkü ekip sürüm uyumsuzluğuna (CREW_PROTOCOL.md §7.1) tolerans gösterir; bu nedenle yarı güncellenmiş bir ekip desteklenen bir durumdur, devam etmek ise değildir.

Telefonun çözemeyeceği bir durum. Eşler eşitlendikten sonra lideri elle geri alırsanız, eşler liderlerinin önünde kalır. Hiçbir şey bir eşi alt sürüme geçirmez: Bir eşi geriye götürebilen bir lider, onu herhangi bir yere de götürebilir. Sürüm uyumsuzluğu zararsızdır ve çözümü lider üzerinde collie crew update <member> çalıştırmaktır.

Kod, bir eşe sizin SSH bağlantınız üzerinden ulaşır; hiçbir zaman ekip bağlantısı üzerinden gelmez (ADR 0016, zeyilname 2026-09-04). Bir eş kendini eşitlediğinde, kodu GitHub üzerinden anonim HTTPS ile gelir ve eş kararı kendisi verir. Lider yalnızca çalıştırdığı sürümü ve hangi eşin devam edebileceğini belirtir.

Güncelleyicinin kendisi çökerse

Güncelleyici yok olduğunda yukarıdakilerin hiçbiri işe yaramaz. Bu yol, yalnızca bir terminalin var olduğunu varsayar.

Güncelleyici tek bir kayıt yazar: <state dir>/update.json (varsayılan olarak ~/.local/state/collie/update.json veya $COLLIE_STATE_DIR altında). Önce onu okuyun: durumu, çalıştırmanın geldiği sürümü, hedeflediği sürümü, güncelleyicinin pid değerini ve bir hata durumunda servis günlüğünün son kısmını ve kurtarma komutunu belirtir.

Telefonun başlattığı bir güncelleme terminalinize hiçbir şey yazdırmaz. collie-api-update-<stamp> adlı kendine ait geçici bir systemd birimi altında çalışır ve --collect çıktığı anda bu birimi kaldırır, bu nedenle dökümü yalnızca journal içindedir:

journalctl --user -u 'collie-api-update-*' --since '30 min ago'

Telefon başarı bildirdiğinde ve sonraki adımlardan biri gerçekleşmediğinde bakılacak yer orasıdır; örneğin çalıştırma kaydının yazılamadığına dair bir uyarı, liderin kendini güncellediğini ancak ekibini eşitlemeyeceğini gösterir. Köprünün kendi günlüğü diğer yarıyı taşır: lider kaydı aldığında çalıştırma başına bir [crew] update <run id>: levelling peers to <version> satırı. 1.8.0 sürümünden önce bu önek [pack] idi. Böyle bir satır yoksa sıralar hiçbir zaman başlamamıştır.

bunx aşamasında takılan 1.5.4 öncesi bir güncelleme

1.5.4 sürümünden önce, bir telefondan başlatılan güncellemeler PATH bilginizden yoksun geçici bir systemd kullanıcı biriminde çalışır. Bun, doğrudan repodan yapılan bir kurulumda yalnızca ~/.bun/bin altında bulunduğunda, yerel repo ilerler ancak yeniden derleme bunx: command not found ile başarısız olur. Bunu, Bun dizininin PATH içinde olduğu bir terminalden bir kez collie update çalıştırarak çözün veya dolgusu Bun dizinini kendisi bulan Herdr eylemini çalıştırın. Her iki yöntem de ilerletilmiş repoyu yeniden derler. 1.5.4 sürümünden itibaren güncelleyici Bun dizinini kendi başına bulur.

Yanında bir pid ve bir zaman damgası tutan <state dir>/update.lock bulunur. Her seferinde tek bir çalıştırma. Hâlâ preflight, staging, restarting veya verifying yazan, 10 dakikadır değişmeyen ve pid değeri artık işlem tablosunda yer almayan bir kayıt sona ermiştir: interrupted olarak okunur ve yeni bir çalıştırma kilidi alabilir.

Önceki sürümü elle geri getirmek için current hedefini ona yönlendirin ve yeniden başlatın:

cd ~/.local/share/collie        # or $COLLIE_DIR, or the checkout root
ls versions/
ln -sfn versions/<previous> current
collie restart

Veya önceki sürümün aynı işlemi sizin için yapmasına izin verin; bu, bir stuck kaydının taşıdığı komuttur:

~/.local/share/collie/versions/<previous>/bin/collie update --rollback

Tam yolu kullanın, collie değil: PATH üzerindeki ad current üzerinden çözülür ve sorunlu olabilecek şey current dosyasıdır.

Sağlık kapısının yakalayamadığı durumlar

Kapı tek bir şeyi kanıtlar: servis geri döndü ve /api/health çağrısına yüklenen sürümle yanıt verdi. Bu sınırlı bir taahhüttür, "asla bozulmaz" demek değildir. Kapı başarı bildirirken dört şey bozuk olabilir:

  • Telefonda eski web paketi. Ana makine yeni sürümde ve telefon servis çalışanından hâlâ eski JavaScript kodunu çalıştırıyor. PWA kendi paketini kendi takvimine göre değiştirir; sağlık kapısının bunu görme imkanı yoktur.
  • Yapılandırma veya şema geçişleri. Collie bu sıklıkta hiçbirini yayınlamaz ve güncelleyici hiçbirini çalıştırmaz. Kapı, verilerin doğru biçimlendirildiğini değil, servisin yanıt verip vermediğini denetler.
  • Yalnızca etkileşim anında bozulan bir mux sürücüsü. Bağdaştırıcı ilk gerçek bağlama veya gönderme işleminde başarısız olurken köprü başlar ve sistem durumuna yanıt verir. Sağlık denetimi bir canlılık yoklamasıdır, uygunluk testi değildir.
  • Eski sürümün kodunu çalıştıran güncelleyici. Bağımsız güncelleyici, değiştirilmekte olan sürümden başlatılır. Küçük ve kararlı tutulur, kaydı ise sürümlendirilir; böylece eski bir güncelleyici ile yeni bir köprü birbirini anlamaya devam eder, ancak bu bir garantiden ziyade hafifletici bir önlemdir.

En yeni sürümü bir betikten çözümleme

Git etiketlerini sorgulayın ve semver'e göre sıralayın. Ön sürümleri hariç tutan GET /repos/AltanS/collie/releases/latest seçeneğini kullanmayın.

# newest stable release
git ls-remote --tags --refs https://github.com/AltanS/collie | \
  sed 's#.*refs/tags/##' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -1

Ön sürümler

Kararlı kurulumlar ön sürümleri almaz. Bir ön sürüme geçmeyi tercih etmek, nihai sürüm gelene kadar o ana sürümün ön sürümlerini takip eder (ADR 0020):

# Standalone — the install script's opt-in flag takes the newest prerelease
curl -fsSL https://colliepwa.dev/install.sh | sh -s -- --beta

# Herdr-managed — install the tag; that is the whole opt-in
herdr plugin install AltanS/collie --ref <tag> --yes
# a reinstall does not restart the service
herdr plugin action invoke restart --plugin herdr.collie

En yeni sürümü bir betikten çözümleme kullanarak <tag> sürümünü çözümleyin.

Kararlı sürümlere geri dönmek için:

herdr plugin install AltanS/collie --yes
herdr plugin action invoke restart --plugin herdr.collie

0.x sürümünden 1.0 sürümüne yükseltme

BUN_INSTALL yalnızca .env içinde tanımlanmışsa, bunun yerine kabuk profilinizde veya servis ortamınızda dışa aktarın. Ardından şunu çalıştırın:

# Herdr-managed
herdr plugin action invoke update-major --plugin herdr.collie

# Linked clone
bin/collie update --major

bin/collie version veya herdr plugin action invoke version --plugin herdr.collie ile doğrulayın.

Crew kurulumları için: Önce lideri güncelleyin, ardından collie crew update <member>… çalıştırın (Crew ekibinin geri kalanı güncelleniyor). Not:

  • join, düz http:// liderleri için --insecure gerektirir.
  • 1.0 öncesi davet belirteçleri crew invite ile yeniden oluşturulmalıdır.
  • Daha eski üye kayıtları reconnect gerektirir.
  • Güncellenmemiş eşler crew status içinde warn: olarak görüntülenir (CREW_PROTOCOL §7.1).

1.0 sizin için neleri değiştirir

Herdr eylem kimlikleri ve scripts/collie-ctl.sh rotaları değiştirilmedi (ADR 0006).

CLI fiilleri <checkout>/bin/collie içine derlenir (Komutlar). collie dizinini PATH'e eklemek için bin/collie link kullanın (collie dizinini PATH ortam değişkeninize ekleyin, ADR 0021).

Yeni özellikler:

  • pair / devices: Cihaz başına yazma kimlik bilgileri (Bir cihazı eşleyin).
  • crew … / join / promote: Çoklu ana makine kümeleme (Crew komutları).
  • doctor: Yapılandırma tanılamaları.
  • stt setup: Ses oluşturucu yapılandırması (Ses girişi).
  • hooks install claude / beacon emit: Ajan etkinlik işaretçileri (Aracı sinyalleri).
  • COLLIE_MUX: herdr (varsayılan), tmux veya zellij (tmux ve zellij) seçin.

Sürü gerçekse, yan yana

İkincil örnek yapılandırması Tek bir konakta birden fazla Collie örneği içinde belgelenmiştir.

Eski sürüme dönme

Son 0.x etiketine geçin ve yeniden derleyin:

last0x=$(git ls-remote --tags --refs origin | sed 's#.*refs/tags/##' | \
  grep -E '^v0\.[0-9]+\.[0-9]+$' | sort -V | tail -1)
git fetch --depth 1 origin tag "$last0x"
git checkout --detach --force "$last0x"
rm -f bin/collie    # 1.0's binary otherwise survives the rollback

bash scripts/collie-ctl.sh build ile yeniden derleyin ve Herdr'ın restart eylemini çağırın. Durum dosyaları (crew-trust.json, crew-runtime.json, paired-devices.json, pairing-pending.json) kalabilir. Eski sürüme dönme işlemi cihaz eşleme zorunluluğunu kaldırır; yazma koruması gerekiyorsa COLLIE_DEVICE_HEADER yapılandırın.

Çalıştığını doğrulayın

version çıktısının 1.0.0 veya üzerini bildirdiğini kontrol edin. Yükseltilen bir kurulum hiçbir cihazı otomatik olarak eşlemez: bir telefona yazma yetki belgesi vermek için pair çalıştırın; telefon kaybolursa devices revoke çalıştırın (Bir cihazı eşleyin).

Durdurun veya kaldırın

Hizmeti duraklatın:

herdr plugin action invoke stop --plugin herdr.collie     # Herdr-managed
bin/collie stop                                           # standalone

Hizmet tanımını ve bağlantı noktası eşlemelerini kaldırın (.env ve çalışma kopyaları korunur):

herdr plugin action invoke uninstall --plugin herdr.collie   # Herdr-managed
bin/collie uninstall                                         # standalone

Kalan dosyaları silmek için: herdr plugin uninstall herdr.collie çalıştırın (Herdr tarafından yönetilen) ya da bin/collie unlink çalıştırıp ~/.local/share/collie / $COLLIE_DIR silin (bağımsız).

collie çalışmadığında

İkili dosya kurulumları için (~/.local/share/collie veya $COLLIE_DIR), doğrudan daha eski bir ikili dosyayı yürütün:

ls ~/.local/share/collie/versions/
~/.local/share/collie/versions/<previous>/bin/collie update --rollback

Doğrudan belirli bir sürümü yüklemek için:

curl -fsSL https://colliepwa.dev/install.sh | COLLIE_TAG=v1.0.0 sh

Çalışma kopyaları veya Herdr kurulumları için git checkout <tag> veya herdr plugin install AltanS/collie --ref vX.Y.Z --yes çalıştırın.

Bir çatal çalıştırıyorsunuz

collie update, origin değerini COLLIE_UPDATE_REPO (varsayılan AltanS/collie) ile karşılaştırır ve farklılarsa işlemi iptal eder. Çatalınız kendi etiketlerini yayınlıyorsa COLLIE_UPDATE_REPO=you/collie ayarlayın.

Yukarı akış güncellemelerini çatalınıza el ile birleştirmek için:

git remote add upstream https://github.com/AltanS/collie.git
git fetch upstream --tags
git merge v1.0.0                                            # the tag you decided to take
# resolve the conflicts, commit the merge, then rebuild and restart:
bash scripts/collie-ctl.sh build
# Herdr-managed: invoke the `restart` action instead
bin/collie restart

Bir çatal üzerinde update --major kullanmayın; v1.* etiketini el ile birleştirin. Etkin COLLIE_UPDATE_REPO değerini kontrol etmek için collie doctor çalıştırın.

Yeniden başlatmalardan sonra çalışmayı sürdürme

Linux üzerinde, gözetimsiz kullanıcı hizmetleri için lingering özelliğini etkinleştirin:

loginctl enable-linger $USER

Durumu systemctl --user status collie ile doğrulayın.

macOS üzerinde start, ~/Library/LaunchAgents/herdr.collie.plist yapılandırmasını otomatik olarak yönetir. Kullanıcı oturum açtığında çalışır. Durumu launchctl print gui/$(id -u)/herdr.collie ile kontrol edin.

Bu sayfayı GitHub üzerinde düzenleyin