Hello everyone,
I've developed a native TeamTalk client for macOS that's fully accessible with VoiceOver. As you know, the official TeamTalk version on Mac is completely inaccessible, so I built an alternative from scratch.
What's included:
- Full keyboard navigation β Cmd+1/2/3/4 for UI areas, F5 for nickname, F6 for status, etc.
- VoiceOver announcements for all events (users joining/leaving, private messages, file transfers)
- Native macOS interface (no ugly web wrapper)
- Saved server management with quick access
- Browse and join channels with optional password protection
- Private messaging with full conversation history
- File sharing with visual progress indicators
- User administration (for server admins)
- Advanced microphone settings:
- Enable/disable audio processing
- Noise suppression (Noise Gate) or Expander with fine-tuned controls over threshold, attack, hold, and release
- Peak limiter with auto or manual mode
- Multiple presets for different use cases
- Professional-grade tools to eliminate feedback and control voice peaks
Current state:
The app is functional and ready to use. The interface is clean, accessible and looks good β because using VoiceOver doesn't mean the UI has to be ugly.
Important:
The app is unsigned (no budget for Apple Developer Program yet). You'll need to authorize it in macOS security settings.
Interested?
If anyone wants to test, I can set up a beta distribution system. Your feedback on features, keyboard shortcuts, or missing functionality is welcome!
Comments
file uploads not working
hi all. I'm using tt accessible beta 10. it works incredibly for the most part. except, you can't actually upload files. or if it does, it doesn't show progress. hope this can get fixed in a future beta.
made some of my own changes
Hi everyone.
I've made some of my own changes to ttaccessible, and will likely submit a pull request later today.
You can now use your own sounds packs and also delete the defaults.
Additionally, I added command shift I as an import command, as well as options for .tt files, .tt links and the default configuration file.
File uploads have also been fixed and work properly.
Nice
Sweet. Please include that in a release
Quick status update
Hi everyone,
Quick note on what's happening behind the scenes:
mainin the meantime so his work and Quinton's don't block each other.Thanks everyone for the reports, suggestions and contributions.
pull request
Hi all.
I didn't forget, I promise.
I just want to make sure everything works properly as it should before submitting it since there were a couple of other things I found as well.
Re: pull request
Hey, no need to justify yourself at all! Contributing to a project like this is already incredibly generous of you β please take all the time you need. There's no deadline, and a PR with extra fixes bundled in will be even more valuable. Really appreciate the work, whenever it lands.
an update
So, I was able to run some tests with my own server, and will for sure be submitting the request. I think everyone will be pleased with these changes.
Weird security thingy
Hi. Just so everyone knows, on the latest version of the client, I always have to enter my computer password twice for some reason. Can that be fixed?
re: weird security thingy
I thought about looking into this, but wanted to make this past commit before doing so.
Yes, I do hope this can somehow be looked into.
I did submit the pull request last night.
TTAccessible beta 11
TTAccessible beta 11 is out
Big release this time, mostly thanks to a generous contribution from Quinton Williams.
Download ttaccessible-1.0.0-beta.11-2.zip (release page)
Import & export servers
.ttfiles and pastedtt://links from a single import picker. Imported entries preserve server name, auth info, join channel, and channel password..ttimport (prompts to replace)..ttfile or copy as att://link. For connected servers, you can optionally include the current channel and password..tt/tt://link, the app prompts to save it before disconnect or quit.Custom sound packs
.wavfiles as a custom sound pack β Preferences > Sounds > New Pack.Per-user voice & media controls
User accounts (admin)
.ttfile, copy astt://, or delete it.File transfers
Audio UI
Keychain prompts (build 2)
Matthew and Quinton both reported the double macOS password prompt on connect. The release zip has been refreshed with a fix that stores both server and channel passwords in a single keychain item, so future betas should only ever ask once per saved server. Existing saved servers migrate transparently on the first connect after upgrading. If you already downloaded beta 11, grab the build 2 zip from the link above.
Thanks
Big thanks to Quinton for the contribution, and to everyone testing the betas and sending feedback. Keep it coming.
playing files over a tt channel?
Hello.
I recently found need of joining teamtalk servers again and am glad this is an option because using the IOS app on the mac is only a half solution.
Question: Can I play .mp3 files through a channel like on the windows tt client?
So far everything is solid
Solid beta so far. I was able to import a sound pack and it worked great.
Can you make it so home and end will put sliders to the top and bottom respectively, and page up and down can adjust by 5 or 10 percent? Let the user decide.
a couple of other things
Hi all.
I suppose I or anyone else can do this, but I do think there should be a toolbar on the left side of the screen containing a transmit, "go to settings" and maybe something else to make it easier for those who don't know to use f2 to disconnect.
ALso, a global speech option so you don't need to individually set every event to use apple script, system speech or macos announcement would be nice.
It really is a shame the dev wants $1000+ to obtain a proper license in order to distribute this properly.
Push to talk
Is there a way we could have push to talk access? I donβt like voice activation because it can activate the worst times. Also, the server that I use uses a transmit queue system so I donβt know when itβs my turn to talk because I donβt get a beep like I would with the normal app
sorting channels
Can you add a setting to sort channels so the ones that have the most people are at the top, then the second largest, third, etc? Also, I had to restart my computer cause folks couldn't hear me on the server. Turns out the app was changing my input device. After restarting my computer things are acting normal.
ttaccessible 1.0.0-beta.12 is available
What's new in beta 12
Stream an audio file to a channel
A new option in the Shortcuts menu (or Cmd+Option+S) lets you stream an MP3 or other audio file into the current channel. A dedicated player window opens with playback position, play/pause, stop, and a broadcast volume slider. Keyboard shortcuts inside the window: Space toggles play/pause, Escape stops, left/right arrow seeks by 5 seconds, up/down arrow adjusts the broadcast volume.
Fewer keychain prompts on saved servers
The store now prefers the modern data-protection keychain and remembers which saved servers have already had their legacy entries migrated, so it does not keep re-asking on every launch. A few prompts may still appear once during the transition, then they stop.
Accessible slider navigation
Every slider in the app now responds to Home (jump to minimum), End (jump to maximum), and Page Up / Page Down (move by 10% of the range, or 10 seconds on the media player's position slider). Left and right arrow keep their usual single-step behavior.
Sort channels by user count
Preferences > Connection has a new "Sort channels by" picker: either alphabetically (default) or by total user count, with the most populated channels listed first.
Other fixes
Download
ttaccessible-1.0.0-beta.12-1.zip
Full release page: https://github.com/math65/ttaccessible/releases/tag/v1.0.0-beta.12
beta 12
Holy damn,
once again, amazing stuff. I love it!
Particularly the part about streaming media files to channels. You even managed to do two things better than the official client: seeking in media files is possible, and streaming a media file that is literally 3 gb actually worked. The official client struggles the minute the file is about 200 mbytes, if that, on top of causing nasty amounts of lag for no good reason, if it manages playback at all, rather than freezing beyond fixing and needing a good ol' kick to the backside.
TTAccessible 1.0.0 β notarized, no more Gatekeeper warning
After months of beta and a ton of priceless feedback from this community, TTAccessible 1.0.0 is out β and it's the first release notarized by Apple. No more "Open Anyway" dance, no more workaround on first launch. Just download, drag, double-click.
Download ttaccessible-1.0.0-13.zip (release page)
What's new since beta 12
How to install
ttaccessible.appinto your/Applicationsfolder.Thank you
This release would not exist without all of you. Special thanks to Johann, Casey, Quinton, Matthew, Dan, Herbie, Joseph, John, Dominique, Zach, crayton, kaillewaille, Nut β and everyone who tested, reported bugs, suggested features, or just dropped a kind word. Keep the feedback coming, 1.0 is only the start of the post-beta journey.
crash on running 1.0.0
Hi,
first off, thank you once again for develping this. This client is simply amazing. I wish it would be on iOS too, but I'm not sure if apple will allow that given the licensing of the stupid sdk and the official teamtalk client... Anyway.
I ran the latest binary here, got a few warnings like, that was downloaded from the internet and so on, which are fine. But then TTAccessible first complained about my login being invalid somehow so I filled in the password field again. It then connected. I quite the app though, to see if launching it again would then give me access without this error, just to be sure.
And I got, this. Nasty piece of work, and the worst is, I'm not sure how good the report will be given this was on a release and not a debug binary, and I seemingly cannot reproduce it again. But here you go anyway:
https://paste.xogium.me/4N.txt
Mean sigsegv.
another idea
This might be a stretch, but could there be an option to have it so everyone can sound like they are in a 3d space? I like using those types of settings so I can focus easier on who's speaking instead of everyone generally coming straight down the middle.
1.0.1 released β fixes quit crash and mic transmit
Quick update: 1.0.1 is out on GitHub.
What's fixed
Direct download (.zip)
Future releases
The in-app updater is now in place, so you'll be notified directly inside the app when a new version is available. From now on, I won't be posting per-release announcements here on AppleVis β the changelog will live on the GitHub releases page.
I'll still post here for bigger news (major versions, new features, calls for feedback, etc.).
Thanks again to everyone testing!
Good stuff here!
Amazing stuff! I just got version 1.0.1 of this app released. One minor thing I noticed was that the stream file shortcut, command+option+s, no longer works, and was also not present in the shortcuts/stream menu. Streaming a URL works though. If I knoew howto add this back locally I would do so, but unfortunately I've no idea how to add hotkeys to menu items that are nested inside submenus.
Re: Good stuff here!
Thanks for the precise report β you pinpointed the cause exactly. SwiftUI does not register
keyboardShortcutaccelerators on items nested inside aMenu(...)within aCommandMenu: the submenu is built lazily, so AppKit can't find the items on key-down and doesn't render the shortcut hint next to them either. I flattened the Stream submenu back into the top level of the Shortcuts menu in 1.0.2 β β₯βS streams a file, β₯βU streams a URL, and β₯β. stops streaming.The in-app updater should also pick it up automatically since the X.Y.Z bumped.
Download ttaccessible-1.0.2-16.zip (release page)
Thank you!
Thank you so much for the quick fix! I'll grab the latest version post haist.
ttaccessible 1.1.3 β Sparkle auto-updates (finally) work
Sorry for the release spam β and good news
A barrage of releases just landed this afternoon: 1.1.0, 1.1.1, 1.1.2, 1.1.3 in the span of a few hours. Apologies for the noise in your update checks.
Short story: I migrated ttaccessible to Sparkle so it can update itself from now on. Sparkle is the standard auto-updater for Mac apps, but wiring it up cleanly inside a sandboxed app is genuinely tricky β especially the parts that only show their problems when you sign + notarize + actually ship a real release. Each iteration was "ship β find what's still not quite right β ship the fix." I'll spare you the internals.
The good news: as of 1.1.3, the full Sparkle path is verified end-to-end in production. From here on, new versions install themselves on a click β no more drag-into-Applications dance.
What's actually new
If you're on 1.1.0, 1.1.1, or 1.1.2
Install 1.1.3 manually this one last time β Sparkle in those versions can't pull this update down for you (that's exactly the bug 1.1.2 fixes, so 1.1.0/1.1.1 are stuck, and 1.1.2 β 1.1.3 is the first run where it actually works). After this manual install, you're done with manual updates forever.
If you're on 1.0.2 or earlier, the old in-app updater will offer 1.1.3 β install it manually the same way you always have.
Download
ttaccessible-1.1.3-20.zip (release page)
Thanks for your patience β and to Casey for the auto-away patch.
Push-to-talk added in ttaccessible 1.2.0
What's new in 1.2.0
Push-to-talk is here. Pick any global hotkey in Preferences > Audio > Push-to-Talk, hold it to transmit, release to stop. It works from any app β Safari, Mail, whatever β without granting Accessibility access, because it uses the same low-level hotkey API as the system menu shortcuts. Big thanks to techluver for the original request on this forum.
An optional sound on press/release is on by default (you can turn it off in the same panel).
How to get it
If you're on 1.1.3, the in-app updater (Sparkle) will offer 1.2.0 within a day. To grab it now: ttaccessible > Check for updatesβ¦
If you're on an older build, download manually:
ttaccessible-1.2.0-21.zip (release page)
As always β signed and notarized, no Gatekeeper warning. Feedback welcome here.
Thank you
Thank you so much for designing this. I miss my old Chat sites and I havenβt really been able to participate. But I can now.