1. 21 Sep, 2020 2 commits
  2. 19 Sep, 2020 3 commits
    • Jonathan Wilkes's avatar
    • Albert Gräf's avatar
      Fix case-sensitive search in the browser's findbox. · 558ca830
      Albert Gräf authored
      This uses findAndReplaceDOMText(), which apparently looks for
      case-sensitive matches, but the search text entered by the user is
      *always* converted to lowercase. This means that mixed case search terms
      just won't be found, which is bad. (E.g., try searching for "GEM" in the
      toc to see this bug in action.)
      Fixed by just removing the call to toLowerCase() on the search text,
      case-sensitive searches now work as expected, problem solved.
    • Albert Gräf's avatar
      Fix broken keyboard navigation in the help browser. · 5f9e9435
      Albert Gräf authored
      This resolves a long-standing bug (the relevant code is 4-5 years old).
      While it is just one little missing check in the keyboard event handler,
      which is surely just an oversight, this has the dire consequence of
      breaking navigation with the Tab key.
      - The root cause for this issue is in the document.body event listener
        callback, where we always reset the focus to the search text input if
        there's *any* keyboard input (other than a LF or CR on the file
        browser and bookmark buttons) while the focus is on something
        else (such as an item in the toc or in the search results). The
        intention there surely was to enable the user to just start
        typing *anywhere* in the dialog, which is convenient, but has the
        unwanted side-effect of breaking Tab navigation (as well as the cursor
      - The fix is simply to *not* reset the focus if the key event is the Tab
        key. Besides Tab, we also treat the modifier and cursor keys in the
        same fashion, so that these will be handled on the spot rather than
        being forwarded to the search text input. By these means, you can
        still start typing your search terms from anywhere in the dialog, but
        navigation with Tab and Shift+Tab and the cursor keys now also work as
      - Also, why is the div holding the toc items created again and again for
        each item in display_toc()? I moved the corresponding statement,
        div = document.createElement("div"), right before the toc.forEach()
        loop now, which I think is where it really belongs.
  3. 18 Sep, 2020 6 commits
    • Jonathan Wilkes's avatar
    • Albert Gräf's avatar
      Revert "Merge branch 'samthursfield/purr-data-sam/ci-cache-nwjs'" · edb12a4a
      Albert Gräf authored
      This reverts commit 12bd57bd, reversing
      changes made to e9d38d23.
    • Jonathan Wilkes's avatar
      bump to 2.14.1 · 99634144
      Jonathan Wilkes authored
    • Jonathan Wilkes's avatar
    • Albert Gräf's avatar
      Disable the bookmark icon in situations where bookmarking isn't possible... · ccd7ef05
      Albert Gräf authored
      Disable the bookmark icon in situations where bookmarking isn't possible (search results, doc directory).
    • Albert Gräf's avatar
      Various fixes for bugs and cross-platform issues. · 8873a206
      Albert Gräf authored
      - Use canonical paths just about everywhere in the help browser. We want
        to stick to portable, normalized paths as much as possible, to avoid
        funky Windows path names, especially in bookmark files which should be
        portable across different platforms.
      - Fix the generated click_toc() call in display_toc(); we need to
        properly stringify the callback argument there.
      - Update the search field after opening a directory via the file
        browser, so that the search text matches the directory display. Is
        there a reason that we're not already doing this? I don't think so,
        because we're doing the same when clicking a link in the toc.
      - Prevent the doc directory from being bookmarked. There's nothing
        interesting to see there anyway (just subdirectories, no help
        patches). Also, since the toc lives there (in a virtual sense, i.e.,
        the current browser directory is set to this directory whenever the
        toc is displayed), we also avoid an interesting race condition which
        arises if we try to update the toc while we're displaying it. (This
        doesn't seem to happen on all platforms, but I've seen it on the Mac
        at least.)
      - Fix a purely cosmetic issue with the bookmark entries. (Entries with a
        null description were stored as is and then written to the bookmarks
        file. Now the description is just omitted in that case.)
  4. 17 Sep, 2020 12 commits
    • Albert Gräf's avatar
      Add a clickable bookmark indicator. · 230602cb
      Albert Gräf authored
      This takes the form of a little bookmark icon to the right of the file
      browser icon. Just the plain icon indicates that the current directory
      hasn't been bookmarked yet, and that clicking on it will bookmark it.
      If you do this, a little red cross appears on the icon, which reminds
      you that the directory has been bookmarked, and that clicking on the
      icon will remove the bookmark again.
      Note that in general a directory may have been bookmarked multiple
      times, by using the keyboard shortcut (Ctrl-D). In this case the red
      cross will stick until the last instance of the bookmark has been
      The icons come from the Manjaro KDE Breath theme (a variation of the
      KDE Breeze theme), and we also replaced the folder icon with a matching
      icon from the same theme. Thanks are due to the Manjaro and KDE teams!
      While we were at it, we also fixed the vertical alignment of the icons
      with respect to the search field, they are properly aligned to the
      middle now.
    • Albert Gräf's avatar
      Add a simple bookmark facility to the help browser. · c049be4f
      Albert Gräf authored
      The Ctrl+D keyboard command in the help browser adds a bookmark for the
      current browser directory, Shift+Ctrl+D removes it again. Note that the
      same directory can be bookmarked multiple times (using Ctrl+D), in which
      case the same number of delete commands (Shift+Ctrl+D) are required to
      delete all instances of the bookmark again; at any time, the oldest
      instance will be removed first.
      This also provides a (really simplistic) way to reorder bookmarks, since
      you can re-add an existing bookmark and delete its older instance
      afterwards, which effectively moves the bookmark to the end of the
      bookmarks section. It goes without saying that this becomes rather
      laborious if you have to manage a lot of bookmarks, so in that case you
      might prefer to just edit the bookmarks file (see below) in your
      favorite text editor instead.
      Bookmarks are shown in their own "Bookmarks" section at the bottom of
      the toc, after the built-in toc sections. The "Bookmarks" section title
      will be visible only if there are any bookmarks. As with the built-in
      toc items, clicking on the title of a bookmark takes you to the
      corresponding directory, which may be in the doc or extra hierarchy, or
      anywhere else on your hard disk. If a <dir>-meta.pd file in pddp format
      is present in the bookmarked directory, the browser will try to extract
      title and description from the NAME and DESCRIPTION tags in that file,
      otherwise it simply uses the basename of the directory as title and
      leaves the description empty.
      The bookmarks are stored permanently on disk as a JSON file in the users
      home directory, named .purr-data/bookmarks.json on Linux and the Mac,
      and AppData/Roaming/Purr-Data/bookmarks.json on Windows. This file is
      read each time the help browser opens, so the bookmarks persist across
      program invocations, and you can even edit the file manually and reopen
      the help browser to make it pick up your changes while Purr Data keeps
    • Jonathan Wilkes's avatar
      Merge branch 'vu-meter-scale-y' · 6f7189ab
      Jonathan Wilkes authored
    • Jonathan Wilkes's avatar
      Merge branch 'fix-vu-dialog-size' · c63971fc
      Jonathan Wilkes authored
    • Ivica Bukvic's avatar
    • Jonathan Wilkes's avatar
    • Jonathan Wilkes's avatar
    • Jonathan Wilkes's avatar
    • Ivica Bukvic's avatar
      Removed excess y size in the VU dialog · d43c0afb
      Ivica Bukvic authored
    • Sam Thursfield's avatar
      ci: Cache downloaded nw.js tarball · 04e04e8c
      Sam Thursfield authored
      This saves time and bandwidth.
      Closes #668
    • Sam Thursfield's avatar
      build: Use existing nw.js tarball if present · 40374b3d
      Sam Thursfield authored
      Previously we would redownload the tarball in all cases, saving it
      as nwjs-*.tar.gz.1 or similar.
    • Sam Thursfield's avatar
      build: Split nwjs_version_for_platform.sh script out of tar_em_up.sh · 9e01be4d
      Sam Thursfield authored
      This helps the CI to discover the necessary nw.js tarball while keeping
      the logic in one place.
  5. 16 Sep, 2020 2 commits
  6. 15 Sep, 2020 2 commits
    • Albert Gräf's avatar
      Help browser: add an index cache to speed up launch times. · 77819826
      Albert Gräf authored
      - Rebuilds and caches the search index if there is no cache yet, or if
        the cache is outdated (i.e., any cached directory or its parent was
        removed or modified since the cache was last created).
      - Keeps track of the modification times of all cached directories of
        help files, as well as their parent directories, in order to determine
        when the cache is outdated. The parents are tracked to catch changes
        where new sibling directories are added. This may produce some false
        positives and still isn't 100% foolproof, but it is as close as we can
        get if we still want to achieve substantial speedups.
      - Automatically rebuilds the index (and cache) from scratch, as soon as
        the help browser is relaunched after changes to the browser
        configuration in the gui prefs. So there's no need any more to
        relaunch Purr Data to have these changes take effect.
      Both the index cache and the directory timestamps are maintained as
      ordinary text files with a straightforward syntax (basically
      colon-delimited csv) in the user's home directory. The files are located
      in configuration directories (.purr-data on Linux and Mac,
      AppData/Roaming/Purr-Data on Windows). Thus it's easily possible to
      modify these files with external tools (e.g., if we want to upgrade the
      file format in the future.)
    • Guillem Bartrina's avatar
  7. 14 Sep, 2020 7 commits
  8. 13 Sep, 2020 6 commits