Repository navigation
Releases: knowtific/helppuff
Release list
v0.10.0
Added
- Your own domain:
helppuff domain add chat.acme.compoints a domain on
your Cloudflare account at the assistant (Cloudflare makes the DNS record
and certificate). The embed snippet, demo page and dashboard links use it;
workers.dev keeps working.helppuff domainshows its state,helppuff domain removedetaches it, andhelppuff deployattaches it again if it
went missing. Saved ascloudflare.domainin helppuff.json. - Errors say why, to you. When a request is yours (the dashboard, the
CLI's admin key, an API key,helppuff chatandhelppuff ask), an error
now carriesreason(what went wrong, e.g. "The model API refused the key
(HTTP 401)") andhint(what to do, e.g.helppuff secret set …). The CLI
and the dashboard show them. Visitors still get only the safe message. - Failures are always logged, on every deployment: every failed request
(request.errorwith its code, status and reason) and every background
job that failed (crawls, webhooks, calendar syncs, live chat relays,
summaries), as JSON lines aterrororwarninhelppuff logsand
Cloudflare's Observability. Before, these were only logged with
HELPPUFF_LOG=1. Still no message text, contact details or IP addresses. - The wiki has an FAQ, a full Troubleshooting guide (every error message and
code, logs), costs at 1,000, 5,000 and 10,000 messages a day for every
model and provider, and starter questions; the website has an FAQ section.
Changed
- Deleting a contact deletes everything about them: their conversations
(messages, files, labels, notes), callback requests, notes, tags, jobs and
appointments (upcoming ones are cancelled in the synced calendar first).
It is how you answer a "forget me" request. Before, the conversations
stayed unless the API was asked to erase them. - Every delete asks first and says it cannot be undone, in the
dashboard and the CLI. CLI deletes run without a terminal (or with
--json) stop withneeds_confirmationunless--yesis given, which is
now accepted by every command. - The Worker's own pages (the demo page) work on whatever domain it answers,
without a redeploy.
v0.9.4
Changed
- The README on npm is now the same as the one on GitHub (it had drifted into
a shorter, older version). - Both READMEs show an animated preview of setting HelpPuff up by asking Claude
Code, which plays in place on GitHub and npm. - Both READMEs link to a 4-minute tour of every feature on YouTube.
Fixed
- The README's "Built for AI agents" section linked to a section that did not
exist; it now points to "AI-agent first". - The widget's size is given as about 41 KB gzipped in all (a 6 KB loader,
then the 35 KB chat once the page is idle); it said 35 KB, leaving out the
loader.
v0.9.3
Added
- A 36-second video of setting HelpPuff up by asking Claude Code, in the README
and on the Getting Started page (it plays in place on the website). - Getting Started explains the few clicks a brand-new Cloudflare account needs
before the first deploy: theworkers.devname, R2 and connecting this machine.
Fixed
helppuff destroynow deletes the R2 bucket of photos and files too, after
emptying it; before, the bucket was left behind. Without--yesit asks
first; with--yesit deletes it;--keep-datakeeps it.
v0.9.2
Added
- Google Calendar bookings can opt out of automatic Google Meet links in
Settings → Bookings.
Changed
- Bookings explains that Cal.com and Calendly event types control their meeting
locations, and where to change them. - The website includes the Google tag for analytics.
v0.9.1
Fixed
- Settings → Integrations now opens from the booking calendar sync link before
the date picker has been saved.
v0.9.0
Added
- Photos and files, kept in your own Cloudflare R2 bucket (private; every
link is signed and expires). Both are off by default and turned on
separately, in Settings → Advanced → Photos and files or with the new
helppuff filescommand:- In the chat (
files.chat): visitors send photos and PDFs with a
paperclip next to the message box, only while a person has the chat
(live, the usual choice) or any time (always). Photos are made smaller
in the browser and lose their location data. The team sees them in the
conversation and the live chat, and as links on Telegram. The assistant
is told a file arrived but never opens it, unless the assistant sees
photos is on: then a Workers AI vision model (Llama 4 Scout by default)
describes each photo once and the assistant reads that. - On jobs (
files.jobs): a Files section on every job (drop or attach
photos, PDFs, Office documents, text, CSV, MP4/MOV), with the photos the
visitor sent in the job's conversation. Members attach and remove their
own.helppuff jobs attach|files|detach, andGET/POST /jobs/:id/files,
DELETE /jobs/:id/files/:fileIdin the API. - Limits on Settings → Advanced and in
helppuff.json: the largest file
from visitors and on jobs, files per chat, how long chat files are kept
(90 days; job files stay until removed), and
security.limits.uploadsPerIpPerHour.
- In the chat (
helppuff deploymakes the R2 bucket (knowtific-helppuff-<site>) whenever
the Cloudflare account has R2 on, so turning files on needs no redeploy.
Without R2 the deploy goes on, and says how to turn it on only when files
are on.helppuff doctorchecks it.
Upgrading
- Run
helppuff upgrade: it adds thefilestable to the database and makes
the bucket. To use files, R2 must be turned on once for the Cloudflare
account (the dashboard asks a person to accept the plan, free up to 10 GB).
An API token (instead ofwrangler login) needs Workers R2 Storage ›
Edit too.
v0.8.0
Changed
-
The prompt editor says how to use a tool (
{{ tool_name }}), with a link to
the Tools page in the docs. -
On Prompt & tools, the Summary & labels step is now AI post-processing:
one switch, with what it does listed under it (summary, labels, contact
details typed in the chat, questions to answer) and a Learn more link. -
The Settings group that held Live chat, Labels, Contact tags, Custom fields,
Jobs and Notifications is now called Inbox & CRM (it was "Team", easy to
mix up with Team & security). -
"Powered by HelpPuff" is always shown in the widget.
widget.poweredBy
no longer hides or replaces it: older configs with it still load, and the
value is ignored.strings.poweredBycan still translate it, as long as the
translation says HelpPuff. The credit now links to the HelpPuff website. -
The README, the docs and the website lead with setting HelpPuff up through
your AI agent: make a folder, open your agent in it, paste one prompt, then
ask it for any change. The shared instructions handle a new, empty folder
(they work in it and ask for the website address). The CLI is still there
if you'd rather run it yourself.
Fixed
- "You're back with the assistant" no longer appears twice in a conversation.
Reopening a chat the assistant already had (one that only went quiet) adds
no notice, and two hand-backs at once (two clicks, or the dashboard and
Telegram) write one.
v0.7.0
Changed
- Added
helppuff logsto tail a deployed Worker's Cloudflare logs using the
existing Wrangler login or Cloudflare API token;--jsoncaptures a short,
bounded set of events for scripts. - Team invites open from an Add team member button. After an invite, the form
closes and the one-time sign-in link appears in a separate copyable box. - Contacts now use multiple site-defined tags, editable in Settings → Contact
tags and on each contact, with tag and untagged filters on the Contacts list.
Existing non-default statuses become clearly named legacy tags; the old
status API and CSV column remain for integrations. Job outcomes no longer
change a person's old status field. - Prompt & tools now has a Summary switch. It turns automatic summaries, AI
labels and questions to answer off or on for new chats; after-chat tools and
webhooks continue, and manual summaries remain available. - New Save what the visitor says tools are created under After the chat.
They read the finished visitor transcript, save stated values as conversation
attributes, then pass them to after-chat requests and webhooks. Existing
extract tools keep their current timing until moved. - Knowledge groups Website pages directly beneath the site-learning status in
one card. - Dashboard password and secret fields have an eye button to show or hide what
you typed, including sign-in, account setup, and settings. Account setup also
shows an approximate password strength indicator as you type. - Settings → Custom fields lists conversation and contact attribute keys and
the job field editor. Admins can add, rename and remove keys; changes to
conversation and contact keys update their saved records. - Dashboard pages are quieter. How-tos moved to the wiki behind a link (API
keys' examples, Team & security's commands, why upgrades run in the
terminal, creating jobs from other tools, webhook signatures), and
secondary details fold away (the quote questions' preview, Turnstile's
hostnames, an integration's key). Integrations you have not connected are a
row with Connect. Questions to answer shows only when there is one,
highlighted like Before you go live. - Jobs board: while you drag, every column shows where the job can go, and
the column under the pointer opens a space exactly where it will land,
including between jobs in the same column. Cards slide out of the way and
into place (no motion with reduced motion turned on). - The public API (
/api/v1) can create, rename and delete contact tags
(/contact-tags) and custom fields (/attribute-definitions), with the
settings:writescope;PATCH /leads/:idtakestags.
Fixed
- Settings → Webhooks: the signing note is one line with a link. The wiki's
Webhooks page now has a worked signature example to test against, and
Node.js, Python and PHP receivers. - The new tool dialog puts Paste a curl and Fill it in below the tool
type choices, so the two decisions appear on separate rows. - Bookings shows a discovered external booking URL as the Booking page field's
value instead of placeholder text; keeping or editing it saves an explicit
link. - The dashboard tab keeps the yellow HelpPuff favicon after loading and while
showing a live notification count. - Home screen: Suggest from my site skips buttons already present by label
or action, including duplicates within a batch of suggestions, and avoids
repeating useful pages.
v0.6.1
Changed
- The playground shows the booking date picker: a Book a time shortcut
on the home screen and a Booking message button, booked in the page.
Theechotest backend answers/bookingwith the picker too. - New wiki page, The playground: its panel, and how a link to a setup
works (the whole setup is in the link; nothing is stored). - The widget's CSS variables and base styles are minified in the bundle
like the rest of its CSS: about 0.5 KB less to download.
Fixed
- Widget: a chat opened by the page itself (
data-open, such as the
dashboard's test chat) no longer moves focus into the chat. Focus stays
where the visitor has it; opening the chat yourself still moves it in. - Dashboard: Escape closes the account menu even before focus has moved
into it.
v0.6.0
Added: email notifications and webhooks in your own format
- Email notifications. An admin connects the email service you already
use, once, in Settings → Notifications (orhelppuff email set):
Resend, Postmark, SendGrid and Brevo are filled in from the address to
send from and the key; any other service works with its own request.
HelpPuff writes each email (a plain-text body, and an HTML one with
everything a visitor wrote escaped) and sends it with{{email.to}},
{{email.subject}},{{email.text}}and{{email.html}}. The key is
stored encrypted. Send me a test, pause and remove. - Everyone chooses their own emails, members too: new contact, hot lead
(with the AI's summary), callback request, a visitor wants a person, a live
chat nobody took, a chat given to me (only to that person), new job, new or
cancelled booking, and the AI budget used up (admins). Nothing is sent
until a person ticks it; someone removed from the team gets nothing more.
Settings → Notifications is there for everyone now, with live chat off too. - Webhooks in your own format. A webhook can send your own request
instead of the signed JSON, for a service that wants its own format
(Slack, a CRM, an SMS API): the method, headers (credentials stored
encrypted) and a body with{{event.type}}and{{data.…}}. Retries,
the delivery log and the X-HelpPuff-* signature work the same. In the
dashboard (Your own request),helppuff webhooks add … --header … --body …,helppuff webhooks set, and the API (format: "custom"). - The API:
GET,PUTandDELETE /notifications/emailand
POST /notifications/email/test(scopeswebhooks:read/write). - One D1 migration (15), additive: four columns on
webhooksand the
email_servicetable.helppuff upgradeapplies it.
Changed
- A new HelpPuff logo: a "p" whose bowl is a speech bubble and whose
tail ends in a small puff. It is the favicon of the website, the
playground and the dashboard (where the unread count sits on it, in your
site's colour), and is in the README. Sources, a one-colour version,
lockups and icons are inlogo/. - Dashboard: the logo sits beside your site's name at the top of the
sidebar and on the sign-in and setup pages. The person at the bottom of
the sidebar opens a menu: who is signed in and their role, Notifications,
the theme, help, and Sign out. - The website now gives the widget's size as about 35 KB gzipped, loaded
after the page. It used to say 6 KB (that is only the loader) and that
the rest loaded only when a visitor opened the chat, but it loads once
the page is idle. - New wiki page, Email notifications: an email for new or hot leads
through your own email service (Resend, Postmark or any send API), or for
any event through a webhook and n8n, Make or Zapier.
Fixed
- Dashboard: Export CSV downloads the file without leaving the page; a
failed export shows an error instead of replacing the dashboard (the
website's demo exports its sample contacts too). - Dashboard: the New job and appointment dialogs close with Escape, take
focus when they open and give it back when they close. - Dashboard: copy buttons no longer fail silently where the browser refuses
the clipboard: the text is selected to copy by hand. - Dashboard: the two Learn more links in Settings → Bookings opened a
broken page; they open the wiki. - Dashboard: the two-way toggles (like List/Board) no longer submit
the form they sit in.