Conversation
8d94578 to
5794834
Compare
🤖 Augment PR SummarySummary: This PR adds Zeroconf-based AFP service discovery across the project, with a provider-neutral core and multiple backend implementations. Changes:
Technical Notes: Provider selection is done at build time (preferring DNS-SD on macOS and Avahi elsewhere), while the stub backend preserves builds without Zeroconf dependencies; frontends consume a consistent service/endpoint model and error semantics. 🤖 Was this summary useful? React with 👍 or 👎 |
b4ee771 to
c4cc5c8
Compare
|
Great to see, but why This creates confusion about why there are two, what's the differences, when should you use one over the other.. |
|
Best to have only I realise it's probably because the code is standalone (great) but I don't think that warrants random duplicate entry points? It's a bit of a pet hate 🤣 |
|
fair point, the problem is that
the semantics of |
|
That does make sense. My thinking is; what about the next command set? Where would those live? I'm trying to think about a long term solution where everything (now and future) can be accessed in one place and users only have to remember one command. The client is something that users will interact with a lot, so simplicity and an intuitive structure is very important - more important than code convenience. I often have to push teams to prioritise the user experience over the developer experience. Could we rename the libfuse entry, and make afp_client the one and only thin wrapper instead, which then redirects to the various backends as required. This would be easier to maintain in the long run? Now is the best time to get this right, before it becomes harder to change? |
|
right now is indeed the ideal time to make broader changes! we are talking about the same thing, but I like to say user ergonomics over developer ergonomics :) at the same time, I want to keep the Unix philosophy in mind: of having small programs that does one or a handful of things very well, and avoid monoliths overloaded with functionality off the top of my head, we could for instance rename the current now the question is, what operations should the new one complication is that we have two types of AFP session daemons, the thoughts? |
Haha indeed 🙂
True, but this is not program code, this is the user interface which should be thin on business logic and broad in coverage - so there is no monolith. To your point, the different things the CLI can call should be separated where possible.
Perfect! This is a great example of why the clients CLI should be a wrapper that calls the different backends depending on the namespace provided to the CLI command?
This should provide a structure to apply future advanced configuration options and spec stuff? We should be careful of having a flat hierarchy, which is why I'm thinking cmd for all the stateless commands? Is there are afp_client is long and typing the _ on the keyboard is difficult to type quickly |
Add a provider-neutral discovery layer with native Avahi and DNS-SD backends, plus a stub backend so builds continue to work without Zeroconf dependencies. Normalize browse, resolve, snapshot, endpoint, and TXT data across providers. Expose bounded discovery through 'afp_client discover' with human-readable, verbose, and JSON output. Add a live service picker to afpcmd and support exact advertised service lookup for mounts, including authenticated volume listing. Browse companion _device-info._tcp advertisements alongside AFP services, associate matching records, and show their model TXT value in the MODEL column. Retain standalone device-info records in verbose output for diagnostics. Detect and select discovery providers in Meson, install the new utility and man page, and extend CI dependencies. Document the user and developer workflows and cover discovery events, output, service resolution, ambiguity, and picker behavior with deterministic fake-backend tests. Rework the afpcmd volume picker TUI to align with the new Zeroconf selection menu.
|
alright, for starters the stand-alone afpdiscover binary has been purged, keeping I propose we wrap up and merge this PR now, and then pivot to restructuring afp_client in a future PR! |
|
|
@rdmark Agreed. Thanks for discussing it...
|



Add a provider-neutral discovery layer with native Avahi and DNS-SD backends, plus a stub backend so builds continue to work without Zeroconf dependencies. Normalize browse, resolve, snapshot, endpoint, and TXT data across providers.
Expose bounded discovery through 'afp_client discover' with human-readable, verbose, and JSON output. Add a live service picker to afpcmd and support exact advertised service lookup for mounts, including authenticated volume listing.
Browse companion _device-info._tcp advertisements alongside AFP services, associate matching records, and show their model TXT value in the MODEL column. (Note that we don't see _device-info._tcp advertisements from Apple AFP servers.) Retain standalone device-info records in verbose output for diagnostics.
Detect and select discovery providers in Meson, install the new utility and man page, and extend CI dependencies. Document the user and developer workflows and cover discovery events, output, service resolution, ambiguity, and picker behavior with deterministic fake-backend tests.
Rework the afpcmd volume picker TUI to align with the new Zeroconf selection menu.
Usage examples: