Public: anyone can read this; the crew can change it.
A `.env.example` in a repository opens as the variables an app needs: name, example value and its comment per row #11109
Reviewed pull #11130 at its head: ticked .env.example, .env.sample and .env.template render as a table: name, example value (shown as — when empty), and the comment written above the line. Blank lines and # sections become group headings. Every cell is escaped and the table is drawn on the server.; A plain .env is never rendered as a table and keeps today's view. A value whose name looks secret (_KEY, _SECRET, _TOKEN, PASSWORD*) is shown as •••, even in an example file.; At most 500 rows, then one line N more not shown. ?view=source shows the raw text.; The terminal workspace opens it as the same table, with s for source.; test/render-env.test.ts covers parsing (quotes, export , inline #), masking, escaping, the cap and the plain .env exclusion. It is in the gate. Add docs/features/file-env.md and a line in docs/design/areas/render.md. design-lint is clean..
Intent: a person setting up an app sees what it needs at a glance. This matters most to a client who has never seen a dotenv file.
Done looks like:
.env.example,.env.sampleand.env.templaterender as a table: name, example value (shown as—when empty), and the comment written above the line. Blank lines and#sections become group headings. Every cell is escaped and the table is drawn on the server..envis never rendered as a table and keeps today's view. A value whose name looks secret (_KEY,_SECRET,_TOKEN,PASSWORD*) is shown as•••, even in an example file.N more not shown.?view=sourceshows the raw text.sfor source.export, inline#), masking, escaping, the cap and the plain.envexclusion. It is in the gate. Add docs/features/file-env.md and a line in docs/design/areas/render.md. design-lint is clean.Files: src/web/render/env.ts (new), src/web/render/kinds.ts, src/web/render/renderers.ts, src/tui/screens/workspace.ts, the test and the docs. Risk: rendering a real secret. Match only the three example names, and mask by name.