Notechondria

Version: 0.1.11 Build Date: 2026-04-08T00:00

What's Changed

Course icon selector

  • Added icon field (IntegerField, nullable) to the backend Course model storing Material Icons codePoint values.
  • Created migration 0014_course_icon.py for the new field.
  • Updated CourseSerializer and CourseWriteSerializer to include the icon field.
  • Updated POST (create) and PATCH (update) course endpoints to accept and persist icon.
  • Added curated icon picker dialog (_showIconPickerDialog) with 30 Material Icons in a grid layout.
  • Added _courseIcon() helper that resolves a course map to its custom icon or a type-based default.
  • Replaced _promptCreateCategory and _promptEditCategory with stateful dialog widgets (_CreateCategoryDialog, _EditCategoryDialog) that include icon selection.
  • Updated _createCategory and replaced _renameCategory with _updateCategory to handle both title and icon changes for local and remote courses.
  • Sidebar category rows now display the user-selected icon.

Compact view navbar title

  • Replaced static "Notechondria Editor" title in the compact (mobile) AppBar with the current folder name: shows category title when a category is selected, "All Notes" when viewing all notes, and the app title for other pages.

Inbox folder fixes

  • Fixed duplicate Inbox folders appearing when remote courses include a default category and the local offline starter Inbox already exists. The local default is now removed when remote courses are loaded.
  • Default Inbox folder long-press/right-click now shows an informational dialog explaining it cannot be renamed or deleted, instead of a dismissive SnackBar.
  • Added URL validation to the social link field in settings across all three apps (editor, planner, portal).
  • Social links must be empty or a valid http:// or https:// URL; invalid values are blocked before save with an inline error message.
  • Editor and portal TextField decorations updated with hint text and error display; error clears on edit.

Files Changed

  • backend/notes/models.py -- Added icon IntegerField to Course model
  • backend/notes/migrations/0014_course_icon.py -- New migration for icon field
  • backend/notes/api.py -- Added icon to CourseSerializer, CourseWriteSerializer; updated create/update endpoints
  • frontend/editor_app/lib/core/helpers.dart -- Added _kCourseIcons map, _courseIcon helper, _showIconPickerDialog
  • frontend/editor_app/lib/app_shell.dart -- Icon picker in create/edit dialogs, _updateCategory, compact navbar title, inbox dedup, default inbox dialog
  • frontend/editor_app/lib/modules/settings.dart -- Social link URL validation with error display
  • frontend/planner_app/lib/modules/settings.dart -- Social link URL validation
  • frontend/portal_app/lib/modules/settings.dart -- Social link URL validation with error display
  • VERSION -- Bumped from 0.1.10 to 0.1.11
  • sample.env -- Updated image tags to v0.1.11.local
  • docs/versions/0.1.11.md -- This version document
  • docs/TASKS.md -- Marked completed items