docs: correct issue access, limiter and comment docs
4 files · +5 -5
M docs/cli.md +1 -1
| @@ -88,7 +88,7 @@ Issues need a server with the `issues` feature and `ermite repo edit <repo> --is | |||
| 88 | 88 | ||
| 89 | 89 | ## Output | |
| 90 | 90 | ||
| 91 | - | - `--json` prints stable field names (listed in each `--help`) on `repo list|show|create|edit`, `token create|list`, `run list|view|cancel|rerun`, `runner list` and `version`. | |
| 91 | + | - `--json` prints stable field names (listed in each `--help`) on `repo list|show|create|edit`, `issue create|list|show|comment|close|reopen`, `token create|list`, `run list|view|cancel|rerun`, `runner list` and `version`. | |
| 92 | 92 | - `watch --json` prints one object per line. | |
| 93 | 93 | - Errors are one line on stderr (`ermite: …`) with exit status 1. | |
| 94 | 94 | - Shell completion completes repository names from the server. | |
| @@ -88,7 +88,7 @@ Issues need a server with the `issues` feature and `ermite repo edit <repo> --is | |||||
| 88 | 88 | ||||
| 89 | ## Output | 89 | ## Output | ||
| 90 | 90 | ||||
| 91 | - | - `--json` prints stable field names (listed in each `--help`) on `repo list|show|create|edit`, `token create|list`, `run list|view|cancel|rerun`, `runner list` and `version`. | 91 | + | - `--json` prints stable field names (listed in each `--help`) on `repo list|show|create|edit`, `issue create|list|show|comment|close|reopen`, `token create|list`, `run list|view|cancel|rerun`, `runner list` and `version`. |
| 92 | - `watch --json` prints one object per line. | 92 | - `watch --json` prints one object per line. | ||
| 93 | - Errors are one line on stderr (`ermite: …`) with exit status 1. | 93 | - Errors are one line on stderr (`ermite: …`) with exit status 1. | ||
| 94 | - Shell completion completes repository names from the server. | 94 | - Shell completion completes repository names from the server. | ||
M docs/issues.md +1 -1
| @@ -50,6 +50,6 @@ The owner moderates in the Inbox, in the first section, **Awaiting moderation**, | |||
| 50 | 50 | ||
| 51 | 51 | An approved issue is rendered as untrusted Markdown: raw HTML is dropped, images are never loaded (their alt text is shown), only `http`, `https` and `mailto` links are kept, each with `rel="nofollow noopener noreferrer ugc"`, and every other link loses its link and keeps its text. | |
| 52 | 52 | ||
| 53 | - | No address is stored. The limits and the ban key on an HMAC of the network address made with a server key, and the submission keeps only that hash. | |
| 53 | + | No IP address is written to disk. The rate limiter keys on the normalized network address (the IPv4 address, or the IPv6 /64) for at most 24 hours and keeps it only in memory. Pending submissions and bans store only a keyed hash (HMAC) of that network, made with a server key. | |
| 54 | 54 | ||
| 55 | 55 | The limits see the address of the client only if `ERMITE_TRUSTED_PROXIES` lists your reverse proxy; otherwise every visitor shares the proxy's address and one budget (see [configuration](configuration.md)). | |
| @@ -50,6 +50,6 @@ The owner moderates in the Inbox, in the first section, **Awaiting moderation**, | |||||
| 50 | 50 | ||||
| 51 | An approved issue is rendered as untrusted Markdown: raw HTML is dropped, images are never loaded (their alt text is shown), only `http`, `https` and `mailto` links are kept, each with `rel="nofollow noopener noreferrer ugc"`, and every other link loses its link and keeps its text. | 51 | An approved issue is rendered as untrusted Markdown: raw HTML is dropped, images are never loaded (their alt text is shown), only `http`, `https` and `mailto` links are kept, each with `rel="nofollow noopener noreferrer ugc"`, and every other link loses its link and keeps its text. | ||
| 52 | 52 | ||||
| 53 | - | No address is stored. The limits and the ban key on an HMAC of the network address made with a server key, and the submission keeps only that hash. | 53 | + | No IP address is written to disk. The rate limiter keys on the normalized network address (the IPv4 address, or the IPv6 /64) for at most 24 hours and keeps it only in memory. Pending submissions and bans store only a keyed hash (HMAC) of that network, made with a server key. |
| 54 | 54 | ||||
| 55 | The limits see the address of the client only if `ERMITE_TRUSTED_PROXIES` lists your reverse proxy; otherwise every visitor shares the proxy's address and one budget (see [configuration](configuration.md)). | 55 | The limits see the address of the client only if `ERMITE_TRUSTED_PROXIES` lists your reverse proxy; otherwise every visitor shares the proxy's address and one budget (see [configuration](configuration.md)). | ||
M internal/app/cli_issue.go +1 -1
| @@ -365,7 +365,7 @@ func newIssueCommentCmd(env *cliEnv) *cobra.Command { | |||
| 365 | 365 | cmd := &cobra.Command{ | |
| 366 | 366 | Use: "comment <repo> <number>", | |
| 367 | 367 | Short: "Comment on an issue", | |
| 368 | - | Long: "Add a Markdown comment (at most 10,000 characters; disallowed control characters are stripped).\n" + | |
| 368 | + | Long: "Add a plain-text comment (at most 10,000 characters; disallowed control characters are stripped).\n" + | |
| 369 | 369 | "-m - reads it from standard input. Needs the issue:write scope." + jsonIssueCommentHelp, | |
| 370 | 370 | Args: cobra.ExactArgs(2), | |
| 371 | 371 | ValidArgsFunction: completeIssueRepoThenNumber(env), | |
| @@ -365,7 +365,7 @@ func newIssueCommentCmd(env *cliEnv) *cobra.Command { | |||||
| 365 | cmd := &cobra.Command{ | 365 | cmd := &cobra.Command{ | ||
| 366 | Use: "comment <repo> <number>", | 366 | Use: "comment <repo> <number>", | ||
| 367 | Short: "Comment on an issue", | 367 | Short: "Comment on an issue", | ||
| 368 | - | Long: "Add a Markdown comment (at most 10,000 characters; disallowed control characters are stripped).\n" + | 368 | + | Long: "Add a plain-text comment (at most 10,000 characters; disallowed control characters are stripped).\n" + |
| 369 | "-m - reads it from standard input. Needs the issue:write scope." + jsonIssueCommentHelp, | 369 | "-m - reads it from standard input. Needs the issue:write scope." + jsonIssueCommentHelp, | ||
| 370 | Args: cobra.ExactArgs(2), | 370 | Args: cobra.ExactArgs(2), | ||
| 371 | ValidArgsFunction: completeIssueRepoThenNumber(env), | 371 | ValidArgsFunction: completeIssueRepoThenNumber(env), | ||
M skills/ermite/CLI.md +2 -2
| @@ -70,8 +70,8 @@ Issues share the numbering of merge requests and must be enabled per repository: | |||
| 70 | 70 | | Command | Scope | Notes | | |
| 71 | 71 | |---|---|---| | |
| 72 | 72 | | `issue create <repo> --title T [--body TEXT\|-] [--body-file F\|-]` | `issue:write` | title of 120 characters max | | |
| 73 | - | | `issue list <repo> [--state open\|closed\|all] [--json]` | read access or `issue:write` | default `open` | | |
| 74 | - | | `issue show <repo> <n> [--json]` | read access or `issue:write` | issue and comments | | |
| 73 | + | | `issue list <repo> [--state open\|closed\|all] [--json]` | read access (public repository, or `repo:read` on a private one) | default `open`; `issue:write` alone does not grant reading | | |
| 74 | + | | `issue show <repo> <n> [--json]` | read access (public repository, or `repo:read` on a private one) | issue and comments; `issue:write` alone does not grant reading | | |
| 75 | 75 | | `issue comment <repo> <n> -m TEXT\|-` | `issue:write` | | | |
| 76 | 76 | | `issue close <repo> <n>` / `issue reopen <repo> <n>` | `issue:write` | | | |
| 77 | 77 | ||
| @@ -70,8 +70,8 @@ Issues share the numbering of merge requests and must be enabled per repository: | |||||
| 70 | | Command | Scope | Notes | | 70 | | Command | Scope | Notes | | ||
| 71 | |---|---|---| | 71 | |---|---|---| | ||
| 72 | | `issue create <repo> --title T [--body TEXT\|-] [--body-file F\|-]` | `issue:write` | title of 120 characters max | | 72 | | `issue create <repo> --title T [--body TEXT\|-] [--body-file F\|-]` | `issue:write` | title of 120 characters max | | ||
| 73 | - | | `issue list <repo> [--state open\|closed\|all] [--json]` | read access or `issue:write` | default `open` | | 73 | + | | `issue list <repo> [--state open\|closed\|all] [--json]` | read access (public repository, or `repo:read` on a private one) | default `open`; `issue:write` alone does not grant reading | |
| 74 | - | | `issue show <repo> <n> [--json]` | read access or `issue:write` | issue and comments | | 74 | + | | `issue show <repo> <n> [--json]` | read access (public repository, or `repo:read` on a private one) | issue and comments; `issue:write` alone does not grant reading | |
| 75 | | `issue comment <repo> <n> -m TEXT\|-` | `issue:write` | | | 75 | | `issue comment <repo> <n> -m TEXT\|-` | `issue:write` | | | ||
| 76 | | `issue close <repo> <n>` / `issue reopen <repo> <n>` | `issue:write` | | | 76 | | `issue close <repo> <n>` / `issue reopen <repo> <n>` | `issue:write` | | | ||
| 77 | 77 | ||||