Skip to content

Releases: bilalyazicioglu/tincan-cli

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 10 Oct 12:01
bde881d

What's Changed

New Contributors

Full Changelog: v0.3.3...v0.3.4

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 02 Oct 10:05
8d47968

What's Changed

Full Changelog: v0.3.2...v0.3.3

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 26 Sep 10:36
6a77315

What's Changed

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 23 Sep 11:11
b72ea8d

What's Changed

  • docs: address disclosure, and a Homebrew step that stops failing quietly by @bilalyazicioglu in #137
  • docs: publish on crates.io, and say so by @bilalyazicioglu in #138
  • feat: AFK presence indicators, rail overflow indicators, and /help & /clear commands (v0.3.1) by @bilalyazicioglu in #140
  • feat(ui): add rail overflow indicator and /help & /clear commands (closes #91) by @bilalyazicioglu in #141
  • Release v0.3.1: AFK presence indicators, rail overflow indicators, and /help & /clear commands by @bilalyazicioglu in #142

Full Changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 21:41
59a08ca

What's Changed

Full Changelog: v0.2.4...v0.3.0

v0.2.4 — Speakable Room Identities, Homebrew Tap & NPM Distribution

Choose a tag to compare

@bilalyazicioglu bilalyazicioglu released this 14 Sep 16:34
91062c1

What's Changed in v0.2.4

🎙️ Speakable Room Identities (#118, #130)

  • Rooms can now be created and joined using memorable room names and human-speakable passphrases derived from a BIP-39 wordlist:
    tincan host myroom
    tincan join myroom
  • Deterministically derives cryptographic identities, encryption keys, and room discovery without central servers.
  • Full backward compatibility with raw 63-character invite codes.

🍺 Official Homebrew Tap Distribution (#131)

  • Added official Homebrew Tap at bilalyazicioglu/homebrew-tap:
    brew tap bilalyazicioglu/tap && brew install tincan
  • Instant 1-second installation with prebuilt native binaries for Apple Silicon macOS and Linux x86_64, with automated shell completion registration.

📦 Official NPM Package Distribution (#131)

  • Added official tincan-cli npm package:
    npm install -g tincan-cli
    # or instant run without installing:
    npx tincan-cli host

🤖 Release Automation

  • Added automated Homebrew tap updating step to release workflow on new tag publishes.

📖 Documentation

  • Added English developer blog translation alongside the Turkish post.

Full Changelog: v0.2.3...v0.2.4

v0.2.3 — Screen Studio Demo, Graceful Endpoint Shutdown & Shell Auto-Completions

Choose a tag to compare

@bilalyazicioglu bilalyazicioglu released this 11 Sep 23:14
ea236cf

What's Changed in v0.2.3

🎬 Screen Studio-Style Animated Demo (#126)

  • Added an automated, deterministic generator (demo_video) rendering a Screen Studio-style animated walkthrough with dynamic camera zoom, pan, and TrueColor metallic palettes.
  • Integrated into the repository as assets/demo.mp4 and a 2-pass palette-optimized assets/demo.gif (featured in README.md).

🔌 Graceful Endpoint Shutdown (#112)

  • Ensured that iroh Endpoint::close() is called across every session exit path: coordinator command loop exit, client reader disconnection, and client writer termination or transport errors.
  • Completely eliminates ERROR iroh::socket: Endpoint dropped without calling Endpoint::close. Aborting ungracefully warnings on session endings.
  • Added comprehensive end-to-end integration test verifying that guests receive closing notices and cleanly close endpoints upon coordinator exit.

🐚 Shell Auto-Completions (#61)

  • Added tincan completions <shell> subcommand powered by clap_complete, generating auto-completion scripts for:
    • Bash: source <(tincan completions bash)
    • Zsh: tincan completions zsh > ~/.zfunc/_tincan
    • Fish: tincan completions fish > ~/.config/fish/completions/tincan.fish
    • PowerShell: tincan completions powershell | Out-String | Invoke-Expression

🧹 Maintenance & Issue Cleanups

  • Verified and closed lingering resolved issues #107 and #108.
  • Bumped version to 0.2.3.

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 16:12
0bcf0cc

What's Changed

Full Changelog: v0.2.1...v0.2.2

v0.2.1 — Chat Scrollback & Per-Person Volume

Choose a tag to compare

@github-actions github-actions released this 09 Sep 11:27
a539f88

A major usability update bringing Chat Scrollback and Per-Person Volume Control to the terminal interface.


💬 Chat Scrollback & Navigation (#90, #53)

Older messages are no longer lost once the chat pane fills up:

  • Deep conversation history: Keeps up to 5,000 lines in memory by default (configurable via history_limit in ~/.config/tincan/config.toml).
  • Mouse Wheel & Trackpad scrolling: Smooth two-finger scrolling directly on the chat pane and settings menu (with safe terminal mouse capture restoration on exit).
  • Vim-style navigation: Ctrl+K / Alt+K to scroll up, Ctrl+J / Alt+J to scroll down (plain j and k remain safe for drafting messages).
  • Smooth keyboard scrolling: Ctrl+↑ / ↓, Shift+↑ / ↓, and Alt+↑ / ↓ for precise 2-line scrolling.
  • Page navigation: PageUp / PageDown for 15-line scrolling, End or Esc to instantly snap back to the latest message.
  • Visual indicators:
    • Vertical scrollbar on the right margin (▲ █ ░ ▼) showing your exact position in history.
    • Floating pill badge indicating unread messages arrived while scrolling ([ ▼ +N new · Esc to bottom ]) or history state ([ 📜 History · Esc to bottom ]).
    • Beginning of conversation separator line when reaching the earliest loaded message.
  • Anchor locking: The viewport stays pinned on what you are reading when new messages arrive while scrolled up.

🔊 Per-Person Volume Control & Silence (#116, #119)

Manage loud or quiet participants individually:

  • Individual volume tuning: Select someone on the roster with ↑ / ↓ and use ← / → to adjust their playback volume from 0% to 200%.
  • Individual silence: Press Ctrl+K on a selected peer to silence them completely without muting yourself or deafening the entire room.
  • Sound feedback: Silencing and un-silencing someone borrows the familiar ear chime an octave apart.

🛠️ Documentation & Infrastructure

  • UI screenshot assets rendered automatically from the layout engine.
  • Clarified install script instructions and dropped obsolete Intel macOS runner (#113).

📦 Installation

curl -fsSL https://raw.githubusercontent.com/bilalyazicioglu/tincan-cli/main/install.sh | sh

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 11:58
5133944

The interface is rebuilt, and the audio path learned to survive real hardware.

41 commits since v0.1.2, closing twenty-five issues.

The interface

Rebuilt around a token layer: colour, glyph and motion decisions live in one place, with fallbacks for NO_COLOR, ASCII-only terminals, reduced motion and light backgrounds. Nothing is boxed and there are no emoji. The palette is metal — a brown tin ground, brass for the string and the invite code, and the two greens copper actually turns.

The divider between the room and the talk is the connection itself: taut when every peer is reached directly, sagging through a relay, fraying when audio drops, with a pulse that travels along it at the speed of the round trip. Latency is something you see rather than read. Before anyone has joined, the chat pane draws that link full size — two cans, the string with the measured round trip written over it, and your invite code underneath.

Names are set flush against their messages and the column is only as wide as the names actually talking; a run of messages from one person keeps a single heading; the transcript hangs from the bottom of the pane. A channel written in since you last looked turns brass.

Audio

  • An adjustable noise floor, drawn on the live meter and moved with ←/→, or measured from the room with a — the program listens for a second and a half and sets it just above what it heard. Remembered per microphone, because a laptop microphone and a headset do not share a noise floor.
  • A microphone test that records and then plays back, rather than monitoring live. On a laptop the microphone can hear the speakers, and anything that opens both at once closes an acoustic loop between them. Live monitoring is still available under m for headphones, and cuts itself off if it starts feeding back.
  • A level meter per person, computed from frames the playback loop already decodes. No protocol change.
  • Sounds that mean something: muting and deafening are the same gesture an octave apart, up for open and down for closed; a message is the only single note in a set of two-note gestures; and the keyboard can be given a voice, seeded per key so the same key always sounds the same.
  • Runtime device switching, and cubic resampling so any sample rate works — 16 kHz Bluetooth headsets included.

Fixes

  • A remembered microphone that is no longer plugged in used to take all audio down with it and drop the session to text only. It now falls back to the default and says which device it was looking for.
  • A speaker whose sample rate changed under the program never came back — the meter kept moving and nothing came out. Streams are now reopened against the device's current configuration.
  • The dropout warning never cleared once it appeared, because the underrun counter only climbs.
  • The interface redrew fifty times a second whenever audio was running.
  • Log output printed on top of the interface. It now goes to a file, with one line at exit naming it.
  • Ctrl+C at the invite-code prompt left the endpoint open, and then hung forever waiting on a keypress that was never coming.
  • Settings refused a device with a reason that resampling had made obsolete.

Platforms

Prebuilt binaries for macOS (Apple Silicon) and Linux x86_64. Anywhere else — Intel Macs, arm64 Linux, Windows — install.sh falls back to building from source, which needs a Rust toolchain and a few minutes.

Intel macOS was in this release's matrix until it wasn't: the job sat queued on a macos-13 runner for fourteen hours without ever starting, and the release job waits on all of them. Cross-compiling it from an Apple Silicon runner is #114. Windows is untested (#105) and arm64 Linux is not built yet (#106).

Known limits

No scrollback yet (#90), the rail silently drops rows that do not fit (#91), link quality is reported for the mesh as a whole rather than per peer (#93), and the noise gate silences your room between sentences but does not clean up your voice during them (#97).