İçeriğe atla
ColliePWA

22/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 ekranı bir panel kaplar. Aşağıdaki Bir güncelleme çalışırken telefonun gösterdiği bilgiler bölümüne bakın. Güncellemeler sayfasındaki kart aynı durumları daha ayrıntılı olarak 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 özet niteliğindedir, günde en fazla bir kez ve ana makinenin 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 dizisi dört ayrı bildirim yerine tek bir bildirim olarak ulaşır; bir alt sürüm veya ana sürüm ise günlük aralığı korur ve bekleyen yamaları da beraberinde getirir. Bekletilen sürümler birleştirilir, asla atlanmaz. Bir yama günlük aralık da talep edebilir: bugün almanız gereken bir düzeltme hazırlandığında acil olarak işaretlenir ve güncelleme kartında nedenini açıklayan tek bir cümleyle birlikte bir Acil etiketi gösterilir. Yayınlandığında veya bundan sonraki ilk 09:00'da bilgilendirilirsiniz. Tek bir acil sürüm, bekleyen dizinin tamamını günlük aralığa taşır ve sürüm yine de sıradan bir yama olarak kalır. Bu özellikten önceki bir kurulum, bir kez güncellenene kadar acil bir yama için haftalık pencereyi korur. 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ışmakta olandan ziyade sabit durumları taşır: sunulan sürüm, güncellenemeyen bir eş ve elinizdeki uygulama bridge'in gerisinde kaldığında New version — tap to update. Çalışan bir güncelleme şeride değil, açılır panele aittir.

Yeni bir sürüm kuruluma hazır olduğundaki şerit.
Yeni bir sürüm kuruluma hazır olduğundaki şerit.

Bir güncelleme çalışırken telefonun gösterdiği bilgiler

Onaya dokunan cihazda ekranı bir panel kaplar ve diğer tüm cihazlar bir rozet alır.

Panelde makine başına bir satır bulunur, önce lead gelir; her birinde sürüm ve bulunduğu durum yer alır. Bunların altında, bir makineyle değil elinizdeki uygulamayla ilgili olan bu cihazın kendi satırı bulunur: bridge yeni sürümü sunmaya başladığında telefon bu uygulamayı arka planda getirir ve satır geldikçe dosyaları sayar. Panel ayrıca küçük puntolarla, güncellemenin makinelerde çalıştığını ve uygulamayı kapatmanın işlemi durdurmadığını bir kez belirtir.

Çalıştırmayı başlatan cihaz, panelin arkasındaki uygulamayı kullanamaz. Başka hiçbir şey engellenmez: ikinci bir telefon veya tablet, açmak için dokunabileceği tek bir satır gösterir ve tekrar kapanır.

Tüm makinelerin işi bittiğinde ve telefon yeni uygulamayı çalıştırdığında, panel kendiliğinden kapanır ve kısa bir mesaj sürümün adını belirtir. Bir crew üzerinde Crew updated to <version> yazar; tek bir makinede ise bunun yerine o makinenin adı yazar.

Yalnızca üyeleri güncelleyen bir çalıştırma (örneğin Ekip güncellemesini yeniden dene), ekranı aynı şekilde kaplar. Lider bu çalıştırmanın bir parçası olmadığı ve yeniden başlatılmadığı için liderin satırında already up to date yazar. Bitişte Members updated to <version> yazar ve güncellenemeyen bir üye, çalıştırmayı başlatan telefonda sayfayı nedeni ile birlikte açık bırakır.

Üç durum takılabilir ve her birinin bir çıkış yolu vardır. Hiçbiri güncellemeyi iptal etmez ve hiçbiri uygulamayı yeniden yüklemez.

Gördüğünüz şeyAnlamıYapılması gerekenler
bir makinede last seen <time> agoBu makine lead'e yanıt vermeyi durdurdu.Nedeni görmek için Güncellemeleri Gör veya olduğu gibi bırakın.
Hâlâ indiriliyor. Mevcut uygulamanızı kullanmaya devam edin…Telefonun kendi indirmesinde iki dakikadır hiçbir ilerleme olmadı.Uygulamayı kullanmaya devam edin. İndirme devam ediyor.
Hâlâ çalışıyor. Henüz bir sorun yok…Çalıştırma üç dakikadır tek bir durumda takılı kaldı.Beklemeye devam edin. Çalıştırma devam ediyor.
Not. "Hâlâ indiriliyor, uygulamayı kullanmaya devam edin" uyarısı telefonunuzdaki uygulamayla ilgilidir, hiçbir zaman makineyle ilgili değildir. Makineler işlemi tamamladı; yalnızca yeni uygulama henüz ulaşmadı. Elinizdeki uygulama çalışmaya devam eder ve indirme tamamlandığı anda kendiliğinden geçiş yapar.

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

collie update --help kullanım bilgisini yazdırır ve hiçbir şey başlatmaz. Her collie komutu, herhangi bir iş yapmadan önce -h ve --help seçeneklerine aynı şekilde yanıt verir.

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.

Her başarılı güncelleme, geri alma veya geçiş sonrasında yeni derleme collie skill sync çalıştırır. walky talky skill'ini bu makinedeki her agent harness'ına kurar ve geride kalan bir kopyayı günceller, böylece agent'larınız şu anda çalıştırdığınız derlemeyi bilir. Değiştirdiği dosya başına bir satır yazdırır ve güncellemeyi asla başarısızlığa uğratmaz: çalışamazsa, update bir not yazdırır ve siz collie skill sync komutunu el ile çalıştırırsınız. collie skill uninstall çalıştırdığınız bir harness'ı atlar. Yönerge dosyalarınızı oldukları gibi tutmak için COLLIE_SKILL_SYNC=off ayarlayın; bu durumda güncelleme yalnızca skill geride kaldığında bir not yazdırır (Yeteneği yükleyin).

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.

1.9.0 sürümüne diğer yönden geçmek de aynı iki düzenlemenin elle yapılmasını gerektirir. 1.8.x ilk başlangıcında bu üç dosyayı sizin yerinize yeniden adlandırdı; 1.9.0 ise hiçbir şeyi yeniden adlandırmaz. Dolayısıyla 1.8.x sürümünü hiç görmemiş bir durum dizini hâlâ 1.7.0 adlarını barındırır ve bir 1.9.0 derlemesi yalnızca crew adlarını okur. Başlangıçta bunu bildirir, her iki düzenlemeyi de belirtir ve dizini benimsemek yerine tek başına kalır. Başlatmadan önce bunları yapın:

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

Ardından crew-trust.json içindeki iki anahtar adını yeniden adlandırın: "pack" bloğu "crew" haline gelir ve içindeki her "packId", "crewId" olur. Bu üç dosyadaki başka hiçbir şey değişmez. Eski ad altında bırakılan bir dosya veri kaybına yol açmaz, yalnızca crew kaybına neden olur: bu collie, yeniden adlandırma yapılana kadar tek başına çalışır.

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.

Windows'ta

Windows'ta kaynak kontrolü kendini asla güncellemez; zip kurulumu günceller. collie update ve telefonun Güncelle düğmesi bunu kaynak kontrolünde tek bir cümleyle belirtir ve hiçbir şeyi değiştirmez. zip kurulumuna geçmek tek seferlik manuel bir adımdır:

collie uninstall
powershell -ExecutionPolicy Bypass -File .\install.ps1

Bundan sonra collie update uçbirimden ve telefondan çalışır. Bu zincir, sürüm dosyalarının yerel bir kopyasına karşı bir Windows 11 VM üzerinde prova edildi, ancak taşıma işleminin kendisi edilmedi. v1.15.0 dahil olmak üzere bu sürüme kadarki sürümler de çalışan bir collie.exe dosyasını değiştiremiyordu. Bkz. Windows üzerinde Collie.

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.

GitHub sürüm denetimini hız sınırına tabi tutarsa

İkili yüklemede collie update, sürümleri GitHub'ın API'si aracılığıyla listeler; telefonun güncelleme başlığı ve install.sh de aynısını yapar. GitHub, ağ adresi başına sayılmak üzere anonim bir çağırıcıya saatte 60 API çağrısına izin verir, bu nedenle tek bir yönlendiricinin arkasındaki her makine bu bütçeyi paylaşır. Tükendiğinde denetim başarısız sayılır ve hiçbir şeyi değiştirmez:

error: GitHub rate-limited the release check (HTTP 403). Wait an hour, or set GH_TOKEN
       to a GitHub token with no scopes, so the limit is yours (docs/upgrading.md).
       Nothing was changed.

Bir belirteç sınırı size özel kılar. Collie bunu ortamdan okur ve asla bir belirteç istemez:

AdKim belirler
COLLIE_GITHUB_TOKENhizmet için siz: örneğin .env dosyası veya config.toml içindeki [update] altındaki github_token
GH_TOKENgh CLI aracının kendi adı
GITHUB_TOKENGitHub Actions

İlk ayarlanan geçerli olur. Etiket listesi herkese açıktır, bu nedenle belirtecin hiçbir izin yok ihtiyacı vardır: depo erişimi Public repositories (read-only) olarak ayarlanmış ve hiçbir izin seçilmemiş ayrıntılı bir kişisel erişim belirteci veya hiçbir kapsamı işaretlenmemiş klasik bir belirteç. Herhangi bir şey yazabilen bir belirteç kullanmayın.

Uçbirimdeki tek bir çalıştırma için gh CLI kimlik bilgisini ödünç alın. Değer hiçbir zaman komut satırına veya kabuk geçmişine girmez:

GH_TOKEN=$(gh auth token) collie update

Hizmet için bunu Collie'nin 600 modunda tuttuğu örnek .env içine veya [update] altındaki config.toml içine koyun ve yeniden başlatın: köprü belirteci başladığında okur, bu nedenle telefonun başlığı yeni veya değiştirilmiş bir belirteci yalnızca collie restart sonrasında kullanır. collie config bunu set veya unset olarak gösterir ve değeri asla yazdırmaz. Belirteç yalnızca api.github.com adresine gider: sürüm indirmesi bu tür bir sınırı olmayan github.com kaynağından gelir ve belirteci asla taşımaz. Belirteçten bahseden bir ileti değerini değil, geldiği değişkenin adını belirtir. GitHub'ın reddettiği bir belirteç, denetimde HTTP 401 ve bu adla başarısız olur, böylece yanlış bir belirteç bir istek sınırı ile karıştırılmaz. Köprü günlüğünde bunu bir kez belirtir ve ardından gördüğü son sürümü korur; bu nedenle süresi dolmuş bir belirteçten sonra güncellenmeyi durduran bir başlık bu günlük satırıdır; her sorduğunuzda collie update --check bunu adlandırır.

collie update --check aynı üç durumu upstream altında bildirir. Bir checkout ise etiketleri API sınırının saymadığı git ls-remote ile listeler. Bir crew içinde her makine kendi belirtecini okur: bir üye kendi .env dizininden kendi collie update komutunu çalıştırarak güncellenir.

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 Ayarlar → Sistem → Güncellemeler 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.

Bir üye kendisini en fazla saatte bir kez günceller. Son bir saat içinde, örneğin elle güncellenmiş bir üye, satırının altında rate-limited, retries in about N min ile bekler ve bu süre geçtikten sonra çalıştırma devam eder. Liderin kendi güncellemesi geri alınırsa üyelere dokunulmaz ve satırlarında bu durum belirtilir. Yeni bir güncelleme, en fazla 2 saat olmak üzere ekip çalıştırması bitene kadar bekler.

1.7.0'dan 1.8.0'a. İkinci bir nedenden ötürü yine önce lead güncellenir: 1.8.0 sürümü aktarım yollarını, iki ortam anahtarını, üç durum dosyasını ve journal önekini crew olarak yeniden adlandırır. Bir 1.8.0 lead, eski /pack/v1/* yollarına bir sürüm boyunca yanıt verir; böylece henüz 1.7.0 sürümünde olan bir üye, mevcut bağlantısı üzerinden dağıtımı izler. Her iki eski yazım da 1.9.0 sürümünde kaldırılır. Adlar ve her birinin makinenizde ne yaptığı 1.7.0 veya 1.8.x sürümünden 1.9.0 sürümüne güncelleme içinde yer alır. Lead'i 1.9.0 sürümüne geçirmeden önce tüm üyeleri 1.8.x sürümüne getirin: 1.9.0 eski yollara yanıt vermez ve henüz 1.7.0 sürümünde olan bir üye lead'in preflight kontrolünde kırmızı görünerek her iki sürümü ve o makinede çalıştırılacak komutu bildirir. Sürümün yayımladığı collie-release.json varlığı banttaki, Güncellemeler kartındaki ve günlük bildirimdeki uyarının metnini besler; bir güncellemenin ne yaptığını asla değiştirmez. Ayrıca kontrole yeni bir sürümün çıktığını bildirir: varlığı henüz 404 yanıtı veren bir etiket sunulmaz ve bir sonraki kontrol tekrar sorgular.

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 makineyi ön denetimden geçirir ve SSH üzerinden aldığı yanıtın yanına her eşin kendi raporunu yazdırır; böylece bir uyuşmazlık ortalamaya vurulmak yerine açıkça gösterilir. Tek bir onay ister. Ardından lead dağıttığı derlemeyi henüz çalıştırmıyorsa önce lead'in kendisini günceller. Sonra her eşi sırayla ele alır: lead'in commiti eşe bir git bundle olarak iletilir, yeniden derlenir, yeniden başlatılır ve aynı 30 saniyelik süre sınırı içinde yeni derlemeye yanıt verene kadar yoklanır. Bağımsız kurulumdan veya bir paketten gelen, git checkout içermeyen bir lead iletecek bir commite sahip değildir; bu nedenle bunun yerine kendi çalıştırdığı sürümü aynı ssh üzerinden ve o etikete sabitleyerek her eşe kurar; git checkout üzerinden çalışan bir eş ise satırında collie update --to-tag v<version> belirtilerek atlanı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 lead'i git ile veya dosyaları kopyalayarak el yordamıyla geri alırsanız, eşler lead'lerinin ilerisinde kalır. Collie geri almayı görmediği için hiçbir üye sürüm düşürmez. Telefonun Geri al özelliğiyle veya collie update --rollback ile yapılan bir geri alma ve Stable sürümüne geri dönme işlemi üyelerin sürümünü düşürür. Yayım hatları altındaki "Ekip lead'i izler" bölümüne bakın. Bir üyeyi daha düşük bir sürüme geçiren yalnızca bu iki çalıştırmadır; çünkü bir eşi istediği zaman geriye çekebilen bir lead, onu herhangi bir sürüme de çekebilir. Elle geri almadan kaynaklanan uyumsuzluk zararsızdır ve çözümü lead ü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. systemd kullanıcı yöneticisi bulunan Linux üzerinde, collie-api-update-<stamp> adında kendine ait geçici bir birim altında çalışır ve --collect çıktığı anda o birimi kaldırır, bu nedenle dökümü yalnızca journal içinde yer alır:

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

macOS dahil diğer her yerde, güncelleyicinin kendi çıktısı durum dizinindeki bir dosyaya gider:

cat ~/.local/state/collie/update-runner.log

Telefonun başlattığı her güncelleme bu dosyayı boşaltır ve bir önceki çalıştırmayı update-runner.log.1 olarak saklar. systemd katmanında dosya yalnızca systemd-run tarafından yazdırılan tek satırı içerir; geri kalanı ise yukarıdaki journal'dadır.

Bir crew güncellemesinden sonra bir crew üyesi eski sürümde kalabilir. Bu durumda checkout yeni etiketi gösterir, ancak /standby/health veya alt bilgi kısmı halen eski derlemeyi gösterir. systemctl --user list-units 'collie-api-update-*' ile çalışan bir güncelleyici olmadığını kontrol edin. Çalışan yoksa, ilgili makinede collie update komutunu çalıştırın. Bu komut, derlemesi tamamlanmamış bir checkout'u yeniden derler.

Geçişten önce sonlanan bir çalıştırma (örneğin bu makinede başlamayan yeni bir sürüm), diskte hiçbir şeyi değiştirmez. Güncellemeyi başlatan telefon, güncellemenin ilgili makinede başarısız olduğunu bildirip nedenini gösterir; aynı neden update.json dosyasının reason alanında da yer alır.

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

Yayım hatları

Her makine iki yayım hattından birindedir. Varsayılan hat Stable hattıdır.

  • Stable yalnızca nihai sürümleri alır, örneğin 1.23.0.
  • Edge ayrıca Edge derlemelerini de alır, örneğin 1.23.0-edge.2. Edge derlemesi, nihai sürümden birkaç gün önce aynı ağaçtan ayrılan bir GitHub ön sürümüdür. Herkese ulaşmadan önce bir regresyonun bulunması için önce gönüllülere ulaşır.

Hattı telefondan ayarlayın: Ayarlar → Güncellemeler → Yayım hattı. Geçiş işlemi hiçbir şey yüklemez. Hattı kaydeder ve bir bilgi fişi gösterir. Ardından Güncellemeler kartı, normal güncelleme ekranı aracılığıyla yeni hattın sunduğu derlemeyi sunar.

  • Edge hattında sunulan derleme, çalıştırdığınız derlemenin üzerindeki en yeni derlemedir; aynı ana sürüm içindeki Edge derlemeleri ve nihai sürümler birliktedir. Nihai sürüm, her iki hatta da kendi Edge derlemelerinin yerini alır.
  • Bu makinenin geri aldığı bir derleme, her iki hatta da bir daha asla sunulmaz.
  • Edge hattında, yeni bir derlemeyle ilgili anlık bildirim sonraki özette değil, bir sonraki kontrolde gönderilir. Yine de yerel saatle 09:00'a kadar bekler. Stable özet pencerelerini korur.

Edge üzerinde beklenen tempo. Edge hattında günde en fazla bir derleme bekleyin; her biri görebileceğiniz bir değişiklik içerir. Bridge her altı saatte bir yeni derlemeleri denetler. Derleme başına bir anlık bildirim alırsınız ve bu bildirim ana makinenin yerel saatiyle 09:00'dan önce gelmez. Tek bir kontrol birden fazla yeni derleme bulduğunda, bunlar tek bir bildirimde birleştirilir. Güncelleme şeridi her derleme için bir kez sorar ve bir derlemeyi atlayabilirsiniz: bir sonraki güncelleme en yenisini alır. Şeridi kapatmak yalnızca o sürüm için geçerlidir, bu nedenle bir sonraki derleme tekrar sorar.

Stable hattına geri dön. Edge derlemesi çalıştıran bir makinede Stable hattına geçin; sayfa üç durumdan birini gösterir:

  1. Derlemenize eşit veya daha yüksek bir nihai sürüm yayımlandı. Güncellemeler kartı bunu normal bir güncelleme olarak sunar.
  2. Edge derlemeniz tüm nihai sürümlerin ilerisindedir. Sayfa iki seçenek sunar: - Şimdi geri dön, bir onay adımının ardından derlemenizin altındaki en yeni nihai sürümü yükler. Varsa bu makinenin sakladığı Stable derlemesini kullanır, yoksa indirir. Derlemenizdeki bir durum dosyası bu sürüm tarafından okunamıyorsa, sayfa düğmenin önünde dosyanın adını belirtir. - Stable için bekle derlemenizi korur. Artık Edge derlemesi sunulmaz ve bir sonraki nihai sürüm çıktığı gün sunulur.
  3. Zaten nihai bir sürüm çalıştırıyorsunuz. Yapılacak bir işlem yok.

Saklanan derlemeler. Bir makine Edge hattındayken çalışan derlemeyi, önceki derlemeyi ve son Stable derlemesini saklar. Son Stable derlemesi, makine tekrar Stable hattına dönene kadar temizlenmez; bu nedenle "Şimdi geri dön" bir indirme değil, bir geçiştir.

Geri al. Bir Edge derlemesinden geri alma işlemi makineyi Stable hattına geçirir ve bu derlemeyi geri alınmış olarak işaretler. Bu durum telefondaki Geri al ve collie update --rollback için geçerlidir. Kendi sağlık denetiminde başarısız olan bir Edge derlemesi güncelleyici tarafından geri alınır ve aynı şekilde işaretlenir, böylece bir daha sunulmaz. Hat Edge olarak kalır ve bir sonraki Edge derlemesi her zamanki gibi sunulur.

Ekip lead'i izler. Lead'in hattı ekibin hattıdır. Bir üye, lead Edge hattındayken onu bir Edge derlemesine kadar izler ve lead'in hattını kendi hattı olarak benimser. Bir üye yalnızca lead geri aldığında veya Stable hattına döndüğünde sürüm düşürür. Bir üyenin daha düşük bir sürüm yüklediği yalnızca bu iki durum vardır. Ekip sayfası üyelerin izlediği hattı gösterir.

Uçbirimden. Hat telefondan ayarlanır. Her biri tek çalıştırma için geçerli iki bayrak bulunur:

collie update --line edge                     # resolve this one run on Edge; the saved line stays
collie update --to-tag v1.22.6 --downgrade    # go down to a lower final release

--to-tag, --downgrade olmadan asla daha düşük bir etiketi almaz. Daha yüksek bir Edge etiketini yalnızca Edge üzerindeki bir makinede alır. Herdr tarafından yönetilen bir kurulumda, her iki hat ve geri dönüş yolu aynı yerinde güncellemeden geçer: güncelleyici etiketi çeker ve Edge son ekini sürüm dosyalarına kendisi yazar.

Ön sürümler

Kararlı kurulumlar ön sürümleri almaz. Edge hattındaki Edge derlemeleri bu durumun istisnasıdır (bkz. Yayım hatları). Bir ön sürüme dahil olmak, 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

1.24.0 sürümüne yükseltme

Sürüm 1.24.0; kullanım noktaları, bir Stop düğmesi ve geniş ekran düzeni ekler. 1.23.4 sürümünden geliyorsanız, yükseltme gününde hiçbir işlem yapılması gerekmez. Fark edecekleriniz:

  • Collie, statusLine ayarınıza dokunmaz. Bunu sarmalamak collie hooks install claude --statusline ile isteğe bağlıdır. Sarmalamayı bir Edge derlemesinden aldıysanız ve kaldırmak istiyorsanız, collie hooks uninstall claude ve ardından collie hooks install claude komutunu çalıştırın (Collie kancaları Claude'un kendi ayarlarına yazar).
  • Bağlam noktası yeni bir kancaya ihtiyaç duymaz. 1.23.4 sürümünün yüklediği kancalar zaten SessionStart içerir ve aynı komutu çalıştırırlar. Yeni Collie, oturum dosyasını bunlarla okur. collie hooks install claude komutunu hiç çalıştırmadıysanız, bir kez çalıştırın. Zaten çalışmakta olan bir Claude oturumu; pencere boyutu oturum başlangıcından geldiği için yeniden başlayana, devam edene, temizlenene veya sıkıştırılana kadar nokta göstermez.
  • 5 saatlik ve 7 günlük noktalar kendi oturum açma bilgilerinizi okur. Claude için Collie, bu makinedeki oturum açma dosyasını okur ve api.anthropic.com sorgusu yapar. Codex için Codex'in oturum dosyalarını okur ve kimseye sormaz. Her ikisi de varsayılan olarak açıktır. Bunları kapatmak için .env dosyanızda COLLIE_ACCOUNT_WINDOWS=0 veya [bridge] altında account_windows = false ayarlayın. OpenCode Go ve Grok, siz onları adlandırana kadar kapalı kalır (Kullanım pencereleri).
  • Bir Stop düğmesi, bir Clear düğmesi ve Steer. Stop iki dokunuş gerektirir ve aracının kendi durdurma tuşuna basar (Bir sırayı durdurun). Clear giriş kutusunu boşaltır ve Restore iki dakika boyunca metni tekrar yazar (Kutuyu temizleyin). pi, Codex ve OMP üzerinde çalışan bir sırayı yönlendirmek için Send düğmesini basılı tutun (Yönlendir veya kuyruğa al).
  • pane-active değerini ayarlayan bir tema 3. sürümdür. 1.24.0 sürümünden eski bir Collie, sürümü belirten bir mesajla o dosyayı reddeder. Diğer temalar kendi sürümlerini korur (Sürümler).
  • Geniş ekran bir kenar çubuğu gösterir. 600 piksel genişlikten ve 480 piksel yükseklikten itibaren, bölme ekranı yan yana birkaç bölme gösterir. Telefon düzenini tek bir cihazda tutmak için Settings içinde Geniş ekran düzeni ayarını Off yapın.

1.19.0 sürümüne yükseltme

1.19.0 sürümü, başlatma işlemlerini tek bir sayfaya taşır ve her telefonun kendi Keys ve başlatıcılarını şekillendirmesine olanak tanır. Yükseltme gününde hiçbir şey yapılması gerekmez. Fark edeceğiniz değişiklikler:

  • New sayfası artık bağımsız bir sayfadır. Gösterge panelindeki + Yeni, makineyi, bir Agent veya Command seçimini, klasörü ve bir Yeni worktree anahtarını içeren /new sayfasını açar. Yeni alan sayfası, alan etiketi ve mevcut worktree listesi kaldırılmıştır. Makinede bulunan mevcut bir worktree'yi herdr worktree open ile açın (Telefondan bir ajan veya kabuk başlatın).
  • Ajanları ada göre başlatmak için bir crew üyesinin güncellenmesi gerekir. Sayfa, daha eski bir Collie çalıştıran bir member'ı seçenekleri devre dışı bırakılmış olarak listeler. Önce lead'i güncelleyin, ardından member'lar onu takip eder (Bir makinede bir şey başlatma).
  • Telefonlar başlatıcı ekleyebilir. Varsayılan [phone] adds = true ile, eşleştirilmiş bir telefon bir makineye launchers-added.json içinde tutulan en fazla 20 satır ekleyebilir. Bunu kapatmak için launchers.toml içinde adds = false değerini ayarlayın (Bir telefondan eklenen başlatıcılar).
  • Keys takımı bir panodur. Sahip olduğunuz tuş takımı olarak başlar ve her tarayıcı kendi düzenini korur (Kendi tuş takımınız). keys.toml içindeki önayarlar değişmez.
  • Yalın bir klasör adı, ev dizini altındaki bir klasördür. Folder alanındaki projects artık ~/projects anlamına gelir ve orada bulunmayan bir klasör bir bildirimle reddedilir.

1.18.0 sürümüne yükseltme

Sürüm 1.18.0, yazma işlemlerinin yanı sıra okuma işlemleri için de eşleştirmeyi zorunlu kılar (ADR 0086). Güncelleme günü değişenler:

  • Eşleştirilmiş telefonlar çalışmaya devam eder. Saklanan belirteçleri yeni kuralı zaten karşılar. Yapılacak bir işlem yok.
  • Eşleştirilmemiş tarayıcılar eşleştirme ekranını görür. Daha önce okuma yapabilen ancak hiç eşleştirilmemiş bir masaüstü tarayıcısı artık 403 device not paired alır. Ana makinede collie pair çalıştırın, ardından bu tarayıcıda Ayarlar bölümüne kodu girin (Bir cihazı eşleyin).
  • Yüklü bir uygulama, bir yükleme boyunca daha eski ekranları tutabilir. Yüklü bir uygulama, bir kez daha yüklenene kadar önceki sürümün ekranlarını göstermeye devam edebilir. 1.18 veya sonraki bir sürüme güncelledikten sonra "Sign in" görünüyorsa uygulamayı yeniden yükleyin ya da kapatıp tekrar açın. Ardından yukarıdaki gibi eşleştirin.
  • Betikler bir kez eşleşmelidir. API'yi belirteç olmadan okuyan bir betik artık 403 alır. collie pair --expires 30d çalıştırın, ardından {"code": "...", "label": "script"} ve aynı kaynaktan bir Origin başlığı taşıyan /api/pair adresine bir POST isteği ile kodu talep edin. Belirteç bu yanıtta tek bir kez döner. Sonraki her çağrıda Authorization: Bearer <token> olarak gönderin. Parola gibi saklayın.
  • Ana makine CLI'ları için hiçbir şey gerekmez. collie doctor, collie history ve crew güncelleme taraması, bridge bileşeninin durum dizinine yazdığı yerel bir kimlik bilgisiyle kendi bridge bileşenlerini okur.
  • 1.18.0 altına geri dönmek belirteç süre sonlarını yok sayar. Eski bir bridge expiresAt alanını tanımaz, bu nedenle süresi dolmuş bir cihaz bridge güncellenene kadar tekrar çalışır. Önemliyse collie devices revoke <label> ile iptal edin (Bir cihaza son kullanma süresi verme).
  • Eski denetim dosyaları yazılan karakterleri tutabilir. 1.18.0 öncesinde yazılan dosyalar telefonda yazılan karakterleri listeleyebilir. Güncelleme öncesinden kalan audit.log dosyalarını döndürün veya silin.
  • Maskeleme engel olabilir. Dosyalar içindeki dosya gövdeleri ve Değişiklikler içindeki farklar artık panel metniyle aynı gizli maskeden geçer. İhtiyacınız olan bir şeyi gizliyorsa .env dosyanızda COLLIE_REDACT=off ayarlayın ve yeniden başlatın (yapılandırın).
  • Bir 1.18.0 lead'i üyelerinin metnini de maskeler. Halen 1.17.x sürümünde olan bir üye maskeleme yapmaz, bu nedenle telefonunuza ulaşmadan önce lead o üyenin metnini maskeler. Bir üyenin metnini maskesiz görmek için lead üzerinde olduğu gibi üye üzerinde de COLLIE_REDACT=off ayarlayın.

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

Programı ve kendi dosyalarınızı da silmek için, paketler dahil olmak üzere yükleme türüne göre bunları açıklayan Kurulum → Kaldırma altındaki üç adımı izleyin.

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

The rest of the documentation