Skip to content

v0.1.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 12:52
· 34 commits to refs/heads/main since this release
c664a74

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 at ghcr.io/dpro-at/tel-agent-api and ghcr.io/dpro-at/tel-agent-web
  • Linux: the .deb / .rpm assets 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