Releases: Anionex/banana-slides
Releases · Anionex/banana-slides
v0.4.0
Banana Slides v0.4.0 brings internationalization, dark mode, a redesigned editor experience, and dozens of quality-of-life improvements.
Highlights
✏️ New Editor Experience
- MarkdownTextarea — A brand-new rich editing component with inline chips, formatting toolbar, image preview, and markdown-to-chips conversion on paste. Now user can paste images whereever in homepage, outline editor or description cards and they will be processed instantly.
- OutlineEditor Redesign — Split-view layout: left panel for editing raw outline/description text, right collapsible drawer for structured outline cards.
- Glassmorphism UI — Modal and MaterialGeneratorModal redesigned with a modern glassmorphism aesthetic.
🧮 LaTeX & Image Paste
- Inline (
$...$) and block ($$...$$) LaTeX formula rendering via KaTeX in all Markdown views. - Paste images directly from clipboard in description editors — they are auto-uploaded as materials and inserted as markdown image links.
- Uploaded images now get AI-generated captions (Gemini / OpenAI) used as alt text.
🖼️ Material Center
A dedicated Material Center modal for browsing, filtering by project, batch selecting, bulk downloading (as zip), uploading, deleting, and previewing materials.
⚡ Performance
Frontend image loading optimized with compressed JPG thumbnails (cached_image_path). Originals are preserved for export quality.
🌍 Internationalization & Dark Mode
Full Chinese/English bilingual support powered by i18next, with light / dark / system theme switching. Every component has been adapted for dark mode.
Features
- i18n + Dark Mode (#196)
- MarkdownTextarea, OutlineEditor redesign, glassmorphism UI (#206)
- LaTeX rendering, image paste, and AI captions (#203)
- Material Center and Help Modal — Paginated onboarding guide, auto-shown on first visit (#53)
- Image cache optimization — Thumbnail generation for faster frontend loading (#151)
- Export quality assurance — "Allow partial export" toggle (default off), fail-fast with detailed error messages and help text (#190)
- Settings service testing — One-click connectivity tests for Baidu OCR, text model, caption model, image generation, and MinerU PDF parsing; supports testing unsaved settings before saving
- Editable outline & description in SlidePreview — Edit title, points, and description directly in the preview modal
- Export outline & description to Markdown
- Manual chapter (part) editing in outline (#194)
- AI reasoning mode — Independent enable_reasoning toggles for text and image generation; Vertex
thinking_budgetsupport (#160) - Resolution mismatch detection — Warning dialog when image generation resolution doesn't match settings; OpenAI
extra_bodyparams for resolution control - Docker multi-arch — amd64 + arm64 builds
- Pre-built Docker image deployment option
- PPTX metadata — Author and date metadata in exported files
Bug Fixes
- Export directory not created — Relative path caused PDF/PPTX export to fail with 500 (#201)
- Reference files not available during generation — Files were associated after AI generation completed; now associated before (#201)
- Image generation page data mismatch — Filtered page_ids caused outline data to be zipped with wrong pages (#201)
- Stale closure in task polling — Switching projects caused polls to query the wrong project (#201)
- Infinite polling on description generation failure — Added retry limit (#201)
- Path traversal vulnerability — Export filenames and
/files/paths sanitized withsecure_filename/os.path.abspath(#201, #206) - Export path double-join —
get_absolute_path()wrapped an already-absolute path, causing 500 - Memory leak — Object URLs not revoked in image previews (#201)
- Description generation race condition — Now uses API response data directly instead of reading from store
- Database session staleness — Expire session before export to prevent stale reads (#183)
- Baidu OCR config — Read API key from Flask config (database settings) instead of only environment variables (#190)
- Silent error swallowing — MinerU / Baidu OCR extraction failures now propagate to frontend (#190)
- Image path sync — Added retry mechanism in
pollImageTask - Batch delete — Use
Promise.allSettledto handle partial failures (#201)
Improvements
- Hover tooltip with format examples for outline/description creation tabs (#202)
- HTTP error codes (503, 500, 429, etc.) show user-friendly localized messages (#202)
- Modal: always show close button + Escape key support (#202)
- Toast: new warning type, improved stacking, no header overlap (#202)
- Stale project IDs silently cleaned from localStorage (#202)
- Removed intrusive "service test tip" toast on first project creation (#202)
PORTrenamed toBACKEND_PORTfor consistency- Default text model updated to
gemini-3-flash-preview
Infrastructure
- GitHub Actions workflow for automatic README Chinese → English translation
- E2E tests adapted for i18n (
locale=zh-CN) - Test fixtures updated for open-source codebase (#204)
- Docker:
IN_DOCKER=1set in backend Dockerfile
New Contributors
- @VVIP1024 made their first contribution in #160
- @uthanw made their first contribution in #151
- @Rock-ql made their first contribution in #53
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- [Feat] Add Material management module by @Anionex in #3
- [Feat][reference_files]: implement reference file management and integration by @Anionex in #4
- [Feat] responsive UI by @Anionex in #5
- [Feat] vibe outline and desc by @Anionex in #6
- fix(file_service): normalize file paths for cross-platform compatibility by @Anionex in #23
- [Feat] support OpenAI api format by @Anionex in #26
- feat: support image list displaying on outline and desc pages by @Anionex in #31
- feat: Add TEXT_MODEL and IMAGE_MODEL params and make it compatible with POE's API. by @r404r in #33
- Feat: 20261213 language 002(added output language option) by @r404r in #41
- [feat]: implement settings management with API integration by @Anionex in #49
- [Feat]: integrate Alembic for database migrations and enhance settings management by @Anionex in #51
- fix: Several system enhancements have been implemented(current_app import, traceback message, openai timeout) by @r404r in #45
- [Feat]: add ci tests and workflows by @Anionex in #65
- 【构建加速】添加中国镜像源一键配置脚本 by @ShellMonster in #69
- [Feat]: support editable pptx exporting by @Anionex in #76
- PDF 导出优化:使用 img2pdf 实现低内存方案 by @ShellMonster in #77
- fix(ci): Updated the GenAI_provider to use milliseconds for timeout by @thunder-sec in #83
- [Fix]: history version by @Anionex in #90
- feat: add Vertex AI support as third AI provider format by @aocuan in #88
- [Feat]: support text based template and add setting page in slidepreview page by @Anionex in #91
- Perf/aiservice singleton optimization by @willamhou in #96
- perf: eliminate additional N+1 queries in update_project and generate_outline by @willamhou in #103
- [Feat] Major enhancements to PPTX export functionality including refactored inpainting architecture, text attribute extraction, hybrid processing strategies, and progress reporting by @Anionex in #109
- [feat]: enhance export functionality with page selection support by @Anionex in #110
New Contributors
- @Anionex made their first contribution in #3
- @r404r made their first contribution in #33
- @ShellMonster made their first contribution in #69
- @thunder-sec made their first contribution in #83
- @aocuan made their first contribution in #88
- @willamhou made their first contribution in #96
Full Changelog: https://github.com/Anionex/banana-slides/commits/v0.3.0