Repository navigation
Remove annotations, and with them every write path - #42
Merged
Merged
Conversation
souta's call, made when they corrected what this product is: "注釈機能は ssh-browser 側の機能 ではないと思う。それは ssh 先で開発してその機能を見ること。" A site that wants notes should have notes built into it; this daemon's job is to let you see that site working. So the `annot` module is gone, the `/_control/annotations` routes are gone, and the extension's content script is gone. What that bought is a property rather than a saving. **The daemon has no write path to a remote.** Not "writes are restricted to one shape of path" — there is no code that writes. The SFTP requests it can issue are OPEN, CLOSE, READ, OPENDIR, READDIR and REALPATH, the only open flag it defines is FXF_READ, and `RemoteFs` has no `append` or `mkdirs` to call. That is checkable by grep rather than promised in a paragraph, which is the difference worth having in a daemon pointed at somebody's home directory. The extension lost its only content script, so it no longer runs in, reads from, or modifies the sites it opens. With it went the `scripting` permission and the `http://*/*` optional host permission, so the manifest now asks for `proxy`, `storage` and `http://127.0.0.1/*` and nothing else — and there is no permission prompt left in the product. The bundle went from about 152 KB to about 14 KB of JavaScript, of which the 138 KB content script was parse work on every single page load. Several things existed only to serve annotations and left with them. `--author` and `[server] author`, which named a log. `Entry.owner` and the `longname` owner parse, which checked one — the numeric uid could never answer that question, and now nothing asks it. `SECURITY.md`'s two sections about what was written and who a log belonged to, replaced by one that states the read-only property and says outright that it was bought by dropping a feature. Four e2e checks went with it. The harness used the content script's registration as its readiness signal, so that is now the daemon line naming the port it was asked for — which it already had to check anyway, because on this machine a daemon is usually already running on the default port. 175 tests, 33 e2e checks, two runs clean against a real host. This is a breaking change to a published crate: the control API loses two routes and the command line loses a flag. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Souta <shimozono-sota631@g.ecc.u-tokyo.ac.jp>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
souta's call, made when they corrected what this product is:
A site that wants notes should have notes built into it; this daemon's job is to let you see that site working.
What it bought
The daemon has no write path to a remote. Not "writes are restricted to one shape of path" — there is no code that writes.
That is checkable by grep rather than promised in a paragraph — the difference worth having in a daemon pointed at somebody's home directory.
The extension lost its only content script, so it no longer runs in, reads from, or modifies the sites it opens. With it went the
scriptingpermission and thehttp://*/*optional host permission:proxystoragescriptingproxystoragehttp://*/*There is no permission prompt left in the product. The 138 KB content script was parse work on every single page load.
What left with it
Things that existed only to serve annotations:
--authorand[server] author, which named a logEntry.ownerand thelongnameowner parse, which checked one — the numeric uid could never answer that question, and now nothing asks itSECURITY.md's two sections on what was written and who a log belonged to, replaced by one stating the read-only property and saying outright that it was bought by dropping a featureSTORE.mdandPRIVACY.mdupdated, since the permissions they justify have changede2e
Four checks went with it. The harness used the content script's registration as its readiness signal; that is now the daemon line naming the port it was asked for — which it already had to check anyway, because on this machine a daemon is usually already running on the default port.
175 tests, 33 e2e checks, two runs clean against a real host.
Breaking
The control API loses two routes and the command line loses a flag, against a published crate. Next release is a minor bump.
Generated with Claude Code