Tool Change Log

2025_1128
Fixes 'move subset to bin'
Improves CMD P: 1st press focus search. 2nd Action menu

2025_1125
Removes rich text
Changes format to '1 blank line separates items'
  Simplifies logic.
  Visually groups without need for indents or CSS.
Inserts timestamp on double enter to act as ID
Auto-reopens last used file on new session:
  If user didn't close the file in the previous session
  Providing user uses tool via https:// address
Notifies if browser lacks support for File System Access API

2025_1124
Adds file editor (load, save, save as)
  Uses "File System Access" API
  Shows save button whenever content has changed from saved
Improves message notifications function
Makes CMD click fn a self-contained feature
  Previous extended and depended on syntax highlighter
  Now:
    works directly on any textarea or contentEditable
    Continues to work on removal or disabling of rich text
    Also simplifies rich text function

2025_1120
improve search speed and logic
  (tool updates search data on first search after any user edit)
  on first search, makes a map {item_text:{searchable_data},...}
  on next search:
    if user has made no edits, reuses all data.
    if user has made edits:
      reuses all search data for all unchanged items
        and items with only text case changes (HELLO->hello)
      makes and stores search data for new and changed items
      deletes search data for deleted and old versions of items
  (vs remake search data for all, per search after any edit)
  stores words as tries {h:{e:{l:{l:o}}}}
    avoids storing short words which are prefixes of longer ones
    faster lookup
    re-factors

2025_1118
makes nested slash tags wrap in sync with editor
makes searcher more efficient
  stores per item
    unique regular words over 2 characters to avoid non-content
    stores words starting with punctuation in to search sets:
      with and without leading punctuation
      the query 'e.g.' matches items with '(e.g.)' and ' e.g.'
      the query '(e.g' matches item with '(e.g.)', not ' e.g.'
    slash tag data: full `/a/b/c` and ordered parts `a` `b` `c`
  finding splits query into parts: words and slash tags
    for each query word, checks item has a word starting with it
    for each slash tag query performs fuzzy-ish search:
      to find an item with the tag /animal/bear/cub
      user could search:
        /ani (start of full tag)
        /be (start of a part)
        /a/b/c (matching the start of each part)
        /bear/cub (from the start of any part onwards)
  moves searcher library in separate script
describes search features in intro text

2025_1117
refines valid '/tag' pattern
  tags start and end with A-Za-z0-9, and may have dash in middle
improves action menu
  auto select first item in action menu on each focus
  improves up down keys: filters by group hidden first
improves tool tip mutation observer efficiency
lets '/tag' to start / end parenthetical text  "" '' `` () [] {}
adds `code` highlighting
converts /tags to work like urls:
  click edits, cmd click fires, hover shows clickable tooltip
  disables hover states of CMD clickable items for now
styles popovers minimally
improves syntax highlighting
  swaps textarea to contenteditable to support Safari:
    Safari wraps div and textarea text at different places
    (When text meets right edge of textarea / div)
  debugs safari's contenteditable handling
  puts editable area in front of highlighting area
    (means color properties don't obscure selected text styles)

2025_1116
improves action menu and menu maker
  allows grouping menu options (vs 1 group per menu)
  uses one menu palette for whole app (vs many searchable menus)
  hides and shows possible actions based on current context
    (e.g. only shows actions for a subset when editing a subset)
  presents action menu as palette popover (vs dropdown)
reworks shortcuts
  CMD P Shift = open action menu and focus search actions field
  CMD P       = focus 'search items' input
auto enters 'edit mode' for any subset a search returns
  (vs showing the subset and listing edit as an action option)
adds 'mode switcher' and swaps modes based on search query
  no query    : show editor for all and related actions
  matches     : show subset editor, and related actions
  no matches  : show no editor and only 'other actions'
adds 'Export all' option to main mode's action menu
auto-makes tips for elements made after page load with tip data
makes enter key in search items field context based:
  no query    = focus main editor, place caret before first item
	matches     = focus subset editor, place caret at editor start
	no matches  = add item to main editor, place caret after it
improves tool write up
adds disclaimer info to tool, and menu item
adds '.' to list of characters that end a slash tag
makes clicking each part of a nested tag run a specific search
  allows broad or narrow searches: /area/group/subgroup/specific
adds typewriter scrolling:
  scrolls beyond last line of text area to allow eye-level edits
logs changes
converts tool log to html page
adds no-script message

2025_1115
writes two helper libraries for storing item metadata in codes
  (to incorporate later)
  character string stores item states and facts as boolean flags

2025_1113
auto-applies any changes made, to a loaded subset, to main set:
  - on change or clear the item search bar
  - before performing any action on subset (e.g. move subset)
  (prepares for removing edit subset apply and cancel buttons)
makes UI single column (towards minimal UI: 1 bar, 1 area)

2025_1112
improves handling of non-item lines - text before any first item
  highlights any lines before the first to start with a letter
  inserts new items above the first existing item
Auto selects and scrolls to newly added items
  added via button that uses search bar text as new item text
  or added via ENTER key if search returns no matches

2025_1111
updates syntax highlighter side-project
  adds virtual scrolling
  adds lazy highlighting to only style content in or near view
  parses items on input but item content only when in view range
improves tag matching: `/tag` `/group/tag`, not `/` `//` `/a/`
styles **bold**, *italic*, ~strikethrough~, =mark=, #h1-6
improves custom 'biject' helper library (for IDs: a->z->aa-zz)
shows a 'follow link' link above any hovered item link-text
  click on link text edits it as normal plain text
  cmd+click on link text opens the link

2025_1110
presents searchable menu options like a drop down menu:
  options float over other elements (vs moving layout)
makes clicking tags in items run a search for items with the tag

2025_1109
incorporates rich text editor / syntax highlighter
improves searcher logic on backend
  prepares words in item on filter focus only (vs per keystroke)
makes temp IDs as short as match count will allows
  <10:`0-9`, <100:`00-99`, >:`aa`  (vs all long IDs)

2025_1108
codes a rich text editor / syntax highlighter (to incorporate)
  wraps each item in a block
  makes links in items clickable
  makes tags in items clickable: to trigger a future function
adds escape key functions sequence: 1) select 2) delete 3) fn()
lets "cmd p" auto focus the search field
inserts any selected text to search field on CMD+P shortcut
presents fonts without anti-aliasing
 
2025_1107
uses an input field to filter a textarea of items (tasks) 
populates a separate 'subset' textarea with the matching items
stamps subset items with an ID to allow tracking changes
applies changes made to found items back to original textarea
  keeps the original items in their original place
  deletes the item if user removes from the subset editor
  adds deleted items to a 'bin' area for user to see and restore
  adds any new items user added to subset to main textarea
enables one editor at a time: main or subset
adds 'move' actions to move and group a subset in the main set
  move subset to top or bottom of file, or to first or last item
adds 'bin' option to remove all found items from document to bin
adds basic two column view ALL on left, SOME on right
  for testing and dev purposes
writes and adds tool tip helper function to show tips to user
writes and adds a make_menu function (to use instead of buttons)
  to easily make and control a searchable action menu

Copyright 2025 Greg Abbott.