Skip to content

v2.1.0

Choose a tag to compare

@davidfstr davidfstr released this 16 Nov 02:24
· 439 commits to main since this release

This release of Crystal focuses on improving the experience of downloading a
website through a web browser. In particular, a progress bar is displayed when
navigating to an undownloaded page, it is possible to create a named root URL
on the Not in Archive Page, and the Fetch Error page provides a convenient
button to retry downloading the page.

  • Browsing improvements

    • When visiting a page that hasn't been downloaded,
      a progress bar is now shown in the browser.
    • Not in Archive page improvements:
      • The Not in Archive page now allows you to provide a name when creating
        a new root URL.
      • The Source dropdown on the Not in Archive page uses the same labels
        as the Source dropdown in the New Group Dialog.
      • When a served page tries to display an undownloaded image
        that isn't covered by a URL or a Group, show a prominent red box with
        an X rather than showing the browser's generic broken image icon.
    • When visiting a Fetch Error for a page that didn't download successfully,
      there is now a "Retry Download" button that will delete the error and
      try to download the page again.
  • Workflow improvements

    • For projects that consistently give names to Root URLs and Groups,
      it is now possible to distinguish Root URLs and Groups more easily
      by changing the title format from "URL - Name" to "Name - URL".
    • Download tasks can be right-clicked to copy their related URL (pattern)
      or view the related URL in a browser.
    • Several standard menuitems are now present and work:
      • The "New Project..." menuitem can be used to create a different project
        when another project is already open.
      • The "Open Project..." menuitem can be used to open a different project
        when another project is already open.
      • The "About Crystal" menuitem shows information about Crystal.
    • Some focus bugs were fixed, making keyboard-only navigation smoother:
      • After the first root URL is created it is now focused in the
        Entity Tree. Previously it was selected but not focused.
      • When the View action is triggered by a keyboard accelerator
        the focused UI element will no longer unfocus.
  • Parsing improvements

    • New projects default to using the faster lxml parser rather than BeautifulSoup.
  • Downloading improvements

    • Experimental: SOCKS v5 proxies are supported for tunneling downloads
      through a remote network location. Proxy authentication is not yet supported.
      • You must start Crystal with --enable-incomplete-feature=Proxy
        to use this feature.
    • Warn if HTTP 4xx or 5xx error while downloading a URL, on stderr,
      to make it easy to notice when a domain starts repeatedly refusing requests.
  • Serving improvements

    • Ignore timeout errors when responding to a request.
  • CLI improvements

    • When Crystal is started with --shell and all windows are closed,
      the shell and app exit automatically.
    • crystal --version will print Crystal's version number.
  • Support changes (Breaking Change)

    • macOS 14+ is now the minimum macOS version.
      Drop support for macOS 13.
  • Minor fixes

    • A callout appears over the View button after adding the first URL to a
      project. This callout now hides itself when scrolling the entity tree
      underneath it on Windows rather than flickering and showing visual
      artifacts.
    • Show menubar on macOS when Open or Create Dialog is visible.
      In particular ⌘Q now quits the app correctly when that dialog is visible.
    • When Crystal starts, the first dialog appears 0.2 seconds faster.
    • When Crystal is started with both --shell and --serve,
      always print shell prompt and server start prompt in a consistent order.
    • Don't wait more than 2 seconds to determine whether a project is being
      opened on an SSD or an HDD, on macOS.
  • Development improvements

    • Show correct application menu title on macOS when run from source.
    • Code coverage statistics now report which tests cover each source line.
    • Threads are now always created with a name, to assist with multi-threading debugging.
    • Custom lint rules now ban direct use of certain unsafe wx APIs in favor
      of Crystal's internal wrapper APIs.
  • Testing improvements

    • Tests no longer assume that the default server port (2797) or any other
      fixed port numbers (like 2798) are free.
      • Thus an independent Crystal app running in the background will
        no longer cause tests to fail.
      • Thus multiple copies of Crystal can now run automated tests without
        their ports interfering with each other.
    • Tests use app preferences isolated from each other and from any
      independent Crystal app running in the background.