Subscribe to change, the event textinput actually emits
Three examples subscribed to submit. textinput emits one event, change;
submit is only a code comment (textinput.go:122), never a wire name.
They passed the executable example checker because sub accepts any word
and never validates it against the type -- the one class of error that
checker cannot catch, and the reason it is worth fixing in the protocol.
Also drops the describe line counts from two pages. Those move as types
are added, and the shape of the output is the part that stays true.
46df4f1
Add the Building from Source page
Says which build a reader actually wants: the mew distribution is the
assembled product, and this repository is the MIT-only base it is built
on. Someone here to use a desktop is in the wrong place, and the page
says so early.
Records that -tags mew in this repo is not that build. It compiles, and
it leaves the host with no editor type registered at all -- 33 types
instead of 34 -- because the mew-backed editor lives in mew's tree and
the tag only removes the placeholder.
make increment is called out as a maintainer step rather than something
to run when building for yourself.
19233cf
Add the Introspection page
What describe streams and why the wiki keeps deferring to it. The five
statement kinds with a real line of each, what of= and enum= and the
virtual flag carry, and the two properties the scheme rests on: unknown
statement kinds are ignored, so hosts may add and clients may ignore; and
encode-decode-encode is byte identical, which is what lets a tool read a
live host or a local registry without being able to tell them apart.
787a315
Add the Transports and Security page
Written from the application developer's side: the four endpoint forms and
where the endpoint comes from, what trust-on-first-use does on a first
connect and on a changed fingerprint, the client identity generated on
first use, and the two files and five environment variables a client
touches.
Host configuration is deliberately absent -- lockdown, the authorization
store, prompt policy and the serve-side Config are the host environment's
business and belong with that section once it is further developed.
Every claim checked against the code rather than taken from the design
doc: the endpoint forms and port from client/endpoint.go, the fingerprint
messages verbatim from verifyPin, the config directory rule from
ConfigDir, and the Python and C transport support from their interop
tests.
d83f024
Add the Properties and Values page
The value syntax the other protocol pages point at: the four lexical
shapes, the three flag states, strings and their escapes, enums, colors,
and the left-to-right application order.
The through-line is that nothing is coerced. caption=hello and
layout="vbox" are both errors, in opposite directions, and that is the
point -- a value's shape is part of what it means, so the wrong one is
reported where the mistake is.
Also records why a hex color must be quoted: # begins a comment, so
fg=#1e1e2e discards the rest of the line and the parser runs out of
statement looking for the value.
46c43df
Add the Object Model page
What an object is, the trinket/virtual split and why virtual types take no
common properties, the single id space shared by both, the three ways to
address an object, containment, and the top-level types.
Documents what destroy actually does: it forgets the destroyed object's own
key and nothing else. The subtree leaves the display with its parent, but
every key surfaced below it still resolves and still accepts set, silently,
against objects that can no longer be drawn.
6e88d7a
Say what the missing-separator error actually is
It was described as failing oddly. It does not: the second new lands where
a property name belongs, so the parser reads it as one and the type rejects
it by that name. The message is exact, and knowing why is what lets a reader
recognise it as a missing separator.
e85f04f
Add the Protocol Overview page
The anchor for the protocol section: the eight verbs plus the bare
surfacing statement, how correlation keys work, and what a reply carries.
Documents two things that only show up by trying them. Keys last for the
whole connection, not the request, which is what makes the build-then-drive
patterns work at all. And a dotted path names every level -- w.pn.q, never
w.q -- so a container built without a correlation key puts everything
beneath it out of reach for good.
b00d6fd
Merge branch 'master' of github.com:phroun/kittytk.wiki
b978a4b
Add the Events page
Every trinket page was restating the same two rules -- nothing arrives
until you sub, and your own changes do not echo -- so they now have one
home. Adds what only shows up when you go looking: command flows without
any subscription, sub takes several event names or none (meaning all),
sub all targets every trinket, and sub does not check the event name
against the type, so a typo subscribes successfully and delivers nothing.
b038fe6
Drop the Desktop see-also links, and quote after="file"
The desktop is not on the wire protocol and is not going to be, so the
wiki -- which documents the wire -- has nothing to say about it. The three
See also links pointed at a page that should not exist.
after is a string property, so after=file is rejected with "expected a
quoted string". The registration's own tip showed it unquoted, which is
where this came from; that is fixed at the source, so the generated table
now carries the right spelling too.
47d9a72
Updated _Sidebar (markdown)
e222242
MDIPane: prev is now prior
3e3803d
Add MDIPane and Dock pages; generate the item and option tables
55c8406
Say what menubar is, and stop implying menu takes common properties
3296c39
Application, StatusBar, ScrollArea
Filling the three names the reorganised index introduced.
Application is the odd one: the connection itself, seen from the display's
side. It is never built with `new` -- the handshake reports the id of the
instance that already exists, and a client addresses it with
`set <appID> ...`. It takes no children, has no generated table because it
is not a registered trinket type, and has three properties. Two of them
matter beyond themselves: multiwindow gates whether a client may create
type="normal" windows at all (and earns a free Window menu with
Tile/Cascade), and name is authorization-gated -- the name a connection
was approved under is the only one it may keep, unless the display marked
its trust as name-independent.
StatusBar is three types, statusbar/section/span, and top-level chrome
like a menu bar rather than a window child. Its `align` is three-valued
where the common one is seven, so align=middle is rejected; spans take
precedence over a section's own text.
ScrollArea holds one content trinket, and `resizable` decides whether
content re-wraps to the viewport or scrolls sideways.
50 examples run clean against the real registry, 6 deliberate error demos,
8 structural skeletons. 21 of 34 registered types now carry a block.
017fce1
Updated _Sidebar (markdown)
8de97f4
Updated _Sidebar (markdown)
9751ed4
Updated _Sidebar (markdown)
c4180be
Updated _Sidebar (markdown)
5365fec