Why
A display is a web page, so a page it wants to show is a frame: the link card of the first sidecar app renders the page it names in a sandboxed iframe, live and usable. That is as far as a frame goes. A page decides whether it may be embedded (X-Frame-Options, frame-ancestors), a growing share of the web says no, a blocked frame is indistinguishable from a loaded one from the parent, and nothing behind a login was ever reachable that way. Today the answer beside the frame is an anchor that opens the page in a browser tab — outside the screen the person is talking to.
Shape
A browser running as a cell: a page rendered where the colony runs (a headless Chromium in the cell's I/O half, the way the voice cell holds the audio), its picture streamed into the display card, pointer and keys routed back the same way. The screen then shows any page — not only the ones that permit it, and including a session somebody logged into once. What the cell owns: the browser process, a viewport per card, the stream (a frame sequence over the cell's own listener, like web and voice own their ports), input events in, and the cell's own contract for the display card (display section kind: link gains an interactive form, or a seventh kind). What it must never do: put a frame into a message.
Prior art to read before the first line: neko, Kasm, browserless — all three solve the streaming; none is a cell.
Not now
It waits on the sidecar display section being in daily use on an instance (#604), because that is what tells which pages a person actually asks for and how many of them refuse a frame. Roadmap entry under Later.
Why
A display is a web page, so a page it wants to show is a frame: the
linkcard of the first sidecar app renders the page it names in a sandboxed iframe, live and usable. That is as far as a frame goes. A page decides whether it may be embedded (X-Frame-Options,frame-ancestors), a growing share of the web says no, a blocked frame is indistinguishable from a loaded one from the parent, and nothing behind a login was ever reachable that way. Today the answer beside the frame is an anchor that opens the page in a browser tab — outside the screen the person is talking to.Shape
A browser running as a cell: a page rendered where the colony runs (a headless Chromium in the cell's I/O half, the way the
voicecell holds the audio), its picture streamed into the display card, pointer and keys routed back the same way. The screen then shows any page — not only the ones that permit it, and including a session somebody logged into once. What the cell owns: the browser process, a viewport per card, the stream (a frame sequence over the cell's own listener, likewebandvoiceown their ports), input events in, and the cell's own contract for the display card (displaysectionkind: linkgains aninteractiveform, or a seventh kind). What it must never do: put a frame into a message.Prior art to read before the first line: neko, Kasm, browserless — all three solve the streaming; none is a cell.
Not now
It waits on the sidecar
displaysection being in daily use on an instance (#604), because that is what tells which pages a person actually asks for and how many of them refuse a frame. Roadmap entry under Later.