anchor.diff:        ("updateUrl" . "")
         ("versionName" . ""))))
   
  +(sera:-> buffer->tab-description ((or null buffer)) list)
   (defun buffer->tab-description (buffer)
     (when buffer
       `(("active" . ,(if (member buffer (mapcar #'active-buffer (alex:hash-table-values (windows *browser*))))
                          t nil))
         ("audible" . ,(not (webkit:webkit-web-view-is-muted (gtk-object buffer))))
  +      ("height" . ,(gdk:gdk-rectangle-height
  +                    (gtk:gtk-widget-get-allocation (gtk-object buffer))))
  +      ("width" . ,(gdk:gdk-rectangle-width
  +                   (gtk:gtk-widget-get-allocation (gtk-object buffer))))
  +      ("highlighted" . ,(eq buffer (active-buffer (current-window))))
  +      ("id" . ,(parse-integer (id buffer)))
  +      ("incognito" . ,(nosave-buffer-p buffer))
  +      ("lastAccessed" . ,(* 1000 (local-time:timestamp-to-unix (last-access buffer))))
  +      ("selected" . ,(eq buffer (active-buffer (current-window))))
  +      ("status" . ,(if (web-buffer-p buffer)
  +                       (case (slot-value buffer 'nyxt::load-status)
  +                         ((:finished :failed) "complete")
  +                         ((:unloaded :loading) "loading"))
  +                       "complete"))
  +      ;; TODO: Check "tabs" permission for those two
  +      ("title" . ,(title buffer))
  +      ("url" . ,(render-url (url buffer)))
  +
         ;; TODO: Make those meaningful:
         ("attention" . nil)
         ("autoDiscardable" . nil)
  
positive.code:     (json:encode-json-to-string
       (%tabs-query (json:decode-json-from-string (or query-object "{}"))))))
  
  (defun tabs-create (create-properties)
    (let* ((properties (json:decode-json-from-string (or create-properties "{}")))
           (parent-buffer (when (alex:assoc-value properties :opener-tab-id)
  
negative.code:       ("pinned" . nil)
        ("sessionId" . 0)
        ("successorTabId" . 0)
        ("windowId" . 0))))
  
  (sera:-> tabs-query ((or null string)) (values string &optional))
  (defun tabs-query (query-object)
    (flet ((%tabs-query (query-object)
             (let ((buffer-descriptions (mapcar #'buffer->tab-description (buffer-list))))
  