Skip to content

Releases: knowtific/helppuff

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:50

Added

  • Your own domain: helppuff domain add chat.acme.com points 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 domain shows its state, helppuff domain remove detaches it, and helppuff deploy attaches it again if it
    went missing. Saved as cloudflare.domain in helppuff.json.
  • Errors say why, to you. When a request is yours (the dashboard, the
    CLI's admin key, an API key, helppuff chat and helppuff ask), an error
    now carries reason (what went wrong, e.g. "The model API refused the key
    (HTTP 401)") and hint (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.error with its code, status and reason) and every background
    job that failed (crawls, webhooks, calendar syncs, live chat relays,
    summaries), as JSON lines at error or warn in helppuff logs and
    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 with needs_confirmation unless --yes is 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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 07:15

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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 02:15

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: the workers.dev name, R2 and connecting this machine.

Fixed

  • helppuff destroy now deletes the R2 bucket of photos and files too, after
    emptying it; before, the bucket was left behind. Without --yes it asks
    first; with --yes it deletes it; --keep-data keeps it.

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 10:59

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

Choose a tag to compare

@github-actions github-actions released this 14 Oct 09:23

Fixed

  • Settings → Integrations now opens from the booking calendar sync link before
    the date picker has been saved.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 06:21
a43408d

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 files command:
    • 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, and GET/POST /jobs/:id/files,
      DELETE /jobs/:id/files/:fileId in 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.
  • helppuff deploy makes 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 doctor checks it.

Upgrading

  • Run helppuff upgrade: it adds the files table 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 of wrangler login) needs Workers R2 Storage ›
    Edit
    too.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:20

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.poweredBy can 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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 11:58

Changed

  • Added helppuff logs to tail a deployed Worker's Cloudflare logs using the
    existing Wrangler login or Cloudflare API token; --json captures 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:write scope; PATCH /leads/:id takes tags.

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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 11:34

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.
    The echo test backend answers /booking with 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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 03:43

Added: email notifications and webhooks in your own format

  • Email notifications. An admin connects the email service you already
    use, once, in Settings → Notifications (or helppuff 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, PUT and DELETE /notifications/email and
    POST /notifications/email/test (scopes webhooks:read/write).
  • One D1 migration (15), additive: four columns on webhooks and the
    email_service table. helppuff upgrade applies 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 in logo/.
  • 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.