Visibility and commenting

Needs gander signup. These commands are hidden from gander --help until a token is saved.

Every hosted file has two independent policies: who can open the page, and who can comment. Set them from the CLI when you share or watch, or later from the dashboard. They apply to the live URL. They do not change the file on disk.

You need signup. Reviewers never set these. Authors do.

Document visibility

This is who may GET /s/{short_id} and see the markdown.

Value Flag Who can open the page
anyone default on first share anyone with the link
private --private or --visibility=private you and invited team. Anonymous visitors get 401. A signed-in stranger gets 403.
hidden --visibility=hidden nobody. The URL 404s. The share still appears in gander list and the dashboard so you can turn it back on.
gander share plan.md
gander share plan.md --private
gander watch plan.md --visibility=private
gander share plan.md --visibility=hidden
gander share plan.md --visibility=anyone

--private and --visibility=private are the same setting. Use hidden when you want the link to go dead without deleting the share.

Private docs are how team review works with invites. Hidden is unpublish, not access control for a known reader.

Commenting

This is who may start threads, reply, resolve, and unresolve. It is not the same as visibility.

Value Flag Who can comment
private default on first share you and team
anyone --comments anyone anyone who can already see the doc
disabled --no-comments or --comments disabled nobody. The viewer gets an empty thread list and can_comment=false.
gander share plan.md --comments private
gander share plan.md --comments anyone
gander share plan.md --no-comments
gander watch plan.md --comments disabled

Anyone-commenting requires anyone-visibility. You cannot have a private doc with public threads. The dashboard hides the Anyone commenting option when visibility is not Anyone.

Disabled still lets people read the doc if visibility allows it. They just cannot open threads.

Do not send defaults on every save

The CLI omits a JSON key unless you passed the matching flag. That is load-bearing. A gander watch loop that always sent comment_access=private would reset a share you had set to disabled or anyone.

So this is safe: share once as private, then watch without flags.

gander share plan.md --private
gander watch plan.md

The second command updates content only. Visibility stays private. Commenting stays whatever it was.

The same rule applies to ~/.gander/config.json defaults: they are first-create only. Re-share or gander watch without flags does not reset policy from that file.

To change policy later, pass the flag again or use the dashboard. PATCH on the API is the same idea: send only the fields you mean to change.