1. That excellent post of Tantek Çelik’s, like all well–hyperlinked documents, lead me to a whole raft of great resources I hadn’t come across before:

    (In other news: I need to make a “dump tabs into new note dialog” browser )

  2. Cross-browser selection UI injection flow:

    1. Listen for mouseup on body
    2. When triggered, let s be window.getSelection()
    3. If s.isCollapsed === false, return
    4. Else, let r be s.getRangeAt(0)
    5. Create a new element e
    6. Call r.surroundContents(e)
    7. e.innerHTML and e.textContent now return useful values, and e’s coordinates can be used to inject UI into the page

    To resolve: what element should e be? Or more accurately, what display property should it have? Possibly inline-block (inline mucks up if selection is across block elements, block mucks up selections within text nodes)

    Turns out there are problems with r.surroundContent, namely that it does not handle partial element selections. See MDNs explanation and solution.
  3. Jovian Salak: Microphone's arrived. Now all set for #Nepal. Just need to encourage some creative juices in advance. Not sure how this is done though...

    Jovian Salak alternate solution: we throw a DIY pizza party with recitals of Half Caste, as a joint leaving party