Skip to content

Releases: darrenldl/docfd

12.0.0-alpha.10

08 Jul 13:17
Compare
Choose a tag to compare
  • Added basic autocomplete to filter field

  • Improved script save autocomplete to insert longest common prefix

  • Fixed script save autocomplete so it no longer erases original text when no recommendations are available

12.0.0-alpha.9

03 Jul 09:20
Compare
Choose a tag to compare
  • Disabled Tab handling in edit fields to reduce friction in UX

  • Added nano-style autocomplete to save commands field with listing of existing scripts

12.0.0-alpha.8

01 Jul 15:30
Compare
Choose a tag to compare
  • Changed --commands-from to --script

  • Added "save commands as script" and "load script" functionality to streamline reusing of commands

    • Try it by searching as usual, then press Ctrl+S to save and Ctrl+O to load
    • Feel free to leave a comment at GitHub discussion here to let me know your thoughts
  • Improved content view pane scrolling control

    • The internal counter no longer scrolls past the limit

12.0.0-alpha.7

25 Jun 14:49
Compare
Choose a tag to compare
  • Fixed interactive use of --commands-from

  • Added mark listed and unmark listed to template command history file help info

12.0.0-alpha.6

23 Jun 14:07
Compare
Choose a tag to compare
  • Fixed not operator parsing

    • Previously not ext:txt and not ext:md would be parsed as not (ext:txt and not ext:md), which is not what is typically expected

    • not now binds tightly, so not ext:txt and not ext:md is parsed as (not ext:txt) and (not ext:md)

12.0.0-alpha.5

19 Jun 16:20
Compare
Choose a tag to compare
  • Added content view pane scrolling

    • Controlled by -/=
  • Removed extraneous marking functionality

    • mark unlisted
    • unmark unlisted
  • Added "..." as a shorthand to content:"..." to filter expression

    • For example, content:keyword AND path-date:>2025-01-01 can be written as "keyword" AND path-date:>2025-01-01

    • The quotation is necessary to differentiate between typos
      and actual query, otherwise incorrect input like
      pathfuzzy:... would be parsed as content queries instead

12.0.0-alpha.4

16 Jun 13:25
Compare
Choose a tag to compare
  • Added additional marking functionality

    • mark listed (ml) marks all currently listed documents
    • mark unlisted (mL) marks all currently unlisted documents
    • unmark listed (Ml) unmarks all currently listed documents
    • unmark unlisted (ML) unmarks all currently unlisted documents
  • unmark all is moved to key binding Ma

  • Reworked key binding info grid to pack columns more tightly

  • Added WSL clipboard integration

  • Minor fix in command history file template help text

  • Added Tab key to key binding info grid

  • Added key binding info about scrolling through document list and search result list

  • Minor fix for {line_num} placeholder handling in --open-with

    • This should always be usable for text files but previously
      Docfd crashes when {line_num} is specified in --open-with
      and user opens a text file when no search has been made

    • This is fixed by defaulting {line_num} to 1 when
      there are no search results present

  • Minor fix for {page_num} and {search_word} placeholders handling in --open-with

    • This should always be usable for PDF files but previously
      Docfd crashes when {page_num} or {search_word} is specified in --open-with
      and user opens a PDF file when no search has been made

    • This is fixed by defaulting {page_num} to 1
      and {search_word} to empty string when
      there are no search results present

12.0.0-alpha.3

06 Jun 08:01
Compare
Choose a tag to compare
  • Users are advised to recreate the index DB

  • Adjusted SQL indices and swapped to specialized SQL queries
    for exact and prefix search terms, e.g. 'hello, ^worl

    • Handling of these terms is now 10-20% faster depending on the document
  • Fixed command history recomputation not using the reloaded version
    of document store

    • This issue is most noticeable when you've edited a text file after hitting Enter in Docfd (after which Docfd reloads the file for you),
      and you hit h to modify the command history

    • The replaying of the command history would use the old copy of the file instead of the new edited version of the text file

  • Added missing SQL transaction in code path for reloading a single document

    • Previously, reloading a single document was incredibly slow, which was very noticeable if you edited a text file
      after hitting Enter in Docfd, unless the text file was very small
  • Updated --paths-from argument handling

    • Added --paths-from - for accepting list of paths from stdin

    • Adjusted to accept comma separated list of paths, e.g. --paths-from path-list0.txt,path-list1.txt

  • Removed builtin piping to fzf triggered by providing ? as a file path, e.g. docfd ?

    • The --paths-from - handling makes this obsolete and a lot less flexible by comparison
  • Fixed interaction between search and filter

    • Previously, starting a search would incorrectly cancel an ongoing filtering operation.
      Now only a new filtering operation can cancel an ongoing filtering operation.
      A new search still cancels an ongoing search.

    • Starting a new filtering operation also still cancels any ongoing search. This is fine since the search results
      are refreshed after the filtering has been completed.

      • The refreshing of the search results also means that the following sequences of events are still handled correctly,
        namely they still arrive at the same normal form of the document store:

        • Example 1:

          • (0) Filter f_exp0 (filtering is canceled by step (2), but the updating of filter expression is never canceled)
          • (1) Search s_exp0 (search is canceled by step (2), but the updating of search expression is never canceled)
          • (2) Filter f_exp1 (refreshes search results using s_exp0)
        • Example 2:

          • (0) Search s_exp0 (search is canceled by step (1), but updating of search expression is never canceled)
          • (1) Filter f_exp0 (this stage is canceled by step (2),
            either during the filtering or during the
            refreshing of search results, but the updating
            of filter expression is never canceled)
          • (2) Filter f_exp1 (refreshes search results using s_exp0)
  • Renaming query expression/language to filter expression/language in help text and documentation

  • Added a separate loading indicator for filter field

  • Fixed concurrency issue where an update of document store may cause the
    filter field and search field in UI to be out of sync with the actual
    filter expression and search expression used by the underlying document store

    • Suppose we have the following sequence of events:

      • (0) Document store store0 carries filter expression
        f_exp0 and search expression s_exp0, which we write
        as pair (f_exp0, s_exp0)

      • (1) User initiates filter/search operation by placing (f_exp1, s_exp1) into the input fields.

        We name the document store resulting from this filter/search operation as store1a,
        which carries (f_exp1, s_exp1) when finalized.

      • (2) While filter/search operation is ongoing,
        user drops a set of documents from the
        current document store. Since store1a is not
        finalized yet, the current document store is still store0, thus the new document store encoding the result of the drop operation, store1b, is computed from store0 instead of store1a.

        In other words, both store1a and store1b share
        store0 as their parent.
        Note that store1b carries (f_exp0, s_exp0) as
        inherited from store0,
        since a drop operation does not alter the filter expression or search expression.

      • (3) As a drop operation immediately updates the document store
        and cancels ongoing filter/search operation, step (2) canceled the computation of store1a, and instead places store1b as the current document store.

    • However, this means the input fields are (f_exp1, s_exp1)
      while the current document store store1b actually carries
      (f_exp0, s_exp0).

      The fix in this update is then to add an
      extra "sync from input fields" step whenever a document store
      is updated. To illustrate, we continue from the above
      sequence of events, where the updated version of Docfd
      carries out the following step missing from previous
      versions.

      • (4) Update input fields to (f_exp0, s_exp0)
    • This addresses the mismatch between the underlying document store and the UI input fields.

    • In practice this is very unlikely to occur with human input, as the modes that update document store
      are disabled if document store manager is carrying out any ongoing filtering or search.

      However, since the UI is async, there will be gaps in timing between UI input/feedback and actual updates of values,
      opening up to TOCTOU problems.
      So there is always a chance that a document store update will be requested before the modes are are disabled.

  • Made interrupted filter/search operation to not yield a document store at all instead of yielding an empty document store
    to simplify reasoning about filter/search cancellations and UI fields being in sync

12.0.0-alpha.2

19 May 08:07
Compare
Choose a tag to compare
  • Added path-date clause to query expression

    • This allows filtering based on date recognized from document path, for example, path-date:>=2025-01-01 AND path-date:<2025-02-01
      would allow /home/user/meeting-notes-2025-01-10.md to pass through

    • This gives a very lightweight method of attaching date information to any document

    • See relevant Wiki page for details

12.0.0-alpha.1

12 May 18:19
Compare
Choose a tag to compare
  • Added a more powerful filter query mode that replaces the filter glob mode and "pipe to fzf" feature

    • Filter query mode uses a proper query language that supports file path globbing and file path fuzzy matching among other features

    • This mode uses key binding f

  • Removed q exit key binding to avoid accidental exiting