Projelere dön

macOS

Maclet

  • Açık Kaynak
  • Geliştirme Aşamasında
Finder’da sentetik demo dosyaları üzerinde New Text File, New Markdown File, New File, Clipboard to File ve Copy Path eylemlerini gösteren Maclet entegrasyonu.

Genel bakış

Maclet, Finder içinde sık yapılan küçük dosya işlemlerini daha hızlı ve kontrollü hale getirmeyi amaçlayan native bir macOS yardımcı uygulaması. Finder ile entegre olurken dosya işlemlerini ortak ve güvenli bir action engine üzerinden yürütür.

Problem

Finder’da sık tekrarlanan küçük dosya işlemleri, basit olmalarına rağmen çoğu zaman gereğinden fazla adım gerektiriyor. Maclet, bu işlemleri Finder bağlamından ayrılmadan daha hızlı gerçekleştirebilecek ortak bir yapı oluşturma fikriyle başladı.

Yaklaşım

Maclet’i birbirinden bağımsız küçük araçlar yerine aynı güvenlik ve doğrulama kurallarını paylaşan bir sistem olarak tasarladım.

Finder Sync extension yalnızca kullanıcının bulunduğu bağlamı ve yapmak istediği işlemi ana uygulamaya iletiyor. Gerçek dosya sistemi işlemleri ise yetkilendirme, doğrulama ve hata yönetiminin kontrol edilebildiği ana uygulamada çalışıyor.

Seçili özellikler

  1. New File

    Finder içinden yeni dosya oluşturmayı hızlandırır.

  2. Clipboard to File

    Panodaki içeriği doğrudan dosyaya dönüştürmeye yardımcı olur.

  3. Smart Path

    Dosya ve klasör yollarıyla çalışmayı daha pratik hale getirir.

  4. Folderize Selection

    Seçili öğeleri yeni bir klasör altında düzenlemek için kullanılır.

  5. Finder Quick Create

    Finder bağlamından hızlı oluşturma işlemlerine erişim sağlar.

Teknolojiler

  • Swift
  • SwiftUI
  • AppKit
  • Finder Sync
  • Swift Package Manager
  • XCTest
  • XcodeGen

Geliştirme kararları

  1. Finder Sync yalnızca istek oluşturuyor

    Finder Sync extension’ın doğrudan dosya işlemleri gerçekleştirmesi yerine yalnızca ana uygulamaya istek göndermesini tercih ettim. Böylece dosya erişimi ve yetkilendirme sınırlarını tek yerde tutarak extension’ın sorumluluğunu minimumda bırakabiliyorum.

  2. Finder path bir yetki değil, context

    Finder’dan gelen yolu otomatik bir dosya sistemi yetkisi olarak kabul etmiyorum. Yalnızca kullanıcının bulunduğu bağlam olarak değerlendiriliyor ve gerçek erişim ayrıca doğrulanıyor. Amaç, ihtiyaç duyulandan daha geniş dosya sistemi erişimi oluşturmamak.

  3. Dosya mutation’larında güvenli işlem zinciri

    Dosya değiştiren işlemleri exclusive operation, validation ve gerektiğinde rollback adımlarıyla ele aldım. Böylece yanlışlıkla overwrite, çakışan işlemler veya yarım kalmış dosya sistemi değişiklikleri gibi durumları azaltmayı hedefledim.

Öğrendiklerim

Maclet, macOS sandbox, Finder Sync ve security-scoped bookmark gibi sistemleri yalnızca teknik olarak kullanmanın ötesinde, bunların gerçek bir ürün akışında nasıl birlikte tasarlanması gerektiğini anlamamı sağladı.

Ayrıca dosya sistemi üzerinde çalışan bir uygulamada TOCTOU, symlink davranışları, rollback ve authorization sınırlarının çoğu zaman görünen arayüzden çok daha kritik tasarım problemleri olduğunu öğrendim.

Proje bağlantısı

GitHubYakında