ascii-chat 0.14.5 frames your face, lets a browser host the call, and queues media live

1 hour ago

ascii-chat is video chat in your terminal. In version 0.14.5, the terminal and browser apps share far more. Session screens, microphone processing and rendering preferences now run through the same C code, compiled to WebAssembly for the browser. On top of that come Face Follow, browser-hosted calls, and live playlists.

Ask about this presentation

Chapters

  1. 0:00ascii-chat 0.14.5
  2. 0:22Face Follow
  3. 0:44Live media and playlists
  4. 1:05A browser can host the call
  5. 1:27Same keys and mic pipeline everywhere
  6. 1:46Fresher frames, steadier audio
  7. 2:09Upgrade WebRTC peers together
  8. 2:31Builds and packages
  9. 2:54Upgrading
Show transcript
  1. ascii-chat is video chat in your terminal. In version 0.14.5, the terminal and browser apps share far more. Session screens, microphone processing and rendering preferences now run through the same C code, compiled to WebAssembly for the browser. On top of that come Face Follow, browser-hosted calls, and live playlists.

    Slide text
    ascii-chat 0.14.5 / release
    ascii-chat 0.14.5

    Frames your face, lets a browser host the call, and queues media live

    The terminal and browser apps now run much more of the same C code, compiled to WebAssembly for the browser.
    ascii-chat rendering a face as ASCII art with Face Follow on
  2. Face Follow zooms and pans around a face before the image is turned into ASCII. Here is the full frame. And here it is with Face Follow on, which is also what your peers receive. It holds briefly when it loses you, then widens back out instead of jumping to a bystander. It's off by default. Turn it on with the face follow flag, or in browser settings.

    Slide text
    ascii-chat 0.14.5 / face follow

    Face Follow keeps you framed before the image becomes ASCII

    Full camera frame rendered as ASCII, face small in the middle
    full frame
    The same frame with Face Follow on, zoomed in around the face
    --face-follow
    Red square: the opt-in --face-follow-debug outline. Clip: OpenCV faceocc2.
  3. In the terminal app, you can now change what you're showing without restarting a session. Press O to open a file or URL, or paste or drop a path into the terminal. V reads the clipboard, and the angle brackets step through a playlist. On the command line, repeat the file and URL flags to build the same list, and add loop to repeat it.

    Slide text
    ascii-chat 0.14.5 / live media

    Open and queue media without restarting the session

    o open a file or URL v read the clipboard < > previous / next item [ switch media and camera Space pause
    $ ascii-chat mirror \
        --file "first video.mp4" \
        --url "https://example.com/second.webm" \
        --file "third.mp4"
    Repeated --file and --url form one ordered playlist. --loop repeats all of it.
  4. Creating a discovery session in the browser now starts a real host. It accepts WebRTC peers, combines their video, sends ASCII frames back, and leaves each person's own microphone out of their audio mix. When the host leaves, a successor chosen from measured participant data takes over, and terminal and browser peers reconnect.

    Slide text
    ascii-chat 0.14.5 / discovery

    A browser tab can now host the call

    Participant
    joins over WebRTC
    Participant
    joins over WebRTC
    camera + mic →

    ← ASCII frames
    + audio mix
    Browser host
    C compiled to WebAssembly
    • registers the discovery session
    • accepts WebRTC peers
    • composites their video
    • mixes audio without your own mic
    Host leaves → a successor picked from measured participant data takes over, and peers reconnect and resume media.
  5. Both apps now share the same session screens. Question mark opens help, right bracket opens the status and log overlay, and slash searches the logs, in the terminal or in the browser. Microphones share one C processor before Opus encoding, and each side keeps its own echo cancellation.

    Slide text
    ascii-chat 0.14.5 / shared session

    The terminal and the browser canvas answer the same keys

    ?
    help
    ]
    status and log overlay
    /
    search the logs
    Native or browser mic
    →
    One shared C audio processor
    →
    Opus
  6. If your terminal fell behind the camera, it now catches up. On terminals that answer its probe, old frames are skipped and the newest one is drawn, and the FPS counter only counts fresh frames. A blocked terminal no longer stops incoming audio. Hosts render each viewer's own color, palette and frame rate. And half-block mode lost its doubled and cropped geometry.

    Slide text
    ascii-chat 0.14.5 / fixes

    A slow terminal now gets the newest frame

    frames
    Skips stale frames on terminals that answer its probe. FPS counts only fresh ones.
    audio
    A blocked terminal no longer stops incoming audio.
    per viewer
    Hosts render each viewer's own color, palette and frame rate.
    half-block
    Doubled and cropped client geometry fixed.
  7. If you call over WebRTC, upgrade both ends together, because the peer-security handshake changed. Plain TCP and WebSocket default to ACIP encryption. Secure WebSockets and WebRTC use TLS or DTLS, and add ACIP when you ask for it or set a password. And key with no-encrypt still verifies identity.

    Slide text
    ascii-chat 0.14.5 / security

    Upgrade WebRTC endpoints together

    The peer-security handshake changed.
    transport protection by default
    TCP, WebSocket ACIP encryption
    WSS, WebRTC TLS or DTLS. ACIP added by explicit options or a password.
    --key --no-encrypt still verifies identity.
  8. Linux packages ship fully static. The amd64 and arm64 builds use musl, with no shared-library dependencies, and macOS and Windows link their third-party libraries statically. Building from source now needs CMake 3.30, up from 3.28. The libasciichat version stays at 0.3.0.

    Slide text
    ascii-chat 0.14.5 / builds

    Linux builds ship fully static

    Linux
    amd64 and arm64, static musl, no shared-library dependencies
    macOS and Windows
    third-party libraries linked statically, OS libraries shared
    From source: CMake 3.30
    up from 3.28, still Clang and Ninja
    libasciichat 0.3.0
    library version unchanged
  9. Download the package for your platform from the release page. For a portable archive, extract it and run ascii-chat from its bin folder. Streaming-site URLs still need yt-dlp. Wait only if a WebRTC peer you call can't upgrade at the same time. Otherwise, 0.14.5 frames your face, lets a browser host the call, and queues media live.

    Slide text
    ascii-chat 0.14.5 / upgrade

    Download 0.14.5 for your platform

    .deb .rpm .pkg .msi .zip .tar.gz .sh
    $ ./ascii-chat --version
    $ ./ascii-chat server
    Streaming-site URLs need yt-dlp installed.
    Wait if a WebRTC peer you call can't upgrade at the same time.
    github.com/zfogg/ascii-chat/releases/tag/v0.14.5

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️