- Add bright My Shots button A/B test #2082 a168101, 57f6695
- Create A/B test for auto-opening the share panel. Fixes #2079 0187d31
- create FORCE_AB_TESTS to force-turn-on an A/B test in development. Fixes #2108 32df868
- Start #2081, implement an A/B test of badging the Page Shot button until it is first clicked c4c916b, 319c312
- Design and implement an A/B testing system. People are put into tests by the server at login time Tests may stick to the shots created when the test is in place, then viewers will be associated with that test. Tests each map to a GA field (cdX for some value of X). Fixes #2077 86c8663
- Add new database version (13) to save ab_tests in devices table 0a0a095
- Remove/comment-out hotkey, which was causing problems for some people with non-US keyboards. Fixes #2107 5148017
- Add a right-click context menu on the clip image itself: Copy Image Text 40a6657
- Move buttons away from edge 4d84295
- Do not show the call-to-action banner on mobile. Fixes #2087 8e7275c
- Updates of npm packages. Fixes #2078 6d67449 and 90bafae
- Make sure createdDate is updated with the save time, not just the time you hit the button dacd671
- remove image finding, using the same flag we use to remove image location annotation. Fixes #2100 7eb41ba
- add dbSchemaVersion to /version. Fixes #2088 575a62a
- reject blob (or any non-http(s)) images detected in the document. Fixes #2094 bab63a5
- mark non-interactive Google Analytics events as ni (non-interactive). Fixes #2076 439e79b
- Show a different banner if a non-Firefox user views a shot; link those users to Get Firefox. Link the Firefox page using specific utm codes. Fixes #2085 f9501ef
- include a FORCE_DB_VERSION config variable to ask the server to downgrade. Plus instructions on how to rollback. Fixes #2051 b85308c
- Simplify how the stylesheet is included in the selection iframe 64ffddd
- put the text into the so it'll get copied when you copy the image, and pasted if you paste in a text area. Fixes #2056 d017043
- Add a download-only button when you make a selection. #2024
- close the share panel after clicking on an item. Fixes #2034 61e0664
- fix regression from updating the selection. A previous 'fix' to double-clicking the Save button actually suppressed subsequent updates of the selection. Fixes #2046 d331fdd
- do not show error popup on startup if we can't login to the server. Fixes #2006 738eedf
- track og:image images differently than other direct link images. Fixes #2041 8dfd52e
- add a $DISABLE_CONTROLLER_TASKS variable that controls if this server instance should handle database upgrades and periodic tasks. Fixes #1978 2d4df88
- even if user.initialize() is called many times, do not keep sending requests to the server. Fixes #1956 85db7e7
- Move Save and Cancel buttons below the selection. Fixes #1629 8ba9223
- Add pixel dimensions when starting and dragging the selection. Fixes #1848 4915115
- Change to
cursor: move
on the selection box. Fixes #1768 c5aa6ae - Add Create Page Shot item in the context menu. Fixes #1922 c220524
- Add paste instructions to notification popups. Fixes #1776 5659166
- Render the selection interface in an iframe, so that it doesn't conflict or get affected by any styles in the document itself. Multiple commits:
- Put in a delete option directly on My Shots, fixes #1346 9cb179e
- Direct feedback to Discourse. Fixes #1604 bab16dd
- Add a better title to search results. Fixes #1909 09d0e6e
- Implement rich copy. Button is shown only when extension is present. Fixes #1693 abb0a1f
- Use the Raven Express middleware. Fixes #1583 9f4a655
- Do not overwrite NODE_ENV if it is set fdac82f
- Enable uglify compression, for about 50% size improvement. . Fixes #1803 80e84e8
- Make bundle scripts and raven activation async. Fixes #1804 e4ac283
- When erasing the search, change to URL to /shots instead of /shots?q= 9bde83d
- Update reactruntime so that changes to the model.title automatically get reflected in document.title. 09d0e6e
- Give a better exception when keygrip keys aren't set, and we try to hash a user ID cbecc70
- Add package.json version to
/__version__
. Fixes #1928 3fcf252 - Run all svgs through
svgo
during the build process. Fixes #1389 3dcfb35 - Make it so that calls to
/api/login
can't loop in case of failures or missing cookies 02d175a - Remove the
device_activity
table. Fixes #1954 dc1100c - Add keygrip check to
/__heartbeat__
. This is probably redundant, as the middleware will fail if keygrip isn't initialized. Fixes #1931 a678028 - Make server abort with exit code 1 if database initialization isn't successful. Fixes #1933 8238ddd
- Allow
$NO_UGLIFY
to avoid uglifying the source while bundling. Only works on rebuild. 82e9cc3 - Send Raven report when metrics updating fails Allow REFRESH_METRICS_TIME to be 0, disabling the refresh. Fixes #1946 e4da720
- Send timing information to GA for more steps. This changes the signature of sendTiming() and is more explicit about that signature. Add functions to help time pieces of the process. Fixes #936 352398c
- When making a login at
/api/login
, send a GA event. Also remove unused deviceInfo variables 3c8fe96 - Pass isOwner through to share panel, so all events don't appear as non-owner a6b4dce
- Don't recreate
/metrics
if they are fresh enough Make the polling interval on refreshing metrics slightly randomized, so multiple workers don't pile on 8d61f00
- Do not load our stylesheet into the main page. Fixes #1596 7ac0e43
- Suppress some errors that are happening during teardown, when the document is no longer valid e99a2bc
- Never force login/initialization on sendEvent. Fixes #1963 4dea856
- Fix a client/server render mismatch, where urlIfDeleted and title weren't being put into the server-side shot 109bc3c
- Don't allow the shot to be taken more than once. Fixes #1799 fafef59
- Remove messaging from helperworker and viewerworker that are no longer being used Comment out but leave in saved/stored full page messaging 4224448
- Catch all exceptions in interactive-worker with watchFunction/watchPromise. Fixes #1888 f693b9f
- Make the shot title editable. To edit the title simply click on it from the shot page (See #573 cc10632)
- Site-specific improvements to autoselection. New heuristics select one Facebook comment or post, and one tweet. (See #1797 #1796 8fe813f)
- Append .png to all image URLs (See #1782 d7ebfbc)
- Make a public metrics page available. It will be in
/metrics
(will be published to https://pageshot.net/metrics). (See #1825 #1854 89a8d9c) - Scroll selection when your mouse is close to the edge of the window. Fixes #193 28bcd17
- Avoid exception on pages that have multiple
og:title
properties; both store only the first, and handle stored pages that may have multiple titles stored. Fixes #1887 9375962 - Ensure suggested filenames for downloaded files stay under 255 bytes. Fixes #1820 f1dba6b
- Handle null cookies results when checking for an authentication cookie dda178f
- change email share graphic. Fixes #1650 34f1ca8
- redirect /favicon.ico to /static/img/pageshot-icon-32.png. Fixes #1840 34056c0
- (v2.4) restore the share notification message. Fixes #1918 fdda2ec
- (v2.4) revert to 'page' when the title isn't found. Fixes #1836 295e5b6
- (v2.4) add specific images for no search results and no shots at all. Fixes #1770 4e04411
- (v2.4) Update some metrics queries: - Do not filter out shots that seem expired from the shot total count - Simplify some aliases in queries (not using aliasing in FROM) - Add a total retention table efab5e1
- Hardcode the sentry public DSN so we receive error reports before successful login. It will still be overwritten on login (including erasing it), but until that happens it will fall back to the production DSN. Fixes #1883 1f76fcc
- Direct abuse reports to a dedicated email address. Fixes #1855 a69d756
- Don't overload the
upload
GA event action as both success and failure states (see Metrics for more info). Fixes #1759 375cbff - Combine
configure-raven.js
with theraven.js
client, into/install-raven.js
. Load raven via require() instead of a direct link. Remove the now-unneededstatic/vendor/
directory, and Makefile rules related to it. Fixes #1801 6841236 - Combine
parent-helper.js
andset-content-hosting-origin.js
. Make the scripts inclusion dependent on there being a full page/iframe. Fixes #1802 6db660d - Move
errorResponse()
,simpleResponse()
, andjsResponse()
to a new module. Move raven into its own module as well. Fixes #1839 6a06eb2 - First pass at some deployment documentation. Fixes #1871 e4b00c0
- Increase default period of time to check for deleted shots from 1 minute to 1 hour. Fixes #1865 7589d5e
- Add GA logging for any shots that are deleted after the expiration time. Fixes #1692 dcb380b
- Move the share panel and button entirely into its own component fix share panel alignment when extension notification banner is in place. Fixes #1714 Fixes #1565 ab468fd
- (v2.4) check before trying to call window.sendToChild, which is safely missing on most pages. Fixes #1910 5333ae7
A version released to improve some operational issues.
- make server abort with exit code 1 if database initialization isn't successful. Fixes #1933 8238ddd
- Make the /metrics page disableable with $DISABLE_METRICS a18437a
- Don't recreate the metrics if they are fresh enough Make the polling interval on refreshing metrics slightly randomized, so multiple workers don't pile on 8d61f00
- send Raven report when metrics updating fails Allow REFRESH_METRICS_TIME to be 0, disabling the refresh. Fixes #1946 e4da720
- For each release we'll be adding one to the next version (i.e., the version after this will be Version 2)
- There is a "Save Full Page" and "Save visible" option for saving either the full length of the page, or the entire visible portion of the page.
- The add-on now automatically copies the shot URL to the clipboard.
- The autoselection when you click will now be previewed with a white box as you hover.
- Also improvements to the autoselection algorithm, avoiding very small selections.
- Some URLs were being rejected: those with ports,
view-source
URLs, and URLs in some situations where the content was cached. - Search on My Shots is now done as you type.
- Improvements to the selection itself:
- You can drag the selection
- You can invert the selection when resizing
- You can drag out a new selection over the old selection
- In some error conditions Page Shot would become unresponsive on a tab.
- Page Shot authentication could be lost (for instance with a cookie destroying add-on). We now attempt to re-login if we detect the cookies are gone.
- Stop auto-opening Share panel. Fixes #1794 d4964a7
- add mozilla logo b68d28e
- error when hovering over elements like that have no bounding rectangle Also avoid autoselections that are terribly small, even if there's no better fallback add metrics for the distance the selection moves or resizes. Fixes #1784 Fixes #1781 8171dfb
- we can't actually support pages that use frames, but at least this detects it and gives an error. Fixes #1748 9aa7929
- when the autoselect is small try to add the next sibling (or uncle) element. Fixes #1774 a3b8604
- don't let a clip image go over 100% of the size of the page. Fixes #1730 aeb4d51
- use URIFixup to clean URLs. This cleans only the URL attached to the shot itself. Fixes #1764 b600a91
- Add a share icon. Fixes #1651 2cd37a5
- Show the instructional text on a dark background to prevent readability issues. Fixes #1631 8b5ded7
- trigger a search when someone changes the search form. Fixes #1458 12a98ed
- use a minimum size on the click autodetect indicate the region that would be selected on hover Add a new class to suppress pointer events but not hide the interface. Fixes #1745 Fixes #1633 d42b0a8
- rename #share-button to #toggle-share. Remove some styles that appeared to be for the share button, but didn't apply to anything. Fixes #1659 19863ea
- when resizing selection across a corner or side, invert the selection. Fixes #1630 ae47ad9
- don't allow resize to go past the edge of the screen. Fixes #1732 25ce7f4
- put in a max height/width on full page (5000px) Fix the calculation of the page height and width by also using scrollHeight and scrollWidth. Fixes #1740 01e1e5f
- dragging in the background when there's already a selection will now create a new selection. Fixes #1138 45de849
- allow moving the selection around. Fixes #1628 5faddf5
- Cleanup Shooter and the worker when the worker gets detached for some unknown reason; may avoid some problems where Page Shot hangs after an error 7793134
- copy link on save, and put up a popup to notify the user about the copy action. Fixes #1734 accfe28
- allow view-source URLs. Fixes #1720 29efea9
- Escape will close share panel. Fixes #1691 64b51cd
- fix bug that kept shooting from deactivating immediately (previously deactivated after 500ms delay). Fixes #1597 681134f
- Start on #1613, add buttons to take a visible capture and full page (full length) screen capture Still requires UX review 40088fe
- Allow ports in URLs 75644a1
- check for the user auth cookie when checking if the browser is logged in. Fixes #1704 9b192cf
- Don't remove our authentication cookies on an upgrade or downgrade of the add-on, only on uninstall/disable cf091c5
- Minimize all the bundle files using Uglify 1447cc2
- Set Cache-Control headers for both the static files and dynamically generated JS files 2a754b5
- Change inclusions of server-generated scripts to use staticLink b068b1b
- Change staticLink to not add /static to the beginning of paths 452a110
- Automatically bundle core.js with all browserify bundles, and remove the specific core.js-related rules and script tags 7da4f72
- add styled 404 page. Does not change 404s for routes which are APIs, i.e., not seen by humans. Fixes #1548 3ba6f26
- Get rid of unused controller on legal pages 0565da7
- Use template literals d82dc4d
- put Raven activation into reactrender pages. Fixes #1072 895ca67
- remove 'Leave page shot' link from pages when the user is not authenticated. Fixes #1578 62e68ed
- Update all deps to latest. Fixes #1703 6a1b6cd
- Put something in the logs when someone tries to upload a shot with an odd clip URL, or an empty URL be6f736
- add /contribute.json. Fixes #1625 8e422a5
- Switch from input.type=text to input.type=search 45c8824
- Set maxlength on shot search input field 58abc98
- Fix regex that was supposed to select https and http, but was only selecting https bc38cae
- add cancel events for tab close, navigate, and reload. Fixes #1761 6af5637
- change custom dimensions from cd0 to cd2. Fixes #1778 ff4f83a
- add refer(r)er information to direct image views send a view/direct-view event on those image views. Fixes #1747 Fixes #1777 1cd58a5
- send a message through the add-on when sendEvent is missing. Fix an error in how the add-ons are being loaded, which could keep them from being sent with the Sentry message. Fixes #1736 6c6f142
- add scheme information (as label) to the start-shot-non-http event. Fixes #1695 974ce79
- add GA sendEvent for right-clicks/context menu on My Shots. Fixes #1727 5e20487
- include the add-on version with all GA events. Fixes #1722 7ac5b22
- Switch GA to use clientId instead of userId 5fe3e47
- Fix event action names that kept a / accidentally 8c4ea36
- add ua (user-agent) to GA events. Fixes #1724 ee265f0
- add a browser-send-event module that ensures that sendEvent is defined even if ga-activation.js fails. Fixes #1666 561ea05
- Add $DEBUG_GOOGLE_ANALYTICS setting/config a34983b
- Add noAnalytics property to suppress GA on a page. remove GA from the creating page. Fixes #1708 00a3661
- Hash the remote userId/cid just like we hash it for GA events on the server. dc10023
- Fix typo in set-expiration/navbar event 105d442
- Initial releases
- Everything that was implemented!