Skip to content

Releases: tmc/9pfs

9pfs v0.1.8

Choose a tag to compare

@tmc tmc released this 26 Aug 19:46
61b7449

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

Fixes a bug in v0.1.7 that could make the file system disappear from System Settings.

v0.1.7 numbered the app bundle 0.1.7, below the 1.0 that every earlier build carried. PlugInKit keeps one record per extension and prefers the highest-versioned one, so on a machine still holding a record from an older copy -- in the Trash, in ~/Downloads, or from an app deleted while its record survived -- the old record won, could not be resolved, and the extension was dropped entirely. Reinstalling did not help; neither did a reboot.

Upgrade to this release if you are on v0.1.7. If 9pfs is already missing from System Settings, installing this build is the fix.

The release tag and the bundle version are now deliberately separate: v0.1.8 ships bundle version 1.1.8, so the number PlugInKit compares only ever rises.

9pfs v0.1.7

Choose a tag to compare

@tmc tmc released this 25 Aug 19:53
098cc79

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

Fixes setting a file's modification time: the client asked for the timestamp without the NotSystemTime bits that 9P2000.L requires, so the server recorded its own clock instead.

Diagnostics now names the build — version, build number and source revision — so a bug report says which build it came from.

Internal: the p9 patch is replaced by a module pin on a fork carrying the three open upstream pull requests (hugelgupf/p9#110, #111, #112).

9pfs v0.1.6

Choose a tag to compare

@tmc tmc released this 22 Aug 06:59
c0f2145

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

Reports the attributes the server actually sends, and stops answering from a
stale cache.

  • Attributes come from the server: link count, distinct access/change/birth
    times, and setuid/setgid/sticky bits. Earlier releases reported a link count
    of 1, the extension's own uid and gid, and the modification time as all four
    timestamps.
  • Attributes are read rather than cached. A file changed by another route --
    a hard link made through its parent, or another client writing to the same
    server -- left every earlier release reporting stale attributes for as long
    as the file stayed open.
  • chown is applied on 9P2000.L and declined on 9P2000, which reports the
    decline instead of silently doing nothing. Note that a mount made by an
    ordinary user carries noowners, so macOS reports the mounting user as the
    owner of every file and answers chown itself; this is visible above the
    kernel, not in ls -l.
  • The FSKit bridge now comes from github.com/tmc/apple/x/fskitbridge rather
    than a copy vendored in this repository.
  • The installed test asserts what the volume reports, not only that operations
    succeed. Every bug above was invisible to a suite that checked exit codes.

9pfs v0.1.5

Choose a tag to compare

@tmc tmc released this 22 Aug 04:29
8ec2f4c

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

Fixes volume size reporting and the advertised capabilities.

Mounts reported a volume of no size with no space free. 9P2000.L mounts now report the server's real numbers, so a file manager shows the space that is actually there. Classic 9P2000 has no statfs and still reports a placeholder.

Symbolic links and hard links are now advertised to the kernel. Both have always worked on 9P2000.L mounts, but the volume described itself as supporting neither.

New persistentids=1 mount option, for servers whose QID paths identify files persistently. An item then keeps its identity across a remount and follows a file through a rename. This does not enable document version storage, which macOS offers only on local, Apple-native volumes.

9pfs v0.1.4

Choose a tag to compare

@tmc tmc released this 22 Aug 03:55
36754e1

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

Fixes removal and rename. On v0.1.1 through v0.1.3, rm, rmdir, and renaming onto an existing file reported success while doing nothing. Files now go away when you delete them, and applications that save by renaming a temporary file over the original — TextEdit among them — work.

Also adds a bundled demo 9P server at Contents/MacOS/9pdemo that prints its own mount command.

9pfs v0.1.3

Choose a tag to compare

@tmc tmc released this 22 Aug 00:50
1751cb9

Notarized Developer ID build of the 9pfs FSKit file system. Open the disk image and drag NinePFSHost.app to Applications, open it once to register the extension, enable 9pfs in System Settings > General > Login Items & Extensions > File System Extensions, then mount with /sbin/mount -F -t 9pfs. See README for details.

9pfs v0.1.2

Choose a tag to compare

@tmc tmc released this 22 Aug 00:22
20ff15b

Notarized Developer ID build of the 9pfs FSKit file system. Runs on any Mac
running macOS 15.4 or later — no rebuild, no device registration.

shasum -a 256 -c NinePFSHost-v0.1.2.zip.sha256
ditto -x -k NinePFSHost-v0.1.2.zip .
spctl -a -vvv --type install NinePFSHost.app   # source=Notarized Developer ID

sudo cp -R NinePFSHost.app /Applications/NinePFSHost.app
open /Applications/NinePFSHost.app             # registers the extension

Enable "9pfs" in System Settings > General > Login Items & Extensions > File
System Extensions, then mount:

/sbin/mount -F -t 9pfs 'ninep://127.0.0.1:5640?dialect=9p2000l' /path/to/mountpoint

Extract with ditto -x -k, not a double-click unarchiver: an unarchiver that
drops symlinks or permissions breaks the signature, and a damaged copy still
launches but cannot read the FSKit module list. If the app reports "Status
unavailable", check codesign -vv --deep --strict /Applications/NinePFSHost.app
first. See the README's troubleshooting section.

Upgrading over an existing install can turn the System Settings toggle back
off; re-enable it if a mount fails after replacing the app.

9pfs v0.1.1

Choose a tag to compare

@tmc tmc released this 25 Jun 20:06
e961e06

Notarized Developer ID build of the 9pfs FSKit file system. Download, open NinePFSHost.app, enable the extension in System Settings, then mount with /sbin/mount -F -t 9pfs. See README for details.

9pfs v0.1.0

Choose a tag to compare

@tmc tmc released this 25 Jun 18:28
cc54c54

Notarized Developer ID build of the 9pfs FSKit file system. Download, open NinePFSHost.app, enable the extension in System Settings, then mount with /sbin/mount -F -t 9pfs. See README for details.