Commit graph

351 commits

Author SHA1 Message Date
callumalpass
d60ceace4b Tighten CSS linting and selector scopes 2026-05-14 23:06:37 +10:00
callumalpass
15d3555458 Expand modal markdown editor hit area 2026-05-14 22:56:41 +10:00
callumalpass
7da3572bac Move embedded editor styling to CSS 2026-05-14 22:56:41 +10:00
callumalpass
da71c84926 Clean up lint and modal styling 2026-05-14 22:04:48 +10:00
callumalpass
9d0665e82f Clean up CSS lint issues 2026-05-14 21:06:30 +10:00
callumalpass
564ee354ca Resolve remaining lint warnings 2026-05-13 08:17:35 +10:00
callumalpass
490faab1bc Use official Obsidian Bases value rendering 2026-04-26 18:57:21 +10:00
callumalpass
f296f3daf9
Merge pull request #1793 from renatomen/feat/optional-tagging-pomodoro-time-tracking
feat: native tag autocomplete in time entry descriptions (#1342)
2026-04-26 18:08:16 +10:00
Renato Mendonca
5be68f4d8b fix: align time entry description editor text to the left 2026-04-13 19:07:52 +12:00
Renato Mendonca
13ceb34720 feat: replace time entry description textarea with Obsidian markdown editor (#1342)
- 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
2026-04-13 18:28:13 +12:00
Renato Mendonca
390a1751a0 fix: align task card chevrons with subgroup header chevrons
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.
2026-04-12 22:56:54 +12:00
Renato Mendonca
1b6b52f6a4 fix: restore subgroup indentation in TaskList views 2026-04-11 17:18:12 +12:00
callumalpass
72421907a7 Add modal task cards for subtasks and dependencies 2026-03-29 19:31:09 +11:00
callumalpass
26712c4f7d fix: polish manual ordering drag reorder 2026-03-29 07:35:51 +11:00
ac8318740
99494510f1 fix(drag-reorder): replace line indicator with gap/slot UX and fix drag bugs
- 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>
2026-03-29 07:32:29 +11:00
ac8318740
a18f58d3e4 feat(task-list): add drag-to-reorder with shared sort_order algorithm
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.
2026-03-29 07:32:29 +11:00
ac8318740
937e5557e4 feat(kanban): add within-column drag-to-reorder with sort_order
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
2026-03-29 07:32:29 +11:00
callumalpass
c3863baacc chore: checkpoint current tasknotes state 2026-03-25 08:08:28 +11:00
callumalpass
5d5abc2d88 fix(issue-1630): align TaskNote widget with readable line width 2026-02-21 08:46:42 +11:00
callumalpass
69b8ae2506 feat: add checklist progress task-card property with Bases support 2026-02-17 20:02:45 +11:00
callumalpass
67cee1f212 fix(modal): prevent buttons from overlapping content on mobile (#1595)
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.
2026-02-15 11:12:05 +11:00
callumalpass
f9a053b6b6 fix(modal): enable scroll in edit modal when content exceeds viewport (#1577)
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.
2026-02-15 11:03:35 +11:00
callumalpass
f2eb40c089 fix: remove scale animation from inline task widgets (#1456)
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.
2026-02-08 19:08:41 +11:00
callumalpass
0238a7cd0a fix: restore pointer cursor fallback on interactive elements (#1470) 2026-02-08 19:05:31 +11:00
callumalpass
24b4a41610 fix: show calendar colors and today indicator in agenda/list view (#1501)
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.
2026-02-08 18:48:59 +11:00
callumalpass
1289b73a98 fix: prevent expanded task modal buttons from being cut off (#1532)
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.
2026-02-08 18:23:14 +11:00
callumalpass
ab3e1e1703 fix: improve Integrations tab spacing and section ordering
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.
2026-02-08 13:56:23 +11:00
Normen Müller
1183d103f0 feat: keep kanban headers visible on scroll 2026-01-10 13:13:54 +01:00
callumalpass
e7cb2ae7f8 refactor(settings): Move inline styles to CSS classes in integrations tab
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.
2026-01-04 16:07:40 +11:00
callumalpass
4c29a1e806 feat(#1205): Add Google Calendar export for tasks
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
2026-01-04 15:49:25 +11:00
callumalpass
045b05e065 test(e2e): document UI issues and fix pomodoro button affordance
- Add 5 new test.fixme() tests documenting discovered UI issues:
  - Kanban columns showing empty space instead of task cards
  - Create task modal icons lacking text labels
  - Year view task badges truncated and unreadable
  - Edit modal DETAILS placeholder with low contrast
  - (Fixed) Pomodoro timer +/- buttons lacking visual affordance

- Fix pomodoro timer duration adjustment buttons:
  - Add visible background and border styling
  - Add hover state with accent color border
  - Add font-weight and cursor pointer for better UX

- Fix flaky e2e tests by adding timeout catches for click operations
2026-01-01 00:15:46 +11:00
callumalpass
f2c893f9af feat(kanban): add optional status icon consolidation in column headers
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.
2025-12-31 10:00:59 +11:00
callumalpass
a3d2996a97 fix: use theme accent color for today column in week/day views
Today's column now uses a subtle tint of the theme accent color instead of
FullCalendar's default yellow background for consistent styling.
2025-12-31 09:34:09 +11:00
Lars Marowsky-Bree
b339129b85 feat: show status icon+label in Kanban column headers, hide on cards
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
2025-12-27 13:11:21 +01:00
Lars Marowsky-Bree
cf09eaaaa5 fix: add mobile touch drag-and-drop for Kanban view
Fixes #1399
2025-12-24 01:07:32 +01:00
callumalpass
33ba082835 fix: remove focus glow from title inputs in task modal
Override Obsidian's default input focus box-shadow for both
.title-input and .title-input-detailed elements.
2025-12-08 21:24:45 +11:00
callumalpass
eda5779058 style: improve task modal layout and styling
- 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)
2025-12-08 21:18:43 +11:00
callumalpass
8c89c70f58 feat: add split layout for task modals on wide screens
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.
2025-12-07 19:35:17 +11:00
callumalpass
a2eee2d217 style(settings): change documentation link from button to simple link
Remove button-like styling (padding, border-radius, background hover)
and use standard link styling with underline on hover instead.
2025-12-07 14:25:59 +11:00
callumalpass
c607c7d408 fix: archive button too narrow on mobile in task edit modal
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.
2025-12-07 13:27:45 +11:00
callumalpass
d239cd3be8 feat(settings): add documentation link to settings panel
Add a prominent link to tasknotes.dev documentation below the tab
navigation in the settings panel.
2025-12-07 12:42:23 +11:00
callumalpass
01ac9ee003 fix(#1301): remove blank space from inline task wikilinks when metadata is empty
Only apply margin and min-width to metadata container when it has content,
preventing blank space when all inline task properties are disabled.
2025-12-07 12:09:53 +11:00
callumalpass
57d4d10d7e feat: add custom "New Task" button to Bases views
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
2025-12-05 19:54:52 +11:00
callumalpass
d9c4b2f196 refactor: consolidate property settings into unified Task Properties tab
- 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
2025-12-02 09:29:19 +11:00
callumalpass
be43ee6029 feat: add icon autosuggestion for custom status settings (#1277)
- Type to search through all available Lucide icons
- Shows icon preview alongside each suggestion
- Live preview of selected icon next to the input field
2025-12-01 21:22:48 +11:00
callumalpass
887487448a fix: respect Kanban column width setting on mobile (#1279, #1282)
- Remove mobile media query constraints that overrode user's column width setting
- Add spacing between task title and metadata in inline task widgets
2025-12-01 07:22:45 +11:00
callumalpass
00cc503384 feat: add calendar event stacking configuration options (#1257, #1064)
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.
2025-11-30 18:45:53 +11:00
callumalpass
2af2bcdad1 feat: add custom icon support for task statuses (#1245, #793)
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.
2025-11-30 17:43:16 +11:00
callumalpass
4ef3fc482c fix: multiple bug fixes and UI enhancements
- (#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
2025-11-30 17:16:16 +11:00
callumalpass
3535b8170a fix: improve inline task embed layout for indented bullets (#1157)
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
2025-11-30 11:32:47 +11:00