Release history
Koffan releases
Shopping lists for families and couples
All releases
74 shown
- Italian locale support
Full changelog
What's Changed
- Add Italian locale by @Haxonium in https://github.com/PanSalut/Koffan/pull/119
New Contributors
- @Haxonium made their first contribution in https://github.com/PanSalut/Koffan/pull/119
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.10.0...v2.11.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.9.0...v2.10.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.8.1...v2.9.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.8.0...v2.8.1
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.6.2...v2.8.0
- Added Chinese (Simplified) language support to i18n
Full changelog
What's Changed
- feat:Add Chinese (Simplified) language support to i18n by @libashanxi in https://github.com/PanSalut/Koffan/pull/113
New Contributors
- @libashanxi made their first contribution in https://github.com/PanSalut/Koffan/pull/113
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.6.2...v2.7.0
- Added crossorigin="use-credentials" attribute to the web app manifest enabling PWA support behind proxies
Full changelog
What's Changed
- Feature: add crossorigin="use-credentials" to manifest for PWA support behind proxies by @derfloDev in https://github.com/PanSalut/Koffan/pull/115
New Contributors
- @derfloDev made their first contribution in https://github.com/PanSalut/Koffan/pull/115
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.6.1...v2.6.2
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.6.0...v2.6.1
- Hide bought items
Full changelog
What's Changed
- new Feature: hide bought items by @sir-andreas in https://github.com/PanSalut/Koffan/pull/103
New Contributors
- @sir-andreas made their first contribution in https://github.com/PanSalut/Koffan/pull/103
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.5.0...v2.6.0
Minor fixes and improvements.
Full changelog
What's Changed
- Fixed some issues by @bretonjustin in https://github.com/PanSalut/Koffan/pull/104
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.4.0...v2.5.0
Minor fixes and improvements.
Full changelog
What's Changed
- Create Czech localization file cs.json by @Dvorinka in https://github.com/PanSalut/Koffan/pull/106
- added dutch / flemish language by @FrumbleFrommel in https://github.com/PanSalut/Koffan/pull/107
New Contributors
- @Dvorinka made their first contribution in https://github.com/PanSalut/Koffan/pull/106
- @FrumbleFrommel made their first contribution in https://github.com/PanSalut/Koffan/pull/107
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.3.1...v2.4.0
Minor fixes and improvements.
Full changelog
What's Changed
- Fixed Typos by @AminGholizad in https://github.com/PanSalut/Koffan/pull/100
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.3.0...v2.3.1
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.2.0...v2.3.0
- Added Farsi translations
Full changelog
What's Changed
- Fix the issue where list items do not refresh when browser is hidden by @bretonjustin in https://github.com/PanSalut/Koffan/pull/95
- added Farsi translations by @AminGholizad in https://github.com/PanSalut/Koffan/pull/91
New Contributors
- @bretonjustin made their first contribution in https://github.com/PanSalut/Koffan/pull/95
- @AminGholizad made their first contribution in https://github.com/PanSalut/Koffan/pull/91
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.1.1...v2.2.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.1.0...v2.1.1
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v2.0.0...v2.1.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.9.2...v2.0.0
- Russian language added
Full changelog
What's Changed
- Add Russian language by @unuunn in https://github.com/PanSalut/Koffan/pull/76
New Contributors
- @unuunn made their first contribution in https://github.com/PanSalut/Koffan/pull/76
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.9.1...v1.9.2
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.9.0...v1.9.1
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.8.2...v1.9.0
Fixed the Service Worker path.
Full changelog
What's Changed
- Fix Service Worker path by @JenswBE in https://github.com/PanSalut/Koffan/pull/68
New Contributors
- @JenswBE made their first contribution in https://github.com/PanSalut/Koffan/pull/68
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.8.1...v1.8.2
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.8.0...v1.8.1
- Removed copying of template and static file directories in the Dockerfile
Full changelog
What's Changed
- Remove copying of templates and static files in Dockerfile by @0alai in https://github.com/PanSalut/Koffan/pull/59
New Contributors
- @0alai made their first contribution in https://github.com/PanSalut/Koffan/pull/59
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.7.0...v1.8.0
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.9...v1.7.0
- Templates and static assets are embedded directly into the binary
Full changelog
What's Changed
- Embed templates and static assets into binary by @ancientcatz in https://github.com/PanSalut/Koffan/pull/54
New Contributors
- @ancientcatz made their first contribution in https://github.com/PanSalut/Koffan/pull/54
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.7...v1.6.9
Fixed apostrophe handling and improved offline mode.
Full changelog
What's Changed
- fix: apostrophe handling, offline mode improvements by @PanSalut in https://github.com/PanSalut/Koffan/pull/57
New Contributors
- @PanSalut made their first contribution in https://github.com/PanSalut/Koffan/pull/57
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.7...v1.6.8
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.6...v1.6.7
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.5...v1.6.6
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.4...v1.6.5
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/v1.6.3...v1.6.4
Routine maintenance release for Koffan.
Changelog
Full Changelog: https://github.com/PanSalut/Koffan/compare/1.6.2...v1.6.3
- Export and import shopping lists as JSON or CSV with full history support
- Conflict resolution options when importing duplicate lists
- Clear database option added in Data tab
Full changelog
What's New
Import/Export functionality
- Export and import your shopping lists as JSON or CSV
- Full history support - remembers which list and section items were added to
- Conflict resolution options when importing duplicate lists
Other improvements
- Clear database option in Data tab
- Sponsors section added
Closes #6
Minor fixes and improvements.
Changelog
Added Slovak (SK) translation. Thanks @Richdark for the contribution!
- Added 'Add first section' button when no sections exist, available in all 11 supported languages
Full changelog
Improvements
- Added 'Add first section' button when no sections exist (#37)
- Users can now quickly create their first section from the empty state
- Available in all 11 supported languages
- Added Greek (Ελληνικά) language translation
Changelog
Added Greek language (Ελληνικά) translation.
Default list title language now respects the DEFAULT_LANG setting.
Full changelog
Bug Fixes
- Fix default list title language - now respects DEFAULT_LANG setting instead of hardcoded Polish (#36)
- Added docker-compose.local.yaml for local development with specific run command
Full changelog
Changes
- Added
docker-compose.local.yamlfor local development (#35)- Use
docker-compose -f docker-compose.local.yaml up -dto run locally - Main
docker-compose.yamlusesexposefor compatibility with Coolify/Dokploy
- Use
- Added `docker-compose.local.yaml` for local development and usage instructions
Full changelog
Changes
- Added
docker-compose.local.yamlfor local development (#35)- Use
docker-compose -f docker-compose.local.yaml up -dto run locally - Main
docker-compose.yamlusesexposefor compatibility with Coolify/Dokploy
- Use
- Drag‑and‑drop reordering of items within and between sections with mobile touch support, offline queueing, and haptic feedback
- Improved UI refresh after offline sync
- Smoother drag animations
Full changelog
New Features
- Drag and drop reordering - Reorder items within sections and move items between sections by dragging (Issue #27)
- Works on mobile with touch support
- Offline support - changes are queued and synced when back online
- Haptic feedback on mobile devices
Improvements
- Better UI refresh after offline sync
- Smoother drag animations
Fixed truncation of overly long list names.
Full changelog
Changes
- Improved handling of long list names - names are now dynamically truncated only when they don't fit in the container (#31)
- Full dark/light/system theme switching (dark mode support)
- New cat‑logo app icons
- Consistent scrollbar styling in dark theme
Full changelog
New Features
- Dark mode support - Full dark/light/system theme switching
- New app icons - Fresh cat logo design
- Dark mode scrollbar styling - Consistent look in dark theme
Improvements
- Updated README with dark mode feature showcase
- Polish translation improvements
- Fix race condition in section item handling
- Added Swedish (Svenska) language support
Full changelog
New Features
- Swedish translation - Added Swedish (Svenska) language support
Fixes
- Fixed typos in Swedish translation (Snabbinläggning, Pågående, Mallar)
- Added Norwegian (Norsk) language support
- Added Lithuanian (Lietuvių) language support
Full changelog
New Languages
- Norwegian (Norsk) - Thanks to @SveinEven (#28)
- Lithuanian (Lietuvių) - Thanks to @mantasio (#29)
Koffan now supports 9 languages: PL, EN, DE, ES, FR, PT, UK, NO, LT
- REST endpoints return 503 with JSON error response when `API_TOKEN` is not set
Full changelog
Improvements
- Return 503 when REST API is disabled - When
API_TOKENis not set, API endpoints now return proper503 Service Unavailablewith JSON error response instead of redirecting to login page.
Fixed icon validation by falling back to a default cart emoji when invalid text is provided.
Full changelog
Bug Fixes
- Fix icon validation in REST API - Invalid text input for icons now falls back to default cart emoji (🛒) instead of being stored as plain text. Only valid emoji or known aliases are accepted.
- String aliases for icons (e.g., "cart", "home", "gift") replace emoji in API requests
Full changelog
REST API Improvements
- String aliases for icons - Use
\"cart\",\"home\",\"gift\"etc. instead of emoji in API requests - Wiki documentation - Added REST API documentation to GitHub Wiki
See REST API docs for full reference.
- Token-based authentication via `API_TOKEN` environment variable
- Full CRUD endpoints for lists, sections, and items at `/api/v1/`
- Batch creation endpoint to build complex structures in a single request
Full changelog
New Features
REST API
- Token-based authentication - Enable API by setting
API_TOKENenvironment variable - Full CRUD endpoints for lists, sections, and items at
/api/v1/ - Batch creation - Create complex structures (list + sections + items) in a single request
- Reordering support - Move items up/down via API
- History/suggestions management - Add, view, and delete item suggestions
API Endpoints
| Resource | Endpoints |
|----------|-----------|
| Lists | GET, POST, PUT, DELETE /api/v1/lists |
| Sections | GET, POST, PUT, DELETE /api/v1/sections |
| Items | GET, POST, PUT, DELETE /api/v1/items |
| Batch | POST /api/v1/batch |
| History | GET, POST, DELETE /api/v1/history |
Usage
# Enable API
export API_TOKEN="your-secure-token"
# Example request
curl -H "Authorization: Bearer your-secure-token" \
http://localhost:3000/api/v1/lists
Bug Fixes
- Fixed
list_idnot being returned in section responses
- Removed restrictions that prevented deleting active or last remaining list entries.
- Renamed feature label "Templates" to "Real-time" across all 7 languages.
- New sync icon reflecting real-time synchronization
Full changelog
Changes
- Allow deleting any list - Removed restrictions that prevented deleting active or last remaining list
- Renamed "Templates" to "Real-time" - Updated feature label in welcome screen across all 7 languages
- New sync icon - Updated icon to reflect real-time synchronization feature
Fixed empty state visibility – “No items” message now hides automatically upon adding a product or section.
Full changelog
Bug Fixes
- Fixed empty state visibility - The "No items" message now disappears automatically when adding the first product or section (previously required page refresh)
- Quick-add button in section headers (desktop auto-selects/focuses, mobile opens modal pre‑selected)
- Completed section indicator now uses a pink checkmark icon
Full changelog
New Features
- Quick-add button in section headers - Tap the + icon next to any section name to quickly add items to that section
- On desktop: automatically selects the section and focuses the input field
- On mobile: opens the add item modal with the section pre-selected
- Improved completed section indicator - Replaced text badge with a clean pink checkmark icon when all items in a section are purchased
Translations
- Added
quick_addtranslation key for all supported languages (EN, PL, DE, FR, ES, PT, UA)
- Full Ukrainian language support for all app features, lists, templates, onboarding, and settings
Full changelog
New Features
- Ukrainian localization - Added full Ukrainian language support (contributed by @otolochko)
- Complete translation of all app features
- Lists, templates, onboarding, and settings sections included
Fixes
- Fixed CI workflow to only run on public repo
- Removed offline support for lists page (retained only for individual list view)
- Multiple shopping lists with custom icons
- Mobile bottom navigation bar for quick list access
- Offline sync using Last Write Wins strategy
Full changelog
Features
- Multiple lists support - Create and manage multiple shopping lists with custom icons
- Mobile bottom navigation bar - Quick access to lists on mobile devices
- Offline sync with Last Write Wins - Changes made offline are synced when back online, newest change wins
- Empty state for lists - Better UX when list has sections but no products
- Auto-create section - Sections created without page reload
Fixes
- Fix offline sync with proper IndexedDB versioning
- Fix SQLite concurrency issues causing session loss
- Fix session cookie Path attribute
- Fix section reordering race condition
- Fix radio button color to pink
Other
- Remove offline support for lists page (keep for individual list view only)
- Simplify mobile stats display
- Various UI/UX improvements
- DISABLE_AUTH environment variable (set to true) bypasses built‑in authentication for reverse proxy setups
Full changelog
New Features
- DISABLE_AUTH environment variable - Skip built-in authentication for reverse proxy setups
- Set
DISABLE_AUTH=trueto bypass login when your proxy handles auth - Useful for Traefik, Caddy, Nginx with Authelia/Authentik, etc.
- Set
Closes #14
- Page title updated to "Koffan Shopping List" with localizations (EN, PL, DE, ES, FR, PT)
- Login page title simplified to "Login - Koffan" with localized equivalents
Full changelog
Changes
- Page title now shows Koffan Shopping List (and localized equivalents)
- EN: Koffan Shopping List
- PL: Koffan Lista Zakupów
- DE: Koffan Einkaufsliste
- ES: Koffan Lista de compras
- FR: Koffan Liste de courses
- PT: Koffan Lista de compras
- Login page title simplified to "Login - Koffan" (localized)
Fixed page title translation staying in the selected language after toggling items.
Full changelog
Bug Fixes
- Fixed page title translation (issue #13) - Page title now stays in the selected language after toggling items
- Changed hardcoded Polish
<html lang="pl">to dynamic language based on user preference - Changed hardcoded Polish title to "Koffan" fallback
- Added
htmx:afterRequesthandler to ensure title is always restored after HTMX operations
- Auto-completion with fuzzy search for product names, remembering last section
- Product history management UI in Settings → Shopping List (view, search, delete)
- One‑click deploy buttons for Railway, Render, DigitalOcean, Heroku with config files
Full changelog
New Features
Auto-completion with fuzzy search
- Start typing a product name to see suggestions from your history
- Fuzzy matching finds products even with typos
- Remembers which section each product was last added to
Product history management
- New section in Settings → Shopping List
- View all saved products with their sections
- Search through history
- Delete items added by mistake
One-click deploy
- Deploy buttons for Railway, Render, DigitalOcean, and Heroku
- Configuration files included for easy self-hosting
Improvements
- Input validation limits to prevent DoS attacks
- Consistent UI styling across the app
- Button to delete all bought items in Settings > Shopping list tab
- Settings modal now has Account and Shopping list tabs
- Delete action blocked when offline
Full changelog
Bug Fixes
- Page title translation - Fixed title reverting to "Lista Zakupow" after data sync (push/pull)
New Features
- Delete all bought items - New button in Settings > Shopping list tab to remove all completed items at once
- Settings tabs - Settings modal now has two tabs: Account (language settings) and Shopping list (list management)
- Offline protection - Delete action is blocked when offline
Translations
- Added translations for all 6 supported languages (PL, EN, DE, ES, FR, PT)
- Mobile FAB Speed Dial menu with quick actions: Add product and Manage sections
- Smooth animations and button rotation feedback
Full changelog
New Features
- Mobile FAB Speed Dial menu - Added quick access to section management on mobile devices
- Tap the floating action button to reveal menu options
- "Add product" - opens the add item modal
- "Manage sections" - opens section management modal
- Smooth animations with button rotation feedback
Notes
- Section management requires internet connection (offline mode not supported)
Fixed login redirect loop by setting the Secure cookie flag based on actual connection protocol.
Full changelog
Bug Fixes
- Fixed login redirect loop on HTTP connections - Session cookie was incorrectly set with
Secureflag whenAPP_ENV=production, which broke authentication when accessing the app via HTTP (e.g., on local network by IP address). Now theSecureflag is set based on actual connection protocol.
Technical Details
- Added
isSecureConnection()helper that checks:X-Forwarded-Protoheader (for reverse proxy setups)- Direct connection protocol
- This ensures cookies work correctly on both HTTP (local network) and HTTPS (behind reverse proxy) setups.
Fixes #1
- Keep modal open to add multiple items with the new "Add more toggle"
- Press Enter in the name field to quickly submit an item
- Translations added for all 6 supported languages
Full changelog
What's New
- Add more toggle - keep modal open to add multiple items without closing
- Enter to submit - press Enter on name field to quickly add item
- Section stays selected when adding more items
- Translations for all 6 languages
Fixed persistence of expanded/collapsed section state on iOS Safari and after HTMX swaps.
Full changelog
Bug Fixes
- Section counter - Now updates correctly when deleting items
- Empty sections - Automatically hidden when all items are removed
- Bought section state - Fixed persistence of expanded/collapsed state on iOS Safari and after HTMX swaps (#3)
Technical Changes
- Added
updateSectionAfterDelete()helper function - Changed Alpine.js initialization to use
init()method for reliable state restoration - Added
getCompletedSectionState()for safe localStorage access on iOS
- Edit button added to desktop view
- Offline synchronization with Last Write Wins strategy
Full changelog
Zmiany
Nowe funkcje
- Przycisk edycji na desktop view
- Synchronizacja offline z Last Write Wins (najnowsze wygrywa)
Poprawki
- Uproszczona synchronizacja po powrocie online - sync, toast, reload strony
- Naprawiono podwójny toast przy powrocie online
- Naprawiono błędy UI przy edycji offline
- Naprawiono migrację SQLite
- Poprawiono obsługę błędów w GetItemVersion
- Edit button in desktop view for direct item editing on hover
Changelog
Added
- Edit button in desktop view - now you can edit items directly from the list on hover
- Delete confirmation dialog added on desktop, aligning with mobile behavior
Full changelog
What's Changed
- Add delete confirmation dialog on desktop (matching mobile behavior)
Previously, items were deleted immediately on desktop without confirmation. Now a confirmation dialog appears before deletion, consistent with the mobile experience.
Fixed localization bug so delete confirmation popup shows in the user's selected language.
Full changelog
Bug Fixes
- Fixed localization bug - Delete section confirmation popup now displays in the user's selected language instead of always showing Polish (#10)
- Fixed "Postep" label - Progress bar label now uses i18n translations
- Fixed page title - Page title is now dynamically set based on selected language
Languages affected
All 6 supported languages: PL, EN, DE, FR, ES, PT
- Fix XSS vulnerability in mobile action button template
Full changelog
Security & Stability Fixes
- Fix unchecked crypto/rand error in session ID generation
- Fix XSS vulnerability in mobile action button template
- Fix race conditions in section/item move operations (reads now inside transactions)
- Removed the unused `preferences` table from the database schema.
Changelog
Remove unused preferences table from database schema
- DEFAULT_LANG environment variable to set default app language
Full changelog
What's Changed
Bug Fixes
- Fixed default language configuration - The app now defaults to English instead of Polish for new users
- Added
DEFAULT_LANGenvironment variable - You can now configure the default language (e.g.,DEFAULT_LANG=defor German) - Removed unreliable browser language detection - Language is now determined by: user preference (localStorage) → server default
Documentation
- Added
DEFAULT_LANGto environment variables documentation in README - Translated i18n/README.md to English
Fixes #2
- Removed empty "Select section" placeholder option
- Native-feeling pull-to-refresh with spinner following finger
- Disabled pinch zoom and double‑tap zoom on mobile; added `touch-action: manipulation`
- Overlay fade animation during page refresh with debounced calls to prevent rapid updates
Full changelog
Mobile UX Improvements
Pull to Refresh
- Added native-feeling pull-to-refresh gesture on mobile
- Spinner follows your finger position smoothly
- Triggers refresh after ~70px pull threshold
Zoom Prevention
- Disabled pinch zoom and double-tap zoom on mobile
- Fixed iOS auto-zoom when focusing on input fields (font-size 16px fix)
- Added
touch-action: manipulationfor better touch handling
Smooth Refresh Animation
- Added overlay fade animation during page refresh
- Debounced refresh calls to prevent multiple rapid updates
- Eliminated page "flashing" during content swap
Default Section Selection
- First section is now auto-selected when adding items
- Removed empty "Select section" placeholder option
Offline Support Enhancements
- Toast notifications for offline action feedback
- Optimistic UI updates for toggle and edit actions
- Visual sync badges on pending items (rose color scheme)
- Improved offline item creation with sync indicators
- Docker Compose support included
- Coolify deployment instructions provided
- Traefik reverse proxy compatible
- Add, edit and delete items
- Organize items into sections/categories
- Mark items as purchased or uncertain
Full changelog
Koffan v1.0.0
First stable release of the shopping list management app.
Features
- Add, edit and delete items
- Organize items into sections/categories
- Mark items as purchased or uncertain
- Real-time sync via WebSocket
- Responsive mobile-first UI
- Simple password authentication
- SQLite database with persistent storage
- Docker & Coolify ready
Deployment
- Docker Compose support
- Coolify deployment instructions included
- Traefik reverse proxy compatible