- 23 Feb, 2016 1 commit
-
-
Robert Knight authored
This replaces the webassets build for the front-end JavaScript and CSS with Gulp + Browserify. webassets continues to be used but only to serve the assets, not to generate them or keep track of dependencies. * Use CommonJS for all JS dependency imports rather than relying on Window globals. This makes dependencies more explicit and avoids the need to specify dependencies explicitly in the build tool, since they can be statically analyzed via the require graph. * Remove the webassets custom filters for Browserify and CleanCSS. * Put all generated JS/CSS/font/image assets in build/{images,fonts,styles,scripts} * Replace compass with node-sass + compass-mixins for building the SCSS files. We were not relying heavily on compass functions, many of them were used only for vendor prefixing which is now handled by autoprefixer, so we can remove the Ruby/compass dependency and substitute node-sass quite easily.
-
- 22 Feb, 2016 4 commits
-
-
Robert Knight authored
Add a first pass at a releaser script
-
Christof Dorner authored
Decouple transaction manager from database session
-
Nick Stenning authored
Fix annotation tag links
-
Robert Knight authored
The ng-href directive does not treat its contents as an Angular expression. Fixes a regression introduced in e334fea0241282
-
- 19 Feb, 2016 4 commits
-
-
Robert Knight authored
Randomize websocket reconnects
-
Nick Stenning authored
Currently, if the websocket connection fails, then we will always immediately attempt a reconnect. This can easily contribute to a thundering herd problem if all WebSocket clients (or even a large portion of them) are disconnected simultaneously. This commit ensures that an aborted connection always results in at least a 1s-2s (randomized) delay.
-
Nick Stenning authored
The client websocket code will automatically attempt to reconnect on error or disconnection. This commit: - Randomises the delay before reconnection - Wait two seconds before attempting to reconnect (meaning the real delay will be between 2 and 4 seconds) -- this is an attempt to spread out reconnections over a longer period. - Makes it stop retrying after 10 attempts (i.e. roughly 30 minutes)
-
Nick Stenning authored
Copy changes to Toggle or Resize Sidebar
-
- 18 Feb, 2016 19 commits
-
-
Lena Gunn authored
-
Sean Hammond authored
Simplify routing
-
Nick Stenning authored
Fix styling of heading on 404, 5xx and Unsubscribe pages
-
Robert Knight authored
This is a partial revert of 47bf5e8b5a123a9a5f1822e2bc84e5477aed6293 These pages use elements with both styled-text and page classes applied and the result is currently source-order dependent. Pending a refactoring of these styles, this reverts the @import order change.
-
Nick Stenning authored
Annotation card & groups list style cleanup
-
Sean Hammond authored
Move /api/token endpoint into application
-
Robert Knight authored
Using @extend with a class declared in a different source file prevents local reasoning about the final set of rules that will apply for a class because that depends on what order the components are included. See http://csswizardry.com/2014/11/when-to-use-extend-when-to-use-a-mixin/ for additional reasons to avoid @extend in most cases.
-
Robert Knight authored
-
Robert Knight authored
* Make the .scss file names consistent with the names of their components for <annotation>, <thread> and <markdown>. * Sort component includes alphabetically and use relative paths. Although SASS technically doesn't care about relative paths, it makes the code style more consistent and also provides consistency with the JS code. * Move app-specific component style includes out of common.scss into app.scss
-
Robert Knight authored
Rename style to signin-control-menu to match the name of the associated component.
-
Robert Knight authored
Move styles for the <group-list> and <signin-control> components out of app.scss and into the appropriate SCSS files.
-
Nick Stenning authored
Do not clear selection and reset search when creating a reply
-
Robert Knight authored
Don't open "welcome page" when installed by admin policy
-
Robert Knight authored
The purpose of clearing the selection was to ensure that the new annotation was immediately visible. Clearing the selection when creating a reply to a selected annotation is not necessary because the reply is part of an already-visible thread.
-
Robert Knight authored
The logic for clearing the selection and search in the sidebar when creating a new annotation was incorrectly being triggered: a) On the stream, where creating new annotations is not possible except for replies and b) For replies. The selection should only be cleared in the sidebar when creating a new annotation with a location on the page. This commit addresses the first issue by moving the logic for clearing the selection to the sidebar's controller.
-
Nick Stenning authored
Upgrade to Angular 1.5.0
-
Robert Knight authored
Angular 1.5 introduces '<' as a way of specifying that an isolate scope property is an input (one-way) binding. Note that this is different from '::' (one-time) bindings from ng 1.3. See http://angularjs.blogspot.co.uk/2016/02/angular-150-ennoblement-facilitation.html for details. The principle benefit is making it obvious when looking at the definition of a component whether a property is an input or whether it is a binding that the component might write to.
-
Robert Knight authored
The only change required was to fix an issue in <excerpt> where the optional 'animate' and 'collapse' properties were not correctly marked as optional, triggering an internal error.
-
Nick Stenning authored
Annotation test cleanup
-
- 17 Feb, 2016 11 commits
-
-
Robert Knight authored
Scrollable groups list
-
Nick Stenning authored
This commit ensures that the groups list is scrollable when it is forced to be smaller than the viewport due to the number of groups in it. It's not an ideal solution, as in some contexts there isn't much of a hint to the user that the widget is scrollable. It probably beats the existing behaviour, though. Fixes #2971.
-
Nick Stenning authored
I'm about to use this in a calculation elsewhere.
-
Robert Knight authored
Angular's documentation for inject() involves a bunch of silly boilerplate. This adds a utility function which wraps the inject() function to provide a less verbose way of getting at ng modules in tests.
-
Robert Knight authored
Also make all of the fixtures pure functions and move the logic for setting up the drafts fake into the createDirective() function in the annotation tests.
-
Robert Knight authored
-
Robert Knight authored
Where a fake service/filter is not accessed directly by any tests, make it local to beforeEach(). This reduces the surface area of globals exposed to all tests.
-
Robert Knight authored
There were two describe('AnnotationController') blocks containing very similar code. Remove the tests from the second block which duplicated those in the first and merge the others. * Also remove unused 'momentFilter' dep
-
Sean Hammond authored
Convert filters in the annotation directive to plain functions
-
Robert Knight authored
The annotation directive used a set of filters for formatting document domains, titles and usernames. Converting these to plain functions eliminates a bunch of boilerplate and as noted at https://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135 is a small performance optimization.
-
Sean Hammond authored
Make annotation directive more consistent with other directives
-
- 15 Feb, 2016 1 commit
-
-
Robert Knight authored
* Make it an element directive and use the existing utility functions for instantiating them in tests * Use '=' bindings for input properties and 'on<EventName>' names for events * Remove unused 'showReplyCount' input property and the shouldShowNumReplies() function which was only used as the argument to this property.
-