All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Theme redesign — macOS Reminders style: replaced the Anthropic-inspired warm
palette (Pampas cream / Crail terracotta) with a neutral Reminders-style theme:
pure-white content area, light-gray sidebar, system-blue accent (
#007AFF), Reminders-semantic smart-list tiles (Today blue / Scheduled red / All & Completed gray), and a layered Reminders-style dark mode. New lists default to system blue. - App icon regenerated as a blue rounded square; website (homepage + manual) reskinned to the same neutral palette, and the homepage mockup now mirrors the app exactly: bordered quick-add input, secondary-gray task dates, 280px sidebar, 18px list titles, real macOS traffic-light colors.
- Windows CLI install lost native libraries:
install-clicopied only the exe, so the installedtasklycommand was missinge_sqlite3.dlland every database command failed with exit code 4. The installer now copies the full app directory (DLLs, deps/runtimeconfig, runtimes/), and single-file publishes embed native libraries (IncludeNativeLibrariesForSelfExtract), so a bare exe works standalone.
- Windows IME text duplication (root cause): typing Chinese (and other IME languages) into any text box on Windows caused the last character(s) to be repeated (e.g. "完成" → "完成成"). This was an upstream regression in Avalonia 11.2.7 (Avalonia#18661). Upgraded Avalonia from 11.2.7 → 11.2.8, which ships the official "Fix Windows IME" patch. The earlier 0.4.6 workaround (removing TwoWay bindings) addressed a separate binding-layer issue but did not resolve the library-level duplication.
- Sidebar disabled state: removed
IsEnabledbinding (caused ugly focus borders on disabled buttons). Interaction handlers now guard onIsConnectedin code-behind. - Website mobile responsive: comprehensive breakpoints for phones.
- Centered hero buttons on mobile.
- Quick-add input box height jumps when typing: fixed
Height+Paddingand removed:focusborder thickness change that caused 1px height jump.
- Windows installer naming unified:
Taskly-win-Setup.exe→taskly-{version}-windows-x64.exe.
- Windows IME text duplication: removed TwoWay binding from QuickAddBox that caused CJK input characters to repeat on Windows.
- No-database guard: sidebar now properly blocks all interactions when no database is connected (was only guarding TaskPane, not ListPane).
- New database dialog default filename was
tasks.db.db(double extension).SuggestedFileNamechanged from"tasks.db"to"tasks".
- Default list icon/color: new lists get a default emoji (📋) and Crail terracotta color when the user doesn't pick one. Mimics macOS Reminders.
- List rows now have a subtle surface background + divider border for clear visual container (was transparent — looked like floating text).
- DMG
.backgroundfolder visible: appdmg always creates an empty.backgrounddirectory. Now physically removed after DMG generation.
- Unified app logo: single SVG source → derived
.icns,.ico,.png, and favicon across all platforms. Crail terracotta rounded square + white checkmark. - Windows:
ApplicationIconin csproj +--iconflag in vpk pack. - Website: inline SVG logo in nav, SVG favicon.
- Linux
taskly.pngwas a solid color block (missing checkmark). - Website favicon was a blue globe placeholder.
- DMG
.backgroundfolder: attempt to hide viads_storeicon repositioning (superseded by complete removal in 0.4.3).
- App icon generation: moved after Pillow install step (CI was failing because
make_icon.pycouldn't import PIL).
- List item selection/hover visibility: raised alpha from 12%→22% (selection) and 4%→8% (hover). Items were nearly invisible on the warm sidebar.
- Ad-hoc code signing for macOS
.app(codesign --force --deep -s -). - DMG
.backgroundfolder hidden viachflags hidden. - Release notes include macOS first-launch instructions (
xattr -cr).
- Professional DMG:
node-appdmgwith/Applicationssymlink, background image, and icon layout. Drag-to-install experience. - CI-generated background image (Pillow) with warm palette.
pip install pillow→python3 -m pip installfor reliable Pillow import on macOS runners.
- DMG background generation: added
actions/setup-python@v5for consistent Python environment (pip/python3 mismatch on macOS runners).
- Linux
.desktopCategories fixed to standardOffice;ProjectManagement. - Windows vpk diagnostics output.
- AppImage placeholder icon generated (Crail terracotta 256×256).
- AppImage:
APPIMAGE_EXTRACT_AND_RUN=1for CI FUSE compatibility. - Velopack:
VelopackApp.Build().Run()added to Program.cs.
- Release workflow: create
build/directory before packaging.
- Website redesign: Anthropic warm palette (Pampas cream + Crail terracotta), Newsreader serif headings, CLI feature section, dynamic GitHub Release links.
- Task mockup aligned to real
TaskItemRow.axamlstructure.
- Linux AppImage: install libfuse2 + use
APPIMAGE_EXTRACT_AND_RUNfor CI. - Windows Velopack: add
~/.dotnet/toolsto PATH sovpkis found.
- macOS: now ships as
.dmgcontaining a proper.appbundle (was a raw zip). The app name shows as "Taskly" in the menu bar (was "Avalonia Application"). NativeMenu integrates with the system menu bar. - Windows: now ships as a Setup.exe installer via Velopack (was a raw zip).
- Linux: now ships as
.AppImage(zero-install) +.deb(Debian/Ubuntu). - Self-contained: all builds now use
--self-contained true— users no longer need to install the .NET runtime separately. - Release workflow restructured into per-platform jobs.
- macOS builds are unsigned (notarization requires an Apple Developer account). On first launch, right-click → Open to bypass Gatekeeper.
PublishTrimmedis intentionally disabled to avoid reflection-related runtime failures. Builds are ~70-90MB.
- Close database did nothing: ConfirmDialog used
ShowDialog<bool>but closed with parameterlessClose(), so the result was always false — every confirm dialog silently failed (close db, and any other confirm-dependent action). Fixed by reading theResultproperty afterShowDialog. - About dialog version string updated to 0.2.1.
- Release build: create
build/directory before zipping on Linux/macOS (was failing with "Could not create output file").
install-cli/uninstall-cli: install thetasklycommand to the system PATH from the GUI (Tools menu) or CLI. macOS/Linux: shell wrapper in~/.local/bin(auto-adds to shell PATH); Windows:taskly.cmd+ user PATH registry update. After install,tasklyworks from any terminal.- Command-line interface (CLI) for AI agents and scripting. The same
binary serves GUI (no args) and CLI (subcommands), without booting Avalonia
in CLI mode. Subcommands:
list,lists,add,update,done,undone,rm,search,mklist,rmlist. JSON output via--json, stable exit codes, idempotent done/undone. Powered by System.CommandLine 2.0. - AGENTS.md with build/run/CLI/architecture guidance for agents and devs.
- macOS NativeMenu scaffolding (active when packaged as
.app).
- Visual redesign in Anthropic / Claude style: warm Pampas cream background, Crail terracotta accent, low-saturation smart-list tiles, softer corner radius and spacing. Replaces the cold Apple palette.
- Task item interaction: double-click to edit (text + date + time + notes in one place); metadata hidden by default to save space.
- Sidebar resizes via GridSplitter and collapses fully.
- Title bar reflects the currently selected list/view.
- Full i18n coverage across menus, dialogs, tooltips, watermarks.
- Toggling completion now correctly filters the task out of the default view.
- Closing the database clears the UI (was leaving stale content).
- List rows clickable across the full width (hit-testing fix).
- Time picker digits centered (rebuilt as hour/minute ComboBoxes).
- Input box no longer jumps height on focus.
- Numerous crashes from async edit-mode save (NRE on DataContext change).
- Rewrote the entire application with Avalonia 11 and .NET 10 (C#), replacing the previous Flutter implementation while preserving every feature.
- State management moved from Provider/ChangeNotifier to CommunityToolkit.Mvvm (MVVM Toolkit).
- Dependency injection moved from GetIt to Microsoft.Extensions.DependencyInjection.
- SQLite access moved from sqflite to Microsoft.Data.Sqlite.
- Full binary compatibility with databases created by the previous Flutter release
(identical
lists/tasksschema,user_version = 4, migration history preserved). - Continuous integration workflow (build + test on push and pull request).
- Cross-platform release builds for Windows, macOS (x64 / arm64) and Linux via GitHub Actions.
- Reactive property notifications for connection state and task collections, so the quick-add box and smart-list counts refresh reliably after database operations.
- Modal dialogs (emoji / color pickers) now use awaited
ShowDialog, eliminating the race where a selection was not applied back to the list editor.
- Refined platform icons on download page.
- Updated documentation mockups to match app UI.
- Fixed database path issue for custom locations.
- Fixed cursor positioning issues in text fields.
- Fixed task selection and deselection logic.
- Fixed layout alignment for dates and notes.
- Fixed note editing interaction bugs.
- Fixed language switcher on documentation site.
- Initial release of Taskly.
- Core task management: create, edit, delete tasks.
- Task lists: organize tasks into customizable lists.
- Smart date parsing: naturally scheduled tasks.
- Local data persistence using SQLite.
- Responsive UI matching macOS Reminders style.
- Dark and Light mode support.
- Multi-language support (English, Chinese).
- Documentation landing page.