Skip to content

proxy-media for previewing a small copy of a library, peer-2-peer-sync using proxy media and sidecars.... .a mobile app that lets me share and browse my darktable library from the phone#21336

Open
mynameisdeleted wants to merge 92 commits into
darktable-org:masterfrom
mynameisdeleted:feature/qr-pairing

Conversation

@mynameisdeleted

@mynameisdeleted mynameisdeleted commented Jun 17, 2026

Copy link
Copy Markdown
Screenshot From 2026-06-17 07-34-01 mobile_screen_shot darktable support for rendering and editing images via proxy avif media

darktable p2p sync of xmp sidecars

p2p network daemon

mobile app that fetches previews from darktable desktop, and has rating and color tag buttons and can share to other phone applications

mynameisdeleted and others added 30 commits June 11, 2026 16:30
- Introduced a new P2P sync daemon in `src/p2p/main.go` for darktable.
- The daemon supports XMP sync, proxy media fetch, and mDNS peer discovery.
- Added command-line flags for socket path, passphrase, and proxy directory.
- Implemented graceful shutdown on receiving termination signals.
- Added a new file `src/p2p/p2p` for additional P2P functionality (file too large to diff).
…port

- Implement event subscription for push notifications on image import and XMP updates.
- Add static peer configuration via command-line flag for improved connectivity in restricted networks.
- Update proxy handling to auto-fetch missing proxies from static peers.
- Refactor daemon initialization to accommodate new static peers feature.
…s for linear and log-encoded proxies to ensure correct color management.
…tory for remote images and enhance local file indexing.
…normalization

- Added a new peer database (`peerdb.go`) to manage peer information persistently.
- Implemented functions to touch, mark success, and mark failure for peers in the database.
- Introduced a method to retrieve all known peer URLs ordered by last seen time.
- Enhanced the main application to read peers from a configuration file and normalize peer URLs.
- Added utility functions for determining the database path and normalizing peer URLs.
…ocket buffer flooding during batch job execution
…sn't exist locally and add delay for XMP file writing in P2P
…for path computation and updating proxy creation logic
…ting announcement logic into proxy creation
@mynameisdeleted

Copy link
Copy Markdown
Author

I'll be breaking this into smaller pr's with seperate documentation per per...

1* proxy-media suppport that mimics almost full raw editing with highly compressed files

2* p2p-daemon integration and sync algorithm

3* mobile app

from there we can try to break it into more baby-sized pieces individually documented

@jenshannoschwalm

Copy link
Copy Markdown
Collaborator

I confess, for me this is complete fog. Absolutely no idea what you want to achieve or what target you have.

@mynameisdeleted

mynameisdeleted commented Jun 17, 2026

Copy link
Copy Markdown
Author

enable feature-gate in the preferences plane setup...
the main features are:

  • share xmp files over p2p secure network

  • update image previews when other synced copies of darktable adjust layers liike exposure or white balance

  • share compressed proxy-media to peers with limited disk space so they can be previewed and developed with accurate color but slightly less detail without having to have the full raw-file on every peer

  • enable a mobile app that can fetch previews and browse the photo gallery and share desktop-generated preview images of the photo gallery to mobile applications such as text-messaging and facebook.

Screenshot From 2026-06-17 17-06-41

@mynameisdeleted

Copy link
Copy Markdown
Author
Screenshot_20260617-171019 mobile applications p2p conection-0settings screen that lets it gather data from any desktop-copy of darktable I have running

@mynameisdeleted

Copy link
Copy Markdown
Author

I confess, for me this is complete fog. Absolutely no idea what you want to achieve or what target you have.

check this for architecture overview...

@mynameisdeleted

Copy link
Copy Markdown
Author

@mynameisdeleted ideally you would have opened a feature request issue and then spelled out what you felt was needed and why, and then added your proposed solution.

I kind of know what this is about from the IRC monologue you posted under a different name.

So, at this point this needs a whole lot of documentation starting with

  • The problem that needs solving
  • Your idea of a solution
  • What functional changes this PR makes to darktable
  • How does it coexist with darktable as it currently is (if I don't want to use it am I still going to see it?)
  • What would a user workflow look like
  • How to set this up
  • How to test it

Dropping a PR that changes 65 files and ~10K lines of code without any documentation and expecting us to figure it out isn't going to work well.

check this document for architecture overview.

- Added proxy subscription and download functionality in `proxy.go` to manage proxy announcements and fetch proxies from peers.
- Implemented XMP handling in `xmp.go`, including inbound XMP processing, pushing updates to peers, and serving XMP files over HTTP.
- Introduced methods for merging XMP metadata to preserve existing edits while applying new updates.
- Enhanced logging for better traceability of proxy and XMP operations.
- Add outbound HTTP helpers for GET and POST requests with authentication.
- Implement an HTTPS server to handle proxy, manifest, XMP, and preview requests.
- Create a local file index to manage and resolve paths for raw and proxy files.
- Introduce socket communication for event broadcasting and handling various commands.
- Define message types and structures for XMP synchronization and proxy announcements.
- Ensure persistence of local-to-remote path mappings across daemon restarts.
@TurboGit

Copy link
Copy Markdown
Member

Just a side note here, we are currently in release mode. Do not expect much feedback in the coming weeks. Also this is a HUGE PR and we have not even discussed if this is something we want or not in darktable. We really need to come with a view on the workflow for this new stuff and see if it can integrated into darktable without breaking other things. So let's first open an issue and discussed the ultimate goal and the use of such feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants