Skip to content

Repository files navigation

InterlinedList Synchronization

macOS CIWindows CILinux CIRelease

A Dropbox/OneDrive-style sync client for InterlinedList documents. The application runs in the background, watches a local folder, and bidirectionally syncs your InterlinedList .md documents and folders between your machine and the web app — without any manual export or import step.

Platform support

PlatformMinimum versionInstall methodStack
macOSmacOS 13 (Ventura)DMG / PKG from Releases (upcoming)Swift 5.9 + AppKit/SwiftUI
WindowsWindows 10 build 19041 (2004)MSIX from Releases (upcoming)C# 13 / .NET 9 + WPF
LinuxUbuntu 22.04 LTS.deb or Snap (upcoming)Rust stable + GTK4/libadwaita

Note: v1.0 has not yet been released. The Releases page will be updated when signed, distributable installers are available.

Quick start

Each platform has its own packaging guide with install and build-from-source instructions:

For end-user install and troubleshooting detail, see the per-platform READMEs:

Architecture

There is no shared runtime code between platforms. Each directory — macos/, windows/, linux-ubuntu/ — is an entirely self-contained native application written in the idiomatic stack for its operating system. The macOS client is a Swift/AppKit menu bar daemon; the Windows client is a C#/.NET 9 WPF tray application; the Linux client is a Rust daemon with a GTK4/libadwaita tray menu and systemd user service.

This approach was chosen deliberately. A cross-platform framework (Electron, Tauri, Qt) would allow code sharing but would sacrifice the native secret store, tray API, file-system notification API, notification framework, and OS packaging format on each platform. Because the application surface area is small — a tray icon, a preferences window, a background sync loop — duplicating the logic three times in native code costs less than the ongoing maintenance of cross-platform abstractions that leak on every major OS release.

All three implementations hit the same InterlinedList REST API (https://interlinedlist.com/api), use the same Bearer auth token format (il_tok_... from POST /api/auth/sync-token), and follow the same conflict resolution policy: remote wins, with the conflicting local copy renamed to <name>.conflict-<timestamp>.md.

Feature matrix

FeaturemacOSWindowsLinux
Bidirectional sync (push + pull)YesYesYes
File watcher (push on save)FSEventsFileSystemWatcherinotify
Delta pull (/api/documents/sync)YesYesYes
Conflict resolution: remote-wins + conflict copyYesYesYes
Offline queue (changes queued when offline)No (v1)No (v1)Yes
Per-document concurrency (no global lock)Yes (actor isolation)Yes (per-doc semaphore)Yes (tokio tasks)
System tray / menu bar UXMenu bar extraNotification area iconAyatana AppIndicator
Native OS notificationsUserNotificationsWindows App SDK toastslibnotify
Credentials in native secret storeKeychainWindows Credential ManagerGNOME Keyring
Launch at login / startupSMAppServiceMSIX startupTasksystemd user service
Preferences windowSwiftUIWPFlibadwaita

Build from source

Each platform requires its own toolchain. One-liner builds below; see the per-platform README for full prerequisites.

macOS — requires Xcode 16 and Swift Package Manager:

bash macos/scripts/build-app.sh

Windows — requires .NET 9 SDK:

dotnet build windows/InterlinedSync.sln -c Release

Linux — requires Rust stable toolchain and GTK4/libadwaita development libraries:

cargo build --release --manifest-path linux-ubuntu/Cargo.toml

Test counts (as of v1.0-RC)

PlatformUnit testsIntegration tests
macOS1445
Windows1655
Linux585

Integration tests require live API credentials; see CONTRIBUTING.md for the .env setup.

Contributing

See CONTRIBUTING.md for toolchain setup, test conventions, branch policy, and commit message style.

API contract

A snapshot of the InterlinedList REST API as validated against the live service is in API_CONTRACT.md. Reference this document when making changes to any platform's API client to avoid silent regressions against live API drift.

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages