summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/cloud9.md22
-rw-r--r--docs/config.md36
2 files changed, 54 insertions, 4 deletions
diff --git a/docs/cloud9.md b/docs/cloud9.md
new file mode 100644
index 00000000..db547afc
--- /dev/null
+++ b/docs/cloud9.md
@@ -0,0 +1,22 @@
+# cloud9 integration
+
+The sibling `../cloud9` package owns the base 9P2000 wire format, client and server
+connections, and TCP/Unix/QUIC transports. `build.zig.zon` uses the local package
+path so both checkouts can be developed together.
+
+`src/9p.zig` remains the adapter between cloud9 requests and Pardes filesystem
+operations. Mounting, Unix namespace discovery and permissions, the editor event
+loop, connection limits, and exported tree policy remain here. `src/9p_quic.zig`
+selects the existing `pardes-9p` ALPN for cloud9's optional OpenSSL transport.
+The snapshot client and standalone protocol/GPIO tests import the same module.
+The separate `05-zig-p4` build also supplies cloud9 for the GPIO firmware entry.
+
+Run `zig build 9p-test` for the filesystem adapter and
+`zig build 9p-io-test -Dquic=true` for native transport/client integration. Run cloud9's `zig build test`,
+`transport-test`, `quic-test -Dquic=true`, `fuzz`, and `differential` steps for the
+shared implementation. See cloud9's `docs/validation.md` for recorded runs and
+known test-environment limits.
+
+Invalid framing now terminates a server connection. Cloud9 also checks reply
+counts and reserves tags until flush completion. Client metadata is slightly
+larger to track those reservations, and its bounds tests reflect that fixed cost.
diff --git a/docs/config.md b/docs/config.md
index 79a5e631..ff960aac 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -25,15 +25,16 @@ which `Config` reports as `no per-user config path`.
`+Config` pane. It reports the startup path and every live config-like value:
theme, colors, focus tint, syntax weight, wrapping, tag position, debug mode, the requested shell and the
executable actually resolved at the last spawn, requested/effective GUI font
-and size, tagline scale, panel transition,
+and size, tagline scale, window opacity, panel transition,
scene effects, hover delay, platform, native-image support, and (on SDL) whether
the executable uses live-built shaders or the paired prebuilt shader snapshot.
Platform-dependent rows say `unsupported` instead of looking like an off or
-empty supported setting. The four fields of `config.Runtime.Capabilities` gate
+empty supported setting. The five fields of `config.Runtime.Capabilities` gate
them and are stated once as plain data in `builtins.capabilities`:
`font_picker` is the SDL GUI and
native macOS only, `scene_shaders` the same two, `panel_transitions` every
-hosted shell, and `tagline_font_size` everything but the TTY and the board. So
+hosted shell, `window_opacity` the SDL GUI only, and `tagline_font_size`
+everything but the TTY and the board. So
the TTY reports Font, TaglineSize and the scene shaders as unsupported; the
browser reports Font, panel transitions and the scene shaders as unsupported,
and its TaglineSize row reads `82% (build-time only)` — tagline font size is
@@ -75,11 +76,12 @@ Wrap
A line matches a builtin whose name takes NO argument only as that whole word:
`Kill` runs, `Kill something` does not. A builtin that takes one
(`takes_arg` in `src/builtins.zig`, or a `settings` row whose action is
-`shell`, `theme`, `font` or `tagline_size` in `config.Runtime.settings`) takes
+`shell`, `theme`, `font`, `tagline_size` or `window_opacity` in `config.Runtime.settings`) takes
everything after the name as the argument. On a native build that is `Theme`,
`ThemeFile`, `Font`, `TaglineSize`, `Shell`, `Save`, `Restore`, `Attach`,
`Mount`, `Unmount`, `Find`, `Grep`, `Rename`, `WsSymbols`, `Look`, `Exec`,
`Msg` and `EffectCode`.
+The SDL GUI also has `WindowOpacity`, which takes one argument.
(`Peek`, `Poke`, `Hexdump` and `Gpio` take one too, but they exist only where
`builtins.Board.enabled` holds, and that build has no config file.)
@@ -116,6 +118,32 @@ the current value. A `FocusTint` line in a fresh startup configuration disables
the tint; a `SyntaxBold` line enables the stronger keyword weight. Those two
appearance controls leave focus, selections and editing behavior unchanged.
+`WindowOpacity <percent>` controls the opacity of everything in the SDL window
+except text and the cursor, which stay fully opaque. Use `WindowOpacity 85`
+to see the desktop through the editor, or `WindowOpacity 100` to restore full
+opacity (the default). The argument must be a whole number from
+0 through 100; missing or invalid values
+leave the setting unchanged. At zero only text and the cursor remain visible.
+Add the command to `init` to persist it.
+
+The same opacity applies to editor and embedded terminal backgrounds, UI
+chrome, borders, scrollbars, gutters, and images. Overlapping non-text drawing
+does not make those areas more opaque. Regular text, syntax colors, tagline
+text, terminal glyphs, and the cursor keep their normal opacity. This does
+not blend foreground colors into their cell backgrounds. The TTY
+and other non-SDL hosts do not emulate this effect; their `Config` report says
+`WindowOpacity: unsupported`.
+
+On native Wayland, Pardes uses an alpha-capable transparent surface. It does
+not use whole-window opacity protocols such as `wp_alpha_modifier_v1`, because
+those would also fade the text. Presentation uses the existing GPU offscreen
+renderer followed by a readback and SDL renderer upload per presented frame,
+which adds rendering cost. Other SDL drivers can report background transparency
+as unsupported unless their rendering configuration is alpha-capable.
+If the rendering backend cannot apply the request, Pardes reports the error
+and keeps the last successfully applied opacity. `Config` reports the
+percentage and marks a request as pending until the SDL host handles it.
+
## Crash records
A panic appends to `crashes` in that same directory, beside `init`, and only