typograph-editor-documentation
    Preparing search index...

    Release Notes - Version 1.0.0-20261104

    Editing together no longer shows a moment offline every quarter of an hour.

    • No more "offline" blink while editing together. The collaboration server renews every connection about every 15 minutes. The editor showed that as offline for a second each time; it now stays connected through a renewal, and says offline only when the connection does not come back within five seconds.
    • The others stay in view through a renewal. A window renewing its connection showed the people with it as gone until each of them moved again, up to 15 seconds. It now keeps showing them.
    • A closed template stays closed. A connection that dropped just before the template was closed could connect again in the background a second later. It no longer does.

    For hosts: status in typograph_collaboration_changed and collaboration.status() stay connected during a renewal. editing.writer still follows the connection itself (see Collaboration).

    • TYP-1391: the provider's onClose (handed to its socket, which calls it before it reports the status) marks a close with 4205 (Reset Connection) as a renewal; status() reports connected for up to RENEWAL_GRACE_MS while current_status stays honest for is_writer(). After destroy() the socket's connect() is a no-op, so the reconnect its onClose scheduled does nothing.
    • TYP-1397: HocuspocusProvider's onClose drops every other client from the awareness without a new clock, and y-protocols ignores the room's states at the clock it has. The editor lowers the clock of the clients the provider removed by one (only that origin), so the room's states apply as soon as it is back; the removals the provider sends then are older than the room's, and collab-service skips them. The provider drops the others before the editor hears the close code, so a removal-only change from the provider is handled a microtask later; on a renewal the dropped states are kept (kept_states, read through states()) until the room's next change, or for RENEWAL_GRACE_MS.