Commit graph

256 commits

Author SHA1 Message Date
Nolan Lawson c071ac1174
refactor: refactor focus management (#1662) 2019-11-30 17:43:31 -08:00
Nolan Lawson cbbf5abd7a
test: test for DOM listener memory leaks (#1654)
* test: test for DOM listener memory leaks

* fix whitespace change, unintended
2019-11-23 23:42:22 -08:00
Nolan Lawson 95ef639b21
test: add basic memory leak test (#1650)
* test: add basic memory leak test

* try to fix test
2019-11-23 19:11:15 -08:00
Nolan Lawson d03d223fd9
fix: remove aria-pressed entirely (#1647)
More progress on #1633
2019-11-23 11:25:36 -08:00
Nolan Lawson 1b95499008
fix: use radio buttons for pinning timelines (#1644)
* fix: use radio buttons for pinning timelines

more work on #1633

* cleanup styles
2019-11-17 23:02:05 -05:00
Nolan Lawson 568a3f51fe
fix: convert many toggle buttons into regular buttons (#1643)
work on #1633
2019-11-17 21:23:32 -05:00
Nolan Lawson 63c9f8dc32
fix: fix autocomplete in voiceover+safari (#1632)
* fix: fix autocomplete in voiceover+safari

fixes #1629

* fix test

* fix test
2019-11-09 23:01:32 -05:00
Nolan Lawson 07facea505
fix: improve autosuggest a11y (#1630)
* fix: improve autosuggest a11y

some progress on #1629

- works in Chrome on NVDA now
- works in Chrome on VoiceOver now
- shorter aria-labels, don't repeat information like "1 of 3", because
it causes the screen reader to speak too frequently, e.g. when the
selected result hasn't changed but the number of results has. Also both
NVDA and VoiceOver already speak this information
- stop doing a fancy fade animation, just show and hide the input
instantly. I worry it confuses screen readers to have the aria-hidden
attribute in there at all
- stop using a single id to identify the active descendant - give
immutable IDs and then update the aria-activedescendant instead. I think
this is what fixed Chrome.

* fix test
2019-11-09 20:38:29 -05:00
Nolan Lawson ea382acf1d
test: improve testcafe test flakiness, use config file (#1627) 2019-11-09 17:25:33 -05:00
Nolan Lawson edc014cf8c
fix: more consistent toggle button aria-label/title (#1626)
* fix: more consistent toggle button aria-label/title

fixes #1624

* fixup

* fix test
2019-11-09 17:25:26 -05:00
Nolan Lawson 4ecb04588c
fix: fix custom emoji in polls (#1619)
fixes #1617
2019-10-31 23:01:35 -07:00
Nolan Lawson 8b3842f15a
feat: add hashtag autocomplete (#1567)
* feat: add hashtag autocomplete

fixes #1209

* add test and tweak aria label and styles

* do not prefer lowercase

* Change text
2019-10-12 18:06:04 -07:00
Nolan Lawson 10b43b209c
test: make follow request test less flaky (#1558) 2019-10-08 05:59:55 -07:00
Nolan Lawson 8f044e19c8
fix: remove basic login mode for now (#1554)
* fix: remove basic login mode for now

As described in #1552 I do not have a lot of faith in this feature, so maybe it should just be removed for now until a later release.

* fixup

* fixup

* fixup
2019-10-07 07:15:19 -07:00
Nolan Lawson 07d8045617
test: make test less flaky (#1553)
* test: make test less flaky

* fixup

* fix lint
2019-10-07 07:15:12 -07:00
Nolan Lawson 4ddf47f3da
feat: implement basic login mode (#1543)
fixes #1542
2019-09-26 05:28:52 -07:00
Alex Berg 5e150b31df fix: Add "unfavorite/unboost" label (#1540)
* Add "unfavorite" label.

* fixup, also fix Boost/Unboost

* fix test
2019-09-26 05:24:05 -07:00
Nolan Lawson ea4c1ad819
fix: return focus to sensitive media button (#1535)
* fix: return focus to sensitive media button

fixes #1517

* additional fix for media sensitive focus

* fix audio/video name in aria-label of button

* fix hotkeys
2019-09-24 22:31:56 -07:00
Nolan Lawson 3d58c86963
feat: left/right keys can change columns or focus (#1516)
* feat: left/right keys can change columns or focus

* fixup

* fixup, add tests
2019-09-22 23:53:29 -07:00
Nolan Lawson 3e303a444d
fix: removing media should reset sensitive status (#1497)
fixes #1495
2019-09-17 00:19:59 -07:00
Nolan Lawson 08992f836a
fix: delete-and-redraft preserves sensitive status (#1496)
fixes #1494
2019-09-17 00:19:53 -07:00
Nolan Lawson d3fb67bec3
feat: show unread follow requests on community page (#1493)
* feat: show unread follow requests on community page

fixes #477

* fixup

* fixup
2019-09-16 22:36:24 -07:00
Nolan Lawson 35058ed965
feat: mark media as sensitive without a CW (#1486)
fixes #1297
2019-09-15 10:45:46 -07:00
Nolan Lawson 4232da5e33 fix: fix lint 2019-08-19 20:23:58 -07:00
Sorin Davidoi 77bb784efd feat(media): Blurhash (#1381)
* chore(npm): Install blurhash

* feat(media): Show blurhash

* fix(media/blurhash): Better sensitive video handling

* feat(media): Preference for using blurhash

* chore(utils/blurhash): Add performance marks

* fix(utils/blurhash): Performance marks

* fix(utils/blurhash): Use correct dimension

* refactor(utils/blurhash): Use constant for number of pixels

* refactor(media): Simplify logic for displaying blurhash

* chore(tests/spec): Attempt to adjust sensitivity tests for blurhash

* chore(tests/spec): Update sensitivity tests for blurhash

* chore(tests/spec): Check for sensitive

* fix(media/blurhash): Handle videos

* fix: Video handling

* fix: Videos

* minor refactoring, fix Svelte warning

* fix: Large inline images and videos

* feat(settings): Rename blurhash setting

* refactor: Use toBlob, block media rendering until blurhash ready

* refactor: Move computations to Web Worker

* fix(workers/blurhash): More error handling

* feat(workers/blurhash): Use quick-lru for caching

* fix: Don't create Context2D needlessly

* fix(workers/blurhash): Increase cache size to 100

* fix(workers/blurhash): Don't resolve promise twice

* fix(utils/decode-image): Ignore data URLs

Throws exception which prevents the image from loading.
2019-08-17 10:54:45 -07:00
Nolan Lawson 00945a3608
chore: update standard to v13 (#1370) 2019-08-03 13:49:37 -07:00
Nolan Lawson 59bdd0bb77
fix: large streaming gaps by refetching (#1362)
fixes #1356
2019-07-28 19:38:34 -07:00
Nolan Lawson 4d098d6b46
fix: fix streaming gap (#1349) 2019-07-21 15:31:26 -07:00
Nolan Lawson 95a68e1fe2
fix: delete-and-redraft preserves polls (#1343)
* fix: delete-and-redraft preserves polls

fixes #1342

* fix test
2019-07-19 20:08:17 -07:00
Nolan Lawson 48f7c64c6c
test: re-enable skipped tests, use quarantine mode (#1329) 2019-07-08 20:51:30 -07:00
Nolan Lawson 38241abf35
test: skip flaky tests for now (#1309) 2019-07-07 11:43:29 -07:00
Nolan Lawson 85b75900c1
feat: add ability to set focal points for media (#1303)
* feat: add ability to set focal points for media

fixes #739

* fix tests

* actually fix tests

* really really fix tests

* really really really fix tests pinkie swear
2019-07-07 00:14:19 -07:00
Nolan Lawson ea220c32d3
tests: try to make tests less flaky (#1292) 2019-06-22 13:21:19 -07:00
Nolan Lawson d75507bbce
fix: fix disableNotificationsBadge aria-label (#1260) 2019-06-01 15:51:53 -07:00
Nolan Lawson fcf64c2169
fix: fix "Show more" button in Notifications timeline when filtered (#1255) 2019-05-29 18:48:59 -07:00
Nolan Lawson 45630c185f
feat: add option to disable infinite scroll (#1253)
* feat: add option to disable infinite scroll

fixes #391 and fixes #270. Also makes me less nervous about #1251 because now keyboard users can disable infinite load and easily access the "reload" button in the snackbar footer.

* fix test
2019-05-28 22:46:01 -07:00
Nolan Lawson 37d3cac7d2
fix: add tests for polls, improve a11y of poll form (#1239) 2019-05-27 12:31:35 -07:00
Nolan Lawson bf640b9b0f
fix: fix unread notifications badge for filters (#1231)
fixes #1230
2019-05-26 16:01:06 -07:00
Nolan Lawson a17948cf99
feat: add home/notification filter settings (#1226)
Fixes #1223
Fixes #1224
2019-05-25 13:21:36 -07:00
Nolan Lawson 3fa285447d
chore: update to mastodon v2.8.2 (#1181)
* chore: update to mastodon v2.8.2

* fix test
2019-05-05 15:02:14 -07:00
Nolan Lawson 23bdc6c87e
feat: implement notification filters (all vs mentions) (#1177)
fixes #1176
2019-05-04 17:58:44 -07:00
Nolan Lawson 1712081f0b
fix: fix profile clicks from compose dialog (#1160)
* fix: don't allow profile clicks from compose dialog

fixes #1159

* make the links work correctly in the modal

* fix tests
2019-04-20 09:12:30 -07:00
Nolan Lawson 0649eee366
fix: fix dialogs within dialogs not opening (#1154)
* fix: fix dialogs within dialogs not opening

fixes #1153

* remove console logs
2019-04-14 19:47:30 -07:00
Nolan Lawson b3098c8c5a fix: tweaks to conversations (direct) UI (#1137)
- make the url `/direct`
- call it "Direct messages"
- fix sapper export
- retain DM background color
- add test
2019-04-13 15:30:49 -07:00
Nolan Lawson f169e0063d
test: improve test flakiness (#1127) 2019-03-31 10:56:03 -07:00
Nolan Lawson f758e12b24
fix: replace indexWhere with findIndex (#1125) 2019-03-31 09:21:57 -07:00
Nolan Lawson 6744de59f8
feat: add account page filters (#1124)
* start on account page filters

fixes #1021

* making progress

* more progress, just need style now

* fix lint

* fix style and add test
2019-03-30 21:48:49 -07:00
Nolan Lawson 8fc8108454
fix: back button dismisses the modal dialog (#826)
* fix: back button dismisses the modal dialog

fixes #60

* try to manage nested modals

* seems working now

* fix modal timing issue

* fix test flakiness

* improve test flakiness again

* fix muting timing issue

* Revert "fix muting timing issue"

* remove setTimeout from MediaDialog

* refactor
2019-03-24 15:08:34 -07:00
Nolan Lawson 5a9d047019
test: improve flakiness of report ui test (#1117) 2019-03-23 18:16:20 -07:00
Nolan Lawson 059b455451
fix: fix and test shortcut keys in modals (#1115) 2019-03-23 18:16:06 -07:00
Nolan Lawson 13659f544e
test: improve flakiness of emoji test (#1116) 2019-03-23 16:23:20 -07:00
Nolan Lawson c896836ce8
fix: fix spaces in status aria-labels (#1111)
fixes #1108
2019-03-21 14:38:37 -07:00
Nolan Lawson f0af8178af
feat: implement "." keyboard shortcut (#1105)
fixes #1052
2019-03-18 09:09:24 -07:00
Nolan Lawson 5aac6a213a
test: improve emoji test (#1056)
trying to make this test less flakey
2019-02-28 08:56:38 -08:00
Nolan Lawson 63003c3763
fix: fix aria-posinset should be 1-based (#1055)
* fix: fix aria-posinset should be 1-based

fixes #1053

* second attempt to fix tests

* try to fix test

*  fixup

* lint fix

* fix more tests

* simplify test math
2019-02-28 08:56:25 -08:00
Nolan Lawson d711b37165
test: add tests for image/video modals (#1045)
should ensure #1042 does not happen again
2019-02-23 21:10:15 -08:00
Nolan Lawson fabf9399f2
fix: use static server for node server.js (#1041)
* fix: use static server for `node server.js`

Aligns the Node server with the Zeit server. Fixes #1019

* fix test
2019-02-23 16:09:48 -08:00
Nolan Lawson 31a6ec6857
chore: make test less flaky (#1038) 2019-02-23 12:32:10 -08:00
Nolan Lawson c9ca605cfe
fix: fix keyboard shortcuts for pinned toots (#1033)
* fix: fix keyboard shortcuts for pinned toots

fixes #908

* fix test
2019-02-23 09:47:36 -08:00
Nolan Lawson 11e918dd50
fix: fix keyboard shortcuts on thread (#1031)
* fix: fix keyboard shortcuts on thread

fixes #1029

* fix test
2019-02-22 20:35:13 -08:00
Nolan Lawson 42e466f3c2
fix: j/k shortcuts correctly set active element (#1028)
fixes #1018
2019-02-21 23:50:27 -08:00
Nolan Lawson a63e85bf30
feat: report an account or toots (#1016)
fixes #736
2019-02-18 19:55:44 -08:00
Nolan Lawson 7a152fbdac
feat: allow muting notifications when muting (#1013)
fixes #738
2019-02-18 15:43:41 -08:00
Nolan Lawson 58d1f62b2b
feat: implement web share target (#980)
fixes #974
2019-02-13 18:38:44 -08:00
Nolan Lawson 74ab056f18
fix: fix notification m/p keyboard shortcuts (#907)
fixes #905
2019-01-19 23:52:39 -08:00
Nolan Lawson 45d70e8e6b
feat: add more keyboard shortcuts (#904)
* feat: add more keyboard shortcuts

largely fixes #895

* oops wrong test name
2019-01-19 16:40:31 -08:00
Nolan Lawson b014778761
fix: fix keyboard shortcuts in notifications (#903)
fixes #894
2019-01-19 16:04:06 -08:00
Nolan Lawson 4a6f7b74a4
feat: 1-6 hotkeys switch columns (#888) 2019-01-13 14:02:08 -08:00
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