Commit graph

238 commits

Author SHA1 Message Date
Stephane Zermatten c2bd2f306a feat: Add support for keyboard shortcuts (#870)
* Add support for keyboard shortcuts.

This change introduces a Shortcut component for defining global
keyboard shortcuts from whichever component makes more sense.

This change also adds an initial set of navigation shortcuts:
- Backspace to leave a modal dialog or to go back
- g t to go to the federated timeline
- g f to go to the favorite page
- g h to go to the home page
- g n to go to the notification page
- g c to go to the community page
- s to go to the search page

These shortcuts are loaded asynchronously from _layout.html

In modal dialogs, shortcuts are also modal, to avoid strange or
overly complex behavior. This is implemented by grouping
shortcuts into scopes, and activating a separate 'modal' scope
when entering a modal dialog, so a separate set of shortcuts can
be enabled in modal dialog. Modal dialogs can be exited by
pressing 'Backspace'.

* Navigate up/down lists using keyboard shortcuts.

This change introduces keyboard shortcuts for navigating in lists and
virtual lists. j or arrow up selects the next element, k or arrow down,
the previous element. Selecting an element scrolls the list up and down,
as necessary.

This change also allows directing keyboard shortcuts to the active
element and defines the following shortcuts, for the active status:
- f to favorite or unfavorite it
- b to boost or unboost it
- r to reply to it
- o to open its thread
- x to toggle the display of a CW
- y to toggle the display of sensitive medias

This works by defining a keyboard shortcut scope for each list element.
A new component, ScrollListShortcuts, keeps track of the active element,
based on list or virtual list elements and redirects shortcuts to the
active element's scope. ScrollListShortcuts keeps the active element in
the current realm of the store, so the active element is restored when
going back to the list.

* Typing h or ? displays the list of available keyboard shortcuts.

This change introduces a new modal dialog that documents the list of
available shortcuts.
2019-01-13 10:03:29 -08:00
Nolan Lawson e5ef4b9bb1
fix: add better browser notification badges (#857)
* fix: add better browser notification badges

* fix test

* fix tests for real

* actually fix tests
2018-12-30 14:51:03 -08:00
Nolan Lawson 27da387a01
fix: preserve newlines correctly in delete-and-redraft (#845)
fixes #830
2018-12-19 00:57:56 -08:00
Nolan Lawson 098a20db49
feat: add full emoji picker using emoji-mart (#836)
* feat: add full emoji picker using emoji-mart

Fixes #4

* use a sailboat as the default emoji in the emoji picker

* fix tests

* fix lint
2018-12-18 00:43:51 -08:00
Nolan Lawson bf9ba22c35
fix: fix logging in and out with a refresh (#824)
* fix: fix logging in and out with a refresh

fixes #805

* simplify code

* make test less flaky

* fix dumb mistake
2018-12-16 12:39:16 -08:00
Nolan Lawson c90ad17686
fix: logging out results in visible homescreen (#807)
* fix: logging out results in visible homescreen

fixes #805

* fixup
2018-12-14 00:25:12 -08:00
Nolan Lawson 1940260631
fix: fix delete and redraft on replies (#789)
fixes #786
2018-12-12 23:45:52 -08:00
Nolan Lawson 631603b0b7
fix: fix flaky test by clicking relative date (#790)
* fix: fix flaky test by clicking relative date

* fix test and add new one
2018-12-12 23:45:42 -08:00
Nolan Lawson 42978c3c84
fix: fix duplicate statuses in threads (#783)
fixes #511
2018-12-11 22:06:50 -08:00
Nolan Lawson 4bd181d3cc
fix: update Sapper to latest (#775)
* fix: update to latest sapper

fixes #416

* fix error and debug pages

* requestIdleCallback makes column switching feel way nicer than double rAF

* add export feature

* add better csp info

* workaround for sapper sub-page issue

* clarify in readme about exporting

* fix now config

* switch from rIC to triple raf

* style-loader is no longer used

* update theming guide
2018-12-11 07:31:48 -08:00
Nolan Lawson 4d3a2ded2a
chore(tests): skip flaky "thread preserves focus" test (#777) 2018-12-11 07:29:31 -08:00
Nolan Lawson 60751b3339
feat(statuses): implement "Delete and redraft" (#719)
Fixes #469
2018-12-03 23:23:29 -08:00
Nolan Lawson ce61b821c5
feat(ui): add option to always show sensitive media (#709)
fixes #699. I also went ahead and divided the settings into two groups: Preferences and Accessibility
2018-12-01 14:09:08 -08:00
Nolan Lawson a760687c6d
chore(tests): make focus test less flaky (#708) 2018-12-01 12:56:55 -08:00
Nolan Lawson 153e4f4fcd
feat(a11y): add option for short article aria labels (#705)
Actually fixes #694 by providing an option to make the labels like they used to be.
2018-12-01 11:53:20 -08:00
Nolan Lawson 0515133ece
fix(a11y): fix NVDA crash on long aria-label (#702)
* fix(a11y): fix NVDA crash on long aria-label

fixes #694

* use the word truncated instead of ellipsis

* fix test

* really fix tests
2018-12-01 00:10:30 -08:00
Nolan Lawson cc81a7bec6
fix(a11y): improved aria-label for status and notifications (#690)
* fix(a11y): improved aria-label for status and notifications

fixes #689

* only calculate formatted date once

* fixup tests

*  fixup tests more

* fixup

* fixup tests again
2018-11-25 01:20:58 -08:00
Nolan Lawson 48a1bd47b3
refactor(themes): use CSS specificity order for themes (#684)
The point of this PR is to make it easier to implement scrollbars (#683).

With this PR, the themes move from a body tag-based system (e.g. `body.theme-scarlet`) to a system where they simply declare global CSS and we use CSS specificity order to give us the right theme.
2018-11-24 00:41:36 -08:00
Nolan Lawson bae367da7b
test: make tests less flaky (#678) 2018-11-21 22:08:37 -08:00
Nolan Lawson b7f5d04b4c
fix(scrolling): use body as scrolling container (#656)
* fix(scrolling): use body as scrolling container

Fixes #526

* fixup tests and focus
2018-11-17 18:06:49 -08:00
Nolan Lawson 62ac7330fc
feat(title): add dynamic document title (#645)
* feat(title): add dynamic document title

fixes #490 and #643

* fix code style
2018-11-12 18:28:43 -08:00
Nolan Lawson 0964442815
chore(travis): update to mastodon v2.6.1 (#630)
* chore(travis): update to mastodon v2.6.1

* check if mastodon v2.6.1 has a race condition

* apparently in 2.6.1 direct messages no longer appear in home timeline

* Revert "check if mastodon v2.6.1 has a race condition"

This reverts commit dde8ef8be58eda0563170e6b73165fdcbea54f6b.

* try to fix tests

* fix more tests
2018-11-12 12:59:47 -08:00
Nolan Lawson e11738a711 fix tests broken in chrome 70 (#602) 2018-11-04 13:59:14 -08:00
greenkeeper[bot] 8dbc1b0503 Update standard to the latest version 🚀 (#519)
* chore(package): update standard to version 12.0.0

* package lock update

* fix eslint
2018-08-29 21:42:57 -07:00
Nolan Lawson 2449a27767
fix pinned/unpinned state of recently pinned statuses (#521)
* fix pinned/unpinned state of recently pinned statuses

* fixup

* fix test
2018-08-29 18:10:09 -07:00
Nolan Lawson 01b1d083a9
update fav boost accounts for stale views (#510) 2018-08-28 06:45:15 -07:00
Nolan Lawson b60d636ee2
media uploads no longer add URLs to status text (#500)
fixes #8
2018-08-26 18:54:59 -07:00
Nolan Lawson 543536409b
add application (client) name to statuses (#497)
* add application (client) name to statuses

fixes another thing in #6

* add domain blocking (#496)

* add domain blocking

fixes another thing from #6

* show "domain blocking" on profile page

* fix stuff
2018-08-26 15:38:45 -07:00
Nolan Lawson aea952daf0
use better emoji removal algorithm (#452)
another follow-up to #450 to fix #449
2018-08-19 20:25:28 -07:00
Nolan Lawson af1d4b63d3
better support for de-emojified user display names (#451)
improvements to #450 to fix #449, especially for aria labels
2018-08-19 19:31:54 -07:00
Nolan Lawson 37e12e8d73
add option to remove emoji from user display names (#450)
* add option to remove emoji from user display names

fixes #449

* slight memory perf improvement
2018-08-19 18:03:26 -07:00
Nolan Lawson 350667e5df
allow user display names to contain custom emoji (#448)
* allow user display names to contain custom emoji

fixes #445

* fix tests

* fix focus issue
2018-08-19 15:23:40 -07:00
Nolan Lawson e489702dc6
tests: remove more testcafe .find() calls (#376) 2018-06-08 21:54:21 -07:00
Nolan Lawson 08ad25f677
tests: improve flakiness in basic timeline spec (#378) 2018-06-08 21:53:45 -07:00
greenkeeper[bot] 708340502d Update testcafe to the latest version 🚀 (#370)
* chore(package): update testcafe to version 0.20.3

* package-lock update

* make theme test pass
2018-06-07 15:26:21 -07:00
Nolan Lawson efdb0bc534
Remove testcafe roles and run in parallel x4 (#334)
* more attempts to fix test flakiness

* remove testcafe roles entirely

* really remove testcafe roles

* run testcafe in parallel x2

* run testcafe in parallel x4

* fix online/offline forcing in tests

* fix pin test
2018-05-26 13:51:41 -07:00
Nolan Lawson fe12b72293
attempt to fix flaky tests (#318)
* attempt to fix flaky tests

* another attempt to fix flakiness

* more attempts to fix flakiness
2018-05-24 20:01:34 -07:00
Nolan Lawson 8089202977
add ability to pin and unpin statuses (#235)
* add ability to pin and unpin statuses

* add another test
2018-04-29 12:28:44 -07:00
Nolan Lawson ffb00fcc5c
approve/reject follow requests, unblock, unmute (#230)
* approve/reject follow requests, unblock, unmute

* make tests less flaky
2018-04-28 14:19:39 -07:00
Nolan Lawson 8a46f3b3d1 add test and aria-label 2018-04-26 22:37:39 -07:00
Nolan Lawson 6bd4b05a98
fix more bugs in autocomplete (#208)
* fix more bugs in autocomplete

fully fixes #170

* fixup

* fix tests
2018-04-21 14:57:02 -07:00
Nolan Lawson 209b36c73b
fix flaky login tests (#209) 2018-04-21 13:06:46 -07:00
Nolan Lawson e4d2934c67
fix themes (#199)
Fixes #194
2018-04-21 00:33:42 -07:00
Nolan Lawson 581a0fcd00
fix multiple compose autosuggest dropdowns (#188)
* fix multiple compose autosuggest dropdowns

Fixes #170

* fix failing test

* remove console.log
2018-04-20 06:26:36 -07:00
Nolan Lawson 979b4afc89
fix mute test (#174) 2018-04-19 09:34:49 -07:00
Nolan Lawson e431c29efa
update and pin all deps (#164) 2018-04-18 20:43:13 -07:00
Nolan Lawson 00e71293d6
fix autosuggestion mixed with emoji (#154)
fixes #140
2018-04-17 18:38:36 -07:00
Nolan Lawson 980fec15ec
fix favorites/boosts reversed aria labels (#153)
Fixes #146
2018-04-17 18:38:27 -07:00
Nolan Lawson e8a527989a
explicitly focus elements in tests (#147) 2018-04-17 09:44:28 -07:00
Maxime Le Conte des Floris eef54e992b focus container on page load (#116)
* focus container on page load

* only focus container on first page load

* add test for container focus on page load

* fix typo
2018-04-17 09:42:10 -07:00
Nolan Lawson 7ff45dfb3f
mute and unmute accounts (#127) 2018-04-14 22:18:48 -07:00
Nolan Lawson cb20965678
Add test for mentioning an account (#126) 2018-04-14 20:56:13 -07:00
Nolan Lawson 732d1fded4
Block and unblock an account (#125)
One of the many features listed in #6
2018-04-14 18:47:55 -07:00
Nolan Lawson 6230c2703e
content warnings can have emoji (#122)
fixes #105
2018-04-14 15:50:06 -07:00
Nolan Lawson ff8e92df6c
preload content in CW (#110)
* preload content in CW

Fixes #63

* fix test
2018-04-14 10:47:53 -07:00
Nolan Lawson 707e89e899
faster hydrateContent() algorithm, add test (#109) 2018-04-14 10:08:43 -07:00
Nolan Lawson a82c44c21f
Replying returns focus to reply button (#98)
Fixes #42
2018-04-12 21:18:14 -07:00
Nolan Lawson 84148912ee
Fix spoilers being posted after removal (#90)
Fixes #83
2018-04-11 22:55:11 -07:00
Nolan Lawson 44dafb591e travis: fix flaky test 2018-04-10 22:38:10 -07:00
Nolan Lawson ebc11ad00e travis: attempt to fix flaky test 2018-04-10 21:46:30 -07:00
Nolan Lawson f2b2eb1cec travis: try to fix flaky test 2018-04-10 21:19:29 -07:00
Nolan Lawson 9d706a3748
Add img title as well as alt (#66)
Fixes #57
2018-04-10 20:02:42 -07:00
Nolan Lawson 7ae3212c55
Fix alts for image uploads (#54)
* Fix alts for image uploads

Fixes #41

* fix alts mixed with no-alts
2018-04-09 18:30:15 -07:00
Nolan Lawson eb8cd5f83d simplify and refactor dialogs using event bus 2018-04-08 16:56:20 -07:00
Nolan Lawson ee8cda5d66 fix modifying replies to statuses 2018-04-08 13:42:31 -07:00
Nolan Lawson e34a1054a2 fix tests 2018-03-31 22:08:24 -07:00
Nolan Lawson ff27c68760 fix lint 2018-03-31 17:42:59 -07:00
Nolan Lawson f9993cac35 fix post privacy for replies 2018-03-30 10:04:35 -07:00
Nolan Lawson 42a467ffc8 make test less flakey 2018-03-30 08:19:18 -07:00
Nolan Lawson 5a0c4897b0 make replies inline 2018-03-30 01:06:17 -07:00
Nolan Lawson 6f350b68d3 fix content warning should delete when you hide it 2018-03-28 18:37:53 -07:00
Nolan Lawson ddd32a2223 improve tests 2018-03-27 08:38:40 -07:00
Nolan Lawson 58b700788c add floating compose button 2018-03-27 00:02:55 -07:00
Nolan Lawson 7ce9a39119 add emoji autosuggest 2018-03-25 12:24:38 -07:00
Nolan Lawson 62ef9d7bb0 tweak test timeout 2018-03-22 17:55:57 -07:00
Nolan Lawson d40befacdb compose button is not disabled by default 2018-03-22 17:55:35 -07:00
Nolan Lawson 0c9992c0e1 change scheduling to focus on requestIdleCallback 2018-03-20 20:28:53 -07:00
Nolan Lawson 98b704f465 optimistic updates for fav/reblog 2018-03-20 17:41:39 -07:00
Nolan Lawson 111d6201f3 add a sleep to the test 2018-03-19 20:10:20 -07:00
Nolan Lawson 00fd911579 truly fix streaming gap issue, remove sleeps from tests 2018-03-19 18:00:49 -07:00
Nolan Lawson eaa19f79e4 fix streaming gap issue 2018-03-19 10:09:05 -07:00
Nolan Lawson ed0db17ca0 add auto-focus to reply input text 2018-03-16 19:04:48 -07:00
Nolan Lawson 9a0071a934 clicking avatars goes directly to profile 2018-03-16 18:48:24 -07:00
Nolan Lawson bfc9692667 refactor tests 2018-03-16 10:06:02 -07:00
Nolan Lawson 73b53c2afd upgrade svelte 2018-03-15 23:01:38 -07:00
Nolan Lawson c0a2a1e8bf add another focus test 2018-03-15 20:31:58 -07:00
Nolan Lawson 56f7efb78f implement requesting to follow someone 2018-03-14 22:32:58 -07:00
Nolan Lawson 9d779a203c fix test 2018-03-13 22:30:59 -07:00
Nolan Lawson 50499c00a7 make tests less flaky 2018-03-13 20:02:51 -07:00
Nolan Lawson c13771c3a0 more options button to follow/unfollow 2018-03-11 19:40:32 -07:00
Nolan Lawson a2ac4f1735 make test less flaky 2018-03-11 12:10:59 -07:00
Nolan Lawson 06575a0b81 delete statuses should delete notifications 2018-03-10 21:05:00 -08:00
Nolan Lawson da2daa955d fix statuses being deleted from threads 2018-03-10 20:24:07 -08:00
Nolan Lawson 23a247a8c2 basic support for delete streaming 2018-03-10 16:21:10 -08:00
Nolan Lawson d4e48ac6fa better indication of non-autoplay gifs 2018-03-10 11:28:30 -08:00
Nolan Lawson b3263e528f fix incoming statuses, add tests 2018-03-10 10:54:16 -08:00
Nolan Lawson 7813cf99ed immediately add replies to threads 2018-03-09 22:31:26 -08:00
Nolan Lawson 6f1903fec5 fix handles appearing in replies 2018-03-09 08:45:12 -08:00
Nolan Lawson cd8293925e fix tests 2018-03-08 18:37:32 -08:00
Nolan Lawson f0d05b7560 lint fix 2018-03-08 18:09:35 -08:00
Nolan Lawson 4177de913d cleanup tests 2018-03-08 18:09:11 -08:00
Nolan Lawson 53081ffe54 add failing test for offline threads 2018-03-08 18:08:14 -08:00
Nolan Lawson 6dfa63ba48 fix tests 2018-03-06 23:57:06 -08:00
Nolan Lawson 15b51bb3eb rename test files 2018-03-06 21:32:51 -08:00
Nolan Lawson d72c13d42c fix last test 2018-03-06 20:44:05 -08:00
Nolan Lawson 4a49e9118e lint fix 2018-03-05 23:56:48 -08:00
Nolan Lawson 8eeb7da186 getting closer 2018-03-05 22:36:54 -08:00
Nolan Lawson 525066e6ea add titles to external links, plus tests 2018-03-04 15:31:31 -08:00
Nolan Lawson 456c865a09 make tests less flaky 2018-03-04 12:46:46 -08:00
Nolan Lawson c6d55f14e7 lint fix 2018-03-03 16:32:10 -08:00
Nolan Lawson 9149887fec add tests for content warnings 2018-03-03 16:12:48 -08:00
Nolan Lawson 2f5e19bd44 start on content warnings 2018-03-03 15:44:43 -08:00
Nolan Lawson 35282666cc implement post privacy 2018-03-03 13:23:26 -08:00
Nolan Lawson d4e770c28d add media URLs when media is inserted 2018-03-03 11:26:10 -08:00
Nolan Lawson c2738b7f68 fix bug in media test 2018-03-03 10:27:14 -08:00
Nolan Lawson e79003d8d7 separate uploaded media by instance/realm 2018-03-03 10:11:32 -08:00
Nolan Lawson 5b94dd7829 add ability to remove media 2018-03-02 21:55:04 -08:00
Nolan Lawson 9f8b4fa9d8 start adding media upload test 2018-03-02 17:54:38 -08:00
Nolan Lawson d7366e637a speed up tests 2018-02-28 22:45:42 -08:00
Nolan Lawson 5424242b0f fix emoji insertion 2018-02-28 21:03:21 -08:00
Nolan Lawson 2614e451b2 add test for compose, and emoji 2018-02-28 18:45:29 -08:00
Nolan Lawson b6eb997893 add test for compose limits 2018-02-27 21:20:48 -08:00
Nolan Lawson dae8054276 fix tests 2018-02-25 23:38:06 -08:00
Nolan Lawson 454fcda954 fix display name on instance page 2018-02-25 14:06:36 -08:00
Nolan Lawson 81174e636b add test for notifications 2018-02-24 21:27:32 -08:00
Nolan Lawson 00ccf35777 add reblogging/unreblogging 2018-02-24 20:35:22 -08:00
Nolan Lawson 1b7a01f1ee add favorite/unfavorite feature 2018-02-24 14:49:28 -08:00
Nolan Lawson ab366d6c2c add favorites/boost test 2018-02-21 18:39:53 -08:00
Nolan Lawson 9b316665b6 add focus test 2018-02-21 09:26:22 -08:00
Nolan Lawson 4d88723cb4 lint fix 2018-02-20 21:30:16 -08:00
Nolan Lawson ea3f5a33fb add test for threads 2018-02-20 21:08:26 -08:00
Nolan Lawson 5b051558e1 add test for image modals 2018-02-20 09:42:55 -08:00
Nolan Lawson e952c7fcb2 add test for sensitive media 2018-02-20 09:05:53 -08:00
Nolan Lawson 09504794c6 add test for account profile statuses 2018-02-20 08:50:48 -08:00
Nolan Lawson 5c2dc4c421 fix lint issues 2018-02-19 18:25:59 -08:00
Nolan Lawson 391455bee4 switch from cypress to testcafe 2018-02-19 18:24:22 -08:00
Nolan Lawson 819f975948 add a user role 2018-02-19 17:18:40 -08:00
Nolan Lawson 13a2195035 start migrating to testcafe 2018-02-19 17:04:37 -08:00