David Baker
888c0611e8
Merge pull request #302 from matrix-org/rav/guest_device_spinner
...
Fix spinner-of-doom in member info for guests
2016-06-09 11:03:40 +01:00
Richard van der Hoff
de36aa63fb
Factor out common parts of room creation
...
Take the duplicated code out of MatrixChat and MemberInfo, and put it in a
separate 'createRoom' module
2016-06-09 10:58:25 +01:00
Richard van der Hoff
2352661513
MemberInfo: remove spinner if device query fails
...
If the request to /keys/query fails (for example, because we are a guest), we
need to remove the spinner.
2016-06-09 10:57:19 +01:00
David Baker
98ef793809
Default IS should be vector.im now
2016-06-09 10:56:14 +01:00
David Baker
bb405563c8
Fix default servers
2016-06-09 10:54:56 +01:00
Richard van der Hoff
ef764c112e
Merge pull request #300 from matrix-org/rav/device_verification
...
Support for marking devices as verified
2016-06-09 10:44:42 +01:00
David Baker
05404efa34
Remove if (this.props.config)
...
Since it now defaults to the empty dictionary (and if you pass null in, you deserve everything you get).
2016-06-09 09:53:37 +01:00
Richard van der Hoff
1dfb3f71ae
Merge branch 'develop' into rav/device_verification
2016-06-08 21:34:47 +01:00
Richard van der Hoff
85770feb31
device verification: use a js-sdk event
...
We'll probably want to be able to bubble up device verifications from the
js-sdk at some point, so let's use a js-sdk event for this.
2016-06-08 21:25:42 +01:00
David Baker
c123f02842
Make the config optional
2016-06-08 18:45:46 +01:00
Richard van der Hoff
7ce49c752f
Wire up events to update UI on device verification
...
Use the dispatcher to update event tiles and memberdeviceinfo when a device is
marked as verified.
2016-06-08 18:35:43 +01:00
Richard van der Hoff
1616431d27
EventTile: add classes to indicate verifiedness
...
Add a couple of CSS classes to event tiles to reflect whether encrypted events
have been verified or not.
2016-06-08 17:02:42 +01:00
Richard van der Hoff
f3e66e6fd2
Add device info to member info
...
Requires e81ce23 in matrix-js-sdk
2016-06-08 17:02:42 +01:00
Richard van der Hoff
086698cd11
Add device info to user settings
...
Requires e81ce23 from matrix-js-sdk
2016-06-08 17:02:42 +01:00
David Baker
7e8c8dd336
Remove SdkConfig
...
just take a config in MatrixChat, pass the individual things down through the chain.
This may become unwieldy: let's see how it goes.
2016-06-08 14:54:34 +01:00
David Baker
12816c5e1f
Explanatory comment
2016-06-07 22:14:56 +01:00
David Baker
d063735c96
Use variable for key name
2016-06-07 22:07:23 +01:00
David Baker
33251e6566
Remove default options that shouldn't be part of this PR
2016-06-07 22:03:31 +01:00
David Baker
b54376aa2a
Add singleton object to hold SDK configuration
2016-06-07 21:49:06 +01:00
David Baker
aca0e060a4
Also change velocity-vector commit & requires
...
Because it needs a versiob where the package name is actually updated and the requires need to use the right package name
2016-06-07 20:47:37 +01:00
David Baker
943d7e18e1
Add _ to internal member
2016-06-07 19:55:24 +01:00
David Baker
d5a522fdfe
Second attempt at fixing the Velocity memory leak
...
1) Correct fix for Velociraptor (we need to find the DOM node and pass that in)
2) Do the same leak fix for the read marker
3) Update the dependency to our fork which is fixed to make the call we do to release memory actually work.
4) Remove the velocity-ui-pack dependency which is unnecessary because velocity-ui is included in the velocity package
2016-06-07 18:22:01 +01:00
Matthew Hodgson
f8b3128645
invite input box wording for amandine
2016-06-02 23:33:55 +01:00
Matthew Hodgson
1b3c8481f6
fix dialog prompt an embarassing bug where if 3pid invites triggered a dialog they'd get wedged
2016-06-02 21:07:47 +01:00
Matthew Hodgson
532e93d7cb
fix up trailing whitespace and put the buttons in the right order
2016-06-02 21:07:04 +01:00
Matthew Hodgson
e20a1acb88
label our versions sensibly
2016-06-02 19:22:11 +01:00
Matthew Hodgson
487f3c72dd
fix new 3pid invite UI
2016-06-02 16:59:44 +01:00
Matthew Hodgson
1d31463140
set email branding after registration
2016-06-02 13:14:52 +01:00
Matthew Hodgson
83fd02bdfa
specify a brand when registering accounts
2016-06-02 11:51:26 +01:00
Matthew Hodgson
3b34311e05
implement new UX for 3pid invites
2016-06-01 23:42:34 +01:00
Matthew Hodgson
0747ca3923
ignore @ prefixes when sorting memberlist
2016-06-01 14:00:20 +01:00
Aviral Dasgupta
b979a16199
initial version of autocomplete
2016-06-01 16:54:21 +05:30
Matthew Hodgson
272afe39dc
do not list rooms by default
2016-06-01 02:03:53 +01:00
Matthew Hodgson
c3fc76cdaa
warn guests to register nicely to upload files
2016-05-31 23:59:36 +01:00
Matthew Hodgson
e1ba7df66e
fix the Add button for email addies
2016-05-31 23:50:53 +01:00
Matthew Hodgson
2662ca36f9
fix tag unsetting https://github.com/vector-im/vector-web/issues/1499 - HOW DID THIS EVER WORK?!?!
2016-05-31 23:50:47 +01:00
Matthew Hodgson
b74d690035
Merge pull request #290 from matrix-org/matthew/multipreview
...
multiple URL preview support
2016-05-31 19:42:21 +01:00
Matthew Hodgson
b3638f9169
PR review
2016-05-31 19:42:00 +01:00
Aviral Dasgupta
96526c22c5
Merge branch 'develop' into feature-rte
2016-05-29 20:50:33 +05:30
Aviral Dasgupta
fe76eb9f73
minor improvements
...
- use <p> for unstyled blocks
- fix return key bug
- editor placeholder
2016-05-28 12:02:35 +05:30
David Baker
118eec8cc0
Add a fallback home server to log into
...
If login fail with a credential error on the default HS, try
logging in on the fallback one.
2016-05-27 14:57:43 +01:00
Matthew Hodgson
d5e6e961fd
fix url previews firing incorrectly on Matrix.org
2016-05-27 10:09:17 +01:00
Aviral Dasgupta
001011df27
Initial version of rich text editor
2016-05-27 10:15:55 +05:30
David Baker
1664f46180
Add comment
2016-05-26 16:30:04 +01:00
David Baker
3a5e37aa84
This actually shouldn't be necessary.
2016-05-26 16:22:40 +01:00
David Baker
ed835752bc
Hopefully fix memory leak with velocity
2016-05-26 13:51:51 +01:00
Matthew Hodgson
07cc9bf77d
how ironic
2016-05-24 11:44:30 +01:00
Matthew Hodgson
39a3d6fdd4
multiple URL preview support
2016-05-24 00:54:20 +01:00
Matthew Hodgson
817a3debec
debug HS & IS
2016-05-18 11:42:51 +01:00
Matthew Hodgson
1459478ee0
use right check for end of timeline
...
and avoid bad interactions with forward pagination. thanks @richvdh
2016-05-17 21:32:20 +01:00
Matthew Hodgson
24adf2847e
better comment
2016-05-17 20:32:38 +01:00
Matthew Hodgson
7879be1704
implement basic local echo for resetting unread message count when opening a room without a scroll offset. hopefully largely fixes https://github.com/vector-im/vector-web/issues/967
2016-05-17 20:28:11 +01:00
Matthew Hodgson
fd09d5c570
switch badge count to per-conversation, and add per-room badges
2016-05-17 11:14:12 +01:00
Matthew Hodgson
5bde32f7fe
handle slashcommands with no args
2016-05-13 17:07:50 +01:00
Matthew Hodgson
62a1100fca
Merge pull request #289 from matrix-org/dbkr/email_notifs
...
Support for enabling email notifications
2016-05-10 16:39:37 +02:00
Matthew Hodgson
b86af8939a
fix usersettings cancel fail on new accounts
2016-05-05 15:30:56 +01:00
David Baker
6dd530e2a4
Comment getEmailPusher
2016-05-04 09:41:36 +01:00
David Baker
6a596f034f
Clarify comment
2016-05-03 11:21:05 +01:00
David Baker
fab7111fd7
Merge remote-tracking branch 'origin/develop' into dbkr/email_notifs
2016-04-29 11:09:02 +01:00
Matthew Hodgson
3cf12f8626
fix typo
2016-04-28 15:43:42 +01:00
Richard van der Hoff
ca0c697b6e
Avoid rerendering during Room unmount
...
might speed up room changing by a few milliseconds
2016-04-22 17:06:53 +01:00
Richard van der Hoff
0fd0b0c5f3
Whitespace fixes
...
Fix some trailing whitespace
2016-04-22 17:05:48 +01:00
David Baker
c3365f993b
Merge remote-tracking branch 'origin/develop' into dbkr/email_notifs
2016-04-22 16:25:09 +01:00
Richard van der Hoff
afb301ffb7
Reduce timeline limit to 250 events
...
... maybe this will help improve responsiveness in firefox.
2016-04-22 11:08:39 +01:00
Matthew Hodgson
d72d9260d4
Merge pull request #284 from matrix-org/matthew/hide_preview_heuristics
...
add heuristics to hide URL previews...
2016-04-21 18:54:34 +01:00
Matthew Hodgson
4d399a3640
Refactor out isLinkPreviewable
2016-04-21 18:00:39 +01:00
Matthew Hodgson
ee11838537
fix comment paren
2016-04-21 17:19:24 +01:00
Matthew Hodgson
c5a76dec1c
add heuristics to hide URL previews other than for URLs where the user has explicitly identified the target as a link: i.e. by including a URI scheme prefix, or by including URI path components, or by doing an explicit markdown hyperlink. ignore previews of URLs within pre or code blocks
2016-04-21 17:14:27 +01:00
Richard van der Hoff
30f273c611
Merge pull request #283 from matrix-org/rav/issue_1427
...
Fix bug which stopped us scrolling down after we scrolled up
2016-04-21 14:26:42 +01:00
Richard van der Hoff
298e2a5c0a
Merge pull request #282 from matrix-org/rav/read_receipt_fixes
...
Rewrite Read-receipt animation
2016-04-21 14:25:27 +01:00
Richard van der Hoff
2f435f4836
Fix bug which stopped us scrolling down after we scrolled up
...
Make sure that, if we scroll up enough to move the timelinewindow away from the
end of the timeline, we reset the canForwardPaginate flag.
2016-04-21 14:20:12 +01:00
Richard van der Hoff
f09861794d
Avoid having react interface methods call each other
...
Factor out the common bits of componentWillMount and componentWillReceiveProps
to a common function.
2016-04-21 14:14:08 +01:00
David Baker
3381e2b057
Merge remote-tracking branch 'origin/develop' into dbkr/email_notifs
2016-04-21 10:12:27 +01:00
Richard van der Hoff
fa34dee091
Rewrite Read-receipt animation
...
... hopefully fixing https://github.com/vector-im/vector-web/issues/1437 in the
process.
The idea here is that, when we remove a read-receipt from the DOM, we stash its
position in a map. Then, when the read-receipt appears again attached to
another event, we know where to start the transition.
2016-04-20 23:06:53 +01:00
Richard van der Hoff
04ef0262af
Various fixes to the velociraptor
...
* handle having a single child, rather than an array of children
* Correctly animate children which are added at the same time as the
Velociraptor, rather than added afterwards
* Set the child to hidden at the end of the initial animation, if that is
required by the style property.
2016-04-20 22:21:07 +01:00
Richard van der Hoff
d953ac4e6b
Don't relayout scrollpanels every time something changes
...
Gemini's habit of reflowing everything everytime anything changes at all makes
for an unresponsive app. Turn it off everywhere we use gemini.
2016-04-20 12:25:19 +01:00
Richard van der Hoff
86a5e1f38d
Reduce number of renders on received events
...
TimelinePanel rerenders are expensive, so we want to do as few as possible. So,
when we get a new timeline event, make sure that we update the RM and add the
new event at the same time.
2016-04-19 23:45:51 +01:00
Richard van der Hoff
dcd81da856
Fix test failures introduced by last PR
2016-04-19 21:10:23 +01:00
Richard van der Hoff
568e7aef8b
Avoid rerendering EventTiles when not necessary
...
Each individual eventtile isn't particularly expensive, but when you have 500
of them, they start adding up. Shuffle some of the stuff into MessagePanel, so
that we can shouldComponentUpdate EventTiles properly.
2016-04-19 19:41:43 +01:00
Richard van der Hoff
a6bcbd4f61
Speed up processing of TimelinePanel updates on new events
...
Avoid twiddling state flags, so that we can avoid redundant re-renders.
2016-04-19 18:29:25 +01:00
Richard van der Hoff
683faf571f
Fix syntax error which prevented build
...
Remove a spurious } which was introduced in PR #275
2016-04-19 13:32:14 +01:00
Matthew Hodgson
8517b6558b
Merge pull request #275 from matrix-org/matthew/memberlist-sort
...
Fix many thinkos in sorting the MemberList
2016-04-18 19:15:20 +01:00
Richard van der Hoff
7b405d0d9c
Don't setState after unmounting a component
...
Fix a warning which happens if a LinkPreviewWidget is unmounted before the
preview request completes.
Also add missing .done to promise chain
2016-04-18 14:52:41 +01:00
Matthew Hodgson
a95c45eb96
final(?) PR fixes
2016-04-18 14:48:55 +01:00
Matthew Hodgson
60f92fd15b
PR feedback
2016-04-18 14:07:20 +01:00
Matthew Hodgson
b2d0950a46
oops, remove debug logging
2016-04-18 01:45:46 +01:00
Matthew Hodgson
b949e78683
Improve ordering of memberlist by absolutizing lastActive correctly
...
Change ordering of memberlist to not try to compare lastActive of 'currentlyActive' users, as lastActive may will be a complete lie as it only gets updated when currentlyActive transitions to false (i think?)
Remove order by online/idle/offline in favour of "currently active, ordered by power and then alphabetic name, followed by last active, followed by offline"
Add commented-out code to track last-spoken-within-a-room ordering.
Fix kludges due to SYJS-28 (depends on JS PR landing)
2016-04-18 01:35:40 +01:00
Matthew Hodgson
eeb9abdf81
trailing whitespace
2016-04-18 01:34:45 +01:00
Richard van der Hoff
716eb1eb1b
Drop workaround for object.onLoad
...
https://github.com/facebook/react/pull/5781 has been fixed in React 15.0, so
drop our workaroud for it.
2016-04-17 21:46:27 +01:00
Richard van der Hoff
336d91dadb
Merge pull request #272 from matrix-org/rav/fix_roomname
...
Make sure that we update the room name
2016-04-17 18:12:18 +01:00
Matthew Hodgson
f4573bae49
remove premie optimisation of tintablesvg shouldComponentUpdate
2016-04-17 00:28:20 +01:00
Matthew Hodgson
8db14bde60
switch Tinter from using dispatch to a synchronous update when changing the colourscheme, to avoid CSS getting out of sync with SVG colours
2016-04-16 01:00:10 +01:00
Matthew Hodgson
4fb31662e1
fix tooltip offset
2016-04-15 22:24:12 +01:00
Matthew Hodgson
19770563f4
add cancelButton to simpleHeader
2016-04-15 22:16:19 +01:00
Matthew Hodgson
009781dac7
prep for RightPanel full collapse
2016-04-15 18:45:40 +01:00
Matthew Hodgson
f625e2d693
fix up UserSettings a bit and add fading
2016-04-15 18:30:13 +01:00
Matthew Hodgson
a06b420942
wire up searchbox filtering
2016-04-15 17:55:00 +01:00
Matthew Hodgson
7c8d7e5361
move memberlist bottom into rightpanel
2016-04-15 15:53:14 +01:00
Richard van der Hoff
8680afe46f
Make sure that we update the room name
...
It turns out that RoomState.events is fired before Room.name is updated; make
sure that we pick up the latter and do the update.
2016-04-15 10:01:39 +01:00
Matthew Hodgson
26f135c7b0
fix 'undefined' class bug on TintableSvg
2016-04-14 21:44:05 +01:00
Matthew Hodgson
2d71d4422e
make selected room more skinnable
2016-04-14 21:11:10 +01:00
Matthew Hodgson
0741e8a5c1
fix testing UI hack
2016-04-14 19:11:20 +01:00
Matthew Hodgson
81d5e16225
fix @aviraldg thinko on needing a key on arrays :)
2016-04-14 19:11:09 +01:00
Matthew Hodgson
21fd5078f9
fix NPE on getEventTileOps
2016-04-14 17:39:45 +01:00
Richard van der Hoff
3fd9b29422
Merge pull request #271 from matrix-org/rav/avoid_codepoint_at
...
Hack around absence of String.codePointAt on PhantomJS
2016-04-13 16:37:00 +01:00
Richard van der Hoff
85277a237a
Merge pull request #270 from matrix-org/rav/issue_1314_federated_rooms
...
RoomView: Handle joining federated rooms
2016-04-13 16:36:46 +01:00
Matthew Hodgson
1e294cb10c
fix 'mark all read'
2016-04-13 12:46:36 +01:00
Richard van der Hoff
ec5ca1ca28
s/roomAlias/roomAddress/ to reduce confusion
2016-04-13 12:26:40 +01:00
Matthew Hodgson
6509bc0589
oops, missed another fade
2016-04-13 11:17:09 +01:00
Matthew Hodgson
ead5418214
oops, missed a fade
2016-04-13 11:17:09 +01:00
Richard van der Hoff
047524d093
Merge pull request #269 from matrix-org/rav/stop_client_on_unmount
...
Stop the MatrixClient when the MatrixChat is unmounted
2016-04-13 11:05:02 +01:00
Richard van der Hoff
5706a879d0
Hack around absence of String.codePointAt on PhantomJS
...
I've been trying to get some tests working under PhantomJS, which appears not
to support String.codePointAt (which is, to be fair, an ES6 addition). For our
limited usecase, it's easier to implement the functionality from first
principles than to try to polyfill support.
2016-04-13 10:35:07 +01:00
Richard van der Hoff
93a142480c
RoomView: Handle joining federated rooms
...
This hopefully fixes an issue where joining a federated room via the directory
would get stuck at a spinner of doom, due to us not recognising the room in
question when it came down the /sync. We now catch the room id in the response
from the /join, and use it to match up the room in onRoom.
props.roomAlias, props.roomId, and state.room.roomId were somewhat confusing,
so I've tried to rationalise them:
* props.roomAlias (named thus to stop you assuming it's a room id) is the
thing that the parent component uses to identify the room of interest, and
can be either an ID or an alias (ie, it replaces props.roomId and
props.roomAlias)
* Everything that needs a room ID now has to get it from state.room.roomId.
2016-04-13 08:59:28 +01:00
Matthew Hodgson
f3793b556e
fix super-annoying key warning from react
2016-04-13 02:02:55 +01:00
Matthew Hodgson
92f58b6927
don't try to do preview URLs of matrix IDs (yet :D)
2016-04-13 01:54:06 +01:00
Matthew Hodgson
4b1ff51a42
show a spinner on MemberInfo when updating a member. and label 'disinvite' correctly
2016-04-13 01:46:10 +01:00
Matthew Hodgson
bfec6d4ed9
merge aviral's audio player
2016-04-13 00:00:24 +01:00
Richard van der Hoff
1361333fdc
Stop the MatrixClient when the MatrixChat is unmounted
...
The MatrixClient never gets unmounted in the real app, but I've been working on
some tests which would rather like to be able to create and destroy MatrixChats
and not have the clients hang around forever.
2016-04-12 18:38:10 +01:00
Matthew Hodgson
6a6739e0f3
fix context menu on tiles without widgets
2016-04-12 18:32:55 +01:00
Matthew Hodgson
a01e6d46b9
Merge pull request #268 from matrix-org/matthew/fadable
...
make the UI fadable to help with decluttering
2016-04-12 18:05:10 +01:00
Matthew Hodgson
3a2d5c4ba5
spinner on saving room settings
2016-04-12 18:01:49 +01:00
Matthew Hodgson
11f3d5f993
make the UI fadable to help with decluttering
2016-04-12 17:18:32 +01:00
David Baker
fcab259511
Support for email notifs
...
Add utility funcs in UserSettingsStore and pass threepids to Notifications so it can do email notif stuff
2016-04-12 16:17:04 +01:00
Matthew Hodgson
1d5f234f2c
add 'mark all read' button
2016-04-12 14:29:36 +01:00
Matthew Hodgson
089963b4c7
timestamps are permalinks
2016-04-12 13:33:59 +01:00
Matthew Hodgson
38d27cdbb0
improve 'no known servers' error
2016-04-12 13:00:52 +01:00
Matthew Hodgson
f9785f68af
filter out conference bots from membership list
2016-04-12 01:54:51 +01:00
Matthew Hodgson
bf1e0da598
fix ability to save room settings if you don't have ops
2016-04-12 01:27:12 +01:00
Matthew Hodgson
f9c7ae1ab9
Merge pull request #260 from matrix-org/matthew/preview_urls
...
URL previewing support
2016-04-11 23:55:15 +01:00
Matthew Hodgson
9845e5ef0e
move all the localstorage crap to TextualBody
2016-04-11 23:53:36 +01:00
Matthew Hodgson
8e48bed346
apparently we don't need this. i'm lost now
2016-04-11 17:32:10 +01:00
Richard van der Hoff
e051d1528c
Remember to load new timeline events
...
Fixes a bug where we wouldn't load new timeline events if they arrived when we
were scrolled up (https://github.com/vector-im/vector-web/issues/1367 )
2016-04-11 14:05:04 +01:00
Matthew Hodgson
825e6702ef
stop ctrl-tab etc from triggering an autocomplete
2016-04-10 14:27:30 +01:00
Matthew Hodgson
2e772e2f19
fix whitespace on multiupload prompt
2016-04-10 14:02:22 +01:00
Matthew Hodgson
6c372d37f7
add the concept of eventTileOps for managing widget visibility based on vdh's PR feedback
2016-04-08 21:42:29 +01:00
Matthew Hodgson
23d6edbf63
forceupdate the whole scrollPanel rather than the geminiPanel at vdh's PR review request
2016-04-08 20:21:27 +01:00
Matthew Hodgson
4abc5d0d36
add comment
2016-04-08 20:21:12 +01:00
Richard van der Hoff
967528608f
Merge pull request #265 from matrix-org/rav/limit_pagination
...
Stop trying to paginate after we get a failure
2016-04-08 16:00:51 +01:00
Richard van der Hoff
15d0df5d3b
Stop trying to paginate after we get a failure
...
Once TimelineWindow.paginate fails to return any results, set
can*Paginate=false, and use it as a flag to stop us trying to paginate any
further.
2016-04-08 15:05:15 +01:00
Matthew Hodgson
1d8b08040e
incorporate PR feedback
2016-04-07 18:58:50 +01:00
Matthew Hodgson
1125c62505
add comments for thumbHeight
2016-04-07 18:10:35 +01:00
Matthew Hodgson
7884c13d0d
Merge branch 'develop' into matthew/preview_urls
2016-04-07 17:25:48 +01:00
David Baker
a0c41e2d57
Fix password resetting
...
Fixes https://github.com/vector-im/vector-web/issues/1349
2016-04-07 12:59:30 +01:00
Richard van der Hoff
b64604964d
Fix exception in key handling
...
Fix a typo introduced in PR #262 which caused scroll keys to throw console
errors.
2016-04-07 12:05:07 +01:00
Richard van der Hoff
8b8ee21765
Catch pageup/down and ctrl-home/end at the top level
...
Make the scroll keys work when the focus is outside the message panel.
2016-04-05 13:40:36 +01:00
Richard van der Hoff
c5c9cad0cb
Merge pull request #261 from matrix-org/rav/issue_1151
...
Fix an issue where the scroll stopped working.
2016-04-05 12:55:59 +01:00
Richard van der Hoff
6a82d1a94c
Merge pull request #254 from matrix-org/rav/fix_rm_animation
...
Fix a bug where we tried to show two ghost read markers at once.
2016-04-05 12:55:38 +01:00
Richard van der Hoff
0d7adae100
Back out animation timing changes for now
...
... since they seem to be a bit contentious
2016-04-05 10:46:08 +01:00
Richard van der Hoff
51fe77122b
Fix an issue where the scroll stopped working.
...
Under certain conditions, it was possible to get stuck in a state where any
user-initiated scroll would be met with "Working around
vector-im/vector-web#528" and overridden. Fix this by removing the duplication
between _lastSetScroll and recentEventScroll, and using _lastSetScroll which is
more reliable.
2016-04-05 10:41:32 +01:00
Matthew Hodgson
1de4e0d2dd
label previews with the target URL if all else fails
2016-04-04 01:06:54 +01:00