Open-source software in Tellop
Tellop includes open-source software. Where a licence asks us to share the source code, you can download it here.
The full list of licences is inside the app: in Settings, under About, Open source licences.
For Tellop 0.4.0, the version on the download page:
- Git 2.53.0, with Git LFS 3.7.1GPL-2.0 and MPL-2.0 · 8.9 MB
- The FFmpeg library inside Electron 43.1.0LGPL-2.1 or later · 61 MB
- Two libraries inside Prisma's tools: colored 3.0.0 and priority-queue 1.3.2MPL-2.0 · 0.07 MB
- pg_uuidv7 1.7.0MPL-2.0 · 0.02 MB
- Bun's CSS parser and five libraries inside the AI engineMPL-2.0 · 1.0 MB
- JavaScriptCore, WebKit and TinyCC, with everything needed to rebuild Tellop's AI engine with them (Bun 1.3.14)LGPL-2.0 and LGPL-2.1 · 524 MB
A correction to this archive's relinking steps
The README in this archive says to change the libraries' source first, then run relink-engine.sh. But before it builds anything, that script checks every file listed in SHA256SUMS, and it stops at a file that is changed or missing. So do these steps in Terminal, in this order:
Go to the archive's unpacked folder, the one that holds relink-engine.sh (for /path/to, write where that folder is). Before you change anything, check that its files are the ones we published. It prints one line for each file, thousands in all. The last line must end in OK. If a line says FAILED or WARNING, download the archive again and unpack it again:
cd /path/to/engine-89e502e3-tellop-source shasum -a 256 -c SHA256SUMSMake your changes to the libraries' source.
If you removed a file, delete its line. For each file you changed, run this in the same folder. For <file>, write the path of the file as SHA256SUMS writes it. Put the line it prints in SHA256SUMS, in place of the old line of that file:
shasum -a 256 <file>Then, in the same folder, run relink-engine.sh. For <work folder>, write the path of a folder of your own for it to work in (in quotes if the path has a space). The README and the top of relink-engine.sh say what it needs first, including the folder /opt/tellop-engine:
sh relink-engine.sh <work folder>
- fff's file finder library inside the AI engine, with xdiff and everything needed to rebuild it and put it in the engine (fff 0.9.4)LGPL-2.1 or later · 55 MB
Using your own FFmpeg build
You may replace the FFmpeg library inside Tellop with your own build of it, in your own copy of Tellop (the GNU Lesser General Public License version 2.1, section 6). Tellop opens such a copy only when every other file in it is what we published (apart from the signatures the steps below make again), the copy is signed as below, and you have turned it on. Do every step in Terminal: Finder can add files to the copy, and Tellop refuses a copy with any file added, removed or changed but that library.
Copy Tellop into a new, empty folder of your own, keeping the name Tellop.app, and give the folder, the copy and its library short names for the steps after. The folder here is an example (keep the quotes if you change it), and if your Tellop is in ~/Applications (the Applications folder in your home folder), write ~/Applications/Tellop.app for /Applications/Tellop.app here and in the next step. The find line deletes from the copy the .DS_Store files Finder leaves in any folder of Tellop you have opened (with Show Package Contents): your Tellop opens with them, but Tellop compares a modified copy with what we published, file by file, and refuses it with any file added:
DIR="$HOME/Desktop/Modified" mkdir -p "$DIR" ditto /Applications/Tellop.app "$DIR/Tellop.app" APP="$DIR/Tellop.app" find "$APP" -name .DS_Store -delete LIB="$APP/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib"Save the permissions Tellop is signed with (its entitlements). Tellop refuses a copy signed with any others:
codesign -d --entitlements - --xml /Applications/Tellop.app > "$DIR/entitlements.plist"Put your build of the library in place of the one Tellop ships. Its source and build steps are in the FFmpeg archive above:
cp /path/to/your/libffmpeg.dylib "$LIB"Sign the library, then the framework that holds it, then the app, in that order:
codesign --force --sign - "$LIB" codesign --force --sign - "$APP/Contents/Frameworks/Electron Framework.framework" codesign --force --sign - --options runtime --entitlements "$DIR/entitlements.plist" "$APP"Turn the copy on, after signing. The file this writes names your signed library, and Tellop opens a modified copy only while the two match. It is your Mac account's, so it covers every copy you open; delete it to turn this off. A copy we signed never reads it:
mkdir -p ~/Library/Application\ Support/Tellop shasum -a 256 "$LIB" | cut -c1-64 > ~/Library/Application\ Support/Tellop/modified-ffmpeg.sha256Quit Tellop if it is open (one Tellop runs at a time), clear the download mark the copy keeps from the original (macOS checks a marked app for Apple's approval, which a copy you signed yourself does not have), and open the copy. The first time the copy opens, macOS may ask for your Mac password so it can use what Tellop saved in your keychain.
xattr -dr com.apple.quarantine "$APP" open "$APP"
We do not sign or support a modified copy (Tellop's terms, section 17).
A modified copy does not update itself: Tellop still finds and downloads a new version, but the updater inside Tellop checks it against the copy's own signature and refuses it, so the update ends with “The update didn’t finish”. To move to a new version, delete your old copy, download Tellop again and repeat these steps. If the copy does not open, delete its folder and repeat these steps.