· kaynak Hacker News – Front Page (native)
Lazydraw, dışa aktarma ve pano desteğine sahip ASCII diyagramlar için bir terminal editörü
Hacker News'te öne çıkan açık kaynak ASCII diyagram terminal editörü lazydraw, ASCIIFlow'un çizim motorunu terminale taşıyor ve sonuçları metin dosyası olarak veya panoya aktarıyor.
lazydraw adlı açık kaynak bir araç, 24 Eylül'de Hacker News'in ana sayfasına çıkarak geliştiricilere terminalden çıkmadan ASCII diyagram çizme imkânı sundu. GitHub'daki projenin README'sine göre editör; kutular, oklar, çizgiler, metin ve silgi araçlarını içeriyor ve sonucu bir metin dosyasına ya da doğrudan panoya aktarabiliyor.
ASCIIFlow'un motoru, terminale uyarlandı
README, projenin kökeni konusunda alışılmadık derecede açık. Lewis Hemens'in ASCIIFlow'unu, lazydraw'un terminelde taklit etmeyi hedeflediği özgün web tabanlı editör olarak anıyor ve lazydraw'un çekirdek çizim kodu — glyph bağlantıları, snapping, çizgi yönlendirme ile kutu, çizgi, seçim ve taşıma araçları — ASCIIFlow'un istemci kodundan portlandı. Ben Vinegar'ın termDRAW'ı, bu sınıftan bir editörün terminelde çalışabileceğini göstermesi ve render yaklaşımını şekillendirmesiyle anılıyor; ön uç ise SST'nin terminal UI motoru OpenTUI üzerine inşa edilmiş.
Editör ne yapıyor
Araç çubuğu altı araç sunuyor. Kutular köşeden köşeye sürüklenerek, oklar ve çizgiler başlangıçtan bitişe sürüklenerek çiziliyor; sürükleme sırasında dirsek için ters çevirme yapılabiliyor ve seçim aracı, kutuları taşırken bağlı okları bağlı tutuyor. Metin tıkla-yaz şeklinde çalışıyor, silgi ise dokunduğu çizgileri koparıyor. Geri alma ve yineleme, ayrıca bracketed-paste desteğiyle seçimlerin kopyalanması, kesilmesi ve yapıştırılması temel işlevleri tamamlıyor.
Dışa aktarma penceresi, aracın dokümantasyon işlerindeki değerini gösteriyor: genişletilmiş veya temel karakter kümeleri, 11 yorum stili, isteğe bağlı bir Markdown fence ve kopyalayıp kaydetmeden önce önizleme. Ayrıca arayüzü hiç açmadan diyagram üreten headless bir yol da var — lazydraw export architecture --basic --comment hashes --fenced -o diagram.txt — bu da betiklerle üretilen ya da depoya işlenen diyagramları mümkün kılıyor.
Çizimler her değişiklikten 500 ms sonra ve çıkışta yeniden otomatik kaydediliyor, XDG veri dizini altında .ld. dosyaları olarak saklanıyor; bir yönetici de bunları arasında geçiş yapma, yeniden adlandırma, fork etme, içe ve dışa aktarma işlemlerini hallediyor. Görsel olarak ızgara; lattice, checker, dot veya kapalı stillerinde geliyor ve varsayılan tema, uygulamanın uyum sağlaması için terminalin kendi renk paletini sorguluyor; dracula, nord ve tokyo-night gibi on IDE teması mevcut, yedek tema ise nord.
Kurulum ve bilinen pürüzler
lazydraw, Bun runtime üzerinde çalışıyor; bu yüzden Bun 1.3 veya üzeri ile fare destekli bir terminal gerekiyor. Kurulum bun install -g lazydraw komutuyla yapılıyor, npm ile de kurulabiliyor. Proje ayrıca herdr multiplexer'ı için bir plugin manifest'i içeriyor; böylece tuş atamaları herdr'ın kendi yapılandırma dosyasında tanımlanarak tuval, üzerinde çalıştığınız şeyin yanında bir bölme olarak yaşayabiliyor.
README pürüzleri de belgeliyor: tmux'ta set -g mouse on, OSC 52 üzerinden pano kopyalamaları için set -g set-clipboard on gerekiyor; macOS'ta Alt+sayı kısayolları için Option-as-Meta terminal ayarının etkinleştirilmesi gerekli.
Orijinaline karşı doğrulandı
Kod tabanı, terminal kodu içermeyen saf TypeScript src/core ile OpenTUI ön ucu src/tui'yi birbirinden ayırıyor. Bu ayrım, test paketinin sıradan kontrollerin ötesine geçmesini sağlıyor: fixture dosyaları, senaryoların ASCIIFlow'un kendi kodu üzerinden yeniden oynatılmasıyla üretilen golden çıktılar ve paket, ASCIIFlow'un spec dosyalarını da bir uyumluluk shim'i üzerinden lazydraw'un çekirdeğine karşı çalıştırıyor. Proje, etkili bir şekilde taklit ettiği araca göre kendini notlandırıyor.
Neden önemli
ASCII diyagramlar, her yerde sorunsuz görüntülenen az sayıdaki diyagram biçiminden biri olmayı sürdürüyor — terminallerde, kod yorumlarında, commit mesajlarında, diff'lerde ve düz Markdown'da render ediliyorlar. Bir tarayıcı aracına geçip sonucu geri yapıştırmadan oluşan alışılmış iş akışı konsantrasyonu bozuyor ve lazydraw bu döngünün tamamını terminalin içinde tutuyor. Dışa aktarma seçenekleri tam da bu diyagramların kullanıldığı yerleri hedefliyor: dokümantasyon için yorum stilleri ve Markdown fence'ler, kısıtlayıcı ortamlar için temel karakter modu. Çizim motoru, ASCIIFlow'un kendi spec'lerine karşı test edilmiş bir port olduğu için, orijinalin kullanıcıları taklit yerine tanıdık bir davranışla karşılaşıyor. Ödünler — bir Bun bağımlılığı ve bazı terminale özgü kurulum adımları — baştan belgelenmiş durumda, bu da birçok yan projenin başarabildiğinden fazlası.
- #terminal
- #ascii
- #diagrams
- #open-source
- #developer-tools