This document is the user-facing summary of what LinSync does not do
in the current release (1.9.5). For the shipped feature record, see
docs/feature-matrix.md. Items here fall into two
categories:
- Currently unavailable features that may ship in a future release.
- Permanent non-goals that LinSync will not pursue.
This file is updated each release. As of 1.9.0 all roadmap phases (0–10)
are shipped: the image, document, and webpage compare surfaces, the
three-pane merge, the filter-grammar migrator, the plugin host with
sandboxed helpers, sessions/projects, accessibility (screen-reader
announcements, high-contrast change bars), localization, and lazy-render
windowing are all complete and no longer listed here. linsync-cli archive now routes through the core plugin / virtual-folder pipeline
(see "Archive compare" below).
The image, document, and webpage compare surfaces are implemented
end-to-end. See docs/feature-matrix.md for a per-mode status table.
The only remaining gaps are noted below.
- Image comparison is based on decoded RGBA8 samples. Animated
GIF/APNG/WebP frame-by-frame compare (
--image-frames first|all, bridge?frames=) and Radiance HDR + OpenEXR decode (tone-mapped to RGBA8) ship, with the decoded color type reported on each result. Exact and tolerance modes include the alpha channel; perceptual mode compares RGB only. Full ICC color-management interpretation is out of scope — pixels are compared in their decoded color space without profile conversion. Seedocs/image-compare-design.mdfor the detailed contract.
- Text, OCR-text, and rendered (PDF/DOCX → per-page image diff) modes
are all available. Text and OCR-text modes return the extracted
left_text/right_textto the GUI side-by-side; rendered mode (via apdf_rendererplugin) reports per-page pixel equality with a page-range field. OCR mode also returns per-word positional data (word_positions). - A visual word-box overlay drawn over a rendered source page is out of scope: OCR word positions are returned as structured data, but LinSync does not paint bounding boxes onto a rendered page image.
- OCR language defaults to
engif the GUI does not pass one through; the bridge accepts anocr_languagequery parameter. Per-plugin OCR options beyond language are left to the helper plugin.
- Rendered DOM diff and screenshot diff modes work end-to-end through
crates/linsync-webengine, which rasterizes pages out-of-process via a short-lived headlessqml6WebEngineView. These sub-modes require theweb-enginebuild feature and a Qt 6 QML runner on the host; when no runner is foundrender_urlreturnsWebEngineError::NotImplementedso callers fall back to HTML-source compare. - Source HTML, extracted visible text, and resource-tree modes work
end-to-end against the core webpage compare functions regardless of the
web-enginefeature.
- The Stop button in the Compare toolbar (
Main.qml) cancels an in-flight compare: each/comparecarries a per-request id and the bridge/cancel?id=Xendpoint flips its cancel flag, after which the response handler reports "Compare cancelled". - Text compare options sent by QML (case/whitespace/blank-line
ignores, substitutions) are applied by the HTTP bridge via
resolve_profile_for_request, which merges per-request query overrides (?ignore_case,?ignore_whitespace, …) over the active profile. The CLI honours all options too. - Folder operations (copy, delete, rename, refresh) and the folder
result view are served by
/folder/query, which applies the user's active filters, sort, type filter, and path search server-side and pages the tree so it never loads in full. - The Merge page conflict navigation uses per-side numeric line
ranges (
currentConflictStart/Endderive from each side's*_linesarray), so conflict next/previous scrolls each pane to the correct line.
linsync-cli archiveroutes through the core plugin / virtual-folder pipeline: with--unpacker PLUGIN_ID(or when a matchingunpackerplugin is discovered) it extracts via the sandboxed helper and runs a folder compare on the resulting virtual folder, including nested-archive recursion. For archive types the built-in extractor recognizes it still falls back to the directunzip/tarpath. The same archive→virtual- folder source is available from the GUI.
- Ubuntu 24.04 (noble) does not ship
qml6-module-org-kde-kirigamiin its stock repos. The.debartifact builds against Debian trixie (which does ship it). Ubuntu users need either a KDE neon source for the Kirigami package or to install via AppImage / Flatpak until the dependency lands in noble-updates. - Webpage rendered/screenshot compare requires the
web-enginefeature, which depends on the Qt WebEngine package and a Qt 6 QML runner on the host. The Arch, RPM, AppImage, and Flatpak recipes enable it; the Debian.debdoes not (it builds the external QML host against Debian's stable Qt). Source/text/resource-tree webpage compare works without the feature. - Document compare requires Tesseract OCR, Poppler utilities, and
LibreOffice on the host (used by helper plugins under
packaging/plugins/). Installation is best-effort: distro repos satisfy this on Arch, Fedora, and Debian, but the helpers are not bundled inside the LinSync package.
- The automated a11y CI gate (focus order grep,
Accessible.namepresence) passes, and the shipped a11y work includes screen-reader announcements (Accessible.announce), high-contrast diff change bars, verified keyboard focus order, a Swap-sides action, and broadAccessible.name/descriptioncoverage. A formal Orca screen reader walkthrough of every sidebar section is not yet logged as a release artifact.
- The legacy
attr:/dos:/ctime:/version:/shell:metadata prefixes are Windows-specific and remain unsupported on Linux. They return a structuredFilterParseErrorKindwith migration guidance via the GUI/filters/validateendpoint and the CLIlinsync-cli filter validatesubcommand.
- Writable archive-member editing is deliberately deferred until a separate helper plus Flatpak-portal safety design exists. Archive contents are read-only in this release.
- Freeform binary / hex editing is out of scope. The hex view is read-only.
These will not change with future releases:
- Windows / macOS builds. LinSync targets Linux only.
- Windows-only in-process plugins, Windows Explorer shell
extensions, and registry-backed settings are not supported.
Linux uses external helper processes (
docs/plugin-protocol.md), Dolphin service menus, and XDG JSON settings. - In-place editing of archive members and freeform binary / hex editing are deferred to later safety designs and may never ship.
- Network / cloud provider integrations. LinSync compares filesystem content. Cloud providers must appear as mounted Linux paths (rclone, GVFS, etc.) before LinSync treats them as comparable.
- The application shell is a native Qt / Kirigami desktop UI, not a web or browser-based shell.
- LinSync is GPL-3.0-only.
- Third-party application source, icons, translations, bundled filters,
and plugin implementations must not be copied unless a later
file-specific review proves GPL-3.0 compatibility
(see
docs/licensing.md). deny.tomlenforces the allow-list of license expressions for Cargo dependencies;just denyis the gate.