- Swap plain textarea for EmbeddableMarkdownEditor to enable native #tag autocomplete
- Extract total display into updateTotalDisplay() to avoid full modal rebuild on delete
- Add proper editor lifecycle management (cleanup on rerender/close)
- Add unit tests for description editor integration and cleanup
Subgroup header indentation CSS selectors had a typo
(tn-tasknoteTaskList instead of tn-tasknotesTaskList) causing the
rules to never match.
Also added margin-left to task cards under subgroups so their
chevrons align directly below the subgroup header chevron.
- Fix column expand/contract glitch: replace `transition: all` with specific
properties and remove scale(1.02) transform on dragover columns
- Fix wrong drop position when dragging upward: collapse dragged card's
layout space after browser captures drag image, removing the phantom
element that distorted sibling getBoundingClientRect values
- Replace thin 3px accent line with animated gap/slot pattern where sibling
cards shift apart via translateY to show the drop position
- Lock source column min-height during drag so collapsing the dragged card
doesn't shrink the priority bucket
- Clip overflow on cards container during drag so translateY shifts don't
cause scrollbars
- Suppress hover background-color, transform, and box-shadow on all task
cards during active drag via body-level .tn-drag-active class
- Add rAF throttling to dragover handlers (preventDefault stays synchronous)
- Support cross-column drag: detect container change, clean old, set up new
- Respect prefers-reduced-motion: reduce for shift animations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract sort_order computation from KanbanView into sortOrderUtils.ts
as free functions (computeSortOrder, getGroupTasks, renumberAndInsert,
isSortOrderInSortConfig, stripPropertyPrefix) so both views share the
same midpoint insertion algorithm without code duplication.
Add drag-to-reorder to TaskListView:
- Container-level drag event delegation (dragenter/dragover/drop) with
unconditional e.preventDefault() as required by the HTML5 DnD spec
- Within-group reordering: cards get draggable="true" when sort_order
is in the view's sort config
- Cross-group dragging: detects group changes via a taskGroupKeys map
(populated at render time) and updates the group property via
TaskService.updateProperty alongside the sort_order write
- Deferred re-render during drag to prevent DOM destruction mid-drop
- Works in both flat and grouped modes; gracefully skipped in virtual
scrolling paths
Simplify .task-card--dragging CSS: remove rotate/scale transforms and
pointer-events:none that caused adjacent cards to steal hit-test events
during drag. Add drop indicator pseudo-elements (::before/::after) for
visual feedback in task-list-view.css.
Implement card-level drag-and-drop reordering within kanban columns.
Dragging a card above or below another card computes a new sort_order
using a midpoint insertion algorithm and writes it to frontmatter.
New capabilities:
- Card-level dragover/drop handlers with top/bottom half detection
- Visual drop indicators (accent-colored bar above or below target)
- Midpoint insertion: new_value = floor((neighbor_above + neighbor_below) / 2)
- Vault-wide neighbor lookup so filtered/hidden tasks are still
considered when computing midpoints (prevents order collisions)
- Proportional gap computation based on median spacing in the column
- Collision handling: when neighbors share identical sort_order values,
renumber all column tasks evenly across the existing value range
- Deferred re-render during drag to prevent DOM destruction mid-drop
- Same-column detection to skip unnecessary group property writes
Supporting changes:
- Add sortOrder field to TaskInfo interface and FieldMapping
- Add sort_order to FieldMapper read/write and default field mapping
- Add columnTasksCache for render-time group data
- Add sort_order to e2e vault kanban view config
- Add CSS for drop-above/drop-below position indicators
Added mobile-specific CSS rules targeting `body.is-mobile` for the
expanded task modal to ensure proper flex layout. The button container
now stays pinned at the bottom without overlapping the scrollable
content area on Obsidian mobile devices.
Make modal content scrollable while keeping action buttons pinned at bottom:
- Set modal-content as flex container with max-height constraint
- Make minimalist-modal-container a flex child that fills available space
- Add overflow-y: auto to modal-split-content for scrollable form fields
- Keep button container fixed with flex-shrink: 0 and visual separator
On wide screens with split-layout, reset overflow to visible since
individual columns handle their own scrolling.
The entrance animation for inline task previews included a scale
transformation (0.95→1.0) that replayed whenever widgets were
recreated on status change, causing a distracting visual jump.
Removed the scale, keeping only the opacity fade.
Prioritize icsEvent.color over subscription color in ICSCard so
Google/Microsoft per-event colors display in the list view. Add
today-highlight styling for fc-list-day headers in both the advanced
calendar and Bases calendar views, respecting the showTodayHighlight
setting.
Constrain the expanded modal to max-height: 85vh and use flex layout
so the content area shrinks while the button container stays pinned
at the bottom of the viewport.
Move setup guide into OAuth group, reorder ICS and webhook sections
so buttons appear above cards, move auto-export status inside its
group, and add card container spacing.
Replace inline style assignments with CSS classes for better
maintainability and consistency. Adds new CSS classes for OAuth setup,
calendar connection info, webhook events display, and auto-export status.
Reduces code duplication between Google and Microsoft calendar cards.
Push TaskNotes tasks to Google Calendar as calendar events with:
- New TaskCalendarSyncService for managing task-to-event sync
- Settings UI in integrations tab for configuration
- Support for custom title templates ({{title}}, {{status}}, {{priority}})
- Automatic sync on task create/update/complete/delete
- Frontmatter-based event ID storage for stable linkage across renames
- Non-blocking sync calls to prevent modal hang
- Sync indicator pill on task cards
- Command palette actions for manual sync
Add "Show status icon in column header only" toggle to Kanban view settings
(disabled by default). When enabled and grouped by status:
- Shows status icon in column header after drag handle
- Hides status indicator dot on individual cards
- Reduces visual redundancy when column already indicates status
Addresses #1403 feature request while making the behavior opt-in.
When Kanban is grouped by status:
- Column headers show icon (inside drag handle) + configured label
- Status indicator hidden on cards (redundant when column = status)
- Swimlane labels also show icon+label when swimlane = status
- Position details field below title on narrow screens (non-split mode)
- Add thinner (0.5px) section dividers for cleaner appearance
- Remove glow effect from title input on focus
- Add 1200px+ breakpoint with wider modal (1100px) and left column (480px)
Add a two-column layout for task modals on screens 900px+ wide, showing
form fields on the left and the details editor on the right. Includes a
new setting to toggle this behavior.
Also refactors task modal architecture to use template method pattern,
reducing code duplication between TaskCreationModal and TaskEditModal.
Use Obsidian's .is-mobile class to properly detect mobile devices
instead of relying solely on viewport width. The save button's
margin-left: auto now only applies on desktop.
Replace the default Bases "New" button with a TaskNotes button that
opens the task creation modal when clicked. The button is injected
into the Bases toolbar and visibility is toggled via CSS based on
whether a TaskNotes view is active.
- Add setupNewTaskButton() to BasesViewBase for toolbar injection
- Use tasknotes-view-active class to toggle button visibility
- Refactor CalendarView to call super.setupContainer() for consistency
- Hide native "New" button when TaskNotes view is active
- Move property key, default value, and NLP trigger settings into unified
property cards in the Task Properties tab
- Remove Defaults tab entirely (body template moved to Features tab)
- Move title/filename settings from Appearance tab into Title property card
- Move project autosuggest settings from Appearance tab into Projects card
- Add collapsible sections for status/priority values, autosuggest filters,
and display customization
- Add onCollapseChange callback to CardComponent for preserving collapse state
- Add "Feature Properties" section for pomodoro and calendar sync properties
- Improve styling for default project chips and remove button shadows
- Add right-aligned inputs in card components
- Type to search through all available Lucide icons
- Shows icon preview alongside each suggestion
- Live preview of selected icon next to the input field
Add user-configurable options for controlling how events display and
stack in the calendar view:
- slotEventOverlap: toggle visual overlap of timed events
- eventMaxStack: limit stacked events in week/day view
- dayMaxEvents: limit events per day in month view
- dayMaxEventRows: limit event rows per day in month view
Also includes dark mode styling fixes for the timeGrid more-link element
and translations for all supported locales.
Add optional Lucide icon configuration for task statuses, allowing
shape-based status differentiation alongside color coding.
- Add icon field to StatusConfig type
- Render Lucide icons via setIcon() when icon is configured
- Add CSS for icon-based status indicators with theme color support
- Add icon input field to status settings UI
- Add translations for all 8 locales (en, de, es, fr, ja, pt, ru, zh)
Users can configure icons per status in Settings → Task Properties by
entering a Lucide icon name (e.g., check, circle, clock). Icons inherit
the status color and improve accessibility for colorblind users.
- (#904) Add visual highlighting for overdue/past dates on task cards
- (#1128) Allow slashes in NLP context names for hierarchical contexts
- (#1151) Increase mini calendar heatmap color intensity for better visibility
- (#1164) Add priorityWeight formula to default Bases templates
- (#1170) Fix dateCreated/dateModified using custom property names in ICS notes
- (#1171) Fix calendar event toggles not responding to changes after initial load
- (#1198) Fix project links resolving relative to wrong file in Bases views
Rework inline task card CSS to properly handle indented bullet lists:
- Switch from inline-flex to inline display for natural text flow
- Allow title text to wrap naturally within line boundaries
- Add scrollable metadata that stays on same line when space permits
- Use em-based sizing for icons to scale with editor font
- Add proper spacing between metadata categories