You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: drop stale libfuse/macFUSE references from README
The mount now goes through an in-process NFSv3 server instead of
FUSE, so no libfuse/macFUSE install step, fuser mention, or
fusermount command applies anymore. Also removes em dashes.
Copy file name to clipboardExpand all lines: README.md
+11-23Lines changed: 11 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
> [!WARNING]
8
8
> This project is under active development. Interfaces, behavior, and file layout may change without notice, and things may break.
9
9
10
-
FUSE-mount one or more Markdown files as a virtual filesystem: each file gets a top-level directory named after it, headings become subdirectories, and each section's body becomes a `content.md` file. Browse and edit a document with `ls`, `cat`, `grep`, `mkdir`, `rm`, and any regular text editor — writes are parsed back into the original Markdown via [mq-markdown](https://github.com/harehare/mq).
10
+
NFS-mount one or more Markdown files as a virtual filesystem: each file gets a top-level directory named after it, headings become subdirectories, and each section's body becomes a `content.md` file. Browse and edit a document with `ls`, `cat`, `grep`, `mkdir`, `rm`, and any regular text editor; writes are parsed back into the original Markdown via [mq-markdown](https://github.com/harehare/mq).
11
11
12
12
Companion tool for [mq](https://github.com/harehare/mq), a jq-like CLI for Markdown.
A section's `content.md` holds only its own body — text up to the *next* heading of any depth, not its subsections' content. Nesting comes from heading depth and document order, not from any indentation convention; a `#` typed inside a deeply-nested section's `content.md` becomes a new top-level directory *within that file* on save, not a nested one.
30
+
A section's `content.md` holds only its own body: text up to the *next* heading of any depth, not its subsections' content. Nesting comes from heading depth and document order, not from any indentation convention; a `#` typed inside a deeply-nested section's `content.md` becomes a new top-level directory *within that file* on save, not a nested one.
31
31
32
32
The top-level per-file directories are fixed at mount time, one per file passed on the command line: `mkdir`/`rmdir`/`rename` at that level (or moving `content.md` between two different mounted files) are not supported (`EPERM`/`ENOENT`/`EOPNOTSUPP`).
33
33
@@ -36,39 +36,27 @@ The top-level per-file directories are fixed at mount time, one per file passed
36
36
- Editing `content.md` and saving splices the new text back into the source file. Typing a new heading line into it creates a new subdirectory on the next `ls`.
37
37
-`mkdir NAME` under a directory adds a new (empty) subheading. Fails with `EEXIST` if a sibling already has that name.
38
38
-`rmdir` is POSIX-strict: it only removes an already-empty directory (no subdirectories, empty `content.md`). Plain `rm -r somedir` still deletes a whole section and everything nested inside it, since the shell already unlinks/rmdirs bottom-up.
39
-
- Renaming a directory renames the heading's title. Moving a directory to a *different* parent (reparenting) is not supported (`EOPNOTSUPP`) in this version. The top-level, per-file directories can't be created, removed, or renamed either (`EPERM`/`ENOENT`) — the set of mounted files is fixed for the life of the mount.
39
+
- Renaming a directory renames the heading's title. Moving a directory to a *different* parent (reparenting) is not supported (`EOPNOTSUPP`) in this version. The top-level, per-file directories can't be created, removed, or renamed either (`EPERM`/`ENOENT`); the set of mounted files is fixed for the life of the mount.
40
40
- Editors that save via a temp-file-then-rename dance (common with vim's `backupcopy=auto`, VS Code, and other "atomic save" tools) are supported: renaming any file onto a canonical `content.md`/frontmatter path adopts its bytes as that section's new content.
41
41
42
42
## Known limitations
43
43
44
-
-**Not byte-exact.** Every save re-renders the *whole* document through mq-markdown. Mounting a file and saving without any edits can still normalize whitespace, blank-line counts, list markers, and table padding — mq-markdown's renderer doesn't guarantee a byte-identical round trip. mq-mount skips the rewrite when the render is unchanged from what it last wrote, to avoid *spurious* rewrites, but a first save after mount may differ from the original bytes even with no logical edit.
44
+
-**Not byte-exact.** Every save re-renders the *whole* document through mq-markdown. Mounting a file and saving without any edits can still normalize whitespace, blank-line counts, list markers, and table padding; mq-markdown's renderer doesn't guarantee a byte-identical round trip. mq-mount skips the rewrite when the render is unchanged from what it last wrote, to avoid *spurious* rewrites, but a first save after mount may differ from the original bytes even with no logical edit.
45
45
-**No external change detection.** If the source file is edited by something else while mounted, that change is not detected or merged; whichever write lands last (through the mount, or externally) wins.
46
-
-**Linux and macOS only**, no Windows. macOS needs [macFUSE](https://macfuse.github.io/) installed — see below.
46
+
-**Linux and macOS only**, no Windows.
47
47
- Cross-directory `mv` (reparenting a heading) is not implemented.
48
48
49
49
## Installation
50
50
51
-
Requires either libfuse (Linux) or [macFUSE](https://macfuse.github.io/) (macOS) to be installed *before building* — `fuser`'s build script needs `fuse.pc` on `PKG_CONFIG_PATH` just to compile, not only to mount.
52
-
53
-
```sh
54
-
# Linux
55
-
sudo apt-get install libfuse-dev # or your distro's equivalent
56
-
57
-
# macOS
58
-
brew install macfuse
59
-
# macFUSE installs a system extension; macOS will prompt you to approve it under
60
-
# System Settings -> Privacy & Security, and may ask for a restart.
61
-
```
62
-
63
-
Then build from source:
51
+
No system packages are required; mounting uses the OS's built-in NFS client.
64
52
65
53
```sh
66
54
git clone https://github.com/harehare/mq-mount
67
55
cd mq-mount
68
56
cargo build --release
69
57
```
70
58
71
-
The `mount` feature (which pulls in `fuser`) is enabled by default. Building without it (`cargo build --no-default-features`) still compiles and tests the core section-tree logic, but produces a binary that refuses to run — useful for CI or contributing without macFUSE installed locally.
59
+
The `mount` feature is enabled by default. Building without it (`cargo build --no-default-features`) still compiles and tests the core section-tree logic, but produces a binary that refuses to run.
0 commit comments