Skip to main content

Crate cliban_sync

Crate cliban_sync 

Source
Expand description

cliban-sync — the bridge between a cliban board and an external issue tracker.

Deliberately not a sync engine. There is no daemon, no polling, and no merge algorithm; there are two explicit verbs a human or agent invokes on one issue at a time — import (remote → cliban) and push (cliban → remote) — and a links table recording which local issue corresponds to which remote one.

What makes that tractable is declared field ownership rather than reconciliation. The remote owns title, priority, labels, due date, and workflow state. The ## Spec prose follows the link’s recorded links::Origin — whoever created the pairing wrote the spec first and owns it. cliban owns ## Plan, ## Activity Log, and ## Notes — the parts that have no counterpart upstream and are the whole reason the board exists. Neither side ever merges the other’s fields, so the only conflict left is “the remote moved since we last looked”, which is a timestamp comparison (see linear::push).

Re-exports§

pub use error::Error;
pub use error::Result;

Modules§

config
~/.config/cliban/linear.toml — the optional bits of Linear setup.
error
Error vocabulary for the sync bridges.
linear
The Linear bridge.
links
remote_links — which local issue is which remote issue.

Constants§

ENTITY_ISSUE
Entity key stored in remote_links.entity. Only issues are linked today; the column exists so milestones or projects can be added without a migration.
PROVIDER_LINEAR
Provider key stored in remote_links.provider.

Functions§

fingerprint
Stable hash of the remote-owned field values, stored as remote_links.base_hash.