1. 13 Sep, 2016 7 commits
    • Robert Knight's avatar
      Update Change Log · ecf45391
      Robert Knight authored
      ecf45391
    • Robert Knight's avatar
      Merge pull request #101 from hypothesis/fix-editor-sort · f59e84b3
      Robert Knight authored
      Add temporary timestamps to new annotations (for sorting)
      f59e84b3
    • Nick Stenning's avatar
      Add temporary timestamps to new annotations (for sorting) · 3b8ea633
      Nick Stenning authored
      Brand new annotations (and page notes) are currently displayed as editor
      widgets in the sidebar alongside all the existing annotation cards. This
      means they need to be sortable.
      
      Sorting by location isn't a problem, because the annotation already
      carries the document location information by the time it gets to
      `addAnnotations`, but sorting by the updated date is, because currently
      the `created` and `updated` fields are only provided when the server
      sends back the saved annotation.
      
      This commit changes that by adding temporary `created` and `updated`
      timestamps to new annotations (those without an ID). These will be
      ignored entirely by the server, and overwritten when the annotation is
      saved.
      
      If for whatever reason `addAnnotations` is called with a new annotation
      that already has these fields, they will not be overwritten.
      
      Fixes (the rest of) #96.
      3b8ea633
    • Robert Knight's avatar
      Merge pull request #100 from hypothesis/fix-unnecessary-sortkey-update · 042dd2f0
      Robert Knight authored
      Don't reset the sortKey unless actually switching tabs
      042dd2f0
    • Nick Stenning's avatar
      Don't reset the sortKey unless actually switching tabs · 2289e1c2
      Nick Stenning authored
      Creating a new annotation or page note would reset the sortKey for the
      sidebar to the default, because doing so can trigger a call to
      `selectTab`.
      
      This change ensures that we shortcut the state update if we're already
      on the correct tab, and don't update `sortKey` in that case.
      2289e1c2
    • Robert Knight's avatar
      Merge pull request #99 from hypothesis/sort-notes-tab · 593ec7c5
      Robert Knight authored
      Sort notes tab by date
      593ec7c5
    • Nick Stenning's avatar
      Sort notes tab by date · 2a11ea12
      Nick Stenning authored
      This commit prevents page notes from being sorted by "Location" (i.e.
      document location), a meaningless property for page notes, which would
      result in them being sorted unpredictably.
      
      Instead, we define a default sort key and a set of allowable sort keys
      for each sidebar tab. When switching between tabs, the sort key is
      updated to the default, and the set of allowable sort keys updated
      depending on the tab.
      
      This results in page notes being sorted (by default) in ascending order
      of their most recent update. Using "updated" rather than "created" is a
      bit dubious, but changing this requires a bit of care to avoid strange
      behaviour on the stream, so I've left that for another time.
      
      N.B. As implemented, the sort key on each tab will be reset to the
      default every time the tab changes. This is less surprising than
      preserving the sort key across tab switches, and doesn't involve any
      requirement to remember system state across tab switches. We can also
      revisit this in the future if it seems wrong.
      
      Fixes #96.
      2a11ea12
  2. 12 Sep, 2016 6 commits
    • Robert Knight's avatar
      0.41.0 · f82c850f
      Robert Knight authored
      f82c850f
    • Robert Knight's avatar
      Update Change Log · a767ba59
      Robert Knight authored
      a767ba59
    • Nick Stenning's avatar
      Merge pull request #93 from hypothesis/thread-list · 8cddfa09
      Nick Stenning authored
      Extract virtualized thread list into its own component
      8cddfa09
    • Robert Knight's avatar
      Simplify styling of quotes for hovered annotations · 81cb27ee
      Robert Knight authored
      Annotation quotes now have a default color of `$grey-7`, so there is no
      need to have an additional selector for when the annotation card is
      hovered.
      81cb27ee
    • Robert Knight's avatar
      Extract the top-level thread list into its own component · 2568a483
      Robert Knight authored
       * Extract thread list into its own component for better encapsulation
         and easier testing
      
       * Rename `annotation-card` to `thread-list__card` and move it to
         the component styling file for `thread-list`.
      
         Unfortunately a couple of visual effects still require it
         to be referenced in annotation.scss
      
       * Remove ng-show hack in thread list
      
         Remove the "ng-show" attribute which was added as a hack for reasons
         which are no longer applicable. See
         https://github.com/hypothesis/h/issues/2642#issuecomment-150629305
         for original context.
      
       * Remove unused js-hover class and the code that supports it
      
         It turns out that this class is no longer referenced in code or
         applicable styling.
      2568a483
    • Robert Knight's avatar
      Fix behavior when there are multiple unsaved annotations (#95) · e9259a97
      Robert Knight authored
      Fix missing initialization of $orphan flag for new annotations and
      properly account for annotations that do not have IDs in ADD_ANNOTATIONS
      and UPDATE_ANCHOR_STATUS actions.
      
       - Fix ADD_ANNOTATIONS action replacing the first existing unsaved
         annotation when a second unsaved annotation is added
       - Fix UPDATE_ANCHOR_STATUS action not matching annotations without
         IDs (ie. new annotations) correctly.
       - Fix $orphan flag not being initialized for new annotations
      
      Fixes #94
      e9259a97
  3. 09 Sep, 2016 2 commits
  4. 08 Sep, 2016 1 commit
  5. 07 Sep, 2016 2 commits
    • Nick Stenning's avatar
      Remove "assertion" GET param from token requests · 22181c80
      Nick Stenning authored
      When fetching a JWT from the server, the client needs to supply the
      session CSRF token in order to prevent third-party pages from being able
      to fetch and use tokens without the user's permission.
      
      Previously, we supplied the CSRF token in an "assertion" GET parameter
      (partially in an attempt to make this look a bit like an OAuth token
      issuance API) but in Pyramid 1.7 this isn't allowed. (This is good:
      allowing the CSRF to be passed as a GET parameter makes it easier to
      construct a cross-domain attack which retrieves a token for the user).
      
      This commit moves the CSRF token into a request header, which works
      because there are only two legitimate situations in which this request
      is made:
      
      - from an embed iframe, which is on the same origin as the service
      - from a Chrome extension iframe, which is permitted to make
        cross-origin XHR requests to URLs specified in the manifest (in our
        case, `<all_urls>`).
      
      Note that we cannot rely on Angular's built-in CSRF support here,
      because it does not operate for cross-domain requests.
      22181c80
    • Nick Stenning's avatar
      Revert "Remove "assertion" GET param from token requests" · 8281804b
      Nick Stenning authored
      This reverts commit e0e23bde. This needs
      more thought, as the X-CSRF-Token header won't currently be set for
      cross-domain requests (such as those made by the extension sidebar).
      8281804b
  6. 06 Sep, 2016 7 commits
  7. 05 Sep, 2016 1 commit
  8. 02 Sep, 2016 5 commits
  9. 30 Aug, 2016 1 commit
  10. 23 Aug, 2016 2 commits
  11. 19 Aug, 2016 4 commits
  12. 12 Aug, 2016 2 commits