Releases: jasonacox/TinyLLM
v0.16.4 - Document Generation
What's Changed
- Chatbot - Document Generation: End-to-end document creation (PDF, DOCX, XLSX, PPTX) with download links by @jasonacox in #31
Included Features:
- Security - Download Route Hardening: The
/download/{filename}
endpoint now validates filenames to prevent path traversal.- Sanitizes input using
os.path.basename()
and rejects empty/.
/..
values. - Enforces allowed extensions:
.pdf
,.docx
,.pptx
,.xlsx
. - Resolves real paths and ensures they stay within the
generated_docs
directory. - Returns
400
for invalid filenames and404
for missing files.
- Sanitizes input using
- Markdown Rendering:
- PDF: Lightweight Markdown renderer (headings, bold/italic, bullet and numbered lists, Markdown tables).
- Supports internal links: headings emit anchors, and
[text](#anchor)
links navigate within the PDF. - Fenced code blocks now render as shaded, monospaced sections with a small header (e.g., "Code (python)") instead of literal Markdown fences.
- Fenced code blocks now render as shaded, monospaced sections with a small header (e.g., "Code (python)") instead of literal Markdown fences.
- Supports internal links: headings emit anchors, and
- DOCX: Render a useful subset of Markdown (headings
#..######
, bullet/numbered lists, Markdown tables, inline bold/italic). Preserves table column structure and empty cells. Lists use built-in Word list styles. - XLSX: Spreadsheet-friendly Markdown rendering:
- Headings styled and merged across columns for readability.
- Bullet/numbered list items now in a single cell (e.g.,
• Item text
,1. Item text
) with wrapping. - Tables with styled header row, borders, and wrapping; preserves empty cells to maintain column alignment.
- Fenced code blocks (
...
) render as monospaced, shaded cells with wrapping. - Entire-line links
[text](url)
become clickable hyperlinks.
- PPTX: Presentation-friendly behavior:
- Added a PowerPoint-specific LLM prompt that requests a Markdown outline with
# Presentation:
and## Slide N:
sections, bullets, and tables. - Parser normalizes titles by stripping
Presentation:
andSlide N:
prefixes so slides have clean titles. - Disabled native PowerPoint bullet styling on paragraphs to prevent double bullets when using manual prefixes; list items now render with a single bullet or number consistently.
- Added a PowerPoint-specific LLM prompt that requests a Markdown outline with
- PDF: Lightweight Markdown renderer (headings, bold/italic, bullet and numbered lists, Markdown tables).
- Format Handling & UI:
- Format aliases normalized (e.g.,
word|doc|docx -> docx
,excel|spreadsheet|xlsx -> xlsx
,powerpoint|ppt|pptx -> pptx
). /stats
page lists supported document types and aliases.
- Format aliases normalized (e.g.,
- Privacy & Reliability:
- Generated filenames use UUID-based opaque IDs (no session identifiers).
- Fixed route mounting order so Socket.IO is mounted last, preventing route interception of downloads.
- Excel generator stability fixes (prevent infinite loops and Excel row overflow in extreme cases).
Example Usage
Write an algorithm in python to sort a list of number. Create a PDF to describe how it works.
Full Changelog: v0.16.3...v0.16.4
v0.16.3 - OpenAI Image Generation Support
What's Changed
- OpenAI Image Generation Support by @jasonacox in #30
- Added OpenAI DALL-E image generation support with dedicated environment variables.
- Added separate configuration for OpenAI image generation:
OPENAI_IMAGE_API_KEY
,OPENAI_IMAGE_API_BASE
,OPENAI_IMAGE_MODEL
, andOPENAI_IMAGE_SIZE
. - Fixed "/image route not enabled" error by separating OpenAI image settings from LiteLLM proxy configuration.
- Improved image generation route handling with automatic format detection for different providers (SwarmUI/OpenAI).
- Container: jasonacox/chatbot:0.16.3
Full Changelog: v0.16.2...v0.16.3
v0.16.2 - Repetition Filter
What's Changed
- Add repetition filter settings and update version to 0.16.2 by @jasonacox in #29
0.16.2 - Repetition Filter Settings
- Added environment variables for repetition filter:
REPEAT_WINDOW
andREPEAT_COUNT
. - These control the window size and repeat count for the LLM output repetition filter. Users can now adjust these via environment variables to fine-tune anti-repetition behavior.
- MovieBot: Improved
get_movies_released_today()
to return a RAG-ready context string, listing only movies with popularity over 10, and including title, year, rated, genre, and popularity. - MovieBot: Refactored and optimized code for genre/holiday logic, prompt formatting, and error handling.
- MovieBot: Fixed bug with TypeError in holiday detection and improved SearxNG integration for internet movie searches.
- Documentation: Updated Chatbot and Document Manager environment variable sections in the README to use consistent tables.
- Documentation: Improved clarity, formatting, and consistency in README and environment variable documentation.
Full Changelog: v0.16.1...v0.16.2
v0.16.1 - Image Generation Settings
What's Changed
-
Update configuration for image generation settings by @jasonacox in #28
-
Added environment variables for image generation settings:
IMAGE_MODEL
,IMAGE_CFGSCALE
,IMAGE_STEPS
,IMAGE_SEED
,IMAGE_TIMEOUT
,IMAGE_WIDTH
, andIMAGE_HEIGHT
. -
Some suggestions based on models (see https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Model%20Support.md for more):
- OfficialStableDiffusion/sd_xl_base_1.0 - use
IMAGE_CFGSCALE=20
andIMAGE_STEPS=20
- Flux/flux1-schnell-fp8 - use
IMAGE_CFGSCALE=1
andIMAGE_STEPS=4
- Flux/flux1-dev-fp8 - use
IMAGE_CFGSCALE=1
andIMAGE_STEPS=20
- OfficialStableDiffusion/sd_xl_base_1.0 - use
Full Changelog: v0.16.0...v0.16.1
v0.16.0 - Image Generation
What's Changed
- Improve README.md: Add table of contents and fix typos by @bscott in #24
- Major Refactor of Chabot - v0.16.0 by @jasonacox in #27
- Refactor - To improve maintainability and prepare for future expansions, the chatbot code has been modularized.
- Image Generation - The chatbot now uses the SwarmUI APIs to generate images. Users can request image generation using the explicit
/image {prompt}
command or indirectly by using the intent router. Intent router will allow fo user dialogue to adjust the image via prompt updates. Research and details here: #26 - Upgrade note: This is a major version upgrade. You will need to reset your prompts for the image intent to work correctly.
New Contributors
Full Changelog: v0.15.24...v0.16.0
v0.15.24 - Intent Improvements
What's Changed - Chatbot
- Improve the conversation context for intent routing.
- Fix intent router to work with multi-modal (image) context. Updated internet search RAG to better handle conversation thread context answering.
- Container: jasonacox/chatbot:0.15.24
Full Changelog: v0.15.22...v0.15.24
v0.15.22 - Intent Router
What's Changed
- Add intent router functionality to chatbot by @jasonacox in #22
- Chatbot - The chatbot now has simple heuristics (based on LLM queries) to determine the users intent and to route to the built-in functions to ground the response. This includes internet search functions
/news
,/stock
,/weather
and/search
. - To activate set environmental variable
INTENT_ROUTER=true
or use the prompt command/intent on
.

Full Changelog: v0.15.21...v0.15.22
v0.15.21
What's Changed
- Chatbot - The
/search
command has been added to allow the chatbot to search the internet to help answer your prompt. By default, the first 5 most relevant internet search results are added to the context #21 by @jasonacox
Usage: /search {opt:number} {query}

Full Changelog: v0.15.20...v0.15.21
v0.15.20 - Chatbot Model
What's Changed
- Enhance model selection persistence in chatbot by @jasonacox in #20
- Model selection behavior improved. Session will persist with selected model in that session even when refreshed. Last model selection will be remembered and auto-selected for any new sessions but will not impact existing sessions.
Full Changelog: v0.15.19...v0.15.20
v0.15.19 - Chatbot Docs
What's Changed
- v0.15.19 Chatbot Docs by @jasonacox in #19
- Update URL reader to display reading status to user while processing document.
Full Changelog: v0.15.18...v0.15.19