Skip to content

Comments

Implement new '/Remove empty elements from recent notes' command#694

Merged
jgclark merged 7 commits intomainfrom
feat-tidy-recent-notes-a0bd7
Nov 17, 2025
Merged

Implement new '/Remove empty elements from recent notes' command#694
jgclark merged 7 commits intomainfrom
feat-tidy-recent-notes-a0bd7

Conversation

@jgclark
Copy link
Collaborator

@jgclark jgclark commented Nov 3, 2025

#691 for plugin version to 1.16.0.

…update plugin version to 1.16.0. Adjust error handling in template rendering and improve documentation in README and CHANGELOG.
@jgclark jgclark requested a review from dwertheimer November 3, 2025 09:26
@jgclark jgclark self-assigned this Nov 3, 2025
@dwertheimer
Copy link
Collaborator

dwertheimer commented Nov 12, 2025

@jgclark This does not work properly for me. I am going to have to recover all my notes from backup.

I just ran it and it, and for instance, this note:

Screen Cap 2025-11-12 at 15 05 41@2x

ended up with one blank todo on the page

Screen Cap 2025-11-12 at 15 09 53@2x

Log for that one example:

2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251111.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251111' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251111'

@dwertheimer
Copy link
Collaborator

The full log:

Executing function 'removeEmptyElementsFromRecentNotes'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: removeEmptyElementsFromRecentNotes() starting with no params
2025-11-12 15:09:45 | DEBUG | removeEmptyElementsFromRecentNotes :: - found 55 notes to process
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20250807.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20250807' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 12 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 7 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 8 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 8
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20250807'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20250906.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20250906' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 11 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20250906'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20250918.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20250918' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: No empty elements found to remove in note '20250918' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20250927.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20250927' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 12 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 5 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20250927'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251005.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251005' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251005'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251014.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251014' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 13 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 11 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 6 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 8 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 9 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 9
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 8
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251014'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251019.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251019' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 2 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251019'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251022.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251022' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 6 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251022'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251029.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251029' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 7 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 9 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 16 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251029'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251031.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251031' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 2 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 0 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 1 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 12 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 1
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251031'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251101.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251101' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 11 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251101'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251103.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251103' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251103'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251104.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251104' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:45 | INFO  | removeEmptyElements :: Removed empty elements from note '20251104'
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251105.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:45 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251105' 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:45 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 11 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:45 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251105'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251106.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251106' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251106'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251107.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251107' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 13 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 11 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 0 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 6 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 8 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 9 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 9
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 8
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251107'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251108.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251108' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251108'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251109.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251109' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251109'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251110.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251110' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 10 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 8 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 6 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 7 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 8 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 8
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 7
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 6
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251110'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251111.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251111' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 9 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 7 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 1 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 3 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 4 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 4
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 3
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251111'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "20251112.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '20251112' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty list para on line 32
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 40 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 38 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 36 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 34 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 32 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 31 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 30 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 6 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 4 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 3 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 27 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 28 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 29 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 30 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 31 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 31
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 30
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 29
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 28
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note '20251112'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Ableton Keyboard Shortcuts.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Ableton Keyboard Shortcuts' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Ableton Keyboard Shortcuts' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Ableton Live Tracks.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Ableton Live Tracks - Playback Backing Tracks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 11 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 78 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 80 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 82 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 84 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 87 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 89 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Ableton Live Tracks - Playback Backing Tracks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Anique Live Music.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Anique Live Music - Playback Backing Tracks - IEM etc.' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty title para on line 37
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 31 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 21 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 26 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 30 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 31 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 32 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 42 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 47 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 53 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 64 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 70 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 76 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 32
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 31
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Anique Live Music - Playback Backing Tracks - IEM etc.'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Personal Misc/Beaver Creek Instructors.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Beaver Creek Instructors' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 7 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 12 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 17 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 18 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 34 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 48 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 49 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 50 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 70 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 50
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 49
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 18
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Beaver Creek Instructors'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Family / Projects/Cobalt Boat Sale.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Cobalt Boat Sale' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 2 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 8 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Cobalt Boat Sale' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Shared/Dashboard v2.3.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Dashboard Plugin v2.3.x 🧩' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 20 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 44 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 47 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 82 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 90 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 104 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 119 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 142 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Dashboard Plugin v2.3.x 🧩' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "@Meta/Dashboard changed note data.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Dashboard changed note data' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 823 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Dashboard changed note data' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Duke Interviewing/Duke Interviewing Project.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Duke Interviewing Project' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 5 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 9 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 10 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 10
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Duke Interviewing Project'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/FOH Instructions.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'FOH Notes: 🎧 Anique Rose (Playback + Live Vocal)' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 8 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 10 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 12 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 22 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 24 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 26 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 28 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 32 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 37 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 39 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 41 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 47 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 49 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 57 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 59 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 63 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 65 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 69 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'FOH Notes: 🎧 Anique Rose (Playback + Live Vocal)' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/IEM and Equipment Setup for Playback.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'IEM and Equipment Setup for Playback' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty list para on line 31
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 20 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'IEM and Equipment Setup for Playback'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Personal Misc/Kids/Kenna/Kenna BMW Money.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Kenna BMW Money' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 2 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 8 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 26 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Kenna BMW Money' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Personal Misc/Kids/Kenna/Kenna Mercedes 2006 CLK500.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Kenna Mercedes 2006 CLK500' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Kenna Mercedes 2006 CLK500' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Personal Misc/Doctor/LPR GERD Reflux etc.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'LPR GERD Reflux etc' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 6 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 16 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 26 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 29 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 31 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 33 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 35 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 37 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 39 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 41 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 43 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 45 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 48 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 50 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 52 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 54 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 56 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 58 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 60 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 62 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 64 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 66 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 68 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 70 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 72 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 74 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 76 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 78 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 80 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 82 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 84 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 86 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 88 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 90 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 92 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'LPR GERD Reflux etc' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "CTI/CTI Meeting Notes/Mark W TDG - Daniel Mayhew.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Mark W TDG - Daniel Mayhew' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 8 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 13 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 17 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 20 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 23 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 25 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Mark W TDG - Daniel Mayhew' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Medawar/Projects/Medawar Todos  Tasks.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Medawar Todos / Tasks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Medawar Todos / Tasks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Shows/NYC Mercury Lounge 2025-12-07.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'NYC Mercury Lounge 2025-12-07' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 11 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 14 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'NYC Mercury Lounge 2025-12-07' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "CTI/CTI Meeting Notes/Nima Conversations Running Notes.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Nima Conversations (Running Notes)' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 16 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 25 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 43 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 65 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Nima Conversations (Running Notes)' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Show Wiring v1.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Playback Tracks - Diagram v1 - Simple but Flexible' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 95 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 94 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 93 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 100 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 104 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 109 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 117 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 127 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 133 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 139 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 145 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 152 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 157 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 163 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 165 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 178 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 180 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Playback Tracks - Diagram v1 - Simple but Flexible'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Playback Tracks - from Studio to Stage.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Playback Tracks Annotated - from Studio to Stage FS2S' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 74 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Playback Tracks Annotated - from Studio to Stage FS2S' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/journal-folder/6d 2 2 2 2 2.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Prospect2 Overview' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Prospect2 Overview' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Recording clips on single timeline in Logic Pro.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Recording and cutting multiple audio clips on single timeline in Logic Pro - for cues' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Recording and cutting multiple audio clips on single timeline in Logic Pro - for cues' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Rehearsal Setup.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Rehearsal Setup for Playback Tracks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 51 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 57 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 59 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 61 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 101 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 107 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 113 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 114 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 114
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Rehearsal Setup for Playback Tracks'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Show Day Checklist - Playback Tracks.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Show Day Checklist - Playback Tracks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 3 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 12 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 14 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 28 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 30 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 41 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 43 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 49 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 51 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 59 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'Show Day Checklist - Playback Tracks' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "Projects/Personal Projects/Anique Music/Studio to Stage Video Links.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Studio to Stage Video Links for Backing Tracks - Playback - FS2S - Ableset, etc.' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 5 (no content and no subheadings with content)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 5 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 9 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 41 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 44 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 45 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 45
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 5
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Studio to Stage Video Links for Backing Tracks - Playback - FS2S - Ableset, etc.'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "@Templates/Self-Running Templates/TemplateRunner Apply Note Variables.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'TemplateRunner: Apply Note Variables' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 7 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 266 is empty (first in sequence)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'TemplateRunner: Apply Note Variables' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/foo.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'Untitled' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty title para on line 1
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing heading para on line 0 (no content and no subheadings with content)
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'Untitled'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "@Templates/zCurrentTest/crashtest dummy.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'crashtestdummy' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 7 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 8 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 8
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'crashtestdummy'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "@Templates/zCurrentTest/crashtest dummy 2.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'crashtestweather' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 6 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 9 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 12 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 15 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 17 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 21 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 26 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 28 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 32 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 37 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 40 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 43 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 44 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 48 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 49 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 51 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 54 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 49
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 44
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'crashtestweather'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/gh.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'gh' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'gh' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/gh 2.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'gh' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'gh' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/task test note.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'task test note' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: No empty elements found to remove in note 'task test note' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "DELETEME/this is a test of sorting.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note 'this is a test of sorting' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 15 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 16 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 17 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 18 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 19 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 20 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 21 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Line 23 is empty (first in sequence)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 24 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 25 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 26 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Marking empty para on line 27 for removal (consecutive empty)
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 27
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 26
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 25
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 24
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 21
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 20
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 19
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 18
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 17
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty para on line 16
2025-11-12 15:09:46 | INFO  | removeEmptyElements :: Removed empty elements from note 'this is a test of sorting'
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "@Templates/Daily Note/Daily Note Template.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:46 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '📅 Daily Note Template' 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:46 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:46 | DEBUG | removeEmptyElements :: Removing empty list para on line 86
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 92 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 88 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 86 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 85 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 84 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Line 84 is empty (first in sequence)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Marking empty para on line 85 for removal (consecutive empty)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Line 87 is empty (first in sequence)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Marking empty para on line 88 for removal (consecutive empty)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing empty para on line 88
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing empty para on line 85
2025-11-12 15:09:47 | INFO  | removeEmptyElements :: Removed empty elements from note '📅 Daily Note Template'
2025-11-12 15:09:47 | DEBUG | np.Tidy v1.16.0 :: Starting removeEmptyElements() with filenameIn: "CTI/Corporate/_Folder_Link.md", stripAllEmptyLinesArg: , preserveHeadingStructure: false
2025-11-12 15:09:47 | INFO  | np.Tidy v1.16.0 :: Starting removeEmptyElements() for note '🔗 CTI/Corporate' 
2025-11-12 15:09:47 | DEBUG | np.Tidy v1.16.0 :: stripAllEmptyLinesArg:  typeof=string / stripAllEmptyLines: 
2025-11-12 15:09:47 | DEBUG | np.Tidy v1.16.0 :: preserveHeadingStructure: false typeof=boolean / preserveHeadings: false
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing heading para on line 2 (no content and no subheadings with content)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Line 1 is empty (first in sequence)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Marking empty para on line 2 for removal (consecutive empty)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Line 4 is empty (first in sequence)
2025-11-12 15:09:47 | DEBUG | removeEmptyElements :: Removing empty para on line 2
2025-11-12 15:09:47 | INFO  | removeEmptyElements :: Removed empty elements from note '🔗 CTI/Corporate'
2025-11-12 15:09:47 | INFO  | removeEmptyElementsFromRecentNotes :: Removed empty elements in 33 of 55 recent notes, in 1,834ms

@jgclark
Copy link
Collaborator Author

jgclark commented Nov 13, 2025

@jgclark This does not work properly for me. I am going to have to recover all my notes from backup.

Major ouch. Sorry to hear this.

So, I assumed the basic function was working for you, and I was just extending it to:

  • cover your earlier request about removing all multiple consecutive newlines
  • apply it to all recent notes.
    Therefore I'm also very surprised to see this.

From the screenshot I can see that (in the terms of this function) you have a number of headings without any content -- e.g. lines 3 and 6. So I'd expect those to get removed. And the empty task should be removed, but no others.

I will look further at this as first priority.

@jgclark
Copy link
Collaborator Author

jgclark commented Nov 13, 2025

I've tested on your note content copied into a test regular note and it works OK.
Also tested in a daily note, and it works OK.
Also tested on the new command that runs on recent notes, and it did 34 notes of mine without problem.
So I'm stuck. I have though made the logging more informative.

@dwertheimer
Copy link
Collaborator

@jgclark I am still trying to find the rhyme/reason for the deleted notes I reported above but a couple of observations in the meantime...

  1. I ran the command on this single note:
Screen Cap 2025-11-14 at 08 58 23@2x And it (correctly) removed everything in the note In retrospect, I wonder if it should at least keep a line 1 heading/title in this case -- we certainly would in the case of a project note. Maybe we should do the same with Calendar notes. Would love your thoughts on that?
  1. After cleaning, there is often a blank line at the top.
Screen Cap 2025-11-14 at 09 17 33@2x

becomes:

Screen Cap 2025-11-14 at 09 16 37@2x

@dwertheimer
Copy link
Collaborator

I have just run the command on many individual notes and it works as advertised. I cannot re-create this bug I reported previously, and I'm not sure what to do about it.

So I added in some code that does a sanity check looking for meaningful content that should not have been wiped out but the note was emptied. See what you think.

Screen Cap 2025-11-14 at 09 55 33@2x

@dwertheimer
Copy link
Collaborator

@jgclark One highly problematic thing that I just noticed is that it deletes the content from @templates also (and many are by-design devoid of content under headings). So it definitely needs to ignore @templates in its scan.

@jgclark jgclark merged commit 04efb52 into main Nov 17, 2025
2 of 4 checks passed
@jgclark jgclark deleted the feat-tidy-recent-notes-a0bd7 branch November 17, 2025 17:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants