Repository navigation
v0.1.0
Pre-release
Pre-release
·
34 commits
to refs/heads/main
since this release
Tel-Agent 0.1.0 is the first tagged release: the self-hosted web chat, the nine text channels, the settings screens, five interface languages (English, German, Arabic, Spanish, Dutch), Docker images for amd64 and arm64, and self-contained Linux packages (deb and rpm). The phone is not in this release; it is Milestone 11.
Install
- Docker:
docker compose -f docker-compose.release.yml up— images atghcr.io/dpro-at/tel-agent-apiandghcr.io/dpro-at/tel-agent-web - Linux: the
.deb/.rpmassets below
Everything merged since the first commit
- docs: rules for several coding agents working side by side (#212)
- Fix package discovery, and ship the source tree in the Linux package (#211)
- The product speaks five languages: Spanish and Dutch join the committed tier (#209)
- i18n(nl): remove leftover .i18n_settings_patch.json (#210)
- Ship the API in the bundled Python itself - a venv cannot be staged (#207)
- Resolve nfpm's config with envsubst - it does not expand env vars in paths (#203)
- Finish the Dutch settings.json - the last 215 keys (#202)
- Bring Spanish to 100%: the 17 missing screens, and 4 drifted files (#200)
- i18n(nl): translate settings.json (#199)
- web/public is optional: guarantee it in the image, skip it in the package (#198)
- i18n(nl): translate apps.json (#196)
- Remove contributors section from README (#197)
- Do not set NODE_ENV=production over npm ci in the packages workflow (#195)
- i18n(nl): translate connectors.json (#194)
- i18n(nl): translate campaigns.json (#193)
- Linux packages: deb and rpm that carry their own runtimes (#179)
- i18n(nl): translate health.json (#192)
- i18n(nl): translate backup.json (#191)
- i18n(nl): translate web.json (#190)
- i18n(nl): translate screens.json (#189)
- i18n(nl): translate update.json (#188)
- i18n(nl): translate editor.json (#187)
- i18n(nl): translate usage.json (#186)
- i18n(nl): translate notifications.json (#185)
- i18n(nl): translate consent.json (#184)
- i18n(nl): translate catalogue.json (#183)
- i18n(nl): translate live.json (#182)
- i18n(nl): translate conversations.json (#181)
- i18n(nl): translate rules.json (#180)
- i18n(nl): translate contacts.json (#178)
- i18n(nl): translate shell.json (#177)
- i18n(nl): translate knowledge.json (#176)
- i18n(nl): translate assistants.json (#175)
- i18n(nl): translate home.json (#174)
- i18n(nl): translate new-password.json (#173)
- i18n(nl): translate numbers.json (#172)
- i18n(nl): translate call-detail.json (#171)
- i18n(nl): translate calls.json (#170)
- i18n(nl): translate calendar.json (#169)
- i18n(nl): translate install.json (#168)
- i18n(nl): translate invite.json (#167)
- i18n(nl): translate workspace-new.json (#166)
- i18n(nl): translate incoming-call.json (#165)
- i18n(nl): translate key-sign-in.json (#164)
- i18n(nl): translate forgot.json (#163)
- Publish the Docker images on release - the pull half of Milestone 10 (#162)
- feat(locales): add Spanish translation for usage.json (#161)
- i18n(nl): translate code.json (#160)
- i18n(nl): translate widget.json (#159)
- feat(locales): add Spanish translation for screens.json (#158)
- feat(locales): add Spanish translation for web.json (#157)
- Remove the two drawings under the wired Integrations panels (#156)
- A Test button for the calendar, beside the credentials it proves (#155)
- Wire the calendar screen: the free-busy week, honestly stated (#154)
- An empty ENCRYPTION_KEY reads as absent, the same answer everywhere (#152)
- Format under the current ruff release (#153)
- feat(locales): add Spanish translation for health.json (#151)
- Show the people who built it: a contributors grid in the README (#150)
- check_calendar over CalDAV: the last built-in tool (#149)
- locales: translate widget.json to Spanish (#140)
- feat(locales): add Spanish translation for numbers.json (#147)
- The LiveKit/SIP transport's audio bridge, and the SDK binding that needs the line (#148)
- Deepgram and ElevenLabs, behind the voice interfaces (#146)
- A phone call is a conversation in the same archive (#145)
- Milestone 11's voice core: the two interfaces and the turn that stops on barge-in (#144)
- Run the routing rules: pass, block, or the agent, on every live channel (#143)
- Ship the one-command install: Docker Compose for the API and the dashboard (#142)
- Fire the three silent webhook events, and let the operator send a test (#141)
- Give the agent its tools: knowledge search, HTTP, notify, transfer, end (#139)
- Tell the operator when a channel stops answering (#138)
- Answer on Discord and Slack (#137)
- Answer on Messenger and Instagram (#136)
- Answer on WhatsApp (#135)
- Answer the mailbox (#134)
- Answer on Telegram (#133)
- Serve the MCP endpoint the token was minted for (#132)
- Let a colleague answer the customer themselves (#131)
- Stop rebuilding the same schema five hundred times a run (#130)
- Make `ts_ms` mean what the column says it means (#129)
- Say in the document how to get in, and what each group of routes is for (#128)
- Stop handing a web visitor's resume handle to every reader of the archive (#127)
- Wire the live screen to the conversations that are actually happening (#126)
- Let a colleague put words in the agent's mouth, mid-conversation (#125)
- Wire the API tab to the two backends it has been waiting for (#124)
- Give the machine paths a credential of their own (#123)
- Keep the port on this machine unless somebody says otherwise (#120)
- Send the webhooks the registry has only been recording (#121)
- Give every response its security headers, without unembedding the widget (#119)
- Put a ceiling on one request, so a mistake cannot stop the process (#118)
- Serve the first run, so a fresh installation can be set up at all (#122)
- Move the model's key out of .env and onto a screen (#116)
- feat(locales): complete Spanish translation for settings.json (#115)
- feat(locales): translate rules.json into Spanish (#114)
- Take a message: the agent asks for a name and a reason, and stores both (#113)
- Let the agent take a message, and the widget come back to its thread (#112)
- Put a model behind the reply (#111)
- Bring Spanish level with the screens it translates (#110)
- Stop the sign-in screen calling a broken server a wrong password (#109)
- feat(locales): translate catalogue.json into Spanish (#93)
- feat(locales): translate contact.json into Spanish (#92)
- Show the real channels, and let the sidebar collapse (#107)
- Stop the web chat stream leaking a database connection (#108)
- Give the catalogue real services (#106)
- Give the home screen real data (#105)
- Tell somebody when a stranger starts a web chat (#104)
- Answer, one word at a time (#103)
- Put the widget's settings on a screen, and fix what clicking it revealed (#102)
- Serve the widget, and fix the guard that could never have matched (#101)
- Let somebody switch the widget on without opening a database (#100)
- Ask Google about the visitor, and know when not to trust the answer (#99)
- Refuse the wrong page, then put a ceiling on the right one (#98)
- Let an assistant be given tools (#97)
- Let the operator's own software hear what happened (#96)
- Give the assistant something to read (#95)
- Give assistants a table, and put the screen on it (#94)
- Draft the release notes from the pull requests (#91)
- Keep the phonebook, and let the archive screens say who called (#90)
- Keep the routing rules, and draw them as the three columns (#89)
- Keep the numbers registry, and put it on its screen (#88)
- Show the archive's phone calls on the calls screens (#87)
- Show the transcript archive on the conversations screen (#86)
- Read the transcript archive, and search it (#85)
- Pin what the public invite prefix contains (#84)
- Format the invites migration, which is failing CI on main (#83)
- Invitations: a one-time link, and the invitee names themselves (#82)
- Finish the wired panels: a real mail test, and the account's language (#81)
- Give the identity models their endpoints and wire members and workspaces (#80)
- Wire the apps screen's installed tab to the extension registry (#79)
- Wire the profile tab and the recording announcement to the API (#78)
- Give the six declared notification messages their callers (#77)
- Separate the machine's words from the translated sentence (#76)
- feat(locales): translate conversations.json into Spanish (#74)
- feat(locales): translate assistants.json into Spanish (#75)
- Wire the first four screens to the server (#73)
- P7 — backup, verification, retention and restore (#72)
- P6 — the recent log behind the health screen (#71)
- The extension contract, with the core inside it (#70)
- feat(locales): translate notifications.json into Spanish (#69)
- feat(locales): translate new-password.json into Spanish (#68)
- Notifications: the two kinds of thing the screen distinguishes (#67)
- Make the closed-by-default walk see the routes, and prove it (#63)
- deps: bound FastAPI, and declare Starlette in its own right (#64)
- ci(locales): fold the placeholder check into CI, and drop the second workflow (#62)
- fix(tests): guard the route-table walk, as its sibling already did (#61)
- A settings store, so no screen ever writes to .env (#60)
- Backend foundations (#59)
- docs: an entry file per coding agent, and two wider logo strips (#58)
- feat(locales): translate forgot.json into Spanish (#54)
- feat(locales): translate key-sign-in.json into Spanish (#55)
- feat(locales): translate shell.json into Spanish (#56)
- ci(locales): check placeholders on every locale, and run both checks in CI (#57)
- feat(locales): translate code.json into Italian (#53)
- feat(locales): translate code.json into Spanish (#52)
- chore: make the lint gate real, and drop the orphan root lockfile (#51)
- docs: add issue templates, AGENTS.md, and Cursor rules (#50)
- feat(locales): translate new-password.json into French (#49)
- docs(brand): drop the three compliance badges that overclaim (#47)
- feat(scripts): report translation coverage, and open the project to more languages (#28)
- docs(skill): make the setup step survive a first-time contributor (#27)
- docs(contributing): ship the contributor workflow as a skill (#26)
- Add the logo as vector assets and a brand sheet, under the current name (#3)
- Close the sign-in flow, the dead links, and the lettered brand marks (#2)
- Carry D-017 through every document that still ordered the phone first (#1)
Full changelog: https://github.com/Dpro-at/Tel-Agent/commits/v0.1.0