Skip to content

Releases: AeteX/buddyxp

v0.1.3 — Sounds, Nudge, and Typing Indicator

Choose a tag to compare

@tawhid-rahman-aetex tawhid-rahman-aetex released this 10 Oct 03:47

BuddyChat XP now sounds like a real 2007 IM client, because it is one —
down to the animated pencil bobbing next to "Buddy is typing" and the
MSN-style nudge that shakes the whole window.

This release adds a full IM-era sound kit, all synthesized on the fly
with the Web Audio API. No audio files, no external dependencies, no
licensing questions. Every note, every whoosh, every buzz is generated
from oscillators and white noise at the moment it plays.

Highlights

  • Six synthesized sounds. Login chime (MSN-style rising arpeggio),
    door open whoosh when starting a chat, door close thud when clearing
    one, subtle send blip, AIM-style ding when the first token arrives,
    and a low-frequency buzz for the nudge.

  • The Nudge button. Does what MSN nudges did in 2004 — shakes the
    whole window and plays a buzzing rumble. CSS keyframe animation in
    modern browsers, JavaScript-driven shake loop in IE8/IE9 so the
    effect works on real XP machines.

  • AIM-style typing indicator. While waiting for the first token,
    the bot message slot shows an animated pencil bobbing back and forth
    next to "Buddy is typing" and three pulsing dots. As soon as the
    first token arrives, the indicator is replaced by the streamed reply
    and the ding plays.

  • Sound On / Sound Off toggle in the toolbar. Setting persists
    across reloads in localStorage under buddyChatXp.sound.

  • Autoplay-aware. Browsers block audio until the first user
    interaction, so the login chime is queued and fires on your first
    click. Everything after that plays immediately.

What's in the toolbar now

The toolbar has grown to six buttons: New Chat, Nudge, Test
Connection
, About, Help, and the new Sound toggle.

IE8 and IE9

IE8/IE9 don't have the Web Audio API, so sounds are silently skipped.
The nudge visual still works via the JavaScript fallback loop, the
typing indicator renders as static text with dots, and the sound
toggle still functions so the label stays consistent. The IE pipeline
remains fully usable, just quieter.

Also in this release

  • New "Sounds & Effects" section on the landing page with an event
    table, nudge notes, typing indicator description, autoplay
    explanation, and IE8 caveats
  • Landing page's model install section expanded with a Bonsai size
    comparison table — 27B, 8B, and 4B side by side with RAM
    requirements and hardware guidance
  • Added an alternative-model example (unsloth/Qwen3-4B-GGUF:Q4_0)
    and a second option (bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M)
    for users who want something other than Bonsai
  • Version bumped to 0.1.3 in the About dialog, status bar, sidebar
    product mark, and README

Breaking changes

None. Every existing setting, conversation, and memory fact loads
without modification. The sound preference is a new key; sound is on
by default.

Requirements

  • llama.cpp running as an OpenAI-compatible server, or an API key for
    a hosted provider
  • Python 3, Python 2, or Node.js on the machine serving the files
  • Any of: modern browser, MyPal, Firefox 3.5+, Chrome 4+ (IE8/IE9 for
    Local only, no sound)

Install

Windows (PowerShell):

irm https://aetex.is-a.dev/buddyxp/install.ps1 | iex

macOS / Linux:

curl -fsSL https://aetex.is-a.dev/buddyxp/install.sh | sh

Then run buddyxp.

If you're upgrading from v0.1.2, just re-run the installer. Your
settings, conversations, and memory survive. Click anywhere on the
page after it loads and you'll hear the login chime.

See the README for the full
sound documentation, the nudge notes, and the IE8 caveats.

Sound event table

Event Sound Style
First page load Login chime MSN-style three-note rising arpeggio (E5 → G5 → C6)
New chat / load chat Door open Rising whoosh with a soft click
Clear chat / delete chat Door close Falling whoosh with a low thud
Send a message Send blip Subtle rising two-tone
First token arrives AIM ding Two-tone up (D5 → A5 → D6) with overtones
Nudge button Nudge buzz Low-frequency square-wave rumble with vibrato

License

MIT © 2025 AeteX Interactive

v0.1.2 — Hosted API Providers

Choose a tag to compare

@tawhid-rahman-aetex tawhid-rahman-aetex released this 06 Oct 15:08

BuddyChat XP can now talk to hosted models, not just your local
llama.cpp server.

This release adds a Provider dropdown to the Connection pane. Pick a
hosted API, paste your key, and chat — the same retro XP interface, the
same memory and history features, now backed by OpenAI, Groq,
OpenRouter, or any OpenAI-compatible endpoint you point it at.

Highlights

  • Eight built-in providers. Local (llama.cpp), OpenAI, OpenRouter,
    Groq, Together, DeepSeek, Mistral, and Custom. The Custom option
    takes any OpenAI-compatible URL — self-hosted vLLM, LocalAI, a
    company gateway, a personal proxy.

  • Per-provider configuration. Your choice of provider, API key, and
    model name are all stored separately. Switching between Local and
    OpenRouter keeps both configurations intact. Switch back and
    everything restores.

  • Smart request headers. Local requests keep using
    Content-Type: text/plain to avoid a CORS preflight. Online requests
    switch to application/json with an Authorization: Bearer header.
    OpenRouter also gets HTTP-Referer and X-Title so the app shows
    up in their rankings.

  • Better error messages. The Test button now distinguishes between
    a bad API key (HTTP 401/403) and an unreachable endpoint, and tells
    you which provider it was checking.

The provider table

Provider Endpoint Default model
Local (llama.cpp) http://localhost:8080/v1 (whatever llama serve loads)
OpenAI https://api.openai.com/v1 gpt-4o-mini
OpenRouter https://openrouter.ai/api/v1 openai/gpt-4o-mini
Groq https://api.groq.com/openai/v1 llama-3.3-70b-versatile
Together https://api.together.xyz/v1 meta-llama/Llama-3.3-70B-Instruct-Turbo
DeepSeek https://api.deepseek.com/v1 deepseek-chat
Mistral https://api.mistral.ai/v1 mistral-small-latest
Custom (any URL) (any model name)

Security note about API keys

API keys are stored in your browser's localStorage on the same origin
as the page. They are not encrypted. Anyone with access to your
browser profile or dev tools can read them.

This is fine on a personal machine. It is not fine on a shared computer,
a public kiosk, or a machine you don't fully control. The UI shows a red
warning under the API Key field when an online provider is active.

To remove a saved key, clear the field and blur it.

Internet Explorer 8 and 9

Online providers are not available in ie.html. IE8/IE9's
XDomainRequest cannot send Authorization headers, so authenticated
cross-origin requests are impossible without a proxy. The Provider
dropdown in IE mode shows only Local (llama.cpp).

The IE pipeline continues to work perfectly with a local model. If you
want the retro XP experience with hosted models, use the modern page.

Also in this release

  • Migrated settings shape: the old v1 server field is auto-migrated
    to a new localServer key on first load. Existing users lose
    nothing.
  • XP.getServer() renamed to XP.getEndpoint(). If you were calling
    the old function from outside the app, switch to the new one.
  • Corrected llama.cpp repository links from ggerganov/llama.cpp to
    ggml-org/llama.cpp throughout the README and landing page.
  • New "Online Models" section on the landing page, new "Online API
    providers" section in the README.

Breaking changes

XP.getServer() has been removed. Use XP.getEndpoint() instead.

The localStorage settings shape has changed to store per-provider
keys and model names. The v1 shape is auto-migrated on first load, so
existing users do not need to do anything.

Requirements

  • llama.cpp running as an OpenAI-compatible server (for Local), or an
    API key for whichever hosted provider you want to use
  • Python 3, Python 2, or Node.js on the machine serving the files
  • Any of: modern browser, MyPal, Firefox 3.5+, Chrome 4+ (IE8/IE9 for
    Local only)

Install

Windows (PowerShell):

irm https://aetex.is-a.dev/buddyxp/install.ps1 | iex

macOS / Linux:

curl -fsSL https://aetex.is-a.dev/buddyxp/install.sh | sh

Then run buddyxp.

If you're upgrading from v0.1.1, just re-run the installer. Your
settings, conversations, and memory survive.

See the README for the full
provider documentation, memory and history docs, and Windows XP
instructions.

License

MIT © 2025 AeteX Interactive

v0.1.1 — Memory and History

Choose a tag to compare

@tawhid-rahman-aetex tawhid-rahman-aetex released this 06 Oct 15:07

BuddyChat XP now remembers your conversations, and it remembers you.

This release adds automatic conversation persistence and a cross-chat
memory system. Every chat is saved and listed in a new History pane,
and Buddy can extract durable facts about you from any conversation and
carry them forward into future ones.

Highlights

  • History pane. Every conversation is saved to localStorage and
    listed in the sidebar. Click any entry to reload it with its full
    message history. The most recent 100 conversations are kept.

  • Buddy's Memory. A list of facts the model has learned about you
    across conversations. On every request, those facts get prepended to
    the system prompt — the model doesn't actually remember anything
    itself, it's context injection. But it produces the effect of an
    assistant that knows you, which is what most people want.

  • "Remember this" button. Sends the current transcript back to the
    model with a prompt asking it to extract durable facts. They appear
    in the Memory pane within a second or two. Facts are user-editable —
    click × to forget any of them.

  • Memory toggle. Uncheck "Remember across chats" to stop sending
    facts to the model without clearing your stored list. Useful when
    switching to a provider or model you don't want personal context
    going to.

Also in this release

  • Toolbar row with New Chat, Test Connection, About, and Help
    buttons and colored dot indicators.
  • Three-cell status bar showing status message, live model name,
    and version.
  • Working menu handlers. File, Edit, View, and Help now respond
    with period-correct messages instead of doing nothing.
  • XP-styled scrollbars in WebKit and Blink browsers.
  • Title bar icon using the project favicon.
  • Shorter default persona. The Buddy system prompt was trimmed
    after testing showed smaller quantized models handled the shorter
    version better.

Breaking changes

None. Settings from v0.1.0 load automatically and the new fields get
sensible defaults.

Requirements

  • llama.cpp running as an OpenAI-compatible server, or any
    OpenAI-compatible endpoint
  • Python 3, Python 2, or Node.js on the machine serving the files
  • Any of: modern browser, MyPal, Firefox 3.5+, Chrome 4+, IE8, or IE9

Install

Windows (PowerShell):

irm https://aetex.is-a.dev/buddyxp/install.ps1 | iex

macOS / Linux:

curl -fsSL https://aetex.is-a.dev/buddyxp/install.sh | sh

Then run buddyxp.

See the README for Windows XP,
manual install, and full documentation.

What's next

v0.1.2 will add hosted API provider support so you can point BuddyChat XP
at OpenAI, OpenRouter, Groq, and other OpenAI-compatible endpoints
alongside your local llama.cpp server.

License

MIT © 2025 AeteX Interactive

v0.1.0 - First public release

Choose a tag to compare

@tawhid-rahman-aetex tawhid-rahman-aetex released this 01 Oct 08:17

The first public release of BuddyChat XP — a Windows XP-era chat front
end for llama.cpp, made by AeteX Interactive.

BuddyChat XP looks and behaves like a 2007 Windows XP application: Luna
blue title bars, Tahoma 11px text, a sunken status bar, and a chat log
that streams replies token by token. Behind the retro exterior it runs
three separate browser pipelines so the same page works from IE8 all the
way up to current Chrome, Firefox, and Safari.

Highlights

  • Three browser pipelines. index.html for modern browsers
    (fetch + ReadableStream), legacy.html for Firefox 3.5+ / Chrome 4+ /
    MyPal / IE10-11 (XMLHttpRequest with text/plain to avoid CORS
    preflight), ie.html for IE8 and IE9 (XDomainRequest). Each page
    auto-redirects to whichever pipeline the browser can run.

  • One-line install for Windows, macOS, and Linux. Downloads a
    tagged release, extracts to a per-user location, and creates a
    buddyxp command that wraps the platform launcher. No admin rights,
    no build step.

  • Windows XP SP3 support via launch-xp.bat, which uses only
    commands that ship with XP's cmd.exe — no PowerShell, no where,
    no timeout.

  • Emoji filter. A client-side filter runs on every streamed chunk
    and converts modern emoji to their ASCII equivalents — 😊 → :),
    😂 → :D, ❤️ → <3, 👍 → (y), 🎉 → \o/ — and strips anything
    pictographic that isn't in the map. The model cannot sneak modern
    emoji past the 2007 persona.

  • Default persona is Buddy — a friendly 2007-era IM buddy who talks
    like it's still AIM and MSN Messenger, excited about the iPhone,
    Windows Vista, YouTube, MySpace, and mix CDs.

Quick start

Windows (PowerShell 5.0+):

# 1. Install llama.cpp
irm https://llama.app/install.ps1 | iex

# 2. Download and run Bonsai-8B (~1.15 GB, 1-bit quantized)
llama serve -hf prism-ml/Bonsai-8B-gguf:Q1_0

# 3. Install BuddyChat XP
irm https://aetex.is-a.dev/buddyxp/install.ps1 | iex

# 4. Run it (in a new terminal window)
buddyxp

macOS / Linux:

# 1. Install llama.cpp
curl -LsSf https://llama.app/install.sh | sh

# 2. Download and run Bonsai-8B (~1.15 GB, 1-bit quantized)
llama serve -hf prism-ml/Bonsai-8B-gguf:Q1_0

# 3. Install BuddyChat XP
curl -fsSL https://aetex.is-a.dev/buddyxp/install.sh | sh

# 4. Run it (in a new terminal window)
buddyxp

See the README for Windows XP
instructions, manual install, and using a different model server.

What's in the box

File Purpose
index.html Modern pipeline — fetch + ReadableStream + AbortController
legacy.html XHR pipeline — Firefox 3.5+, Chrome 4+, MyPal, IE10/11
ie.html IE8/IE9 pipeline — XDomainRequest, no streaming
xp.css Shared XP Luna theme
xp-common.js Shared helpers, emoji filter, settings, About dialog
install.sh / install.ps1 One-line installers
launch.sh / launch.ps1 / launch-xp.bat Platform launchers
launch-python.py Static server with explicit MIME types (XP fix)
launch-node.js Node fallback static server

Requirements

  • Model server: llama.cpp
    running as an OpenAI-compatible server on port 8080. Any server that
    answers /v1/chat/completions works — Ollama, LM Studio, and
    text-generation-webui are all fine.
  • Static server: Python 3, Python 2, or Node.js on the machine
    serving the page. The launcher picks whichever is available.
  • Browser: Any of modern Chrome/Firefox/Safari/Edge, MyPal 29.x,
    Firefox 3.5+, Chrome 4+, Safari 4+, IE8, or IE9. The redirect chain
    routes each one to the right pipeline.

Known limitations

  • IE8 and IE9 don't stream. The ie.html pipeline waits for the
    full reply and displays it all at once. That's a limitation of
    XDomainRequest, not something we can work around without a proxy.
  • Python 2.7's SimpleHTTPServer binds to 0.0.0.0. While the
    launcher is running, other machines on the LAN can reach the page.
    launch-python.py fixes this by binding to 127.0.0.1 by default,
    and the launchers prefer it when present.
  • Bonsai-8B's Q1_0 quantization may require a recent llama.cpp
    build. If llama serve fails with an unsupported quantization error,
    update to the latest llama.app installer or try a different model.

License

MIT © 2025 AeteX Interactive. See LICENSE.

Links