Compare commits

...

5936 commits

Author SHA1 Message Date
Reto Brunner 0d9c184f19 server: fix time handling
The framework may emit messages which do not have a time stamp.
We tried to unconditionally convert the time field, fix that.

The Msg constructor replaces falsey time fields with the current
date so we can also remove the duplication from that codepath.
2024-05-16 22:15:39 +02:00
Max Leiter 4de413070d
Merge pull request #4873 from thelounge/types
client: remove setAppBadge and clearAppBadge
2024-05-12 23:08:52 -07:00
Reto Brunner 0955d9df06 Identd: fix various issues
There's a bunch of sub optimal behavior from our ident server.
For one, it allows user enumeration which we don't really want and it doesn't clean up connections that don't send any data.

Fix that
2024-05-12 11:51:18 +02:00
Reto Brunner cb4aaf6a97 client: remove setAppBadge and clearAppBadge
They already ship with typescript's lib.dom.d.ts
2024-05-10 13:21:18 +02:00
Reto Brunner 45c2fc87ee client: properly type Socket in window 2024-05-10 12:27:41 +02:00
Reto Brunner 29fcc2da05 ident: close connections if they don't send data 2024-05-09 19:01:10 +02:00
Reto Brunner 12679081c8 ident: fix write after connection end
We only respond once to data, then half-close the connection.
Hence, we should only listen to a single data event as well,
else if the remote doesn't stop sending data we keep trying to
write to the closed write end of the pipe.
2024-05-09 19:01:10 +02:00
Reto Brunner 0e48014d5a ident: only respond if the ip,port tuples match
Per RFC 1413, The uniquely identifying tuple includes not only the ports,
but also both addresses.

If multiple connections happen to use the same local port number
(which is possible if the addresses differ), the username of the first
is returned for all, resulting in the wrong ident for all but the
first.

By not checking the connection address, the information becomes
public. Because there is only relatively small number of local ports,
and the remote ports are likely to be either 6667 or 6697, it becomes
trivial to enumerate all the users.

Co-Authored-By: Juerd Waalboer <juerd@tnx.nl>
2024-05-09 19:01:10 +02:00
Reto Brunner 4819406af5 ident: order imports 2024-05-09 17:24:53 +02:00
Max Leiter 74563effa7
Merge pull request #4869 from thelounge/tsUpdate
Ts update
2024-05-04 21:49:58 -07:00
Max Leiter cbab10f416
Merge pull request #4870 from thelounge/dts
remove unused .d.ts file
2024-05-04 21:46:54 -07:00
Reto Brunner 4dfeb899b4 remove unused .d.ts file 2024-05-04 13:45:40 +02:00
Reto Brunner 3259ac596d client: fix all new linter errros 2024-05-04 12:29:57 +02:00
Reto Brunner 3fbbc39cd6 client/commands: statically import commands
Dynamic imports won't work very well with modules and we don't
really need them, it's just there to save us an import statement.

Let's flip this to a static version.
2024-05-04 12:29:57 +02:00
Reto Brunner 9ae9482223 bump all eslint related deps 2024-05-02 08:21:34 +02:00
Reto Brunner a3953405ed bump eslint to latest 8.* 2024-04-27 13:19:39 +02:00
Reto Brunner 9086bc648d bump typescript to v5 2024-04-27 13:06:30 +02:00
Reto Brunner da2572fe25 Merge remote-tracking branch 'origin/renovate/read-0.x' 2024-04-27 12:50:11 +02:00
Reto Brunner d9977df315 Merge remote-tracking branch 'origin/renovate/sqlite3-3.x' 2024-04-27 12:48:20 +02:00
Reto Brunner cc0aa5e8e5 Merge remote-tracking branch 'origin/renovate/npm-webpack-dev-middleware-vulnerability' 2024-04-27 12:47:01 +02:00
Reto Brunner 02df78b0f2 Merge remote-tracking branch 'origin/renovate/npm-express-vulnerability' 2024-04-27 12:46:42 +02:00
Reto Brunner 18b0e06855 Merge remote-tracking branch 'origin/renovate/express-4.x' 2024-04-27 12:46:27 +02:00
Reto Brunner d5db9c653b Merge remote-tracking branch 'origin/renovate/ua-parser-js-0.x' 2024-04-27 12:46:09 +02:00
Reto Brunner f7926267d9 untangle client and server
Our project was quite confused as to the boundaries between client and
server code.
This false sharing meant that it was quite hard to tell what was actually
sent to the client and what was uniquely scoped to either side.

Further, this meant that our compilation and build pipelines were very
confused and pulled in files they should not have.

This commit series tries to untangle the two. This also entails fixing
quite some typing issues.
It's hard to make this in sane, small, commits that still build at each
step (it's impossible, as fixing one type error / any type immediately lead
to further errors in a game of whack a mole).
So you'll get my actual progress in small commits that can each be reviewed,
however the earlier ones are in fact sometimes wrong and get cleaned up later
once the picture is a bit clearer.
2024-04-26 09:39:15 +02:00
Reto Brunner 8eb398c5cc server: don't throw in async callback from index requests
This was flagged as an issue by codeQL

> Server crash [High]
> The server of this route handler will terminate when an
> uncaught exception from this location escapes an
> asynchronous callback.
2024-04-21 15:49:51 +02:00
Reto Brunner 36cb75ee99 NetworkForm: disable unsafe return lints for now
The NetworkForm type is wrong, hence the compiler can't infer the type.
This needs quite some changes, so for now we just turn the linter off
for the 2 watch functions.
The whole component is too dynamic to fix easily.
2024-04-21 15:11:52 +02:00
Reto Brunner 1ec67a6605 test/sqlite: remove unused eslint directive 2024-04-21 15:11:52 +02:00
Reto Brunner 8372c5a57e test: token in init event payload is undefined not null
Doesn't matter which, code happens to emit undefined.
Adapt test expectation over writing strange || null code.
The conditional just checks for a falsey value.
2024-04-21 15:11:52 +02:00
Reto Brunner 5567f07a7c test/chan: remove users field from test
The client side fetches the user list when needed, we don't send
it over from the server.
Hence modify the test expectation.
2024-04-21 15:11:52 +02:00
Reto Brunner a200bab8bd test/chan: getFilteredClone has more fields than the test thinks
The codebase shoves various things into channel objects to transmit them
for things like channel lists etc.

This however means that the type does contains the fields and needs
to export them.

We should clean up the events so that we can get rid of all that.
But for now, we adapt the test expectation to reality.
2024-04-21 15:11:52 +02:00
Reto Brunner 91ac363cc6 components/MessageTypes/errors: fix eslint errors
This makes the code somewhat ugly, but to properly fix we need
to enforce the needed fields
2024-04-21 15:11:52 +02:00
Reto Brunner 6c9d2c36a1 components/Message: fix eslint errors 2024-04-21 15:11:52 +02:00
Reto Brunner 6241eed8f4 client/ImageViewer: fix types and guard against undefined 2024-04-21 15:11:52 +02:00
Reto Brunner 03151e0ab1 test/plugins/sqlite: fix import path 2024-04-21 15:11:52 +02:00
Reto Brunner 7f5e0f3ebf test/plugins/link: fix import path 2024-04-21 15:11:52 +02:00
Reto Brunner 5e444be37b test/models/network: fix import path 2024-04-21 15:11:52 +02:00
Reto Brunner c8664301ba test/models/msg: fix linkpreview import 2024-04-21 15:11:52 +02:00
Reto Brunner 1edb5a72c1 test/models/chan: we do not send an empty user list anymore 2024-04-21 15:11:52 +02:00
Reto Brunner 31d987283a fix mode tests 2024-04-21 15:11:52 +02:00
Reto Brunner 4ceafb653f test/client: fix import path 2024-04-21 15:11:52 +02:00
Reto Brunner f25fee4c6c previews: fix possibly undefined 2024-04-21 15:11:52 +02:00
Reto Brunner 96848c1c1b msg_preview: fix possibly undefined error 2024-04-21 15:11:52 +02:00
Reto Brunner 4b07e05491 client: add missing import for SharedMsg 2024-04-21 15:11:52 +02:00
Reto Brunner fc9805545b sharedMsg: remove userAway
userAway is purely server side and we don't send it to the client
2024-04-21 15:11:52 +02:00
Reto Brunner 82e4150cc8 server: remove type cast from change pw 2024-04-21 15:11:52 +02:00
Reto Brunner e61e356f1e server: somewhat type fix auth related functions
The auth functions are a bloody mess and need to be cleaned up.
using various callback functions and using variables as pointers makes the logic
hard to follow and hence idiotic to type too, as multiple orthogonal logic paths
are mixed up into one function.

This really needs to be untangled
2024-04-21 15:11:52 +02:00
Reto Brunner 5001d607b1 server: mark req params as unused 2024-04-21 15:11:52 +02:00
Reto Brunner 8c41356ae9 publicClient: type fix 2024-04-21 15:11:52 +02:00
Reto Brunner e2b56cf16b irc-events/message: fix types 2024-04-21 15:11:52 +02:00
Reto Brunner 92a0affba1 kick: use the user object 2024-04-21 15:11:52 +02:00
Reto Brunner edb96f683b cap: type the boolean 2024-04-21 15:11:52 +02:00
Reto Brunner 5c8951ffc3 fix extractTargetGroup typing 2024-04-21 15:11:52 +02:00
Reto Brunner c3fc54e158 ignorelist: shut up the linter 2024-04-21 15:11:52 +02:00
Reto Brunner 917fdb2a0a ignore: remove dead import 2024-04-21 15:11:52 +02:00
Reto Brunner b8400a3a46 ignore: clean up the types and conditionals
Now that ignorelist doesn't muddy the waters, we can clean up
all the funny conditional types and enforce `when`
2024-04-21 15:11:52 +02:00
Reto Brunner 071a5afda6 ignore: move ignorelist to its own command
ignorelist shares no logic with /ignore or /unignore so it shouldn't
share a file. That just makes typing awkward.
2024-04-21 15:11:52 +02:00
Reto Brunner 5274fdc21a ignore: keep happy path on the left
It is much easier to follow the control flow if error checks
are done on the indented path, immediately returning.
2024-04-21 15:11:52 +02:00
Reto Brunner b8a9fe08ab clientCertificate: remove unsafe casts 2024-04-21 15:11:52 +02:00
Reto Brunner a4afa08add ldap: type SearchOptions scope 2024-04-21 15:11:52 +02:00
Reto Brunner 4614c35486 chan: type untyped method params 2024-04-21 15:11:52 +02:00
Reto Brunner 540144c417 chan: remove cast in pushMessage 2024-04-21 15:11:52 +02:00
Reto Brunner bb7c3925c6 type serverOptions for network:options 2024-04-21 15:11:52 +02:00
Reto Brunner 9898f38de6 add todo 2024-04-21 15:11:52 +02:00
Reto Brunner 9f2c82e152 fix mentions 2024-04-21 15:11:52 +02:00
Reto Brunner 17ba07db3b fix mentions import 2024-04-21 15:11:52 +02:00
Reto Brunner 0311e5f836 add socket-events import to entry point
socket-events aren't ever imported, if we don't do that however
webpack never actually sees any code that leads to it and skips
bundling it.

So for now, do an import that has the side effect of registering
all the events until we have a proper registration in place that's
a bit more sane to call
2024-04-21 15:11:52 +02:00
Reto Brunner 4d0474b897 store: don't duplicate import 2024-04-21 15:11:52 +02:00
Reto Brunner 14b9169899 store: fix import 2024-04-21 15:11:52 +02:00
Reto Brunner 50037644c0 socket-events: fix join 2024-04-21 15:11:52 +02:00
Reto Brunner 7287c6bcaa remove dead import 2024-04-21 15:11:52 +02:00
Reto Brunner bfca0ca612 fix more 2024-04-21 15:11:52 +02:00
Reto Brunner 300bd4c84c add timestamp to NotificationOptions 2024-04-21 15:11:52 +02:00
Reto Brunner 42ea66c343 socket-events/msg: fix errors 2024-04-21 15:11:51 +02:00
Reto Brunner 1565eb8d05 socket-events/msg: if/else chains are not a switch replacement
If we switch on a field, use switch for god's sake.
If/elif chains are for cases where you have multiple selectors.
2024-04-21 15:11:51 +02:00
Reto Brunner 29750a3e51 ClientChan: does need a user array after all 2024-04-21 15:11:51 +02:00
Reto Brunner 3ea5170e6a socket-events: fix network:status 2024-04-21 15:11:51 +02:00
Reto Brunner fe4f497fad fix socket-event: network 2024-04-21 15:11:51 +02:00
Reto Brunner c20cd6bda1 publicClient: add FIXME and ignore the type mismatch
The publicClient interface is utterly horrific.
It allows any client to inject arbitrary events into the socket.io
event stream.
This should get wrapped into a "plugin" event so that it can get properly
typed, better yet, this should get removed completely.
2024-04-21 15:11:51 +02:00
Reto Brunner 1c4ce5d4a5 fix sync_sort:channels emitter 2024-04-21 15:11:51 +02:00
Reto Brunner 9c4d24d1f7 fix join socket type 2024-04-21 15:11:51 +02:00
Reto Brunner 35e38d13c4 client: properly type the emit method
This breaks the world -.-
2024-04-21 15:11:51 +02:00
Reto Brunner bf7eb0e727 network event: remove unused array
All the network events only ever emit a single copy
There's no point in wrapping it into an array
2024-04-21 15:11:51 +02:00
Reto Brunner 5ee9c2b338 type Server 2024-04-21 15:11:51 +02:00
Reto Brunner e15b121080 remove obsolete error override 2024-04-21 15:11:51 +02:00
Reto Brunner 98452ccc18 remove obsolete import 2024-04-21 15:11:51 +02:00
Reto Brunner a8e7022d04 fix search event params 2024-04-21 15:11:51 +02:00
Reto Brunner 60486bf5e3 server: fix init client 2024-04-21 15:11:51 +02:00
Reto Brunner 46f3fd9682 server: fix push subscription 2024-04-21 15:11:51 +02:00
Reto Brunner 56215382a3 server: remove static props which are currently unused 2024-04-21 15:11:51 +02:00
Reto Brunner 9ab9ad0f56 socket-events: fix up init 2024-04-21 15:11:51 +02:00
Reto Brunner 0660a8772c server: fix getFilteredClone of chan 2024-04-21 15:11:51 +02:00
Reto Brunner f5c691f37b wip: unbork init progress 2024-04-21 15:11:51 +02:00
Reto Brunner 0067c30273 Split sort event
The sort event bundled networks and channels for no reason at all.
They share none of the actual logic, so combining them just makes
the typing poor but serves no benefit.
2024-04-21 15:11:51 +02:00
Reto Brunner 843db1727b server: actually type the socket 2024-04-21 15:11:51 +02:00
Reto Brunner e9ef59b641 fix bad typing
There were quite some errors, where the type was passed the wrong way
```
// This is invalid
"change-password": ({ old_password: string, new_password: string, verify_password: string})

// What was actually meant
"change-password": (data: { old_password: string, new_password: string, verify_password: string})
```

The whole callback function is also very verbose as is, with fluff we don't need.
It's always a function that returns void, so there's no real information to be gained
by spelling it out time and time again.

Let's use a helper type that just accepts the payload.
That should make the above error impossible to do.
2024-04-21 15:11:51 +02:00
Reto Brunner fceffd42b9 fix missing import 2024-04-21 15:11:51 +02:00
Reto Brunner b89b0cad53 client: id is always a string, not a number 2024-04-21 15:11:51 +02:00
Reto Brunner c869ea9a73 sharedchans does not have users 2024-04-21 15:11:51 +02:00
Reto Brunner 9aee3e3e98 Some whitespace is good mkey 2024-04-21 15:11:51 +02:00
Reto Brunner 636b5c5b04 models/network: unfuck client export 2024-04-21 15:11:51 +02:00
Reto Brunner 6984e8f25a unused import 2024-04-21 15:11:51 +02:00
Reto Brunner e43cbb139c remove all server files from compilation 2024-04-21 15:11:51 +02:00
Reto Brunner e57e547b74 further chan fixes 2024-04-21 15:11:51 +02:00
Reto Brunner 3217536245 searchresponse 2024-04-21 15:11:51 +02:00
Reto Brunner 194b4e1a2f import fix 2024-04-21 15:11:51 +02:00
Reto Brunner 88c8830a17 chatuserlist 2024-04-21 15:11:51 +02:00
Reto Brunner 7073584f1c fix msg event 2024-04-21 15:11:51 +02:00
Reto Brunner 8e6920af1d configuration 2024-04-21 15:11:51 +02:00
Reto Brunner 7bc184b252 changelog data type 2024-04-21 15:11:51 +02:00
Reto Brunner 4d237600d5 changelog: don't type assert to a broken type
The mandatory fields are unset, stop lying to the compiler
2024-04-21 15:11:51 +02:00
Reto Brunner 383907c2b8 Use SharedTypes 2024-04-21 15:10:45 +02:00
Reto Brunner f0ee3be6fb wip: config 2024-04-21 15:10:45 +02:00
Reto Brunner 12a0b0b6f9 network 2024-04-21 15:10:45 +02:00
Reto Brunner d716402da2 mention 2024-04-21 15:10:45 +02:00
Reto Brunner d0b71aba32 shared: extract chan + user 2024-04-21 15:10:45 +02:00
Reto Brunner 3f0ee6a961 move chan enums 2024-04-21 15:10:45 +02:00
Reto Brunner b67e4699f5 wip sharedmsg in client 2024-04-21 15:10:45 +02:00
Reto Brunner 68ba13ca12 wip: searchquery 2024-04-21 15:10:45 +02:00
Reto Brunner 3eb19135f5 wip: msg 2024-04-21 15:10:41 +02:00
Max Leiter 549c445853
Merge pull request #4856 from thelounge/generateConfigDoc
fix generate-config-doc.js
2024-04-07 19:38:13 -07:00
Reto Brunner 2466c1b1e4 fix generate-config-doc.js
It errored out with
> Error: Cannot find module '../server/log'
Which is expected, but we don't really need it, we can just open code
the log functions
2024-04-07 16:22:08 +02:00
Reto Brunner f5867c3643 v4.4.3
Bump version to kick CI/CD for the actual deployment
2024-04-06 13:48:04 +02:00
Reto Brunner 231c498def release workflow: fix broken npm update
The release workflow wants to use --provenance but the update fails:

Run npm install -g npm
npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /usr/local/share/man/man7
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/share/man/man7'
npm ERR!  [Error: EACCES: permission denied, mkdir '/usr/local/share/man/man7'] {
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/usr/local/share/man/man7'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

So we fix it by just telling the action what we want rather than monkey patching it.

Link: https://github.com/thelounge/thelounge/actions/runs/8580746748/job/23517165611
2024-04-06 13:31:48 +02:00
Reto Brunner eeaec413d6 v4.4.2 2024-04-03 08:20:36 +02:00
Reto Brunner 515f894c13 changelog: don't break if author is nil
The author field can somehow be null for whatever reason...
Guard the script against blowing up
2024-04-01 15:15:50 +02:00
renovate[bot] e8f6ba5b08
chore(deps): update dependency @types/ua-parser-js to v0.7.39 2024-04-01 00:49:35 +00:00
renovate[bot] 07276bbde4
chore(deps): update dependency @types/express to v4.17.21 2024-04-01 00:49:23 +00:00
renovate[bot] 9ad92e1860
fix(deps): update dependency express to v4.19.2 [security] 2024-03-28 00:33:05 +00:00
renovate[bot] 7923d4a2cd
chore(deps): update dependency webpack-dev-middleware to v5.3.4 [security] 2024-03-23 16:07:59 +00:00
renovate[bot] 9248358169
chore(deps): update dependency @types/sqlite3 to v3.1.11 2024-03-01 02:16:09 +00:00
renovate[bot] 6ab52bc9a9
chore(deps): update dependency @types/read to v0.0.32 2024-03-01 02:15:57 +00:00
Reto Brunner 48213955b9 v4.4.2-rc.1 2024-02-19 19:52:37 +01:00
Reto Brunner 682b3b91aa rc changelog 2024-02-19 19:46:46 +01:00
Reto Brunner be3e27aa19 Merge remote-tracking branch 'origin/pull/4231' 2024-02-19 13:50:00 +01:00
Reto Brunner c09f751552 Merge remote-tracking branch 'origin/pull/4834' 2024-02-19 13:45:53 +01:00
Reto Brunner fb5864ee00 Merge branch 'linkifyOverride' 2024-02-19 13:43:00 +01:00
Reto Brunner 3bd5b704c7 Merge remote-tracking branch 'origin/renovate/node-17.x' 2024-02-19 13:37:06 +01:00
Reto Brunner 139ce47b73 update @types/mousetrap 2024-02-19 13:34:46 +01:00
Zach Bloomquist 45563d9a59
server: remove version from CTCP response 2024-02-01 00:09:45 -05:00
renovate[bot] e2fda1fb84
chore(deps): update dependency @types/node to v17.0.45 2024-02-01 03:42:37 +00:00
renovate[bot] a77fbb894f
chore(deps): update dependency @types/mousetrap to v1.6.15 2024-02-01 03:42:30 +00:00
renovate[bot] fe50a90235
chore(deps): update dependency @types/lodash to v4.14.202 2024-02-01 01:15:55 +00:00
Reto Brunner a8be84028c Merge rm-node-16 2024-01-28 10:55:12 +01:00
Max Leiter 25e55ce75c
Merge pull request #4815 from thelounge/renovate/sqlite3-5.x
chore(deps): update dependency sqlite3 to v5.1.7
2024-01-27 15:56:29 -08:00
Max Leiter 113e9bd2fb Remove Node.js 16 from package.json and testing matrix
Node.js 16 entered EOL in September 2023 (https://nodejs.org/en/blog/announcements/nodejs16-eol)
2024-01-27 15:55:55 -08:00
Max Leiter 2b146ba3e6
Merge pull request #4825 from thelounge/testingSetup
Testing setup
2024-01-27 15:40:09 -08:00
Max Leiter f95dd29a0d
Merge pull request #4811 from thelounge/renovate/textcomplete-textarea-0.x
chore(deps): update dependency @textcomplete/textarea to v0.1.13
2024-01-27 15:40:01 -08:00
Max Leiter 91dc719c93
Merge branch 'master' into testingSetup 2024-01-27 15:34:07 -08:00
Max Leiter 5af893db3a
Merge pull request #4826 from thelounge/huskyDie
Remove husky, add githooks-install
2024-01-27 15:33:26 -08:00
Nachtalb daabb76781
Add shorcut to navigate between channels with undread msgs 2024-01-27 22:50:10 +01:00
Reto Brunner 393d0a63b7 Remove husky, add githooks-install
Fixes: https://github.com/thelounge/thelounge/issues/4452
2024-01-27 16:59:46 +01:00
Reto Brunner 037fc479b8 test: be specific as to which command we want to invoke 2024-01-27 15:41:46 +01:00
Reto Brunner 646bafab99 mocha: move spec to invocation
If we specify the spec in the config file, we can't manually
specify a specific test file from the cli.

This is annoying, as the alternative is copying out the full
package.json blurb into the shell.

Rather, give the spec in the invocation and add a helper
that makes testing a specific file simple.

With this `yarn test:nospec test/plugins/link.ts` will only run
tests within that file
2024-01-27 15:34:13 +01:00
Reto Brunner d4c77c74f6 test:mocha remove duplicate flags
We already specify color in the config file.
ts-node is already required in the config file
2024-01-27 15:26:37 +01:00
Reto Brunner eeefeb229c mocharc: Remove interactive
Interactive isn't a thing according to the help output or the
config docs
2024-01-27 15:24:09 +01:00
Reto Brunner 29c5323bfd test:mocha: webpack doesn't switch on NODE_ENV=test
So we might as well not complicate the cli for no reason
2024-01-27 14:11:30 +01:00
Reto Brunner a12ddc75d8 test:mocha don't run coverage report
Tests should run the tests, not the coverage.
Frequently one is debugging a test, the coverage won't change
between runs but it delays the cycle considerably.

Rather, if one wants to look at the coverage, one should use
the "coverage" command
2024-01-27 14:11:30 +01:00
Reto Brunner dd24cb1300 linkify: simplify noscheme detection logic
Overriding the built in is poor form, as this prevents adding
a new type handler with its own normalize handler.

We only ever want to override protocol-less URLs to http, so
we just do so explicitly in the "//" schema normalizer.

This also means that we don't need all that type conversion dance,
we simply set the schema to null when we patch it and filter on the
schema directly
2024-01-21 21:18:09 +01:00
SoniEx2 ae6bae69ac linkify: Add web+ schema support
Co-Authored-By: Reto Brunner <reto@slightlybroken.com>
2024-01-21 17:47:32 +01:00
renovate[bot] b5372e3ed7
chore(deps): update dependency sqlite3 to v5.1.7 2024-01-06 10:39:32 +00:00
Reto Brunner d15998d919 Merge renovate/content-disposition-0.x 2024-01-04 19:04:00 +01:00
Reto Brunner 436bf6a180 Merge renovate/linkify-it-3.x 2024-01-04 19:03:40 +01:00
renovate[bot] 1d2fdd95b0
chore(deps): update dependency @types/linkify-it to v3.0.5 2024-01-01 03:42:56 +00:00
renovate[bot] eaa70caad7
chore(deps): update dependency @types/is-utf8 to v0.2.3 2024-01-01 03:42:48 +00:00
renovate[bot] aa95032760
chore(deps): update dependency @types/content-disposition to v0.5.8 2024-01-01 01:41:48 +00:00
renovate[bot] e636121d7a
chore(deps): update dependency @textcomplete/textarea to v0.1.13 2024-01-01 01:41:39 +00:00
Max Leiter 083abae750
Merge pull request #4783 from thelounge/router-api
router: don't use next() in router guards
2023-12-26 16:49:37 -08:00
Max Leiter 01cfe3d19d
Merge pull request #4807 from flotwig/fixup-generate-config-docs-script
scripts: fix generate-config-doc, handle usage errors
2023-12-26 16:49:20 -08:00
Reto Brunner 7f0b721790 add storage cleaner
Introduce the ability to clean up old messages from the sqlite db.
The StoragePolicy can be chosen by the user. Currently there's
two versions, delete everything based on age is the obvious.

The other is for the data hoarders among us. It'll only delete
message types which can be considered low value... Types with
a time aspect like away / back... joins / parts etc.

It tries to do that in a sensible way, so that we don't block
all other db writers that are ongoing.
The "periodically" interval is by design not exposed to the user.
2023-12-26 12:00:53 +01:00
Reto Brunner edb1226b47 sqlite: add msg type index to speed up cleaner 2023-12-24 16:55:45 +01:00
Reto Brunner b0ca8e51fb wire up storage cleaner upon server start 2023-12-24 16:55:45 +01:00
Reto Brunner 21b1152f53 cleaner: expose cli task to do cleaning + vacuum
Make the cleaner available to users by exposing it as a subcommand
to thelounge storage.

This is recommended to be run whenever the storage policy significantly
changes in a way that makes many messages eligible for deletion.
The cleaner would cope, but it'll be inefficient and can take many hours.
Due to how storage works in sqlite, the space would not actually be
given back to the OS, just marked for future writes.
Hence this also runs a vacuum to compact the DB as much as it can.
2023-12-24 16:55:45 +01:00
Reto Brunner 74aff7ee5a introduce storage cleaner
Once this is getting hooked up, it'll periodically delete old
messages.

The StoragePolicy can be chosen by the user, currently there's
two versions, delete everything based on age is the obvious.

The other is for the data hoarders among us. It'll only delete
message types which can be considered low value... Types with
a time aspect like away / back... joins / parts etc.

It tries to do that in a sensible way, so that we don't block
all other db writers that are ongoing.
The "periodically" interval is by design not exposed to the user.
2023-12-24 16:55:45 +01:00
Reto Brunner 14d9ff247d sqlite: implement deleteMessages
This is laying the foundation to build a cleaning task that's
sort of database agnostic.
All calls are done by acting on a "DeletionRequest" so interpretation
of the config will go through a single point
2023-12-23 21:08:07 +01:00
Reto Brunner aec8d0b033 sqlite: accept db connection string
This allows us to inject a memory db during testing
2023-12-23 21:08:07 +01:00
Reto Brunner 60ddf17124 sqlite: use variadic function for serialize_run
This makes the usage of the function a bit nicer
2023-12-23 21:08:07 +01:00
dependabot[bot] 20227b174c
build(deps): bump @babel/traverse from 7.18.9 to 7.23.6
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.18.9 to 7.23.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.6/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-23 10:07:23 +00:00
Reto Brunner d18182da8b Merge 'renovate/cheerio-0.x' 2023-12-20 07:40:09 +01:00
Reto Brunner ea35040b42 Merge renovate/bcryptjs-2.x 2023-12-20 07:38:59 +01:00
Reto Brunner 97f553eea8 cli: don't fail if stderr is not in json format
A user reported in the IRC chan that installing packages fails with

```
2023-12-13 20:02:34 [INFO] Installing thelounge-theme-solarized v1.1.9...
undefined:1
(node:3329) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
^
SyntaxError: Unexpected token '(', "(node:3329"... is not valid JSON
```

Now, this happens as yarn helpfully prints a deprecation warning
that is shown in the stack trace.

Let's assume that we may get non json messages and log them at debug, as we
don't know their severity.
2023-12-13 22:55:53 +01:00
Zach Bloomquist 6603c1a6e6
scripts: fix generate-config-doc, handle usage errors 2023-12-12 11:52:45 -05:00
renovate[bot] 73a529acea
chore(deps): update dependency @types/cheerio to v0.22.35 2023-12-01 01:11:42 +00:00
renovate[bot] 2f40d9dbcc
chore(deps): update dependency @types/bcryptjs to v2.4.6 2023-12-01 01:11:29 +00:00
Reto Brunner d1561f8ebc sqlite: return new version in downgrade()
We want to give the caller the current version, not the last
version we rolled back, fix that
2023-11-06 07:52:59 +01:00
Reto Brunner ec75ff00cb sqlite: don't modify global array during tests 2023-11-06 07:52:59 +01:00
Reto Brunner 884a92c74b sqlite: fix typo fetch_rollbacks 2023-11-06 07:52:59 +01:00
Reto Brunner 77b64c546b dont' crash on rDNS failure 2023-11-06 07:36:52 +01:00
Reto Brunner cc59e6b578 Merge renovate/is-utf8-0.x 2023-11-04 12:22:05 +01:00
Reto Brunner fb1d79f5fa Merge renovate/bcryptjs-2.x 2023-11-04 12:21:46 +01:00
Reto Brunner 100ff3c198 Merge renovate/actions-setup-node-4.x 2023-11-04 12:19:04 +01:00
Reto Brunner d893feff1c Merge renovate/mousetrap-1.x 2023-11-04 12:18:47 +01:00
Reto Brunner 88a5fef4ea Merge renovate/lodash-4.x 2023-11-04 12:17:54 +01:00
Reto Brunner 5b64ecbe68 Merge renovate/content-disposition-0.x 2023-11-04 12:11:33 +01:00
Reto Brunner 5024acd7dc Merge renovate/cheerio-0.x 2023-11-04 12:10:14 +01:00
Reto Brunner bbfada251c Merge renovate/npm-postcss-vulnerability 2023-11-04 12:09:49 +01:00
Reto Brunner 8cec292f2c Merge dependabot/npm_and_yarn/get-func-name-2.0.2 2023-11-04 12:08:42 +01:00
Reto Brunner 22ae594cc3 bump caniuse-lite 2023-11-04 12:04:51 +01:00
Reto Brunner 1c6bec2323 Merge branch 'cliMigrations' 2023-11-04 11:59:41 +01:00
Reto Brunner 9105fbc23a Merge branch 'emoji' 2023-11-04 11:53:30 +01:00
Reto Brunner 8c54cd50d8 don't crash on rDNS failure
Node apparently throws even on valid ipv6 input in certain environments,
probably due to the DNS server returning SERVFAIL.
Guard against it and fallback with the plain IP

Fixes: https://github.com/thelounge/thelounge/issues/4768
2023-11-04 11:45:11 +01:00
renovate[bot] 59de6afd3f
chore(deps): update dependency @types/is-utf8 to v0.2.2 2023-11-01 00:33:46 +00:00
renovate[bot] b506966b08
chore(deps): update dependency @types/bcryptjs to v2.4.5 2023-11-01 00:33:33 +00:00
renovate[bot] 785ec0a0e2
chore(deps): update actions/setup-node action to v4 2023-10-24 16:50:41 +00:00
renovate[bot] 250433c875
chore(deps): update dependency @types/mousetrap to v1.6.13 2023-10-19 10:52:51 +00:00
renovate[bot] d4d5a8e386
chore(deps): update dependency @types/lodash to v4.14.200 2023-10-19 08:04:02 +00:00
renovate[bot] bcca111a4d
chore(deps): update dependency @types/content-disposition to v0.5.7 2023-10-19 02:00:59 +00:00
renovate[bot] b686059c6b
chore(deps): update dependency @types/cheerio to v0.22.33 2023-10-19 02:00:46 +00:00
renovate[bot] ff77a33663
chore(deps): update dependency postcss to v8.4.31 [security] 2023-10-08 01:28:22 +00:00
dependabot[bot] d308e74183
build(deps): bump get-func-name from 2.0.0 to 2.0.2
Bumps [get-func-name](https://github.com/chaijs/get-func-name) from 2.0.0 to 2.0.2.
- [Release notes](https://github.com/chaijs/get-func-name/releases)
- [Commits](https://github.com/chaijs/get-func-name/commits/v2.0.2)

---
updated-dependencies:
- dependency-name: get-func-name
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-28 05:21:42 +00:00
Reto Brunner f999db99c7 Merge branch 'renovate/linkify-it-3.x' 2023-09-18 21:03:10 +02:00
Reto Brunner 76c896aea2 Merge branch 'renovate/bcryptjs-2.x' 2023-09-18 20:22:50 +02:00
dependabot[bot] 08413c7b6b
build(deps): bump word-wrap from 1.2.3 to 1.2.5
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 18:13:29 +00:00
renovate[bot] 48301b1ca3
chore(deps): update dependency @types/bcryptjs to v2.4.4 2023-09-16 19:28:31 +00:00
Reto Brunner 03795a2718 router: don't use next() in router guards
Vue wants to get rid of the next call.
https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next

For one of the router guards, it's easy enough to do so let's do
that.
2023-09-16 13:17:06 +02:00
renovate[bot] 2985727996
chore(deps): update dependency @types/linkify-it to v3.0.3 2023-09-01 01:55:02 +00:00
Max Leiter 9f05a75c39
Merge pull request #4770 from thelounge/smallTScleanup 2023-07-31 11:04:08 -07:00
Reto Brunner c0b38d4762 store: use return type over a type cast 2023-07-31 10:50:48 +02:00
Reto Brunner 2878f87879 Respect bind setting for all outgoing requests
So far the bind config only impacted the IRC connections.
However, nothing in our doc comment says that this is intentional.

bind
Set the local IP to bind to for outgoing connections.

This commit fixes the leak and uses it for all outgoing requests
as described by the docstring.
2023-07-16 12:02:22 +02:00
dependabot[bot] 447a237fc6
build(deps): bump semver from 7.3.5 to 7.5.2
Bumps [semver](https://github.com/npm/node-semver) from 7.3.5 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.5...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-16 09:56:00 +00:00
Reto Brunner 430a865e9f update dependency postcss to v8.4.26 2023-07-16 11:52:16 +02:00
Reto Brunner 816b7686e3 update dependency @types/chai to v4.3.5 2023-07-16 11:50:19 +02:00
Reto Brunner 2e019a2fdb update dependency @types/lodash to v4.14.195 2023-07-16 11:49:15 +02:00
Reto Brunner 4f9ca3e192 update dependency @vue/test-utils to v2.4.0 2023-07-16 11:45:47 +02:00
Reto Brunner 57c4d5513c update dependency webpack-hot-middleware to v2.25.4 2023-07-16 11:42:58 +02:00
Reto Brunner 3e21bfcbea update dependency cheerio to v1.0.0-rc.12 2023-07-16 11:35:49 +02:00
Reto Brunner 607b9fc96a update emoji 2023-07-15 10:41:43 +02:00
Reto Brunner 1a1153aed6 use shebang for generate-emoji script 2023-07-15 10:40:44 +02:00
renovate[bot] 54ff563247
chore(deps): update dependency postcss to v8.4.26 2023-07-14 20:02:42 +00:00
Reto Brunner ed0a47fe2c bump emoji-regex to latest
Fixes: https://github.com/thelounge/thelounge/issues/4761
2023-07-12 08:24:58 +02:00
Reto Brunner 3af4ad1076 Respect bind setting for all outgoing requests
So far the bind config only impacted the IRC connections.
However, nothing in our doc comment says that this is intentional.

> ### bind
> Set the local IP to bind to for outgoing connections.

This commit fixes the leak and uses it for all outgoing requests
as described by the docstring.
2023-06-25 19:30:52 +02:00
Reto Brunner 79fae26f39 test/storage: use helper for url creation
We keep repeating ourselves, let's move that into a helper instead.
In order to get a sane host, we fix the listener to 127.0.0.1
else we get the unspecified :: ipv6 addr (on suitable hosts),
which isn't useful.
2023-06-25 19:30:52 +02:00
Reto Brunner c6b1913b91 test/link: use helper for url creation
We keep repeating ourselves, let's move that into a helper instead.
In order to get a sane host, we fix the listener to 127.0.0.1
else we get the unspecified :: ipv6 addr (on suitable hosts),
which isn't useful.
2023-06-25 19:08:23 +02:00
Reto Brunner 071ad96d9b Merge branch 'signin' 2023-06-25 10:15:21 +02:00
Reto Brunner 2ef8b37009 sqlite: add migrations support and introduce primary key
Add the ability to migrate our db in the upwards direction.
Use the facility to add primary keys to our messages table.
This should allow work like jumping to messages and the likes.

This also introduces the framework for rollback, without actually
hooking it up.
This should be easy enough to do when the need arises.
2023-06-24 14:50:39 +02:00
Reto Brunner 8aa5e33b1d Fix semver for prerelease versions #4744 2023-06-24 14:35:41 +02:00
Reto Brunner 43a2b397a2 Add comments explaining behavior when echo-message is not available 2023-06-24 14:32:33 +02:00
Reto Brunner c43a47afc1 Merge branch 'applePush' 2023-06-24 14:31:23 +02:00
Reto Brunner 14575c94cf Merge branch 'frameworkInternals' 2023-06-24 14:28:48 +02:00
renovate[bot] 303f53fe72
chore(deps): update dependency @vue/test-utils to v2.4.0 2023-06-23 00:52:37 +00:00
renovate[bot] 06f1387f7b
chore(deps): update dependency webpack-hot-middleware to v2.25.4 2023-06-21 23:04:16 +00:00
Reto Brunner c5326e8795 Sign in: use v-model
There's no need to mess with DOM elements, we can use the normal
v-model approach for both username and password
2023-06-18 15:20:08 +02:00
Reto Brunner 355c5d6fa4 v4.4.1 2023-06-13 08:24:37 +02:00
Kufat 7ac2a6fd77 Fix semver for prerelease versions
Noticed this breakage while trying to install a plugin on 4.4.1-rc2.

```
> semver.default.satisfies("4.4.1-rc2", ">=4.3.0")
false
> semver.default.satisfies("4.4.1-rc2", ">=4.3.0", {includePrerelease: true})
true
```
2023-06-01 08:03:07 -04:00
renovate[bot] c4879fdbba
fix(deps): update dependency cheerio to v1.0.0-rc.12 2023-06-01 02:09:05 +00:00
Val Lorentz 4255c1cdec Add comments explaining behavior when echo-message is not available 2023-05-30 22:09:39 +02:00
Reto Brunner ae9d312b2a v4.4.1-rc.2 2023-05-27 08:51:42 +02:00
renovate[bot] f7c6ba5eb1
chore(deps): update dependency @types/lodash to v4.14.195 2023-05-26 23:27:55 +00:00
Reto Brunner 4d60d9c282 bump socket.io-parser from 4.2.1 to 4.2.3 2023-05-25 07:36:54 +02:00
dependabot[bot] af49ef21ea
build(deps): bump socket.io-parser from 4.2.1 to 4.2.3
Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.3.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.1...4.2.3)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-25 05:33:59 +00:00
Reto Brunner 7a9ddc01e1 settings: make missing_field msg descriptive
The "missing_fields" error triggers on any missing field (duh).
"Please enter a new password" is not a sensible string for that.
2023-05-23 08:24:20 +02:00
Reto Brunner 8f08cf3d0b client: fix password change input
The TS rewrite dropped the form that was expected to be passed
as props.
That lead to the password change being borked, as the fields
were always set to "null".
We don't need a form, can just use refs here.
2023-05-23 08:18:20 +02:00
Reto Brunner e05871fd2f 4.4.1-rc.1
Co-Authored-By: Max Leiter <maxwell.leiter@gmail.com>
2023-05-21 14:42:30 +02:00
Reto Brunner ede48ab034 Merge branch 'previewFix' 2023-05-20 10:10:50 +02:00
Reto Brunner 4c6fa550aa Merge branch 'nodeEOL' 2023-05-20 10:09:48 +02:00
Reto Brunner 9388960497 linkPreview: Pass channel prop
Else the update logic doesn't work and we don't show
the next / prev buttons
2023-05-15 09:38:09 +02:00
Reto Brunner 7bce779254 Remove unused code 2023-05-15 09:37:40 +02:00
Reto Brunner a7b85db990 v4.4.0 2023-05-13 13:21:12 +02:00
Reto Brunner f4ef11de3f v4.4.0-rc.1 2023-05-06 10:39:34 +02:00
Reto Brunner 3a63484762 Merge branch 'changelog' 2023-05-06 10:36:58 +02:00
Reto Brunner 04b2bf036b bump socket.io to 4.6.1 2023-05-04 23:39:07 +02:00
Max Leiter 3066f48a69
Merge pull request #4728 from thelounge/settingsFormProp 2023-05-01 11:43:07 -07:00
renovate[bot] ed40c83a2b
Update dependency @types/chai to v4.3.5 2023-05-01 02:39:13 +00:00
Reto Brunner f21f665384 Add changelog for 4.4.0
Co-Authored-by: Max Leiter <maxwell.leiter@gmail.com>
2023-04-29 13:52:18 +02:00
Reto Brunner 12d9ef34f0 Client/Settings: Remove bogus settings-form prop
As is this has no effect, other than looking weird in html:
<div settings-form="[object HTMLFormElement]"><div><h2>Native app</h2>
2023-04-29 11:52:34 +02:00
Reto Brunner 9ee1cf13a8 Publish to npm with provenance 2023-04-25 22:36:42 +02:00
Lenore ba1a4206a6 fix motd display to match settings 2023-04-25 00:49:57 +02:00
Reto Brunner 59cf29ef4a workflows: bump Windows + Mac node versions to 18 2023-04-23 21:48:39 +02:00
Reto Brunner 8e43d8083d node: remove v14, add v20 to build matrix
EOL date reached.
2023-04-23 21:46:53 +02:00
Pavel Djundik 3cd0a75ac2 Publish to npm with provenance
Ref: https://github.blog/changelog/2023-04-19-npm-provenance-public-beta/
2023-04-23 12:11:08 +03:00
Reto Brunner 21d1dbaad6 Unbreak nick colors for existing themes
https://github.com/thelounge/thelounge/pull/4649 broke existing
themes by removing the colored-nicks class from chat.

Considering that we don't bump the major version, keep backwards
compatibility for now
2023-04-17 01:11:35 +02:00
Reto Brunner 90ad06a29a Fix load of channels from user config
While the commits that caused the problem have been reverted,
this still adds test cases to it and make the loading more robust.
2023-04-08 13:46:13 +02:00
Val Lorentz 0c7cc85184 Fix load of channels from user config
Network.export() only writes the "type" key if it's a ChanType.QUERY;
so the config on disk has no "type".

This causes it to be undefined when loading, which breaks various other
checks, and then drops it the next time the config is saved.
2023-04-08 12:38:06 +02:00
Reto Brunner 3be805bd38 sqlite: Add rollback support
This enables db migrations to be undone, or "down migrated".
The down migration shouldn't be done automatically
as it could lead to severe data loss if that were done.
Hence, we still hard fail if we encounter a version lower than what
we have in the DB.

A CLI will be added in a later commit that allows users to explicitly
do that.
2023-03-31 11:34:26 +02:00
Reto Brunner e25c296901 push: remove iOS warning
iOS 16.4 introduced webpush, we can get rid of the special case
in our settings panel.
2023-03-28 10:00:56 +02:00
Max Leiter 4babd17383
Merge pull request #4715 from progval/test-server-teardown
tests/server: Tear down test fixtures in the order they were setup
2023-03-20 13:54:06 -07:00
Max Leiter b408843ff1
Merge pull request #4717 from thelounge/changelog
Inline logger into changelog script
2023-03-20 13:53:41 -07:00
Reto Brunner 0f3487c533 Inline logger into changelog script
We can't really import easily from our build without it being
brittle. TL isn't meant to be used as a library.

Instead, just inline the logger as it is trivial enough.
2023-03-19 23:49:42 +01:00
Reto Brunner 21ada132b1 v4.4.0-pre.2 2023-03-19 22:07:59 +01:00
Reto Brunner 2f162daee1 Revert "models/chan: don't force existence of constructor properties"
This reverts commit e31c95e32d.
2023-03-19 21:58:14 +01:00
Reto Brunner 3ac9c36d95 Revert "user: don't force existence of constructor properties"
This reverts commit c3e3322a79.
2023-03-19 21:58:14 +01:00
Reto Brunner c30da27f95 Revert "network: don't force existence of constructor properties"
This reverts commit 429efb0c3c.
2023-03-19 21:58:14 +01:00
Reto Brunner 30a3ba489a 4.4.0-pre.1 2023-03-19 13:43:01 +01:00
Reto Brunner 0dca3954f4 Add changelog entry for v4.4.0-pre.1 2023-03-19 13:35:26 +01:00
Reto Brunner e8b6434144 Clean up command input code 2023-03-19 12:57:08 +01:00
Val Lorentz edc6f77c64
add setup 2023-03-18 07:50:35 +01:00
Val Lorentz 0dd74a93bf tests/server: Tear down test fixtures in the order they were setup
if for whatever reason before() fails to import the server, it causes after()
to fail on the first line, so it doesn't restore stubs; causing other errors
to be printed in other tests ("TypeError: Attempted to wrap warn which is
already wrapped")
2023-03-17 17:12:29 +01:00
Reto Brunner 4e954b919c server/client: refactor command input
Keep happy path on the left and try to return as early
as we can to help the reader understand the logic better

The function is too large to be able to quickly scan an if / else
chain and see the function return at the end
2023-03-17 11:28:54 +01:00
Reto Brunner eb509f7100 Fix config typing and make Client easier to test 2023-03-17 11:03:50 +01:00
Reto Brunner 845dabad53 Fix sqlite query invocation in test
46da1abba4
changed the types of the db functions... fix our code to deal with it.
2023-03-17 10:57:21 +01:00
Reto Brunner 6b00ccf82b update dependency webpack to v5.76.0 2023-03-17 10:19:43 +01:00
renovate[bot] 34a01c2dd1
chore(deps): update dependency sqlite3 to v5.1.6 2023-03-15 19:08:51 +00:00
Val Lorentz 320075e376 Remove override of UserConfig 2023-03-15 11:49:13 +01:00
Val Lorentz d58fb84565 Fix test wording 2023-03-15 08:40:53 +01:00
Val Lorentz a049a01aeb Client: move socket connection out of the constructor
It will make it easier to write tests for what used to be in
the connect() method
2023-03-15 08:40:53 +01:00
Val Lorentz 76098d7e76 Fix incorrect typing of dehydrated networks and channels
Client and ClientManager deal with both 'dehydrated' channels/networks (ie. directly
from JSON configuration) and the 'rehydrated' ones (classes, with socket objects,
message arrays, etc.).

However, because their attributes are similar, both types were used interchangeably,
which becomes an issue when splitting Client's configuration loading into smaller
methods.
2023-03-15 08:40:53 +01:00
renovate[bot] a67cee1ee4
chore(deps): update dependency webpack to v5.76.0 [security] 2023-03-14 22:38:59 +00:00
Reto Brunner efd24fd12c packaging: Use an include list in package.json 2023-03-14 07:35:50 +01:00
renovate[bot] bc4c3082b8
chore(deps): update dependency sqlite3 to v5.1.5 [security] 2023-03-14 00:17:53 +00:00
Reto Brunner d471a4c959 packaging: Use an include list in package.json
Rather than playing whack a mole with an exclude list, let's use
an include list instead.
2023-03-12 17:44:21 +01:00
Reto Brunner 4831c20804 update dependency webpack-dev-middleware to v5.3.3 2023-03-12 12:33:10 +01:00
Reto Brunner eddcbcc766 update dependency vue-loader to v17.0.1 2023-03-12 12:32:48 +01:00
Reto Brunner 0183d89384 update dependency sinon to v13.0.2 2023-03-12 12:32:28 +01:00
Reto Brunner 95e56300db update dependency postcss to v8.4.21 2023-03-12 12:32:12 +01:00
renovate[bot] 8e249d46af
chore(deps): update dependency postcss to v8.4.21 2023-03-12 11:18:55 +00:00
renovate[bot] 50e8d2a890
chore(deps): update dependency @vue/test-utils to v2.3.1 2023-03-10 04:58:30 +00:00
Reto Brunner 7f6059d5b7 input/raw: use the irc-framework api
We are not allowed to mess with the connection object directly
according to the public api surface of the framework
2023-03-04 18:17:17 +01:00
Reto Brunner 8ca9ee873b use the irc connected helper function
We should not mess with irc-framework internals.
Technically we shouldn't even access the connection object,
it's not part of the documented API surface
2023-03-04 18:16:28 +01:00
Reto Brunner 402332340b pluginCommand: type it and guard against bad input 2023-03-04 17:00:53 +01:00
renovate[bot] 4742a07721
chore(deps): update dependency webpack-dev-middleware to v5.3.3 2023-03-01 00:16:25 +00:00
renovate[bot] 2f8dc01930
chore(deps): update dependency vue-loader to v17.0.1 2023-03-01 00:15:55 +00:00
Reto Brunner fade6a8d2e network: add getLobby accessor
This documents what we actually want and allows us to shift the
logic to the network
2023-02-27 18:30:33 +01:00
Reto Brunner dfed1dd757 skip migrations if the user has disabled logging 2023-02-27 14:33:34 +01:00
Reto Brunner d67277d996 clientManager: Expose user config 2023-02-27 14:33:34 +01:00
Reto Brunner 95aaba43fa cli: Implement storage migrate subcommand
This introduces the ability to run the migration offline, while
TL is not running as the migrations can take a long time.

The migrate command is added as a `thelounge storage` subcommand.
Reason being that it is expected that more subcommands will follow,
say `thelounge storage clean` to remove partial data from the db.
2023-02-27 14:33:34 +01:00
Reto Brunner 3e7255ff20 sqlite: Add primary keys to the messages table
We want primary keys to never get re-used to so that we
can implement jump to messages / context fetching etc
in the future.

This isn't hooked up yet at all to the rest of the code, only
the schema is changed
2023-02-27 14:20:31 +01:00
Reto Brunner 86e376fc03 sqlite: run migrations on startup 2023-02-27 14:20:31 +01:00
Reto Brunner 899762cddd sqlite: Add infrastructure for migration tests
This sets up the testing infrastructure to test migrations we are
doing.
It's done on a in memory database directly, we are only interested
in the statements themselves and it's easier than to try and
inject a prepared db into the store.

We do add some dummy data though to make sure we actually execute
the things as we expect.
2023-02-27 14:20:29 +01:00
Reto Brunner 063aca948c sqlite: don't hardcode version test 2023-02-27 14:17:04 +01:00
Reto Brunner 25642fbe98 sqlite: delete table creation test
This just repeats the hard coded values from the code, which
is not helping.
We need to touch that test whenever we modify the sql which is
undesired and it doesn't test any useful functionality.

Any error that may ensue would hopefully be tracked by the other
test.
2023-02-27 14:11:47 +01:00
Max Leiter c2e7390127
Merge pull request #4685 from thelounge/networkProps
network: don't force existence of constructor properties
2023-02-26 17:23:23 -08:00
Max Leiter d10a59395c
Merge pull request #4684 from thelounge/userProps
user: don't force existence of constructor properties
2023-02-26 17:22:31 -08:00
Max Leiter 8fc696620f
Merge pull request #4683 from thelounge/chanProps
models/chan: don't force existence of constructor properties
2023-02-26 17:22:06 -08:00
Max Leiter c6a202d6ab
Merge pull request #4686 from thelounge/decoupleServer
Decouple server
2023-02-26 17:20:20 -08:00
Max Leiter 7c9ed14909
Merge pull request #4695 from maxpoulin64/fix/oidentd-crash-race-condition
Don't crash on oidentd socket race condition
2023-02-25 13:44:37 -08:00
Reto Brunner bdc1f23107 fix formatting 2023-02-18 11:46:31 +01:00
Reto Brunner e9a09f5447 Add id to error log 2023-02-18 11:35:52 +01:00
Reto Brunner d93cd88dd5 Fix uploader mount/unmount lifecycle #4691 2023-02-18 11:16:30 +01:00
Pavel Djundik 2f04150461 Fix git commit not being available in dist build 2023-02-15 12:03:08 +02:00
Max Leiter c816e4053e
Merge pull request #4692 from thelounge/irc-framework
bump irc-framework to 4.13.1
2023-02-13 20:56:38 -08:00
Max Leiter 4cff2ccabe
Link to PR in log.warn 2023-02-13 20:51:27 -08:00
Max Leiter 26b7fbf2c0
Apply suggestions from code review
Co-authored-by: Mina Galić <me+github@igalic.co>
2023-02-13 20:50:16 -08:00
Maxime Poulin 243cb10e2a
Don't crash on oidentd socket race condition 2023-02-08 22:05:22 -05:00
dependabot[bot] 7304acd8e0
build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 21:21:55 +00:00
Reto Brunner 511209a100 bump irc-framework to 4.13.1 2023-02-06 22:20:40 +01:00
Maxime Poulin 2ce374fe85 Fix uploader mount/unmount lifecycle
Currently, in `ChatInput.vue` we call `upload.abort()` which removes the event listeners, which are never added back. This effectively permanently disable uploads if the user navigates away to Settings or any other non-chat pages, and back.

Moves the binding to `mounted()` so that they're properly rebound when a chat window is in view, and also adds an `unmounted()` for clarity.

This should also fix an edge case if the page opens up on a non-chat page and there was never a ChatInput to unbind it, such as login page or add network pages.
2023-02-05 22:32:12 -05:00
Max Leiter 00366967ae
Merge pull request #4690 from maxpoulin64/fix-morning-colors
Fix Morning theme nick colors
2023-02-05 14:01:49 -08:00
Maxime Poulin f2c59c23e2 Fix Morning theme nick colors
PR #4649 introduced a regression on the Morning theme as the `#chat.colored-nicks` CSS selector was removed from Default but not Morning. The result is that Morning no longer had nick colors.
2023-02-05 03:22:43 -05:00
renovate[bot] 90d17cacc1
chore(deps): update dependency sinon to v13.0.2 2023-02-01 02:17:22 +00:00
Reto Brunner 12c03a868d base tsconfig: remove files section
All files are specified in the individual sub projects
2023-01-30 09:14:40 +01:00
Reto Brunner b7540b5827 Move condensedTypes to shared/
This decouples the rest of the server from the client
2023-01-30 09:14:40 +01:00
Reto Brunner 6f13735a7f eslint: add shared/ 2023-01-30 09:14:40 +01:00
Reto Brunner 60bb561e49 Extract tests to shared/ 2023-01-30 09:14:40 +01:00
Reto Brunner e305e23c43 client: use the versions in shared/ where applicable 2023-01-30 09:14:40 +01:00
Reto Brunner 9d34955836 extract cleanIrcMessage from client to shared 2023-01-30 09:14:40 +01:00
Reto Brunner a8149c0f1a Extract linkify to shared directory
This is the first step to sever any dependency of the server on
the client
2023-01-30 09:14:40 +01:00
Reto Brunner 21d1eea6b8 tsconfig: Add shared reference 2023-01-30 09:14:40 +01:00
Reto Brunner e1ae79cb9c server/tsconfig: remove redundant options 2023-01-30 09:14:40 +01:00
Reto Brunner 429efb0c3c network: don't force existence of constructor properties 2023-01-30 08:52:30 +01:00
Reto Brunner c3e3322a79 user: don't force existence of constructor properties 2023-01-30 01:45:58 +01:00
Reto Brunner e31c95e32d models/chan: don't force existence of constructor properties 2023-01-30 00:29:09 +01:00
William Goodspeed f785acb07d
Fix misleading LDAP filiter in default config
The default filter provided in config files is invalid. This may mislead people. Confirm to issue #4620.
2023-01-27 20:02:57 +08:00
renovate[bot] bde5c3d443
fix(deps): update dependency ua-parser-js to v1.0.33 [security] 2023-01-24 17:40:19 +00:00
Reto Brunner 375164ca88 Merge branch 'storageCleanup' 2023-01-22 15:23:56 +01:00
Reto Brunner 7f3ac62e0d Merge branch 'searchFixTakeTwo' 2023-01-22 15:22:32 +01:00
dependabot[bot] ce3ad56ced build(deps): bump json5 from 2.2.1 to 2.2.3
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-22 15:13:25 +01:00
Reto Brunner efd3b64564 caniuse-lite: update db 2023-01-22 15:13:25 +01:00
renovate[bot] 6b23b87063 chore(deps): update dependency @vue/test-utils to v2.2.7 2023-01-22 15:13:25 +01:00
renovate[bot] 502fb7a705 chore(deps): update dependency @types/ws to v8.5.4 2023-01-22 15:13:24 +01:00
renovate[bot] c854d27d3d chore(deps): update dependency sqlite3 to v5.1.4 2023-01-22 15:13:24 +01:00
Max Leiter 2803018c5a
Merge pull request #4669 from thelounge/collapseAway
allow away and back to be collapsed
2023-01-20 15:30:53 -08:00
Reto Brunner 0ebc3a574c search: ignore searchResults if it isn't the active query
Prior to this, the search is still racy but one tends to notice
this only when the DB is large or network is involved.
The user can initiate a search, get bored, navigate to another chan
issue a different search.

Now however, the results of the first search come back in and
hilarity ensues as we are now confused with the state.

To avoid this, keep track of the last search done and any result
that comes in that isn't equal to the active query is garbage and
can be dropped.
2023-01-08 11:41:09 +01:00
Reto Brunner 958a948456 sqlite: Remove client from sqlitestorage
The only reason we accepted a client was that so we have access
to the next message id when we need it.
So let's accept an id provider function instead.
2022-12-30 16:52:04 +01:00
Reto Brunner 52b8a2a78e textStorage: rip out client instance
We don't need the client, so there's no need to accept it.
2022-12-30 16:42:48 +01:00
Reto Brunner 661d5cb5b0 messagestorage: remove implementation details from interface
The interface should not contain things that aren't the API of the
storage interface.
Further, rename ISqliteMessageStorage to SearchableMessageStorage,
as that's also an implementation detail.
We'll never have a second sqlite backend, so the name seems
strange.
2022-12-30 16:42:48 +01:00
Reto Brunner e597e75847 allow away and back to be collapsed
This means we also apply the collapsing to normal queries,
which might also collapse other things like joins / quits
which may be undesired by some

Fixes: https://github.com/thelounge/thelounge/issues/4583
2022-12-30 13:35:38 +01:00
aab12345 8b1a4f72fa Add password param to /join docs 2022-12-29 13:12:15 +01:00
Pavel Djundik 502780c5a3 Fix sidebar swipe flicker after letting go 2022-12-23 10:50:20 +02:00
Reto 073a38ef1e
Fix previous-source calculation (#4656)
CondensedMessage is a proxy object, outside of the templates
we need to unwrap it manually
2022-12-17 13:59:07 -08:00
Reto Brunner c67df36a29 update dependency @types/lodash to v4.14.191 2022-12-04 12:58:15 +01:00
Reto Brunner d50296385f Merge branch 'sqliteHotFix' 2022-12-04 12:54:45 +01:00
Reto Brunner 068de0c10c Merge branch 'nickColorScope' 2022-12-04 12:53:31 +01:00
renovate[bot] d61ab7e7a0
chore(deps): update dependency @types/lodash to v4.14.191 2022-12-01 21:36:32 +00:00
Reto Brunner 2d4143b779 sqlite: synchronize enable() internally
TL is stupid and doesn't wait for message{Provider,Storage} to
settle before it starts using the store.

While this should be fixed globally, we can hack around the problem
by pushing everything onto the call stack and hope that we'll eventually
finish the setup before we blow the stack.
2022-11-30 10:28:26 +01:00
Reto Brunner f55f772659 style: Put user colors into the smallest possible scope
The only thing that cares about user colors is the user component.
Putting a class value on the chat component seems to be the wrong
place.

This also allows us to remove various css selectors so that we
don't need to be that specific.
After all whatever has that class needs to be colored, we don't
care where it is.
2022-11-27 16:04:56 +01:00
Reto Brunner 982816ff20 store: addMessageSearchResults shouldn't accept null
It makes no sense to emit a add mutation with null, so let's
forbid it.
2022-11-27 14:06:14 +01:00
Reto Brunner 8204c3481a search: fix order of result merging
During a search, we get the results from oldest --> newest.
When we hit the more button, we get the results of the second batch
in the same order.
However, logically to the first batch everything is older, so we
need to prepend it to the result array, not
append.

msg  DB  logical ID
A    3     5
B    2     4
C    1     3

D    3     2
E    2     1
F    1     0
2022-11-27 14:06:14 +01:00
Reto Brunner deeea274da Merge branch 'sqlite_cleanup'
Converts sqlite to async, providing a way forward
for migrations to actually happen
2022-11-24 09:45:01 +01:00
Reto Brunner d34b58811a Merge branch 'search' 2022-11-24 09:34:24 +01:00
Reto Brunner dfb4217167 remove VueApp from router
Nothing actually depends on the vue app being monkey patched onto
the router, so let's get rid of it.
2022-11-22 21:27:19 +01:00
dependabot[bot] f8eb0ebafd
Bump engine.io from 6.2.0 to 6.2.1
Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/engine.io/compare/6.2.0...6.2.1)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-22 08:33:49 +00:00
Reto Brunner fd14b4a172 make getClientConfiguration type safe
TS type assertions need to be avoided.

The following trivial example demonstrates why

```
type Person = {
	name: string;
	isBad: boolean;
};

function makePerson(): Person {
	const p: Person = {name: 'whatever'} as Person
	p.isBad = false
	return p // theoretically we are now good, p is a Person
}
```

Should the type ever change though, TS will happily trot along

```
type Person = {
	name: string;
	isBad: boolean;
	omgHowCouldYou: number;
};

function makePerson(): Person {
	const p: Person = {name: 'whatever'} as Person
	p.isBad = true
	return p // p is *not* a Person, omgHowCouldYou is missing
}
```

But we pinky swore to the compiler that p is in fact a Person.
In other words, the types are now wrong and you will fail during
runtime.
2022-11-22 03:07:29 +01:00
Reto Brunner 1597c2c56e server: the http{,s} server can't be null 2022-11-22 02:21:27 +01:00
Reto Brunner 4c7337b625 bump socket.io-client to 4.5.0 2022-11-16 07:18:26 +01:00
Reto Brunner 0765d209f2 keybinds: Fix invalid return
Mousetrap doesn't take an async function.
It either accepts False (stop key propagation) or any other
value (bubble up the event)
2022-11-16 06:50:56 +01:00
Reto Brunner 7ee4b80a6e update dependency @types/mousetrap to v1.6.11 2022-11-16 06:32:22 +01:00
Reto Brunner 21c8b0d17f Bump loader-utils from 2.0.2 to 2.0.4 2022-11-16 06:31:19 +01:00
dependabot[bot] 89245455ce
Bump loader-utils from 2.0.2 to 2.0.4
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-16 05:29:50 +00:00
Reto Brunner d4bbd9191c bump socket.io to 4.5.2 2022-11-16 06:28:03 +01:00
renovate[bot] 5037383c4c
chore(deps): update dependency @types/mousetrap to v1.6.11 2022-11-16 00:46:37 +00:00
Reto Brunner 83e11b0143 Search: Clear earlier searches when a new one is executed
Fixes: https://github.com/thelounge/thelounge/issues/4637
2022-11-15 18:50:52 +01:00
Reto Brunner 51c9ce078d Search: fix off by one offset error
Offset is eventually passed to sqlite as an OFFSET clause.

This works as follows:

sqlite> select num from seq limit 5 offset 0;
┌─────┐
│ num │
├─────┤
│ 1   │
│ 2   │
│ 3   │
│ 4   │
│ 5   │
└─────┘

sqlite> select num from seq limit 5 offset 5;
┌─────┐
│ num │
├─────┤
│ 6   │
│ 7   │
│ 8   │
│ 9   │
│ 10  │
└─────┘

However, the code currently emits a request for offset + 1, which ends
up skipping a message

sqlite> select num from seq limit 5 offset 5+1;
┌─────┐
│ num │
├─────┤
│ 7   │
│ 8   │
│ 9   │
│ 10  │
│ 11  │
└─────┘
2022-11-15 18:50:52 +01:00
Reto Brunner 8095d9e88a SearchQuery: offset is always a number
Fix type confusion that specified offset to be a string, it is
always a number.
2022-11-15 18:50:52 +01:00
renovate[bot] 221884166d
chore(deps): update dependency postcss to v8.4.19 2022-11-13 17:56:51 +00:00
renovate[bot] 19307d05e7
chore(deps): update dependency @types/chai to v4.3.4 2022-11-13 17:49:23 +00:00
renovate[bot] dfe288ef16 chore(deps): update dependency @types/lodash to v4.14.188 2022-11-13 18:11:48 +01:00
renovate[bot] b5ea7cceb3 chore(deps): update dependency @types/is-utf8 to v0.2.1 2022-11-13 18:11:48 +01:00
renovate[bot] 0ad033fe0a chore(deps): update dependency chai to v4.3.7 2022-11-13 18:11:48 +01:00
renovate[bot] 5a4a39b9d1 chore(deps): update dependency postcss to v8.4.18 2022-11-13 18:11:48 +01:00
renovate[bot] cb17f8d87f chore(deps): update dependency @vue/test-utils to v2.2.1 2022-11-13 18:11:48 +01:00
renovate[bot] 5a803ccd23 chore(deps): update dependency sqlite3 to v5.1.2 2022-11-13 18:11:48 +01:00
Reto 53f6041f42
SearchResults: remove dead code (#4639)
Nachtalb put some infra in place that was never actually working.
It errors out when a user clicks on a message.

Remove the offending code, but keep it all in place so that we
can improve on it.
2022-11-12 22:34:41 -08:00
Reto Brunner dca202427a SearchResults: Fix search progess upon search
When we hit doSearch, we always reset the offset value to 0,
meaning we always hit the conditional (!0) and always set the
messageSearchInProgress flag to undefined.
This is wrong, we do want to set this flag when we initiate a search.
2022-11-12 23:14:53 +01:00
Reto Brunner 6b617f893d SearchResults: remove computed search prop
It is only used in one location, and not from the template.
In other words we should inline it to make the code simpler.
2022-11-12 23:14:53 +01:00
Reto Brunner d62dd3e62d messageStorage: convert to async
Message stores are more complicated that a sync "fire and forget"
API allows for.
For starters, non trivial stores (say sqlite) can fail during init
and we want to be able to catch that.
Second, we really need to be able to run migrations and such, which
may block (and fail) the activation of the store.

On the plus side, this pushes error handling to the caller rather
than the stores, which is a good thing as that allows us to eventually
push this to the client in the UI, rather than just logging it in the
server on stdout
2022-11-02 00:01:36 +01:00
Reto Brunner f068fd4290 sqlite: convert migrations to async
This removes quite a bunch of indention and callbacks
2022-11-01 22:23:47 +01:00
Reto Brunner bbe81bb2fa sqlite: add serialize_get 2022-11-01 22:23:47 +01:00
Reto Brunner f04a06682d extract migrations 2022-11-01 22:23:47 +01:00
Reto Brunner 5e1cbe32f9 sqlite: use serialize_fetchall in search 2022-11-01 22:23:47 +01:00
Reto Brunner ee8223c200 sqlite: use serialize_fetchall in getMessages 2022-11-01 22:23:47 +01:00
Reto Brunner cc3302e874 sqlite: create serialize_fetchall helper function
That puts all the serialization logic into one place and
allows us to use async / promises
2022-11-01 22:23:47 +01:00
Reto Brunner 89ee537364 sqlite: add run helper function
Extract the serialization logic into a single place and
consistently log errors to the console rather than a fire
and forget approach.
2022-11-01 22:23:30 +01:00
Reto Brunner e62b169a6a sqlite: fix docstring 2022-11-01 22:19:56 +01:00
Reto Brunner f6b292107e sqlite: move export to bottom of the file
This makes it easier to see what's getting exported, rather than
if it's interspersed randomly in the middle of the file
2022-11-01 22:19:56 +01:00
Reto Brunner bea4545abf don't call search on a disabled msg provider
A provider might be available, but not functional (broken migration
invalid configuration or what have you).
Don't try to call search in this case.
2022-11-01 22:19:56 +01:00
Reto Brunner cebc6d069f sqlite: error if sqlite isn't enabled but search() is called
When we assert that something can't possibly happen, we better
error out rather than jugging on with no error ;)
2022-11-01 22:19:56 +01:00
Reto 0fa203569a
connect: Trim white space from user input fields (#4623)
Fixes: https://github.com/thelounge/thelounge/issues/4521
2022-09-07 20:25:08 -07:00
Reto Brunner 30e9f45fac Use nick as a realname fallback
Currently the realname is set to an advertisement if it isn't explicitly
set by the user.
Some clients started to show the realname as a display name in their
UI, which makes this tedious as you'll end up with gazillion "The Lounge
User" entries.

To avoid this, set the realname to the nick on first connect, so that
it is useful.
Note that this isn't done on nick changes, but only on the initial
connect step.

Fixes: https://github.com/thelounge/thelounge/issues/4527
2022-08-28 11:21:54 +02:00
Antonio Mika 117c5fa3fd
Added client type checking to webpack (#4619)
* Added client type checking

* Fixed client-side typescript issues
2022-08-23 00:26:07 -07:00
Reto Brunner 621fa92036 linkPreviews: Enforce TLS validity
When a URL is prefixed with a TLS scheme, we should make sure
that the remote provides a valid cert, even just for prefetches.
Else MITM of such a site is trivial.

This probably breaks some people with self signed cert, but the
age where that was acceptable is past. We have free CAs now like
Let's Encrypt.
2022-08-06 12:37:51 +02:00
Reto Brunner 11f7ae98be Merge branch 'regexFix' 2022-08-01 13:31:59 +02:00
Reto Brunner a95ab55154 Merge branch 'installDocs' 2022-08-01 13:29:48 +02:00
Reto Brunner 38bccd3635 Merge branch 'installExpandHome' 2022-08-01 13:29:39 +02:00
Reto Brunner 3240997347 Revert "chore(deps): update dependency @textcomplete/core to v0.1.12"
This reverts commit 0cb4791cd0.
It breaks the autocompletion when clicking on a suggestion
from the nick popup.
2022-07-25 06:44:58 +02:00
renovate[bot] 57ed37c1fd
chore(deps): lock file maintenance 2022-07-24 13:33:42 +00:00
renovate[bot] 0495761c44
fix(deps): update dependency file-type to v16.5.4 [security] 2022-07-24 13:20:16 +00:00
renovate[bot] 520646a212 chore(deps): update dependency sqlite3 to v5.0.10 2022-07-24 15:02:54 +02:00
renovate[bot] 0cb4791cd0 chore(deps): update dependency @textcomplete/core to v0.1.12 2022-07-24 15:02:14 +02:00
renovate[bot] 740618ca49 chore(deps): update dependency @types/content-disposition to v0.5.5 2022-07-24 15:01:22 +02:00
renovate[bot] e97216518a chore(deps): update dependency @textcomplete/textarea to v0.1.12 2022-07-24 14:55:19 +02:00
Reto Brunner 31739b8ac9 install: Document file: prefix in cli help 2022-07-23 23:05:34 +02:00
Reto Brunner e221e708c1 install: expand ~ for local paths
Make `thelounge install file:~/path/to/package` work rather than
erroring out that the folder doesn't exists.

Probably funny on Windows, but it doesn't hurt either
2022-07-23 17:05:31 +02:00
Reto c8cd4057bc
Fix ctcp request message (#4603)
The message was ordered the wrong way in the TS rewrite.

Old:
    +bookworm sent a CTCP request: "chadler" to version
New:
    +bookworm sent a CTCP request: "version" to chadler
2022-07-06 22:28:18 -07:00
Reto Brunner d6e1af0e7d Fix regex escape for prefix patterns
Our regex escape function escapes proper regexes, however
it isn't meant to be shoved into a char class via string interpolation.

We need to also escape '-' if we do so.
2022-07-04 10:08:23 +02:00
Max Leiter d72d8694bb
Potentially fix saving new networks (#4599) 2022-06-28 13:32:08 -07:00
Max Leiter 80f65c5b72
Remove uploading event listeners on ChatInput unmount (#4600) 2022-06-28 13:31:55 -07:00
Pavel Djundik bc709af9fe
Merge pull request #4596 from thelounge/renovate/npm-got-vulnerability
fix(deps): update dependency got to v11.8.5 [security]
2022-06-22 18:48:15 +03:00
renovate[bot] e7d18a91c0
fix(deps): update dependency got to v11.8.5 [security] 2022-06-22 05:33:15 +00:00
renovate[bot] ddcee5371a
chore(deps): update dependency sqlite3 to v5.0.8 (#4564)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-06-21 22:32:58 -07:00
renovate[bot] 194b85be4d
chore(deps): update dependency mocha to v9.2.2 (#4581)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-06-21 22:32:18 -07:00
Pavel Djundik f715c833e7
Merge pull request #4594 from thelounge/xpaw/fix-4593
Fix user commands not working
2022-06-21 15:05:19 +03:00
Pavel Djundik a15ac88ff2 Fix user commands not working
Fixes #4593
2022-06-21 10:51:24 +03:00
Murph Finnicum 4af5fc6f33
Use correct option name (filter instead of ldapFilter) in config.js comment. (#4590)
The comment for the "filter" key under "searchDN" refers to it as "ldapFilter" instead of "filter".
2022-06-18 18:23:59 -07:00
Max Leiter dd05ee3a65
TypeScript and Vue 3 (#4559)
Co-authored-by: Eric Nemchik <eric@nemchik.com>
Co-authored-by: Pavel Djundik <xPaw@users.noreply.github.com>
2022-06-18 17:25:21 -07:00
Eric Nemchik 2e3d9a6265
Fix yarn dev (#4574)
* Fix yarn dev and yarn test
2022-05-21 11:45:42 -07:00
Eric Nemchik c205b89523
Convert configs to cjs, move babel to own file, combine webpack configs (#4561)
* Convert configs to cjs
* Fix lint script in package.json
* Move babel config to separate file
* Combine webpack configs and include babelConfig
2022-05-02 19:19:12 -07:00
John Sullivan 5f7acbf994
Merge pull request #4489 from thelounge/maxleiter/tabbedSettings
Refactor settings to their own tabs and routes
2022-05-01 15:03:03 -07:00
Reto d4cc2dd361
Refactor config out of Helper (#4558)
* Remove config from Helper

Helper is the usual util grab bag of useful stuff.
Somehow the config ended up there historically but
structurally that doesn't make any sense.

* Add cert folder to prettier ignore file
2022-05-01 12:12:39 -07:00
renovate[bot] 38f13525e6
chore(deps): update babel monorepo (#4554)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-05-01 02:40:09 -07:00
renovate[bot] 99c48dbcea
chore(deps): update dependency @textcomplete/core to v0.1.11 (#4555)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-05-01 02:39:58 -07:00
Pavel Djundik 9dbb6e5e19
Remove node 12, add node 18. Bump minimum node version 14 (#4552)
* Remove node 12, add node 18
* Bump minimum node version
2022-04-30 13:12:24 -07:00
Reto Brunner 791205d4f0 Merge branch 'zncPlayback' 2022-04-30 12:55:54 +02:00
Max Leiter 437dd1667d
Improve setings menu responsiveness 2022-04-29 19:30:35 -07:00
Max Leiter 24bdc46b0a
Settings: move nav to left side on larger screens 2022-04-29 19:27:52 -07:00
Max Leiter 5a383814f6
Settings: nav style tweaks 2022-04-29 19:27:51 -07:00
Max Leiter 1f39e078f4
Settings: change general icon from paintbrush to desktop 2022-04-29 19:27:51 -07:00
Max Leiter 6f64243671
Settings: rename user settings -> account 2022-04-29 19:27:51 -07:00
Max Leiter 31b67b7786
git push --set-upstream origin maxleiter/tabbedSettings 2022-04-29 19:27:50 -07:00
Reto Brunner abf8906757 Merge sqlite3 upgrade to v5.0.6 2022-04-28 21:38:01 +02:00
Reto Brunner c8115e22ac enable znc/playback even without message storage
Fixes: https://github.com/thelounge/thelounge/issues/4464
2022-04-28 17:02:36 +02:00
Reto Brunner aa7db1e7f7 Merge pull/4524: Add prefetchTimeout 2022-04-27 18:22:49 +02:00
Renovate Bot da02350725
chore(deps): update dependency sqlite3 to v5.0.6 2022-04-27 16:04:31 +00:00
Reto Brunner c9c8cadb1a Merge pull/4477 Preserve client certificate 2022-04-27 17:58:09 +02:00
Max Leiter 3726a8d00b
Merge pull request #4541 from thelounge/renovate/sqlite3-5.x
Update dependency sqlite3 to v5.0.4
2022-04-19 17:23:23 -07:00
Reto 605b75c6ed
Merge pull request #4537 from bookworm/renovateShutUp
renovate: Disable digest updates
2022-04-19 06:33:35 +02:00
Max Leiter 5e8adafb3e
Merge pull request #4539 from ronilaukkarinen/master
Fix the alignment of the header buttons
2022-04-18 15:15:48 -07:00
John Sullivan 487d880d32
Merge pull request #4540 from itsjohncs/sortable-upstream
Pull in SortableJS from NPM again.
2022-04-18 15:05:18 -07:00
Renovate Bot 7cb8d33122
Update dependency sqlite3 to v5.0.4 2022-04-18 13:05:43 +00:00
itsjohncs bbe103ca6f Pull in SortableJS from NPM again.
SortableJS/Sortable#2095 has been merged so we no longer need to use
our fork.
2022-04-17 17:34:07 -07:00
Roni Laukkarinen ec757c9b69 Fix topic wrapping on mobile 2022-04-17 19:07:56 +03:00
Roni Laukkarinen 7b725ea55c Fix the alignment of the header buttons 2022-04-17 13:39:52 +03:00
Reto Brunner 0d12be138b renovate: Disable digest updates
There's a reason one pins a commit and it is because we
want that specific commit.
Renovate gets *really* noisy if commits are made frequently
to a repo, so let's disable it.
2022-04-13 21:48:21 +02:00
Pavel Djundik 7db0d4619d
Update sqlite3 to 5.0.3 2022-04-13 19:07:31 +03:00
Max Leiter bdd6e71049
Autocomplete: update to @textcomplete package and close on blur (#4493)
* Autocomplete: update to @textcomplete package
* Autocomplete: close on blur
2022-04-11 18:11:43 -07:00
xnaas 57b1e51e9f
set 'video/quicktime' to 'video/mp4' (#4495)
`video/quicktime` only plays in Firefox and Safari.
`video/mp4` plays in Firefox, Safari, and Chromium-based browsers.
2022-04-11 17:50:00 -07:00
Val Lorentz 20ed3e6dc5
sqlite: Escape '%' and '_' in search queries. (#4487)
I picked '@' arbitrarily, it doesn't matter much.
I just don't like '\' because it needs to be escaped itself in the JS code,
which is annoying.
2022-04-11 17:49:13 -07:00
Reto e4840b4d75
Plugins: include pre-releases in compatibility lookup (#4506)
Semver doesn't treat pre-release versions as upgrades, meaning >4.3.0 isn't satisfied
by 4.3.1-rc.1.
For the purpose of TL plugins however, we are only interested in the semantic version and
expect that rc's adhere to the compatibility promise.
2022-04-11 17:47:51 -07:00
Reto d7bba325a7
Fix user file permissions on create (#4507)
User files contain secrets and should be protected.
Chances are that the user folder can be protected as well,
so let's do that if TL is creating the folder.
2022-04-11 17:47:22 -07:00
Reto 815319810c
cli: don't error if the user folder doesn't exist (#4508)
The user folder gets created on demand, thelounge list should not
fail if the folder doesn't exist.
This just means that no users are present, so report that instead.
2022-04-11 17:46:29 -07:00
Reto 37d7de7671
Kill TL when ident can't start up (#4512)
Fixes: https://github.com/thelounge/thelounge/issues/4509
2022-04-11 17:45:36 -07:00
Max Leiter e362704f6b
v4.3.1 2022-04-11 17:29:13 -07:00
Max Leiter 48f2b79c37
Add changelog entry for v4.3.1 2022-04-11 17:26:23 -07:00
Emily Strickland 3a84290314
Apply fixes suggested by Prettier to fix CI 2022-04-09 19:40:38 +00:00
Emily Strickland ff886846a8
Warn about unset prefetchTimeout, default to 5000 ms 2022-04-09 00:19:08 +00:00
Emily Strickland b2a363f099
Document default value for prefetchTimeout 2022-04-09 00:17:57 +00:00
Emily Strickland 3796485217
Configure link fetch to use prefetchTimeout
This change modifies the `fetch` function in `link.js` to use the new `prefetchTimeout` config setting introduced in the previous commit. This allows configuring the length of the timeout.

I've added a comment here to indicate milliseconds are the unit in use, since otherwise that would no longer be obvious from the code without looking at the default value (which could change).
2022-04-08 22:49:20 +00:00
Emily Strickland 3202b79990
Set prefetchTimeout setting default to 5000 ms
This change adds a `prefetchTimeout` setting to the default configuration and sets it to 5000 milliseconds. Its description indicates the advantages and disadvantages of changing its default value.
2022-04-08 15:42:31 -07:00
Renovate Bot a42325d801
Lock file maintenance 2022-04-06 19:03:11 +00:00
dependabot[bot] bbc7280c41
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-06 18:42:08 +00:00
Reto Brunner b76058e4cf Merge renovate/express-4.x 2022-04-06 20:39:12 +02:00
Reto Brunner ace09d434c Merge renovate/babel-monorepo 2022-04-06 20:37:14 +02:00
Renovate Bot 4d9442d9e3
Update babel monorepo 2022-04-06 17:19:54 +00:00
Renovate Bot 56bf078e29
Update dependency express to v4.17.3 2022-04-01 00:57:31 +00:00
Renovate Bot 9f7a2e942b
Update dependency node-forge to v1.3.0 [SECURITY] 2022-03-26 03:05:38 +00:00
Reto Brunner f440b67dbe Change sqlite3 module name to the actual name
It leads to confusion as the module is named "sqlite3", not
"node-sqlite3"
2022-03-12 16:39:03 +01:00
Val Lorentz ae7020f569 Do not remove client certificate, even when TLS is disabled
It does not really make sense to remove it, as it can lock someone out of
their account, just by temporarily disabling TLS.
2022-03-05 11:20:57 +01:00
Max Leiter 38fa3bee22
v4.3.1-rc.1 2022-03-02 16:38:22 -08:00
Max Leiter 2e1b2d44f6
Add changelog entry for v4.3.1-rc.1 2022-03-02 16:37:49 -08:00
renovate[bot] 69f3501165
Update actions/setup-node action to v3 (#4496)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-03-02 16:31:28 -08:00
renovate[bot] 8a92bc9fb9
Update dependency dayjs to v1.10.8 (#4499)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-03-02 16:27:50 -08:00
renovate[bot] 7cf95d3cbd
Update dependency @babel/core to v7.17.5 (#4498)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-03-01 16:29:56 -08:00
renovate[bot] 53f5b8e991
Lock file maintenance (#4491)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-02-21 12:39:54 -08:00
Val Lorentz d145fb3738
Re-add missing space between timestamp and nick (#4492)
It was accidentally removed by 027c5b4ff7
2022-02-21 12:38:50 -08:00
Max Leiter 551f85ea51
Fix /collapse and /expand from interacting with the server in public mode (#4488)
Reported by xnaas on IRC
2022-02-18 12:21:17 -08:00
Val Lorentz 66455f2c40
Show a nicer error in Chan.loadMessages() when network is misconfigured (#4476)
Show a nicer error in Chan.loadMessages() when network is misconfigured

ie. an actual error message instead of crashing on a `null` value.
2022-02-16 16:27:41 -08:00
Val Lorentz c12dd6c740
Network.validate: Deduplicate code + tell users what the invalid hostname is (#4475)
* De-duplicate error message creation in Network.validate()
* Tell users what the invalid hostname is.
* Reword the log error message
2022-02-16 16:27:14 -08:00
Reto Brunner cb28204517 Use the DNS result order returned by the OS 2022-02-15 09:20:52 +01:00
Reto Brunner e2e050d3c3 Add leading '<' + trim space when copying messages
Fixes: #4369
2022-02-15 09:15:34 +01:00
sfan5 17b174dddb Use the DNS result order returned by the OS
Effectively, this stops Node from always preferring IPv4.
2022-02-15 07:44:13 +01:00
Val Lorentz 027c5b4ff7 Remove leading space when copying multiple messages 2022-02-14 19:41:34 +01:00
renovate[bot] 1ed4f57afc
Lock file maintenance (#4479)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-02-13 16:41:18 -08:00
Val Lorentz 53b4d00732 Preserve client certificate when TLS is indirectly enabled by a STS policy
Closes GH-4152.
2022-02-13 14:43:04 +01:00
Val Lorentz ba210e853b test/models/network.js: Add tests for automatic client certificate creation/deletion 2022-02-13 14:42:38 +01:00
Val Lorentz bd2a6cc5be test/models/network.js: Add a simple test for STS policies 2022-02-13 14:42:01 +01:00
Val Lorentz bcd4a060ec test/models/network.js: Reorder tests 2022-02-13 13:24:38 +01:00
Val Lorentz ed3ec6a560 test/models/network.js: Fix test groupping 2022-02-13 13:24:06 +01:00
Val Lorentz 8edec1a5a8 Make sure the leading '<' is select when copypasting a message
Firefox does not seem to select leading (or trailing) characters that are
too small; so this commit sets a very small width, that is still large
enough to be selected.

This commit also adds `display: inline-block`, so the width is not
ignored; but this causes Chrome to ignore the space after `>`, so I made
it a non-breakable space.

An alternative is to make only the leading `only-copy` an
`inline-block`, but I think the non-breakable space is a good idea
regardless.
2022-02-12 13:59:31 +01:00
xnaas 9dfb2a3fdb
Upload m4a as audio/mp4; embed audio/mp4, x-flac, and x-m4a (#4470)
* 'audio/x-m4a' should be 'audio/mp4'
* add handling for x-flac and x-m4a
2022-02-11 17:42:59 -08:00
Max Leiter 4be9a282fa
Add the option to mute channels, queries, and networks (#4282)
Co-authored-by: Reto <reto@labrat.space>
2022-02-10 17:56:17 -08:00
renovate[bot] 337bfa489b
Update dependency cssnano to v5.0.17 (#4441)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-02-10 16:27:12 -08:00
Val Lorentz 1e3a7b1250 Emit a message for SASL loggedin/loggedout events
Closes GH-3921
2022-02-10 22:30:04 +01:00
renovate[bot] 3fb18717a7
Update dependency postcss to v8.4.6 (#4456) 2022-02-09 18:12:08 -08:00
renovate[bot] 76cbec9ac6
Update dependency @babel/core to v7.17.2 (#4439) 2022-02-09 18:11:05 -08:00
renovate[bot] 734f5b18d3
Lock file maintenance (#4465)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-02-09 15:40:08 -08:00
Reto d228a8c4f4
Bump most deps (#4453) 2022-02-09 15:27:34 -08:00
Val Lorentz f07d6b1ea4
README: suggest running 'yarn format:prettier' when linting fails (#4467)
* README: suggest running 'yarn format:prettier' when linting fails

Co-authored-by: Max Leiter <maxwell.leiter@gmail.com>
2022-02-08 17:52:07 -08:00
Max Leiter d0fab98c1d
Merge pull request #4462 from thelounge/bookworm/certErr
clientCert: fix up error message
2022-02-04 16:56:33 -08:00
Max Leiter d4d139505f
Merge pull request #4463 from thelounge/bookworm/canIuse
update caniuse-lite
2022-02-04 16:55:54 -08:00
Reto Brunner 9528515647 update caniuse-lite 2022-02-04 23:21:26 +01:00
Reto Brunner c0b81902f5 clientCert: fix up error message 2022-02-04 23:06:53 +01:00
Reto a86fa168b8
Merge pull request #4450 from itsjohncs/renovate-lock-file
Have Renovate bot refresh our lockfile for us.
2022-02-03 00:16:34 +01:00
itsjohncs 3e387156f7 Have Renovate bot refresh our lockfile for us.
I noticed that caniuse-lite wants to be updated regularly via
`npx browserslist@latest --update-db`. Renovate bot can do this if we
enable its `lockFileMaintenance` option
([source](https://github.com/renovatebot/renovate/issues/8615)).

I'm not sure exactly how annoying Renovate bot will be if we enable
this option but I figure we can just try it and disable it if it's
annoying.
2022-02-02 14:37:24 -08:00
itsjohncs 7e0afc90fd Replace deprecated Renovate config options.
This was an automatically requested migration that the
`renovate-config-validator` asked for. It's hard to tell because the
config options it asked to be removed are no longer in their docs, but
I believe this will not change the behavior of the renovate bot at all.
2022-02-02 14:36:02 -08:00
Max Leiter dcce9eba25
Merge pull request #4459 from fnutt/patch-2
Adding 'to' in a sentence in config.js
2022-02-01 14:39:34 -08:00
fnutt b1aa8528a4
Added 'to* in a sentence 2022-02-01 11:31:34 +01:00
Max Leiter 4489d5c8b8
Merge pull request #4449 from thelounge/bookworm/node_eol
Remove node 15.x from build matrix
2022-01-27 13:17:25 -08:00
Reto Brunner 1f8881a1d7 Remove node 15.x from build matrix
EOL was June 2021, this time has passed long ago.
2022-01-27 00:47:43 +01:00
Reto Brunner c7e504eeab sqlite3: update to latest commit
It doesn't look like upstream wants to release a new version.
However, it forces us to use python2 and a insecure tar version.
So staying on the release is not really an option.
Mitigate it by switching to the latest commit in the repo.
2022-01-24 23:59:56 +01:00
Reto Brunner 4db2d28216 Merge branch 'bookworm/mentions' 2022-01-03 09:28:29 +01:00
Taavi Väänänen be498e8f93
Count number of mode changes, not MODE messages
Update the code in MessageCondensed that generates the condensed
messages ("X users have joined, Y modes were set") to count the number
of actual mode changes instead of the raw count of MODE messages. One
mode message can contain multiple mode changes.

Signed-off-by: Taavi Väänänen <hi@taavi.wtf>
2021-12-31 23:32:17 +02:00
Reto Brunner e999171f29 Mentions window: filter list when we part a chan
Should some other client part a chan, then we need to clean
up the list from the mentions window in case it's open in ours.
2021-12-29 16:46:16 +01:00
Reto Brunner 0d209fce09 Clear obsolete mentions upon channel part
Currently, the mentions only track the chanID and MsgID.
However, when we part a channel the chanID becomes orphaned.

Considering that mentions from a parted channel probably aren't
that relevant, let's automatically clear them when we part.
Should the user really want to look at them again, they can re-join
the channel and get the scroll back that way.
2021-12-29 16:46:16 +01:00
Max Leiter acf520bd9a
Merge pull request #4435 from thelounge/bookworm/uploadErr
upload: improve error message
2021-12-28 02:40:29 -07:00
Reto Brunner 26c2562124 upload: improve error message 2021-12-27 02:11:56 +01:00
itsjohncs 763047889d Remove uses of window.event.
window.event is a deprecated global that's set to the currently
dispatched event.

- Opened and closed mentions box by clicking its icon in the top bar
- Left and right clicked on an inline channel name and saw context menu
  open both times
- Two-finger swiped on iOS and saw channel change
- Long-touched and dragged channel in network list on iOS and reordered
  the list successfully
2021-12-20 15:34:28 -08:00
Max Leiter e0bbf19d9d
Merge pull request #4430 from thelounge/maxleiter/configAdjustment
Remove extra 'be' in default config.js LDAP comment
2021-12-06 14:40:04 -08:00
Max Leiter 0fce974f2c
Remove extra 'be' in default config.js LDAP comment 2021-12-06 14:30:25 -08:00
John Sullivan cd7916b6d9
Merge pull request #4427 from thelounge/bookworm/mode
handle RPL_UMODEIS
2021-12-06 13:38:29 -08:00
Max Leiter 2c79d53c6d
Merge pull request #4428 from maxpoulin64/switch-busboy-implementation
Switch busboy implementation to `@fastify/busboy`
2021-12-06 12:38:58 -08:00
Reto Brunner 514c6fbf95 Rewrite conditional as switch
This is actually what the code tries to do, the conditional just
makes it harder to read
2021-12-06 07:24:21 +01:00
Reto Brunner 1953e03253 Add RPL_UMODEIS msg handler 2021-12-06 07:24:21 +01:00
Max Leiter 981de663fb
Merge pull request #4426 from brunnre8/worktrees
getGitCommit: allow git worktrees
2021-12-05 14:23:12 -08:00
Maxime Poulin 2c2dd1c76f Switch busboy implementation to @fastify/busboy
I've been notified the current implementation is abandonned and has been forked by fastify to fix bugs, including some crashes and hangs:
See:
* https://github.com/mscdex/busboy/issues/250
* https://github.com/mscdex/dicer/pull/22
* https://github.com/mscdex/dicer/pull/25
2021-12-04 19:49:21 -05:00
Max Leiter ecc0b9183e
Merge pull request #4423 from brunnre8/exit
Use non 0 exit code in abnormal shutdown
2021-12-04 14:57:48 -08:00
Max Leiter 4065d5de97
Merge pull request #4425 from brunnre8/deps
update irc-framework to 4.12.1
2021-12-03 12:02:11 -08:00
Reto Brunner 1c08b6dce6 getGitCommit: allow git worktrees
Change the short circuit logic to only test for a .git path.
With worktrees that's just a file, not a directory and we really
shouldn't play git anyhow and not rely on implementation details.
2021-12-03 18:16:30 +01:00
Reto Brunner 0c50c2d274 update irc-framework to 4.12.1
Remove ping timer on socket close
2021-12-03 18:00:56 +01:00
Reto Brunner 96c2d2419b Use non 0 exit code in abnormal shutdown 2021-12-02 07:55:06 +01:00
Max Leiter 304d207820
Merge pull request #4361 from supertassu/kickban 2021-12-01 18:25:09 -08:00
Max Leiter 35d8f4e212
Merge pull request #4373 from brunnre8/permissions 2021-12-01 14:18:10 -08:00
Reto 3c70fab7c6
Fix vue/this-in-template linter warning (#4418) 2021-11-30 12:01:45 -08:00
Reto Brunner 0ff9703a28 logs: Set umode to a more restrictive value
When TL first creates the log folder, let only the user read the
log files, should the admin override that subsequently we'll
simply warn about it but respect the decision.

Meaning we have private by default, but this can be overriden
2021-11-30 19:13:33 +01:00
Reto Brunner dc3a387120 vapid: keep the file secret
Contains a secret key, so we probably should keep it, well, secret.
Warn if the file is world readable.
2021-11-30 19:08:29 +01:00
renovate[bot] 212212fe70
Update dependency cssnano to v5 (#4408)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:42:46 -08:00
renovate[bot] 9b9b357001
Update dependency postcss-loader to v6 (#4415)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:42:22 -08:00
renovate[bot] 684d7f2db4
Update dependency mini-css-extract-plugin to v2 (#4412)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:42:07 -08:00
renovate[bot] 8040945913
Update dependency css-loader to v6 (#4407)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:19:32 -08:00
renovate[bot] 168f2ba46b
Update dependency mocha to v9 (#4413)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:18:38 -08:00
renovate[bot] d9f2fed398
Update dependency package-json to v7 (#4414)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:18:22 -08:00
renovate[bot] 84d779a4d0
Update dependency postcss-preset-env to v7 (#4416)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-30 02:17:57 -08:00
Taavi Väänänen 324fb9023e
Add /kickban
This commit adds a new command, /kickban, that is a combination of /kick
and /ban: it kicks the specific user from the channel and then sets the
+b mode to ban the user from the channel.
2021-11-30 12:07:11 +02:00
renovate[bot] cda3bb4e7c
Update dependency postcss to v8.4.4 (#4399)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 22:27:39 -08:00
renovate[bot] 117792fb4d
Update dependency webpack to v5.64.4 (#4398)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 22:27:26 -08:00
renovate[bot] c69588dd10
Update vue monorepo (#4403)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 22:16:21 -08:00
renovate[bot] 361af7f514
Update dependency postcss-loader to v5.3.0 (#4400)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 22:16:09 -08:00
renovate[bot] 5b76ec45ee
Update dependency webpack-cli to v4.9.1 (#4402)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 22:15:33 -08:00
renovate[bot] d596c0cee5
Update dependency babel-plugin-istanbul to v6.1.1 (#4396)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 19:54:10 -08:00
renovate[bot] 1bb5b74236
Update dependency mini-css-extract-plugin to v1.6.2 (#4393)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Max Leiter <maxwell.leiter@gmail.com>
2021-11-29 19:54:00 -08:00
renovate[bot] 62fd807f78
Update babel monorepo (#4395)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 19:31:56 -08:00
renovate[bot] 5d6746c9c4
Update dependency mocha to v8.4.0 (#4394)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 19:31:14 -08:00
renovate[bot] 60f4b3a434
Update dependency tlds to v1.226.0 (#4397)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:21:18 -08:00
renovate[bot] a05dd6c612
Update dependency irc-framework to v4.12.0 (#4392)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:20:44 -08:00
renovate[bot] 244daea66c
Update dependency filenamify to v4.3.0 (#4391)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:20:25 -08:00
renovate[bot] 5f78574ecd
Update dependency eslint-plugin-vue to v7.20.0 (#4383)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:07:09 -08:00
renovate[bot] e39e9d2f8a
Update dependency webpack-dev-middleware to v5 (#4390)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:06:55 -08:00
renovate[bot] 98e38c8947
Update dependency ua-parser-js to v1 (#4389)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 18:06:46 -08:00
renovate[bot] 40fb2190fa
Update dependency sinon to v12 (#4386)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 17:31:31 -08:00
renovate[bot] 1160517c2c
Update dependency css-loader to v5.2.7 (#4381)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 17:31:26 -08:00
renovate[bot] f719027566
Update dependency file-type to v16.5.3 (#4384)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 17:31:21 -08:00
renovate[bot] cffb838284
Update dependency eslint to v7.32.0 (#4382)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 16:17:27 -08:00
renovate[bot] b02001c079
Update dependency pretty-quick to v3.1.2 (#4379)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 16:17:03 -08:00
renovate[bot] 79e56d1c4b
Update dependency yarn to v1.22.17 (#4380)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 16:16:54 -08:00
renovate[bot] b54cdf7880
Update dependency mime-types to v2.1.34 (#4378)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 15:49:01 -08:00
renovate[bot] cb404cd986
Update dependency got to v11.8.3 (#4377)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-11-29 15:47:55 -08:00
sfan5 1d5291929c
Add context menu when clicking inline channel name (#4376) 2021-11-29 15:35:26 -08:00
Max Leiter 172cd63739
Remove downloads badge and add thelounge/thelounge-docker link to README (#4371) 2021-11-22 22:51:07 -08:00
Max Leiter 368f3f910b
Add changelog entry for v4.3.0
oops
2021-11-22 17:54:54 -08:00
sfan5 5f7ec9e8da
Don't download image contents during prefetch if not needed (#4363) 2021-11-22 16:59:33 -08:00
Max Leiter 4419029d2e
v4.3.0 2021-11-22 16:54:39 -08:00
Max Leiter af96f7771c
Revert "Preserve location on first and last line when scrolling through inputs" (#4367)
This reverts commit c5f6b4617f.
2021-11-20 18:43:51 -08:00
Max Leiter 315198ac0b
Switch to thelounge/Sortable fork for Sortable.js (#4368) 2021-11-20 18:28:44 -08:00
Max Leiter f4096234d4
v4.3.0-rc.2 2021-11-18 17:57:30 -08:00
Max Leiter bfdbbce77d
Add changelog entry for v4.3.0-rc.2 2021-11-18 17:57:21 -08:00
Reto 9dbf647f7e
Make esc key close mentions window (#4365)
* Mentions: rename method to what it's doing
* Mentions: make <esc> dismiss the window
2021-11-18 17:54:44 -08:00
Max Leiter 6dfd51bb57
Merge pull request #4364 from thelounge/maxleiter/escCloseSearch
Allow escape key to close search bar and search page
2021-11-18 16:47:21 -08:00
Max Leiter 371ebfb810
Close search results with escape 2021-11-18 13:32:21 -08:00
Max Leiter c439e51617
Clear search input on close 2021-11-18 13:31:01 -08:00
Max Leiter 58110189fe
Allow esc key to close search input 2021-11-18 13:27:52 -08:00
Max Leiter 54d1be6b29
v4.3.0-rc.1 2021-11-17 20:28:23 -08:00
Max Leiter 1199183157
Add changelog entry for v4.3.0-rc.1 2021-11-17 20:27:59 -08:00
Max Leiter 40a5ee70b6
Disable /search and hide help item if searching is disabled 2021-11-17 20:23:51 -08:00
Max Leiter 3cec329e3b
Merge branch 'master' into fix-search-query 2021-11-15 12:42:56 -08:00
Max Leiter 25d493453e
Merge pull request #4356 from thelounge/maxleiter/rmNode10
Bump required node version to 12.x and add 16.x builds
2021-11-04 17:11:31 -07:00
Max Leiter f3af454c9e
Add Node 16 LTS tests and bump mac/windows tests 2021-11-04 16:59:38 -07:00
Max Leiter 186f8f68cd
Merge pull request #4351 from brunnre8/glob
Allow wildcards in hostmask
2021-11-04 14:36:27 -07:00
Max Leiter 59280cfdfd
Merge pull request #4329 from brunnre8/plugins
Add more plugin functionality
2021-11-04 14:12:02 -07:00
Reto Brunner 67503efd21 Allow wildcards in hostmask
According to https://modern.ircdocs.horse/#wildcard-expressions
masks should support "*" and "?" wildcards.
Within TL this only impacts the /ignore functionality.

The reasoning for doing this is to ignore say GuestNNNN!*@* with
guest*!*@* and be done with it if someone spams a gateway.
2021-11-04 20:16:20 +01:00
Max Leiter 7ba977d56a
Bump required node version to 12.x
Node 10 was deprecated in April 2021.
2021-11-04 02:36:06 -07:00
Max Leiter 2a901b3475
v4.3.0-pre.6 2021-11-04 02:06:21 -07:00
Max Leiter 2777cc2db9
Add changelog entry for v4.3.0-pre.6 2021-11-04 02:06:09 -07:00
Max Leiter 979dfaf3eb
v4.3.0-pre.5 2021-11-03 15:52:46 -07:00
Max Leiter 9592563a27
Add changelog entry for v4.3.0-pre.5 2021-11-03 15:52:37 -07:00
Max Leiter 0381cd11bf
Merge pull request #4345 from itsjohncs/small-db-cleanups
Small cleanup of messageStorage/sqlite.
2021-11-03 15:45:48 -07:00
Max Leiter b5e99c0489
Merge pull request #4352 from itsjohncs/very-rounded-search
Prevent round and white search styling in iOS 15.
2021-11-03 15:45:33 -07:00
itsjohncs ea619f5463 Prevent round and white search styling in iOS 15. 2021-11-03 01:50:11 -07:00
Max Leiter 3cab39c59b
Merge pull request #4340 from itsjohncs/long-channel-names
Improve responsiveness of channel name and topic.
2021-11-02 13:18:39 -07:00
Max Leiter fd730eeeb1
Merge pull request #4344 from brunnre8/csp
Force CSP headers for all requests
2021-11-02 12:51:39 -07:00
Max Leiter a8d438261a
Merge pull request #4332 from itsjohncs/android-context-menu
Enable Android's context menus in network list.
2021-11-02 11:57:24 -07:00
Max Leiter 3bb8d2f4b8
Merge pull request #4348 from thelounge/renovate/linkify-it-3.x
Update dependency linkify-it to v3.0.3
2021-11-01 17:56:00 -07:00
Max Leiter 80e0e0fd16
Merge pull request #4349 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.33
2021-11-01 17:55:50 -07:00
Renovate Bot 3da5e8e8ca
Update dependency mime-types to v2.1.33 2021-11-01 00:21:57 +00:00
Renovate Bot 411ce5d2f8
Update dependency linkify-it to v3.0.3 2021-11-01 00:21:41 +00:00
itsjohncs 602de668ee Use patched Sortable JS from itsjohncs/Sortable.
This is a (hopefully) temporary solution while we wait for SortableJS
to merge in SortableJS/Sortable#2095 and make a release.
2021-10-30 02:06:35 -07:00
itsjohncs 393d4fe591 Enable Android's context menus in network list.
After #4326 Android users could no longer long-touch to bring up the
context menu for channels in the network list. Now they can again.
2021-10-30 02:06:35 -07:00
Max Leiter a3a9a2cdd9
Merge pull request #4342 from deejayy/password-reveal-icon
Move font assignment of password reveal icon
2021-10-28 09:53:36 -07:00
itsjohncs 044cd2403b Small cleanup of messageStorage/sqlite.
* Extend test coverage to the `search` function.
* Test sort order of messages from `getMessages` and `search`
* Move reversal of `search` results from Vue to messageStorage.
* Remove unnecessary uses of `sqlite.serialize` in tests.
* Return promises from test functions where possible.
2021-10-28 00:48:11 -07:00
Reto Brunner 544146d9aa Force CSP header for all requests
Currently styles / plugins were not actually under the CSP
header protection.
There's no real reason to not have them for all requests, so
add them as a root middleware.
2021-10-26 22:20:06 +02:00
Max Leiter 97f3800785
Merge pull request #4343 from hom3chuk/master
bump vulnerable ua-parser-js version
2021-10-26 12:50:46 -07:00
Evgeniy Chekan 8ab486ef0f bump vulnerable ua-parser-js version 2021-10-25 21:09:02 +03:00
deejayy cf18d04f06 Move font assignment of password reveal icon 2021-10-25 19:39:59 +02:00
Max Leiter 5d7e62ed67
Merge pull request #4341 from Nachtalb/na/fix-proxy-password
* Fix authenticated proxy
* Save the proxy password so you don't have to reenter it after restart
2021-10-24 14:06:53 -07:00
Nachtalb 206d554ce1
Save the proxy password so you don't have to reenter it after restart 2021-10-24 21:27:43 +02:00
Nachtalb 578b1947e2
Fix authenticated proxy 2021-10-23 01:11:54 +02:00
itsjohncs 56d4a6afde Improve responsiveness of channel name and topic.
This commit makes two changes:

1. Long channel names are truncated.
2. Topics cannot be shrinked into non-existence.
2021-10-22 13:57:13 -07:00
Reto 3ba7fb6de4
Prevent autocomplete for highlight settings (#4337)
Chrome seems to somewhat often auto fill the text input of the
highlight exception list with my username as the next field that
follows is of type password.
Try to work around that by telling chrome not to autofill either of
those.

Do note that this is only a hint... The broser vendors apply some
$magic heuristics and if they trigger they ignore the hint.
2021-10-20 18:34:31 -07:00
John Sullivan 21c6abdd1d
Clarify description of prefetchMaxSearchSize. (#4338)
This is a comments only change that fixes two problems:

1. The previous comment described it as limiting request size, but it
   instead limits the response size.
2. Previously it was unclear _why_ this size was significant. It wasn't
   obvious to me that the entire response would be stored in memory.
2021-10-18 23:20:11 -07:00
John Sullivan 80acbc7c06
Fix sporadic rounding on message search bar. (#4333)
This is fixed in the same way as #4328.
2021-10-17 22:11:08 -07:00
Reto Brunner 1e896a9672 plugins: prefix logger with the plugin name 2021-10-13 23:39:32 +02:00
John Sullivan 5d76ed888c
Clean up global listener in Sidebar component. (#4331)
Every time the component was mounted it would add another listener.
Since old listeners would often error this could cause a lot of log
spam, particularly when using the hotloader on a mobile device.
2021-10-13 13:19:34 -07:00
John Sullivan 2b634a6ba6
Use SortableJS 1.14.0. (#4330)
This should be reverted after SortableJS/Vue.Draggable#1085 is merged
and a new release of Vue.Draggable becomes available.
2021-10-13 13:18:03 -07:00
William Boman 2693db4274
client/Mentions: change button copy to "Dismiss all" (#4322)
* client/Mentions: change button copy to "Dismiss all"

* s/hide/dismiss/g
2021-10-12 15:56:39 -07:00
Max Leiter 1d33e0195a
Merge pull request #4324 from itsjohncs/gestures-next-channel
Two-finger swipe now switches windows (#3901)
2021-10-12 15:53:54 -07:00
Max Leiter fcffab1259
Merge pull request #4326 from itsjohncs/mobile-channel-list-sorting
Allow network list reordering via touch.
2021-10-12 15:53:18 -07:00
Reto Brunner 02ccbc1f69 plugins: expose persistant data dir
Plugins need to be able to store persistant files, say settings or
databases or similar things.
Expose a standard location that gets created when the path is
accessed.
2021-10-12 23:24:06 +02:00
Reto Brunner bb4ab4f168 plugins: add Logger interface
Plugins need to be able to log messasages, say for errors.
2021-10-12 23:24:06 +02:00
John Sullivan 8a57f90b65
Prevent sporadic rounding of search input on iOS. (#4328) 2021-10-11 10:23:20 -07:00
Noah van der Aa 9a0ba1da6c
Add keyboard shortcut for help screen (#4315)
* Add keyboard shortcut for help screen

* Make escape key go back to the previous screen

* Use key instead of which

* Use router for navigating back

* Use alt instead of cmd/ctrl
2021-10-10 20:48:28 -07:00
itsjohncs 5c614785bf Suppress iOS long touch behavior in network list.
When a user long touches on iOS, they will select the nearest
selectable text. This causes a distracting visual bug when reordering
the network list (which also uses a long press).
2021-10-10 17:08:17 -07:00
itsjohncs a48f449c59 Allow network list reordering via touch.
Users can now long touch and drag a channel or network to change its
ordering in the sidebar.
2021-10-10 14:40:08 -07:00
John Sullivan 2ab671664e
Vertically center topic editing input in Safari. (#4325) 2021-10-09 22:23:58 -07:00
itsjohncs 91a0815bb5 Add Gestures section to help window.
This documents the two gestures that The Lounge currently supports.

The section is only visible if your device supports touch.
2021-10-07 13:39:30 -07:00
itsjohncs ebe39b26dc Two-finger swipe now switches windows (#3901)
The Alt+Up and Alt+Down keybindings on Desktop did not have an
equivalent for Mobile users. Now a two-finger swipe left on a
touchscreen is equivalent to Alt+Up (similarly swipe right is
equivalent to Alt+Down).
2021-10-07 13:39:19 -07:00
renovate[bot] 7b28d3c0f8
Update dependency web-push to v3.4.5 (#4320)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-02 12:03:13 -07:00
renovate[bot] 324f3aa30f
Update dependency webpack-hot-middleware to v2.25.1 (#4321)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-02 12:02:46 -07:00
renovate[bot] e9f0313892
Update dependency ua-parser-js to v0.7.28 (#4319)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-30 17:25:05 -07:00
renovate[bot] 969d3e4ec1
Update dependency socket.io-client to v3.1.3 (#4318)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-30 17:24:54 -07:00
Taavi Väänänen 7873847a7e
Do not condense single messages (#4313) 2021-09-29 12:33:40 -07:00
Max Leiter cc0dc6266e
Update dependencies (#4312) 2021-09-15 10:12:19 -07:00
renovate[bot] 535ac7ca39
Update dependency stylelint to v13.13.1 (#4307)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-02 14:04:21 -07:00
renovate[bot] c8cdadeb02
Update dependency pretty-quick to v3.1.1 (#4304)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-02 14:03:16 -07:00
Max Leiter beb5530c65
Revert "Support animated webp images" (#4287)
This reverts pull/4186.
2021-08-31 12:27:43 -07:00
Reto 8fcd079204
Properly track user modes for context menu (#4267)
* properly track user modes for context menu

The RPL_ISUPPORT response contains a PREFIX element, which not only tracks the
prefix chars ("@", "+" etc) but also their corresponding mode chars (+O, +v)
This commit changes the context menu to not rely on a hardcoded list but rather
user the one given in the prefix response by the server.

Co-authored-by: Max Leiter <maxwell.leiter@gmail.com>
2021-07-21 00:30:07 -07:00
JeDaYoshi 0a6c33af57
Create a message for search disabled error 2021-07-07 23:00:44 +00:00
JeDaYoshi 162b42d9b0
Apply changes to getCommands/search 2021-07-07 22:12:28 +00:00
Max Leiter 03d38812e3
Merge pull request #4275 from hellomouse/isupport-modes
Optimise modes based on ISUPPORT
2021-07-06 17:09:31 -07:00
JeDaYoshi 35fcacb767
Add firstCommand and do further checks on mode tests 2021-07-06 18:15:37 +00:00
JeDaYoshi d96704835a
Send all modes in case of no ISUPPORT 2021-07-06 15:48:01 +00:00
JeDaYoshi 0d839c501e
Optimise commands processing 2021-07-06 15:43:02 +00:00
Max Leiter 24316fc304
Merge pull request #4281 from thelounge/updateDependencies
Update dependencies
2021-07-06 01:40:13 -07:00
Max Leiter 11ba27d809
Update emoji map 2021-07-06 01:31:24 -07:00
Max Leiter a59c5d65fb
Update dependencies 2021-07-06 01:29:53 -07:00
Max Leiter 7fdd363ee8
Merge pull request #4205 from Nachtalb/ne/fix-input-history-scroll-behaviour
Only scroll history when cursor is on first or last row
2021-07-06 01:27:06 -07:00
Max Leiter 75cf4445c4
Merge pull request #4277 from hellomouse/server-privmsg-fix
Fix nick-less messages from servers
2021-07-06 01:02:18 -07:00
Max Leiter 18b003db9c
Merge pull request #4280 from hellomouse/restrict-notifs-to-https
Add warning for HTTPS requirement on notifications
2021-07-06 00:58:50 -07:00
JeDaYoshi 372d74db69
Add warning for HTTPS requirement on notifications 2021-07-04 20:22:49 +00:00
JeDaYoshi bbda392c3d
Move clientCommands to client
This approach automatically imports the command names.
2021-07-04 02:15:33 +00:00
JeDaYoshi 23f6886cc1
Add test for ISUPPORT-less networks on /mode shorthands 2021-07-04 01:01:45 +00:00
JeDaYoshi 521426bb05
Add test for /search in getCommands 2021-07-04 00:46:36 +00:00
JeDaYoshi 69c37a535b
Only add /search when there's a message provider 2021-07-04 00:31:43 +00:00
Max Leiter 98e8640932
Merge pull request #4279 from hellomouse/fix-user-list
Fix userlist's wrong position on mobile devices
2021-07-03 17:04:09 -07:00
JeDaYoshi 998f8d2beb
Fix userlist's wrong position on mobile devices 2021-07-03 23:50:51 +00:00
JeDaYoshi 058b3155d0
Display error when /search is not enabled
Fixes thelounge/thelounge#4273
2021-07-03 22:53:45 +00:00
JeDaYoshi e0e12c1960
Fix tests for mode shorthand commands 2021-07-03 21:20:28 +00:00
JeDaYoshi 16177eb9f4
Move server nick code to handleMessage 2021-07-03 21:06:16 +00:00
Max Leiter 5e0a12b124
Merge pull request #4274 from hellomouse/add-umode
Add /umode support
2021-07-03 11:48:38 -07:00
JeDaYoshi 6439afd5c6
Fix nick-less PRIVMSGs from servers 2021-07-03 15:27:08 +00:00
JeDaYoshi 4dacaa46f3
Optimise modes based on ISUPPORT
This will see the maximum allowed of modes that are allowed at once as sent in RPL_ISUPPORT
and will send multiple batches while using /op, /voice, etc.

This also fixes a minor issue where it would try sending an empty voice if it had an extra space on arguments
(such as using '/voice  ')
2021-07-03 03:50:22 +00:00
JeDaYoshi 426841e6b7
Add /umode support 2021-07-03 02:28:21 +00:00
Max Leiter 22801a629e
v4.3.0-pre.4 2021-07-01 12:20:56 -07:00
Max Leiter 47b151ab51
Add changelog entry for v4.3.0-pre.4 2021-07-01 12:20:41 -07:00
Max Leiter d05cf5fe62
Fix linter warnings for aria-label placement 2021-07-01 12:14:02 -07:00
Max Leiter 3e4b22255d
Merge pull request #4201 from thelounge/maxleiter/accessiblityImprovements
Initial accessibility improvements
2021-07-01 12:05:22 -07:00
Max Leiter cc97d91ef8
v4.3.0-pre.3 2021-06-29 23:31:44 -07:00
Max Leiter c5e18e3cdd Add changelog entry for v4.3.0-pre.3 2021-06-29 23:27:16 -07:00
Max Leiter 79c57ebf38
Merge pull request #4211 from Mstrodl/feature/socks-support
Add support for SOCKS (closes #1375)
2021-06-29 22:54:17 -07:00
Max Leiter d106889127
Merge branch 'master' into feature/socks-support 2021-06-29 22:48:00 -07:00
Max Leiter b33fd78ed7
Merge pull request #4266 from thelounge/maxleiter/bump-ircfw
Bump irc-framework to 4.11
2021-06-28 23:33:13 -07:00
Max Leiter bec25f6243 Bump irc-framework to 4.11 2021-06-28 23:22:38 -07:00
Max Leiter 646a98270a
Merge pull request #4265 from thelounge/maxleiter/dependencies
Update dependencies
2021-06-28 21:55:11 -07:00
Max Leiter 5a7781eabc
Merge pull request #4258 from bl1nk/recent-mentions-keybind
Toggle recent mentions popup with alt+m
2021-06-28 21:54:46 -07:00
Max Leiter cbe81968ee Update dependencies
Supersedes #4247, #4263, #4248
2021-06-28 21:50:36 -07:00
Max Leiter a42a1fc6a2
Merge pull request #4264 from BradleyShaw/differentiate-wallops
Differentiate WALLOPS from NOTICE
2021-06-28 21:48:05 -07:00
Bradley Shaw a2d23810bf
Differentiate WALLOPS from NOTICE 2021-06-22 11:50:22 +01:00
Max Leiter aa310fe877
Merge pull request #4260 from BradleyShaw/snotice-channel
Display server-originated notices to channels in the channel window
2021-06-22 00:30:42 -07:00
Max Leiter a046bfe8d1
Merge pull request #4262 from thelounge/maxleiter/fixConfigOverrides
Fix not overriding config options with -c
2021-06-22 00:12:53 -07:00
Max Leiter 6b852d14c8
Fix not overriding config options with -c 2021-06-22 00:00:41 -07:00
Max Leiter 5a9f3c5f70
Aria label for userlist 2021-06-21 22:26:43 -07:00
Max Leiter f23cc0712c
Aria-label improvements for chatuserlist/networklist 2021-06-21 22:21:36 -07:00
Max Leiter 7107372a6f
Fix channel alt text in user list to mention type 2021-06-21 22:14:00 -07:00
Max Leiter 867fff33c0
Adjust chat layout so messages directly above input 2021-06-21 21:55:54 -07:00
Max Leiter e5a6554c9a
Merge branch 'master' of github.com:thelounge/thelounge into maxleiter/accessiblityImprovements 2021-06-21 21:48:30 -07:00
Bradley Shaw 38c0c343c3
Send server->channel notices to the relevant channel 2021-06-19 19:49:04 +01:00
Max Leiter 53b7c46e69
Merge pull request #4259 from thelounge/maxleiter/revertLoadMoreBtn
Revert "Fix load more button hidden behind search form"
2021-06-15 11:27:11 -07:00
Mary Strodl e7a8476cfe
NetworkForm: lint 2021-06-15 13:55:54 -04:00
Mary Strodl a3f0314f6b
NetworkForm: only show proxy options if enabled 2021-06-15 13:52:39 -04:00
Max Leiter 3fdc42350e Revert "Fix load more button hidden behind search form"
This reverts commit 115d970604.
2021-06-13 16:21:27 -07:00
Markus Cisler 243f514243 Only toggle mentions popup if connected to network
The top bar is only shown if the user is connected to at least one
network. Only then it is possible to open the recent mentions popup.

Only toggle the recent mentions popup if the user is connected to at
least one network so the popup will not open over the connect view.
2021-06-13 01:49:23 +02:00
Markus Cisler a93ccd680f Toggle recent mentions popup with alt-m
This adds a keybind to toggle the recent mentions popup using alt+m (or
opt+m on macOS).

Relates to #4175
2021-06-13 01:08:40 +02:00
Max Leiter 53a7227e2e
v4.3.0-pre.2 2021-06-07 20:46:35 -07:00
Max Leiter 8bb2fbbf15
Add changelog entry for v4.3.0-pre.2 2021-06-07 20:46:18 -07:00
Max Leiter 0fa37a6a05
Merge branch 'master' into maxleiter/accessiblityImprovements 2021-06-06 23:49:34 -07:00
Max Leiter d5b6a8521f
Merge pull request #4251 from brunnre8/localPlugins
install: allow installation of local packages
2021-06-05 10:30:18 -07:00
Reto Brunner c5fcc5d72f install: allow installation of local packages
It may not be desirable to host all plugins on npm, allow for local packages to
be installed given a package name with a `file:` prefix.

This is still more restrictive than what yarn would support but allows us to still
verify the thelounge compatibility by reading the package.json file.

`yarn add` messes up with local filepaths and generates a lockfile that is
"outdated" as far as any other yarn commands go, which makes them error out.

For some reason `yarn install` fixes that and hence we run that after an install.
Here's the diff of yarn.lock between the broken state after `yarn add file:$path`
and `yarn install`
	--- yarn.lock.2.afterAdd	2021-06-02 00:10:52.365134018 +0200
	+++ yarn.lock.3.afterinstall	2021-06-02 00:13:27.122760442 +0200
	@@ -2194,7 +2194,7 @@
	     safe-buffer "^5.1.2"
	     yallist "^3.0.3"

	-thelounge-plugin-shortcuts@/home/reto/sourcecode/thelounge-plugin-shortcuts:
	+"thelounge-plugin-shortcuts@file:../../sourcecode/thelounge-plugin-shortcuts":
	   version "1.0.12"
	   dependencies:
	     thelounge "4.2.0"

The only thing it does is switch an absolute path to a relative one for whatever
reason.
2021-06-05 13:01:55 +02:00
Max Leiter 9ec02d1e91
Merge pull request #4252 from thelounge/maxleiter/deps
Update dependencies
2021-06-05 01:06:32 -07:00
Max Leiter beb9bcd8d4
Update dependencies
Closes #4250, #4249, #4248, #4247
2021-06-05 00:57:38 -07:00
Max Leiter 8fc7a6c0df
Merge pull request #4242 from brunnre8/master
MessageSearchForm: do not focus input if search is closed
2021-06-05 00:33:42 -07:00
Max Leiter 6182d23758
Merge pull request #4235 from angerson/patch-1
Render styling for colored host masks
2021-06-02 00:18:40 -07:00
Reto Brunner c369a764ed MessageSearchForm: do not focus input if search is closed
Else whenever the element gets created (switch from server chan to a normal one)
the browser tries to focus the hidden element
2021-05-27 09:44:44 +02:00
Austin Anderson 4d310cd545 Render styling for colored host masks
On some IRC networks, users have vanity host masks with colors or other text styling.
Rizon is one such network.

For example, a user connecting from 127.0.0.1 could instead have the host
angerson@this.is.my.host.mask. this.is.my.host.mask may have IRC color code
characters in it, which without this change would be displayed as a bunch of jumbled
garbage in the /whois response or join/part messages.

Resolves #4232.
2021-05-26 09:24:12 -07:00
Pavel Djundik fa854fde78
Merge pull request #4238 from mhajder/master
Change the IRC server to Libera.Chat
2021-05-26 15:03:23 +03:00
Mateusz Hajder 6f7fd80044
Fix length of the link in tests 2021-05-26 13:59:04 +02:00
Mateusz Hajder 28c413319f
Change IRC server and channels in tests to more generic 2021-05-26 13:43:06 +02:00
Mateusz Hajder af236dd280
Add the default IRC network for tests 2021-05-26 13:41:33 +02:00
Max Leiter 58217cffb1
Merge pull request #4219 from TheDecryptor/jpegxl_support
Add support for JPEG XL image previews
2021-05-25 21:36:37 -07:00
Max Leiter fc6c916e7c
Merge pull request #4213 from Nachtalb/na/search-command
Add new "/search query" command to open the search window
2021-05-25 21:31:17 -07:00
Max Leiter ad8a315cf9
Merge pull request #4206 from Nachtalb/na/fill-inputhistory-onload
Fill inputhistory on channel load and more message load
2021-05-25 21:30:47 -07:00
Mateusz Hajder 42bafe7165
Change the IRC server to Libera.Chat 2021-05-23 16:40:08 +02:00
Mary Strodl df5befb60e
Merge remote-tracking branch 'origin/master' into feature/socks-support 2021-05-19 19:01:42 -04:00
Max Leiter db807d0c56
Merge pull request #4223 from thelounge/renovate/npm-postcss-vulnerability
Update dependency postcss to v8.2.10 [SECURITY]
2021-05-12 16:33:12 -07:00
Renovate Bot ab0d9e6200
Update dependency postcss to v8.2.10 [SECURITY] 2021-05-12 01:05:43 +00:00
Max Leiter adf1b5abec
Merge pull request #4210 from Nachtalb/na/inline-audio-file-support
Improve inline audio file support
2021-05-11 17:05:28 -07:00
Max Leiter 2c30293ad2
Merge pull request #4221 from Nachtalb/na/fix-missing-userslist-entries-after-search
Fix missing users in userlist after removing searchinput
2021-05-11 17:05:04 -07:00
Nachtalb 042cfb7582
Fix missing users in userlist after removing searchinput
Because the "Username" components still had the same ":key" vue tried to in-place update them. This doesn't quite work for objects (in this case "user" or "user.original"). Thus we change the key for the search so that it actually inits a new component and thus evaluates its content correctly.
2021-05-09 23:33:35 +02:00
Alex Jones dbf6ff064b Add support for JPEG XL mimetype 2021-05-08 18:10:45 +10:00
Max Leiter 7b1cb88658
Merge pull request #4216 from thelounge/renovate/npm-ua-parser-js-vulnerability
Update dependency ua-parser-js to v0.7.24 [SECURITY]
2021-05-06 19:19:26 -07:00
Max Leiter 7b298cf439
Merge pull request #4212 from Nachtalb/na/allow-text-drag-n-drop
Allow text drag & drop into text fields
2021-05-06 19:18:48 -07:00
Renovate Bot a985d763d0
Update dependency ua-parser-js to v0.7.24 [SECURITY] 2021-05-07 02:13:33 +00:00
Max Leiter d097370316
Merge pull request #4214 from sha1sum/#4161_classes-on-unread-and-ping
Classes for channels in list with unread counts and highlights
2021-05-06 19:09:53 -07:00
Anthony Atkinson a3229f1cdf classes for unread and highlight 2021-05-05 21:51:35 -04:00
Nachtalb cadcc4b97c
Autofocus search input in case no query is present 2021-05-06 03:24:20 +02:00
Nachtalb 24a738d521
Add new command to open the search window 2021-05-06 03:22:09 +02:00
Nachtalb b95643e1a6
Allow text drag & drop into text fields
We only have to stop the defualt behaviour in case we drag & drop a file (for uploading)
2021-05-06 02:48:07 +02:00
Mary Strodl 3f984fad4b
network: fix test 2021-05-05 20:37:54 -04:00
Mary Strodl 9b4f55bdb6
Update lockfiles 2021-05-05 20:26:01 -04:00
Mary Strodl abcad094d1
network: add support for SOCKS (closes #1375) 2021-05-05 20:06:00 -04:00
Nachtalb 0bfcd955e3
Improve inline audio file support
Tested on latest Chromium / Firefox. In case of .m4a files they want audio/x-m4a and not audio/m4a, in case of .flac files they want audio/flac and not audio/x-flac. The module we useed to detect the types however detects them only as audio/x-m4a and audio/x-flac as they are not offical IANA supported mime types (not in IANA spec == "x-" prefix): https://www.iana.org/assignments/media-types/media-types.xhtml Though flac is not in the IANA spec many programs such as the file command (https://man7.org/linux/man-pages/man1/file.1.html) and Chromium (flac) / Firefox (x-flac and flac) support audio/flac only or both.
2021-05-06 02:02:23 +02:00
Nachtalb 04cf2277d9
Prevent possible error when findChannel can't find the wanted channel
Using ?. (optional chaining) requires ecma version 2020 as it is fairly new. Webpack / Babel can handle it.
2021-05-05 18:09:18 +02:00
Max Leiter 26a38b12ab
Merge pull request #4197 from Nachtalb/richrd/message-search
Message Search: Re-Rebase + Fixes / Adjustments
2021-05-03 16:18:15 -07:00
Max Leiter bc7a920de5
Merge pull request #4207 from thelounge/renovate/babel-monorepo 2021-04-30 20:47:57 -07:00
Max Leiter 78da0eb674
Merge pull request #4208 from thelounge/renovate/chalk-4.x 2021-04-30 20:47:08 -07:00
Renovate Bot db8102b058
Update dependency chalk to v4.1.1 2021-05-01 00:40:11 +00:00
Renovate Bot 4b96682d7f
Update babel monorepo to v7.14.0 2021-05-01 00:39:55 +00:00
Nachtalb 11aa52687c
Fill inputhistory on channel load and more message load 2021-05-01 01:46:55 +02:00
Nachtalb bd4e821614
Improve readability of more.js 2021-05-01 01:36:44 +02:00
Nachtalb c5f6b4617f
Preserve location on first and last line when scrolling through inputs 2021-05-01 00:51:55 +02:00
Nachtalb c66f9c885e
Only scroll history when cursor is on first or last row
Needs to be on first to go up and on last to go down
2021-05-01 00:51:25 +02:00
Nachtalb bb41871873
Add close search button 2021-04-30 01:53:08 +02:00
Nachtalb 115d970604
Fix load more button hidden behind search form 2021-04-30 01:53:08 +02:00
Nachtalb ef710a2631
Revert obsolete changes to vuex store 2021-04-30 01:53:07 +02:00
Nachtalb ddff3ac162
Stay in chan during search by searching on /chat-:id/search 2021-04-30 01:53:07 +02:00
Max Leiter 0aabacd549
Initial accessibility improvements
Set aria-hidden to true for cosmetic and repetitive elements
Improve channel/network aria labels in network list
Experiment with different aria-roles for landmarks
2021-04-20 18:04:40 -07:00
Max Leiter 0fb6dae8a6
Merge pull request #4186 from Nachtalb/na/remove-metadata-without-breaking-files
Support animated webp images
2021-04-13 13:14:55 -07:00
Max Leiter ee43e7bdf4
Merge pull request #4192 from Nachtalb/na/restrict-browser-autocomplete
Restrict what the browser should try to autocomplete
2021-04-13 12:58:24 -07:00
Nachtalb e010fe47cc
Respect metadata removal switch 2021-04-13 20:45:16 +02:00
Nachtalb 89390b3fc5
Ensure proper error handling when processing of file fails 2021-04-13 20:41:30 +02:00
Nachtalb c2c66031c0
Auto rotate images based on exif orientation
This makes sure that the orientation of the images work in all viewrs.
2021-04-13 18:24:33 +02:00
Nachtalb 846da41b01
Rename uploadCanvas to a more appropriate removeImageMetadata
Including backwards compatibility
2021-04-13 18:24:33 +02:00
Nachtalb 3a6ac4e5ec
Support animated webp images
We need to remove the metadata without breaking the animation.
For that we use sharp which incooperates libvips (binaries for most common distros included).

This also decreases client side upload complexity as we remove the metadata on the serverside.

Sharp: https://sharp.pixelplumbing.com/
libvips: https://libvips.github.io/libvips/
2021-04-13 18:24:32 +02:00
Nachtalb 1b13905195
Improved search header
- Highlight both channel and search query
- By moving search query to topic we can ensure nice behaviour for long search queries (eg. when searching for an url)
2021-04-13 01:56:53 +02:00
Nachtalb 13d4f035df
More consistent color scheme and usage
Only show search by click on search icon (desktop as well)
Improved color scheme
Keep search open search page
2021-04-13 01:56:53 +02:00
Nachtalb 3fb9c8523a
Enable searching for the same query again
Previously we got an error instead, but in the meantime new messages could have come in. As such we should allow to search again
2021-04-13 01:23:44 +02:00
Nachtalb 544594a7ad
Keep search term in search input after commiting 2021-04-13 00:43:52 +02:00
Nachtalb e36ae64c83
Replace search term path with query
A search term is dynamic and not a pointer to a resource such as a channel as such it should be a query.

For now the network as well as the channels are still in the path even though we should take them out of there as well (in the case we want a global / network search later on). As for now we can keep in as there is no such filter / facet yet.
2021-04-13 00:01:00 +02:00
Nachtalb be141bea65
Fix 2 line wrapped message timestamp 2021-04-12 23:46:44 +02:00
Nachtalb 40aaa17c9b
Fix user context menus in in search results view 2021-04-12 23:40:29 +02:00
Nachtalb d6a23061fc
Remove searchNicks for the time being
We should not have search implementation without a specced filter /
facet setup.
2021-04-12 23:23:04 +02:00
Nachtalb de86c144b5
Disable search if we have no message provider
If we have no message provider:
- Search input field not renderd
- Search endpoint retuns empty resultset

Also removed redundancy by setting a main message provider.
2021-04-12 23:12:11 +02:00
Mary Strodl fe0178c0d2
Remove stuff from gitignore 2021-04-12 22:00:51 +02:00
Mary Strodl 49cd90d0e9
SearchResults: lint 2021-04-12 22:00:51 +02:00
Mary Strodl e6856a9e7d
client: lay some groundwork for jump to message 2021-04-12 22:00:51 +02:00
Mary Strodl 283ef445e5
Merge remote-tracking branch 'origin/master' into richrd/message-search 2021-04-12 22:00:49 +02:00
Nachtalb 08f45eabb2
Restrict what the browser should try to autocomplete
Browsers often autocomplete into wrong fields. Eg. wanting to put the password in a fields in the settings screen and then use a sudo random other fields for username etc.
This is rather annoying and can break someones configuration, thus we should only enable it on fields where it somewhat makes sense (name, server & password fields).
2021-04-12 14:10:33 +02:00
Max Leiter db9eb05dfa
Merge pull request #4187 from Nachtalb/na/filename-in-contentDisposition
Add proper filename to the content-disposition header
2021-04-11 20:29:23 -07:00
Max Leiter df4f78098c
Merge pull request #4190 from Nachtalb/na/improved-handling-of-empty-userdata
Improved handling of empty userdata
2021-04-11 20:12:35 -07:00
Nachtalb 0ccbb90d98
Improved handling of empty userdata
Does not show gecos and account data in join message if they are an empty string
2021-04-11 15:59:42 +02:00
Nachtalb 3a42b5385e
Support inline flac audio 2021-04-11 15:43:42 +02:00
Nachtalb 14d76f8023
Add proper filename to the content-disposition header
By default we take the slug given in the request, if this is not set we try to give a filename from known types.
If we still have no filename we fallback to the previous method of setting no filename.

If the filename is non ascii we will only create the encoded "filename*" and not the ascii only "filename". This is to prevent other applications to save a file like "?????.png" if the filename contains non ascii chars.

For the browsers nothing will really change comapred to the behaviour before this change as good fallbacks if no content-disposition filename is set. But that is not the case for all application, thus it makes sense to include the proper way to set the filename.
2021-04-11 15:41:21 +02:00
Max Leiter a5e9463431
Merge pull request #4196 from thelounge/maxleiter/readme
`client/views` -> `client/components` in README
2021-04-06 15:39:08 -07:00
Max Leiter f213a8973c
client/views -> client/components in README 2021-04-06 14:56:23 -07:00
Max Leiter 9382beb3b1
Merge pull request #4195 from brunnre8/nickPostfix
Settings: show label for nick autocompletion postfix
2021-04-06 14:46:34 -07:00
Reto Brunner c6d7bd4b4a Settings: show label for nick autocompletion postfix 2021-04-06 15:27:23 +02:00
Max Leiter 8dd9bc0e98
Merge pull request #4185 from thelounge/renovate/commander-7.x
Update dependency commander to v7.2.0
2021-04-05 16:25:56 -07:00
Renovate Bot 7df94f01a7
Update dependency commander to v7.2.0 2021-04-05 23:18:45 +00:00
Max Leiter d94d09f4ba
Merge pull request #4076 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.23.0
2021-04-05 16:17:34 -07:00
Max Leiter d248f98618
Merge pull request #4182 from thelounge/renovate/babel-monorepo
Update babel monorepo
2021-04-05 16:17:06 -07:00
Max Leiter 5cef511469
Merge pull request #4184 from thelounge/renovate/chai-4.x
Update dependency chai to v4.3.4
2021-04-05 16:16:37 -07:00
Max Leiter c6282b0a50
Merge pull request #4193 from brunnre8/labelFix
NetworkForm: s/away message/leave message/
2021-04-05 16:16:20 -07:00
Renovate Bot 1913a3ade6
Update babel monorepo 2021-04-05 20:40:02 +00:00
Renovate Bot 386f90614b
Update dependency eslint to v7.23.0 2021-04-05 20:39:11 +00:00
Renovate Bot d1995a0f7d
Update dependency chai to v4.3.4 2021-04-05 20:38:41 +00:00
Max Leiter aede86bc98
Merge pull request #4183 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.15.3
2021-04-05 13:37:40 -07:00
Reto Brunner a496ba8cfc NetworkForm: s/away message/leave message/
877e4acf7d - Add network specific leave message
introduced the wrong label for the leave message.
2021-04-05 19:19:36 +02:00
Renovate Bot d600a10f48
Update dependency @fortawesome/fontawesome-free to v5.15.3 2021-04-01 00:22:11 +00:00
Max Leiter 500034ff5d
Merge pull request #4181 from thelounge/maxleiter/fixQueryModes
Fix client crash when opening a user context menu in query
2021-03-30 22:49:55 -07:00
Max Leiter e4069f8ce9
Fix client crash when opening a user context menu in query 2021-03-30 22:33:48 -07:00
Max Leiter 4f6659897f
Merge pull request #4176 from mitaka8/feature-admin-actions
Show give/revoke modes and kick on other modes than +o
2021-03-30 22:10:54 -07:00
Max Leiter 5329483a40
Merge pull request #4135 from brunnre8/master
Add prefetchMaxSearchSize to override limit for link previews
2021-03-16 18:18:31 -07:00
Mitaka dc0e233fe0 Show give/revoke modes and kick on other modes than +o
Fix #3965

Signed-off-by: Mitaka <jin@mitaka.nl>
2021-03-12 14:33:51 +01:00
Max Leiter 6b074a6660
Merge pull request #4174 from thelounge/v4.3.0-pre.1_release
v4.3.0-pre.1 release
2021-03-03 00:36:55 -08:00
Max Leiter 57bce195de
v4.3.0-pre.1 2021-03-03 00:24:15 -08:00
Max Leiter 34086369db Add changelog entry for v4.3.0-pre.1 2021-03-02 21:53:10 -08:00
Max Leiter 8ce947130b
Merge pull request #4142 from thelounge/renovate/sqlite3-5.x
Update dependency sqlite3 to v5.0.2
2021-03-02 21:47:32 -08:00
Max Leiter 70fcf6f3ee
Merge pull request #4167 from thelounge/renovate/babel-monorepo
Update babel monorepo
2021-03-02 21:47:15 -08:00
Renovate Bot f0a3611d1e
Update dependency sqlite3 to v5.0.2 2021-03-03 05:37:04 +00:00
Renovate Bot df6226c7ca
Update babel monorepo 2021-03-03 05:36:36 +00:00
Max Leiter 8dfa7305b3
Merge pull request #4168 from thelounge/renovate/commander-7.x
Update dependency commander to v7.1.0
2021-03-02 21:35:02 -08:00
Max Leiter 850b49d802
Merge pull request #4169 from thelounge/renovate/css-loader-5.x
Update dependency css-loader to v5.1.1
2021-03-02 21:34:42 -08:00
Max Leiter 8a14b75a47
Merge pull request #4170 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.21.0
2021-03-02 21:34:33 -08:00
Max Leiter c94ace5843
Slightly adjust config option wording 2021-03-02 15:03:39 -08:00
Renovate Bot 19c7a513f1
Update dependency eslint to v7.21.0 2021-03-02 22:12:30 +00:00
Renovate Bot fbad88f9da
Update dependency css-loader to v5.1.1 2021-03-02 22:12:15 +00:00
Renovate Bot 2f29089bbf
Update dependency commander to v7.1.0 2021-03-02 22:12:01 +00:00
Max Leiter afe136fee8
Merge pull request #4171 from emilyst/patch-1
Configure server ping timeout to 60 seconds
2021-03-02 13:10:03 -08:00
Max Leiter 9474cd96d3
Merge pull request #4112 from thelounge/socketio
Upgrade to socket.io v3
2021-03-02 13:07:29 -08:00
Emily Strickland c782ca5b93
Configure server ping timeout to 60 seconds
The default socket.io server-side ping timeout was changed from 60 seconds to 5 seconds. In browsers based on Chrome, this is not enough time to respond when the browser is idle. The end result is that the server sets the user away and then back approximately once every minute if the client window is idle, which is undesirable.

This change restores the previous timeout value.

See https://github.com/socketio/socket.io/issues/3259#issuecomment-474523271.
2021-02-28 18:53:36 -08:00
Pavel Djundik e6fc726c91 Upgrade to socket.io v3 2021-02-28 15:30:44 -08:00
Reto Brunner 7c17662fea Add prefetchMaxSearchSize to override limit for link previews
YouTube puts the opengraph tags needed for the preview after ~300KB in the body
instead of the beginning of the <head> tag.
Instead of hardcoding the value, allow the server admin to set the policy as
they prefer.
2021-02-27 00:10:53 +01:00
Max Leiter f99e4eef77
Merge pull request #4116 from Nachtalb/na/network-specific-leave-message 2021-02-13 17:22:12 -08:00
Max Leiter c974ecb14a
Adjust placeholder away message 2021-02-12 14:07:48 -08:00
Max Leiter ab66c3f487
Merge pull request #4129 from thelounge/renovate/actions-setup-node-2.x
Update actions/setup-node action to v2
2021-02-09 16:51:20 -08:00
Renovate Bot 32ec420763
Update actions/setup-node action to v2 2021-02-10 00:12:09 +00:00
Max Leiter 7fef41131a
Merge pull request #4155 from thelounge/depUpdates
Update dependencies
2021-02-09 16:11:14 -08:00
Max Leiter de12699fa6 Update dependencies 2021-02-09 14:52:55 -08:00
Max Leiter d09f6f6144
Merge pull request #4138 from thelounge/renovate/copy-webpack-plugin-6.x
Update dependency copy-webpack-plugin to v6.4.1
2021-02-09 13:19:53 -08:00
Max Leiter 27195dd34a
Merge pull request #4139 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.10.4
2021-02-09 13:19:38 -08:00
Max Leiter b29850b2d0
Merge pull request #4140 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.19.0
2021-02-09 13:19:07 -08:00
Max Leiter 02c0290ee3
Merge pull request #4141 from thelounge/renovate/eslint-plugin-vue-7.x
Update dependency eslint-plugin-vue to v7.5.0
2021-02-09 13:18:38 -08:00
Renovate Bot 43a70df1b1
Update dependency eslint-plugin-vue to v7.5.0 2021-02-09 00:01:45 +00:00
Renovate Bot 247f20c8ef
Update dependency eslint to v7.19.0 2021-02-09 00:01:29 +00:00
Renovate Bot 6fc72624aa
Update dependency dayjs to v1.10.4 2021-02-09 00:01:13 +00:00
Renovate Bot 3d1834cc5e
Update dependency copy-webpack-plugin to v6.4.1 2021-02-09 00:00:58 +00:00
Pavel Djundik eb056c4997
Merge pull request #4151 from Willamin/patch-1
Add gopher and gemini to the commonSchemes
2021-02-04 11:43:39 +02:00
Will Lewis 9aadf1a739
Add gopher and gemini to the commonSchemes 2021-02-01 10:43:06 -05:00
Nachtalb 03377c6ced
Also use the networks specific leave message on quit 2020-12-18 10:53:40 +01:00
Nachtalb 877e4acf7d
Add network specific leave message 2020-12-18 10:53:37 +01:00
Pavel Djundik aa84e13656
Merge pull request #4110 from Nachtalb/na/fix-breaking-gifs
Fix breaking GIFs while removing metadata
2020-11-25 22:57:55 +02:00
Nick Espig 0e7a5f5c9b Fix breaking GIFs while removing metadata
Closes #4109
GIFs can't contain EXIF data and do not contain any other metadata that isn't operationl
2020-11-25 21:55:33 +01:00
Pavel Djundik 8fa8eed1e5 Upgrade dependencies 2020-11-25 17:45:22 +02:00
Pavel Djundik b2d5cdd4fc
Merge pull request #4104 from GewoonYorick/4097/add-ignore-to-contextmenu
Add ignore option to contextmenu
2020-11-19 16:27:48 +02:00
Pavel Djundik 4529118fd9
Merge pull request #4105 from GewoonYorick/3700/add-extended-join-info
Add extended join information to join message
2020-11-19 16:26:16 +02:00
Yorick Bosman 651a7ac2e9 Add extended join information to join message. 2020-11-19 00:25:28 +01:00
Yorick Bosman 51b0ec1e98 Add ignore option to contextmenu 2020-11-18 23:57:20 +01:00
Pavel Djundik ee16d98a94
Merge pull request #4094 from thelounge/renovate/vue-monorepo
Update vue monorepo
2020-11-04 15:34:55 +02:00
Pavel Djundik 2bbad443c0
Merge pull request #4093 from thelounge/xpaw/fix-4092
Do not generate and send client certificate unless SASL EXTERNAL is requested
2020-11-04 15:30:53 +02:00
Renovate Bot a4f4d23693
Update vue monorepo 2020-11-02 08:20:01 +00:00
Pavel Djundik a76e75f609 Do not generate and send client certificate unless SASL EXTERNAL is requested
Fixes #4092
2020-10-30 23:03:57 +02:00
Pavel Djundik 69986b3ee5 Add node 15 to test matrix 2020-10-30 23:03:45 +02:00
Pavel Djundik c2e8eaf9df Fix test for production build
Webpack 5 minifies it now
2020-10-30 23:02:40 +02:00
Pavel Djundik 41831d18b1
Upgrade to webpack 5 and all deps 2020-10-30 15:10:50 +02:00
Pavel Djundik 800fc95278 Update dependencies 2020-10-23 11:52:04 +03:00
Pavel Djundik 3e9262a345 Update dependencies 2020-10-15 12:22:49 +03:00
Pavel Djundik a9fb563c01 Update mini-css-extract-plugin 2020-10-11 11:06:52 +03:00
Pavel Djundik e7a8258ac0 Update packages 2020-10-11 10:56:13 +03:00
Pavel Djundik 0322c043e3
Merge pull request #4090 from supertassu/scripable-user-password-change
Make `add` and `reset` CLI commands scriptable
2020-10-07 10:03:37 +03:00
Taavi Väänänen e790a72e59 Make add and reset CLI commands scriptable
Add CLI options `--password` and `--save-logs` (for `add` only) in
order to make adding users and changing user passwords scriptable.

Closes #3913
2020-10-07 09:00:00 +03:00
Pavel Djundik 6ca3bae73e
Merge pull request #4087 from thelounge/update-deps
Update dependencies
2020-09-30 17:54:29 +03:00
Pavel Djundik c89b2bb0d6 Update postcss-loader
postcss is required by cssnano, so no need to list is explicitly
2020-09-30 17:50:24 +03:00
Pavel Djundik 1c004cbd17 Upgrade eslint-plugin-vue and fix rules 2020-09-30 17:44:07 +03:00
Pavel Djundik 02357ab9de Upgrade dependencies 2020-09-30 17:41:56 +03:00
Pavel Djundik d4bf0e365f
Merge pull request #4060 from thelounge/xpaw/fix-323
Always use multi-prefix modes
2020-09-29 13:48:21 +03:00
Pavel Djundik 61ebd65367 Add depTypeList 2020-09-18 11:51:12 +03:00
Pavel Djundik e622662c16 Update dependencies 2020-09-18 11:49:09 +03:00
Pavel Djundik 7ee0732f56 Change renovate to monthly 2020-09-18 11:49:01 +03:00
Pavel Djundik 75926432d0 Update dependencies 2020-09-02 10:38:16 +03:00
Pavel Djundik 3fde2aa7b9 Always use multi-prefix modes
Fixes #323
2020-09-01 11:45:08 +03:00
Pavel Djundik 27b3e50a64
Merge pull request #4055 from thelounge/xpaw/enterkeyhint
Add enterkeyhint on chat input and topic save
2020-08-31 13:14:24 +03:00
Pavel Djundik b9540636de Update dependencies 2020-08-29 11:51:01 +03:00
Pavel Djundik eef782fd2c
Merge pull request #4051 from MaxLeiter/accessibilityErrors
Add HTML lang and labelled-by field to upload
2020-08-29 11:47:46 +03:00
Pavel Djundik 5b602c72dc Add enterkeyhint 2020-08-29 11:46:11 +03:00
Max Leiter 570890f2f9 Set lang to unknown for #chat-container 2020-08-28 14:23:02 -07:00
Max Leiter ea5c95ac94 Add HTML lang and labelled-by field to upload 2020-08-27 18:57:12 -07:00
Pavel Djundik b74b692391 Update prettier and apply formatting 2020-08-25 12:49:53 +03:00
Pavel Djundik ac842108f3
Merge pull request #4047 from thelounge/xpaw/avif
Detect `image/avif` as an image
2020-08-24 11:54:14 +03:00
Pavel Djundik 12ceb10c75
Merge pull request #4046 from thelounge/renovate/tlds-1.x
Update dependency tlds to v1.209.0
2020-08-23 20:49:39 +03:00
Pavel Djundik 037f09a22f
Merge pull request #4043 from thelounge/renovate/babel-monorepo
Update dependency @babel/core to v7.11.4
2020-08-23 20:49:29 +03:00
Pavel Djundik f66ee9473a
Merge pull request #4045 from thelounge/renovate/pretty-quick-3.x
Update dependency pretty-quick to v3
2020-08-23 20:49:02 +03:00
Pavel Djundik 2194f91a55
Merge pull request #4042 from thelounge/vscode
Add .vscode settings and suggested extensions
2020-08-23 20:46:57 +03:00
Pavel Djundik df115333ba
Merge pull request #4041 from thelounge/mcinkay/2333/version-compatibility
Add version support for packages.
2020-08-23 20:46:44 +03:00
Pavel Djundik 4307d2da9d
Merge pull request #4040 from thelounge/xpaw/media-embed
Skip video/audio embeds if og:type exists but does not specify it
2020-08-23 20:46:36 +03:00
Pavel Djundik c89dcca449 Detect image/avif as an image 2020-08-23 12:51:52 +03:00
Renovate Bot 1df4dfad4a
Update dependency tlds to v1.209.0 2020-08-22 03:58:34 +00:00
Renovate Bot 8fb6f291f8
Update dependency pretty-quick to v3 2020-08-22 01:26:16 +00:00
Renovate Bot fedaada5a9
Update dependency @babel/core to v7.11.4 2020-08-22 00:13:04 +00:00
Pavel Djundik 381b6904e6 Add .vscode settings and suggested extensions 2020-08-21 19:27:41 +03:00
Al McKinlay 86e570efb2 Add version support for packages. 2020-08-21 15:03:12 +01:00
Pavel Djundik 1e38262d69 Add missing return 2020-08-21 10:18:41 +03:00
Pavel Djundik 9e13694b21 Skip video/audio embeds if og:type exists but does not specify it 2020-08-21 10:16:54 +03:00
Pavel Djundik 7bf4f68ff8 Upgrade packages 2020-08-20 19:43:53 +03:00
Pavel Djundik 19e7017d31 v4.2.0 2020-08-20 19:13:57 +03:00
Pavel Djundik b398a0696b Add v4.2.0 changelog 2020-08-20 19:13:48 +03:00
Pavel Djundik 14ed73ed9b
Merge pull request #3998 from Jay2k1/highlight-exceptions
Highlight exceptions
2020-08-19 21:30:36 +03:00
Jay2k1 b97b145df1 add highlight exceptions 2020-08-19 00:00:56 +02:00
Pavel Djundik c29ae50392
Merge pull request #4037 from thelounge/xpaw/rm-graphql-request
Remove `graphql-request` dependency from changelog script
2020-08-18 11:00:29 +03:00
Pavel Djundik 3557bf00fd
Merge pull request #4038 from thelounge/xpaw/sync-network-name
Sync changed network name to open clients
2020-08-18 11:00:21 +03:00
Pavel Djundik 67e4a4bbb2 Sync changed network name to open clients 2020-08-17 12:57:37 +03:00
Pavel Djundik f63f1abb7c Remove graphql-request dependency from changelog script 2020-08-17 12:46:28 +03:00
Pavel Djundik 1ef7d5ed49 Update dependencies and yarn.lock 2020-08-17 12:21:23 +03:00
Pavel Djundik 928436a9ce
Merge pull request #4032 from thelounge/xpaw/help-unread
Increase unread counter for HELP and INFO messages
2020-08-15 11:34:42 +03:00
Pavel Djundik 5861ffadf2 Increase unread counter for HELP and INFO messages 2020-08-14 14:26:03 +03:00
Pavel Djundik 2d88ae7503
Merge pull request #4029 from thelounge/xpaw/emoji-dahes
Replace dashes to underscores in emoji autocompletion
2020-08-14 10:39:45 +03:00
Pavel Djundik 82c83c5f18
Merge pull request #4028 from thelounge/xpaw/nosync
Disable settings sync for browser notifications and notification sound
2020-08-14 10:39:29 +03:00
Pavel Djundik 19d6b7d98f Replace dashes to underscores in emoji autocompletion 2020-08-13 10:47:50 +03:00
Pavel Djundik d588ecea58 Disable settings sync for browser notifications and notification sound
Closes #3144
2020-08-12 18:36:07 +03:00
Pavel Djundik b6782da837
Merge pull request #4020 from thelounge/xpaw/obj
Use lodash where possible
2020-08-10 15:57:12 +03:00
Pavel Djundik 8bf55527ed Use lodash where possible 2020-08-07 19:52:50 +03:00
Pavel Djundik 2a11c07ba9
Merge pull request #4014 from thelounge/xpaw/no-schema-previews
Disable link prefetching for urls with no schema specified
2020-08-05 12:18:10 +03:00
Pavel Djundik 5720c98869
Merge pull request #4015 from thelounge/renovate/tlds-1.x
Update dependency tlds to v1.208.0
2020-08-04 23:05:03 +03:00
Renovate Bot 7fce28ad90
Update dependency tlds to v1.208.0 2020-08-04 19:32:47 +00:00
Pavel Djundik 8c6460b58a Disable link prefetching for urls with no schema specified 2020-08-04 20:21:12 +03:00
Pavel Djundik 70937d29e0 Update dependencies 2020-08-03 11:36:45 +03:00
Pavel Djundik f1fc7a8968
Merge pull request #4005 from thelounge/xpaw/fix-mode-users
Fix mode message only making last nick clickable
2020-07-29 16:54:58 +03:00
Pavel Djundik 40954c9a3a Fix mode message only making last nick clickable 2020-07-29 10:29:51 +03:00
Pavel Djundik 7d6f98d974
Merge pull request #4004 from thelounge/renovate/uuid-8.x
Update dependency uuid to v8.3.0
2020-07-28 18:01:16 +03:00
Renovate Bot d658b7dfd5
Update dependency uuid to v8.3.0 2020-07-28 11:03:02 +00:00
Pavel Djundik 87299bb893 v4.2.0-pre.2 2020-07-28 14:01:51 +03:00
Pavel Djundik 0dba477eb3
Add changelog entry for v4.2.0-pre.2 2020-07-28 14:01:27 +03:00
Richard Lewis 9a5d80cecc
Merge pull request #4003 from thelounge/xpaw/mentions-wrap
Add break-word on mentions popup content
2020-07-27 18:47:17 +03:00
Pavel Djundik 89165d798b Add break-word on mentions popup content 2020-07-27 17:27:06 +03:00
Pavel Djundik ec65fd17af
Merge pull request #3983 from SRCF/audio
Add option to disable media preview.
2020-07-27 11:04:06 +03:00
Pavel Djundik 5a1963647e
Merge pull request #3962 from thelounge/xpaw/help-info-blocks
Implement generic monospace blocks for INFO and HELP numerics
2020-07-27 11:02:14 +03:00
Pavel Djundik d6cace3959
Merge pull request #3999 from thelounge/xpaw/fix-chrome-perf
Fix layout trashing in Chrome causing typing lag
2020-07-27 11:02:01 +03:00
Pavel Djundik 9502b6adf0
Merge pull request #3987 from thelounge/xpaw/notif-state
Refresh notification permission state when push is enabled
2020-07-27 11:01:53 +03:00
Pavel Djundik a8a2bd7755
Merge pull request #3986 from thelounge/xpaw/upload-keepalive
Fix upload tokens expiring while uploading when TL is proxied
2020-07-27 11:01:44 +03:00
Pavel Djundik a0cfa4900e
Merge pull request #3995 from thelounge/xpaw/router-cleanup
Cleanup vue router route guards
2020-07-27 11:01:37 +03:00
Pavel Djundik 3e26611e9f Fix layout trashing in Chrome
https://bugs.chromium.org/p/chromium/issues/detail?id=1063575#c21
2020-07-27 10:27:52 +03:00
Pavel Djundik aaaf498ada
Merge pull request #4002 from thelounge/renovate/css-loader-4.x
Update dependency css-loader to v4
2020-07-27 10:27:31 +03:00
Renovate Bot bf12d7f4c3
Update dependency css-loader to v4 2020-07-27 07:22:07 +00:00
Pavel Djundik 07e4663e02
Merge pull request #4001 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.44.0
2020-07-27 10:20:53 +03:00
Pavel Djundik 1de351794d
Merge pull request #4000 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.30
2020-07-27 10:20:44 +03:00
Renovate Bot a7f4008ec8
Update dependency webpack to v4.44.0 2020-07-25 00:38:52 +00:00
Renovate Bot 9e77dc3cca
Update dependency dayjs to v1.8.30 2020-07-25 00:38:31 +00:00
Pavel Djundik 1ec728c2b0
Merge pull request #3992 from thelounge/renovate/commander-6.x
Update dependency commander to v6
2020-07-22 10:59:41 +03:00
Pavel Djundik ccea8a35f2
Merge pull request #3996 from thelounge/renovate/ldapjs-2.x
Update dependency ldapjs to v2.1.0
2020-07-22 10:59:31 +03:00
Renovate Bot d63a85a15c
Update dependency ldapjs to v2.1.0 2020-07-21 22:02:09 +00:00
Dexter Chua 2f434be75d Add option to disable media preview.
This disables image previews iff prefetchStorage is disabled. This
stops the client from making any requests to third-party sites.
2020-07-21 08:52:02 +08:00
Pavel Djundik a2c1d1175b Disallow navigating to invalid networks 2020-07-20 11:50:01 +03:00
Pavel Djundik 181a198994 Cleanup vue router route guards 2020-07-20 11:50:01 +03:00
Pavel Djundik 63a420ac21 Implement generic monospace blocks for INFO and MOTD numerics
Fixes #3961
2020-07-20 10:07:49 +03:00
Renovate Bot 3e5933bfd3
Update dependency commander to v6 2020-07-19 19:01:39 +00:00
Pavel Djundik 0ac1fcb471
Merge pull request #3993 from thelounge/xpaw/mentions-fix
Improvements to mentions window
2020-07-19 21:45:46 +03:00
Pavel Djundik 531ea920e0 Improvements to mentions window
- Add hide all button
- Only show overflow scroll when necessary
- Fix key in v-for loop
- Increase window height if browser size allows for it
2020-07-19 17:29:52 +03:00
Pavel Djundik cf4a776a93
Merge pull request #3989 from thelounge/renovate/babel-monorepo
Update dependency @babel/core to v7.10.5
2020-07-19 00:18:14 +03:00
Pavel Djundik 4f7dd37303
Merge pull request #3988 from thelounge/renovate/got-11.x
Update dependency got to v11.5.1
2020-07-19 00:18:05 +03:00
Pavel Djundik c0258b847e
Merge pull request #3991 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.5.0
2020-07-19 00:17:57 +03:00
Pavel Djundik af65f11b68
Merge pull request #3990 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.14.0
2020-07-19 00:17:49 +03:00
Renovate Bot 79beff1d8a
Update dependency eslint to v7.5.0 2020-07-18 19:23:18 +00:00
Renovate Bot 0b7c76ef49
Update dependency @fortawesome/fontawesome-free to v5.14.0 2020-07-18 00:14:30 +00:00
Renovate Bot 970208b470
Update dependency @babel/core to v7.10.5 2020-07-18 00:14:11 +00:00
Renovate Bot 21c496d534
Update dependency got to v11.5.1 2020-07-16 12:14:55 +00:00
Pavel Djundik b7c5f2031c Refresh notification permission state when push is enabled 2020-07-15 16:08:36 +03:00
Pavel Djundik b1115475bf Fix upload tokens expiring while uploading
Fixes #3982
2020-07-15 12:29:02 +03:00
Pavel Djundik f979c72ca7
Merge pull request #3984 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.9.0
2020-07-13 11:21:55 +03:00
Pavel Djundik 5e6b5f7400 Add certfp to whois 2020-07-13 10:25:54 +03:00
Pavel Djundik 4becb152bb Changes for irc-framework update 2020-07-13 10:25:54 +03:00
Renovate Bot 761d482572
Update dependency irc-framework to v4.9.0 2020-07-12 22:48:47 +00:00
Richard Lewis 189f7d84ba
Merge pull request #3981 from thelounge/xpaw/mixed-content
Change wording of prefetchStorage option
2020-07-10 14:08:05 +03:00
Pavel Djundik 020323ca45
Change wording of prefetchStorage option 2020-07-10 13:52:39 +03:00
Pavel Djundik d0d3a205b9
Merge pull request #3977 from thelounge/xpaw/allow-private-lock-name
Allow changing network name in private mode with lockNetwork
2020-07-09 11:17:31 +03:00
Pavel Djundik d01d39deda Update yarn.lock 2020-07-09 10:50:52 +03:00
Renovate Bot 70f45ab7f4
Update dependency lodash to v4.17.19 2020-07-08 17:17:20 +00:00
Pavel Djundik d7c641ffc7 Add password field for private+locknetwork 2020-07-08 15:42:34 +03:00
Pavel Djundik c21ccad823 Allow changing network name in private mode with lockNetwork 2020-07-08 15:42:34 +03:00
Pavel Djundik 5fcfcf4f23
Merge pull request #3976 from thelounge/node-v14
Test node v14
2020-07-08 15:41:25 +03:00
Pavel Djundik 5f3133a609 Update vuedraggable and yarn.lock 2020-07-08 15:29:17 +03:00
Renovate Bot 6a0708b676
Update dependency lodash to v4.17.17 2020-07-08 12:14:35 +00:00
Richard Lewis fae9d75d6d
Merge pull request #3978 from thelounge/xpaw/fix-date-marker
Fix date marker not displaying sometimes
2020-07-08 14:59:42 +03:00
Pavel Djundik 67d9317f20 Fix date marker not displaying sometimes 2020-07-08 14:43:43 +03:00
Pavel Djundik c5f9ef3e3d Test node v14 2020-07-08 14:19:22 +03:00
Pavel Djundik 9d7888814c Update yarn.lock 2020-07-08 14:17:22 +03:00
Pavel Djundik bba2f21f5e Merge remote-tracking branches 'origin/renovate/got-11.x', 'origin/renovate/lodash-monorepo' and 'origin/renovate/sqlite3-5.x' 2020-07-08 14:14:18 +03:00
Renovate Bot f8448c2521
Update dependency lodash to v4.17.16 2020-07-08 11:08:01 +00:00
Renovate Bot bc862698ea
Update dependency sqlite3 to v5 2020-07-08 10:30:09 +00:00
Renovate Bot cf64de66c9
Update dependency got to v11.5.0 2020-07-08 10:29:50 +00:00
Pavel Djundik dbe1427e7a
Merge pull request #3845 from thelounge/xpaw/native-badging
Implement native app badges for highlights (Chrome 81+)
2020-07-08 12:33:52 +03:00
Pavel Djundik b6bd869d5f
Merge pull request #3918 from ashwinikammar/ashwini/fix_username
Make usernames case-insensitive when logging in
2020-07-08 11:26:58 +03:00
Pavel Djundik a6ee6efb6a
Merge pull request #3967 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.10.4
2020-07-06 10:40:47 +03:00
Pavel Djundik 6ae3821e12
Merge pull request #3968 from thelounge/renovate/copy-webpack-plugin-6.x
Update dependency copy-webpack-plugin to v6.0.3
2020-07-06 10:40:40 +03:00
Pavel Djundik 9e278dc812
Merge pull request #3969 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.29
2020-07-06 10:40:32 +03:00
Pavel Djundik 2323afc0d3
Merge pull request #3970 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.4.0
2020-07-06 10:40:24 +03:00
Pavel Djundik 2ef16d5f9b
Merge pull request #3971 from thelounge/renovate/vue-monorepo
Update dependency vuex to v3.5.1
2020-07-06 10:40:16 +03:00
Pavel Djundik b605bf3a95
Merge pull request #3972 from thelounge/renovate/got-11.x
Update dependency got to v11.4.0
2020-07-06 10:40:07 +03:00
Renovate Bot 91a377b015
Update dependency got to v11.4.0 2020-07-04 11:53:46 +00:00
Renovate Bot 2544b19525
Update dependency vuex to v3.5.1 2020-07-04 02:47:28 +00:00
Renovate Bot 34abca6af7
Update dependency eslint to v7.4.0 2020-07-04 01:10:00 +00:00
Renovate Bot 111201f212
Update dependency dayjs to v1.8.29 2020-07-04 01:09:41 +00:00
Renovate Bot cb2a7d02ba
Update dependency copy-webpack-plugin to v6.0.3 2020-07-04 00:39:25 +00:00
Renovate Bot a3e4d4c99d
Update babel monorepo to v7.10.4 2020-07-04 00:39:04 +00:00
Pavel Djundik 32d39410da
Put the string in quotes
skip ci

Github rendered it as "\#"
2020-06-29 15:16:15 +03:00
Pavel Djundik 7ddfc63327
Escape channel name
skip ci
2020-06-29 15:15:13 +03:00
Pavel Djundik 21d872519f
Merge pull request #3963 from thelounge/issue-links
Create issues links
2020-06-29 15:14:13 +03:00
Pavel Djundik 8fe9add310 Create issues links 2020-06-29 12:48:14 +03:00
Pavel Djundik 0d9571e43e
Merge pull request #3960 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.9.3
2020-06-28 11:46:37 +03:00
Pavel Djundik 47624efd24
Merge pull request #3959 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.3.1
2020-06-28 11:46:29 +03:00
Pavel Djundik ff52ee58e4
Merge pull request #3957 from thelounge/renovate/uuid-8.x
Update dependency uuid to v8.2.0
2020-06-28 11:46:22 +03:00
Renovate Bot f635292dfe
Update dependency vue-loader to v15.9.3 2020-06-27 01:00:57 +00:00
Renovate Bot 99def3c0ef
Update dependency eslint to v7.3.1 2020-06-27 01:00:36 +00:00
Renovate Bot 91a32d9d51
Update dependency uuid to v8.2.0 2020-06-23 21:10:54 +00:00
Ashwini Kammar 9e8033e36e Fixing thelounge username case-sensitivity - issue#2943
Removing the duplicate user profiles
2020-06-23 13:01:06 +01:00
Pavel Djundik eebfb7a6c5
Merge pull request #3952 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.13.1
2020-06-22 23:00:12 +03:00
Pavel Djundik 8ec54169f3
Merge pull request #3953 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.3.0
2020-06-22 23:00:05 +03:00
Pavel Djundik 6f58a875de
Merge pull request #3954 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.6.1
2020-06-22 22:59:58 +03:00
Renovate Bot b7035d3cae
Update dependency stylelint to v13.6.1 2020-06-22 08:58:30 +00:00
Renovate Bot 7effc2f873
Update dependency eslint to v7.3.0 2020-06-22 08:58:14 +00:00
Renovate Bot 2b1d04938a
Update dependency @fortawesome/fontawesome-free to v5.13.1 2020-06-22 08:57:56 +00:00
Pavel Djundik fa0396a764
Merge pull request #3951 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.10.3
2020-06-22 11:56:18 +03:00
Pavel Djundik d2d3880f23
Merge pull request #3955 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.12
2020-06-22 11:56:04 +03:00
Renovate Bot cf842e8ebf
Update dependency webpack-cli to v3.3.12 2020-06-20 05:18:39 +00:00
Renovate Bot f50a40dfb4
Update babel monorepo to v7.10.3 2020-06-20 01:18:24 +00:00
Pavel Djundik e3f0cd4fc3
Update yarn.lock 2020-06-14 12:38:28 +03:00
Pavel Djundik 8f102f7316 Merge remote-tracking branch 'origin/renovate/chalk-4.x' 2020-06-14 12:34:36 +03:00
Pavel Djundik b904b4875c Merge remote-tracking branch 'origin/renovate/css-loader-3.x' 2020-06-14 12:34:30 +03:00
Pavel Djundik c3f96472c2 Merge remote-tracking branch 'origin/renovate/file-type-14.x' 2020-06-14 12:34:24 +03:00
Pavel Djundik 72b7906949 Merge branch 'renovate/mocha-8.x' 2020-06-14 12:34:07 +03:00
Renovate Bot 612b84ceb7
Update dependency css-loader to v3.6.0 2020-06-14 09:33:52 +00:00
Renovate Bot a4f0add6e1
Update dependency chalk to v4.1.0 2020-06-14 09:33:35 +00:00
Pavel Djundik 3ac2d2c22a
Merge pull request #3946 from thelounge/renovate/textcomplete-0.x
Update dependency textcomplete to v0.18.2
2020-06-14 12:33:23 +03:00
Pavel Djundik fd9863d919
Merge pull request #3906 from thelounge/xpaw/ctcp-server
Reply to the server if that's where CTCP VERSION originated
2020-06-14 12:33:08 +03:00
Pavel Djundik b3ad1b1419
Merge pull request #3947 from thelounge/renovate/vue-monorepo
Update dependency vue-router to v3.3.4
2020-06-14 12:33:00 +03:00
Pavel Djundik d29f2fb251 Got: "options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized" 2020-06-14 12:32:08 +03:00
Renovate Bot 1918485d8c
Update dependency file-type to v14.6.2 2020-06-14 08:59:43 +00:00
Renovate Bot eeac12fe49
Update dependency vue-router to v3.3.4 2020-06-13 09:09:06 +00:00
Renovate Bot 78426087d1
Update dependency mocha to v8 2020-06-13 03:37:39 +00:00
Renovate Bot 1eafb231af
Update dependency textcomplete to v0.18.2 2020-06-13 01:32:39 +00:00
Pavel Djundik 154ac3a8fa
Merge pull request #3937 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7.2.0
2020-06-07 17:32:20 +03:00
Pavel Djundik 4888f538d7
Merge pull request #3939 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.6.0
2020-06-07 17:32:13 +03:00
Pavel Djundik d23f7af439
Merge pull request #3938 from thelounge/renovate/nyc-15.x
Update dependency nyc to v15.1.0
2020-06-07 17:32:05 +03:00
Pavel Djundik bbd9bbeb46
Merge pull request #3936 from thelounge/renovate/copy-webpack-plugin-6.x
Update dependency copy-webpack-plugin to v6.0.2
2020-06-07 17:31:58 +03:00
Pavel Djundik 75ec058910
Merge pull request #3935 from thelounge/renovate/got-11.x
Update dependency got to v11.3.0
2020-06-07 17:31:50 +03:00
Pavel Djundik 05feff3d28
Merge pull request #3940 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.6.1
2020-06-07 17:31:35 +03:00
Renovate Bot 02da351c3c
Update dependency file-type to v14.6.1 2020-06-07 13:43:44 +00:00
Renovate Bot c7b78779e5
Update dependency stylelint to v13.6.0 2020-06-06 02:35:32 +00:00
Renovate Bot bc087ab74d
Update dependency nyc to v15.1.0 2020-06-06 02:35:13 +00:00
Renovate Bot 6315befa32
Update dependency eslint to v7.2.0 2020-06-06 00:36:51 +00:00
Renovate Bot 984bb76c5f
Update dependency copy-webpack-plugin to v6.0.2 2020-06-06 00:36:29 +00:00
Renovate Bot 1299e1e4c9
Update dependency got to v11.3.0 2020-06-05 16:33:22 +00:00
Richard Lewis f3236538a0 Fix searching channels with uppercase letters in name. 2020-06-03 14:17:53 +03:00
Richard Lewis b4d02c3c56 Fix context menus in search results. 2020-06-03 14:04:57 +03:00
Pavel Djundik 3194777b98
Merge pull request #3927 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.10.2
2020-06-02 17:34:28 +03:00
Pavel Djundik f593af9b12
Merge pull request #3932 from thelounge/renovate/got-11.x
Update dependency got to v11.2.0
2020-06-02 17:34:20 +03:00
Pavel Djundik 889d2f8482
Merge pull request #3934 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.6.0
2020-06-02 17:34:14 +03:00
Renovate Bot 7ea79d10a2
Update dependency file-type to v14.6.0 2020-06-02 04:36:29 +00:00
Renovate Bot cd1171b4c1
Update dependency got to v11.2.0 2020-06-01 07:38:47 +00:00
Renovate Bot 97a2805a8a
Update babel monorepo to v7.10.2 2020-05-31 19:43:18 +00:00
Pavel Djundik a119e5c4a0
Merge pull request #3931 from thelounge/renovate/ldapjs-2.x
Update dependency ldapjs to v2.0.0
2020-05-31 22:38:59 +03:00
Pavel Djundik ebcbabde95
Merge pull request #3929 from thelounge/renovate/vue-monorepo
Update dependency vue-router to v3.3.2
2020-05-31 22:38:51 +03:00
Pavel Djundik a863c2c553
Merge pull request #3928 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.28
2020-05-31 22:38:44 +03:00
Renovate Bot 253d820225
Update dependency ldapjs to v2.0.0 2020-05-31 13:22:05 +00:00
Renovate Bot f1c04be695
Update dependency vue-router to v3.3.2 2020-05-30 07:57:27 +00:00
Renovate Bot 7d418d6cbb
Update dependency dayjs to v1.8.28 2020-05-30 07:55:00 +00:00
Pavel Djundik e7b6fdf0c3
Merge pull request #3886 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.2.0
2020-05-30 10:49:47 +03:00
Renovate Bot 56d5c77c76
Update dependency sqlite3 to v4.2.0 2020-05-26 07:47:03 +00:00
Pavel Djundik 336504c306
Merge pull request #3926 from thelounge/renovate/mocha-7.x
Update dependency mocha to v7.2.0
2020-05-26 10:45:06 +03:00
Renovate Bot c54e7f9f47
Update dependency mocha to v7.2.0 2020-05-23 12:58:24 +00:00
Pavel Djundik a740074fd9 Update eslint and yarn.lock 2020-05-23 12:29:25 +03:00
Pavel Djundik 1de0294642
Merge pull request #3922 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.5.0
2020-05-23 12:04:21 +03:00
Pavel Djundik 9443f4e848
Merge pull request #3923 from thelounge/renovate/vue-monorepo
Update dependency vue-router to v3.2.0
2020-05-23 12:04:02 +03:00
Pavel Djundik f4cbcee1b0
Merge pull request #3920 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.5.0
2020-05-23 12:03:53 +03:00
Pavel Djundik 56883f655a
Merge pull request #3919 from thelounge/renovate/uuid-8.x
Update dependency uuid to v8.1.0
2020-05-23 12:03:44 +03:00
Pavel Djundik 24b53c9ff6
Merge pull request #3917 from thelounge/renovate/linkify-it-3.x
Update dependency linkify-it to v3
2020-05-23 12:03:36 +03:00
Renovate Bot 230f26156a
Update dependency vue-router to v3.2.0 2020-05-23 00:34:19 +00:00
Renovate Bot 42715720b1
Update dependency stylelint to v13.5.0 2020-05-23 00:34:04 +00:00
Renovate Bot 31a7228509
Update dependency file-type to v14.5.0 2020-05-21 05:46:39 +00:00
Renovate Bot 6322132921
Update dependency uuid to v8.1.0 2020-05-20 19:29:47 +00:00
Renovate Bot 70bff5616d
Update dependency linkify-it to v3 2020-05-20 12:31:33 +00:00
Pavel Djundik 9bb0b02261 v4.2.0-pre.1 2020-05-17 16:23:53 +03:00
Pavel Djundik ff25f43eeb Add changelog entry for v4.2.0-pre.1 2020-05-17 16:23:46 +03:00
Pavel Djundik b8322d6aa7
Merge pull request #3914 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.4.0
2020-05-17 16:22:41 +03:00
Pavel Djundik 23bbdb08aa
Merge pull request #3915 from thelounge/renovate/vue-monorepo
Update vue monorepo to v1.0.3
2020-05-17 16:22:33 +03:00
Renovate Bot ac9bb8442b
Update vue monorepo to v1.0.3 2020-05-17 12:18:52 +00:00
Renovate Bot eadd225363
Update dependency stylelint to v13.4.0 2020-05-17 10:04:24 +00:00
Pavel Djundik a7c9cf5baa
Merge pull request #3909 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.4.0
2020-05-17 13:02:59 +03:00
Pavel Djundik 5de26dbee9
Merge pull request #3910 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.27
2020-05-17 13:02:53 +03:00
Pavel Djundik a9f5f72218
Merge pull request #3911 from thelounge/renovate/vue-monorepo
Update dependency vuex to v3.4.0
2020-05-17 13:02:43 +03:00
Pavel Djundik bd4c4414dd
Merge pull request #3905 from thelounge/renovate/got-11.x
Update dependency got to v11.1.4
2020-05-17 13:02:32 +03:00
Renovate Bot 1453c75c3f
Update dependency vuex to v3.4.0 2020-05-16 18:38:10 +00:00
Renovate Bot 1800c2a892
Update dependency got to v11.1.4 2020-05-16 18:37:49 +00:00
Renovate Bot 7747114b2e
Update dependency file-type to v14.4.0 2020-05-16 18:37:37 +00:00
Renovate Bot 48be6771b2
Update dependency dayjs to v1.8.27 2020-05-16 18:37:25 +00:00
Pavel Djundik abb8566ce7
Merge pull request #3912 from thelounge/renovate/copy-webpack-plugin-6.x
Update dependency copy-webpack-plugin to v6
2020-05-16 21:36:58 +03:00
Pavel Djundik bc7bf9870c Update CopyPlugin options 2020-05-16 21:33:25 +03:00
Renovate Bot c3d8855ec3 Update dependency copy-webpack-plugin to v6 2020-05-16 21:33:24 +03:00
Pavel Djundik dbc829b5f8 Reply to the server if that's where CTCP VERSION originated 2020-05-11 21:55:30 +03:00
Pavel Djundik c4ff314a12
Merge pull request #3903 from thelounge/renovate/eslint-7.x
Update dependency eslint to v7
2020-05-11 16:32:22 +03:00
Pavel Djundik 147d3b2a9d
Merge pull request #3904 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.4.4
2020-05-11 16:32:12 +03:00
Renovate Bot 0e2e26ef88
Update dependency web-push to v3.4.4 2020-05-10 11:25:47 +00:00
Renovate Bot a439102403
Update dependency eslint to v7 2020-05-09 17:06:10 +00:00
Pavel Djundik e1157642a8
Merge pull request #3902 from thelounge/renovate/vue-monorepo
Update vue monorepo to v1.0.2
2020-05-09 20:04:57 +03:00
Pavel Djundik 91333d9009
Merge pull request #3898 from thelounge/renovate/got-11.x
Update dependency got to v11.1.2
2020-05-09 20:04:47 +03:00
Renovate Bot 9f6c374d36
Update vue monorepo to v1.0.2 2020-05-09 00:34:37 +00:00
Renovate Bot aef952678a
Update dependency got to v11.1.2 2020-05-08 12:29:05 +00:00
Pavel Djundik b73755b0c4
Merge pull request #3869 from thelounge/renovate/got-11.x
Update dependency got to v11
2020-05-06 13:19:37 +03:00
Pavel Djundik 67378c7a48
Merge pull request #3896 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.3.0
2020-05-06 13:19:29 +03:00
Renovate Bot 10d58f2f19
Update dependency file-type to v14.3.0 2020-05-04 19:27:42 +00:00
Renovate Bot ca23475620
Update dependency got to v11 2020-05-04 15:40:30 +00:00
Pavel Djundik 5aaac56a1a
Merge pull request #3890 from thelounge/renovate/uuid-8.x
Update dependency uuid to v8
2020-05-04 11:55:10 +03:00
Pavel Djundik 6941b3cb7f
Merge pull request #3894 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.26
2020-05-04 11:55:00 +03:00
Pavel Djundik b5b5d5e7d4
Merge pull request #3893 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.9.6
2020-05-04 11:54:51 +03:00
Pavel Djundik 39a8bed4ca
Merge pull request #3895 from thelounge/renovate/vue-monorepo
Update dependency vue-loader to v15.9.2
2020-05-04 11:54:35 +03:00
Renovate Bot 033565bfc5
Update dependency vue-loader to v15.9.2 2020-05-02 01:49:09 +00:00
Renovate Bot b507b340a6
Update dependency dayjs to v1.8.26 2020-05-02 00:35:13 +00:00
Renovate Bot ae276a69eb
Update babel monorepo to v7.9.6 2020-05-02 00:34:56 +00:00
Renovate Bot 5310c90a83
Update dependency uuid to v8 2020-04-29 20:52:32 +00:00
Pavel Djundik 512fc5ca04
Merge pull request #3889 from timmw/timmw/vue3-prep
Changes required for vue 3
2020-04-28 22:10:55 +03:00
Tim Miller-Williams 13a7a4b5c1
Remove vue/no-use-v-if-with-v-for eslint override 2020-04-28 20:05:46 +01:00
Pavel Djundik fb9e3e6a53
Merge pull request #3888 from thelounge/xpaw/id-order
Fix msg id order when loading from sqlite
2020-04-28 21:42:44 +03:00
Tim Miller-Williams 06d6dbe3a3 Fix usage of v-for and v-if on same component 2020-04-28 17:00:08 +01:00
Tim Miller-Williams 8263b17861 Address warning in Vue 3
Property "unreadMarkerShown" was accessed during render but is not
defined on instance
2020-04-28 17:00:08 +01:00
Pavel Djundik 24d4276a7c Fix msg id order when loading from sqlite 2020-04-28 17:45:27 +03:00
Tim Miller-Williams 8d8183eabb Fix 'component' case sensitivity
Component does not work in Vue 3
2020-04-28 15:17:55 +01:00
Pavel Djundik 801c7a07c0
Merge pull request #3885 from thelounge/xpaw/eventbus-multi-arg
Support multiple arguments in eventbus emit
2020-04-28 16:02:24 +03:00
Pavel Djundik 61d8884bef Support multiple arguments in eventbus emit
Fixes confirm dialog callback
2020-04-27 21:45:47 +03:00
Richard Lewis 5d017b09b8 Append new results and keep scroll position. 2020-04-26 22:39:05 +03:00
Richard Lewis 9a1fb0c0a0 Search improvements. 2020-04-26 22:39:05 +03:00
Richard Lewis 88644314ce Use ellipsis
Co-Authored-By: Pavel Djundik <xPaw@users.noreply.github.com>
2020-04-26 22:39:05 +03:00
Richard Lewis 4ba458b9ea Use ellipsis
Co-Authored-By: Pavel Djundik <xPaw@users.noreply.github.com>
2020-04-26 22:39:05 +03:00
Richard Lewis 28c740ab67 Fix toggling search on mobile. 2020-04-26 22:39:05 +03:00
Richard Lewis 2591ae9e8e Disable searching nicks. 2020-04-26 22:39:05 +03:00
Richard Lewis 0f3c292098 Message search WIP. 2020-04-26 22:39:05 +03:00
Pavel Djundik 16646e1586 Fix eventbus 2020-04-26 12:34:22 +03:00
Pavel Djundik 8978be2fd7 Update yarn.lock 2020-04-26 12:21:02 +03:00
Renovate Bot 183226e190 Update dependency webpack to v4.43.0 2020-04-26 12:18:04 +03:00
Renovate Bot 185fcfef33 Update dependency vuex to v3.3.0 2020-04-26 12:18:04 +03:00
Renovate Bot 7a4ee6db27 Update dependency stylelint to v13.3.3 2020-04-26 12:18:04 +03:00
Renovate Bot ea11e5cfd9 Update dependency prettier to v2.0.5 2020-04-26 12:18:04 +03:00
Renovate Bot ae7426b6ff Update dependency mocha to v7.1.2 2020-04-26 12:18:03 +03:00
Renovate Bot f72d29b391 Update dependency mime-types to v2.1.27 2020-04-26 12:18:03 +03:00
Renovate Bot 9a7ae60392 Update dependency file-type to v14.2.0 2020-04-26 12:13:01 +03:00
Renovate Bot fc61500a29 Update dependency eslint-config-prettier to v6.11.0 2020-04-26 12:13:01 +03:00
Renovate Bot bcdd548238 Update dependency dayjs to v1.8.25 2020-04-26 12:13:01 +03:00
Renovate Bot 2e9d375f36 Update dependency css-loader to v3.5.3 2020-04-26 12:13:01 +03:00
Renovate Bot f436dfdd41
Update dependency commander to v5.1.0 2020-04-25 02:31:55 +00:00
Pavel Djundik 480a2576c3
Merge pull request #3872 from thelounge/xpaw/eventbus
Replace vue events with our own event bus
2020-04-24 14:24:29 +03:00
Pavel Djundik f0253075d8 Create an event bus 2020-04-24 14:09:09 +03:00
Pavel Djundik 96a983b310
Merge pull request #3875 from thelounge/xpaw/statusmsg-ui
Add an indicator to statusmsg messages
2020-04-24 14:07:48 +03:00
Pavel Djundik 53bd9c2f68
Merge pull request #3868 from thelounge/xpaw/mentions-fixes
Some fixes in mentions window
2020-04-24 14:07:40 +03:00
Pavel Djundik ad6569cf06 Add an indicator to statusmsg messages 2020-04-24 11:46:39 +03:00
Pavel Djundik 4ac25d4bc5
Merge pull request #3871 from ebardie/ebardie/dont_load_extinct_users
Filter user loading at startup for "advanced" LDAP
2020-04-24 10:21:42 +03:00
Jonathan Sambrook 878ac0d192 Filter user loading at startup for "advanced" LDAP
Users are loaded at startup. Currently when using "advanced" LDAP
authentication this is true even if they no longer have a
valid entry in the LDAP server.

This commit uses the existing LDAP filter (specified in config.js's searchDN
used by the "advanced" LDAP mechanism) to weed out any users that no
longer have the relevant LDAP entry.

Local and "simple" LDAP auth mechanisms continue to use the existing
load all users approach. In the "simple" LDAP case this is because we
only have access to the hashed password, and so can't bind to LDAP.
2020-04-23 15:54:09 +01:00
Jonathan Sambrook a0d10989ad Tidy up the auth plugin API mechanism to hide implementation details
The caller doesn't care which plugin is being used, so this commit
consolidates implementation details within auth.js

The motivation for this work is to prepare for extending the auth API
(to allow "advanced" LDAP to query user entry ontological state at start
up), by tidying up rather than duplicating the existing mechanism.
2020-04-23 15:11:35 +01:00
Pavel Djundik 36844f948c
Merge pull request #3870 from thelounge/xpaw/random-nick-safeguard
Safeguard nick randomizer up to allowed length
2020-04-23 12:47:44 +03:00
Pavel Djundik 2b0afcacf2 Safeguard nick randomizer up to allowed length 2020-04-22 15:18:55 +03:00
Pavel Djundik beb9fbd940 Set native app badge for highlights 2020-04-22 14:16:39 +03:00
Pavel Djundik 0642ae58ce
Merge pull request #3844 from thelounge/xpaw/certfp
CertFP support; separate SASL configuration
2020-04-22 14:05:34 +03:00
Pavel Djundik 635b8b3eef
Merge pull request #3866 from thelounge/renovate/vue-monorepo
Update dependency vuex to v3.2.0
2020-04-22 14:05:15 +03:00
Pavel Djundik bcd2e7cb08 Some fixes in mentions window 2020-04-20 13:40:45 +03:00
Renovate Bot 91b48e061d
Update dependency vuex to v3.2.0 2020-04-20 08:16:43 +00:00
Pavel Djundik 89edc6aa30
Merge pull request #3867 from maxpoulin64/fix-manifest-color
Fix off-by-one color error in webmanifest
2020-04-20 10:22:40 +03:00
Maxime Poulin be78a5809a Fix off-by-one color error in webmanifest 2020-04-19 20:46:37 -04:00
Pavel Djundik ce6f188acc
Merge pull request #3863 from thelounge/renovate/semver-7.x
Update dependency semver to v7.3.2
2020-04-16 14:21:47 +03:00
Pavel Djundik b8eaae3a50
Merge pull request #3864 from thelounge/xpaw/rm-polyfill
Remove intersection-observer polyfill
2020-04-16 14:21:35 +03:00
Pavel Djundik 9105a3db06 Remove intersection-observer polyfill 2020-04-15 16:14:21 +03:00
Renovate Bot 18a10a9efb
Update dependency semver to v7.3.2 2020-04-15 08:54:49 +00:00
Pavel Djundik e772c4eab5
Merge pull request #3861 from MaxLeiter/mentionsLoading
Move mentions loading text out of header
2020-04-15 11:23:35 +03:00
Max Leiter 177d4d78ba Move mentions loading text out of header 2020-04-15 01:20:16 -07:00
Pavel Djundik fce71f4a7c Use v-model in network form, auto size commands 2020-04-15 11:12:07 +03:00
Pavel Djundik 6ee71779d1 Combine displayNetwork into lockNetwork 2020-04-15 10:56:05 +03:00
Pavel Djundik 8a281bacd8 Preliminary SASL UI 2020-04-15 10:56:04 +03:00
Pavel Djundik f8f692af05 Generate client certificates and automatically do SASL EXTERNAL 2020-04-15 10:56:04 +03:00
Pavel Djundik 3900e9dd81 Consolidate irc-framework options 2020-04-15 10:56:03 +03:00
Pavel Djundik 58553d7691
Merge pull request #3798 from thelounge/richrd/image-viewer-navigation
Implement navigation in image viewer
2020-04-13 13:05:29 +03:00
Pavel Djundik f3d2dc1678
Merge pull request #3862 from thelounge/xpaw/mentions-zindex
Render sidebar over the mentions popup on mobile
2020-04-13 13:02:22 +03:00
Pavel Djundik 05ff8530cc Render sidebar over the mentions popup on mobile 2020-04-13 12:31:56 +03:00
Pavel Djundik 0fcaa46095
Merge pull request #3859 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.3.2
2020-04-13 11:45:51 +03:00
Pavel Djundik 1754c77517
Merge pull request #3857 from thelounge/xpaw/optimize-userlist-updates
Optimize user list updates for quit/part/kick events
2020-04-13 11:39:57 +03:00
Pavel Djundik 999095b7df
Merge pull request #3858 from thelounge/xpaw/mentions
Track mentions and add a window to view them
2020-04-13 10:49:06 +03:00
Renovate Bot d39a6dd012
Update dependency stylelint to v13.3.2 2020-04-11 15:25:00 +00:00
Pavel Djundik bc4f9b5f51 Track mentions and add a window to view them 2020-04-11 12:49:42 +03:00
Pavel Djundik 8e00e26054
Merge pull request #3826 from thelounge/xpaw/mocharc
Upgrade to mocha@7 and remove mochapack
2020-04-11 12:32:45 +03:00
Pavel Djundik c1607bd8e7
Merge pull request #3856 from thelounge/macos-10x
Exclude node 10 on macOS from build matrix
2020-04-11 12:31:07 +03:00
Pavel Djundik 4ce2efe86b Upgrade mocha and remove mochapack 2020-04-11 12:27:08 +03:00
Pavel Djundik 99bb58a7a7
Merge pull request #3848 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.5.2
2020-04-11 12:23:11 +03:00
Pavel Djundik 49189d5649
Merge pull request #3849 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.24
2020-04-11 12:23:03 +03:00
Pavel Djundik 74181d0783
Merge pull request #3847 from thelounge/renovate/babel-monorepo
Update dependency @babel/preset-env to v7.9.5
2020-04-11 12:22:54 +03:00
Pavel Djundik b885673341
Merge pull request #3843 from thelounge/renovate/semver-7.x
Update dependency semver to v7.2.2
2020-04-11 12:22:47 +03:00
Pavel Djundik 013e55a9a6 Exclude node 10 on macOS from build matrix 2020-04-11 12:19:05 +03:00
Renovate Bot 2e31325de6
Update dependency semver to v7.2.2 2020-04-11 08:59:26 +00:00
Renovate Bot 0ad907982d
Update dependency dayjs to v1.8.24 2020-04-11 08:59:16 +00:00
Renovate Bot 2156c6ba97
Update dependency css-loader to v3.5.2 2020-04-11 08:59:05 +00:00
Renovate Bot e7d0ad93f9
Update dependency @babel/preset-env to v7.9.5 2020-04-11 08:58:54 +00:00
Pavel Djundik a5bb486012
Merge pull request #3850 from thelounge/renovate/husky-4.x
Update dependency husky to v4.2.5
2020-04-11 11:57:29 +03:00
Pavel Djundik a3490af5a3
Merge pull request #3851 from thelounge/renovate/prettier-2.x
Update dependency prettier to v2.0.4
2020-04-11 11:57:19 +03:00
Pavel Djundik 484ec95f24
Merge pull request #3852 from thelounge/renovate/sinon-9.x
Update dependency sinon to v9.0.2
2020-04-11 11:57:12 +03:00
Pavel Djundik d8495bdc54
Merge pull request #3853 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.3.1
2020-04-11 11:57:03 +03:00
Pavel Djundik 2891c1e89c
Merge pull request #3854 from thelounge/renovate/vue-monorepo
Update vue monorepo to v1.0.0-beta.33
2020-04-11 11:56:56 +03:00
Pavel Djundik c8eee85b28
Merge pull request #3855 from thelounge/renovate/emoji-regex-9.x
Update dependency emoji-regex to v9
2020-04-11 11:56:48 +03:00
Renovate Bot f0d985637b
Update dependency emoji-regex to v9 2020-04-11 05:31:07 +00:00
Renovate Bot dc288c4c66
Update vue monorepo to v1.0.0-beta.33 2020-04-11 04:40:14 +00:00
Renovate Bot d810c3aec9
Update dependency stylelint to v13.3.1 2020-04-11 04:40:00 +00:00
Renovate Bot 5f06cfe483
Update dependency sinon to v9.0.2 2020-04-11 03:19:38 +00:00
Renovate Bot 9db3b009f3
Update dependency prettier to v2.0.4 2020-04-11 03:19:23 +00:00
Renovate Bot de6aa7df90
Update dependency husky to v4.2.5 2020-04-11 01:41:04 +00:00
Pavel Djundik b72e49c902
Merge pull request #3764 from thelounge/xpaw/canvas-upload
Render images in canvas before upload to remove exif
2020-04-07 21:51:46 +03:00
Pavel Djundik 63f412aab1
Merge pull request #3842 from thelounge/renovate/prettier-2.x
Update dependency prettier to v2.0.3
2020-04-06 10:23:59 +03:00
Renovate Bot b756de003e
Update dependency prettier to v2.0.3 2020-04-05 21:14:07 +00:00
Pavel Djundik aa96a2ad31
Merge pull request #3841 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.3.0
2020-04-05 10:25:24 +03:00
Pavel Djundik 37cbc1562c
Merge pull request #3840 from thelounge/renovate/nyc-15.x
Update dependency nyc to v15.0.1
2020-04-05 10:25:17 +03:00
Pavel Djundik 5b555835e2
Merge pull request #3839 from thelounge/renovate/chalk-4.x
Update dependency chalk to v4
2020-04-05 10:25:08 +03:00
Renovate Bot 119afbdf2f
Update dependency stylelint to v13.3.0 2020-04-04 00:31:30 +00:00
Renovate Bot 31f814d66d
Update dependency nyc to v15.0.1 2020-04-04 00:31:15 +00:00
Renovate Bot d584dd7e11
Update dependency chalk to v4 2020-04-02 08:25:29 +00:00
Pavel Djundik ee2e2608a3
Merge pull request #3838 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.8.1
2020-04-02 10:44:02 +03:00
Renovate Bot 7e321d399c
Update dependency irc-framework to v4.8.1 2020-04-02 07:07:28 +00:00
Pavel Djundik 86d84b70a1
Merge pull request #3837 from thelounge/renovate/uuid-7.x
Update dependency uuid to v7.0.3
2020-04-01 10:51:17 +03:00
Renovate Bot c5596f658e
Update dependency uuid to v7.0.3 2020-03-31 19:49:44 +00:00
Pavel Djundik 16ade38851
Merge pull request #3829 from thelounge/renovate/got-10.x
Update dependency got to v10.7.0
2020-03-30 23:27:06 +03:00
Renovate Bot 87d902d028
Update dependency got to v10.7.0 2020-03-30 20:19:46 +00:00
Pavel Djundik 600313fded
Merge pull request #3835 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.42.1
2020-03-30 23:18:57 +03:00
Pavel Djundik 4641cb4b8c
Merge pull request #3834 from thelounge/renovate/prettier-2.x
Update dependency prettier to v2.0.2
2020-03-30 23:18:48 +03:00
Pavel Djundik 599c4ce769
Merge pull request #3832 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.13.0
2020-03-30 23:18:39 +03:00
Pavel Djundik b14a8a267a Render uploaded images in canvas to remove exif 2020-03-30 23:16:26 +03:00
Renovate Bot 55e99b299a
Update dependency webpack to v4.42.1 2020-03-28 01:40:29 +00:00
Renovate Bot 20e47aaadb
Update dependency prettier to v2.0.2 2020-03-28 01:40:14 +00:00
Renovate Bot 55767d733d
Update dependency @fortawesome/fontawesome-free to v5.13.0 2020-03-28 00:20:40 +00:00
Pavel Djundik 56dfa5ef40
Merge pull request #3828 from stevenengler/patch-1
Fix body overscroll and overflow on iOS Safari
2020-03-23 22:01:45 +02:00
Steven Engler 39e70670b5
Fix body overscroll and overflow on iOS Safari
In order to prevent scrolling past the edges of the body (overscroll)
in Safari on iOS, the overflow must be hidden (not only overflow-y).
2020-03-23 15:15:30 -04:00
Pavel Djundik beac893dd0
Merge pull request #3825 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.10.1
2020-03-23 12:16:12 +02:00
Renovate Bot 6e655d457e
Update dependency eslint-config-prettier to v6.10.1 2020-03-23 08:21:01 +00:00
Pavel Djundik a7db950a52
Merge pull request #3824 from thelounge/renovate/prettier-2.x
Update dependency prettier to v2.0.1
2020-03-23 10:19:54 +02:00
Pavel Djundik f4528e6f00
Merge pull request #3810 from thelounge/xpaw/remove-fs-extra
Replace all uses of `fs-extra` with native methods
2020-03-23 10:19:44 +02:00
Pavel Djundik c35412625e
Merge pull request #3814 from thelounge/xpaw/fix-3813
Do not handle navigation keybinds in inputs if not empty
2020-03-23 10:19:37 +02:00
Renovate Bot 4c3594b832
Update dependency prettier to v2.0.1 2020-03-22 19:20:33 +00:00
Pavel Djundik 52bf7b116e Do not handle keybinds in inputs if not empty
Fix #3813
2020-03-22 20:44:14 +02:00
Pavel Djundik 6de6f8185e Clean up folders in after test runs 2020-03-22 20:43:06 +02:00
Pavel Djundik 487a438f02 Replace all uses of fs-extra with native methods 2020-03-22 20:42:16 +02:00
Pavel Djundik 4bf4b7baf0
Merge pull request #3797 from thelounge/xpaw/fix-changelog-check
Pass in client manager object in update checker
2020-03-22 20:41:39 +02:00
Pavel Djundik 9c2607df89
Merge pull request #3820 from thelounge/renovate/babel-monorepo
Update babel monorepo
2020-03-22 11:48:48 +02:00
Pavel Djundik 05e806d762
Merge pull request #3821 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.23
2020-03-22 11:48:41 +02:00
Pavel Djundik 68618da7f1
Merge pull request #3822 from thelounge/renovate/vue-monorepo
Update dependency vue-loader to v15.9.1
2020-03-22 11:48:33 +02:00
Pavel Djundik eb171c01f5
Merge pull request #3823 from thelounge/renovate/prettier-2.x
Update dependency prettier to v2
2020-03-22 11:48:24 +02:00
Pavel Djundik 881b3eda19 Run format after updating to prettier 2.0 2020-03-21 22:55:36 +02:00
Renovate Bot a46c9e8403
Update dependency prettier to v2 2020-03-21 20:10:25 +00:00
Renovate Bot 9da36b9966
Update dependency vue-loader to v15.9.1 2020-03-21 01:33:57 +00:00
Renovate Bot c2e6b13504
Update dependency dayjs to v1.8.23 2020-03-21 00:54:46 +00:00
Renovate Bot 42d568ad2c
Update babel monorepo 2020-03-21 00:54:32 +00:00
Pavel Djundik 4b29cdeb0c
Merge pull request #3817 from thelounge/xpaw/fix-2562
Separate active sessions section
2020-03-20 13:42:49 +02:00
Pavel Djundik a3c204f978
Merge pull request #3816 from thelounge/xpaw/public-connect
Remove "The Lounge" from connect in public
2020-03-19 21:39:29 +02:00
Pavel Djundik 0f1e7d5036
Merge pull request #3815 from thelounge/xpaw/esc-help
Add escape key description to help section
2020-03-19 21:39:10 +02:00
Pavel Djundik a6f70696f3 Separate active sessions section
Fixes #2562
2020-03-17 17:36:13 +02:00
Pavel Djundik 4c177b8d02 Remove "The Lounge" from connect in public 2020-03-17 12:20:32 +02:00
Pavel Djundik ecda9e225e Add escape key to help section 2020-03-17 12:06:50 +02:00
Pavel Djundik a9d2b30d96
Merge pull request #3808 from thelounge/xpaw/fix-part
Fix up first argument not being used as part message
2020-03-16 20:29:46 +02:00
Pavel Djundik 424bc4f7df Fix up first argument not being used as part message 2020-03-15 20:16:53 +02:00
Pavel Djundik 52002c3e22
Merge pull request #3807 from thelounge/renovate/commander-5.x
Update dependency commander to v5
2020-03-15 14:03:35 +02:00
Pavel Djundik 80b0e8ad12 Fix up commander changes 2020-03-15 14:00:02 +02:00
Renovate Bot b000a594f4 Update dependency commander to v5 2020-03-15 14:00:02 +02:00
Pavel Djundik 0ec242738f
Merge pull request #3801 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.1.4
2020-03-15 13:54:05 +02:00
Pavel Djundik 5e935189a3
Merge pull request #3804 from thelounge/renovate/sinon-9.x
Update dependency sinon to v9.0.1
2020-03-15 13:53:56 +02:00
Pavel Djundik 0035910765
Merge pull request #3805 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.2.1
2020-03-15 13:53:49 +02:00
Renovate Bot 9e6b6c582f
Update dependency stylelint to v13.2.1 2020-03-15 11:25:32 +00:00
Renovate Bot b7562362c1
Update dependency sinon to v9.0.1 2020-03-15 11:25:22 +00:00
Renovate Bot 9926c83ba7
Update dependency file-type to v14.1.4 2020-03-15 11:25:11 +00:00
Pavel Djundik 6c0acfcfb7
Merge pull request #3806 from thelounge/renovate/vue-monorepo
Update vue monorepo
2020-03-15 13:24:40 +02:00
Renovate Bot babadbd955
Update vue monorepo 2020-03-14 01:14:38 +00:00
Pavel Djundik 64aa510abf Bind events in image viewer only once 2020-03-10 15:36:58 +02:00
Pavel Djundik 0b38a88147
Merge pull request #3800 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.22.4
2020-03-10 15:21:45 +02:00
Pavel Djundik b3fa46ad10
Merge pull request #3799 from thelounge/xpaw/upgrade-lock
Upgrade yarn.lock
2020-03-10 15:02:34 +02:00
Renovate Bot 5e30d3698d
Update dependency yarn to v1.22.4 2020-03-10 12:42:59 +00:00
Pavel Djundik 04de1ebc30 Update yarn.lock 2020-03-10 12:58:49 +02:00
Richard Lewis ef473b0f53 Implement navigation in image viewer. 2020-03-09 18:54:21 +02:00
Pavel Djundik 0e62103010 Pass in client manager object in update checker 2020-03-09 17:58:40 +02:00
Pavel Djundik a4ef328d8d
Merge pull request #3778 from thelounge/xpaw/clear-history
Clear channel history (and a new confirmation dialog)
2020-03-09 15:59:37 +02:00
Pavel Djundik e5596d9d81
Merge pull request #3796 from thelounge/renovate/eslint-plugin-vue-6.x
Update dependency eslint-plugin-vue to v6.2.2
2020-03-09 10:37:13 +02:00
Pavel Djundik e47e54b934
Merge pull request #3787 from thelounge/xpaw/12h
Add an option to display 12h times
2020-03-09 10:36:07 +02:00
Pavel Djundik b8de7e68b5
Merge pull request #3790 from thelounge/xpaw/settings-group
Add role=group to status messages setting
2020-03-09 10:36:00 +02:00
Pavel Djundik 464c54b2cb
Merge pull request #3789 from thelounge/xpaw/fix-unhandled-chan
Fix sending unhandled numerics to target channel
2020-03-09 10:35:49 +02:00
Pavel Djundik 6b46a55def
Merge pull request #3795 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.42.0
2020-03-09 10:35:03 +02:00
Pavel Djundik 37f4e0ff93
Merge pull request #3792 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.22.1
2020-03-09 10:34:56 +02:00
Pavel Djundik 9277907c43
Merge pull request #3791 from thelounge/renovate/uuid-7.x
Update dependency uuid to v7.0.2
2020-03-09 10:34:49 +02:00
Pavel Djundik 960862df27
Merge pull request #3786 from thelounge/renovate/vue-monorepo
Update dependency vue-router to v3.1.6
2020-03-09 10:34:42 +02:00
Pavel Djundik 1376177a09
Merge pull request #3785 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.22
2020-03-09 10:34:34 +02:00
Pavel Djundik d2994d501f
Merge pull request #3784 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.8.7
2020-03-09 10:34:26 +02:00
Renovate Bot 1ea9d6c2ac
Update dependency yarn to v1.22.1 2020-03-09 08:06:10 +00:00
Renovate Bot 0a6f8a76ec
Update dependency webpack to v4.42.0 2020-03-09 08:06:00 +00:00
Renovate Bot c57b42c22b
Update dependency vue-router to v3.1.6 2020-03-09 08:05:49 +00:00
Renovate Bot f93061de29
Update dependency uuid to v7.0.2 2020-03-09 08:05:39 +00:00
Renovate Bot 06a15181c3
Update dependency eslint-plugin-vue to v6.2.2 2020-03-09 08:05:30 +00:00
Renovate Bot d11b704f22
Update dependency dayjs to v1.8.22 2020-03-09 08:05:20 +00:00
Renovate Bot 48f96e9ae0
Update babel monorepo to v7.8.7 2020-03-09 08:04:57 +00:00
Pavel Djundik 47b254a29e v4.1.0 2020-03-08 22:53:26 +02:00
Pavel Djundik 7ba2807b01 Add changelog for v4.1.0 2020-03-08 22:53:01 +02:00
Pavel Djundik 6121a3ab0b
Merge pull request #3793 from NotWoods/patch-1
Add maskable purpose & removes monochrome
2020-03-06 23:50:24 +02:00
Tiger Oakes d8ab40d8ee
Add maskable purpose to PNG icons 2020-03-06 13:37:27 -08:00
Pavel Djundik 8d119630eb Add role=group to status messages setting
Fixes #1909
2020-03-03 12:15:42 +02:00
Pavel Djundik 5233fb2dbb Fix sending unhandled numerics to target channel 2020-03-03 11:47:09 +02:00
Pavel Djundik 234938ed4b Fix up time width with AM/PM 2020-02-29 11:51:12 +02:00
Pavel Djundik 3630ab8519 Add an option to display 12h times 2020-02-29 11:37:45 +02:00
Pavel Djundik c463d1ddd3 Emit an event to clear history on all open clients 2020-02-28 17:01:28 +02:00
Pavel Djundik 44a8925b8c Create a generic confirmation dialog 2020-02-28 17:01:28 +02:00
Pavel Djundik 7216b8124b Add context menu to clear channel history 2020-02-28 17:01:28 +02:00
Pavel Djundik eb7f9ab298 Implement channel history clearing on the server 2020-02-28 17:01:28 +02:00
Pavel Djundik 6f04216af5 v4.1.0-rc.1 2020-02-27 21:07:35 +02:00
Pavel Djundik b79c91ff1e
Add changelog entry for v4.1.0-rc.1 2020-02-27 21:07:06 +02:00
Pavel Djundik d2e4f56219
Merge pull request #3783 from thelounge/xpaw/uninstall
Fix not being able to uninstall packages
2020-02-27 21:06:42 +02:00
Pavel Djundik ee0002fe6a
Merge pull request #3741 from RockyTV/rockytv/better-error-msgs
Write prettier error messages for certain errors
2020-02-27 21:00:16 +02:00
Alexandre Oliveira ab8593d3cd Write prettier error messages for IRC errors 2020-02-27 15:27:34 -03:00
Pavel Djundik 8f15548770 Fix not being able to uninstall packages 2020-02-27 19:21:01 +02:00
Pavel Djundik d99d56fe81
Merge pull request #3762 from thelounge/xpaw/sqlite-serialize
Change sqlite parallelize to serialize when loading messages
2020-02-27 14:02:29 +02:00
Pavel Djundik 365613f0ee
Merge pull request #3767 from thelounge/setname
Unprefix setname cap
2020-02-27 14:01:03 +02:00
Pavel Djundik bec6665044
Merge pull request #3770 from thelounge/sts
Implement strict transport security (STS) for IRC networks
2020-02-27 13:53:51 +02:00
Pavel Djundik 8976fa163e Do not reconnect if STS cap is received in CAP NEW 2020-02-27 13:48:48 +02:00
Pavel Djundik db866f9823 Refresh STS policy expiration on network quit 2020-02-27 13:48:48 +02:00
Pavel Djundik 568427ca98 Disable changing TLS if STS is enforced 2020-02-27 13:48:48 +02:00
Pavel Djundik d9985e7318 Enforce STS policies 2020-02-27 13:48:47 +02:00
Pavel Djundik 9b9db35e3c Implement basic STS reconnection 2020-02-27 13:48:47 +02:00
Pavel Djundik 77279675ec
Merge pull request #3780 from thelounge/renovate/uuid-7.x
Update dependency uuid to v7.0.1
2020-02-27 13:48:32 +02:00
Pavel Djundik 2127153b73
Merge pull request #3782 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.7.0
2020-02-27 13:48:22 +02:00
Renovate Bot 66b6517855
Update dependency irc-framework to v4.7.0 2020-02-27 11:00:53 +00:00
Renovate Bot c62d3c2f15
Update dependency uuid to v7.0.1 2020-02-26 22:28:32 +00:00
Richard Lewis abd414beb9
Merge pull request #3781 from thelounge/xpaw/wave
Improve wav audio detection
2020-02-26 23:19:12 +02:00
Richard Lewis 58003e1f59
Merge pull request #3779 from thelounge/xpaw/ios-notifs-note
Add an explanation why push notifications are not supported on iOS
2020-02-26 23:18:44 +02:00
Pavel Djundik 63fd0def6c Improve wav audio file support 2020-02-26 10:07:40 +02:00
Pavel Djundik 8a515a8a70 Add an explanation why push notifications are not supported on iOS 2020-02-25 20:04:33 +02:00
Pavel Djundik e20b1a55c3
Merge pull request #3776 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.1.3
2020-02-25 10:44:54 +02:00
Pavel Djundik b48adc434d
Merge pull request #3774 from thelounge/renovate/sinon-9.x
Update dependency sinon to v9
2020-02-25 10:44:45 +02:00
Pavel Djundik f213875d48
Merge pull request #3743 from thelounge/renovate/got-10.x
Update dependency got to v10.6.0
2020-02-25 10:44:38 +02:00
Pavel Djundik 7401174523
Merge pull request #3763 from thelounge/renovate/eslint-plugin-vue-6.x
Update dependency eslint-plugin-vue to v6.2.1
2020-02-25 10:44:28 +02:00
Renovate Bot 641cd951cb
Update dependency sinon to v9 2020-02-25 08:25:23 +00:00
Renovate Bot b734a8b983
Update dependency got to v10.6.0 2020-02-25 08:24:58 +00:00
Renovate Bot a8ffe7768e
Update dependency file-type to v14.1.3 2020-02-25 08:24:45 +00:00
Renovate Bot 9500edc89f
Update dependency eslint-plugin-vue to v6.2.1 2020-02-25 08:24:34 +00:00
Pavel Djundik 381cfb7099
Merge pull request #3777 from thelounge/renovate/uuid-7.x
Update dependency uuid to v7
2020-02-25 10:23:38 +02:00
Pavel Djundik e0d5f4c2ff Change uuidv4 require 2020-02-24 15:35:15 +02:00
Renovate Bot 0134276f01
Update dependency uuid to v7 2020-02-24 13:27:25 +00:00
Pavel Djundik 258db10ea9
Merge pull request #3765 from thelounge/xpaw/showinactive-unread
Fix incorrectly updating unread counter for 'show in active' messages
2020-02-18 18:01:32 +02:00
Pavel Djundik 3ca9fd2e80 Unprefix setname cap 2020-02-18 14:07:03 +02:00
Pavel Djundik 9db1d0f7c8 Fix incorrectly updating unread counter for 'show in active' messages 2020-02-17 17:02:34 +02:00
Pavel Djundik 5a0e0b6718 Change sqlite parallelize to serialize when loading messages 2020-02-15 11:50:07 +02:00
Pavel Djundik 44de1dd03f
Merge pull request #3761 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.11
2020-02-15 11:45:46 +02:00
Renovate Bot 2cf2c6d0e6
Update dependency webpack-cli to v3.3.11 2020-02-15 09:30:49 +00:00
Pavel Djundik 94978b334c
Merge pull request #3757 from thelounge/renovate/husky-4.x
Update dependency husky to v4.2.3
2020-02-15 11:29:30 +02:00
Pavel Djundik 96099694d6
Merge pull request #3758 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.2.0
2020-02-15 11:29:23 +02:00
Pavel Djundik 3f0afed3c9
Merge pull request #3759 from thelounge/renovate/vue-monorepo
Update dependency vue-loader to v15.9.0
2020-02-15 11:29:14 +02:00
Pavel Djundik c6054c3f40
Merge pull request #3760 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.6
2020-02-15 11:29:04 +02:00
Renovate Bot 22e7217e06
Update dependency webpack to v4.41.6 2020-02-15 01:32:33 +00:00
Renovate Bot 1c13ff7922
Update dependency vue-loader to v15.9.0 2020-02-15 01:32:18 +00:00
Renovate Bot 6c9d6d04de
Update dependency stylelint to v13.2.0 2020-02-15 00:22:31 +00:00
Renovate Bot bf3f593004
Update dependency husky to v4.2.3 2020-02-15 00:22:15 +00:00
Pavel Djundik 8e25fa8a3b
Merge pull request #3755 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14.1.2
2020-02-14 14:54:13 +02:00
Pavel Djundik 4aec23a6fc
Merge pull request #3754 from thelounge/renovate/semver-7.x
Update dependency semver to v7.1.3
2020-02-14 14:54:06 +02:00
Pavel Djundik 7fdb70d451
Merge pull request #3753 from thelounge/xpaw/yarn-stdout
Wrap stdout parsing from yarn into try/catch
2020-02-14 14:52:01 +02:00
Renovate Bot d95f1fa5b6
Update dependency file-type to v14.1.2 2020-02-12 20:13:44 +00:00
Renovate Bot 989ecdb2f6
Update dependency semver to v7.1.3 2020-02-11 22:38:43 +00:00
Pavel Djundik 469fe577f2 Wrap stdout parsing from yarn into try/catch 2020-02-11 11:48:02 +02:00
Richard Lewis 1fb78d7218
Merge pull request #3594 from thelounge/richrd/jump-to
Jump to channel switcher
2020-02-10 19:56:04 +02:00
Richard Lewis 9e76fe2a76 Fix race condition and remove redundant computed properties. 2020-02-10 19:43:44 +02:00
Richard Lewis 054760d49f Add keybind to help window. 2020-02-10 19:43:44 +02:00
Richard Lewis f5884957a5 Fix CSS styles, scroll to selected channel and improve bindings.
Co-Authored-By: Pavel Djundik <xPaw@users.noreply.github.com>
2020-02-10 19:43:44 +02:00
Richard Lewis 606c62dc70 Move styles to component. 2020-02-10 19:04:34 +02:00
Richard Lewis 0b5cbceffd Implement jump to channel feature. 2020-02-10 19:04:35 +02:00
Pavel Djundik dbdf98537c
Merge pull request #3751 from thelounge/renovate/stylelint-config-standard-20.x
Update dependency stylelint-config-standard to v20
2020-02-10 16:45:57 +02:00
Richard Lewis f12a13916b
Merge pull request #3712 from thelounge/xpaw/fix-3302
Add support for webirc secure option
2020-02-10 16:42:56 +02:00
Richard Lewis fbf6f48d7a
Merge pull request #3744 from thelounge/xpaw/icon-purpose
Add icon purpose in webmanifest
2020-02-10 16:41:36 +02:00
Richard Lewis f7f92c5f39
Merge pull request #3752 from thelounge/xpaw/fix-ci-timeout
Fix increasing test timeout on github actions
2020-02-10 16:41:23 +02:00
Richard Lewis 86abe1e2df
Merge pull request #3735 from thelounge/emoji-v13
Add emojis 13.0
2020-02-10 16:36:24 +02:00
Richard Lewis 1bdeae2b76
Merge pull request #3730 from thelounge/xpaw/user-search-fixes
Small fixes to user list search
2020-02-10 16:34:41 +02:00
Richard Lewis f8642dd2a5
Merge pull request #3711 from thelounge/xpaw/server-notice-host
Use hostname from notice if available
2020-02-10 16:34:22 +02:00
Pavel Djundik 1b2894bf99 Fix increasing test timeout on github actions 2020-02-09 14:21:45 +02:00
Renovate Bot 61305cd27c
Update dependency stylelint-config-standard to v20 2020-02-09 10:48:15 +00:00
Pavel Djundik 0f44c51b00
Merge pull request #3750 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13.1.0
2020-02-09 12:47:10 +02:00
Renovate Bot d0697d39d7
Update dependency stylelint to v13.1.0 2020-02-08 20:33:49 +00:00
Pavel Djundik 0639fdb410
Merge pull request #3749 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.20
2020-02-08 11:21:20 +02:00
Pavel Djundik 705261cdb5 Merge pull request #3748 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.12.1
2020-02-08 11:21:12 +02:00
Renovate Bot b5a7bc6be6
Update dependency dayjs to v1.8.20 2020-02-08 00:29:04 +00:00
Renovate Bot 1ccd910e14
Update dependency @fortawesome/fontawesome-free to v5.12.1 2020-02-08 00:28:48 +00:00
Pavel Djundik 25b870fcd1 Add icon purpose in webmanifest 2020-02-06 23:31:34 +02:00
Pavel Djundik 4ca97bc955
Merge pull request #3742 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.22.0
2020-02-06 14:07:39 +02:00
Pavel Djundik 1b9040deed
Merge pull request #3739 from thelounge/renovate/file-type-14.x
Update dependency file-type to v14
2020-02-06 14:07:27 +02:00
Pavel Djundik 87c9abe9da Change minimumBytes in file-type 2020-02-06 12:41:43 +02:00
Renovate Bot 4d5f15b32e
Update dependency file-type to v14 2020-02-05 19:27:57 +00:00
Renovate Bot 342b97f68b
Update dependency yarn to v1.22.0 2020-02-05 19:16:16 +00:00
Pavel Djundik 6aabd9bacb Optimize user list updates for quit/part/kick events 2020-02-01 19:15:46 +02:00
Pavel Djundik 15100c853c
Merge pull request #3738 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.10.0
2020-02-01 19:06:29 +02:00
Pavel Djundik 55f3f9ef13
Merge pull request #3733 from thelounge/renovate/semver-7.x
Update dependency semver to v7.1.2
2020-02-01 19:06:15 +02:00
Pavel Djundik 77c2fc0ea7
Merge pull request #3737 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.8.4
2020-02-01 19:06:09 +02:00
Pavel Djundik 60b398c6d8
Merge pull request #3734 from thelounge/renovate/got-10.x
Update dependency got to v10.4.0
2020-02-01 19:06:01 +02:00
Renovate Bot 6bedf78019
Update dependency eslint-config-prettier to v6.10.0 2020-02-01 00:56:11 +00:00
Renovate Bot c17e0a0813
Update babel monorepo to v7.8.4 2020-02-01 00:55:55 +00:00
Pavel Djundik 6422136d50 Add emojis 13.0 2020-01-31 10:36:06 +02:00
Renovate Bot 6fcfcb6219
Update dependency got to v10.4.0 2020-01-31 07:39:54 +00:00
Renovate Bot 99eab4ddcb
Update dependency semver to v7.1.2 2020-01-31 01:31:56 +00:00
Pavel Djundik 7afafdd25e Change mouseover to mouseenter 2020-01-27 13:27:52 +02:00
Pavel Djundik 66cdec0075 Fix right padding on user list search 2020-01-27 13:27:52 +02:00
Pavel Djundik 8b71e6a18e
Merge pull request #3717 from thelounge/xpaw/fix-username
Undo username pattern
2020-01-27 11:06:17 +02:00
Pavel Djundik 803fe930f8
Merge pull request #3718 from thelounge/xpaw/fix-3716
Fix "$1" when completing nicks outside of textcomplete menu
2020-01-27 11:06:10 +02:00
Pavel Djundik 34436f9a72
Merge pull request #3723 from thelounge/xpaw/context-position
Fix DOMRect coordinates in Safari
2020-01-27 11:06:02 +02:00
Pavel Djundik 965b50a341
Merge pull request #3728 from thelounge/xpaw/active-buffer
Increase buffer size for active and scrolled down channels
2020-01-27 11:05:55 +02:00
Pavel Djundik e4c01f7c2f
Merge pull request #3727 from thelounge/renovate/sinon-8.x
Update dependency sinon to v8.1.1
2020-01-27 11:05:30 +02:00
Pavel Djundik d8682126f3
Merge pull request #3725 from thelounge/renovate/mousetrap-1.x
Update dependency mousetrap to v1.6.5
2020-01-27 11:05:23 +02:00
Pavel Djundik 2f3f2c4d90
Merge pull request #3724 from thelounge/renovate/husky-4.x
Update dependency husky to v4.2.1
2020-01-27 11:05:14 +02:00
Pavel Djundik 6c20a59993
Merge pull request #3722 from thelounge/renovate/got-10.x
Update dependency got to v10.3.0
2020-01-27 11:05:07 +02:00
Pavel Djundik f92a442330 Increase buffer size for active and scrolled down channels 2020-01-25 11:00:55 +02:00
Renovate Bot d607111c86
Update dependency sinon to v8.1.1 2020-01-25 01:50:08 +00:00
Renovate Bot 245b44ab02
Update dependency mousetrap to v1.6.5 2020-01-25 00:51:35 +00:00
Renovate Bot 62171e13b3
Update dependency husky to v4.2.1 2020-01-25 00:51:19 +00:00
Renovate Bot b176d26302
Update dependency got to v10.3.0 2020-01-24 14:56:21 +00:00
Pavel Djundik 10cba8d9b0 Fix DOMRect coordinates in Safari 2020-01-24 16:55:29 +02:00
Pavel Djundik b890e7e976
Merge pull request #3721 from thelounge/xpaw/fix-3690
Fix escape key handling
2020-01-24 16:08:30 +02:00
Pavel Djundik bbe6b34371 Unfocus chat input when pressing escape 2020-01-24 15:50:01 +02:00
Pavel Djundik 2451f222e8 Bind esc key handler once
Fixes #3690
2020-01-24 15:50:01 +02:00
Pavel Djundik a9bad593b0
Merge pull request #3720 from thelounge/xpaw/fix-3719
Ignore Alt+<letter> keybinds when focused in chat input
2020-01-24 15:49:04 +02:00
Pavel Djundik 63540e102b Ignore Alt+<letter> keybinds when focused in chat input
Fixes #3719
2020-01-23 22:50:37 +02:00
Pavel Djundik 4e6bd9e943 Fix "$1" when completing nicks outside of textcomplete menu
Fixes #3716
2020-01-23 22:25:34 +02:00
Pavel Djundik 0dd0d8fb12 Undo username pattern 2020-01-23 22:14:30 +02:00
Pavel Djundik e8ba4f4fb9
Merge pull request #3658 from thelounge/xpaw/version-notify
Display icon when update is available, check on server start
2020-01-22 10:29:18 +02:00
Pavel Djundik 5b68fb5054
Merge pull request #3715 from thelounge/xpaw/nick-pattern
Disallow some invalid characters in nicknames and usernames
2020-01-22 10:28:51 +02:00
Pavel Djundik 8b04979eac
Merge pull request #3676 from thelounge/xpaw/csp
Remove `child-src` from CSP, add `base-uri 'none'`
2020-01-22 10:28:44 +02:00
Pavel Djundik 510b859df9
Merge pull request #3682 from thelounge/xpaw/fix-undefined-theme
Fix settings update when unknown theme is stored
2020-01-22 10:28:28 +02:00
Pavel Djundik f1a11d3a0b
Merge pull request #3696 from thelounge/xpaw/fix-2960
Trigger autocompletion only after whitespace
2020-01-22 10:28:11 +02:00
Pavel Djundik 08f77528d9
Merge pull request #3703 from thelounge/xpaw/fix-3699
Open last channel in the list when creating a network
2020-01-22 10:28:01 +02:00
Pavel Djundik 184936fa38
Merge pull request #3713 from thelounge/renovate/file-type-13.x
Update dependency file-type to v13.1.2
2020-01-22 10:27:40 +02:00
Pavel Djundik 4fbca2b219
Merge pull request #3706 from thelounge/renovate/husky-4.x
Update dependency husky to v4.2.0
2020-01-22 10:27:32 +02:00
Pavel Djundik 309b9027be
Merge pull request #3707 from thelounge/renovate/sinon-8.x
Update dependency sinon to v8.1.0
2020-01-22 10:27:24 +02:00
Pavel Djundik b025647ad9
Merge pull request #3705 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.8.3
2020-01-22 10:27:15 +02:00
Pavel Djundik cdd28ba2cb
Merge pull request #3708 from thelounge/renovate/vue-monorepo
Update vue monorepo
2020-01-22 10:27:07 +02:00
Renovate Bot 5b7abd6e02
Update dependency file-type to v13.1.2 2020-01-22 04:59:46 +00:00
Renovate Bot aa0df1d6b4
Update dependency husky to v4.2.0 2020-01-21 22:11:58 +00:00
Pavel Djundik 1a7135c5e0 Clean up strings on server 2020-01-21 15:47:59 +02:00
Pavel Djundik de6d6906f8 Disallow some invalid characters in nicknames and usernames
@, !, : and whitespace are disallowed due to being part of the protocol/hostmask
2020-01-21 15:44:48 +02:00
Renovate Bot 5657d9c221
Update vue monorepo 2020-01-20 14:30:54 +00:00
Pavel Djundik 26bf0850d7 Stub checkForUpdates in tests 2020-01-19 01:14:52 +02:00
Pavel Djundik 36f4284e07 Add support for webirc secure option
Fixes #3302
2020-01-19 00:56:07 +02:00
Pavel Djundik 4d3fd1c8f2 Use hostname from notice if available 2020-01-19 00:53:03 +02:00
Renovate Bot b9e7e401ca
Update dependency sinon to v8.1.0 2020-01-18 01:31:45 +00:00
Renovate Bot 6b9d2baf97
Update babel monorepo to v7.8.3 2020-01-18 00:29:03 +00:00
Pavel Djundik d5ac13f91c Notify all connected clients when new version is available 2020-01-17 12:17:37 +02:00
Pavel Djundik 3f928d8742 Check for updates every day 2020-01-17 12:09:42 +02:00
Pavel Djundik efc421c0a6 Display icon in footer when an update is available 2020-01-17 12:03:16 +02:00
Pavel Djundik 0bdac63953 Check for TL updates on server start 2020-01-17 12:03:14 +02:00
Pavel Djundik 304e8bf5b0
Merge pull request #3704 from thelounge/renovate/uuid-3.x
Update dependency uuid to v3.4.0
2020-01-17 11:47:41 +02:00
Pavel Djundik fd04a528f6
Merge pull request #3698 from thelounge/renovate/file-type-13.x
Update dependency file-type to v13.1.0
2020-01-17 11:47:32 +02:00
Renovate Bot 8842242fb4
Update dependency uuid to v3.4.0 2020-01-16 21:30:47 +00:00
Pavel Djundik 6dac3d122a Open last channel in the list when creating a network
Fixes #3699
2020-01-16 18:07:16 +02:00
Renovate Bot bcd7e7cfff
Update dependency file-type to v13.1.0 2020-01-15 03:27:23 +00:00
Pavel Djundik d7513b43dc
Merge pull request #3686 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.19
2020-01-13 12:46:15 +02:00
Pavel Djundik ba4ec355e1
Merge pull request #3693 from thelounge/renovate/babel-monorepo
Update babel monorepo
2020-01-13 12:46:06 +02:00
Pavel Djundik fe17324fef
Merge pull request #3694 from thelounge/renovate/stylelint-13.x
Update dependency stylelint to v13
2020-01-13 12:45:55 +02:00
Renovate Bot 7dfbf215db
Update babel monorepo 2020-01-12 22:57:21 +00:00
Renovate Bot 4bfd599393
Update dependency stylelint to v13 2020-01-12 14:32:28 +00:00
Renovate Bot 10e31a1ce0
Update dependency dayjs to v1.8.19 2020-01-12 14:32:06 +00:00
Pavel Djundik 46f9f6a6a3
Merge pull request #3689 from thelounge/renovate/got-10.x
Update dependency got to v10.2.2
2020-01-12 16:31:10 +02:00
Pavel Djundik fef4b8b93a
Merge pull request #3688 from thelounge/renovate/husky-4.x
Update dependency husky to v4
2020-01-12 16:30:50 +02:00
Pavel Djundik 8a2631f503
Merge pull request #3687 from thelounge/renovate/sinon-8.x
Update dependency sinon to v8.0.4
2020-01-12 16:30:43 +02:00
Pavel Djundik 858fe0185a
Merge pull request #3685 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.4.2
2020-01-12 16:30:36 +02:00
Pavel Djundik f1e6ada2d0
Merge pull request #3683 from thelounge/renovate/file-type-13.x
Update dependency file-type to v13.0.3
2020-01-12 16:30:26 +02:00
Pavel Djundik 4682a83827 Trigger autocompletion only after whitespace
Fixes #2960
Fixes #3695
2020-01-12 16:27:29 +02:00
Renovate Bot e83a1ac7d8
Update dependency husky to v4 2020-01-12 05:54:05 +00:00
Renovate Bot f0967ddf5f
Update dependency got to v10.2.2 2020-01-11 15:39:07 +00:00
Renovate Bot 144c4b7ce9
Update dependency sinon to v8.0.4 2020-01-11 01:40:40 +00:00
Renovate Bot 69bac8f517
Update dependency css-loader to v3.4.2 2020-01-11 00:32:30 +00:00
Renovate Bot f1a0ccbe13
Update dependency file-type to v13.0.3 2020-01-10 18:27:18 +00:00
Pavel Djundik fa57814678
Merge pull request #3684 from thelounge/richrd/style-loading
Load styles from vue components, fix hot reload
2020-01-10 20:03:24 +02:00
Pavel Djundik fbdd888c3d Disable SW caching in dev build 2020-01-09 22:40:10 +02:00
Pavel Djundik 2e49175840
Merge pull request #3681 from thelounge/xpaw/remove-vue-filter
Remove the only use of Vue.filter
2020-01-09 21:14:10 +02:00
Pavel Djundik 6164862af5
Merge pull request #3678 from thelounge/renovate/file-type-13.x
Update dependency file-type to v13
2020-01-08 16:22:37 +02:00
Pavel Djundik b5f5775cfc
Merge pull request #3665 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.4.1
2020-01-08 16:22:30 +02:00
Pavel Djundik 41e3762e57 Update file-type api usage 2020-01-08 16:11:30 +02:00
Renovate Bot 299a9324f6
Update dependency file-type to v13 2020-01-08 14:06:37 +00:00
Renovate Bot df5cb3081e
Update dependency css-loader to v3.4.1 2020-01-08 14:06:24 +00:00
Pavel Djundik 85bc4df1e2
Merge pull request #3674 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.26
2020-01-08 16:04:57 +02:00
Pavel Djundik 14f6032316
Merge pull request #3675 from thelounge/renovate/commander-4.x
Update dependency commander to v4.1.0
2020-01-08 16:04:48 +02:00
Richard Lewis 23ac0fef32 Load styles from vue components, fix hot reload
Fixes #3615
2020-01-08 16:02:09 +02:00
Pavel Djundik a2349f96cb Fix settings update when unknown theme is stored 2020-01-08 16:00:47 +02:00
Pavel Djundik 1c190d1adb Remove the only use of Vue.filter 2020-01-08 11:11:44 +02:00
Renovate Bot 5b34395587
Update dependency commander to v4.1.0 2020-01-06 09:20:40 +00:00
Renovate Bot 2266350f23
Update dependency mime-types to v2.1.26 2020-01-06 08:47:58 +00:00
Pavel Djundik 79cbe63067
Merge pull request #3670 from thelounge/xpaw/show-in-active
Show an icon for "show in active" messages
2020-01-06 10:39:38 +02:00
Pavel Djundik e73575a342 Remove showInActive if active network differs 2020-01-05 19:44:03 +02:00
Pavel Djundik 5c64eaf41e Show an icon for "show in active" messages 2020-01-05 19:44:03 +02:00
Pavel Djundik b93cae2e01
Merge pull request #3647 from thelounge/xpaw/mode-string
Display the original sets mode string and make nicks clickable
2020-01-04 15:22:27 +02:00
Pavel Djundik 00cdb6e808
Merge pull request #3663 from thelounge/xpaw/cyclical-dep
Remove cyclical dependency in router<->webpush
2020-01-04 15:20:23 +02:00
Pavel Djundik e0cd9cbcdf
Merge pull request #3662 from thelounge/xpaw/fix-ref
Check that usernameInput ref exists
2020-01-04 15:20:16 +02:00
Pavel Djundik 5fe0710724 Remove cyclical dependency in router<->webpush 2020-01-03 20:02:22 +02:00
Pavel Djundik c4ddf6d93e Check that usernameInput ref exists 2020-01-03 19:51:38 +02:00
Pavel Djundik 7b507e5248
Merge pull request #3660 from thelounge/xpaw/keybinds
Add keybinds to toggle sidebar, user list, and networks
2020-01-03 16:59:41 +02:00
Pavel Djundik 1870145674 Add keybinds to expand and collapse networks
Fixes #3523
2020-01-02 22:45:21 +02:00
Pavel Djundik ff4fd0a13d Add keyboard shortcuts to toggle server/user list
Fixes #2345
2020-01-02 22:24:20 +02:00
Pavel Djundik 98aef9b6ad
Merge pull request #3659 from thelounge/xpaw/footer-active
Fix active styles on footer buttons
2020-01-02 22:02:03 +02:00
Pavel Djundik bf0a8c4e4d Fix active styles on footer buttons 2020-01-02 12:57:36 +02:00
Pavel Djundik ba3e0dae79
Merge pull request #3645 from thelounge/xpaw/default-port
Switch default ports when toggling TLS
2020-01-02 10:46:38 +02:00
Pavel Djundik 5c8c854d18
Merge pull request #3651 from thelounge/xpaw/install-readme
Link to official docs for stable releases
2020-01-02 10:46:26 +02:00
Pavel Djundik 5921bb1ee1
Merge pull request #3650 from thelounge/xpaw/webpack-hints
Turn off webpack hints
2020-01-02 10:46:17 +02:00
Pavel Djundik c6f77f0668
Merge pull request #3656 from thelounge/xpaw/self-ctcp
Ignore echoed ctcp requests that aren't targeted at us
2020-01-02 10:46:03 +02:00
Pavel Djundik 27e08baf25
Merge pull request #3653 from thelounge/xpaw/utf8-mistake
Fix passing utf-8 to readFileSync
2020-01-02 10:45:52 +02:00
Pavel Djundik 05c69dfb6d
Merge pull request #3654 from thelounge/xpaw/fix-ua
Fix url in useragent when fetching releases from github
2020-01-02 10:45:44 +02:00
Pavel Djundik e9db7e5f82
Merge pull request #3657 from thelounge/renovate/got-10.x
Update dependency got to v10.2.1
2020-01-02 10:45:34 +02:00
Renovate Bot 8ba286a308
Update dependency got to v10.2.1 2020-01-01 18:33:56 +00:00
Pavel Djundik 7ef88523ca Ignore echoed ctcp requests that aren't targeted at us
Fixes #3655
2020-01-01 18:06:42 +02:00
Pavel Djundik 42ee21bfb8 Fix url in useragent when fetching releases from github 2020-01-01 01:15:45 +02:00
Pavel Djundik 0c246f0bbe Fix passing utf-8 to readFileSync 2020-01-01 01:11:04 +02:00
Pavel Djundik 84107ab516
Merge pull request #3644 from thelounge/renovate/nyc-15.x
Update dependency nyc to v15
2019-12-31 21:47:39 +02:00
Pavel Djundik 66302d25e0
Merge pull request #3640 from thelounge/renovate/eslint-plugin-vue-6.x
Update dependency eslint-plugin-vue to v6.1.2
2019-12-31 21:47:32 +02:00
Pavel Djundik 093ef2ff55
Merge pull request #3628 from thelounge/xpaw/prefetch-error
Collapse prefetch errors by default, and correctly track user toggle
2019-12-31 21:31:35 +02:00
Pavel Djundik a8e7cfd2cd
Merge pull request #3649 from Mikaela/network-command-helptext
NetworkForm.vue: clarify autoconnect command help text
2019-12-31 21:31:27 +02:00
Renovate Bot d288cbb625
Update dependency nyc to v15 2019-12-31 19:31:09 +00:00
Renovate Bot 242b068cdd
Update dependency eslint-plugin-vue to v6.1.2 2019-12-31 19:30:57 +00:00
Pavel Djundik 0a9157b935
Merge pull request #3643 from thelounge/renovate/babel-plugin-istanbul-6.x
Update dependency babel-plugin-istanbul to v6
2019-12-31 21:30:06 +02:00
Pavel Djundik 34939d9961
Merge pull request #3642 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.5
2019-12-31 21:29:57 +02:00
Pavel Djundik 6109bf3faa
Merge pull request #3624 from thelounge/renovate/sinon-8.x
Update dependency sinon to v8
2019-12-31 21:29:49 +02:00
Pavel Djundik be7f2c3c84
Merge pull request #3641 from thelounge/renovate/stylelint-12.x
Update dependency stylelint to v12.0.1
2019-12-31 21:29:29 +02:00
Pavel Djundik b52ae5414e
Merge pull request #3639 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.9.0
2019-12-31 21:29:20 +02:00
Pavel Djundik 53934bcbca
Merge pull request #3630 from thelounge/renovate/got-10.x
Update dependency got to v10.2.0
2019-12-31 21:29:04 +02:00
Pavel Djundik 9e84328748
Link to official docs for stable releases 2019-12-31 18:51:49 +02:00
Renovate Bot 9d3a5d4d86
Update dependency sinon to v8 2019-12-31 16:12:48 +00:00
Renovate Bot 29d188f927
Update dependency babel-plugin-istanbul to v6 2019-12-31 16:12:27 +00:00
Renovate Bot 6301a0012a
Update dependency webpack to v4.41.5 2019-12-31 16:12:16 +00:00
Renovate Bot 9568316cd0
Update dependency stylelint to v12.0.1 2019-12-31 16:12:06 +00:00
Renovate Bot 1ce6821585
Update dependency got to v10.2.0 2019-12-31 16:11:55 +00:00
Renovate Bot f056cce641
Update dependency eslint-config-prettier to v6.9.0 2019-12-31 16:11:33 +00:00
Pavel Djundik 5a3f17b647 v4.0.0 2019-12-31 18:10:30 +02:00
Pavel Djundik af1da708a3
Merge pull request #3625 from thelounge/changelog/v4.0.0
Add changelog for v4.0.0
2019-12-31 18:09:25 +02:00
Pavel Djundik 08871ef75a Update yarn.lock 2019-12-31 18:02:40 +02:00
Pavel Djundik 78bf87f29c Add changelog for v4.0.0 2019-12-31 18:02:26 +02:00
Pavel Djundik 8d17bbd6a2
Merge pull request #3632 from thelounge/xpaw/upgrade-cmd-check
Check if there are any packages installed in upgrade command
2019-12-31 17:55:38 +02:00
Pavel Djundik b1f5ba87cf
Merge pull request #3633 from thelounge/xpaw/viewer-position
Restrict image viewer bounds while moving
2019-12-30 19:29:43 +02:00
Pavel Djundik 280018e052
Merge pull request #3638 from thelounge/xpaw/control-space
Replace control codes with a space
2019-12-30 19:29:34 +02:00
Pavel Djundik 99175bef82 Check if there are any packages installed in upgrade command 2019-12-30 19:28:28 +02:00
Pavel Djundik 6e0ab062c5 Turn off webpack hints 2019-12-30 19:14:15 +02:00
Mikaela Suomalainen 17588560e6
NetworkForm.vue: clarify autoconnect command help text 2019-12-30 18:39:56 +02:00
Pavel Djundik 813b49d7b1 Make nicks in sets mode clickable 2019-12-30 12:10:21 +02:00
Pavel Djundik 30595ed23f Display the original sets mode string
Fixes #675
2019-12-30 12:06:54 +02:00
Pavel Djundik c055a07f45 Switch default ports when toggling TLS 2019-12-28 23:08:46 +02:00
Pavel Djundik a12a24adbe Replace control codes with a space 2019-12-27 20:39:28 +02:00
Pavel Djundik 56cc6d0b68
Merge pull request #3637 from thelounge/xpaw/node-ver
Lower node version to 10.15
2019-12-26 22:36:22 +02:00
Pavel Djundik e4a6aa3160
Lower node version to 10.15 2019-12-26 20:59:25 +02:00
Pavel Djundik 10932abb87
Merge pull request #3635 from thelounge/xpaw/webkit-tap
Set `-webkit-tap-highlight-color` to `transparent`
2019-12-26 19:30:52 +02:00
Pavel Djundik b18cb15f7d
Set -webkit-tap-highlight-color to transparent 2019-12-26 13:01:37 +02:00
Pavel Djundik dbfa5c5746 Restrict image viewer bounds while moving 2019-12-24 18:36:12 +02:00
Pavel Djundik 55e5c69958
Merge pull request #3627 from thelounge/xpaw/connect-after-defaults
Create networks after setting user defaults
2019-12-23 16:05:32 +02:00
Pavel Djundik d2932ccea8 Correctly track user toggle of previews 2019-12-23 12:26:57 +02:00
Pavel Djundik 769585e72d Collapse prefetch errors by default 2019-12-23 12:15:23 +02:00
Pavel Djundik fe031c8b12 Connect networks after setting user defaults 2019-12-23 10:27:12 +02:00
Pavel Djundik 27986f5811 Remove child-src from CSP, add base-uri none 2019-12-22 21:24:46 +02:00
Pavel Djundik 8696f03e8d v4.0.0-rc.1 2019-12-21 12:13:36 +02:00
Pavel Djundik d79b6e6c2f
Add changelog entry for v4.0.0-rc.1 2019-12-21 12:12:55 +02:00
Pavel Djundik 6c0fc8dbb4 Update yarn.lock 2019-12-21 12:12:36 +02:00
Pavel Djundik b808c89322
Merge pull request #3619 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.8.0
2019-12-21 11:56:44 +02:00
Pavel Djundik 7effbd35a7
Merge pull request #3620 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.9.0
2019-12-21 11:56:38 +02:00
Pavel Djundik 2a02f96017
Merge pull request #3618 from thelounge/renovate/dayjs-1.x
Update dependency dayjs to v1.8.18
2019-12-21 11:56:32 +02:00
Renovate Bot 40ea6e85ce
Update dependency mini-css-extract-plugin to v0.9.0 2019-12-21 09:28:05 +00:00
Renovate Bot a5b9773eac
Update dependency eslint to v6.8.0 2019-12-21 09:27:54 +00:00
Renovate Bot 92b2f6220d
Update dependency dayjs to v1.8.18 2019-12-21 09:27:42 +00:00
Pavel Djundik 5db6714718
Merge pull request #3623 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.4
2019-12-21 11:26:40 +02:00
Pavel Djundik 5f7f56d8ef
Merge pull request #3622 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.8.3
2019-12-21 11:26:33 +02:00
Pavel Djundik 0f90f6b7c2
Merge pull request #3621 from thelounge/renovate/textcomplete-0.x
Update dependency textcomplete to v0.18.1
2019-12-21 11:26:26 +02:00
Pavel Djundik 8f2eebf3e4
Merge pull request #3617 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.4.0
2019-12-21 11:26:20 +02:00
Pavel Djundik c71c9135ab
Merge pull request #3616 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.7.7
2019-12-21 11:26:13 +02:00
Renovate Bot e1e8dae02b
Update dependency webpack to v4.41.4 2019-12-21 03:31:01 +00:00
Renovate Bot fd9ed3335f
Update dependency vue-loader to v15.8.3 2019-12-21 03:30:46 +00:00
Renovate Bot c7338e9e11
Update dependency textcomplete to v0.18.1 2019-12-21 02:34:14 +00:00
Renovate Bot 44f25324ff
Update dependency css-loader to v3.4.0 2019-12-21 00:40:25 +00:00
Renovate Bot e9458f0a65
Update babel monorepo to v7.7.7 2019-12-21 00:40:11 +00:00
Pavel Djundik 146b6d02f4
Merge pull request #3612 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.4.2
2019-12-20 12:03:32 +02:00
Pavel Djundik 67aba10e34
Merge pull request #3611 from thelounge/renovate/ua-parser-js-0.x
Update dependency ua-parser-js to v0.7.21
2019-12-20 12:03:23 +02:00
Pavel Djundik 0ac698e0bb
Merge pull request #3614 from thelounge/xpaw/condense-tooltip
Update status messages tooltip
2019-12-20 12:03:14 +02:00
Pavel Djundik 25b65b39db
Merge pull request #3613 from thelounge/richrd/fix-lobby-draft-icon
Don't show draft icon on lobbies.
2019-12-20 12:00:29 +02:00
Pavel Djundik 7c5f4c404d Update status messages tooltip 2019-12-20 11:59:26 +02:00
Richard Lewis 18bfd32704 Don't show draft icon on lobbies. 2019-12-20 09:55:49 +00:00
Renovate Bot 74e8c7e51c
Update dependency file-type to v12.4.2 2019-12-20 00:31:02 +00:00
Renovate Bot c12e7bcebb
Update dependency ua-parser-js to v0.7.21 2019-12-19 18:17:50 +00:00
Pavel Djundik 356a896fe2
Merge pull request #3603 from thelounge/xpaw/condensed-more
Send 100 actual messages when requesting history with hidden or condensed status messages
2019-12-19 17:32:41 +02:00
Pavel Djundik bc6017aed7
Merge pull request #3534 from thelounge/richrd/issue-659-previous-source
Add `previous-source` class to messages with same sender
2019-12-19 17:32:34 +02:00
Pavel Djundik 126bf1794e
Merge pull request #3610 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.4.1
2019-12-19 17:32:27 +02:00
Richard Lewis 7a8bb0376c Add previous-source class to messages when previous message has same sender. 2019-12-19 15:04:31 +00:00
Renovate Bot 03dd00284c
Update dependency file-type to v12.4.1 2019-12-19 14:38:07 +00:00
Pavel Djundik 749e7f4469
Merge pull request #3609 from thelounge/xpaw/topic-edit
Remove querySelector in topic edit, fix save button style
2019-12-19 15:26:59 +02:00
Pavel Djundik 7a350ac69a
Merge pull request #3602 from thelounge/xpaw/ua
Pretend to be facebook and twitter bots in link prefetcher
2019-12-19 15:25:39 +02:00
Pavel Djundik c04beb8b08
Merge pull request #3606 from thelounge/xpaw/text-plain-preview
Add preview for text/plain urls
2019-12-19 15:25:22 +02:00
Pavel Djundik f1eee6c9b2
Merge pull request #3608 from thelounge/richrd/channel-list-item-classes
Relocate not-secure and not-connected classes and make sure channel exists in jumpToChannel
2019-12-19 15:25:15 +02:00
Richard Lewis d2f0590c73 Fix class targeting 2019-12-19 13:22:04 +00:00
Pavel Djundik 72a954b865 Add preview for text/plain urls 2019-12-19 15:12:02 +02:00
Pavel Djundik 60ca8850d9 Focus topic edit input by using $refs 2019-12-19 15:06:33 +02:00
Pavel Djundik 456cdb2f54 Fix save button style in topic edit 2019-12-19 15:05:49 +02:00
Richard Lewis d9f8f45169 Make sure channel exists. 2019-12-19 13:02:21 +00:00
Richard Lewis 8cb49ae56a Relocate not-secure and not-connected classes. 2019-12-19 13:00:24 +00:00
Pavel Djundik b16d023657
Merge pull request #3589 from thelounge/xpaw/user-fs
Optimize user file updates
2019-12-19 14:58:37 +02:00
Pavel Djundik cd6821a196
Merge pull request #3604 from thelounge/xpaw/beforeunload
Fix beforeunload not working
2019-12-19 14:57:44 +02:00
Pavel Djundik 117dd0faed
Merge pull request #3601 from thelounge/renovate/semver-7.x
Update dependency semver to v7.1.1
2019-12-19 14:50:27 +02:00
Pavel Djundik 0ee52e47e4
Merge pull request #3605 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.6.0
2019-12-19 14:50:19 +02:00
Renovate Bot 5da8d089c3
Update dependency semver to v7.1.1 2019-12-19 12:45:14 +00:00
Renovate Bot 6cc2471f4e
Update dependency irc-framework to v4.6.0 2019-12-19 12:45:00 +00:00
Pavel Djundik a414563eae
Merge pull request #3607 from thelounge/renovate/got-10.x
Update dependency got to v10.1.0
2019-12-19 14:44:28 +02:00
Renovate Bot 5611f98a4e
Update dependency got to v10.1.0 2019-12-19 12:33:05 +00:00
Pavel Djundik 03d5fab794 Fix beforeunload not working 2019-12-18 11:28:39 +02:00
Pavel Djundik 0d7b980f90 Remove unnecessary client.sockets ref 2019-12-18 11:22:11 +02:00
Pavel Djundik 6091514630 Do not write to disk if the json data hasn't actually changed 2019-12-18 11:06:20 +02:00
Pavel Djundik 2365c9489e Enforce user file types at runtime 2019-12-18 10:47:09 +02:00
Pavel Djundik f269ac3bee Update user file without reading, debounce all saves 2019-12-18 10:47:08 +02:00
Pavel Djundik def56dc694 Update user file once on auth 2019-12-18 10:47:08 +02:00
Pavel Djundik c1920eb566 When updating user file, write to temp file first 2019-12-18 10:47:07 +02:00
Pavel Djundik a9f97ddf22 Send 100 actual messages when requesting history with hidden or condensed status messages 2019-12-18 00:14:36 +02:00
Pavel Djundik 4a345eb6d9 Convert constants.js to commonjs 2019-12-18 00:14:36 +02:00
Pavel Djundik c108c20c91 Pretend to be facebook and twitter bots 2019-12-17 22:35:15 +02:00
Pavel Djundik 86341f063c
Merge pull request #3596 from thelounge/xpaw/friendly-size
Use `friendlysize` helper consistently
2019-12-17 15:43:58 +02:00
Pavel Djundik f1d806a80f
Merge pull request #3600 from thelounge/xpaw/condensed-set
Use Set() for condensed types
2019-12-17 15:43:50 +02:00
Pavel Djundik e2c74a1014
Merge pull request #3598 from thelounge/renovate/semver-7.x
Update dependency semver to v7.1.0
2019-12-17 15:43:41 +02:00
Renovate Bot 0ba11d8a0e
Update dependency semver to v7.1.0 2019-12-17 12:21:53 +00:00
Pavel Djundik c6b568c165
Merge pull request #3599 from thelounge/xpaw/fix-keys
Fix page and arrow keys not working correctly
2019-12-17 14:09:59 +02:00
Pavel Djundik f3b383ce63 Use Set() for condensed types 2019-12-17 12:48:12 +02:00
Pavel Djundik 408eb75a88 Fix page and arrow keys not working correctly 2019-12-17 11:21:22 +02:00
Pavel Djundik f2bf1fa90a Use friendlysize helper consistently
Co-Authored-By: fnutt <fnutt@users.noreply.github.com>
2019-12-16 22:00:35 +02:00
Pavel Djundik f0b0c53536
Merge pull request #3597 from bepvte/fix-ipv6
Fix format of IPv6 URI
2019-12-16 20:33:22 +02:00
Paul Oppenheimer dcf08ecac6 Fix format of IPv6 URI 2019-12-16 12:24:30 -05:00
Pavel Djundik 8fb8b94650
Merge pull request #3593 from thelounge/xpaw/fix-keepnick
Fix keep nick setting nick to undefined on socket close
2019-12-16 11:39:33 +02:00
Pavel Djundik a8dd85d21e Fix keep nick setting nick to undefined on socket close 2019-12-16 10:56:25 +02:00
Pavel Djundik 6a920fd4eb
Merge pull request #3587 from thelounge/renovate/ldapjs-2.x
Update dependency ldapjs to v2.0.0-pre.5
2019-12-15 19:11:41 +02:00
Pavel Djundik 61369b3e5a
Merge pull request #3586 from thelounge/xpaw/msg-data-type
Use data-type attribute on .msg
2019-12-15 19:10:30 +02:00
Pavel Djundik 98708a2ebd
Merge pull request #3588 from thelounge/xpaw/hide-settings
Hide awaymessage/highlights settings in public mode
2019-12-15 19:10:21 +02:00
Pavel Djundik 5b55ac7d02
Merge pull request #3590 from thelounge/xpaw/fix-sync
Fix synchronizing settings on page load
2019-12-15 19:10:15 +02:00
Pavel Djundik 52ce1aebbd
Merge pull request #3591 from thelounge/xpaw/fix-width
Fix sign in being full width
2019-12-15 19:10:07 +02:00
Pavel Djundik dc93bc0f1e
Merge pull request #3592 from thelounge/xpaw/fix-image-blur
Round down image transform in image viewer to fix blurry images
2019-12-15 19:10:00 +02:00
Pavel Djundik 935b193a64 Round down image transform in image viewer to fix blurry images 2019-12-15 18:13:52 +02:00
Pavel Djundik 5b4a5fd4b1 Fix sign in being full width 2019-12-15 18:06:20 +02:00
Pavel Djundik 309be48906 Fix synchronizing settings on page load 2019-12-15 18:03:13 +02:00
Pavel Djundik 317f4fb991 Hide awaymessage/highlights settings in public mode 2019-12-15 17:31:03 +02:00
Renovate Bot f806c32c49
Update dependency ldapjs to v2.0.0-pre.5 2019-12-15 14:27:28 +00:00
Pavel Djundik 6731e584da Use data-type on .msg 2019-12-15 13:46:43 +02:00
Pavel Djundik 58a558247b
Merge pull request #3454 from Zarthus/gh_labels
Automatically apply GitHub labels on issue creation
2019-12-15 13:29:03 +02:00
Pavel Djundik 578f5fa1c9 v4.0.0-pre.1 2019-12-14 22:49:12 +02:00
Pavel Djundik ebbe798c16
Add changelog entry for v4.0.0-pre.1 2019-12-14 22:48:44 +02:00
Pavel Djundik 0486f43f9f
Merge pull request #3557 from thelounge/xpaw/premature-close
Fix "premature close" on link previews
2019-12-14 22:45:49 +02:00
Pavel Djundik bfffc8d0df
Merge pull request #3584 from thelounge/renovate/semver-7.x
Update dependency semver to v7
2019-12-14 22:37:59 +02:00
Pavel Djundik ead372e6e6
Merge pull request #3574 from thelounge/xpaw/normalize.css
Remove bootstrap.css, use flexbox
2019-12-14 22:37:37 +02:00
Renovate Bot a59af9b941
Update dependency semver to v7 2019-12-14 20:34:20 +00:00
Pavel Djundik 05af830a15 Remove experimental warning from sync 2019-12-14 22:30:34 +02:00
Pavel Djundik f00c71c81b Use v-show to hide load more button 2019-12-14 22:30:34 +02:00
Pavel Djundik 1495ce3772 Remove bootstrap classes from settings 2019-12-14 22:30:34 +02:00
Pavel Djundik 0e9fdf9e08 Remove float from changelog and version link 2019-12-14 22:29:50 +02:00
Pavel Djundik b592657f7d Style connect window without bootstrap 2019-12-14 22:29:50 +02:00
Pavel Djundik 0e8b9fdd5c Use normalize.css and remove a lot of unused styles from bootstrap.css 2019-12-14 22:29:49 +02:00
Pavel Djundik c23c786c58
Merge pull request #3585 from thelounge/xpaw/fix-preview-settings
Fix link previews settings not being visible
2019-12-14 22:11:08 +02:00
Pavel Djundik e8ed36bfd6 Fix link previews settings not being visible 2019-12-14 21:53:13 +02:00
Pavel Djundik 6f7444dfe3
Merge pull request #3577 from thelounge/xpaw/thumb-assign
Assign `preview.thumb` only after it is processed
2019-12-14 21:34:07 +02:00
Pavel Djundik d99b6d0a17
Merge pull request #3579 from thelounge/xpaw/watch-packages
Automatically load new packages (fs.watch package.json)
2019-12-14 21:33:56 +02:00
Pavel Djundik e3a2fa7dd1 Create packages/package.json on server start 2019-12-14 20:48:25 +02:00
Pavel Djundik 7fbba14b69 Watch package.json and load new packages 2019-12-14 20:47:52 +02:00
Pavel Djundik 059cedcf7a
Merge pull request #3578 from thelounge/xpaw/yarn-home
Provide fake $HOME env to Yarn commands
2019-12-14 20:47:09 +02:00
Pavel Djundik 8840a80209
Merge pull request #3583 from thelounge/renovate/vue-monorepo
Update vue monorepo to v2.6.11
2019-12-14 10:59:05 +02:00
Pavel Djundik eda437f40d Update yarn.lock 2019-12-14 10:53:36 +02:00
Renovate Bot a0f684c0d9
Update vue monorepo to v2.6.11 2019-12-14 08:44:37 +00:00
Pavel Djundik bc3e6292b6
Merge pull request #3582 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.3.2
2019-12-14 10:43:48 +02:00
Pavel Djundik a91f5dfb49
Merge pull request #3580 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.12.0
2019-12-14 10:43:41 +02:00
Renovate Bot dccdd4869c
Update dependency css-loader to v3.3.2 2019-12-14 08:31:31 +00:00
Renovate Bot 9ac1257e76
Update dependency @fortawesome/fontawesome-free to v5.12.0 2019-12-14 08:31:20 +00:00
Pavel Djundik d550c6e11c
Merge pull request #3581 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.1.1
2019-12-14 10:30:10 +02:00
Pavel Djundik 0582303f3b
Merge pull request #3575 from thelounge/renovate/got-10.x
Update dependency got to v10.0.4
2019-12-14 10:30:03 +02:00
Renovate Bot 1ede6c8463
Update dependency copy-webpack-plugin to v5.1.1 2019-12-14 00:35:30 +00:00
Pavel Djundik 24e41327a3 Provide fake $HOME env to Yarn commands 2019-12-13 17:45:10 +02:00
Pavel Djundik bbf92f1aa0 Assign preview.thumb only after it is processed 2019-12-13 11:43:13 +02:00
Renovate Bot 15d7f2f224
Update dependency got to v10.0.4 2019-12-12 13:15:23 +00:00
Pavel Djundik 51360711c9
Merge pull request #3573 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.21.1
2019-12-11 19:36:25 +02:00
Pavel Djundik 87244fb4d5
Merge pull request #3570 from thelounge/xpaw/fix-3568
Allow empty parameter overrides
2019-12-11 19:34:04 +02:00
Pavel Djundik 0e3d7bb5bd
Merge pull request #3571 from thelounge/xpaw/fix-3569
Disable protocol register button if lockNetwork is enabled
2019-12-11 19:33:56 +02:00
Renovate Bot 53a34a0509
Update dependency yarn to v1.21.1 2019-12-11 13:14:18 +00:00
Pavel Djundik 7eaf6fb58f
Merge pull request #3572 from thelounge/xpaw/css
Remove unnecessary selectors
2019-12-11 14:33:27 +02:00
Pavel Djundik f5103ac4b4 Remove unnecessary selectors 2019-12-11 13:35:18 +02:00
Pavel Djundik 2bc78e24a2
Merge pull request #3566 from thelounge/xpaw/css
Fix up css refactor
2019-12-11 11:43:45 +02:00
Pavel Djundik 74cc1722ea Disable protocol register button if lockNetwork is enabled
Fixes #3569
2019-12-10 23:24:54 +02:00
Pavel Djundik 58545353f7 Allow empty parameter overrides
Fixes #3568
2019-12-10 23:20:45 +02:00
Pavel Djundik fd6bc3ecb6 Fix up css refactoring 2019-12-10 19:25:32 +02:00
Pavel Djundik 2a84d8239b
Merge pull request #3553 from thelounge/richrd/css-refactoring
Refactor some CSS styling
2019-12-10 14:52:18 +02:00
Richard Lewis c022377c49 Refactor some CSS selectors. 2019-12-10 14:19:31 +02:00
Pavel Djundik e9cbea9569 Update link prefetch stream handling
Fixes #3564
2019-12-09 21:05:33 +02:00
Pavel Djundik 8d227ee37e
Merge pull request #3560 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.13
2019-12-09 21:03:00 +02:00
Pavel Djundik 2d983b94eb
Merge pull request #3565 from thelounge/renovate/babel-monorepo
Update dependency @babel/preset-env to v7.7.6
2019-12-09 21:02:53 +02:00
Pavel Djundik 371f676fd5
Merge pull request #3563 from thelounge/renovate/got-10.x
Update dependency got to v10.0.3
2019-12-09 21:02:28 +02:00
Renovate Bot f7391f252b
Update dependency got to v10.0.3 2019-12-09 18:48:39 +00:00
Renovate Bot 636c4a6204
Update dependency @babel/preset-env to v7.7.6 2019-12-07 23:52:23 +00:00
Renovate Bot 3426ee31c0
Update dependency mochapack to v1.1.13 2019-12-07 18:10:04 +00:00
Pavel Djundik cf0a222cf9
Merge pull request #3562 from thelounge/renovate/ldapjs-2.x
Update dependency ldapjs to v2.0.0-pre.4
2019-12-07 20:09:07 +02:00
Pavel Djundik bfbb6627d0
Merge pull request #3559 from thelounge/renovate/css-loader-3.x
Update dependency css-loader to v3.2.1
2019-12-07 20:08:58 +02:00
Pavel Djundik a9f0b1d5ff
Merge pull request #3558 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.7.5
2019-12-07 20:08:51 +02:00
Renovate Bot 1501566824
Update dependency ldapjs to v2.0.0-pre.4 2019-12-07 17:43:17 +00:00
Renovate Bot 4ad7dc1ad3
Update dependency css-loader to v3.2.1 2019-12-07 17:43:06 +00:00
Renovate Bot bdfbfdd475
Update babel monorepo to v7.7.5 2019-12-07 17:42:54 +00:00
Pavel Djundik 21bbfffb21
Merge pull request #3561 from thelounge/richrd/fix-video-overflow
Fix video element overflowing on chrome
2019-12-07 19:13:27 +02:00
Pavel Djundik 320832dfd9
Merge pull request #3539 from thelounge/xpaw/emoji
Add Unicode 12.1 emojis
2019-12-07 19:12:33 +02:00
Richard Lewis 45d7b0531a Fix video element overflowing on chrome. 2019-12-07 14:11:16 +00:00
Pavel Djundik 6032bd16a5
Merge pull request #3556 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.4.3
2019-12-06 21:55:19 +02:00
Renovate Bot 21c8e7cd62
Update dependency web-push to v3.4.3 2019-12-06 19:50:26 +00:00
Pavel Djundik 3224c988b8
Merge pull request #3555 from thelounge/xpaw/apply-theme
Apply user theme as soon as possible on page load
2019-12-06 17:56:06 +02:00
Pavel Djundik e64f53ad33 Apply user theme as soon as possible 2019-12-06 11:56:12 +02:00
Pavel Djundik 07ea17b180
Merge pull request #3548 from thelounge/xpaw/remove-upgrades
Remove code that aided upgrade to v3
2019-12-05 12:14:08 +02:00
Pavel Djundik 278595df1f
Merge pull request #3554 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.1.1
2019-12-05 12:13:36 +02:00
Renovate Bot e60a8e8bff
Update dependency sqlite3 to v4.1.1 2019-12-05 02:45:53 +00:00
Pavel Djundik f2ea562d16
Merge pull request #3552 from thelounge/renovate/tlds-1.x
Update dependency tlds to v1.207.0
2019-12-03 19:31:39 +02:00
Renovate Bot 0bd676355e
Update dependency tlds to v1.207.0 2019-12-03 15:19:35 +00:00
Pavel Djundik c260e1a82f
Merge pull request #3549 from thelounge/xpaw/client-setting-awayMessage
Make client awayMessage a client setting
2019-12-03 10:30:21 +02:00
Pavel Djundik 4ef5c66fd6
Merge pull request #3546 from thelounge/xpaw/fix-sidebar-closing
Fix sidebar not opening when lounge is open in a background tab
2019-12-03 10:23:59 +02:00
Pavel Djundik 3dae767937 Make client awayMessage a client setting 2019-12-02 12:24:22 +02:00
Pavel Djundik db4b292a38 Remove code that aided upgrade to v3 2019-12-02 12:10:17 +02:00
Pavel Djundik d90a81240f
Merge pull request #3544 from thelounge/renovate/got-10.x
Update dependency got to v10
2019-12-02 11:56:48 +02:00
Pavel Djundik ad39229867
Merge pull request #3547 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.21.0
2019-12-02 11:56:39 +02:00
Renovate Bot 6199c3defc
Update dependency got to v10 2019-12-02 09:41:11 +00:00
Renovate Bot f945c29cda
Update dependency yarn to v1.21.0 2019-12-02 08:29:20 +00:00
Pavel Djundik cf0a4999e9 Fix sidebar not opening when lounge is open in a background tab 2019-12-01 20:20:37 +02:00
Pavel Djundik 674d9cfbd8
Merge pull request #3543 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.7.2
2019-12-01 17:42:39 +02:00
Pavel Djundik dd2b15b7af
Merge pull request #3545 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.4.2
2019-12-01 17:42:19 +02:00
Renovate Bot 5d1eb385e6
Update dependency web-push to v3.4.2 2019-12-01 15:34:32 +00:00
Renovate Bot 801f56b168
Update dependency eslint to v6.7.2 2019-11-30 17:24:52 +00:00
Pavel Djundik 7425033fdb
Merge pull request #3542 from thelounge/renovate/vue-monorepo
Update vue monorepo to v1.0.0-beta.30
2019-11-30 12:10:08 +02:00
Pavel Djundik 36b105021b Use async in parser tests 2019-11-30 11:36:19 +02:00
Renovate Bot 6b46097479
Update vue monorepo to v1.0.0-beta.30 2019-11-30 09:07:40 +00:00
Pavel Djundik f6a432da32
Merge pull request #3541 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.12
2019-11-30 11:06:42 +02:00
Pavel Djundik 69840cd8c1
Merge pull request #3540 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.7.1
2019-11-30 11:06:35 +02:00
Renovate Bot 661d4a9ba4
Update dependency mochapack to v1.1.12 2019-11-30 01:27:53 +00:00
Renovate Bot 1d8bd7acb5
Update dependency eslint to v6.7.1 2019-11-30 01:27:39 +00:00
Pavel Djundik 09ddbd156c Add Unicode 12.1 emojis 2019-11-29 20:26:33 +02:00
Pavel Djundik 320b3ea98f
Merge pull request #3434 from thelounge/xpaw/no-variant-emoji-map
Remove \uFE0F emoji variant from emoji name map
2019-11-28 20:15:42 +02:00
Pavel Djundik 6d342b9847
Merge pull request #3538 from thelounge/xpaw/test-timeout
Increase test timeout due to unpredictable I/O on CI services
2019-11-28 12:57:41 +02:00
Pavel Djundik f0dfb909dd
Merge pull request #3537 from thelounge/xpaw/fix-kick-spacing
Fix spacing in kick reason
2019-11-28 12:24:17 +02:00
Pavel Djundik 45f2576e96
Merge pull request #3536 from thelounge/xpaw/no-compute-filtered
Do not compute filteredUsers if there's no search input
2019-11-28 12:19:31 +02:00
Pavel Djundik 8b7fb33627 Increase test timeout due to unpredictable I/O on CI services 2019-11-27 20:25:29 +02:00
Pavel Djundik e923696bb0 Fix spacing in kick reason 2019-11-27 20:18:20 +02:00
Pavel Djundik c19cbd7ffd Do not compute filteredUsers if there's no search input 2019-11-27 19:56:21 +02:00
Pavel Djundik 446f99f62a
Merge pull request #3535 from thelounge/richrd/fix-keybinds-in-input
Fix keybinds when chat input is focused.
2019-11-27 16:49:04 +02:00
Richard Lewis b089b92b1e Fix keybinds when chat input is focused. 2019-11-27 14:28:54 +00:00
Pavel Djundik 2ee30abd56
Merge pull request #3533 from thelounge/richrd/draft-icon
Show which channels have drafts in the network list
2019-11-27 10:59:49 +02:00
Richard Lewis eb0094618e Show pen icon if channel has a pending message, unless it's the active channel 2019-11-26 22:29:35 +00:00
Pavel Djundik bbbaf128bb
Merge pull request #3521 from thelounge/github-action-release
Create release github action workflow
2019-11-26 22:45:19 +02:00
Pavel Djundik c0b8f6f86a Create release github action workflow 2019-11-26 22:39:38 +02:00
Pavel Djundik c813d6ee2a Delete .travis.yml 2019-11-26 22:39:38 +02:00
Pavel Djundik 85400ed9c2
Merge pull request #3532 from thelounge/xpaw/context-menu-transition
Remove transition from context menu items
2019-11-26 18:02:17 +02:00
Pavel Djundik 5f2651a252
Merge pull request #3531 from thelounge/xpaw/ignore-unknown-settings
Ignore unknown settings
2019-11-26 18:02:09 +02:00
Pavel Djundik fa68d74f9e Remove transition from context menu items 2019-11-26 16:39:56 +02:00
Pavel Djundik c790d9fadf Ignore unknown settings 2019-11-26 16:20:33 +02:00
Pavel Djundik d6923d0c6d Regenerate fullnamemap.json 2019-11-26 14:17:37 +02:00
Pavel Djundik 10b1cedbb6 Remove \uFE0F emoji variant from emoji name map 2019-11-26 14:17:37 +02:00
Pavel Djundik 12cdf280fc v3.4.0-pre.1 2019-11-26 13:57:07 +02:00
Pavel Djundik 9784423808 Add changelog entry for v3.4.0-pre.1 2019-11-26 13:56:56 +02:00
Pavel Djundik e74c35687e
Merge pull request #3524 from thelounge/vue
Complete porting The Lounge client to the Vue.js framework
2019-11-26 13:51:45 +02:00
Pavel Djundik a3be259567 Fix opening channel when clicking a push notification 2019-11-25 21:51:04 +02:00
Pavel Djundik c2ed3fae56 Improve link preview loading 2019-11-25 21:37:51 +02:00
Pavel Djundik c70d0fb224 Display a badge when built in development mode 2019-11-25 20:53:22 +02:00
Pavel Djundik 9051861f4d Replace history entry if current route is null 2019-11-25 20:13:20 +02:00
Pavel Djundik 049e9a1680 Prevent cursor moving when navigating user list 2019-11-25 20:13:20 +02:00
Pavel Djundik 57ba119edb Hide auto completion menu when channel changes 2019-11-25 20:13:19 +02:00
Pavel Djundik 83f3fe772a Remove user/pass support from irc://, support multiple channels
Other clients and specs explicitly don't support user:pass
2019-11-25 20:13:19 +02:00
Pavel Djundik ec85372132 Fix uri handling and add tests 2019-11-25 20:13:18 +02:00
Pavel Djundik 90ec37ce82 Replace confirm() with context menu
window.confirm() blocks the javascript thread and will cause the socket connection to drop
2019-11-25 20:13:18 +02:00
Pavel Djundik 9b9c547e8c Remove UsernameFiltered and fix colored mentions 2019-11-25 20:13:17 +02:00
Richard Lewis dca6543070 Implement closeChannel method. 2019-11-25 20:13:17 +02:00
Richard Lewis 0c49f025b4 Fix Vue error when navigating to channels via InlineChannel. 2019-11-25 20:13:17 +02:00
Pavel Djundik 2a6c57abaa Fix context menu generation 2019-11-25 20:13:16 +02:00
Pavel Djundik de76a86757 Remove css.escape as it is no longer used 2019-11-25 20:13:16 +02:00
Pavel Djundik 49dc6ffd8f Fix client tests 2019-11-25 20:13:15 +02:00
Pavel Djundik 0ac9601a3a Remove some data attributes 2019-11-25 20:13:15 +02:00
Pavel Djundik e76d5d2ef9 Port keybinds to vue state; remove jQuery 2019-11-25 20:13:14 +02:00
Pavel Djundik d0444d7d7f Improve disconnected message in public mode 2019-11-25 20:13:14 +02:00
Pavel Djundik f00dfc7524 Move upload-overlay to viewport 2019-11-25 20:13:14 +02:00
Pavel Djundik 21bbe7d4c3 Make sense out of settings sync and force sync 2019-11-25 20:13:13 +02:00
Pavel Djundik 85907f54ba Improve context menus 2019-11-25 20:13:13 +02:00
Pavel Djundik 9147772cb2 Use mousetrap for escape binds 2019-11-25 20:13:12 +02:00
Pavel Djundik 0cb8dc73bb Use es6 import syntax 2019-11-25 20:13:12 +02:00
Pavel Djundik b2cc8d9531 Fix web app install button 2019-11-25 20:13:11 +02:00
Pavel Djundik fcf7488e1e Remove jquery from autocompletion 2019-11-25 20:13:11 +02:00
Richard Lewis a71472a427 Port contextmenus to Vue 2019-11-25 20:13:11 +02:00
Pavel Djundik 111c3665f9 Replace moment with dayjs
Drop in replacement, but smaller
2019-11-25 20:13:10 +02:00
Pavel Djundik 7584f47c7d Cleanup webpush code 2019-11-25 20:13:10 +02:00
Pavel Djundik 17365d9967 Remove references to vue.js 2019-11-25 20:13:09 +02:00
Pavel Djundik 54a1e11f50 Move some init code around 2019-11-25 20:13:09 +02:00
Pavel Djundik 033f565c0e Remove isFileUploadEnabled 2019-11-25 20:13:08 +02:00
Pavel Djundik a4490bf1d6 Fix up connect uri parsing, use direct router references
Co-Authored-By: Tim Miller-Williams <timmw@users.noreply.github.com>
2019-11-25 20:13:08 +02:00
Pavel Djundik 91e0349486 Use global Vue calls instead of vueApp reference 2019-11-25 20:13:07 +02:00
Pavel Djundik f2309c7c89 Improve router experience 2019-11-25 20:13:07 +02:00
Pavel Djundik 5a0f1c1f4e Replace getActiveWindowComponent with an event 2019-11-25 20:13:07 +02:00
Pavel Djundik 3a6b075745 Do not focus channel when close button clicked
This fixes leaving channels and removing networks jumping to it before being removed
2019-11-25 20:13:06 +02:00
Pavel Djundik 2044bc88dd Switch channels on quit only if current network is being quit 2019-11-25 20:13:06 +02:00
Tim Miller-Williams d5ebdc943c Replace isNotified state with getter 2019-11-25 20:13:05 +02:00
Tim Miller-Williams cbaf4db339 Replace synchronizeNotifiedState with a getter & watcher 2019-11-25 20:13:05 +02:00
Tim Miller-Williams 16f8304c4e Refactor title to rely on Vuex state reactivity 2019-11-25 20:13:04 +02:00
Tim Miller-Williams 6a15fd95f0 Refactor userList behaviour to not use methods in root Vue instance 2019-11-25 20:13:04 +02:00
Tim Miller-Williams dd9efad23c Refactor sidebar behaviour to no longer use methods in root Vue instance 2019-11-25 20:13:04 +02:00
Tim Miller-Williams 1adbbdda2a Fix bug with joining new channels 2019-11-25 20:13:03 +02:00
Tim Miller-Williams 347802a4b6 Refactor Apple keyboard logic to be more explicit 2019-11-25 20:13:03 +02:00
Richard Lewis 94bdff4fa0 Implement mirroring nick to username field in vue. 2019-11-25 20:13:02 +02:00
Richard Lewis 0c7db6dffe Move url parameter handling to vue 2019-11-25 20:13:02 +02:00
Richard Lewis 897f238c38 Disallow navigating to invalid channels 2019-11-25 20:13:01 +02:00
Richard Lewis 5c0a7722a4 Disallow navigating to non-existing routes 2019-11-25 20:13:01 +02:00
Richard Lewis d232ef1557 Improve vue routing. 2019-11-25 20:13:00 +02:00
Pavel Djundik 916da73108 Remove jquery from input focus event 2019-11-25 20:13:00 +02:00
Pavel Djundik 80c6cfbd7c Use switchToChannel instead of click 2019-11-25 20:13:00 +02:00
Tim Miller-Williams 25da9dd63e Rework settings such that all behavior for each setting is kept together
Behavior includes: default value, whether setting should be synced, and
an optional 'apply' callback which is called when setting is changed in
Vuex.
2019-11-25 20:12:59 +02:00
Tim Miller-Williams 703848919c Separate connection event handlers from socket.js 2019-11-25 20:12:59 +02:00
Tim Miller-Williams a2a2aff2bc Remove unnecessary options.initialized switch 2019-11-25 20:12:58 +02:00
Pavel Djundik a1f183f216 Cleanup auth flow 2019-11-25 20:12:58 +02:00
Pavel Djundik fc1c9568e2 Rename helpers folder, move some vue filters 2019-11-25 20:12:58 +02:00
Pavel Djundik b164e95290 Remove DOM access from webpush 2019-11-25 20:12:57 +02:00
Pavel Djundik 8972242863 Remove jquery from msg event 2019-11-25 20:12:57 +02:00
Pavel Djundik 6b8fea8afc Avoid emitting multiple events to the server when collapsing/expanding channel previews
Fixes #1377
2019-11-25 20:12:56 +02:00
Pavel Djundik c26de4cf6a Move options to vuex
Co-Authored-By: Tim Miller-Williams <timmw@users.noreply.github.com>
2019-11-25 20:12:56 +02:00
Pavel Djundik 743ae987ec Fix up login and initial window 2019-11-25 20:12:55 +02:00
Pavel Djundik 2b5a13a043 Register routes after init 2019-11-25 20:12:55 +02:00
Pavel Djundik aba2487126 Make findChannel and findNetwork getters 2019-11-25 20:12:54 +02:00
Pavel Djundik 742cd8d4bf Move most things out of utils 2019-11-25 20:12:54 +02:00
Pavel Djundik 2f635069e0 Move vuex state to a separate file and reorganize some code
Co-Authored-By: Tim Miller-Williams <timmw@users.noreply.github.com>
2019-11-25 20:12:54 +02:00
Pavel Djundik 3c43a2bfd3 Delete renderPreview.js 2019-11-25 20:12:53 +02:00
Pavel Djundik c4d6afe3d6 Fix removing networks 2019-11-25 20:12:53 +02:00
Pavel Djundik c8b22b2df3 Fix up network editing 2019-11-25 20:12:52 +02:00
Richard Lewis 8fa42c5c48 Fix network editing in vue and use absolute urls in router links. 2019-11-25 20:12:52 +02:00
Richard Lewis 2049a16d64 Implement switchToChannel method. 2019-11-25 20:12:51 +02:00
Pavel Djundik e845e17a63 Convert some clicks to router push 2019-11-25 20:12:51 +02:00
Richard Lewis c6dca616e6 Remove jQuery from InlineChannel.vue and JoinChannel.vue. 2019-11-25 20:12:50 +02:00
Richard Lewis c393dd1a11 Fixes to vue routing and activeWindow. 2019-11-25 20:12:50 +02:00
Pavel Djundik f76ad57c63 Move confirmExit 2019-11-25 20:12:50 +02:00
Pavel Djundik b74cc4387a Remove old path from eslintignore 2019-11-25 20:12:49 +02:00
Pavel Djundik 431221c21e Add rel=noopener on changelog links 2019-11-25 20:12:49 +02:00
Richard Lewis 737afc759b Implement vue-router. 2019-11-25 20:12:48 +02:00
Pavel Djundik 7355c91839 Move context menu events to factory 2019-11-25 20:12:48 +02:00
Pavel Djundik af0d48de72 Create InlineChannel component 2019-11-25 20:12:48 +02:00
Pavel Djundik 4f6565c24a Add active class to footer buttons 2019-11-25 20:12:47 +02:00
Pavel Djundik 5c4b402341 Fancy image interactions in the image viewer
Desktop:
- Mousewheel to zoom in/out (hold ctrl to move up/down)
- If zoomed, drag around with mouse to move

Mobile:
- Move around with one finger
- Change zoom with two fingers
2019-11-25 20:12:47 +02:00
Pavel Djundik af777106bf Remove handlebars and html-minifier 2019-11-25 20:12:46 +02:00
Pavel Djundik 70a795dced Start porting image viewer to Vue 2019-11-25 20:12:33 +02:00
Richard Lewis 2d8417cd8b Patch changelog html in Vue. 2019-11-25 20:12:33 +02:00
Pavel Djundik cd36555b63 Import socket in changelog 2019-11-25 20:12:32 +02:00
Richard Lewis ef500f12a1 Implement changelog in Vue. 2019-11-25 20:12:32 +02:00
Richard Lewis 055ba5caff Remove sidebar wrapper div. 2019-11-25 20:12:31 +02:00
Richard Lewis b95f89c4c2 Implement version checker in Vue. 2019-11-25 20:12:31 +02:00
Richard Lewis 2b602ca333 Move slideout menu logic to Vue. 2019-11-25 20:12:31 +02:00
Richard Lewis ee92de0ff7 Fix changing theme color and properly sync settings. 2019-11-25 20:12:30 +02:00
Richard Lewis b5f2e7f0cc Fix lint and format with prettier. 2019-11-25 20:12:30 +02:00
Richard Lewis e0ec340de8 Fix oversights during rebase. 2019-11-25 20:12:29 +02:00
Richard Lewis b994ecd1f1 Fix hash navigation for sidebar footer buttons. 2019-11-25 20:12:29 +02:00
Richard Lewis addd4124bf Close sidebar when opening settings, help etc. 2019-11-25 20:12:29 +02:00
Richard Lewis 7fd48d8155 Fix enabling and disabling push notifications. 2019-11-25 20:12:28 +02:00
Richard Lewis 467ebab31f Move most side bar and user list interactions to vue. 2019-11-25 20:12:28 +02:00
Richard Lewis e73bf1e9a7 Move closeChan functionality to vue. 2019-11-25 20:12:27 +02:00
Richard Lewis 5b17a2fbe4 Port session list to vue. 2019-11-25 20:12:27 +02:00
Richard Lewis 111beb5f12 Run updateSetting from Settings component and get rid of unused code. 2019-11-25 20:12:26 +02:00
Richard Lewis 2ef3e3e5b4 Add success: false to change-password error emits. 2019-11-25 20:12:26 +02:00
Richard Lewis 6c10a2a6cf Port part of the settings functionality to vue. 2019-11-25 20:12:26 +02:00
Richard Lewis 08635beb61 Fix lint 2019-11-25 20:12:25 +02:00
Richard Lewis 5a3ad194e8 Move connect and network edit views to vue. 2019-11-25 20:12:25 +02:00
Richard Lewis c4a3108dc0 Move activeWindow to vuex. 2019-11-25 20:12:24 +02:00
Richard Lewis 0da059118d Move isNotified to vuex. 2019-11-25 20:12:24 +02:00
Richard Lewis 69cb891b1a Add vuex and move isConnected to vuex state. 2019-11-25 20:12:23 +02:00
Richard Lewis e71360ad39 Move sidebar to its own component. 2019-11-25 20:12:23 +02:00
Pavel Djundik 3f7889e534 Move changelog window to Vue 2019-11-25 20:12:22 +02:00
Pavel Djundik 70d9d8d226 Move help window to Vue 2019-11-25 20:12:22 +02:00
Pavel Djundik 71f54f6a5d Move some settings to Vue 2019-11-25 20:12:22 +02:00
Pavel Djundik 09e12affe8 Begin moving windows to Vue 2019-11-25 20:12:21 +02:00
Pavel Djundik bdb0a2efca
Merge pull request #3530 from thelounge/xpaw/cheerio
Bump cheerio to latest version
2019-11-25 20:11:51 +02:00
Pavel Djundik 98f75a5a1c Upgrade yarn.lock 2019-11-25 18:08:46 +02:00
Pavel Djundik bd2a6be257 Bump cheerio to latest version 2019-11-25 17:58:04 +02:00
Pavel Djundik 72b0edabf9
Merge pull request #3528 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.7.0
2019-11-23 16:27:54 +02:00
Renovate Bot 9fe218a625
Update dependency eslint-config-prettier to v6.7.0 2019-11-23 10:41:41 +00:00
Pavel Djundik f614ebd712
Merge pull request #3529 from thelounge/renovate/husky-3.x
Update dependency husky to v3.1.0
2019-11-23 12:40:51 +02:00
Pavel Djundik 1a53635d1a
Merge pull request #3527 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.7.0
2019-11-23 12:40:46 +02:00
Pavel Djundik 83648c0571
Merge pull request #3526 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.7.4
2019-11-23 12:40:37 +02:00
Pavel Djundik 8e1ce206e1
Merge pull request #3525 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.19.2
2019-11-23 12:40:29 +02:00
Renovate Bot 3c0754e6df
Update dependency husky to v3.1.0 2019-11-23 04:52:50 +00:00
Renovate Bot 1b47d0fe90
Update dependency eslint to v6.7.0 2019-11-23 02:51:29 +00:00
Renovate Bot b90db81025
Update babel monorepo to v7.7.4 2019-11-23 02:51:15 +00:00
Renovate Bot 2b60730532
Update dependency yarn to v1.19.2 2019-11-22 13:58:03 +00:00
Pavel Djundik c64a8728b5
Merge pull request #3520 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.6.0
2019-11-18 12:11:25 +02:00
Renovate Bot 3cbf67bacb
Update dependency eslint-config-prettier to v6.6.0 2019-11-17 00:40:58 +00:00
Pavel Djundik f51bb4ea65
Merge pull request #3517 from thelounge/renovate/stylelint-12.x
Update dependency stylelint to v12
2019-11-16 19:20:23 +02:00
Pavel Djundik f0d37d7e08
Merge pull request #3519 from thelounge/renovate/ldapjs-2.x
Update dependency ldapjs to v2.0.0-pre.3
2019-11-16 19:20:16 +02:00
Renovate Bot 2c280685ef
Update dependency ldapjs to v2.0.0-pre.3 2019-11-16 15:57:26 +00:00
Renovate Bot 67a84fe2f1
Update dependency stylelint to v12 2019-11-16 12:31:19 +00:00
Pavel Djundik 6a75ab3f27
Merge pull request #3516 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.11
2019-11-16 11:14:35 +02:00
Pavel Djundik b8ae278fba
Merge pull request #3514 from thelounge/renovate/eslint-plugin-vue-6.x
Update dependency eslint-plugin-vue to v6.0.1
2019-11-16 11:14:27 +02:00
Renovate Bot 7a34c661cf
Update dependency mochapack to v1.1.11 2019-11-16 02:26:44 +00:00
Renovate Bot 20d40d2a32
Update dependency eslint-plugin-vue to v6.0.1 2019-11-16 00:27:12 +00:00
Pavel Djundik aaedaffa83
Merge pull request #3513 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.25
2019-11-15 21:26:35 +02:00
Renovate Bot 59dd897099
Update dependency mime-types to v2.1.25 2019-11-12 15:56:23 +00:00
Pavel Djundik 586ceacd2a
Merge pull request #3512 from thelounge/renovate/commander-4.x
Update dependency commander to v4.0.1
2019-11-11 14:47:22 +02:00
Renovate Bot 3471413a00 Update dependency commander to v4.0.1 2019-11-11 14:42:47 +02:00
Pavel Djundik 1410256e42
Merge pull request #3489 from thelounge/xpaw/fix-3221
Enable some user commands for LDAP
2019-11-11 12:01:48 +02:00
Pavel Djundik 74fd296d61
Merge pull request #3490 from thelounge/xpaw/showinactive-fix
Fix potential issue of history not loading when `showInActive` is the first message
2019-11-11 12:01:41 +02:00
Pavel Djundik 36002757be
Merge pull request #3509 from thelounge/renovate/chalk-3.x
Update dependency chalk to v3
2019-11-11 12:01:33 +02:00
Pavel Djundik a78a7fbc92
Merge pull request #3511 from thelounge/renovate/prettier-1.x
Update dependency prettier to v1.19.1
2019-11-11 12:01:22 +02:00
Renovate Bot b26b73e994
Update dependency prettier to v1.19.1 2019-11-09 12:43:30 +00:00
Renovate Bot 1f2e69a550
Update dependency chalk to v3 2019-11-09 10:37:26 +00:00
Pavel Djundik 3d9f185494
Merge pull request #3510 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.9
2019-11-09 12:36:35 +02:00
Renovate Bot d84a2dbecc
Update dependency mochapack to v1.1.9 2019-11-09 10:09:22 +00:00
Pavel Djundik b550591262
Merge pull request #3501 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.5.2
2019-11-09 11:18:05 +02:00
Pavel Djundik 17b2d2fc32
Merge pull request #3506 from thelounge/renovate/prettier-1.x
Update dependency prettier to v1.19.0
2019-11-09 11:17:57 +02:00
Pavel Djundik a13bcb8e93 Format prettier after update 2019-11-09 10:55:50 +02:00
Renovate Bot f87bb85f37
Update dependency prettier to v1.19.0 2019-11-09 08:52:09 +00:00
Renovate Bot 38dd077bdf
Update dependency irc-framework to v4.5.2 2019-11-09 08:51:59 +00:00
Pavel Djundik 295ed871c7
Merge pull request #3503 from thelounge/renovate/babel-monorepo
Update babel monorepo
2019-11-09 10:51:08 +02:00
Pavel Djundik 86f3baae90
Merge pull request #3504 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.0.5
2019-11-09 10:51:01 +02:00
Pavel Djundik 7ff508ca4e
Merge pull request #3505 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.8
2019-11-09 10:50:53 +02:00
Pavel Djundik d3ccf17953
Merge pull request #3507 from thelounge/renovate/pretty-quick-2.x
Update dependency pretty-quick to v2.0.1
2019-11-09 10:50:47 +02:00
Pavel Djundik f98a70d58d
Merge pull request #3508 from thelounge/renovate/eslint-plugin-vue-6.x
Update dependency eslint-plugin-vue to v6
2019-11-09 10:50:39 +02:00
Renovate Bot de25fdbf87
Update dependency eslint-plugin-vue to v6 2019-11-09 02:09:03 +00:00
Renovate Bot 89e14d6ddc
Update dependency pretty-quick to v2.0.1 2019-11-09 02:08:49 +00:00
Renovate Bot 1822a67ef1
Update dependency mochapack to v1.1.8 2019-11-09 01:44:39 +00:00
Renovate Bot 0f3a088404
Update dependency copy-webpack-plugin to v5.0.5 2019-11-09 00:00:29 +00:00
Renovate Bot 561cb5cfa8
Update babel monorepo 2019-11-09 00:00:15 +00:00
Pavel Djundik 874385814d
Merge pull request #3502 from thelounge/webpack-hmr
Add webpack hot module reloading for development
2019-11-08 17:26:10 +02:00
Pavel Djundik 61f86b1557
Merge pull request #2821 from Raqbit/show-link-filesize
Add file size to link preview
2019-11-08 16:53:56 +02:00
Tim Miller-Williams 19d8178606 Add webpack hot module reloading for development
Co-Authored-By: Tim Miller-Williams <timmw@users.noreply.github.com>
2019-11-08 15:02:44 +02:00
Raqbit 95cc9a47fb Add file size to link preview 2019-11-07 16:58:28 +01:00
Pavel Djundik 8a224809dd
Merge pull request #3498 from MiniDigger/feature/package-versions
Print package versions on startup
2019-11-07 11:32:43 +02:00
MiniDigger 6f8364b1dd Print package versions on startup 2019-11-06 18:02:28 +01:00
Pavel Djundik 901d96c8cc
Merge pull request #3494 from thelounge/xpaw/remove-away-chan
Remove away messages from channels
2019-11-05 12:43:43 +02:00
Pavel Djundik 3ed54a3e11 Remove away/back condense as it won't be in channels 2019-11-05 12:37:55 +02:00
Pavel Djundik 39213bc4e7
Merge pull request #3493 from thelounge/xpaw/tooltips-import
Import primer-tooltips css
2019-11-05 12:35:06 +02:00
Pavel Djundik c62305039e
Merge pull request #3496 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.5.1
2019-11-04 16:33:54 +02:00
Renovate Bot b7b3717e3b
Update dependency irc-framework to v4.5.1 2019-11-04 14:21:47 +00:00
Pavel Djundik 14c0e4071a
Merge pull request #3491 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.10
2019-11-03 20:24:53 +02:00
Pavel Djundik 0ede916b78
Merge pull request #3492 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.7.2
2019-11-03 20:24:46 +02:00
Pavel Djundik 14c2cf6b0b Remove away message from channels
Fixes #3026
2019-11-02 16:53:41 +02:00
Pavel Djundik 79e0558b73 Add some tests for built css 2019-11-02 12:53:38 +02:00
Pavel Djundik 48713428b7 Import primer-tooltips css 2019-11-02 12:45:41 +02:00
Renovate Bot d5224a9d01
Update dependency vue-loader to v15.7.2 2019-11-02 08:29:51 +00:00
Renovate Bot 1de39524f7
Update dependency webpack-cli to v3.3.10 2019-11-02 01:31:07 +00:00
Pavel Djundik 064d36a6cc
Merge pull request #3488 from thelounge/renovate/commander-4.x
Update dependency commander to v4
2019-11-01 19:56:54 +02:00
Pavel Djundik adef07f6d8
Merge pull request #3487 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.4.0
2019-11-01 19:56:46 +02:00
Renovate Bot aaf2a563c8
Update dependency file-type to v12.4.0 2019-11-01 15:26:34 +00:00
Pavel Djundik 75eb812f05 Fix potential issue of history not loading when showInActive is set 2019-11-01 16:43:55 +02:00
Pavel Djundik 959ec5b598
Merge pull request #3471 from MiniDigger/feature/plugin-messages
Add message type for plugins
2019-11-01 16:41:41 +02:00
Pavel Djundik a35675ddc1
Merge pull request #3449 from thelounge/xpaw/postcss
Use postcss to optimize css
2019-11-01 16:40:13 +02:00
Pavel Djundik 5b3399f95a Use postcss to optimize css 2019-11-01 13:47:18 +02:00
Pavel Djundik e58a895293 Enable some user commands for LDAP
Fixes #3221
2019-11-01 13:37:32 +02:00
Pavel Djundik ddebb22afe
Merge pull request #3482 from thelounge/xpaw/fix-3219
Load existing users on startup when LDAP is enabled
2019-11-01 13:32:24 +02:00
Pavel Djundik fb250682a1
Merge pull request #3483 from thelounge/xpaw/improve-user-startup
Improvements to network connections on startup
2019-11-01 13:26:24 +02:00
Pavel Djundik eb971a7d23
Merge pull request #3485 from thelounge/xpaw/upload-baseurl
Allow configuring base url for uploads
2019-11-01 13:16:13 +02:00
Pavel Djundik 1f2ca91d89
Merge pull request #3486 from thelounge/xpaw/firefox-copy-hack
Disable copy hack in Firefox
2019-11-01 13:15:23 +02:00
Pavel Djundik e09599aeae Fix running commands 2019-11-01 12:51:57 +02:00
Renovate Bot 32e86dc699
Update dependency commander to v4 2019-11-01 10:11:28 +00:00
Pavel Djundik 97cfd1a2bc Disable copy hack in Firefox 2019-10-31 16:49:09 +02:00
Pavel Djundik 372f9f7ce4
Merge pull request #3345 from Jay2k1/patch-1
improve RTL text support
2019-10-31 16:32:01 +02:00
Pavel Djundik 6c57339668 Allow configure base url for uploads
Fixes #3484
2019-10-31 13:21:22 +02:00
Pavel Djundik a0c2495c42 Improvements to network connections on startup 2019-10-31 11:31:37 +02:00
Pavel Djundik fe4e0343a4 Load existing users on startup when LDAP is enabled
Fixes #3219
2019-10-31 11:01:44 +02:00
Pavel Djundik d8a6b137fe
Merge pull request #3450 from thelounge/xpaw/renovate-config
Create devDependencies update prs on weekends
2019-10-29 12:04:28 +02:00
Pavel Djundik 64efa0cf7b
Merge pull request #3480 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.5.0
2019-10-29 12:04:08 +02:00
Renovate Bot 4d55614db1
Update dependency irc-framework to v4.5.0 2019-10-29 00:12:39 +00:00
Pavel Djundik 27a06b533c
Merge pull request #3477 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.5.0
2019-10-28 12:54:41 +02:00
Renovate Bot 479d2eadf0
Update dependency eslint-config-prettier to v6.5.0 2019-10-28 10:42:11 +00:00
Pavel Djundik 59e37cf73d
Merge pull request #3476 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.6.0
2019-10-28 12:41:33 +02:00
Renovate Bot 46e6b7282e
Update dependency eslint to v6.6.0 2019-10-28 10:23:57 +00:00
Pavel Djundik e26abb07fb v3.3.0 2019-10-28 12:22:20 +02:00
Pavel Djundik 0e5d64e027 Add changelog entry for v3.3.0 2019-10-28 12:21:58 +02:00
Pavel Djundik 298aa4c664
Merge pull request #3475 from thelounge/astorije/badges
Make badges a little more consistent with each other
2019-10-25 10:29:46 +03:00
Jérémie Astori 8f46f101b8
Make badges a little more consistent with each other 2019-10-25 00:01:24 -04:00
Jay2k1 c89aea3c1e add bidi support to messages, actions, previews etc 2019-10-24 16:53:29 +02:00
Pavel Djundik 2aa5ed44ad v3.3.0-rc.2 2019-10-23 12:48:06 +03:00
Pavel Djundik 0c97a8e48e
Add changelog entry for v3.3.0-rc.2 2019-10-23 12:47:48 +03:00
Pavel Djundik c72fce75de
Merge pull request #3473 from thelounge/xpaw/hide-user-load-log
Hide user loaded message in tests
2019-10-23 12:47:11 +03:00
Pavel Djundik 49fb6cc049 Hide user loaded message in tests 2019-10-23 12:42:01 +03:00
Pavel Djundik 5ba5505ba4
Merge pull request #3470 from thelounge/xpaw/first-run-crash
Do not crash on first run due to config.js not existing
2019-10-23 12:33:33 +03:00
Pavel Djundik 3df6e00b70
Merge pull request #3467 from thelounge/xpaw/fix-upload-init
Fix uploader being initialized more than once
2019-10-23 12:10:03 +03:00
MiniDigger dbec8330ce Pass package info around so it can be used as identifier 2019-10-22 20:03:54 +02:00
MiniDigger 8f7bee8dd3 Add icon to message 2019-10-22 19:38:13 +02:00
Pavel Djundik 8379a46c53
Merge pull request #3472 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.4.1
2019-10-22 20:15:00 +03:00
Renovate Bot 41b78f1ae2
Update dependency web-push to v3.4.1 2019-10-22 17:02:24 +00:00
MiniDigger 19d69ba4c3 Add message type for plugins 2019-10-22 18:44:05 +02:00
Pavel Djundik 41e5090fb0 Do not crash on first run due to config.js not existing 2019-10-22 15:00:05 +03:00
Pavel Djundik 5595b17060
Merge pull request #3468 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.3.1
2019-10-22 11:44:18 +03:00
Renovate Bot 7988a0d006
Update dependency file-type to v12.3.1 2019-10-22 04:06:49 +00:00
Pavel Djundik 63c638e9ad Fix uploader being initialized more than once 2019-10-21 18:57:01 +03:00
Pavel Djundik d237647f8a v3.3.0-rc.1 2019-10-21 18:01:05 +03:00
Pavel Djundik c47dd965c9
Add changelog entry for v3.3.0-rc.1 2019-10-21 18:00:43 +03:00
Pavel Djundik d4198e4360
Merge pull request #3461 from thelounge/xpaw/reconnect-unread
Synchronize open channel on client on reconnection
2019-10-21 17:59:34 +03:00
Pavel Djundik c4a637ab49
Merge pull request #3455 from thelounge/xpaw/fix-changelog-monorepos
Extract updated packages from pull request body
2019-10-21 15:59:18 +03:00
Pavel Djundik 28949fb5e2
Merge pull request #3458 from thelounge/xpaw/remove-warn
Do not print "no packages" warning when opening help on client
2019-10-21 15:59:11 +03:00
Pavel Djundik 2273c913ac
Merge pull request #3451 from thelounge/xpaw/heading-contrast
Increase contrast of headers in windows
2019-10-21 11:01:47 +03:00
Pavel Djundik 00e59000fd
Merge pull request #3460 from thelounge/xpaw/history-reconnect
Fix history not loading in certain cases after reconnect
2019-10-21 11:01:41 +03:00
Pavel Djundik ee91217d98
Merge pull request #3453 from thelounge/xpaw/sync-users-reconnect
Synchronize user list correctly on reconnection
2019-10-21 11:01:33 +03:00
Pavel Djundik 93cb395b75
Merge pull request #3466 from thelounge/xpaw/menu-styles
Update context and auto complete menu styles
2019-10-20 22:28:10 +03:00
Pavel Djundik d020875556
Merge pull request #3465 from thelounge/xpaw/bump-ecma-version
Bump ecmaVersion to 2018
2019-10-20 22:28:05 +03:00
Pavel Djundik 2447c00a61
Merge pull request #3462 from thelounge/xpaw/rm-david
Update badges in readme
2019-10-20 22:27:58 +03:00
Pavel Djundik 6d4ee6e76a
Merge pull request #3463 from thelounge/xpaw/travis
Remove Windows/OSX builds from Travis
2019-10-20 22:27:50 +03:00
Pavel Djundik 0daf985dff
Merge pull request #3464 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.2.2
2019-10-20 22:27:44 +03:00
Pavel Djundik 4e17067a07 Update context and auto complete menu styles 2019-10-20 00:36:40 +03:00
Pavel Djundik f22cfe0547 Bump ecmaVersion to 2018 2019-10-20 00:00:15 +03:00
Renovate Bot ddfadcd326
Update dependency mocha to v6.2.2 2019-10-18 20:12:09 +00:00
Pavel Djundik 5dfd1b8809 Update badges in readme
Remove david-dm badge
2019-10-17 16:18:15 +03:00
Pavel Djundik ed8f4c6c57
Update next node version in travis 2019-10-17 16:17:26 +03:00
Pavel Djundik 4d34a837a5
Remove Windows/OSX builds from Travis 2019-10-17 16:15:45 +03:00
Pavel Djundik 1ca16816c2 Synchronize open channel on client on reconnection 2019-10-17 13:54:30 +03:00
Pavel Djundik ebfecc3e9d Fix client not loading messages after reconnect in channels with less than 100 total messages 2019-10-17 13:27:15 +03:00
Pavel Djundik 51147f35b2 Do not try loading history while disconnected 2019-10-17 12:38:46 +03:00
Pavel Djundik 8aa8768dcc Do not print no packages warning when opening help on client 2019-10-16 17:07:25 +03:00
Pavel Djundik e3e0495a9f Extract updated packages from pull request body
Fixes getting package list when PR updates multiple packages (monorepos)
2019-10-15 21:30:43 +03:00
Jos Ahrens 8c3c426998
Automatically apply GitHub labels on issue creation 2019-10-15 17:48:36 +00:00
Pavel Djundik ee4de6a871
Merge pull request #3452 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.2
2019-10-15 20:35:55 +03:00
Pavel Djundik 7687c90edc Synchronize user list correctly on reconnection 2019-10-15 20:33:03 +03:00
Renovate Bot 5027b9bf47
Update dependency webpack to v4.41.2 2019-10-15 13:16:39 +00:00
Pavel Djundik ba517bbac9 Increase contrast of headers in windows 2019-10-14 17:30:35 +03:00
Pavel Djundik 44d207f5f5 Create devDependencies update prs on weekends 2019-10-14 12:28:05 +03:00
Pavel Djundik e66f47904e
Merge pull request #3448 from thelounge/renovate/pretty-quick-2.x
Update dependency pretty-quick to v2
2019-10-13 11:39:47 +03:00
Pavel Djundik b0264f0725
Merge pull request #3447 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.9
2019-10-13 11:39:41 +03:00
Renovate Bot dedc70d3ff
Update dependency pretty-quick to v2 2019-10-13 04:30:17 +00:00
Renovate Bot 13f728e2c0
Update dependency husky to v3.0.9 2019-10-13 00:14:10 +00:00
Pavel Djundik 76ff5dfef5
Merge pull request #3441 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.19.1
2019-10-11 16:12:20 +03:00
Pavel Djundik 742cf433d9
Merge pull request #3440 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.4.0
2019-10-11 16:12:13 +03:00
Pavel Djundik 2dfebda8a1
Merge pull request #3442 from thelounge/renovate/babel-monorepo
Update babel monorepo
2019-10-11 16:12:06 +03:00
Pavel Djundik ebd894e915
Merge pull request #3443 from thelounge/renovate/stylelint-11.x
Update dependency stylelint to v11.1.1
2019-10-11 16:11:58 +03:00
Pavel Djundik bc3b1875cd
Merge pull request #3445 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.1
2019-10-11 16:11:51 +03:00
Renovate Bot b0969d9856
Update dependency webpack to v4.41.1 2019-10-11 11:55:00 +00:00
Renovate Bot 4f1fe2b6f1
Update dependency stylelint to v11.1.1 2019-10-10 15:27:20 +00:00
Renovate Bot a39a49f711
Update babel monorepo 2019-10-10 14:35:39 +00:00
Renovate Bot 5fead0d909
Update dependency yarn to v1.19.1 2019-10-10 07:44:12 +00:00
Renovate Bot b0cff121ec
Update dependency eslint-config-prettier to v6.4.0 2019-10-10 07:43:54 +00:00
Pavel Djundik 4c684ecad4
Merge pull request #3438 from FryDay/issue-1154
Prefix channel before join
2019-10-10 10:06:47 +03:00
Pavel Djundik 9c6c03b23a
Merge pull request #3436 from thelounge/xpaw/random-port
Let OS generate a port in link prefetch tests
2019-10-10 10:06:11 +03:00
Pavel Djundik b3a13f1aa5
Merge pull request #3416 from thelounge/xpaw/add-user-chown
Set correct file owner for created user files and warn about it
2019-10-10 10:05:45 +03:00
Jordan Day 493f9b1b6c Prefix channel before join 2019-10-05 14:12:22 -05:00
Pavel Djundik 8c19613bce
Merge pull request #3437 from FryDay/issue-1801
Allow tab completion in middle of input
2019-10-04 18:53:03 +03:00
Jordan Day 037fa6d114 Allow tab completion in middle of input 2019-10-04 10:34:07 -05:00
Pavel Djundik c39f0d01e6
Merge pull request #3435 from FryDay/issue-3139
Key condensed messages by first message in array
2019-10-04 16:44:19 +03:00
Jordan Day deb5d2d090 Key condensed messages by first message in array 2019-10-04 08:37:12 -05:00
Pavel Djundik 390a0b8e83 Let OS generate a port in link prefetch tests 2019-10-04 14:19:04 +03:00
Pavel Djundik 75f7666548
Merge pull request #3432 from thelounge/mcinkay/1537-plugin-files
Add public files for plugins
2019-10-03 16:30:09 +03:00
Pavel Djundik 48060e9743
Merge pull request #3425 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.8
2019-10-03 16:15:14 +03:00
Pavel Djundik a552a36a4a
Merge pull request #3426 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.19.0
2019-10-03 16:15:06 +03:00
Pavel Djundik 577b1a5952
Merge pull request #3427 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.5.1
2019-10-03 16:14:59 +03:00
Pavel Djundik a26976918b
Merge pull request #3428 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.2.1
2019-10-03 16:14:53 +03:00
Pavel Djundik e7f1cff44d
Merge pull request #3431 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.23.2
2019-10-03 16:14:44 +03:00
Al McKinlay f163e20a93 Add public files for plugins 2019-10-02 10:33:08 +01:00
Renovate Bot e3abd5db48
Update dependency vuedraggable to v2.23.2 2019-10-02 03:22:19 +00:00
Renovate Bot 59ad41aea4
Update dependency husky to v3.0.8 2019-10-02 01:53:14 +00:00
Renovate Bot 667f203476
Update dependency eslint to v6.5.1 2019-10-01 01:55:12 +00:00
Renovate Bot 7d53aa145a
Update dependency mocha to v6.2.1 2019-09-29 13:54:05 +00:00
Renovate Bot 086237a06a
Update dependency yarn to v1.19.0 2019-09-28 16:43:10 +00:00
Pavel Djundik 048a272a61
Merge pull request #3424 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.4.0
2019-09-27 15:49:04 +03:00
Pavel Djundik b115f07c35
Merge pull request #3413 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.11.2
2019-09-27 15:48:57 +03:00
Renovate Bot 3bfd84ad5d
Update dependency web-push to v3.4.0 2019-09-27 12:21:02 +00:00
Renovate Bot 28f6971a27
Update dependency @fortawesome/fontawesome-free to v5.11.2 2019-09-26 12:02:14 +00:00
Pavel Djundik 7827d16571
Merge pull request #3417 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.41.0
2019-09-26 15:01:28 +03:00
Pavel Djundik a81a1e6c44
Merge pull request #3422 from thelounge/renovate/commander-3.x
Update dependency commander to v3.0.2
2019-09-26 15:00:53 +03:00
Renovate Bot 71841bf721
Update dependency commander to v3.0.2 2019-09-26 09:13:06 +00:00
Pavel Djundik 5d13e4c97d Check config owner synchronously
Fixes async warning printing during prompt when adding a user
2019-09-24 22:06:04 +03:00
Renovate Bot d6abc96a30
Update dependency webpack to v4.41.0 2019-09-24 16:19:10 +00:00
Pavel Djundik a24c03a35c Set correct file owner for created user files 2019-09-24 17:42:14 +03:00
Pavel Djundik fb8290399f
Merge pull request #3410 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.23.1
2019-09-24 14:00:37 +03:00
Pavel Djundik d90b3a5f0f
Merge pull request #3411 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.5
2019-09-24 14:00:31 +03:00
Pavel Djundik 36508faa2e
Merge pull request #3412 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.5.0
2019-09-24 14:00:25 +03:00
Pavel Djundik f8bc2ec285
Merge pull request #3414 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.6.2
2019-09-24 14:00:16 +03:00
Renovate Bot 4dd0f71843
Update babel monorepo to v7.6.2 2019-09-23 21:37:17 +00:00
Renovate Bot a2d636ff2d
Update dependency sinon to v7.5.0 2019-09-23 15:23:17 +00:00
Renovate Bot a69bb80500
Update dependency mochapack to v1.1.5 2019-09-23 07:39:18 +00:00
Renovate Bot d4e89127d0
Update dependency vuedraggable to v2.23.1 2019-09-21 15:20:33 +00:00
Pavel Djundik f293bdbdc3
Merge pull request #3408 from thelounge/renovate/socket.io-packages
Update socket.io packages to v2.3.0
2019-09-20 13:55:52 +03:00
Renovate Bot faf684576c
Update socket.io packages to v2.3.0 2019-09-20 10:26:43 +00:00
Pavel Djundik 2b4ee0d6c6
Merge pull request #3407 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.11.1
2019-09-19 13:47:14 +03:00
Renovate Bot 13e4af3600
Update dependency @fortawesome/fontawesome-free to v5.11.1 2019-09-19 08:39:14 +00:00
Pavel Djundik bfa97390be
Merge pull request #3406 from thelounge/xpaw/package-load-stack
Print error and stacktrace when package fails to load
2019-09-19 11:37:18 +03:00
Pavel Djundik b96e5cc042 Print error and stacktrace when package fails to load 2019-09-17 19:57:21 +03:00
Pavel Djundik a658d768d2
Merge pull request #3405 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.9
2019-09-17 12:40:09 +03:00
Renovate Bot fe0dc97197
Update dependency webpack-cli to v3.3.9 2019-09-17 08:28:20 +00:00
Pavel Djundik eba043d0b3
Merge pull request #3404 from thelounge/xpaw/keepnick
Implement keep nick when client gets "nick in use" on connection
2019-09-17 11:19:14 +03:00
Pavel Djundik 7e27f2d058
Merge pull request #3364 from thelounge/xpaw/active-chan-cursor
Use default cursor for active channels
2019-09-17 11:00:48 +03:00
Pavel Djundik 600115b8d1 Implement keep nick 2019-09-16 17:12:05 +03:00
Pavel Djundik d09a35b129 Use default cursor for active channels 2019-09-16 11:30:30 +03:00
Pavel Djundik c4236e0e12
Merge pull request #3391 from thelounge/xpaw/fix-3381
Move back to ldapjs dependency
2019-09-16 11:18:03 +03:00
Pavel Djundik cee3a50ddc Move back to ldapjs dependency
Fixes #3381
2019-09-15 22:42:27 +03:00
Pavel Djundik eb1d9079a3
Merge pull request #3403 from thelounge/renovate/stylelint-config-standard-19.x
Update dependency stylelint-config-standard to v19
2019-09-15 22:40:16 +03:00
Pavel Djundik 526cc126a0
Merge pull request #3397 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.3.0
2019-09-15 22:40:10 +03:00
Renovate Bot 34b0985587
Update dependency stylelint-config-standard to v19 2019-09-15 18:26:41 +00:00
Renovate Bot edc3e498e6
Update dependency eslint-config-prettier to v6.3.0 2019-09-15 18:26:29 +00:00
Pavel Djundik 0052390c4c
Merge pull request #3386 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.5
2019-09-15 21:25:44 +03:00
Pavel Djundik c728bcb95e
Merge pull request #3400 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.40.2
2019-09-15 21:25:36 +03:00
Pavel Djundik 860ea0b3f6
Merge pull request #3401 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.4.0
2019-09-15 21:25:30 +03:00
Pavel Djundik 959f2a7786
Merge pull request #3402 from thelounge/renovate/stylelint-11.x
Update dependency stylelint to v11
2019-09-15 21:25:22 +03:00
Renovate Bot 9a07a8f96c
Update dependency stylelint to v11 2019-09-15 14:33:10 +00:00
Renovate Bot bb604f2a2b
Update dependency eslint to v6.4.0 2019-09-14 01:50:04 +00:00
Renovate Bot 5d873d42a3
Update dependency webpack to v4.40.2 2019-09-13 14:35:44 +00:00
Renovate Bot 3b1c3f9c13
Update dependency husky to v3.0.5 2019-09-07 20:46:43 +00:00
Pavel Djundik 0e6252ef4d
Merge pull request #3395 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.6.0
2019-09-07 23:45:45 +03:00
Pavel Djundik b89aaf1030
Merge pull request #3394 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.8
2019-09-07 23:45:39 +03:00
Renovate Bot 8745910452
Update babel monorepo to v7.6.0 2019-09-06 17:40:42 +00:00
Renovate Bot 0567c38a4c
Update dependency webpack-cli to v3.3.8 2019-09-06 08:30:01 +00:00
Pavel Djundik 07da692c2b
Merge pull request #3392 from thelounge/node10
Bump minimum node version to v10
2019-09-06 11:29:14 +03:00
Pavel Djundik a564d2f8cb
Merge pull request #3393 from thelounge/github-ci
Add GitHub actions for CI
2019-09-06 11:25:36 +03:00
Pavel Djundik 9eff3b51d7 Allow extra slash on Windows in expandHome tests
Github CI on Windows ends up formatting it as 'd:\\tmp', this causes no issues besides the failing test
2019-09-04 22:51:58 +03:00
Pavel Djundik c546279d89 Setup github actions CI 2019-09-04 22:51:58 +03:00
Pavel Djundik 25dc6b52b4
Merge pull request #3388 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.2.0
2019-09-04 22:50:57 +03:00
Pavel Djundik 5a94727d79 Bump minimum node version to v10 2019-09-04 22:50:25 +03:00
Renovate Bot 3f52e15444
Update dependency eslint-config-prettier to v6.2.0 2019-09-04 10:21:23 +00:00
Pavel Djundik f62f92b36f
Merge pull request #3383 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.39.3
2019-09-04 13:20:11 +03:00
Pavel Djundik 70772ec92d
Merge pull request #3384 from thelounge/renovate/commander-3.x
Update dependency commander to v3.0.1
2019-09-04 13:19:59 +03:00
Pavel Djundik 5e4b8605b2
Merge pull request #3389 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.3.0
2019-09-04 13:19:54 +03:00
Pavel Djundik ecb0bb7590
Merge pull request #3387 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.4.2
2019-09-04 13:19:48 +03:00
Pavel Djundik d902a0ad67
Merge pull request #3385 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.3.0
2019-09-04 13:19:39 +03:00
Renovate Bot 9f76b83fa7
Update dependency file-type to v12.3.0 2019-09-03 16:11:00 +00:00
Renovate Bot d35b0fdb34
Update dependency sinon to v7.4.2 2019-09-02 11:53:23 +00:00
Renovate Bot f6b6a9138c
Update dependency eslint to v6.3.0 2019-08-30 20:20:07 +00:00
Renovate Bot 70ac60857c
Update dependency commander to v3.0.1 2019-08-30 08:58:45 +00:00
Renovate Bot 8bb7da8a55
Update dependency webpack to v4.39.3 2019-08-27 12:25:30 +00:00
Pavel Djundik 5ccd6b76c0
Merge pull request #3382 from thelounge/xpaw/upload-fixes
Some fixes in file uploading
2019-08-27 12:21:03 +03:00
Pavel Djundik 6f95e3769d
Merge pull request #3378 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.10.2
2019-08-25 21:25:00 +03:00
Pavel Djundik 05510c0694
Merge pull request #3375 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6.1.0
2019-08-25 21:24:54 +03:00
Pavel Djundik 58ad80c3bb
Merge pull request #3366 from gunnvaldr/patch-1
Adds data-current-channel to #chat-container
2019-08-25 20:38:08 +03:00
Renovate Bot 54c8e5bfc2
Update dependency eslint-config-prettier to v6.1.0 2019-08-25 17:27:10 +00:00
Renovate Bot c083b2ce19
Update dependency @fortawesome/fontawesome-free to v5.10.2 2019-08-25 17:26:59 +00:00
Pavel Djundik 0939adad0a
Merge pull request #3377 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.4
2019-08-25 20:26:02 +03:00
Pavel Djundik ccb1595ed3
Merge pull request #3369 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.7
2019-08-25 20:25:56 +03:00
Pavel Djundik d9844720f9
Merge pull request #3379 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.2.2
2019-08-25 20:25:47 +03:00
Pavel Djundik 554c602230 Do not request upload token if there's an upload in process 2019-08-25 20:23:32 +03:00
Pavel Djundik 04e1e004da Reset upload input so the same file can be selected again 2019-08-25 20:14:46 +03:00
Pavel Djundik 16d070c19e Update error messages for uploads 2019-08-25 20:14:34 +03:00
Renovate Bot 9e8e138359
Update dependency eslint to v6.2.2 2019-08-24 02:47:36 +00:00
Renovate Bot 846ab3ece3
Update dependency mochapack to v1.1.4 2019-08-22 10:05:57 +00:00
Renovate Bot 62ed80010f
Update dependency webpack-cli to v3.3.7 2019-08-21 20:15:43 +00:00
Pavel Djundik aadfede911
Merge pull request #3365 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.39.2
2019-08-21 23:14:11 +03:00
Pavel Djundik 7615f18536
Merge pull request #3371 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.2.1
2019-08-21 23:13:51 +03:00
Pavel Djundik cc1620b5c6
Merge pull request #3374 from thelounge/renovate/uuid-3.x
Update dependency uuid to v3.3.3
2019-08-21 23:13:44 +03:00
Pavel Djundik c4095c28b1
Merge pull request #3370 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.2.0
2019-08-21 23:13:35 +03:00
Pavel Djundik c244d1b9ed
Merge pull request #3368 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.4
2019-08-21 23:13:25 +03:00
Pavel Djundik 57aa286ab4
Merge pull request #3367 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.1.0
2019-08-21 23:13:09 +03:00
Renovate Bot 4fffb4af2b
Update dependency eslint to v6.2.1 2019-08-20 11:50:08 +00:00
Renovate Bot 0a0626cc5f
Update dependency uuid to v3.3.3 2019-08-19 13:29:38 +00:00
Renovate Bot 3be0285467
Update dependency webpack to v4.39.2 2019-08-19 07:50:03 +00:00
Renovate Bot b864674e84
Update dependency sqlite3 to v4.1.0 2019-08-19 07:49:52 +00:00
Renovate Bot 4b7fdc85cc
Update dependency husky to v3.0.4 2019-08-19 07:49:42 +00:00
Renovate Bot 2d88116e5a
Update dependency file-type to v12.2.0 2019-08-19 07:49:31 +00:00
Pavel Djundik 4d665b6a5e v3.2.0 2019-08-18 21:53:20 +03:00
Pavel Djundik 7169622d01 Add changelog entry for v3.2.0 2019-08-18 21:52:32 +03:00
Gunnvaldr Pope 2b91bf0374
Adds data-current-channel to #chat-container
Allows for broader customization of CSS per channel(s).
2019-08-13 16:24:34 -05:00
Pavel Djundik 3c9ba130a0 Allow saving github token to a file 2019-08-13 12:43:47 +03:00
Pavel Djundik 9ad785c44e v3.2.0-rc.2 2019-08-13 12:41:59 +03:00
Pavel Djundik 0f72b57d36 Changelog entry for v3.2.0-rc.2 2019-08-13 12:41:19 +03:00
Pavel Djundik d7dcdd1cd4
Merge pull request #3361 from thelounge/xpaw/unknown-cmd-error
Display an error on unknown command
2019-08-13 10:28:30 +03:00
Pavel Djundik 4753d58c0b Display an error on unknown command 2019-08-12 11:03:52 +03:00
Pavel Djundik 68925a532d
Merge pull request #3360 from thelounge/renovate/commander-3.x
Update dependency commander to v3
2019-08-12 10:48:40 +03:00
Renovate Bot f4ce7ecd1e
Update dependency commander to v3 2019-08-11 14:50:00 +00:00
Pavel Djundik aa6475e83d
Merge pull request #3356 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.3
2019-08-11 17:49:29 +03:00
Pavel Djundik 217cfb4701
Merge pull request #3349 from ollipa/ollipa/edit-topic
Add functionality to edit channel topic from the user interface
2019-08-11 17:48:50 +03:00
ollipa e69e448396 add save button to edit topic input field 2019-08-11 17:34:01 +03:00
ollipa 49652fc40a make channel topic editable from user interface 2019-08-11 15:29:08 +03:00
Renovate Bot e241d31c15
Update dependency husky to v3.0.3 2019-08-09 17:48:37 +00:00
Pavel Djundik fc9e20c09d
Merge pull request #3359 from plett/activity-shortcut
Add keybind for cycling to the next unread window
2019-08-09 20:29:05 +03:00
Paul Lettington c6b19d5144 Add keybind for cycling to the next unread window 2019-08-09 15:16:44 +01:00
Pavel Djundik b4eb538903
Merge pull request #3347 from thelounge/xpaw/focus-on-special-upd
Open list channel on data updates
2019-08-07 15:16:24 +03:00
Pavel Djundik 51fb42c379
Merge pull request #3352 from thelounge/xpaw/truly-raw
Make /raw actually write to network as-is
2019-08-07 15:15:36 +03:00
Pavel Djundik d1e7392b97
Merge pull request #3353 from thelounge/renovate/textcomplete-0.x
Update dependency textcomplete to v0.18.0
2019-08-07 15:10:21 +03:00
Pavel Djundik 91f944f5f5
Merge pull request #3355 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.4.1
2019-08-07 15:10:02 +03:00
Renovate Bot c2c94025f3
Update dependency sinon to v7.4.1 2019-08-06 09:33:42 +00:00
Renovate Bot 8b904fa136
Update dependency textcomplete to v0.18.0 2019-08-06 04:12:54 +00:00
Pavel Djundik 858f8425fd Make /raw actually write to network as-is 2019-08-05 20:16:39 +03:00
Pavel Djundik 96efaed07a Open list channel on data updates 2019-08-04 14:03:04 +03:00
Pavel Djundik 1f27c4fad4 v3.2.0-rc.1 2019-08-04 12:04:56 +03:00
Pavel Djundik ac2165bdca Add changelog entry for v3.2.0-rc.1 2019-08-04 12:04:43 +03:00
Pavel Djundik 72bebd8681
Merge pull request #3326 from thelounge/xpaw/theme-color
Allow themes to change theme-color
2019-08-03 22:28:20 +03:00
Pavel Djundik 85025a6840
Merge pull request #3329 from thelounge/xpaw/sw-error
Send service worker fetch errors to client
2019-08-03 22:27:53 +03:00
Pavel Djundik ecb4dd9675
Merge pull request #3335 from thelounge/xpaw/upload-sanity
Handle upload token requesting in a better way
2019-08-03 22:23:20 +03:00
Pavel Djundik b8948856f3
Merge pull request #3343 from thelounge/xpaw/fix-formatting
Fix formatting hotkeys on non english locales
2019-08-03 22:14:31 +03:00
Pavel Djundik 65713e5509
Merge pull request #3339 from thelounge/xpaw/statusmsg
Parse target group for sent messages when echo-message is not enabled
2019-08-03 22:14:24 +03:00
Pavel Djundik f4cf33da4b
Merge pull request #3342 from thelounge/xpaw/disable-io-cookie
Disable io cookie
2019-08-03 22:14:15 +03:00
Pavel Djundik c8819e9a13 Fix formatting hotkeys on non english locales 2019-08-03 14:16:13 +03:00
Pavel Djundik 7bb588be5d
Merge pull request #3341 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.10.1
2019-08-03 12:06:42 +03:00
Pavel Djundik 59d2d6fec8 Disable io cookie
Ref https://github.com/socketio/socket.io/issues/2276
2019-08-03 12:03:02 +03:00
Renovate Bot 914ad9f11a
Update dependency @fortawesome/fontawesome-free to v5.10.1 2019-08-02 19:53:47 +00:00
Pavel Djundik 580d83858c
Merge pull request #3327 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6.5.0
2019-08-02 21:58:59 +03:00
Renovate Bot 5345d84d1f
Update dependency package-json to v6.5.0 2019-08-02 17:12:44 +00:00
Pavel Djundik db126dc75c
Merge pull request #3328 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.39.1
2019-08-02 20:11:50 +03:00
Pavel Djundik e0879ed075
Merge pull request #3333 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.0.4
2019-08-02 20:11:36 +03:00
Pavel Djundik 9c7e27ada4
Merge pull request #3330 from thelounge/renovate/semver-6.x
Update dependency semver to v6.3.0
2019-08-02 20:11:20 +03:00
Pavel Djundik d4a729d316
Merge pull request #3334 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.1.0
2019-08-02 20:11:10 +03:00
Pavel Djundik 1650383846
Merge pull request #3336 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.10.0
2019-08-02 20:10:59 +03:00
Pavel Djundik b3c9a57d0c
Merge pull request #3337 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.2
2019-08-02 20:10:50 +03:00
Pavel Djundik 734699de5b
Merge pull request #3340 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.3
2019-08-02 20:10:38 +03:00
Renovate Bot ea8d734fc2
Update dependency webpack to v4.39.1 2019-08-02 12:40:27 +00:00
Renovate Bot 2cdfe5ee7a
Update dependency mochapack to v1.1.3 2019-08-02 10:44:22 +00:00
Pavel Djundik ad984fa377 Parse target group for sent messages when echo-message is not enabled 2019-08-01 00:16:00 +03:00
Renovate Bot 805a86c67e
Update dependency husky to v3.0.2 2019-07-29 17:22:56 +00:00
Renovate Bot 5f9a706fe0
Update dependency @fortawesome/fontawesome-free to v5.10.0 2019-07-29 15:16:40 +00:00
Pavel Djundik 932d9c809b Handle upload token requesting in a better way 2019-07-29 11:04:33 +03:00
Renovate Bot e92082de57
Update dependency file-type to v12.1.0 2019-07-26 11:32:30 +00:00
Renovate Bot ed911ddba4
Update dependency copy-webpack-plugin to v5.0.4 2019-07-26 10:41:26 +00:00
Renovate Bot 8514503fc3
Update dependency semver to v6.3.0 2019-07-23 19:27:55 +00:00
Pavel Djundik 5041e82980 Send service worker fetch errors to client 2019-07-23 15:31:26 +03:00
Pavel Djundik efa0aeb2c6 Allow themes to change theme-color 2019-07-22 19:50:04 +03:00
Pavel Djundik 526a689e14
Merge pull request #3323 from thelounge/renovate/babel-plugin-istanbul-5.x
Update dependency babel-plugin-istanbul to v5.2.0
2019-07-22 12:01:37 +03:00
Renovate Bot b7f445ade3
Update dependency babel-plugin-istanbul to v5.2.0 2019-07-21 14:50:38 +00:00
Pavel Djundik 998bdd49aa
Merge pull request #3321 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6.1.0
2019-07-21 10:59:47 +03:00
Renovate Bot fc979c17f7
Update dependency eslint to v6.1.0 2019-07-21 04:11:04 +00:00
Pavel Djundik 2500602d3b
Merge pull request #3320 from thelounge/xpaw/fix-3309
Fix channel list not working on some touch devices
2019-07-19 22:42:41 +03:00
Pavel Djundik ba356ae34c
Merge pull request #1873 from thelounge/astorije/outlines
Add custom focus outlines for inputs and green buttons
2019-07-19 16:45:15 +03:00
Jérémie Astori e246c06c32 Do not silence outline of all elements, and add custom outline where possible
- Tweak outlines
- Consolidate focus shadows between inputs and buttons, apply custom focus to whole page (i.e. on "Join a channel" form), cleanup
- Do not add custom outlines on checkboxes/radios as browsers are not doing this too well
- Apply hover effect on all inputs, not just in `#windows`
2019-07-19 16:12:15 +03:00
Pavel Djundik fc532be5df
Merge pull request #2760 from thelounge/mcinkay/plugins/show-updates
Add check for outdated packages, and show on the help screen.
2019-07-19 16:06:53 +03:00
Pavel Djundik d7ff13a41d
Merge pull request #3319 from thelounge/renovate/eslint-config-prettier-6.x
Update dependency eslint-config-prettier to v6
2019-07-19 15:36:17 +03:00
Alistair McKinlay 20816d509d Add check for outdated packages, and show on the help screen. 2019-07-19 13:33:09 +01:00
Pavel Djundik f40e35515f Remove linebreak-style 2019-07-19 14:44:46 +03:00
Pavel Djundik a7bdc99d47 Fix channel list not working on some touch devices
Fixes #3309
2019-07-19 14:27:59 +03:00
Renovate Bot e536730dc1
Update dependency eslint-config-prettier to v6 2019-07-19 10:56:44 +00:00
Al McKinlay 9ef5c6c67e
Set up prettier for JS/Vue files (#3312)
Set up prettier for JS/Vue files
2019-07-19 11:55:55 +01:00
Alistair McKinlay 33de4fb4f4 Add prettier info to CONTRIBUTING.md 2019-07-19 11:30:43 +01:00
Alistair McKinlay cc7b4e4817 Fix prettier breaking eslint-disable for confirm 2019-07-19 11:27:40 +01:00
Jérémie Astori 2fbdbead55 WIP Improve Prettified Vue code 2019-07-19 11:27:40 +01:00
Alistair McKinlay 133e7bf710 Format js/vue with prettier 2019-07-19 11:27:40 +01:00
Alistair McKinlay 48eeb11391 Set up prettier on js/vue 2019-07-19 11:24:30 +01:00
Pavel Djundik 7e5c2672b2
Merge pull request #3307 from thelounge/xpaw/browser-object
Store ip and language in a separate object in user file
2019-07-19 13:11:20 +03:00
Pavel Djundik 06d3178633
Merge pull request #3317 from thelounge/renovate/lodash-monorepo
Update dependency lodash to v4.17.15
2019-07-19 13:00:00 +03:00
Renovate Bot 19d7333dce
Update dependency lodash to v4.17.15 2019-07-19 08:32:29 +00:00
Pavel Djundik 9f1b9fa310
Merge pull request #3311 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.36.1
2019-07-19 11:30:56 +03:00
Pavel Djundik ef6c884441
Merge pull request #3313 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.5.5
2019-07-19 11:30:48 +03:00
Pavel Djundik 1922314827
Merge pull request #3316 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.2.0
2019-07-19 11:30:39 +03:00
Pavel Djundik 4371cd6db1
Merge pull request #3315 from thelounge/renovate/husky-3.x
Update dependency husky to v3.0.1
2019-07-19 11:30:31 +03:00
Pavel Djundik 2af6b87369
Merge pull request #3314 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.7.1
2019-07-19 11:30:19 +03:00
Renovate Bot fe0c9a22da
Update dependency mocha to v6.2.0 2019-07-18 21:56:34 +00:00
Renovate Bot 9003566d5c
Update dependency husky to v3.0.1 2019-07-18 21:37:33 +00:00
Renovate Bot f5c3111445
Update dependency webpack to v4.36.1 2019-07-18 10:33:51 +00:00
Renovate Bot 3ff71701a4
Update dependency vue-loader to v15.7.1 2019-07-18 10:33:39 +00:00
Renovate Bot a1c307ee8d
Update babel monorepo to v7.5.5 2019-07-18 10:33:21 +00:00
Pavel Djundik 0ff5a7df67
Merge pull request #3305 from thelounge/xpaw/init-reconnect-state
Merge network/channel objects when reconnecting to keep object references
2019-07-18 12:40:44 +03:00
Pavel Djundik 03233c3f4d
Merge pull request #3310 from thelounge/xpaw/improve-raw
Improve raw messages
2019-07-18 11:58:46 +03:00
Pavel Djundik 803de9a877
Merge pull request #3060 from thelounge/astorije/smaller-prettier
Set up Prettier on HTML, JSON, Markdown, and YAML files
2019-07-17 12:52:52 +03:00
Alistair McKinlay ab8d819193 Set up Prettier on md, html, json, and yaml 2019-07-17 10:22:30 +01:00
Pavel Djundik 2b1197880d Merge network/channel objects when reconnecting 2019-07-17 12:07:49 +03:00
Pavel Djundik 2741421401
Merge pull request #3306 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.2
2019-07-17 10:44:34 +03:00
Pavel Djundik 701be850b6
Merge pull request #3308 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.8.0
2019-07-17 10:44:18 +03:00
Pavel Djundik e04bfe39bf Improve raw messages 2019-07-17 10:34:23 +03:00
Renovate Bot 48767d6030
Update dependency mini-css-extract-plugin to v0.8.0 2019-07-16 20:51:08 +00:00
Pavel Djundik 54a4085b68 Store ip and language in a separate object in user file 2019-07-16 13:00:29 +03:00
Renovate Bot 6b70f2a99f
Update dependency mochapack to v1.1.2 2019-07-16 09:09:17 +00:00
Pavel Djundik 01347787b7
Merge pull request #3297 from thelounge/xpaw/better-disable-touch
A better way of disabling sorting on touch devices
2019-07-15 12:46:10 +03:00
Pavel Djundik ee8228ced2
Merge pull request #3298 from thelounge/renovate/linkify-it-2.x
Update dependency linkify-it to v2.2.0
2019-07-15 10:36:12 +03:00
Pavel Djundik 8b38cbcb52
Merge pull request #3300 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.17.3
2019-07-15 10:36:00 +03:00
Pavel Djundik 442389c544
Merge pull request #3304 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.6
2019-07-15 10:35:51 +03:00
Pavel Djundik eac4fb73f2
Merge pull request #3299 from thelounge/xpaw/fix-sync-sort
Fix channel sorting to work across clients on Vue
2019-07-15 10:33:37 +03:00
Renovate Bot 7f481634f0
Update dependency webpack-cli to v3.3.6 2019-07-14 13:10:50 +00:00
Renovate Bot 10948b3bb7
Update dependency yarn to v1.17.3 2019-07-12 21:42:50 +00:00
Pavel Djundik bf2c6a6bcf Fix channel sorting to work across clients on Vue 2019-07-12 19:47:29 +03:00
Renovate Bot ac23215115
Update dependency linkify-it to v2.2.0 2019-07-12 12:11:34 +00:00
Pavel Djundik b2e5be33d6 A better way of disabling sorting on touch devices 2019-07-12 13:43:47 +03:00
Pavel Djundik 820a67802d
Merge pull request #3294 from thelounge/xpaw/fix-3293
Verify reverse DNS when looking up hostnames for webirc
2019-07-12 11:50:50 +03:00
Pavel Djundik a3c77266e0
Merge pull request #3296 from thelounge/xpaw/fix-3295
Correctly parse numbers when passed in CLI
2019-07-12 11:50:40 +03:00
Pavel Djundik 295b3a4251 Correctly parse numbers when passed in CLI
Fixes #3295
2019-07-12 10:56:19 +03:00
Pavel Djundik d3a98a523f Verify reverse DNS when looking up hostnames for webirc
Fixes #3293
2019-07-11 23:20:04 +03:00
Pavel Djundik 257ce5d0a8 v3.1.1 2019-07-11 19:47:38 +03:00
Pavel Djundik 776b20cf4f Update changelog 2019-07-11 19:47:35 +03:00
Pavel Djundik f1594e8a00
Merge pull request #3292 from thelounge/upgrade-lock
Upgrade packages and the lock file
2019-07-11 19:46:46 +03:00
Renovate Bot 011fd99503 Update dependency thelounge-ldapjs-non-maintained-fork to v1.0.4 2019-07-11 19:27:29 +03:00
Pavel Djundik 5f13d3308f Upgrade yarn lockfile 2019-07-11 19:27:29 +03:00
Renovate Bot f20ec1b9c3 Update dependency webpack to v4.35.3 2019-07-11 19:27:29 +03:00
Renovate Bot 13eaed3eb9 Update babel monorepo to v7.5.4 2019-07-11 19:27:29 +03:00
Pavel Djundik 6da7aa4cb9 v3.1.0 2019-07-11 18:41:54 +03:00
Pavel Djundik db1144749e Changelog for v3.1.0
skip ci
2019-07-11 18:40:03 +03:00
Pavel Djundik 20ae2e0bed
Merge pull request #3289 from thelounge/renovate/lodash-monorepo
Update dependency lodash to v4.17.14
2019-07-11 11:09:35 +03:00
Renovate Bot d48d619cb1
Update dependency lodash to v4.17.14 2019-07-10 15:47:10 +00:00
Pavel Djundik 6660041376
Merge pull request #3290 from thelounge/renovate/thelounge-ldapjs-non-maintained-fork-1.x
Update dependency thelounge-ldapjs-non-maintained-fork to v1.0.3
2019-07-10 12:34:49 +03:00
Renovate Bot 7595880517
Update dependency thelounge-ldapjs-non-maintained-fork to v1.0.3 2019-07-10 09:11:31 +00:00
Pavel Djundik 9e6a3569d5
Merge pull request #3285 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12.0.1
2019-07-08 18:02:24 +03:00
Renovate Bot 3a6df0a36f
Update dependency file-type to v12.0.1 2019-07-08 13:58:15 +00:00
Pavel Djundik 2ff8d09a44
Merge pull request #3286 from thelounge/xpaw/webirc-warn
Only warn for top-level unknown config keys
2019-07-08 16:34:17 +03:00
Pavel Djundik 48ae5a4cdd Only warn for top-level unknown config keys 2019-07-08 14:12:31 +03:00
Pavel Djundik 85ffaa1ec7 v3.1.0-rc.1 2019-07-05 17:27:45 +03:00
Pavel Djundik 983c6602a8 Add changelog for v3.1.0-rc.1 2019-07-05 17:27:13 +03:00
Pavel Djundik 807856dbef
Merge pull request #3281 from thelounge/mcinkay/input-refactor
Refactor command API for plugins
2019-07-05 17:26:06 +03:00
Pavel Djundik 492ab82255
Merge pull request #3273 from thelounge/renovate/fs-extra-8.x
Update dependency fs-extra to v8.1.0
2019-07-05 17:08:13 +03:00
Pavel Djundik 633b1d506c
Merge pull request #3274 from thelounge/renovate/semver-6.x
Update dependency semver to v6.2.0
2019-07-05 17:08:04 +03:00
Pavel Djundik 7a08d8ac3f
Merge pull request #3275 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.35.2
2019-07-05 17:07:56 +03:00
Pavel Djundik d5ac3a7040
Merge pull request #3277 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.5.0
2019-07-05 17:07:47 +03:00
Alistair McKinlay 1fcdc51861 Change the api for calling plugin commands 2019-07-05 15:04:32 +01:00
Renovate Bot 63ebf1d301
Update dependency webpack to v4.35.2 2019-07-05 09:26:54 +00:00
Renovate Bot 38a949bdab
Update dependency semver to v6.2.0 2019-07-05 09:26:40 +00:00
Renovate Bot 5f19eea6a2
Update dependency fs-extra to v8.1.0 2019-07-05 09:26:27 +00:00
Renovate Bot 6cc8341543
Update babel monorepo to v7.5.0 2019-07-05 09:26:17 +00:00
Pavel Djundik 85acfdcf92
Merge pull request #3280 from thelounge/xpaw/sqlite-msg
Change unable to load sqlite3 message
2019-07-05 11:52:58 +03:00
Pavel Djundik 2ce93e82c7
Merge pull request #3279 from thelounge/xpaw/plugin-info
Add a message about experimental API
2019-07-05 11:51:46 +03:00
Pavel Djundik a56e6de51f Change unable to load sqlite3 message 2019-07-05 10:32:14 +03:00
Pavel Djundik 95a3ec42c2 Add a message about experimental API 2019-07-05 10:26:22 +03:00
Pavel Djundik bac95325dc
Merge pull request #3276 from thelounge/xpaw/unhandled-params-check
Make sure unhandled command has params
2019-07-03 11:57:29 +03:00
Pavel Djundik 4765f06940
Make sure unhandled command has params 2019-07-03 11:20:29 +03:00
Al McKinlay 1b38e6cc02
Add support for command plugins (#2757) 2019-07-02 18:25:43 +01:00
Alistair McKinlay 4cbe72f635 Add support for command plugins 2019-07-02 17:02:05 +01:00
Pavel Djundik 0d3fc7b4fb v3.1.0-pre.3 2019-06-28 17:59:30 +03:00
Pavel Djundik db651276ba Update changelog 2019-06-28 17:59:24 +03:00
Pavel Djundik fb118b43ca
Merge pull request #3272 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.4.0
2019-06-28 17:56:45 +03:00
Renovate Bot e34c966ba8
Update dependency irc-framework to v4.4.0 2019-06-28 14:09:51 +00:00
Pavel Djundik edc316cf04
Merge pull request #3264 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.35.0
2019-06-25 13:44:38 +03:00
Renovate Bot 5f1aa1b24a
Update dependency webpack to v4.35.0 2019-06-25 09:10:29 +00:00
Pavel Djundik 126ad16bc0
Merge pull request #3268 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.5
2019-06-25 12:08:33 +03:00
Pavel Djundik f0d0511b5f
Merge pull request #3267 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.23.0
2019-06-25 12:08:18 +03:00
Pavel Djundik 2196e15799
Merge pull request #3270 from thelounge/renovate/semver-6.x
Update dependency semver to v6.1.2
2019-06-25 12:08:08 +03:00
Pavel Djundik db1bc95e78
Merge pull request #3266 from thelounge/renovate/eslint-6.x
Update dependency eslint to v6
2019-06-25 12:07:56 +03:00
Pavel Djundik 1425130436 Update eslint and eslint-plugin-vue, fix rules 2019-06-25 11:51:47 +03:00
Renovate Bot 15e1a0af7a
Update dependency vuedraggable to v2.23.0 2019-06-24 01:55:52 +00:00
Renovate Bot 0df403433d
Update dependency semver to v6.1.2 2019-06-24 01:50:12 +00:00
Renovate Bot 6a0229ff43
Update dependency webpack-cli to v3.3.5 2019-06-23 12:49:29 +00:00
Jérémie Astori 921307a914
Merge pull request #3255 from thelounge/renovate/file-type-12.x
Update dependency file-type to v12
2019-06-16 00:51:08 -04:00
Jérémie Astori 14de647a1b
Merge pull request #3252 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.4
2019-06-16 00:50:38 -04:00
Jérémie Astori f093f29302
Merge pull request #3257 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.9
2019-06-16 00:50:19 -04:00
Renovate Bot b52fe1a782
Update dependency file-type to v12 2019-06-14 19:01:06 +00:00
Renovate Bot 56306b995c
Update dependency webpack-cli to v3.3.4 2019-06-14 19:00:54 +00:00
Renovate Bot 851c6ebac8
Update dependency sqlite3 to v4.0.9 2019-06-14 19:00:40 +00:00
Pavel Djundik 2561c71a96
Merge pull request #3259 from emersonveenstra/multiple-notice-fixes
Only prepend text with 'Notice: ' if it's the nick it's from
2019-06-14 21:13:24 +03:00
Emerson Veenstra ef6684b77b Only prepend text with 'Notice: ' if it's the nick it's from 2019-06-14 13:51:42 -04:00
Pavel Djundik 01bc09d01e
Merge pull request #3258 from thelounge/xpaw/fix-subpath-upload
Fix file uploading when lounge is proxied in a subfolder
2019-06-14 10:45:54 +03:00
Pavel Djundik 7886e831bb Fix file uploading when lounge is proxied in a subfolder 2019-06-14 00:58:19 +03:00
Jérémie Astori d999c22df7
Merge pull request #3256 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.34.0
2019-06-12 20:30:04 -04:00
Renovate Bot eac14ba58b
Update dependency webpack to v4.34.0 2019-06-12 23:28:24 +00:00
Pavel Djundik 7c823c90a5
Merge pull request #3254 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6.4.0
2019-06-12 11:05:17 +03:00
Renovate Bot d8f080ede6
Update dependency package-json to v6.4.0 2019-06-11 17:26:08 +00:00
Pavel Djundik 001b643d88
Merge pull request #3250 from thelounge/xpaw/identd-error
Add extra socket/server error event handlers
2019-06-11 10:24:24 +03:00
Pavel Djundik 521b62be24
Merge pull request #3251 from thelounge/xpaw/emojis-v12
Use github's emoji data (support unicode 12)
2019-06-11 10:14:03 +03:00
Pavel Djundik b95c8236bd Use @github's emoji data 2019-06-10 22:17:00 +03:00
Pavel Djundik 9949fa9963
Merge pull request #3247 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.3
2019-06-10 16:17:19 +03:00
Pavel Djundik d36f60bb4f Add extra socket error handlers 2019-06-10 13:13:27 +03:00
Pavel Djundik 17e01746ba Add server error event handler in the identd server 2019-06-10 12:48:43 +03:00
Renovate Bot a4f829e0a5
Update dependency webpack-cli to v3.3.3 2019-06-10 09:45:39 +00:00
Pavel Djundik be1cfae166
Merge pull request #3249 from thelounge/renovate/ua-parser-js-0.x
Update dependency ua-parser-js to v0.7.20
2019-06-10 12:44:15 +03:00
Pavel Djundik 3b3b2f4304
Merge pull request #3248 from thelounge/renovate/stylelint-10.x
Update dependency stylelint to v10.1.0
2019-06-10 12:44:07 +03:00
Pavel Djundik 25d5ffee78
Merge pull request #3246 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.9.0
2019-06-10 12:43:55 +03:00
Pavel Djundik 0c53d784aa
Merge pull request #3245 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.33.0
2019-06-10 12:43:46 +03:00
Pavel Djundik 64791d1109
Merge pull request #3240 from thelounge/renovate/semver-6.x
Update dependency semver to v6.1.1
2019-06-10 12:43:39 +03:00
Pavel Djundik 84d30f9842
Merge pull request #3242 from thelounge/renovate/filenamify-4.x
Update dependency filenamify to v4.1.0
2019-06-10 12:43:30 +03:00
Renovate Bot 0317c59bbc
Update dependency ua-parser-js to v0.7.20 2019-06-08 14:55:59 +00:00
Renovate Bot 06648da93e
Update dependency stylelint to v10.1.0 2019-06-07 14:34:02 +00:00
Renovate Bot 515b64c596
Update dependency @fortawesome/fontawesome-free to v5.9.0 2019-06-04 20:33:40 +00:00
Renovate Bot dd30b37fa9
Update dependency webpack to v4.33.0 2019-06-04 19:41:38 +00:00
Renovate Bot 67a7215e63
Update dependency filenamify to v4.1.0 2019-05-30 07:03:06 +00:00
Renovate Bot 1dfdbbcc78
Update dependency semver to v6.1.1 2019-05-28 17:18:37 +00:00
Pavel Djundik edf7f001ae Update changelog 2019-05-28 19:06:57 +03:00
Pavel Djundik a4ebafabcd v3.1.0-pre.2 2019-05-28 19:06:18 +03:00
Pavel Djundik a6d8dfcc8a
Merge pull request #3239 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.7.0
2019-05-28 19:03:28 +03:00
Renovate Bot 5abbae1c75
Update dependency mini-css-extract-plugin to v0.7.0 2019-05-27 16:17:22 +00:00
Pavel Djundik 29de64e36e
Merge pull request #3232 from thelounge/renovate/file-type-11.x
Update dependency file-type to v11.1.0
2019-05-26 23:11:22 +03:00
Renovate Bot 94d6718c3b
Update dependency file-type to v11.1.0 2019-05-26 15:05:14 +00:00
Pavel Djundik c731b57911
Merge pull request #3237 from thelounge/xpaw/fix-limit
Remove bogus prefetch limit
2019-05-26 18:04:26 +03:00
Pavel Djundik deaf0514c7
Merge pull request #3238 from thelounge/renovate/express-4.x
Update dependency express to v4.17.1
2019-05-26 18:03:18 +03:00
Pavel Djundik 8e628584f1
Merge pull request #3229 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.4.5
2019-05-26 18:03:11 +03:00
Pavel Djundik f8f47d7c68
Merge pull request #3230 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.32.2
2019-05-26 18:03:02 +03:00
Pavel Djundik aaff970571
Merge pull request #3231 from thelounge/renovate/semver-6.x
Update dependency semver to v6.1.0
2019-05-26 18:02:54 +03:00
Pavel Djundik e910ab5194
Merge pull request #3235 from thelounge/xpaw/root-warning
Print a warning when running as root
2019-05-26 18:02:00 +03:00
Renovate Bot 4e2a94583a
Update dependency express to v4.17.1 2019-05-26 04:30:27 +00:00
Pavel Djundik cdcd7df425
Remove bogus prefetch limit 2019-05-25 15:40:55 +03:00
Renovate Bot e26687bbd3
Update dependency webpack to v4.32.2 2019-05-25 12:34:34 +00:00
Renovate Bot c9d857dbb4
Update dependency semver to v6.1.0 2019-05-25 12:34:22 +00:00
Renovate Bot d5e1146776
Update babel monorepo to v7.4.5 2019-05-25 12:33:56 +00:00
Pavel Djundik e71bd3a9a3
Merge pull request #3236 from thelounge/xpaw/abort-error-msg
Change upload abort error message
2019-05-25 14:59:32 +03:00
Pavel Djundik 702aa6fdfa Change upload abort error message 2019-05-24 16:43:27 +03:00
Pavel Djundik 39d8a6a7de
Merge pull request #3226 from SwayUser/paste-image
Add paste file functionality
2019-05-21 20:24:27 +03:00
Pavel Djundik a9e774b13b Print a warning when running as root 2019-05-20 18:17:35 +03:00
Pavel Djundik 559e464216
Merge pull request #3228 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.32.0
2019-05-20 15:14:46 +03:00
Renovate Bot ee0f0e8727
Update dependency webpack to v4.32.0 2019-05-20 09:58:20 +00:00
Pavel Djundik 779ef07442
Merge pull request #3227 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.21.0
2019-05-20 12:42:41 +03:00
Renovate Bot 5b73f32023
Update dependency vuedraggable to v2.21.0 2019-05-20 09:12:28 +00:00
SwayUser 4555cf7dcf Add paste file functionality 2019-05-20 10:34:56 +02:00
Pavel Djundik 3ebc4db256
Merge pull request #3223 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.3.5
2019-05-18 12:10:44 +03:00
Pavel Djundik 786bcc5691
Merge pull request #3225 from thelounge/renovate/express-4.x
Update dependency express to v4.17.0
2019-05-18 12:10:22 +03:00
Renovate Bot 6b65d63a29
Update dependency express to v4.17.0 2019-05-17 02:00:36 +00:00
Renovate Bot faed0b0439
Update dependency web-push to v3.3.5 2019-05-16 15:43:17 +00:00
Pavel Djundik 67be3d66df
Merge pull request #3222 from thelounge/renovate/fs-extra-8.x
Update dependency fs-extra to v8.0.1
2019-05-14 12:19:22 +03:00
Renovate Bot 39c998fa34
Update dependency fs-extra to v8.0.1 2019-05-13 17:03:39 +00:00
Pavel Djundik 46033ee29f
Merge pull request #3218 from thelounge/xpaw/fix-3089
Disable touch tooltip on "jump to recent messages" button
2019-05-13 17:15:42 +03:00
Pavel Djundik 721c0d4374
Disable touch tooltip on "jump to recent messages" button
Fixes #3089
2019-05-13 14:58:57 +03:00
Al McKinlay 0967fa26cf
Remove incorrect lowest node version from readme (#3217)
Remove incorrect lowest node version from readme
2019-05-13 09:14:21 +01:00
Al McKinlay 8687a513de
Remove incorrect lowest node version from readme
We are only supporting 8 and up. Think this has been around for a long time, apparently.
2019-05-13 08:52:14 +01:00
Pavel Djundik 806650dcf9
Merge pull request #3179 from thelounge/xpaw/request-to-got
Replace `request` with `got`
2019-05-13 10:51:14 +03:00
Pavel Djundik fe68f2a1ee Replace request with got 2019-05-13 10:30:43 +03:00
Pavel Djundik 21cb4dca1e
Merge pull request #2761 from thelounge/mcinkay/plugins/server-options
Add server config api
2019-05-13 10:23:05 +03:00
Pavel Djundik 0eddb9153d
Merge pull request #3138 from Dominent/send-message-after-query
Move query to msg, fix #3049
2019-05-13 10:22:52 +03:00
Alistair McKinlay 4c35b80b88 Move query to msg, fix #3049 2019-05-13 08:10:08 +01:00
Al McKinlay af976c52c3 Add server config api 2019-05-13 07:44:41 +01:00
Pavel Djundik ff8b706cc6
Merge pull request #3216 from thelounge/renovate/babel-loader-8.x
Update dependency babel-loader to v8.0.6
2019-05-12 10:45:08 +03:00
Pavel Djundik 34e48d6040
Merge pull request #3214 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.3.4
2019-05-12 10:44:59 +03:00
Pavel Djundik 8ce56a6da6
Merge pull request #3191 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.4.4
2019-05-12 10:44:51 +03:00
Renovate Bot 7fe5267d1d
Update dependency babel-loader to v8.0.6 2019-05-12 06:23:26 +00:00
Renovate Bot 5e856730b6
Update dependency web-push to v3.3.4 2019-05-11 18:21:55 +00:00
Renovate Bot 702decab5c
Update babel monorepo to v7.4.4 2019-05-11 18:21:44 +00:00
Pavel Djundik 81aea4994f v3.1.0-pre.1 2019-05-11 21:19:00 +03:00
Pavel Djundik 1247d29fcf Add changelog entry for v3.1.0-pre.1 2019-05-11 21:18:50 +03:00
Pavel Djundik 85aad8c9ba
Merge pull request #3194 from thelounge/renovate/jquery-3.x
Update dependency jquery to v3.4.1
2019-05-11 21:15:27 +03:00
Pavel Djundik bd3bb08805
Merge pull request #3195 from thelounge/renovate/babel-plugin-istanbul-5.x
Update dependency babel-plugin-istanbul to v5.1.4
2019-05-11 21:15:18 +03:00
Pavel Djundik 67adbc328a
Merge pull request #3199 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.2
2019-05-11 21:15:09 +03:00
Pavel Djundik 0979fffd08
Merge pull request #3215 from thelounge/renovate/fs-extra-8.x
Update dependency fs-extra to v8
2019-05-11 21:15:00 +03:00
Renovate Bot 74b17ca5cb
Update dependency fs-extra to v8 2019-05-11 14:46:25 +00:00
Renovate Bot 8bda748096
Update dependency webpack-cli to v3.3.2 2019-05-11 09:53:27 +00:00
Renovate Bot fe5539e3c4
Update dependency jquery to v3.4.1 2019-05-11 09:53:17 +00:00
Renovate Bot d78dcee47f
Update dependency babel-plugin-istanbul to v5.1.4 2019-05-11 09:53:08 +00:00
Pavel Djundik f0114835ce
Merge pull request #3198 from thelounge/renovate/file-type-11.x
Update dependency file-type to v11
2019-05-11 12:51:48 +03:00
Pavel Djundik 3f0f851de1
Merge pull request #3210 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.16.0
2019-05-11 12:50:26 +03:00
Pavel Djundik 9a7cd95b97
Merge pull request #3202 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.8.2
2019-05-11 12:50:17 +03:00
Pavel Djundik d37dbde757
Merge pull request #3196 from thelounge/renovate/nyc-14.x
Update dependency nyc to v14.1.1
2019-05-11 12:50:04 +03:00
Pavel Djundik 93f182b98a
Merge pull request #3207 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.31.0
2019-05-11 12:49:48 +03:00
Pavel Djundik 9546deff31
Merge pull request #3212 from thelounge/renovate/intersection-observer-0.x
Update dependency intersection-observer to v0.7.0
2019-05-11 12:49:35 +03:00
Pavel Djundik 85ba9d933a
Merge pull request #3213 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.8
2019-05-11 12:49:25 +03:00
Renovate Bot e66c992148
Update dependency sqlite3 to v4.0.8 2019-05-11 02:40:05 +00:00
Renovate Bot cb52a6c1cd
Update dependency intersection-observer to v0.7.0 2019-05-10 21:37:52 +00:00
Renovate Bot 59b1b1d216
Update dependency file-type to v11 2019-05-10 12:14:00 +00:00
Renovate Bot d6fc926f73
Update dependency yarn to v1.16.0 2019-05-10 12:13:45 +00:00
Renovate Bot dc4a42c7da
Update dependency webpack to v4.31.0 2019-05-10 12:13:18 +00:00
Renovate Bot aa0918a6ff
Update dependency nyc to v14.1.1 2019-05-10 12:13:06 +00:00
Renovate Bot 0c3b8e2a6c
Update dependency @fortawesome/fontawesome-free to v5.8.2 2019-05-10 12:12:28 +00:00
Pavel Djundik 05b3a26dda
Merge pull request #3205 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.7
2019-05-10 15:09:36 +03:00
Pavel Djundik d9f75ff73c
Merge pull request #3201 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.3.0
2019-05-10 15:09:01 +03:00
Renovate Bot 04cb4f49b6
Update dependency sqlite3 to v4.0.7 2019-05-08 15:54:58 +00:00
Renovate Bot dae84af2ce
Update dependency irc-framework to v4.3.0 2019-05-07 10:43:49 +00:00
Pavel Djundik 63fc320ad1
Merge pull request #3187 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.0.3
2019-04-25 14:46:15 +03:00
Renovate Bot 4892161059
Update dependency copy-webpack-plugin to v5.0.3 2019-04-25 07:15:46 +00:00
Pavel Djundik e2d9385000
Merge pull request #3186 from thelounge/renovate/babel-plugin-istanbul-5.x
Update dependency babel-plugin-istanbul to v5.1.3
2019-04-25 10:15:12 +03:00
Pavel Djundik ecfc5cc28b
Merge pull request #3188 from thelounge/renovate/intersection-observer-0.x
Update dependency intersection-observer to v0.6.0
2019-04-25 10:14:51 +03:00
Renovate Bot db97c9bbdd
Update dependency intersection-observer to v0.6.0 2019-04-24 18:50:07 +00:00
Renovate Bot fa39f57d61
Update dependency babel-plugin-istanbul to v5.1.3 2019-04-24 16:57:10 +00:00
Jérémie Astori d08c1d0ede
Merge pull request #3173 from thelounge/renovate/stylelint-10.x
Update dependency stylelint to v10
2019-04-21 18:18:55 -04:00
Renovate Bot bfcb9d7bd9
Update dependency stylelint to v10 2019-04-21 20:05:51 +00:00
Pavel Djundik 45648a08ad
Merge pull request #3183 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.1
2019-04-21 23:04:47 +03:00
Pavel Djundik 2d8a28fa36
Merge pull request #3181 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.24
2019-04-21 23:04:38 +03:00
Renovate Bot 2fba91bc06
Update dependency webpack-cli to v3.3.1 2019-04-21 19:31:29 +00:00
Renovate Bot 99c6e65d31
Update dependency mime-types to v2.1.24 2019-04-21 04:28:08 +00:00
Pavel Djundik 95370622cc
Merge pull request #3182 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.1.4
2019-04-18 23:19:18 +03:00
Renovate Bot d9bffd718e
Update dependency mocha to v6.1.4 2019-04-18 18:37:53 +00:00
Pavel Djundik b7ebec9ade
Merge pull request #3178 from thelounge/renovate/nyc-14.x
Update dependency nyc to v14
2019-04-17 20:01:15 +03:00
Pavel Djundik 2d5317ca0c
Merge pull request #3180 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.3.2
2019-04-17 20:01:08 +03:00
Renovate Bot 4f60797f9d
Update dependency sinon to v7.3.2 2019-04-17 16:20:15 +00:00
Renovate Bot f80635ca1f
Update dependency nyc to v14 2019-04-17 14:12:56 +00:00
Pavel Djundik 54acbe0335
Merge pull request #3177 from thelounge/renovate/babel-plugin-istanbul-5.x
Update dependency babel-plugin-istanbul to v5.1.2
2019-04-17 17:12:18 +03:00
Renovate Bot dba768203f
Update dependency babel-plugin-istanbul to v5.1.2 2019-04-16 10:19:18 +00:00
Pavel Djundik f235e6a64d
Merge pull request #3171 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.30.0
2019-04-15 16:46:23 +03:00
Pavel Djundik 738b8a7e8f
Merge pull request #3174 from thelounge/renovate/stylelint-config-standard-18.x
Update dependency stylelint-config-standard to v18.3.0
2019-04-15 16:46:15 +03:00
Pavel Djundik c29b3b5c4b
Merge pull request #3166 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.6.0
2019-04-15 16:46:05 +03:00
Pavel Djundik 93ff33140f
Merge pull request #3175 from thelounge/renovate/handlebars-4.x
Update dependency handlebars to v4.1.2
2019-04-15 16:45:55 +03:00
Pavel Djundik 451cd3657a
Merge pull request #3176 from thelounge/xpaw/invite-list
Implement invite list
2019-04-15 16:43:24 +03:00
Pavel Djundik 830fdda91a Implement invite list 2019-04-15 14:38:11 +03:00
Renovate Bot ce49049cd7
Update dependency handlebars to v4.1.2 2019-04-13 14:23:00 +00:00
Renovate Bot b0f4ad57f0
Update dependency stylelint-config-standard to v18.3.0 2019-04-13 13:29:17 +00:00
Renovate Bot 892478d2db
Update dependency webpack to v4.30.0 2019-04-12 20:20:30 +00:00
Renovate Bot 1a84b3c0cf
Update dependency mini-css-extract-plugin to v0.6.0 2019-04-12 16:31:45 +00:00
Pavel Djundik 5d479f3e62
Merge pull request #3167 from thelounge/renovate/jquery-3.x
Update dependency jquery to v3.4.0
2019-04-12 19:30:20 +03:00
Pavel Djundik 0bc36ad486
Merge pull request #3169 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.11.0
2019-04-12 19:30:13 +03:00
Pavel Djundik d63c212b6a
Merge pull request #3170 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.1.3
2019-04-12 19:30:04 +03:00
Renovate Bot 4cb1fb48c7
Update dependency mocha to v6.1.3 2019-04-12 00:22:41 +00:00
Renovate Bot 59f440346c
Update dependency file-type to v10.11.0 2019-04-11 16:08:51 +00:00
Renovate Bot 3e0711ca2d
Update dependency jquery to v3.4.0 2019-04-10 19:54:41 +00:00
Jérémie Astori 66f8b0a123
Merge pull request #3161 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.4.3
2019-04-09 02:10:07 -04:00
Jérémie Astori 88ca219cc9
Merge pull request #3162 from thelounge/renovate/commander-2.x
Update dependency commander to v2.20.0
2019-04-09 02:09:59 -04:00
Jérémie Astori 57f13aac0d
Merge pull request #3163 from thelounge/renovate/busboy-0.x
Update dependency busboy to v0.3.1
2019-04-09 02:09:52 -04:00
Jérémie Astori 1235d8a699
Merge pull request #3165 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.1.2
2019-04-09 02:09:43 -04:00
Renovate Bot ec11b62b08
Update dependency mocha to v6.1.2 2019-04-08 18:39:45 +00:00
Renovate Bot 42ab78d4fb
Update dependency commander to v2.20.0 2019-04-07 23:13:35 +00:00
Renovate Bot 33e9fb58d3
Update dependency busboy to v0.3.1 2019-04-07 23:13:25 +00:00
Renovate Bot 2c10729225
Update babel monorepo to v7.4.3 2019-04-07 23:13:11 +00:00
Jérémie Astori 7c3b0e81b4
Merge pull request #3160 from thelounge/renovate/html-minifier-4.x
Update dependency html-minifier to v4
2019-04-07 19:12:14 -04:00
Jérémie Astori fc99a7f9e1
Merge pull request #3158 from thelounge/renovate/read-chunk-3.x
Update dependency read-chunk to v3.2.0
2019-04-07 19:12:05 -04:00
Jérémie Astori a173040537
Merge pull request #3157 from thelounge/renovate/filenamify-4.x
Update dependency filenamify to v4
2019-04-07 19:11:54 -04:00
Jérémie Astori eb1fc22715
Merge pull request #3164 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6.1.1
2019-04-07 19:11:26 -04:00
Renovate Bot 01dab06b0a
Update dependency mocha to v6.1.1 2019-04-07 22:47:54 +00:00
Renovate Bot 49f484df89
Update dependency html-minifier to v4 2019-04-06 19:08:16 +00:00
Renovate Bot 1ebb71f3a7
Update dependency filenamify to v4 2019-04-06 19:08:06 +00:00
Renovate Bot 0f06ed1f56
Update dependency read-chunk to v3.2.0 2019-04-06 19:07:51 +00:00
Pavel Djundik 1d2ee012cd
Merge pull request #3155 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.16.0
2019-04-06 22:06:56 +03:00
Pavel Djundik a3bc59c36f
Merge pull request #3156 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6.3.0
2019-04-06 22:06:48 +03:00
Pavel Djundik 6a0b53c71f
Merge pull request #3159 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.10.0
2019-04-06 22:06:36 +03:00
Renovate Bot 6e8c8da5b0
Update dependency file-type to v10.10.0 2019-04-01 10:41:49 +00:00
Renovate Bot bf034a187c
Update dependency package-json to v6.3.0 2019-03-31 12:07:49 +00:00
Renovate Bot dc5fd9e78d
Update dependency eslint to v5.16.0 2019-03-30 04:09:12 +00:00
Pavel Djundik 18271f8c32
Merge pull request #3153 from thelounge/renovate/mochapack-1.x
Update dependency mochapack to v1.1.1
2019-03-29 15:17:24 +02:00
Renovate Bot 8ed2866ed1
Update dependency mochapack to v1.1.1 2019-03-28 12:28:48 +00:00
Pavel Djundik 5941a009e0
Merge pull request #3151 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.3.1
2019-03-27 14:58:30 +02:00
Renovate Bot 066a08eee0
Update dependency sinon to v7.3.1 2019-03-27 11:56:45 +00:00
Pavel Djundik dde3465cfa
Merge pull request #3114 from thelounge/xpaw/sortable-fixes
Change styling when dragging channels.
2019-03-27 12:42:48 +02:00
Pavel Djundik 56248116a2
Merge pull request #3145 from thelounge/xpaw/condensed-underline
Change condensed summary hover to an underline
2019-03-27 12:26:10 +02:00
Pavel Djundik f9459ee1c3 Fix up sorting channel styling 2019-03-27 12:23:50 +02:00
Pavel Djundik 5723be00c7
Merge pull request #3150 from thelounge/astorije/test-stuff
Replace mocha-webpack with mochapack, and remove browser test setup that we never used
2019-03-27 10:13:59 +02:00
Jérémie Astori c574234b99
Merge pull request #3073 from Jay2k1/patch-2
extend custom highlight regex
2019-03-27 00:10:48 -04:00
Jérémie Astori c0708fd955
Remove browser test setup that we never used 2019-03-26 23:27:36 -04:00
Jérémie Astori e3dfedf8b5
Replace mocha-webpack with mochapack 2019-03-26 23:16:39 -04:00
Jérémie Astori 9026f73533
Merge pull request #3148 from thelounge/renovate/semver-6.x
Update dependency semver to v6
2019-03-26 22:37:35 -04:00
Renovate Bot a23f0a76e9
Update dependency semver to v6 2019-03-27 01:06:47 +00:00
Jérémie Astori a58c12a09e
Merge pull request #3149 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.15.2
2019-03-26 21:06:00 -04:00
Renovate Bot 231622c7a3
Update dependency yarn to v1.15.2 2019-03-27 00:28:30 +00:00
Pavel Djundik 3153830005 Change condensed summary hover to an underline 2019-03-25 17:08:22 +02:00
Pavel Djundik 88df9148dc
Merge pull request #3019 from Zarthus/ctcp_notify
plugin/ctcp: Let the user know a CTCP request was sent
2019-03-25 12:39:28 +02:00
Pavel Djundik ab27a4e39f
Merge pull request #3141 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.0.2
2019-03-25 12:36:24 +02:00
Pavel Djundik 74fe337afe
Merge pull request #3142 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6.2.0
2019-03-25 12:36:16 +02:00
Pavel Djundik a8a634983e
Merge pull request #3143 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.20.0
2019-03-25 12:36:07 +02:00
Renovate Bot 0f1ae61a38
Update dependency vuedraggable to v2.20.0 2019-03-24 01:00:22 +00:00
Renovate Bot 4b6ef5d978
Update dependency package-json to v6.2.0 2019-03-23 08:51:07 +00:00
Renovate Bot 2893dcc6f1
Update dependency copy-webpack-plugin to v5.0.2 2019-03-22 15:54:53 +00:00
Pavel Djundik 892737d1d8
Merge pull request #3134 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.3.0

Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-03-22 14:14:17 +02:00
Pavel Djundik 20f99863d6
Merge pull request #3131 from thelounge/renovate/vue-monorepo
Update vue monorepo to v2.6.10

Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-03-22 14:14:10 +02:00
Pavel Djundik f3323e3583
Merge pull request #3128 from thelounge/renovate/babel-monorepo
Update babel monorepo
2019-03-22 14:13:55 +02:00
Pavel Djundik 2b7c4021ad
Merge pull request #3127 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.15.3

Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-03-22 14:13:48 +02:00
Renovate Bot 310c5a843d
Update vue monorepo to v2.6.10 2019-03-22 09:42:45 +00:00
Renovate Bot b61bef80e5
Update dependency sinon to v7.3.0 2019-03-22 09:42:34 +00:00
Renovate Bot 94f54cb5b4
Update dependency eslint to v5.15.3 2019-03-22 09:42:25 +00:00
Renovate Bot c1f7a9ef46
Update babel monorepo 2019-03-22 09:42:14 +00:00
Al McKinlay 00510e07ad
Merge pull request #3133 from thelounge/xpaw/hide-test-warn
Hide unknown key warning in mergeConfig test
2019-03-22 09:41:53 +00:00
Pavel Djundik 0525f123a3
Merge pull request #3136 from thelounge/xpaw/sw
Handle redirected requests correctly in service worker
2019-03-22 11:41:28 +02:00
Al McKinlay 8c4f04206b
Merge pull request #3135 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.19.3
2019-03-22 09:41:12 +00:00
Pavel Djundik cfc6a6adc8
Merge pull request #3137 from thelounge/xpaw/sw-no-cache
Force no-cache on service-worker and sourcemap files
2019-03-22 11:40:23 +02:00
Al McKinlay 3ef844b6be
Merge pull request #3129 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.8.1
2019-03-22 09:40:06 +00:00
Renovate Bot 1362592afb
Update dependency @fortawesome/fontawesome-free to v5.8.1 2019-03-21 21:28:39 +00:00
Pavel Djundik 9d3f5efbd5 Force no-cache on service-worker and sourcemap files 2019-03-21 11:43:13 +02:00
Pavel Djundik 2c85f61e62 Handle redirected requests correctly in service worker 2019-03-21 11:22:01 +02:00
Renovate Bot 05afb2dbd4
Update dependency vuedraggable to v2.19.3 2019-03-21 03:29:54 +00:00
Pavel Djundik 04dc1feaba Hide unknown key warning in mergeConfig test 2019-03-20 12:58:30 +02:00
Pavel Djundik 92098286e7
Merge pull request #3037 from thelounge/xpaw-richrd/file-uploads
Re-implement file uploading with old school multipart forms

Co-authored-by: Jérémie Astori <jeremie@astori.fr>
2019-03-19 15:09:33 +02:00
Pavel Djundik 68de8cdd22
Merge pull request #3126 from thelounge/xpaw/favicon-root
Move favicon.ico to the root folder
2019-03-18 13:56:39 +02:00
Pavel Djundik 50fbf93d64 Move favicon.ico to the root folder 2019-03-18 12:56:52 +02:00
Pavel Djundik b0571c5a36
Merge pull request #3111 from thelounge/xpaw/sw-async
Use async/await in service worker, do not wait for cache for successful requests
2019-03-18 12:46:44 +02:00
Pavel Djundik bb2a1d6a6f
Merge pull request #3112 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5.0.1

Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-03-18 11:39:50 +02:00
Jérémie Astori 7e7ac8229b Style the upload progress bar 2019-03-18 10:28:18 +02:00
Pavel Djundik 12cf5ed070 Abort file upload if ChatInput component is destroyed 2019-03-18 10:28:18 +02:00
Pavel Djundik f84e4199e9 Re-implement file uploads with old-school forms
Co-Authored-By: Richard Lewis <richrd@users.noreply.github.com>
2019-03-18 10:28:18 +02:00
Renovate Bot bee160d623
Update dependency copy-webpack-plugin to v5.0.1 2019-03-18 03:32:09 +00:00
Jérémie Astori 4937a79384
Merge pull request #3125 from MaxLeiter/spelling
Spelling fix for manual disconnect message
2019-03-17 22:59:09 -04:00
Max Leiter 53d2e697d0 Spelling fix for manual disconnect message 2019-03-17 19:18:02 -07:00
Jérémie Astori fb2206028c
Merge pull request #3107 from thelounge/xpaw/setname
Send SETNAME command if user edits realname field
2019-03-17 21:16:05 -04:00
Jérémie Astori f7ebff0b67
Merge pull request #3109 from thelounge/xpaw/chan-mode-is
Display current channel mode on /mode command
2019-03-16 21:48:22 -04:00
Jérémie Astori b06eda8471
Merge pull request #3116 from thelounge/xpaw/preview-label
Add aria-label on link preview toggle button
2019-03-16 21:40:10 -04:00
Jérémie Astori 527c1564ae
Merge pull request #3124 from thelounge/renovate/handlebars-4.x
Update dependency handlebars to v4.1.1
2019-03-16 21:38:58 -04:00
Jérémie Astori eb812fafef
Merge pull request #3118 from thelounge/renovate/vue-monorepo
Update vue monorepo to v2.6.9
2019-03-16 21:38:50 -04:00
Renovate Bot 23a5be7dcc
Update dependency handlebars to v4.1.1 2019-03-16 21:31:52 +00:00
Renovate Bot 8f9e6931a8
Update vue monorepo to v2.6.9 2019-03-16 20:28:09 +00:00
Pavel Djundik fc2b8d94e1
Merge pull request #3123 from kramerc/kill-cmd
Add support for /kill
2019-03-16 22:20:03 +02:00
Kramer Campbell cff4f1ce2c Add support for /kill
Fixes #3122
2019-03-16 12:57:24 -07:00
Pavel Djundik 036a2ffb4a
Merge pull request #3119 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.15.2
2019-03-16 12:43:19 +02:00
Pavel Djundik fe52719b9d
Merge pull request #3115 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6.1.0
2019-03-16 12:43:12 +02:00
Pavel Djundik 0d7870ba25
Merge pull request #3120 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.0
2019-03-16 12:42:53 +02:00
Renovate Bot e44318358b
Update dependency webpack-cli to v3.3.0 2019-03-15 19:03:53 +00:00
Renovate Bot e0258d4734
Update dependency eslint to v5.15.2 2019-03-15 18:00:58 +00:00
Pavel Djundik 7df26dc373 Add aria-label on link preview toggle button 2019-03-13 19:08:32 +02:00
Renovate Bot 0084d3d04b
Update dependency package-json to v6.1.0 2019-03-12 11:46:41 +00:00
Pavel Djundik a33108bd49
Merge pull request #3102 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.19.2
2019-03-12 11:10:09 +02:00
Renovate Bot b7958be526
Update dependency vuedraggable to v2.19.2 2019-03-12 02:35:32 +00:00
Pavel Djundik 43315da408
Merge pull request #3108 from thelounge/xpaw/sanitize-naems
Sanitize user and real names
2019-03-11 10:23:40 +02:00
Pavel Djundik fe4d92a4cd
Merge pull request #3110 from thelounge/renovate/filenamify-3.x
Update dependency filenamify to v3
2019-03-11 10:22:54 +02:00
Pavel Djundik de9459dd83 Implement cache busting based on version hash 2019-03-08 12:29:49 +02:00
Pavel Djundik bb28ecaff7 Use async/await in service worker, do not wait for cache open/put for successful requests 2019-03-07 21:35:41 +02:00
Renovate Bot a4d52f7dee
Update dependency filenamify to v3 2019-03-07 18:32:39 +00:00
Pavel Djundik a6c0fa8926
Merge pull request #3101 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.15.1
2019-03-07 13:06:08 +02:00
Pavel Djundik 71332f59d9 Display current channel mode on /mode command
Fixes #885
2019-03-07 12:57:31 +02:00
Pavel Djundik 8c10436630 Only send SETNAME if the cap is enabled 2019-03-07 12:14:34 +02:00
Renovate Bot b6b767ee95
Update dependency eslint to v5.15.1 2019-03-07 09:34:36 +00:00
Pavel Djundik cac2ef65b7
Merge pull request #3104 from thelounge/renovate/emoji-regex-8.x
Update dependency emoji-regex to v8
2019-03-07 11:33:56 +02:00
Pavel Djundik 9cb2ca3383 Sanitize user and real names 2019-03-07 10:49:21 +02:00
Pavel Djundik 5d560c99b8 Send SETNAME command if user edits realname field 2019-03-07 10:17:03 +02:00
Renovate Bot 4ba5c911ab
Update dependency emoji-regex to v8 2019-03-06 11:52:55 +00:00
Pavel Djundik d8b49f0fa5
Merge pull request #3098 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.7
2019-03-06 13:50:45 +02:00
Pavel Djundik 44c4476037
Merge pull request #3099 from thelounge/renovate/mousetrap-1.x
Update dependency mousetrap to v1.6.3
2019-03-06 13:50:37 +02:00
Pavel Djundik a05502f5c1
Merge pull request #3103 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.9.0
2019-03-06 13:50:03 +02:00
Pavel Djundik 3453ed353c
Merge pull request #3106 from thelounge/renovate/read-chunk-3.x
Update dependency read-chunk to v3.1.0
2019-03-06 13:49:54 +02:00
Renovate Bot f3d79785bc
Update dependency read-chunk to v3.1.0 2019-03-06 05:39:22 +00:00
Renovate Bot 16e38f92d8
Update dependency file-type to v10.9.0 2019-03-05 15:17:56 +00:00
Renovate Bot 79ba243053
Update dependency sinon to v7.2.7 2019-03-05 14:43:16 +00:00
Renovate Bot 0c72e8d018
Update dependency mousetrap to v1.6.3 2019-03-05 14:43:02 +00:00
Pavel Djundik 16c4894bf9
Merge pull request #3093 from thelounge/xpaw/disconnect-icon
Fix (dis)connect icons in context menu being reverse of what they should be
2019-03-05 16:40:44 +02:00
Pavel Djundik b6c7f45298
Merge pull request #3100 from thelounge/xpaw/warn-unknown-config-keys
Print a warning for invalid keys in config file or cli arguments
2019-03-05 14:26:41 +02:00
Pavel Djundik 7c1efb18d1 Print a warning on invalid keys in config 2019-03-05 13:49:50 +02:00
Pavel Djundik 2e0100d31c
Merge pull request #3095 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.15.0
2019-03-04 10:33:27 +02:00
Pavel Djundik b2d9dfe3a5
Merge pull request #3092 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.7.0
2019-03-04 10:33:17 +02:00
Renovate Bot e792419c1c
Update dependency vue-loader to v15.7.0 2019-03-03 19:42:09 +00:00
Renovate Bot a121bec4e3
Update dependency eslint to v5.15.0 2019-03-03 19:42:00 +00:00
Pavel Djundik 3c0f1408fa
Merge pull request #3096 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.19.0
2019-03-03 21:41:29 +02:00
Renovate Bot 4e95aebe4a
Update dependency vuedraggable to v2.19.0 2019-03-03 18:14:50 +00:00
Pavel Djundik 6aa8da4099
Merge pull request #3090 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.6
2019-03-03 20:13:14 +02:00
Pavel Djundik 6029fe7c71
Merge pull request #3091 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.29.6
2019-03-03 20:13:06 +02:00
Pavel Djundik 722cc23b10
Merge pull request #3094 from thelounge/renovate/vue-monorepo
Update vue monorepo to v2.6.8
2019-03-03 20:12:38 +02:00
Renovate Bot 1c5d81e38f
Update dependency sinon to v7.2.6 2019-03-01 23:16:45 +00:00
Renovate Bot df01874b24
Update vue monorepo to v2.6.8 2019-03-01 15:12:31 +00:00
Pavel Djundik 212f4be3c3
Fix (dis)connect icons in context menu being reverse of what they should be 2019-03-01 14:23:58 +02:00
Renovate Bot be3260dcde
Update dependency webpack to v4.29.6 2019-02-28 10:23:20 +00:00
Jérémie Astori 67effc59dc
Merge pull request #3088 from thelounge/astorije/vue-network-status
Use Vue to show/hide insecure/disconnected icons instead of CSS
2019-02-27 03:15:37 -05:00
Jérémie Astori f84d764822
Fix linting on a violation shipped previously... 2019-02-27 02:28:52 -05:00
Jérémie Astori f8b5983f2c
Use Vue to show/hide insecure/disconnected icons instead of CSS 2019-02-27 02:25:44 -05:00
Jérémie Astori 848186d14b
Merge pull request #3083 from thelounge/astorije/eslint-vue-closing-bracket-newline
Move closing brackets on a new line in Vue files
2019-02-27 02:07:28 -05:00
Jérémie Astori 08931d7b3f
Merge pull request #3081 from thelounge/renovate/vuedraggable-2.x
Update dependency vuedraggable to v2.18.1
2019-02-27 02:06:15 -05:00
Renovate Bot d9f36ce505
Update dependency vuedraggable to v2.18.1 2019-02-26 18:47:34 +00:00
Pavel Djundik 6f70ce9e15
Merge pull request #3082 from thelounge/astorije/parted-channel
Display a broken link icon and red text color when not joined on a channel
2019-02-26 19:18:54 +02:00
Pavel Djundik 6f2a919d13
Merge pull request #3072 from thelounge/renovate/mocha-6.x
Update dependency mocha to v6
2019-02-26 19:17:33 +02:00
Renovate Bot 3f8fc0ef1b
Update dependency mocha to v6 2019-02-26 11:46:24 +00:00
Pavel Djundik 0c0b59b3fb
Merge pull request #2974 from thelounge/xpaw/firefox-scrollbar
Set scrollbar properties for Firefox 64+
2019-02-26 13:28:02 +02:00
Pavel Djundik f4bec8298b
Merge pull request #3085 from thelounge/renovate/mocha-loader-2.x
Update dependency mocha-loader to v2.0.1
2019-02-26 10:33:21 +02:00
Jérémie Astori d0421a2541
Merge pull request #3079 from thelounge/xpaw/error-unhandled-target
Put channel errors and unhandled numerics to relevant channel if it exists
2019-02-26 01:34:25 -05:00
Renovate Bot 988115b468
Update dependency mocha-loader to v2.0.1 2019-02-26 06:30:16 +00:00
Jérémie Astori 5b8b6b714a
Merge pull request #3086 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.3.4
2019-02-26 01:29:40 -05:00
Jérémie Astori 6b8f3a6f73
Merge pull request #3084 from thelounge/renovate/webpack-dev-server-3.x
Update dependency webpack-dev-server to v3.2.1
2019-02-26 01:29:30 -05:00
Jérémie Astori e173b84fdb
Show/Hide parted channel icon/styling using v-if instead of CSS display property 2019-02-26 01:26:45 -05:00
Renovate Bot c5e0840ceb
Update babel monorepo to v7.3.4 2019-02-25 18:56:20 +00:00
Renovate Bot 881e8593ed
Update dependency webpack-dev-server to v3.2.1 2019-02-25 11:18:40 +00:00
Jérémie Astori 0812ffc2e7
Run ESLint autofix after requiring new line on closing brackets 2019-02-25 00:57:48 -05:00
Jérémie Astori b99495334e
Set up ESLint to flag when closing brackets are not on a new line 2019-02-25 00:36:50 -05:00
Jérémie Astori f8a39a0ea8
Display a broken link icon and red text color when not joined on a channel 2019-02-25 00:21:40 -05:00
Pavel Djundik a9eced888f Set scrollbar properties for Firefox 64+
Refs:
https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color
https://drafts.csswg.org/css-scrollbars-1/
2019-02-23 11:41:39 +02:00
Pavel Djundik c8f229f708
Merge pull request #3078 from thelounge/renovate/vue-monorepo
Update vue monorepo to v2.6.7
2019-02-22 14:11:05 +02:00
Pavel Djundik 4d9c01deea Put channel errors and unhandled numerics to relevant channel if it exists 2019-02-22 14:04:33 +02:00
Renovate Bot b79ee2c180
Update vue monorepo to v2.6.7 2019-02-21 22:09:23 +00:00
Pavel Djundik 80077b33b8
Merge pull request #3074 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.6.4
2019-02-21 14:14:52 +02:00
Renovate Bot 3a681bc33c
Update dependency vue-loader to v15.6.4 2019-02-21 11:50:13 +00:00
Jérémie Astori b684bc65aa
Merge pull request #3076 from thelounge/renovate/webpack-dev-server-3.x
Update dependency webpack-dev-server to v3.2.0
2019-02-21 01:17:46 -05:00
Jérémie Astori 27b8333ebb
Merge pull request #3075 from thelounge/renovate/copy-webpack-plugin-5.x
Update dependency copy-webpack-plugin to v5
2019-02-21 01:17:38 -05:00
Renovate Bot ca598098ce
Update dependency copy-webpack-plugin to v5 2019-02-21 05:28:14 +00:00
Renovate Bot 457653717c
Update dependency webpack-dev-server to v3.2.0 2019-02-21 05:28:05 +00:00
Jérémie Astori 1e40b1170b
Merge pull request #3077 from Zarthus/patch-1
help.tpl: Fix typo (ommitted -> omitted)
2019-02-21 00:20:41 -05:00
Jos Ahrens 94f89dc89f
help.tpl: Fix typo (ommitted -> omitted) 2019-02-20 15:50:05 +01:00
Jay2k1 c151ad69fa add test for custom highlights 2019-02-19 15:21:54 +01:00
Jay2k1 9769f023c5
extend custom highlight regex 2019-02-19 15:19:45 +01:00
Pavel Djundik ebe7546dd9
Merge pull request #3068 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.14.1
2019-02-19 14:58:19 +02:00
Renovate Bot 29c11e3174
Update dependency eslint to v5.14.1 2019-02-18 21:29:37 +00:00
Jérémie Astori 0a1d67bf5d
Merge pull request #3065 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.29.5
2019-02-18 16:29:06 -05:00
Jérémie Astori e96bb1e20a
Merge pull request #3069 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.8.0
2019-02-18 16:28:24 -05:00
Jérémie Astori b0a3daf8a5
Merge pull request #3071 from thelounge/renovate/vue-loader-15.x
Update dependency vue-loader to v15.6.3
2019-02-18 16:27:50 -05:00
Renovate Bot 1c5c226a0a
Update dependency vue-loader to v15.6.3 2019-02-18 21:11:19 +00:00
Renovate Bot ea1fa25fdb
Update dependency webpack to v4.29.5 2019-02-18 19:20:53 +00:00
Renovate Bot e9182c1454
Update dependency file-type to v10.8.0 2019-02-18 19:20:42 +00:00
Jérémie Astori 0c4e35b309
Merge pull request #3063 from thelounge/astorije/scroll-down-btn-ui
Improve scroll-down button UI
2019-02-18 14:12:46 -05:00
Jérémie Astori 3df4661126
Merge pull request #3066 from thelounge/renovate/eslint-plugin-vue-5.x
Update dependency eslint-plugin-vue to v5.2.2
2019-02-18 14:02:47 -05:00
Jérémie Astori e172a36581
Merge pull request #3067 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.4
2019-02-18 14:02:22 -05:00
Jérémie Astori 8dee92bd04
Reduce shadow on scroll-down button 2019-02-18 13:54:25 -05:00
Jérémie Astori 404de0ff5b
Use CSS variable for button color 2019-02-18 13:32:41 -05:00
Renovate Bot a21affedb5
Update dependency sinon to v7.2.4 2019-02-18 15:23:52 +00:00
Renovate Bot 98d33a8d6a
Update dependency eslint-plugin-vue to v5.2.2 2019-02-18 11:55:06 +00:00
Pavel Djundik 1966a64a48
Merge pull request #3061 from thelounge/renovate/babel-plugin-istanbul-5.x
Update dependency babel-plugin-istanbul to v5.1.1
2019-02-18 11:25:01 +02:00
Pavel Djundik c9c9748959
Merge pull request #3062 from thelounge/astorije/fix-title
Remove network name from window title
2019-02-18 11:18:09 +02:00
Renovate Bot 781f6aac22
Update dependency babel-plugin-istanbul to v5.1.1 2019-02-18 08:40:45 +00:00
Jérémie Astori aa1fb6a5cd
Merge pull request #3064 from thelounge/astorije/the-return-of-upload-file-casing
Fix casing of "Upload file" tooltip
2019-02-18 02:42:12 -05:00
Jérémie Astori dadccb7665
Fix casing of "Upload file" tooltip 2019-02-18 02:19:44 -05:00
Jérémie Astori 8b98c2c93c
Add a tooltip on scroll-down button hover 2019-02-18 01:29:08 -05:00
Jérémie Astori d8d1d3aee0
Improve scroll-down button UI 2019-02-18 01:13:32 -05:00
Jérémie Astori 4faf7bfd3c
Remove network name from window title
It can be redundant on network tab.
2019-02-18 00:35:04 -05:00
Jos Ahrens 0fbf301e0f
plugin/ctcp: Let the user know a CTCP request was sent
Because responding to a CTCP request is completely optional,
sometimes thelounge will just do absolutely nothing. (the request
was received, but the client did not respond to it)

This alleviates the problem by always notifying the user that
*something* was sent.
2019-02-16 21:01:32 +00:00
Pavel Djundik 16e4be12a8
Merge pull request #3058 from thelounge/xpaw/lock-integrity
Downgrade webpack and regenerate lockfile
2019-02-16 20:27:12 +02:00
Pavel Djundik e1b31d4b8e
Merge pull request #3045 from thelounge/xpaw/travis-priorities
Change build priority order in Travis
2019-02-16 20:23:24 +02:00
Pavel Djundik 4084ff2e93 Change build priority order in Travis 2019-02-16 20:22:17 +02:00
Pavel Djundik 494f03e747 Downgrade webpack and regenerate lockfile
1. Webpack@4.29.4 has a git dependency
2. Add integrity field to all packages in the lock file
2019-02-16 20:18:04 +02:00
Pavel Djundik 804c9ad11a
Merge pull request #3055 from thelounge/renovate/babel-monorepo
Update dependency @babel/core to v7.3.3
2019-02-16 20:09:46 +02:00
Renovate Bot 2c17cddf0e
Update dependency @babel/core to v7.3.3 2019-02-16 18:09:17 +00:00
Pavel Djundik 5786230aef
Merge pull request #3057 from thelounge/renovate/eslint-plugin-vue-5.x
Update dependency eslint-plugin-vue to v5.2.1
2019-02-16 20:08:11 +02:00
Renovate Bot 98644bfc9e
Update dependency eslint-plugin-vue to v5.2.1 2019-02-16 18:07:51 +00:00
Pavel Djundik a0d3fbadf4
Merge pull request #3054 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.14.0
2019-02-16 20:06:52 +02:00
Renovate Bot 01c3f6556d
Update dependency eslint to v5.14.0 2019-02-16 18:06:23 +00:00
Pavel Djundik 09853c4c8b
Merge pull request #3053 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.29.4
2019-02-16 20:05:31 +02:00
Pavel Djundik 3b60dcdd07
Merge pull request #3051 from thelounge/renovate/nyc-13.x
Update dependency nyc to v13.3.0
2019-02-16 20:05:16 +02:00
Pavel Djundik 5d988e14f6
Merge pull request #3050 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.22
2019-02-16 20:05:03 +02:00
Pavel Djundik 01981e30f8
Merge pull request #3048 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.7.2
2019-02-16 20:04:49 +02:00
Renovate Bot 61ad93b9d6
Update dependency webpack to v4.29.4 2019-02-16 18:02:41 +00:00
Renovate Bot 38d3fc3f58
Update dependency nyc to v13.3.0 2019-02-16 18:02:33 +00:00
Renovate Bot e9ee768f39
Update dependency mime-types to v2.1.22 2019-02-16 18:02:24 +00:00
Renovate Bot 392a747d88
Update dependency @fortawesome/fontawesome-free to v5.7.2 2019-02-16 18:01:55 +00:00
Pavel Djundik ae72d5828c
Merge pull request #2647 from thelounge/vue
Port sidebar, chat, user list, state to Vue
2019-02-16 20:01:01 +02:00
Jérémie Astori 2657332919
Fix loading page styling 2019-02-15 01:40:42 -05:00
Pavel Djundik 013129da1f Set moreHistoryAvailable when history reloads from storage 2019-02-13 16:44:15 +02:00
Pavel Djundik c8568b5429 Redirect pageup/pagedown without manually animating the scroll 2019-02-13 16:44:15 +02:00
Pavel Djundik 3f3a22aa1e Disable clicking on the currently active channel
channel.id does not change, which causes some wonky behaviour when the channel gets trimmed
2019-02-13 16:44:15 +02:00
Pavel Djundik a26fcb45b4 Change (parted) to a class name 2019-02-13 16:44:15 +02:00
Pavel Djundik 199df6b729 Fix hasRoleInChannel 2019-02-13 16:44:15 +02:00
Pavel Djundik 32f17d50b4 Use inverted logo in morning theme 2019-02-13 16:44:15 +02:00
Pavel Djundik f3cf69796d Don't merge messages on client if server sends over 100 of them 2019-02-13 16:44:15 +02:00
Pavel Djundik b066dc301e Move custom highlights to the server 2019-02-13 16:44:15 +02:00
Pavel Djundik 40bf9ee8ba Reset active user when leaving user list with mouse 2019-02-13 16:44:15 +02:00
Pavel Djundik b02c3b6c17 Fix channel names in context menus 2019-02-13 16:44:15 +02:00
Pavel Djundik 19693bc9b7 Update Vue packages 2019-02-13 16:44:15 +02:00
Pavel Djundik 987cc6d3b4 Restore custom highlights functionality 2019-02-12 12:49:06 +02:00
Pavel Djundik 2b653a30d6 Tweak connection error spacing 2019-02-12 12:49:06 +02:00
Pavel Djundik a4ec875c87 Check that CHANTYPES and PREFIX are set, and set defaults 2019-02-12 12:49:06 +02:00
Pavel Djundik 71b3acb152 Rename hotkeys array 2019-02-12 12:49:06 +02:00
Pavel Djundik c13840e029 Don't sync counters for showInActive messages 2019-02-12 12:49:06 +02:00
Pavel Djundik c33326e25e Update client/components/MessageTypes/whois.vue 2019-02-12 12:49:06 +02:00
Pavel Djundik 89355e50c3 Put unreads and highlights in aria-label/title in the channel list 2019-02-12 12:49:06 +02:00
Pavel Djundik 759e69ed07 Handle default preview state after loading 2019-02-12 12:49:06 +02:00
Pavel Djundik 42717e3dec Enable preserveWhitespace: false, add spaces where needed, fix whitespace when copying text 2019-02-12 12:49:06 +02:00
Pavel Djundik 5f0f745d10 Only send /join for current channel if there are no arguments 2019-02-12 12:49:06 +02:00
Pavel Djundik 7ba14fe4e3 Explicitly place * on actions in DOM 2019-02-12 12:49:06 +02:00
Pavel Djundik 99cda335ab Fix next/prev buttons in media viewer 2019-02-12 12:49:06 +02:00
Pavel Djundik 00b84d31f5 Fix whitespace in previews 2019-02-12 12:49:06 +02:00
Pavel Djundik 6d1d2e006a Remove extra .text span as its no longer needed 2019-02-12 12:49:06 +02:00
Pavel Djundik 4d400b6ace Hide scroll down button entirely with css to fix some issues 2019-02-12 12:49:06 +02:00
Pavel Djundik e5b3c518e2 Do not show toggle arrow if link data is still loading 2019-02-12 12:49:06 +02:00
Pavel Djundik 05303e4cf1 Fix link expand buttons not showing if auto-expand option is off 2019-02-12 12:49:05 +02:00
Pavel Djundik 7d7005c8af Fix keepScrollPosition on condensed messages 2019-02-12 12:49:05 +02:00
Pavel Djundik 893d59e7c4 Skip scroll event which is called after setting scrollTop 2019-02-12 12:49:05 +02:00
Pavel Djundik 4a0f319e91 Ignore server unread sync for active channel 2019-02-12 12:49:05 +02:00
Pavel Djundik 3c4a9efe7e Fix lodash not being tree shaked properly 2019-02-12 12:49:05 +02:00
Pavel Djundik def494533b Use native date constructor to calculate timeout until midnight 2019-02-12 12:49:05 +02:00
Pavel Djundik 5ba0e33fb9 Skip network status updates for quit networks 2019-02-12 12:49:05 +02:00
Pavel Djundik f1994352bd Fix scroll button on iOS 2019-02-12 12:49:05 +02:00
Richard Lewis caf728a2a7 Instrument tests with nyc instead of istanbul-instrumenter-loader. 2019-02-12 12:49:05 +02:00
Pavel Djundik 446ad6a5f4 Allow Vue devtools in production 2019-02-12 12:49:05 +02:00
Pavel Djundik 7b3f7d1c59 Fix clicking red banner not hiding the error 2019-02-12 12:49:05 +02:00
Pavel Djundik b3e86dbab4 Fix unread markers not rendering with hidden status messages
Co-Authored-By: Richard Lewis <richrd@users.noreply.github.com>
2019-02-12 12:49:05 +02:00
Pavel Djundik 395be41728 Move message time formatting to Vue as computed 2019-02-12 12:49:05 +02:00
Richard Lewis 74edfcaa04 Limit input history to a 100 entries. 2019-02-12 12:49:05 +02:00
Pavel Djundik d1185da9eb Fade buttons when disabled 2019-02-12 12:49:05 +02:00
Richard Lewis cd76512619 Disable upload button instead of removing it from dom. 2019-02-12 12:49:05 +02:00
Pavel Djundik dd686b563d Remove tests, fix lint, update packages 2019-02-12 12:49:05 +02:00
Richard Lewis cc895e67ee Move date formatting to DateMarker and stop listening to daychange when no longer necessary. 2019-02-12 12:49:05 +02:00
Richard Lewis 7394e6b9f1 Update date markers vith vue instead of jQuery. 2019-02-12 12:49:05 +02:00
Pavel Djundik 7b15c53ed4 Rename some vue variables 2019-02-12 12:49:05 +02:00
Pavel Djundik f526aa8b8b Do not navigate history when autocompleting 2019-02-12 12:49:05 +02:00
Pavel Djundik 4c103b467b Implement input history per channel 2019-02-12 12:49:05 +02:00
Pavel Djundik b6e07a43f5 Make a consistent single funciton for updating notified/favicon/title 2019-02-12 12:49:05 +02:00
Pavel Djundik 47b9924f26 Use server side rendering in parse tests
Co-Authored-By: Richard Lewis <richrd@users.noreply.github.com>
2019-02-12 12:49:05 +02:00
Pavel Djundik 4f3dbc4b8f Fix up how span elements are generated in message parser 2019-02-12 12:49:05 +02:00
Pavel Djundik ba2522ecda Update vue-loader 2019-02-12 12:49:05 +02:00
Pavel Djundik c3a1c77447 Rebase image uploading to Vue 2019-02-12 12:49:05 +02:00
Pavel Djundik 5c69fe104d Keep scroll to bottom and check 'more' button previews when toggling sidebars 2019-02-12 12:49:05 +02:00
Pavel Djundik f45f9a83ee Remove unnecessary resize handler 2019-02-12 12:49:05 +02:00
Richard Lewis 32776f0642 Improve more button implementation and fix lint. 2019-02-12 12:49:04 +02:00
Richard Lewis 8dff4a9478 Only show more button on link previews when needed. 2019-02-12 12:49:04 +02:00
Pavel Djundik 26dc37033c Make connection-error a vue state 2019-02-12 12:49:04 +02:00
Pavel Djundik e2c65fd0de Fix titles on emojis 2019-02-12 12:49:04 +02:00
Pavel Djundik 5d4400ef90 Revert "Remove draggable for now"
This reverts commit f4c0a68fde99471bd546902ec2b9301ff6cec73a.
2019-02-12 12:49:04 +02:00
Pavel Djundik 9d8f02ce99 Remove devServer for now, it's not good enough 2019-02-12 12:48:45 +02:00
Pavel Djundik a8cad55fda Fix input to behave better on Android 2019-02-12 12:48:45 +02:00
Pavel Djundik 140c14959c Fix user search not updating instantly on Android 2019-02-12 12:48:45 +02:00
Pavel Djundik 7c8441a93b Clear user lists on all channels when disconnected from network 2019-02-12 12:48:45 +02:00
Pavel Djundik 839b07fdc2 Do not disable input when disconnected 2019-02-12 12:48:45 +02:00
Pavel Djundik 1d4ab8fff1 Fix autocompletion menu not closing on send 2019-02-12 12:48:45 +02:00
Pavel Djundik 6877199515 Update eslint-plugin-vue 2019-02-12 12:48:45 +02:00
Pavel Djundik bd57c6d620 Fix history not loading on channel switch 2019-02-12 12:48:45 +02:00
Pavel Djundik fea6fff13a Keep scroll position on preview toggle 2019-02-12 12:48:45 +02:00
Pavel Djundik 0c5faf5879 Update eslint-plugin-vue 2019-02-12 12:48:45 +02:00
Pavel Djundik e91f2aa024 Fix unread markers in condensed messages 2019-02-12 12:48:45 +02:00
Pavel Djundik 2c5549a567 Find channel in joinchannel correctly 2019-02-12 12:48:45 +02:00
Pavel Djundik a21e0e34cd Fix unread marker not showing after condensed messages 2019-02-12 12:48:45 +02:00
Pavel Djundik 450f3f891a Update packages 2019-02-12 12:48:44 +02:00
Pavel Djundik 853f67ab40 Synchornize channel state to the client 2019-02-12 12:48:44 +02:00
Pavel Djundik f2cbd1efed Pass PREFIX and CHANTYPES to parser 2019-02-12 12:48:44 +02:00
Pavel Djundik cebfa6ac84 A little cleanup 2019-02-12 12:48:44 +02:00
Pavel Djundik 104692007f Use attr() instead of data() 2019-02-12 12:48:44 +02:00
Pavel Djundik ae56191b9f Fix scroll-down button position in non channels 2019-02-12 12:48:44 +02:00
Pavel Djundik d55eb28aea Make special channel behaviour the same
Fixes scrolling and overflowing
2019-02-12 12:48:44 +02:00
Pavel Djundik 5452d26c17 Don't bother trying to count unreads 2019-02-12 12:48:44 +02:00
Pavel Djundik a10ac4e7da Make a single function to initialize channel variables 2019-02-12 12:48:44 +02:00
Pavel Djundik ad0f638487 Add jump-to-bottom arrow when scrolled up 2019-02-12 12:48:44 +02:00
Pavel Djundik bc69ef5f0b Actually change message output based on statusMessage setting 2019-02-12 12:48:44 +02:00
Pavel Djundik c168e15db8 Don't use trimEnd 2019-02-12 12:48:44 +02:00
Pavel Djundik c70b4d4c80 Fix unread marker being off by one on the server 2019-02-12 12:48:44 +02:00
Pavel Djundik 0e7880a049 Fix autocompleting multiple times not working 2019-02-12 12:48:44 +02:00
Pavel Djundik 1bfaef1985 Keep pendingMessage on reconnect 2019-02-12 12:48:44 +02:00
Pavel Djundik 987f48ae13 Fix MOTD trimming 2019-02-12 12:48:44 +02:00
Pavel Djundik 0ba6200bb7 Keep scrolledToBottom on reconnect 2019-02-12 12:48:44 +02:00
Pavel Djundik 2303a02839 Reduce throttle delay 2019-02-12 12:48:44 +02:00
Pavel Djundik d00c70f804 Fix some input issues on mobile 2019-02-12 12:48:44 +02:00
Pavel Djundik 86ddce974d Update lobby name correctly when editing network 2019-02-12 12:48:44 +02:00
Pavel Djundik c42fc55c6f Fix reconnection state 2019-02-12 12:48:44 +02:00
Pavel Djundik cd94b5d655 Fix lint 2019-02-12 12:48:44 +02:00
Pavel Djundik 8580592a91 Cleaner MOTD text
Co-Authored-By: Jérémie Astori <astorije@users.noreply.github.com>
2019-02-12 12:48:44 +02:00
Pavel Djundik 04d86a3550 Fix channel sort not working 2019-02-12 12:48:44 +02:00
Pavel Djundik a899b1b46d Throttle scroll event instead of debouncing 2019-02-12 12:48:44 +02:00
Pavel Djundik 36b6fdcc88 Reference scrolledToBottom variable instead of recalculating on message received 2019-02-12 12:48:44 +02:00
Pavel Djundik efdf11dcae Reset scrolledToBottom when channel changes 2019-02-12 12:48:44 +02:00
Pavel Djundik 7e5e031ea8 Reset canDisplay on previews on destroy 2019-02-12 12:48:44 +02:00
Pavel Djundik 4b5252d285 Some scroll fixes 2019-02-12 12:48:44 +02:00
Richard Lewis f4b4cfdee2 Make event listneres passive. 2019-02-12 12:48:44 +02:00
Richard Lewis c9f5e06ee4 Keep scroll to bottom when resizing window. 2019-02-12 12:48:44 +02:00
Pavel Djundik a15b10ca45 Revert slideout.js changes 2019-02-12 12:48:44 +02:00
Pavel Djundik 5d8a581201 Fix input not resizing back after sending a message 2019-02-12 12:48:44 +02:00
Pavel Djundik 8133805dec Allow shift+enter to insert new lines 2019-02-12 12:48:43 +02:00
Pavel Djundik a0f42af0d8 Fix missed else-if 2019-02-12 12:48:43 +02:00
Pavel Djundik bb0450cb31 Move history logic to MessageList, fix previews not keeping scroll 2019-02-12 12:48:43 +02:00
Pavel Djundik 9926157683 Resize input when typing 2019-02-12 12:48:43 +02:00
Pavel Djundik 8e130f0259 Fix incorrectly trimming channel 2019-02-12 12:48:43 +02:00
Pavel Djundik 9249464445 Fix condensed line being clickable 2019-02-12 12:48:43 +02:00
Pavel Djundik 797731262a Fix menu swiping 2019-02-12 12:48:43 +02:00
Pavel Djundik d9206c1087 Check if element exists before trying to change message 2019-02-12 12:48:43 +02:00
Pavel Djundik 77947b46c8 Import ParsedMessage in back msg 2019-02-12 12:48:43 +02:00
Pavel Djundik b88a186d05 Fix history not loading after trimming 2019-02-12 12:48:43 +02:00
Pavel Djundik 6a82114b62 Cleanup msg event 2019-02-12 12:48:43 +02:00
Pavel Djundik 3d43b96d5a Make network lobby a separate component 2019-02-12 12:48:43 +02:00
Pavel Djundik 8931570c02 Port join-channel completely to Vue 2019-02-12 12:48:43 +02:00
Pavel Djundik 80a12d98b4 Update topic in channel state 2019-02-12 12:48:43 +02:00
Pavel Djundik e92f5d573b Remove extra invalid class on links in chat 2019-02-12 12:48:43 +02:00
Pavel Djundik a8c777c797 Remove render.js 2019-02-12 12:48:43 +02:00
Pavel Djundik 825e3beba6 Show previews in actions 2019-02-12 12:48:43 +02:00
Pavel Djundik 499beb0257 Keep scroll position when scrolling up 2019-02-12 12:48:43 +02:00
Pavel Djundik dbe95fcc13 Don't render preview until image is loaded 2019-02-12 12:48:43 +02:00
Pavel Djundik b982623aaa Deduplicate and optimize 'keep to bottom' 2019-02-12 12:48:43 +02:00
Pavel Djundik a5625ba203 Remove scroll code from more event 2019-02-12 12:48:43 +02:00
Pavel Djundik a138237155 Remove expensive and unnecessary button check on channel switch 2019-02-12 12:48:43 +02:00
Pavel Djundik ae692b1f2f Fix parsed message in actions 2019-02-12 12:48:43 +02:00
Pavel Djundik e3ff385ae0 Remove HTML version of parse() 2019-02-12 12:48:43 +02:00
Pavel Djundik d83dcc35e2 Port 'more' button in previews to Vue 2019-02-12 12:48:43 +02:00
Pavel Djundik 1cd28a5ccf Fix sending msg:preview:toggle to server 2019-02-12 12:48:43 +02:00
Pavel Djundik 2bb8287519 Render preview toggle in Vue 2019-02-12 12:48:43 +02:00
Pavel Djundik ebfc6fa724 Create elements instead of using raw HTML 2019-02-12 12:48:43 +02:00
Pavel Djundik ebda927bb1 Render toggle button after links 2019-02-12 12:48:43 +02:00
Pavel Djundik 5792bff49d Display previews as they come in; fix image viewer 2019-02-12 12:48:43 +02:00
Pavel Djundik c6262a36e6 Fix tab completion not updating model 2019-02-12 12:48:43 +02:00
Pavel Djundik c369f0fdb7 Some fixes with unread marker 2019-02-12 12:48:43 +02:00
Pavel Djundik c84eee22f2 Fix duplicate messages on channel join 2019-02-12 12:48:43 +02:00
Pavel Djundik 771739cf94 Port ignore list to Vue 2019-02-12 12:48:42 +02:00
Pavel Djundik 739d44b561 Trim channel when switching away from it 2019-02-12 12:48:42 +02:00
Pavel Djundik b963fe3cf0 Use vue's conditional classes 2019-02-12 12:48:42 +02:00
Pavel Djundik d97356e65a Only bind mouseover on username if necessary 2019-02-12 12:48:42 +02:00
Pavel Djundik 48187a0260 Delete userlist.js 2019-02-12 12:48:42 +02:00
Richard Lewis c431ac6306 Add hover selection to user list. 2019-02-12 12:48:42 +02:00
Richard Lewis 060097c118 Implement keyboard navigation in user list. 2019-02-12 12:48:42 +02:00
Pavel Djundik 30bdfe9d3f Hide 'show more history' button if there are no more messages 2019-02-12 12:48:42 +02:00
Pavel Djundik 0654a4373f Minor fix for previews 2019-02-12 12:48:42 +02:00
Pavel Djundik 2ab3518c52 Fix history not loading on channel switch 2019-02-12 12:48:42 +02:00
Pavel Djundik 207ab28b92 Some fixes with IntersectionObserver 2019-02-12 12:48:42 +02:00
Pavel Djundik 595915fefd Render link previews in Vue 2019-02-12 12:48:42 +02:00
Pavel Djundik 5f5b5fef3d Enable .js linter 2019-02-12 12:48:42 +02:00
Pavel Djundik db803a8548 Port channel list to Vue 2019-02-12 12:48:42 +02:00
Pavel Djundik 96569e71a3 Some fixes 2019-02-12 12:48:42 +02:00
Pavel Djundik 121dd35c3b Port ban lists to Vue 2019-02-12 12:48:42 +02:00
Pavel Djundik ee0413de4b Remove invalid v-elseif 2019-02-12 12:48:42 +02:00
Pavel Djundik 2d2c836a34 Remove user_name template 2019-02-12 12:48:42 +02:00
Pavel Djundik aa1446c19d Some fixes for unread marker 2019-02-12 12:48:42 +02:00
Pavel Djundik f9967a92c7 Remove console.log 2019-02-12 12:48:42 +02:00
Pavel Djundik a54a726e93 Refactor client side commands
Co-Authored-By: Max Leiter <hello@maxleiter.com>
2019-02-12 12:48:42 +02:00
Pavel Djundik 0a774758b9 Fix double input submit 2019-02-12 12:48:42 +02:00
Pavel Djundik 084e01cf46 Implement message trimming 2019-02-12 12:48:42 +02:00
Pavel Djundik f9d255b678 Passthrough input ref 2019-02-12 12:48:42 +02:00
Pavel Djundik 2e3b95b9ed Fix input keybinds 2019-02-12 12:48:42 +02:00
Pavel Djundik dbe6df1ab6 Fix clipboard "fixes" 2019-02-12 12:48:42 +02:00
Pavel Djundik 1831e2e63e Fix inline channel links 2019-02-12 12:48:42 +02:00
Pavel Djundik f0390dae63 Scroll to bottom 2019-02-12 12:48:42 +02:00
Pavel Djundik eff6dcb514 Fix context menu opening wrong thing 2019-02-12 12:48:42 +02:00
Pavel Djundik aea779cfdf Remove some unnecessary code 2019-02-12 12:48:42 +02:00
Pavel Djundik 8e64670b4e Keep condensed open when new messages arrive 2019-02-12 12:48:42 +02:00
Pavel Djundik 9ab5b9d791 Implement condensed messages in Vue 2019-02-12 12:48:42 +02:00
Pavel Djundik 6116edaa06 Remove msg_action.tpl 2019-02-12 12:48:41 +02:00
Pavel Djundik 0730825185 Convert message actions to Vue 2019-02-12 12:48:41 +02:00
Pavel Djundik dee76adc0c Implement network collapsing in Vue 2019-02-12 12:48:41 +02:00
Pavel Djundik e0e48925b5 Remove input history 2019-02-12 12:48:41 +02:00
Pavel Djundik 1e09ccdb90 Implement user search in vue 2019-02-12 12:48:41 +02:00
Pavel Djundik c20af6329b Use input model 2019-02-12 12:48:41 +02:00
Pavel Djundik a229138ca6 Add connected state 2019-02-12 12:48:41 +02:00
Pavel Djundik 3300276c27 Delete some files and undo server change 2019-02-12 12:48:41 +02:00
Pavel Djundik 7b209e5d31 Missed a setting 2019-02-12 12:48:41 +02:00
Pavel Djundik e28e13bd10 Make class settings work (colored nicks, etc) 2019-02-12 12:48:41 +02:00
Pavel Djundik 9290264fa5 Make user list and message list components 2019-02-12 12:48:41 +02:00
Pavel Djundik ebb63f2742 Fix sending messages 2019-02-12 12:48:41 +02:00
Pavel Djundik 09fa3e5c86 Fix autocompletion 2019-02-12 12:48:41 +02:00
Pavel Djundik 0e930c9356 Make history loading work 2019-02-12 12:48:41 +02:00
Pavel Djundik 25840dfef4 Single chat container (with buffered input), user list in vue 2019-02-12 12:48:41 +02:00
Pavel Djundik e931866aeb Use dev-server for hot reload 2019-02-12 12:48:41 +02:00
Pavel Djundik 1d2a11729f Render chat/messages in Vue (mostly broken) 2019-02-12 12:48:41 +02:00
Pavel Djundik 0b269423aa Remove remaining DOM references to badge/highlight 2019-02-12 12:48:41 +02:00
Pavel Djundik 631fd6138c Hide collapse button if there are no channels 2019-02-12 12:48:41 +02:00
Pavel Djundik d4a23ffc98 Fix loading disappearing too soon 2019-02-12 12:48:41 +02:00
Pavel Djundik 7e332b817d Channel list rendering with Vue
Co-Authored-By: Tim Miller-Williams <timmw@users.noreply.github.com>
2019-02-12 12:48:41 +02:00
Pavel Djundik 18bca3bce1
Merge pull request #3007 from thelounge/renovate/package-json-6.x
Update dependency package-json to v6
2019-02-12 12:48:09 +02:00
Pavel Djundik a30e1e8b61
Merge pull request #3044 from thelounge/xpaw/fix-3035
Fix copying text in Firefox
2019-02-12 12:47:49 +02:00
Pavel Djundik 4f3e4a0865
Merge pull request #3004 from thelounge/xpaw/drop-node-6
Bump minimum node version to 8 LTS
2019-02-12 12:47:36 +02:00
Pavel Djundik 77dc3086a0 Fix copying text in Firefox
Fixes #3035
2019-02-12 10:52:07 +02:00
Renovate Bot 0f0c9f2e65
Update dependency package-json to v6 2019-02-11 08:36:09 +00:00
Pavel Djundik 51384403fe
Merge pull request #3042 from thelounge/astorije/changelog-3.0.1
Add changelog entry for v3.0.1
2019-02-11 10:35:41 +02:00
Pavel Djundik 03a355f109
v3.0.1 2019-02-11 10:17:18 +02:00
Jérémie Astori ffd51a627b
Add changelog entry for v3.0.1 2019-02-11 00:57:22 -05:00
Pavel Djundik c19fecb240
Merge pull request #3040 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.2.0
2019-02-09 17:44:14 +02:00
Renovate Bot 48f10ec52a
Update dependency irc-framework to v4.2.0 2019-02-09 15:13:09 +00:00
Jérémie Astori e4209714ee
Merge pull request #3033 from thelounge/xpaw/fix-input-overflow
Fix up textarea growing to avoid rounding issues in Chrome
2019-02-08 01:00:15 -05:00
Jérémie Astori 95ac570c7b
Merge pull request #3034 from thelounge/xpaw/force-disconnect
Allow forcing /disconnect to stop reconnection timer from running
2019-02-08 00:52:42 -05:00
Pavel Djundik 034c0947f6
Merge pull request #3038 from thelounge/renovate/handlebars-4.x
Update dependency handlebars to v4.1.0
2019-02-07 16:31:35 +02:00
Renovate Bot 8884c90fcf
Update dependency handlebars to v4.1.0 2019-02-07 10:22:04 +00:00
Pavel Djundik 21b3e4b67c
Merge pull request #3036 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.29.3
2019-02-07 11:11:16 +02:00
Renovate Bot dfcabb51f0
Update dependency webpack to v4.29.3 2019-02-07 08:45:30 +00:00
Pavel Djundik 211ebbfe5f Allow forcing /disconnect to stop reconnection timer from running 2019-02-06 12:10:07 +02:00
Pavel Djundik d33021773c Fix up textarea growing to avoid rounding issues in Chrome 2019-02-05 23:24:30 +02:00
Pavel Djundik f3864f8295
Merge pull request #3029 from thelounge/renovate/nyc-13.x
Update dependency nyc to v13.2.0
2019-02-05 14:25:00 +02:00
Pavel Djundik fbce1ec5c0
Merge pull request #3028 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.29.1
2019-02-05 14:24:51 +02:00
Pavel Djundik 1c16c329c0
Merge pull request #3031 from creesch/patch-1
Invites should not automatically highlight you.
2019-02-05 14:24:36 +02:00
Renovate Bot 244ab1378e
Update dependency webpack to v4.29.1 2019-02-05 12:23:33 +00:00
Renovate Bot 4ff96cb28e
Update dependency nyc to v13.2.0 2019-02-05 12:23:23 +00:00
Pavel Djundik adc6fa8409
Merge pull request #3030 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.2.3
2019-02-05 14:22:54 +02:00
creesch 39071aff50 Invites should not automatically highlight you. 2019-02-05 13:06:00 +01:00
Renovate Bot c785bfa261
Update dependency webpack-cli to v3.2.3 2019-02-05 03:16:10 +00:00
Pavel Djundik 7840b56690
Merge pull request #3022 from thelounge/astorije/editorconfig-tab-indent
Make sure the editorconfig indent size applies to all file formats
2019-02-04 10:19:38 +02:00
Jérémie Astori eaab413409
Use a default of 4 spaces for viewing purposes 2019-02-03 03:33:42 -05:00
Jérémie Astori a994830bd8
Make sure the editorconfig indent size applies to all file formats
I was glancing at the Vue PR, and was tired of scrolling horizontally on files with a lot of levels. I first discovered the `?ts=2` query string for GitHub, but then [read here](https://stackoverflow.com/a/33831598/1935861) that it will respect the `indent_size` for tabs, which is rather nifty.
2019-02-03 02:44:50 -05:00
Pavel Djundik 4809884182
Merge pull request #3016 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.7.1
2019-02-02 11:10:38 +02:00
Pavel Djundik 0f4e29d60d
Merge pull request #3011 from thelounge/xpaw/upload-cursor
Fix up link insertion after uploads to be saner
2019-02-02 11:09:29 +02:00
Pavel Djundik f14490cdb5
Merge pull request #3010 from thelounge/xpaw/fix-binary-uploads
Fix incorrect 404 error for files with unknown file type
2019-02-02 11:09:19 +02:00
Renovate Bot ff8ecdeef7
Update dependency @fortawesome/fontawesome-free to v5.7.1 2019-02-01 18:42:36 +00:00
Pavel Djundik b06dc8022b
Merge pull request #3015 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.13.0
2019-02-01 20:37:54 +02:00
Renovate Bot 92311e2089
Update dependency eslint to v5.13.0 2019-02-01 17:54:40 +00:00
Pavel Djundik 3d82378cbd Fix incorrect 404 error for files with unknown file type 2019-01-31 10:12:50 +02:00
Pavel Djundik cf4d2bdfe6
Merge pull request #3008 from thelounge/xpaw/webirc-conf
Add `webirc` key and commas to make it more understandable
2019-01-31 10:00:13 +02:00
Pavel Djundik 9003768d56 Fix up link insertion after uploads to be saner 2019-01-30 20:00:59 +02:00
Pavel Djundik 314a6346c6
Merge pull request #2997 from thelounge/astorije/changelog-renovate-user
Do not report the (renamed) Renovate bot as a contributor
2019-01-30 11:17:26 +02:00
Pavel Djundik 1ea8b576b3 Add webirc key and commas to make it more understandable 2019-01-30 11:15:46 +02:00
Pavel Djundik f6d02dd816
Merge pull request #3006 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.7.0
2019-01-30 11:15:00 +02:00
Jérémie Astori 7c024864b2
Improve discriminating bots from actual contributors in the list of PRs/commits 2019-01-30 00:47:08 -05:00
Jérémie Astori 682207ffe6
Use a __typename on commits and pull requests to discriminate on types
This was done by checking if the entry had a title or a messageHeadline, which is rather brittle.
2019-01-30 00:34:39 -05:00
Pavel Djundik b8dde41482 Bump minimum node version to 8 LTS 2019-01-29 10:44:19 +02:00
Jérémie Astori 85d87a3b37
Make sure to retrieve the correct tag info when there is no commit attached to the tag 2019-01-29 01:04:30 -05:00
Renovate Bot e4451fb207
Update dependency @fortawesome/fontawesome-free to v5.7.0 2019-01-29 05:49:05 +00:00
Jérémie Astori 4fe13ae858
Merge pull request #3003 from thelounge/xpaw/node-10
Bump Travis to use Node 10 LTS for Windows, OSX, and production builds
2019-01-29 00:32:04 -05:00
Pavel Djundik ce87521b37
Bump Travis to use Node 10 LTS for Windows, OSX, and production builds 2019-01-28 17:35:42 +02:00
Pavel Djundik 9b8e677803
Merge pull request #3001 from thelounge/xpaw/update-deps
Update remaining dependencies and lock file
2019-01-28 11:14:59 +02:00
Pavel Djundik 182944bb30 Update remaining dependencies and lock file 2019-01-28 10:54:58 +02:00
Jérémie Astori f54cf50a0b
Merge pull request #2947 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.12.1
2019-01-28 03:38:02 -05:00
Jérémie Astori bd5cbba03e
Do not report the (renamed) Renovate bot as a contributor 2019-01-28 03:13:09 -05:00
Renovate Bot b3c55bc200
Update dependency eslint to v5.12.1 2019-01-28 03:04:44 -05:00
Jérémie Astori 17fbf10909
Merge pull request #2951 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.2.1
2019-01-28 03:02:34 -05:00
Pavel Djundik 99e69c55aa
Merge pull request #2995 from thelounge/xpaw/line-height
Fix line-height to match height in input
2019-01-28 10:01:32 +02:00
Renovate Bot 7579bba079
Update dependency webpack-cli to v3.2.1 2019-01-28 02:35:26 -05:00
Jérémie Astori 9a2d845edd
Merge pull request #2954 from thelounge/renovate/babel-loader-8.x
Update dependency babel-loader to v8.0.5
2019-01-28 02:32:51 -05:00
Renovate Bot 579118eb72
Update dependency babel-loader to v8.0.5 2019-01-28 02:05:42 -05:00
Jérémie Astori 8c142811ef
Merge pull request #2965 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.13.0
2019-01-28 01:57:24 -05:00
Renovate Bot 89bbbc0e27
Update dependency yarn to v1.13.0 2019-01-28 01:29:50 -05:00
Jérémie Astori 8bf731fedd
Merge pull request #2986 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.3
2019-01-28 01:06:50 -05:00
Renovate Bot b0c18e06b9
Update dependency sinon to v7.2.3 2019-01-28 00:38:21 -05:00
Jérémie Astori 113e77b1d7
Merge pull request #2944 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.6.3
2019-01-28 00:12:22 -05:00
Renovate Bot ac59d99d8e
Update dependency @fortawesome/fontawesome-free to v5.6.3 2019-01-28 04:12:29 +00:00
Jérémie Astori 7052e4721b
Merge pull request #2938 from thelounge/renovate/handlebars-loader-1.x
Update dependency handlebars-loader to v1.7.1
2019-01-27 23:12:16 -05:00
Jérémie Astori eb7f311d94
Merge pull request #2941 from thelounge/renovate/emoji-regex-7.x
Update dependency emoji-regex to v7.0.3
2019-01-27 23:12:07 -05:00
Jérémie Astori d785af9c05
Merge pull request #2957 from thelounge/renovate/chalk-2.x
Update dependency chalk to v2.4.2
2019-01-27 23:11:56 -05:00
Jérémie Astori 8ef1bc63e8
Merge pull request #2962 from thelounge/renovate/primer-tooltips-1.x
Update dependency primer-tooltips to v1.5.11
2019-01-27 23:11:42 -05:00
Jérémie Astori cf79ba3b80
Merge pull request #2991 from thelounge/renovate/moment-2.x
Update dependency moment to v2.24.0
2019-01-27 23:11:32 -05:00
Jérémie Astori 76544a192a
Merge pull request #3000 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.7.1
2019-01-27 23:11:22 -05:00
Renovate Bot 46c649c7ff
Update dependency primer-tooltips to v1.5.11 2019-01-28 00:25:29 +00:00
Renovate Bot 19812197c7
Update dependency moment to v2.24.0 2019-01-28 00:25:20 +00:00
Renovate Bot 0bf4e3fab3
Update dependency handlebars-loader to v1.7.1 2019-01-28 00:25:10 +00:00
Renovate Bot cfa420de2e
Update dependency file-type to v10.7.1 2019-01-28 00:25:02 +00:00
Renovate Bot 76bc057937
Update dependency emoji-regex to v7.0.3 2019-01-28 00:24:46 +00:00
Renovate Bot e2e1781612
Update dependency chalk to v2.4.2 2019-01-28 00:24:38 +00:00
Jérémie Astori e58ad69a38
Merge pull request #2942 from thelounge/renovate/babel-monorepo
Update dependency @babel/preset-env to v7.3.1
2019-01-27 19:23:41 -05:00
Renovate Bot f37e0ffde3
Update dependency @babel/preset-env to v7.3.1 2019-01-27 23:23:43 +00:00
Jérémie Astori 3e623e8b77
Merge pull request #2939 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.7.0
2019-01-27 18:23:20 -05:00
Pavel Djundik b27e92f11d
Merge pull request #2999 from thelounge/astorije/travis-npm-dist-tag
Keep using npm to clean up dist-tags after a stable release
2019-01-28 00:56:32 +02:00
Pavel Djundik 03c4fc58a3
Merge pull request #2993 from thelounge/xpaw/require-resolve-yarn
Use require.resolve for yarn
2019-01-28 00:56:19 +02:00
Pavel Djundik ba397c158a
Merge pull request #2989 from thelounge/xpaw/fix-2988
Always emit part message (required for logging)
2019-01-28 00:56:11 +02:00
Jérémie Astori 7ebdb84a30
Keep using npm to clean up dist-tags after a stable release
- After deploy, `yarn tag` gets prompted for login, because npm login != yarn login
- When I tried to do it locally, `yarn tag remove thelounge next` consistently gave me a 404, but `npm dist-tag rm thelounge next` worked nbd.
2019-01-27 17:54:58 -05:00
Jérémie Astori eec6ce80ae
Merge pull request #2998 from thelounge/astorije/changelog-v3
Add changelog entry for v3.0.0
2019-01-27 16:42:34 -05:00
Jérémie Astori 3c3546c3d1
v3.0.0 2019-01-27 16:15:57 -05:00
Jérémie Astori 4ae7d5b0ef
Add changelog entry for v3.0.0 2019-01-27 16:14:26 -05:00
Pavel Djundik d260ee05da Fix line-height to match height in input 2019-01-26 10:34:12 +02:00
Pavel Djundik c870545b46 Use require.resolve for yarn 2019-01-24 18:52:15 +02:00
Pavel Djundik 02a343624e Always emit part message (required for logging)
Fixes #2988
2019-01-21 18:07:00 +02:00
Pavel Djundik f49bf19023
Merge pull request #2979 from thelounge/xpaw/set-yarn-cache
Set yarn cache folder in the packages folder
2019-01-21 14:42:14 +02:00
Pavel Djundik b81de36403
Merge pull request #2985 from thelounge/xpaw/fix-fs-sync
Fix incorrect use of fs.stat
2019-01-21 11:13:12 +02:00
Pavel Djundik 221b7145f1
Fix incorrect use of fs.stat 2019-01-19 12:00:09 +02:00
Pavel Djundik 6e1a73eea2
Merge pull request #2984 from thelounge/astorije/selectable-changelog
Make sure the changelog page is selectable, e.g. for copy-pasting commands
2019-01-19 11:40:35 +02:00
Jérémie Astori 69788a6b9b
Make sure the changelog page is selectable, e.g. for copy-pasting commands 2019-01-19 01:37:26 -05:00
Jérémie Astori 35e13cad62
Merge pull request #2983 from thelounge/astorije/upload-file-casing
Fix casing of "Upload file" tooltip
2019-01-18 03:17:28 -05:00
Jérémie Astori 2b10cf203b
Fix casing of "Upload file" tooltip 2019-01-18 00:53:28 -05:00
Jérémie Astori c3ba9234ac
Merge pull request #2981 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4.1.0
2019-01-17 00:50:48 -05:00
Renovate Bot 2e4b543ca9
Update dependency irc-framework to v4.1.0 2019-01-16 16:52:54 +00:00
Pavel Djundik e452ba5e84
Merge pull request #2980 from thelounge/xpaw/fix-highlight
Fix highlight styles not applying to notices and actions
2019-01-16 13:32:38 +02:00
Pavel Djundik 84ae91c525
Merge pull request #2977 from thelounge/xpaw/setting-new
Add an extra check for setting names
2019-01-16 13:32:22 +02:00
Pavel Djundik 17115fa74d Fix highlight styles not applying to notices and actions 2019-01-16 13:29:45 +02:00
Pavel Djundik 6937e6e772 Set yarn cache folder in the packages folder
Fixes thelounge/thelounge-docker#71
2019-01-16 12:51:52 +02:00
Pavel Djundik e80b058550
Don't allow setting values to be objects 2019-01-16 10:59:52 +02:00
Pavel Djundik 95a0045a0d
Add an extra check for setting names 2019-01-16 10:52:09 +02:00
Pavel Djundik 589e846b73 v3.0.0-rc.6 2019-01-15 13:52:11 +02:00
Pavel Djundik bd8fdea618 Update changelog 2019-01-15 13:52:05 +02:00
Pavel Djundik 6fb41b44d4
Merge pull request #2937 from thelounge/xpaw/empty-storage-later
Empty storage directory after destroying all channels
2019-01-15 13:51:35 +02:00
Pavel Djundik 3457e2cfde
Merge pull request #2975 from thelounge/xpaw/fix-2969
Fix .active styles incorrectly applying to hovered users in userlist
2019-01-15 13:32:47 +02:00
Pavel Djundik 13d21ce002
Merge pull request #2959 from thelounge/xpaw/relax-identd
Relax identd checks to make it more compatible
2019-01-15 13:32:39 +02:00
Pavel Djundik c9f407c224
Merge pull request #2955 from moundahiwale/moun/catch-ldap-messages
Catch LDAP bind error and search warning log messages in ldap tests
2019-01-15 13:32:23 +02:00
Pavel Djundik 2f777627b9
Merge pull request #2958 from thelounge/xpaw/ident-bind
Don't fallback to `host` in identd server
2019-01-15 13:32:13 +02:00
Pavel Djundik 185fb9c71c
Merge pull request #2967 from thelounge/xpaw/fix-2966
Add fallback ip address for unix sockets
2019-01-15 13:32:00 +02:00
Pavel Djundik eb648195de Fix .active styles incorrectly applying to hovered users in userlist
Fixes #2969
2019-01-15 12:56:26 +02:00
Pavel Djundik 9031999033
Merge pull request #2973 from thelounge/xpaw/sw-non-200-reject
Serve requests from cache when server responds with non 2xx response
2019-01-12 10:27:43 +02:00
Jérémie Astori 80b5fa20fe
Merge pull request #2970 from thelounge/astorije/changelog-gen-contributors
List website contributors as well when generating changelog entries
2019-01-12 01:46:05 -05:00
Jérémie Astori 347faa8674
Merge pull request #2972 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.6
2019-01-12 01:44:57 -05:00
Pavel Djundik cb59681cd9 Serve requests from cache when server responds with non 2xx response 2019-01-11 21:26:01 +02:00
Renovate Bot e86b754390
Update dependency sqlite3 to v4.0.6 2019-01-11 18:23:04 +00:00
Jérémie Astori 07052d2870
List website contributors as well when generating changelog entries 2019-01-10 01:11:48 -05:00
Pavel Djundik d0f6c70df5 Add fallback ip address for unix sockets
Fixes #2966
2019-01-09 11:38:21 +02:00
Jérémie Astori 2a1e711f42
Merge pull request #2961 from thelounge/astorije/changelog-refresh
Only generate entries for commits/PRs that do not already exist in the CHANGELOG upon re-generation
2019-01-09 01:47:28 -05:00
Jérémie Astori aa39f31fa9
Cleanup changelog entries dedupe function 2019-01-08 00:30:06 -05:00
Jérémie Astori 41c1b3275e
Only generate entries for commits/PRs that do not already exist in the CHANGELOG upon re-generation
This is helpful when commits are added after starting to work on the changelog entry.
2019-01-07 00:32:18 -05:00
Pavel Djundik a9aac1648c
Relax identd checks to make it more compatible 2019-01-06 21:44:43 +02:00
Pavel Djundik fedbb0b819
Don't fallback to host in identd server 2019-01-06 20:55:15 +02:00
Pavel Djundik 4b75b42597
Merge pull request #2945 from thelounge/renovate/webpack-dev-server-3.x
Update dependency webpack-dev-server to v3.1.14 [SECURITY]
2019-01-06 11:42:07 +02:00
moundahiwale c30684aad1 Assert LDAP bind failed error and search warning log messages in ldap tests 2019-01-05 23:08:10 +00:00
Renovate Bot ffeb2322f4
Update dependency webpack-dev-server to v3.1.14 2018-12-24 10:05:38 +00:00
Pavel Djundik ab083f9eb6 Fix wav mime type in uploader 2018-12-19 17:20:47 +02:00
Renovate Bot 1b657973a4
Update dependency file-type to v10.7.0 2018-12-18 18:46:50 +00:00
Pavel Djundik ed10e14b47
Empty storage directory after destroying all channels 2018-12-18 13:08:18 +02:00
Jérémie Astori 0995f95296
Merge pull request #2932 from thelounge/renovate/babel-monorepo
Update dependency @babel/core to v7.2.2
2018-12-15 23:47:04 -05:00
Jérémie Astori ce1e12b151
Merge pull request #2930 from thelounge/xpaw/ldap-log
Add logging to all code paths in LDAP auth
2018-12-15 23:46:04 -05:00
Jérémie Astori 263d2ca133
Merge pull request #2786 from thelounge/xpaw/fix-changelog
Update changelog generator script
2018-12-15 23:44:29 -05:00
Renovate Bot b4c47b09b6
Update dependency @babel/core to v7.2.2 2018-12-15 10:14:02 +00:00
Pavel Djundik a07c80322d
Merge pull request #2927 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.2
2018-12-13 11:07:37 +02:00
Pavel Djundik 80b95b1fa6
Merge pull request #2931 from thelounge/renovate/moment-2.x
Update dependency moment to v2.23.0
2018-12-13 11:07:27 +02:00
Pavel Djundik c7f2a373f1
Merge pull request #2929 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.6.1
2018-12-13 11:07:18 +02:00
Renovate Bot 71912dad44
Update dependency moment to v2.23.0 2018-12-13 06:55:04 +00:00
Pavel Djundik 7da036bf34 Add extra logging in ldap 2018-12-12 22:33:30 +02:00
Renovate Bot 87107c7ad8
Update dependency @fortawesome/fontawesome-free to v5.6.1 2018-12-12 17:11:36 +00:00
Renovate Bot 5cd82b1a40
Update dependency sinon to v7.2.2 2018-12-12 08:24:37 +00:00
Pavel Djundik 6eb2af1bd8
Merge pull request #2925 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.2.0
2018-12-10 11:30:54 +02:00
Renovate Bot a1df89d956
Update dependency sinon to v7.2.0 2018-12-10 08:14:58 +00:00
Jérémie Astori 74b7d22a44
Add a couple URLs in changelog output to make it easier to track skipped commits/PRs 2018-12-10 01:17:47 -05:00
Jérémie Astori f832f8e65b
Fix a bug in comment meta tag detection 2018-12-10 01:17:19 -05:00
Jérémie Astori 8e2b64d8b1
Skip all commits for version bumps or changelog entries 2018-12-10 01:16:58 -05:00
Jérémie Astori 99181b9e15
Merge pull request #2922 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.6.0
2018-12-09 03:26:49 -05:00
Renovate Bot bf89191c6b
Update dependency @fortawesome/fontawesome-free to v5.6.0 2018-12-08 07:23:33 +00:00
Jérémie Astori 439924532d
Merge pull request #2923 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.10.0
2018-12-08 02:22:56 -05:00
Renovate Bot 99056d3c2d
Update dependency eslint to v5.10.0 2018-12-08 06:33:51 +00:00
Pavel Djundik 2ad32b1be0
Merge pull request #2920 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.5.0
2018-12-07 12:26:22 +02:00
Renovate Bot 5fdbef39a4
Update dependency mini-css-extract-plugin to v0.5.0 2018-12-07 10:17:17 +00:00
Pavel Djundik 63aaa9e1c8
Merge pull request #2919 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.27.1
2018-12-05 21:46:19 +02:00
Renovate Bot bdcac810a1
Update dependency webpack to v4.27.1 2018-12-05 19:33:14 +00:00
Pavel Djundik 6ec00bb159
Merge pull request #2914 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.6.0
2018-12-04 14:24:39 +02:00
Pavel Djundik 3298ebe0e3
Merge pull request #2917 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.27.0
2018-12-04 14:24:31 +02:00
Pavel Djundik 2482fdc7d0
Merge pull request #2916 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.2.0
2018-12-04 14:24:23 +02:00
Pavel Djundik 3a40d17bbc
Merge pull request #2915 from MaxLeiter/patch-4
Fix spelling mistake in defaults/config.js
2018-12-04 14:17:12 +02:00
Renovate Bot 0df3f8b731
Update dependency webpack to v4.27.0 2018-12-04 09:35:59 +00:00
Renovate Bot 1981da9667
Update babel monorepo to v7.2.0 2018-12-03 19:08:51 +00:00
Max Leiter 47abb00f19
Fix spelling mistake in defaults/config.js 2018-12-03 19:25:12 +01:00
Renovate Bot 9f76532fa6
Update dependency file-type to v10.6.0 2018-12-03 03:33:58 +00:00
Pavel Djundik 5efde5b2aa
Merge pull request #2913 from thelounge/xpaw/doc-relative-urls
Make links in generated config relative
2018-11-30 12:57:21 +02:00
Pavel Djundik f02949ef0a Make links in generated config relative 2018-11-30 12:34:18 +02:00
Pavel Djundik 62e24a9c2b
Merge pull request #2901 from thelounge/xpaw/new-links
Update documentation links in config, fix up ldap section
2018-11-30 12:30:59 +02:00
Pavel Djundik bfd47de523
Merge pull request #2902 from thelounge/xpaw/readme-wiki
Remove wiki link from readme
2018-11-30 12:29:11 +02:00
Pavel Djundik 5055d7d481
Merge pull request #2906 from thelounge/xpaw/tooltips
Move `primer-tooltips` and `moment` to `devDependencies`
2018-11-30 12:29:01 +02:00
Pavel Djundik 0e4eb4e269
Merge pull request #2907 from thelounge/xpaw/fix-colors
Fix missing colors dependency, simplify version warning
2018-11-30 12:28:53 +02:00
Pavel Djundik 9e69aed06b
Merge pull request #2911 from thelounge/renovate/socket.io-2.x
Update dependency socket.io to v2.2.0
2018-11-30 12:28:45 +02:00
Pavel Djundik f39e013917 Update dependency socket.io to v2.2.0 2018-11-30 11:35:53 +02:00
Pavel Djundik 27c694e6ed
Merge pull request #2909 from thelounge/renovate/stylelint-9.x
Update dependency stylelint to v9.9.0
2018-11-29 10:43:41 +02:00
Pavel Djundik 956dbac94c
Merge pull request #2908 from thelounge/renovate/linkify-it-2.x
Update dependency linkify-it to v2.1.0
2018-11-29 10:43:32 +02:00
Renovate Bot 335ceb8013
Update dependency stylelint to v9.9.0 2018-11-27 21:24:48 +00:00
Renovate Bot 1fcd81229c
Update dependency linkify-it to v2.1.0 2018-11-27 20:49:10 +00:00
Pavel Djundik 8635f2f3d8 Fix missing colors dependency, simplify version warning 2018-11-27 13:15:01 +02:00
Pavel Djundik 64c3c5b446 Move primer-tooltips and moment to devDependencies 2018-11-27 12:55:10 +02:00
Pavel Djundik 6a4a45711b
Merge pull request #2905 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.26.1
2018-11-26 19:07:56 +02:00
Pavel Djundik 6d183325da
Merge pull request #2903 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.4.5
2018-11-26 19:07:40 +02:00
Renovate Bot 2c852de7ff
Update dependency webpack to v4.26.1 2018-11-26 17:06:24 +00:00
Renovate Bot e9370c984e
Update dependency mini-css-extract-plugin to v0.4.5 2018-11-26 17:06:15 +00:00
Pavel Djundik 82ed742c27
Merge pull request #2904 from thelounge/renovate/npm-run-all-4.x
Update dependency npm-run-all to v4.1.5
2018-11-26 19:05:40 +02:00
Renovate Bot 3a3e89ccdd
Update dependency npm-run-all to v4.1.5 2018-11-24 13:56:40 +00:00
Pavel Djundik 500472a358 Remove wiki link from readme 2018-11-21 18:51:04 +02:00
Pavel Djundik 4038236e8a Update documentation links in config, fix up ldap section 2018-11-21 18:47:09 +02:00
Pavel Djundik dedaa1f337 3.0.0-rc.5 2018-11-21 11:50:07 +02:00
Pavel Djundik e97db8e244
Merge pull request #2895 from thelounge/xpaw/manifest
Rename `manifest.json` to `thelounge.webmanifest`
2018-11-21 11:48:17 +02:00
Pavel Djundik 4f0a22482b
Merge pull request #2897 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.5.0
2018-11-20 14:35:26 +02:00
Pavel Djundik 4c9bb98a9b
Merge pull request #2899 from thelounge/renovate/primer-tooltips-1.x
Update dependency primer-tooltips to v1.5.9
2018-11-20 14:35:16 +02:00
Pavel Djundik 1c046ddac8
Merge pull request #2898 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.26.0
2018-11-20 14:35:03 +02:00
Renovate Bot 9cd9d4c7d2
Update dependency primer-tooltips to v1.5.9 2018-11-20 00:10:29 +00:00
Renovate Bot 4b3374c749
Update dependency webpack to v4.26.0 2018-11-19 08:47:41 +00:00
Renovate Bot c67909a511
Update dependency file-type to v10.5.0 2018-11-19 05:16:05 +00:00
Pavel Djundik ca63aac056
Merge pull request #2896 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.1.6
2018-11-13 23:47:25 +02:00
Renovate Bot a56dbd79ac
Update babel monorepo to v7.1.6 2018-11-13 21:24:28 +00:00
Pavel Djundik 057599819d
Merge pull request #2885 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.12.3
2018-11-13 17:01:21 +02:00
Pavel Djundik 520865c558
Merge pull request #2892 from thelounge/renovate/babel-monorepo
Update babel monorepo to v7.1.5
2018-11-13 17:01:10 +02:00
Pavel Djundik 61a097f2f3
Merge pull request #2875 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.9.0
2018-11-13 17:01:01 +02:00
Pavel Djundik 106092c630
Merge pull request #2878 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.4.0
2018-11-13 17:00:49 +02:00
Pavel Djundik e033010841 Rename manifest.json to thelounge.webmanifest
This makes express serve it with correct content-type of application/manifest+json

Refs:
- https://w3c.github.io/manifest/#media-type-registration
- https://webhint.io/docs/user-guide/hints/hint-manifest-file-extension/
2018-11-13 13:33:25 +02:00
Renovate Bot 53436ef97d
Update dependency yarn to v1.12.3 2018-11-13 11:32:25 +00:00
Renovate Bot a2d20ecd42
Update dependency eslint to v5.9.0 2018-11-13 11:32:13 +00:00
Renovate Bot c7082db602
Update babel monorepo to v7.1.5 2018-11-13 11:32:01 +00:00
Pavel Djundik eb522e9208
Merge pull request #2880 from thelounge/renovate/stylelint-9.x
Update dependency stylelint to v9.8.0
2018-11-13 13:31:27 +02:00
Pavel Djundik dd61e6e09a Use fileType.minimumBytes 2018-11-13 13:30:02 +02:00
Renovate Bot 943e25cb3e
Update dependency stylelint to v9.8.0 2018-11-13 11:28:38 +00:00
Renovate Bot d2b2cf308c
Update dependency file-type to v10.4.0 2018-11-13 11:28:27 +00:00
Pavel Djundik a7d79c8a7f
Merge pull request #2886 from thelounge/renovate/copy-webpack-plugin-4.x
Update dependency copy-webpack-plugin to v4.6.0
2018-11-13 13:27:12 +02:00
Pavel Djundik fe047264fb
Merge pull request #2887 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.1.1
2018-11-13 13:27:03 +02:00
Pavel Djundik e23fe19504
Merge pull request #2888 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.25.1
2018-11-13 13:26:36 +02:00
Pavel Djundik d5a3241887
Merge pull request #2889 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.5.0
2018-11-13 13:26:25 +02:00
Renovate Bot c26b703f66
Update dependency copy-webpack-plugin to v4.6.0 2018-11-13 11:26:20 +00:00
Renovate Bot 70188bff72
Update dependency @fortawesome/fontawesome-free to v5.5.0 2018-11-13 11:26:12 +00:00
Pavel Djundik 9e51d12acd
Merge pull request #2893 from thelounge/renovate/fs-extra-7.x
Update dependency fs-extra to v7.0.1
2018-11-13 13:25:42 +02:00
Pavel Djundik e04c100fe6
Merge pull request #2894 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.4
2018-11-13 13:25:15 +02:00
Renovate Bot b1f110c1a3
Update dependency sqlite3 to v4.0.4 2018-11-10 14:59:28 +00:00
Renovate Bot a3c8212669
Update dependency fs-extra to v7.0.1 2018-11-07 13:27:33 +00:00
Renovate Bot bddb31b8b2
Update dependency webpack to v4.25.1 2018-11-05 18:42:25 +00:00
Renovate Bot e91a55fd99
Update dependency sinon to v7.1.1 2018-11-05 12:05:34 +00:00
Pavel Djundik f01bf0cc09
Merge pull request #2891 from thelounge/astorije/screenshot-url
Use new app screenshot URL
2018-11-05 10:54:11 +02:00
Jérémie Astori 4ec6649b39
Use new app screenshot URL 2018-11-04 17:22:04 -05:00
Jérémie Astori 419f193348
Merge pull request #2890 from thelounge/xpaw/screenshot-url
Change screenshot link to website repo
2018-11-03 19:42:24 -04:00
Pavel Djundik d90b9445b2
Change screenshot link to website repo 2018-11-04 00:47:31 +02:00
Jérémie Astori ade556c300
Merge pull request #2882 from thelounge/xpaw/config
Minor fixes in the config
2018-10-30 01:08:34 -04:00
Jérémie Astori 7c96e1ff03
Merge pull request #2883 from thelounge/xpaw/sanitize-logo
Sanitize logo url in readme
2018-10-30 01:01:46 -04:00
Pavel Djundik 414cd390b6
Sanitize logo url in readme 2018-10-29 12:47:52 +02:00
Pavel Djundik e321c7eb99 Minor fixes in the config 2018-10-29 09:54:58 +02:00
Jérémie Astori 927fa92518
Merge pull request #2881 from thelounge/astorije/config-generator-comment
Fix config generator script comment 🙄
2018-10-29 02:36:39 -04:00
Jérémie Astori 7c4fce55ff
Fix config generator script comment 🙄 2018-10-28 22:55:54 -04:00
Jérémie Astori 9434f87d66
Merge pull request #2877 from thelounge/astorije/node-11
Add Node.js v11 to the Travis CI matrix
2018-10-28 16:36:05 -04:00
Pavel Djundik 6e7eb04ee8
Merge pull request #2876 from thelounge/astorije/travis-tokens
Generate new secure entries for Travis deploy step to npm
2018-10-28 09:31:11 +02:00
Jérémie Astori 5269106198
Add Node.js v11 to the Travis CI matrix 2018-10-28 02:00:22 -04:00
Jérémie Astori 97ae79a6a3
Generate new secure entries for Travis deploy step to npm 2018-10-28 01:56:35 -04:00
Pavel Djundik b0095488f9 v3.0.0-rc.4 2018-10-26 11:12:40 +03:00
Jérémie Astori 89fe386611
Merge pull request #2874 from thelounge/renovate/font-awesome
Update dependency @fortawesome/fontawesome-free to v5.4.2
2018-10-26 01:34:36 -04:00
Renovate Bot 0a6649e938
Update dependency @fortawesome/fontawesome-free to v5.4.2 2018-10-26 04:53:36 +00:00
Jérémie Astori 9980419bc6
Merge pull request #2873 from thelounge/renovate/ua-parser-js-0.x
Update dependency ua-parser-js to v0.7.19
2018-10-26 00:52:03 -04:00
Jérémie Astori af7e7e8281
Merge pull request #2872 from thelounge/renovate/html-minifier-3.x
Update dependency html-minifier to v3.5.21
2018-10-26 00:51:39 -04:00
Jérémie Astori a7817cf94b
Merge pull request #2871 from thelounge/semver
Update semver and lock file
2018-10-26 00:51:13 -04:00
Renovate Bot c018bbfaf4
Update dependency ua-parser-js to v0.7.19 2018-10-25 18:39:29 +00:00
Renovate Bot 568ae78fad
Update dependency html-minifier to v3.5.21 2018-10-25 17:32:26 +00:00
Pavel Djundik a6aff32655 Update semver and lock file 2018-10-25 15:33:58 +03:00
Pavel Djundik ed7ddf43fe
Merge pull request #2870 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7.1.0
2018-10-25 15:26:30 +03:00
Pavel Djundik 1aa14b1f98
Merge pull request #2869 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.23.1
2018-10-25 15:26:21 +03:00
Pavel Djundik 4b7d2ebe78
Merge pull request #2866 from thelounge/renovate/primer-tooltips-1.x
Update dependency primer-tooltips to v1.5.8
2018-10-25 15:26:13 +03:00
Pavel Djundik 8b4d5b2981
Merge pull request #2868 from thelounge/renovate/socketio-file-upload-0.x
Update dependency socketio-file-upload to v0.6.4
2018-10-25 15:26:06 +03:00
Renovate Bot 76aacdfaf1
Update dependency sinon to v7.1.0 2018-10-25 10:22:19 +00:00
Renovate Bot acaee577e7
Update dependency webpack to v4.23.1 2018-10-25 09:03:34 +00:00
Renovate Bot b337a60027
Update dependency socketio-file-upload to v0.6.4 2018-10-25 08:03:04 +00:00
Renovate Bot be9db8c4b0
Update dependency primer-tooltips to v1.5.8 2018-10-25 08:02:54 +00:00
Pavel Djundik e8c5c5580e
Merge pull request #2867 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.23.0
2018-10-25 11:02:17 +03:00
Renovate Bot 1a962a774b
Update dependency webpack to v4.23.0 2018-10-24 17:46:12 +00:00
Pavel Djundik ccfcec2361
Merge pull request #2860 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.22.0
2018-10-23 11:31:11 +03:00
Pavel Djundik 238eaa70df
Merge pull request #2850 from thelounge/travis-all-os
Enable Windows and macOS builds on Travis, remove AppVeyor
2018-10-23 11:30:12 +03:00
Renovate Bot 087b266408
Update dependency webpack to v4.22.0 2018-10-23 08:29:17 +00:00
Pavel Djundik c92b067a5a
Merge pull request #2861 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10.1.0
2018-10-23 11:28:39 +03:00
Renovate Bot ea9da4b217
Update dependency file-type to v10.1.0 2018-10-23 06:03:22 +00:00
Jérémie Astori bc1a43e5d0
Merge pull request #2863 from thelounge/renovate/sqlite3-4.x
Update dependency sqlite3 to v4.0.3
2018-10-23 00:40:36 -04:00
Jérémie Astori b6e9facf4b
Merge pull request #2862 from thelounge/renovate/intersection-observer-0.x
Update dependency intersection-observer to v0.5.1
2018-10-23 00:40:11 -04:00
Renovate Bot cb9ffc3a99
Update dependency sqlite3 to v4.0.3 2018-10-23 04:16:33 +00:00
Renovate Bot 911b35793e
Update dependency intersection-observer to v0.5.1 2018-10-23 04:16:23 +00:00
Jérémie Astori 132c47ac21
Merge pull request #2864 from thelounge/renovate/webpack-dev-server-3.x
Update dependency webpack-dev-server to v3.1.10
2018-10-23 00:15:38 -04:00
Renovate Bot b3b2e2a4ab
Update dependency webpack-dev-server to v3.1.10 2018-10-23 03:14:26 +00:00
Jérémie Astori 18f96934f2
Merge pull request #2859 from thelounge/xpaw/openChannel
Fix timing issue crashing on undefined when setting openChannel
2018-10-21 14:14:15 -04:00
Pavel Djundik d5aa00b753 Fix timing issue crashing on undefined when setting openChannel 2018-10-21 11:05:05 +03:00
Pavel Djundik 5b40a6fb58
Merge pull request #2858 from thelounge/xpaw/limit-nick
Hard limit nicks to 100 characters, add maxlength on connect inputs
2018-10-20 23:08:20 +03:00
Pavel Djundik 3ed7d96ea3
Merge pull request #2854 from thelounge/xpaw/fix-screenx
Fix touch position being null when touching with multiple fingers
2018-10-20 23:08:10 +03:00
Pavel Djundik 3b9bc48593
Merge pull request #2857 from thelounge/renovate/mime-types-2.x
Update dependency mime-types to v2.1.21
2018-10-20 14:14:23 +03:00
Pavel Djundik 57b30e1b79
Merge pull request #2855 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.21.0
2018-10-20 14:13:31 +03:00
Pavel Djundik 511df7cef2
Merge pull request #2856 from thelounge/renovate/copy-webpack-plugin-4.x
Update dependency copy-webpack-plugin to v4.5.4
2018-10-20 14:13:23 +03:00
Pavel Djundik 8d5d9617ae Hard limit nicks to 100 characters, add maxlength on connect inputs 2018-10-20 14:10:26 +03:00
Renovate Bot 6013977dea
Update dependency mime-types to v2.1.21 2018-10-20 03:39:31 +00:00
Renovate Bot 5a258796df
Update dependency copy-webpack-plugin to v4.5.4 2018-10-18 23:01:52 +00:00
Renovate Bot 56cc8fbe32
Update dependency webpack to v4.21.0 2018-10-17 18:16:22 +00:00
Pavel Djundik b8f0a4601c Enable macOS and Windows builds on Travis, remove AppVeyor config 2018-10-15 19:52:27 +03:00
Pavel Djundik bb6a9657a0 Fix touch position being null when touching with multiple fingers 2018-10-15 14:54:33 +03:00
Pavel Djundik bebc9db629
Merge pull request #2852 from thelounge/renovate/nyc-13.x
Update dependency nyc to v13.1.0
2018-10-15 11:13:46 +03:00
Renovate Bot 2c69a28ffd Update dependency nyc to v13.1.0 2018-10-15 11:07:00 +03:00
Pavel Djundik cb1127de74
Merge pull request #2853 from thelounge/renovate/sinon-7.x
Update dependency sinon to v7
2018-10-15 10:58:50 +03:00
Pavel Djundik 90f8b9a817
Merge pull request #2851 from thelounge/xpaw/express
Force express server to run in production mode
2018-10-15 10:58:13 +03:00
Renovate Bot c5f8bb20bc
Update dependency sinon to v7 2018-10-14 10:44:13 +00:00
Pavel Djundik 1d8a0e639f Encode uploaded file slugs 2018-10-14 00:23:41 +03:00
Pavel Djundik de028e5dd8 Force express server to run in production mode 2018-10-14 00:23:32 +03:00
Pavel Djundik 010ddab78e
Merge pull request #2849 from thelounge/xpaw/webirc-ownprop
Use hasOwnProperty when checking for webirc
2018-10-13 13:11:57 +03:00
Pavel Djundik f1c84c1ede
Merge pull request #2848 from thelounge/xpaw/harden-inputs
Make sure registered command is actually a function
2018-10-13 13:11:49 +03:00
Pavel Djundik 9686c0383e Use hasOwnProperty when checking for webirc 2018-10-13 12:54:46 +03:00
Pavel Djundik 338b1d2642 Make sure registered command is actually a function 2018-10-13 12:42:51 +03:00
Pavel Djundik a6a2336a6f
Merge pull request #2844 from thelounge/renovate/express-4.x
Update dependency express to v4.16.4
2018-10-12 22:49:16 +03:00
Renovate Bot 68eeb76975
Update dependency express to v4.16.4 2018-10-12 19:49:07 +00:00
Pavel Djundik f23a27ce9d
Merge pull request #2843 from thelounge/renovate/semver-5.x
Update dependency semver to v5.6.0
2018-10-12 22:48:53 +03:00
Pavel Djundik 39992db5d0
Merge pull request #2845 from thelounge/renovate/fortawesome-fontawesome-free-5.x
Update dependency @fortawesome/fontawesome-free to v5.4.1
2018-10-12 22:48:45 +03:00
Pavel Djundik f25207aa85
Merge pull request #2842 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.4.4
2018-10-12 22:48:36 +03:00
Pavel Djundik 454d71888b
Merge pull request #2847 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.7.0
2018-10-12 22:48:26 +03:00
Pavel Djundik 0636a6f839
Merge pull request #2841 from thelounge/renovate/copy-webpack-plugin-4.x
Update dependency copy-webpack-plugin to v4.5.3
2018-10-12 22:48:19 +03:00
Renovate Bot f028ac2ea0
Update dependency eslint to v5.7.0 2018-10-12 19:42:26 +00:00
Renovate Bot 7affe78e5a
Update dependency @fortawesome/fontawesome-free to v5.4.1 2018-10-11 19:52:23 +00:00
Renovate Bot 9f41abf246
Update dependency semver to v5.6.0 2018-10-10 23:55:07 +00:00
Renovate Bot 58d617b70d
Update dependency mini-css-extract-plugin to v0.4.4 2018-10-10 13:33:19 +00:00
Renovate Bot 9a5188930a
Update dependency copy-webpack-plugin to v4.5.3 2018-10-10 08:33:05 +00:00
Pavel Djundik 6d6b99576f 3.0.0-rc.3 2018-10-10 10:56:50 +03:00
Pavel Djundik ace9adce19 Add changelog entry for v3.0.0-rc.3 2018-10-10 10:56:25 +03:00
Pavel Djundik 33368b9ee2
Merge pull request #2840 from thelounge/xpaw/fix-2837
Bring back aria-label to fix broken code
2018-10-10 10:54:59 +03:00
Pavel Djundik 1d7ceda9d4 Bring back aria-label to fix broken code
Fixes #2837
Reverts 78f0e544db
Reverts d087c726e0
2018-10-10 10:50:52 +03:00
Pavel Djundik f350ca11ca
Merge pull request #2835 from thelounge/renovate/fortawesome-fontawesome-free-5.x
Update dependency @fortawesome/fontawesome-free to v5.4.0
2018-10-09 10:33:08 +03:00
Pavel Djundik 962cc973c3
Merge pull request #2836 from thelounge/renovate/commander-2.x
Update dependency commander to v2.19.0
2018-10-09 10:33:00 +03:00
Renovate Bot a9d2f317eb
Update dependency commander to v2.19.0 2018-10-08 21:53:25 +00:00
Renovate Bot b9bd90ffe5
Update dependency @fortawesome/fontawesome-free to v5.4.0 2018-10-08 19:29:12 +00:00
Pavel Djundik b6fb9ef5da 3.0.0-rc.2 2018-10-08 11:36:19 +03:00
Pavel Djundik 4db81e1f28 Add changelog entry for v3.0.0-rc.2 2018-10-08 11:35:38 +03:00
Jérémie Astori b6c2b201eb
Merge pull request #2830 from thelounge/xpaw/fix-2829
Remove aria-label on channels in channel list
2018-10-08 00:26:03 -04:00
Pavel Djundik 206802a55f
Merge pull request #2832 from thelounge/renovate/socketio-file-upload-0.x
Update dependency socketio-file-upload to v0.6.3
2018-10-07 22:38:09 +03:00
Renovate Bot 7946603c54
Update dependency socketio-file-upload to v0.6.3 2018-10-07 19:33:06 +00:00
Pavel Djundik 81841bd005
Merge pull request #2833 from thelounge/renovate/file-type-10.x
Update dependency file-type to v10
2018-10-07 22:32:43 +03:00
Renovate Bot f79c54adb0
Update dependency file-type to v10 2018-10-07 17:38:39 +00:00
Jérémie Astori 01e7b88037
Merge pull request #2826 from thelounge/renovate/irc-framework-4.x
Update dependency irc-framework to v4
2018-10-06 10:46:19 -04:00
Pavel Djundik 78f0e544db Remove aria-label on channels in channel list
Fixes #2829
2018-10-06 13:31:42 +03:00
Jérémie Astori 63b78ed7c4
Merge pull request #2828 from thelounge/xpaw/chanlist-unread-label
Put unread and highlight counts in aria-label in the channel list
2018-10-06 01:40:31 -04:00
Jérémie Astori 79801af219
Merge pull request #2824 from thelounge/xpaw/fix-storage-deref
Fix stored image previews not being dereferenced
2018-10-06 01:39:25 -04:00
Pavel Djundik d087c726e0 Put unread and highlight counts in aria-label in the channel list 2018-10-05 12:05:09 +03:00
Pavel Djundik f3b67b773b whois.special is now an array 2018-10-05 10:24:20 +03:00
Renovate Bot fb2cf54c38
Update dependency irc-framework to v4 2018-10-05 05:13:53 +00:00
Pavel Djundik dc6e29476a
Merge pull request #2825 from thelounge/renovate/sinon-6.x
Update dependency sinon to v6.3.5
2018-10-03 19:20:34 +03:00
Renovate Bot e321c90f2a
Update dependency sinon to v6.3.5 2018-10-03 14:33:18 +00:00
Pavel Djundik 8b4b8fbe9e Fix stored image previews not being dereferenced
Broken in 64ebe0f437
2018-10-03 15:44:24 +03:00
Jérémie Astori d303246d24
Merge pull request #2817 from thelounge/xpaw/fix-2816
Remove underline from textcomplete dropdown
2018-10-01 20:01:09 -04:00
Pavel Djundik aceffed61f Remove underline from textcomplete dropdown 2018-10-01 17:12:37 +03:00
Pavel Djundik dfcec914a6
Merge pull request #2815 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.1.2
2018-09-30 10:37:23 +03:00
Renovate Bot e976719d91
Update dependency webpack-cli to v3.1.2 2018-09-29 17:18:08 +00:00
Pavel Djundik 9a0cb9f7bf
Merge pull request #2813 from thelounge/renovate/babel-monorepo
Update dependency @babel/core to v7.1.2
2018-09-29 10:53:31 +03:00
Pavel Djundik 41b1373c6c
Merge pull request #2812 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.6.1
2018-09-29 10:53:24 +03:00
Renovate Bot e57c7be2f2
Update dependency @babel/core to v7.1.2 2018-09-28 22:48:13 +00:00
Renovate Bot 1386d0ce9c
Update dependency eslint to v5.6.1 2018-09-28 17:34:04 +00:00
Pavel Djundik 92cd08ea55
Merge pull request #2810 from thelounge/renovate/stylelint-9.x
Update dependency stylelint to v9.6.0
2018-09-28 09:35:33 +03:00
Renovate Bot 2352ea5f92
Update dependency stylelint to v9.6.0 2018-09-28 04:40:03 +00:00
Jérémie Astori 91660f9e9e
Merge pull request #2809 from thelounge/renovate/chai-4.x
Update dependency chai to v4.2.0
2018-09-28 00:39:41 -04:00
Renovate Bot 9487afdf24
Update dependency chai to v4.2.0 2018-09-28 04:20:31 +00:00
Jérémie Astori 29d634d9f7
Merge pull request #2811 from thelounge/renovate/babel-loader-8.x
Update dependency babel-loader to v8.0.4
2018-09-28 00:20:11 -04:00
Renovate Bot c21a3d3bd9
Update dependency babel-loader to v8.0.4 2018-09-28 03:43:52 +00:00
Jérémie Astori 1436985d30
Merge pull request #2808 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.10.1
2018-09-27 23:43:08 -04:00
Jérémie Astori 1831134bca
Merge pull request #2807 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.20.2
2018-09-27 23:42:50 -04:00
Renovate Bot 8d5feed487
Update dependency yarn to v1.10.1 2018-09-26 13:23:22 +00:00
Renovate Bot 02d8db74c7
Update dependency webpack to v4.20.2 2018-09-25 20:39:04 +00:00
Pavel Djundik 509a2c9358
Merge pull request #2805 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.20.1
2018-09-25 18:57:05 +03:00
Renovate Bot e3b4a8e0b5
Update dependency webpack to v4.20.1 2018-09-25 13:32:14 +00:00
Pavel Djundik 7c00da2d33
Merge pull request #2803 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.20.0
2018-09-25 10:38:42 +03:00
Renovate Bot 1ebe3864f9
Update dependency webpack to v4.20.0 2018-09-25 07:22:54 +00:00
Jérémie Astori c06b96e90b
Merge pull request #2798 from thelounge/xpaw/fix-2797
Fix extra padding in condensed messages on mobile
2018-09-25 01:23:35 -04:00
Jérémie Astori 48c76efe27
Merge pull request #2799 from thelounge/xpaw/upgrade-yarnlock
Upgrade yarn.lock before final release
2018-09-25 01:23:06 -04:00
Jérémie Astori 33b52611b4
Merge pull request #2802 from thelounge/renovate/webpack-dev-server-3.x
Update dependency webpack-dev-server to v3.1.9
2018-09-25 01:20:56 -04:00
Renovate Bot 1270c312d0
Update dependency webpack-dev-server to v3.1.9 2018-09-24 19:21:50 +00:00
Pavel Djundik bad5dac3ab Upgrade yarn.lock before final release 2018-09-24 16:31:55 +03:00
Pavel Djundik d7a37cfdc0
Merge pull request #2787 from thelounge/xpaw/utc-log
Use Date.toISOString for logging
2018-09-24 15:24:33 +03:00
Pavel Djundik ecc1fdd799
Fix extra padding in condensed messages on mobile
Fixes #2797
2018-09-24 10:25:20 +03:00
Pavel Djundik 88ce0cee99 Use Date.toISOString for logging 2018-09-23 21:57:40 +03:00
Pavel Djundik 3b9b5e26f4
Merge pull request #2796 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.1.1
2018-09-23 12:12:48 +03:00
Renovate Bot 7c0e2af0f3
Update dependency webpack-cli to v3.1.1 2018-09-23 09:07:03 +00:00
Jérémie Astori d26db390c3
Merge pull request #2795 from thelounge/xpaw/fix-2794
Fix issues in regards to ignoring your own nickname
2018-09-22 15:33:09 -04:00
Pavel Djundik 2162f4a55a Fix issues in regards to ignoring your own nickname 2018-09-22 13:27:03 +03:00
Pavel Djundik da2f9c4092
Merge pull request #2792 from thelounge/astorije/rm-node-9
Remove Node.js v9 from the Travis CI matrix
2018-09-22 10:35:00 +03:00
Jérémie Astori 2054c5cf82
Merge pull request #2790 from thelounge/xpaw/more-caret-underlnie
Add hover underline on preview expand button
2018-09-22 01:37:03 -04:00
Jérémie Astori 9035acd05d
Remove Node.js v9 from the Travis CI matrix
See https://github.com/nodejs/Release

To this day, Node.js v6 is in maintenance mode, v8 is an active LTS, and v10 is the current stable. v9 has been EOL since June.
2018-09-21 18:53:11 -04:00
Pavel Djundik c62665f47b Add hover underline on preview expand button 2018-09-21 11:05:56 +03:00
Jérémie Astori 4a7be7f954
Merge pull request #2788 from thelounge/xpaw/remove-moment-locales
Remove moment locales from build
2018-09-20 21:07:37 -04:00
Pavel Djundik 6884b7462a Remove moment locales from build 2018-09-20 15:00:17 +03:00
Jérémie Astori 42ab1d1402
3.0.0-rc.1 2018-09-20 00:52:11 -04:00
Jérémie Astori c1ea46b430
Add changelog entry for v3.0.0-rc.1 2018-09-20 00:51:52 -04:00
Jérémie Astori ed06040b8e
Merge pull request #2618 from thelounge/xpaw/underline
Enable underlines on links
2018-09-20 00:42:06 -04:00
Pavel Djundik 05482e952b Update package title extraction for renovate bot 2018-09-19 14:46:55 +03:00
Pavel Djundik 557d4c4ddd Use website repo last tag because it can differ 2018-09-19 14:42:37 +03:00
Pavel Djundik d326435fe7 Split pull request query into chunks
Otherwise github api chokes when asking about too many pull requests at once
2018-09-19 14:31:25 +03:00
Pavel Djundik 62cb252933 Fix website repository name 2018-09-19 14:30:48 +03:00
Pavel Djundik 67a28d1e94
Merge pull request #2785 from williamboman/fix-closing-sidebar
fix automatically closing sidebar on some mobile viewports
2018-09-19 10:45:17 +03:00
William Boman 658dc5a3a2 fix automatically closing sidebar on some mobile viewports
Co-authored-by: Pavel Djundik <github@xpaw.me>

Mobile viewports whose width is equal to the upper boundary
of the mobile viewport breakpoint would not automatically
close the sidebar when selecting an item in it.

Closes #2783.
2018-09-19 09:37:03 +02:00
Pavel Djundik 45235ba7aa Enable underlines on links 2018-09-19 09:58:46 +03:00
Jérémie Astori b93827278f
Merge pull request #2784 from thelounge/renovate/mini-css-extract-plugin-0.x
chore(deps): update dependency mini-css-extract-plugin to v0.4.3
2018-09-18 21:10:55 -04:00
Renovate Bot 79f1685d6a
chore(deps): update dependency mini-css-extract-plugin to v0.4.3 2018-09-18 18:36:19 +00:00
Pavel Djundik 2745931e9e
Merge pull request #2782 from thelounge/renovate/web-push-3.x
fix(deps): update dependency web-push to v3.3.3
2018-09-18 14:57:35 +03:00
Renovate Bot b037d597ed
fix(deps): update dependency web-push to v3.3.3 2018-09-18 10:28:33 +00:00
Pavel Djundik 7f4aa36c7d
Merge pull request #2780 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.3.4
2018-09-18 12:22:16 +03:00
Renovate Bot 6faedf7d16
chore(deps): update dependency sinon to v6.3.4 2018-09-18 09:21:35 +00:00
Pavel Djundik 16dc241cad
Merge pull request #2781 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.19.1
2018-09-18 12:21:14 +03:00
Renovate Bot 41bd5504a0
chore(deps): update dependency webpack to v4.19.1 2018-09-18 08:04:48 +00:00
Jérémie Astori 2ba7b563fe
Merge pull request #2778 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.6.0
2018-09-18 01:35:15 -04:00
Renovate Bot 24d94f4f29
chore(deps): update dependency eslint to v5.6.0 2018-09-18 05:08:42 +00:00
Jérémie Astori 30fd693a67
Merge pull request #2779 from thelounge/renovate/babel-monorepo
chore(deps): update babel monorepo to v7.1.0
2018-09-18 01:08:21 -04:00
Renovate Bot 7cfd4afb48
chore(deps): update babel monorepo to v7.1.0 2018-09-17 19:56:46 +00:00
Pavel Djundik 22d2a0dc2b
Merge pull request #2776 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.3.3
2018-09-14 13:06:39 +03:00
Pavel Djundik 7306e30a60
Merge pull request #2777 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.19.0
2018-09-14 13:06:23 +03:00
Renovate Bot 9f02d4f956
chore(deps): update dependency sinon to v6.3.3 2018-09-14 09:10:57 +00:00
Renovate Bot c081fb378d
chore(deps): update dependency webpack to v4.19.0 2018-09-13 22:10:08 +00:00
Pavel Djundik 66c7159521
Merge pull request #2775 from richrd/fix-fullscreen-video
Fix fullscreen mode for videos.
2018-09-13 20:33:16 +03:00
Richard Lewis e97c9ff265 Fix fullscreen mode for videos. I was unable to reproduce the border radius issue. 2018-09-13 20:04:19 +03:00
Pavel Djundik ee8db6da8c
Merge pull request #2774 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.18.1
2018-09-13 13:47:31 +03:00
Renovate Bot 95a2580b6e
chore(deps): update dependency webpack to v4.18.1 2018-09-13 10:31:45 +00:00
Jérémie Astori e3a000ead3
Merge pull request #2772 from thelounge/renovate/lodash-monorepo
fix(deps): update dependency lodash to v4.17.11
2018-09-13 00:32:48 -04:00
Jérémie Astori 6e3421cd64
Merge pull request #2773 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.3.1
2018-09-13 00:32:27 -04:00
Renovate Bot 81b7f8abc3
chore(deps): update dependency sinon to v6.3.1 2018-09-12 20:11:00 +00:00
Renovate Bot 81b5d6abdc
fix(deps): update dependency lodash to v4.17.11 2018-09-12 18:41:03 +00:00
Pavel Djundik 42a02452cb
Merge pull request #2766 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.18.0
2018-09-12 17:35:25 +03:00
Renovate Bot cd1454e48d
chore(deps): update dependency webpack to v4.18.0 2018-09-12 01:20:18 +00:00
Jérémie Astori 4c9573f8d8
Merge pull request #2768 from thelounge/renovate/babel-monorepo
chore(deps): update dependency @babel/core to v7.0.1
2018-09-11 21:19:54 -04:00
Renovate Bot 593b1cb450
chore(deps): update dependency @babel/core to v7.0.1 2018-09-11 21:41:21 +00:00
Pavel Djundik 72fe898e60
Merge pull request #2764 from thelounge/xpaw/safer-log-folders
Limit network name length and replace spaces in log folders
2018-09-09 15:03:55 +03:00
Pavel Djundik b538360c5e Limit network name length and replace spaces in log folders 2018-09-09 13:09:30 +03:00
Jérémie Astori a4f889d134
Merge pull request #2762 from thelounge/renovate/commander-2.x
fix(deps): update dependency commander to v2.18.0
2018-09-07 19:19:46 -04:00
Renovate Bot e0ceaf4af2
fix(deps): update dependency commander to v2.18.0 2018-09-07 10:29:26 +00:00
Jérémie Astori 69fa473c91
Merge pull request #2755 from thelounge/mcinkay/2470-transparent-icon
Replace normal icon with the transparent version
2018-09-07 01:37:26 -04:00
Jérémie Astori c0436cde5e
Merge pull request #2759 from thelounge/renovate/webpack-dev-server-3.x
chore(deps): update dependency webpack-dev-server to v3.1.8
2018-09-07 01:18:31 -04:00
Renovate Bot 76deb4b2f9
chore(deps): update dependency webpack-dev-server to v3.1.8 2018-09-06 17:54:30 +00:00
Al McKinlay d3b7a205b4
Merge pull request #2756 from thelounge/mcinkay/missing-commands
Add 3 commands that were missing on client autocomplete
2018-09-06 09:52:37 +01:00
Alistair McKinlay 35c328b557 Add 3 commands that were missing on client autocomplete 2018-09-06 09:00:39 +01:00
Alistair McKinlay d0605d33b8 Replace normal icon with the transparent version 2018-09-05 15:19:07 +01:00
Pavel Djundik d6a150c5d6
Merge pull request #2749 from thelounge/xpaw/fix-upload
Move correct file after upload, put file extension in slug
2018-09-05 10:09:19 +03:00
Pavel Djundik bec241e7fa Move correct file after upload, put file extension in slug 2018-09-05 10:08:46 +03:00
Jérémie Astori 52ed6f77f4
Merge pull request #2748 from thelounge/xpaw/fix-2747
Only emit upload url to the client that uploaded the file
2018-09-05 00:16:42 -04:00
Jérémie Astori 05ddf16343
Merge pull request #2752 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.2.0
2018-09-05 00:00:27 -04:00
Jérémie Astori b57f2e9ad6
Merge pull request #2751 from thelounge/xPaw-patch-1
Fix stacktraces in client tests
2018-09-04 23:10:25 -04:00
Renovate Bot 562a2cbed4
chore(deps): update dependency sinon to v6.2.0 2018-09-05 03:09:04 +00:00
Jérémie Astori 503abe985f
Merge pull request #2750 from thelounge/renovate/handlebars-4.x
chore(deps): update dependency handlebars to v4.0.12
2018-09-04 23:08:31 -04:00
Pavel Djundik 2bb627e7f2
Fix stacktraces in client tests 2018-09-04 23:18:17 +03:00
Renovate Bot 2156d6c41f
chore(deps): update dependency handlebars to v4.0.12 2018-09-04 18:47:49 +00:00
Pavel Djundik 8fa8526698 Only emit upload url to the client that uploaded the file
Fixes #2747
2018-09-04 12:08:30 +03:00
Pavel Djundik 8435153de0
Merge pull request #2745 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.17.2
2018-09-03 21:37:36 +03:00
Renovate Bot 0e053f2f47
chore(deps): update dependency webpack to v4.17.2 2018-09-03 17:29:37 +00:00
Pavel Djundik a39f68b4e3
Merge pull request #2744 from thelounge/xPaw-patch-1
Remove incorrect closing tag
2018-09-03 11:25:24 +03:00
Pavel Djundik dce3fb229f
Remove incorrect closing tag 2018-09-03 10:47:51 +03:00
Pavel Djundik a27c33e696
Merge pull request #2743 from thelounge/disable-upload-default
Disable file uploads by default until the UX is better
2018-09-03 10:39:13 +03:00
Pavel Djundik 6d2bde023f
Disable file uploads by default until the UX is better 2018-09-03 10:37:32 +03:00
Pavel Djundik 9d5de22d94
Merge pull request #2552 from MaxLeiter/uploading
Add file uploading support
2018-09-03 10:35:00 +03:00
Pavel Djundik ce212e001c Add file uploading support
Co-Authored-By: Max Leiter <hello@maxleiter.com>
Co-Authored-By: Jérémie Astori <astorije@users.noreply.github.com>
2018-09-03 10:30:05 +03:00
Jérémie Astori 7c12883dc1
Merge pull request #2741 from thelounge/xpaw/firefox-save-pass
Fix passwords not being saved in Firefox
2018-09-03 00:42:57 -04:00
Jérémie Astori bb88e49dc5
Merge pull request #2742 from thelounge/renovate/babel-loader-8.x
chore(deps): update dependency babel-loader to v8.0.2
2018-09-03 00:30:45 -04:00
Renovate Bot 5acb1d4fd5
chore(deps): update dependency babel-loader to v8.0.2 2018-09-03 00:08:06 +00:00
Pavel Djundik f2ee299004 Fix passwords not being saved in Firefox
Fixes #1740
2018-09-02 20:34:47 +03:00
Pavel Djundik bae398235e
Merge pull request #2740 from thelounge/renovate/babel-loader-8.x
chore(deps): update dependency babel-loader to v8.0.1
2018-09-02 20:10:54 +03:00
Renovate Bot 11413a9288
chore(deps): update dependency babel-loader to v8.0.1 2018-09-02 09:24:11 +00:00
Jérémie Astori 621ab2ac07
Merge pull request #2737 from thelounge/readme-screen
Update screenshot in readme
2018-09-02 00:55:51 -04:00
Pavel Djundik 9fb871c2f7
Update screenshot in readme
Closes #2129
2018-09-01 19:36:34 +03:00
Pavel Djundik b3c282f663
Merge pull request #2701 from adamus1red/adamus1red/iframe-localstorage
Add `try`/`catch` to `localStorage` methods
2018-09-01 11:18:55 +03:00
Jérémie Astori aabe0824a7
Merge pull request #2733 from thelounge/xpaw/sort-lobby-enforce
Enforce lobby to be the 0th channel when sorting
2018-09-01 01:13:04 -04:00
Jérémie Astori 8c06bd3a75
Merge pull request #2735 from thelounge/xpaw/fix-emoji-gen
Update emoji data for Emoji v11
2018-08-31 23:59:12 -04:00
Jérémie Astori 5ddb988996
Merge pull request #2736 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.5.0
2018-08-31 23:56:26 -04:00
Renovate Bot 8bb2185961
chore(deps): update dependency eslint to v5.5.0 2018-09-01 03:09:11 +00:00
Pavel Djundik 81913bca66 Update emoji data for Emoji v11 2018-08-31 22:41:41 +03:00
Pavel Djundik db6ff5debf
Merge pull request #2734 from thelounge/renovate/emoji-regex-7.x
chore(deps): update dependency emoji-regex to v7.0.1
2018-08-31 22:27:21 +03:00
Renovate Bot 4d45c5d686
chore(deps): update dependency emoji-regex to v7.0.1 2018-08-31 19:26:11 +00:00
Pavel Djundik 0519c8a857 Enforce lobby to be the first 0th channel when sorting 2018-08-30 20:16:26 +03:00
Adam e14d911195 Add try/catch to all localStorage methods
Return null when attempting to get an item from localStorage

REF: #2699
2018-08-30 17:49:15 +01:00
Jérémie Astori b3fcea866c
Merge pull request #2731 from thelounge/renovate/webpack-dev-server-3.x
chore(deps): update dependency webpack-dev-server to v3.1.7
2018-08-29 20:10:11 -04:00
Renovate Bot 6bb0f40fe5
chore(deps): update dependency webpack-dev-server to v3.1.7 2018-08-29 23:35:49 +00:00
Jérémie Astori 40ec21a117
Merge pull request #2732 from thelounge/xpaw/no-spdy
Drop spdy module in favor of native https module
2018-08-29 19:35:24 -04:00
Pavel Djundik 7830bfb096 Drop spdy module in favor of native https module 2018-08-29 15:35:06 +03:00
Pavel Djundik 932be73b42
Merge pull request #2730 from thelounge/xpaw/auth-object
Make sure data is an object
2018-08-29 14:02:57 +03:00
Pavel Djundik 295fe2bd09 Make sure data is an object 2018-08-29 13:55:30 +03:00
Pavel Djundik e619579b1b
Merge pull request #2727 from thelounge/renovate/babel-loader-8.x
chore(deps): update dependency babel-loader to v8
2018-08-29 12:27:31 +03:00
Pavel Djundik 113e30d03d Upgrade babel to 7.0 2018-08-29 10:04:38 +03:00
Jérémie Astori 96507f5fe7
Merge pull request #2729 from thelounge/renovate/fortawesome-fontawesome-free-5.x
chore(deps): update dependency @fortawesome/fontawesome-free to v5.3.1
2018-08-29 02:45:42 -04:00
Renovate Bot dc27f5f241
chore(deps): update dependency @fortawesome/fontawesome-free to v5.3.1 2018-08-28 17:39:55 +00:00
Jérémie Astori 9e62119145
Merge pull request #2725 from thelounge/renovate/nyc-13.x
chore(deps): update dependency nyc to v13
2018-08-28 02:33:58 -04:00
Renovate Bot 94acacd21d
chore(deps): update dependency nyc to v13 2018-08-28 05:07:26 +00:00
Jérémie Astori 219443ac1f
Merge pull request #2724 from thelounge/renovate/fortawesome-fontawesome-free-5.x
chore(deps): update dependency @fortawesome/fontawesome-free to v5.3.0
2018-08-28 01:06:48 -04:00
Renovate Bot e3ab1e064a
chore(deps): update dependency @fortawesome/fontawesome-free to v5.3.0 2018-08-27 17:22:07 +00:00
Jérémie Astori 7ae52d197a
Merge pull request #2723 from thelounge/renovate/mocha-loader-2.x
chore(deps): update dependency mocha-loader to v2
2018-08-27 02:51:34 -04:00
Renovate Bot cea5d5ef2c
chore(deps): update dependency mocha-loader to v2 2018-08-27 01:27:54 +00:00
Jérémie Astori 0569ee2269
Merge pull request #2721 from thelounge/xpaw/fix-query-away-spam
Fix displaying away message multiple times in query windows
2018-08-26 21:06:36 -04:00
Jérémie Astori 0490fc40e9
Merge pull request #2722 from thelounge/renovate/mime-types-2.x
fix(deps): update dependency mime-types to v2.1.20
2018-08-26 21:05:15 -04:00
Renovate Bot c803154dbb
fix(deps): update dependency mime-types to v2.1.20 2018-08-26 22:08:53 +00:00
Al McKinlay 0a35000cb8
Merge pull request #2718 from thelounge/xpaw/remember-disconnect
Remember disconnected networks between server restarts
2018-08-26 21:50:02 +01:00
Pavel Djundik f8bb8f9d6f Fix displaying away message multiple times in query windows 2018-08-26 23:14:09 +03:00
Pavel Djundik e950090383
Merge pull request #2720 from thelounge/renovate/webpack-dev-server-3.x
chore(deps): update dependency webpack-dev-server to v3.1.6
2018-08-26 10:37:22 +03:00
Renovate Bot a4b59fceef
chore(deps): update dependency webpack-dev-server to v3.1.6 2018-08-26 06:47:30 +00:00
Jérémie Astori 4d5fa57e22
Merge pull request #2716 from thelounge/astorije/travis-publish-token
Use a new npmjs token to publish through Travis
2018-08-25 14:48:31 -04:00
Pavel Djundik 9bcec3bea5 Remember disconnected networks between server restarts 2018-08-25 12:11:59 +03:00
Jérémie Astori d83594daa4
Use a new npmjs token to publish through Travis
npmjs has invalidated all tokens recently, so I had to create a new one.

For the record (because it will happen again one day or another, and for the life of me I can never remember how to do it), the command I ran to encrypt this was:

```
travis encrypt ****************82f5 --add deploy.api_key -r thelounge/thelounge
```

Those last 4 characters should appear in Travis logs the next time we release, to confirm the encrypted value is correct.
2018-08-25 03:05:11 -04:00
Jérémie Astori 5f190fc165
3.0.0-pre.8 2018-08-25 02:14:03 -04:00
Jérémie Astori f3d45d6eb7
Add changelog entry for v3.0.0-pre.8 2018-08-25 02:13:50 -04:00
Pavel Djundik d67a4244b2
Merge pull request #2715 from christer88/christer88-network-remove-confirmation-text
Fix confirmation box text for network removal in client
2018-08-24 19:54:39 +03:00
christer88 d3725937ef
Fix confirmation box text for network removal in client
This PR will make the text inside confirmation box for network removal in client more correct. Earlier it said "Disconnect from", but in reality it disconnects and remove the network entierly.

The js code may be utterly wrong. If so, please help.
2018-08-24 12:32:25 +02:00
Jérémie Astori 82a570bf20
Merge pull request #2713 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.17.1
2018-08-22 21:45:10 -04:00
Renovate Bot 31059131a9
chore(deps): update dependency webpack to v4.17.1 2018-08-22 09:58:48 +00:00
Pavel Djundik 2cda9ced8c
Merge pull request #2710 from thelounge/renovate/mini-css-extract-plugin-0.x
chore(deps): update dependency mini-css-extract-plugin to v0.4.2
2018-08-21 16:49:19 +03:00
Renovate Bot 61ce0e2f0b
chore(deps): update dependency mini-css-extract-plugin to v0.4.2 2018-08-21 13:34:54 +00:00
Pavel Djundik dbd6bee487
Merge pull request #2705 from MaxLeiter/hide-native
Hide `Native App` settings section when no items are available
2018-08-21 12:15:35 +03:00
Pavel Djundik 5ce3b27cdd
Merge pull request #2709 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.17.0
2018-08-21 12:15:27 +03:00
Renovate Bot 017a338802
chore(deps): update dependency webpack to v4.17.0 2018-08-21 08:49:45 +00:00
Pavel Djundik fad30dd80f
Merge pull request #2708 from thelounge/renovate/html-minifier-3.x
chore(deps): update dependency html-minifier to v3.5.20
2018-08-20 19:14:36 +03:00
Max Leiter 50661b5947 Hide Native App settings section when no items are available 2018-08-19 12:24:19 -07:00
Renovate Bot 0e785cf51d
chore(deps): update dependency html-minifier to v3.5.20 2018-08-19 09:26:08 +00:00
Pavel Djundik a2f78d0aeb
Merge pull request #2707 from thelounge/renovate/stylelint-9.x
chore(deps): update dependency stylelint to v9.5.0
2018-08-19 12:25:44 +03:00
Renovate Bot 05729b3803
chore(deps): update dependency stylelint to v9.5.0 2018-08-19 08:48:16 +00:00
Jérémie Astori 8d5d6f0285
Merge pull request #2703 from thelounge/renovate/semver-5.x
fix(deps): update dependency semver to v5.5.1
2018-08-18 01:41:44 -04:00
Renovate Bot f53448c844
fix(deps): update dependency semver to v5.5.1 2018-08-18 05:32:00 +00:00
Jérémie Astori 786c3d1e0b
Merge pull request #2704 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.4.0
2018-08-18 01:31:41 -04:00
Renovate Bot e129401747
chore(deps): update dependency eslint to v5.4.0 2018-08-18 01:15:12 +00:00
Pavel Djundik b1dcbd3811
Merge pull request #2601 from thelounge/xpaw/fix-2572
Make menu state consistent on desktop and mobile; fix sliding on desktop
2018-08-17 09:25:43 +03:00
Pavel Djundik c9ba896d9e
Merge pull request #2702 from thelounge/astorije/connect-override
Fix bugs with URL overrides in Connect window
2018-08-15 11:40:11 +03:00
Jérémie Astori 70a3aefd2f
Merge pull request #2683 from ivan/tabular-nums
Keep timestamps aligned when using a font with variable-width numbers
2018-08-14 00:08:47 -04:00
Jérémie Astori 13e6f37eda
Make sure the network name cannot be changed through URL override when the network info is not displayed 2018-08-11 18:12:49 -04:00
Jérémie Astori 039d1220cb
Pass network name along to the client connect window when network is locked and not displayed 2018-08-11 18:10:13 -04:00
Jérémie Astori 174c6c744c
Disallow URL override of network-related fields on the client when the network is locked 2018-08-11 18:06:23 -04:00
Jérémie Astori 8a71d1df70
Merge pull request #2698 from thelounge/renovate/request-2.x
fix(deps): update dependency request to v2.88.0
2018-08-11 01:44:04 -04:00
Jérémie Astori 40d2fdf5bc
Merge pull request #2695 from RockyTV/rockytv
Add X-Purpose header to link prefetcher
2018-08-11 01:42:41 -04:00
Renovate Bot 91fe10d25f
fix(deps): update dependency request to v2.88.0 2018-08-10 16:28:28 +00:00
Pavel Djundik 7b1401e89e
Merge pull request #2697 from thelounge/renovate/graphql-request-1.x
chore(deps): update dependency graphql-request to v1.8.2
2018-08-10 12:24:35 +03:00
Renovate Bot 8b5147393a
chore(deps): update dependency graphql-request to v1.8.2 2018-08-10 07:33:24 +00:00
Pavel Djundik 7ffaf48f67
Merge pull request #2696 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.1.5
2018-08-10 10:20:50 +03:00
Renovate Bot f98708f3cd
chore(deps): update dependency sinon to v6.1.5 2018-08-09 18:05:58 +00:00
Alexandre Oliveira 619b054b95 Add X-Purpose header to link prefetcher 2018-08-07 21:10:03 -03:00
Pavel Djundik 22743982da
Merge pull request #2694 from thelounge/renovate/commander-2.x
fix(deps): update dependency commander to v2.17.1
2018-08-07 16:37:07 +03:00
Pavel Djundik edc10cdf65
Merge pull request #2693 from thelounge/renovate/graphql-request-1.x
chore(deps): update dependency graphql-request to v1.8.1
2018-08-07 16:36:54 +03:00
Renovate Bot 51b574d9c7
fix(deps): update dependency commander to v2.17.1 2018-08-07 11:38:18 +00:00
Renovate Bot 9c267d95ae
chore(deps): update dependency graphql-request to v1.8.1 2018-08-07 11:38:08 +00:00
Jérémie Astori 92b5412d12
Merge pull request #2692 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.5
2018-08-07 01:00:40 -04:00
Renovate Bot 051eb83b02
chore(deps): update dependency webpack to v4.16.5 2018-08-06 07:30:40 +00:00
Pavel Djundik 9dc9f164cd
Merge pull request #2690 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.3.0
2018-08-04 10:02:56 +03:00
Renovate Bot 14172fca0a
chore(deps): update dependency eslint to v5.3.0 2018-08-04 07:01:52 +00:00
Pavel Djundik da01d7a313
Merge pull request #2688 from thelounge/renovate/yarn-1.x
fix(deps): update dependency yarn to v1.9.4
2018-08-04 10:01:18 +03:00
Renovate Bot 8e6de0d2e6
fix(deps): update dependency yarn to v1.9.4 2018-08-04 07:01:10 +00:00
Pavel Djundik 247bc507ea
Merge pull request #2689 from thelounge/renovate/commander-2.x
fix(deps): update dependency commander to v2.17.0
2018-08-04 10:00:32 +03:00
Renovate Bot bf50a23df8
fix(deps): update dependency commander to v2.17.0 2018-08-04 00:23:26 +00:00
Pavel Djundik 87d8905b65
Merge pull request #2686 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.4
2018-08-02 21:50:46 +03:00
Renovate Bot 0aa04ac042
chore(deps): update dependency webpack to v4.16.4 2018-08-02 15:12:08 +00:00
Jérémie Astori cc7da34b44
Merge pull request #2685 from thelounge/renovate/graphql-request-1.x
chore(deps): update dependency graphql-request to v1.8.0
2018-08-02 01:58:08 -04:00
Renovate Bot 3d28321068
chore(deps): update dependency graphql-request to v1.8.0 2018-08-01 08:56:00 +00:00
Jérémie Astori cf7088ea79
Merge pull request #2677 from thelounge/xpaw/keybinds-caps
Fix irc modifiers not working with caps lock
2018-08-01 00:47:06 -04:00
Ivan Kozik 2a74ace48f Keep timestamps aligned when using a font with variable-width numbers
This improves the layout of the timestamps when using the San Francisco font.
2018-07-29 15:22:54 +00:00
Pavel Djundik 927da2816a
Merge pull request #2681 from thelounge/renovate/primer-tooltips-1.x
fix(deps): update dependency primer-tooltips to v1.5.7
2018-07-28 11:00:07 +03:00
Renovate Bot 5889547161
fix(deps): update dependency primer-tooltips to v1.5.7 2018-07-27 21:48:28 +00:00
Pavel Djundik a131695388
Merge pull request #2679 from thelounge/renovate/yarn-1.x
fix(deps): update dependency yarn to v1.9.2
2018-07-27 18:51:50 +03:00
Renovate Bot 59ff700a69
fix(deps): update dependency yarn to v1.9.2 2018-07-27 15:04:19 +00:00
Pavel Djundik c2abc75e47
Merge pull request #2676 from thelounge/renovate/stylelint-9.x
chore(deps): update dependency stylelint to v9.4.0
2018-07-27 13:44:48 +03:00
Pavel Djundik 35562a9f4a
Merge pull request #2678 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.3
2018-07-27 13:44:30 +03:00
Renovate Bot c66fdcc527
chore(deps): update dependency webpack to v4.16.3 2018-07-27 10:28:15 +00:00
Pavel Djundik 7a5708714b
Fix irc modifiers not working with caps lock 2018-07-27 11:12:03 +03:00
Renovate Bot ddca4255b7
chore(deps): update dependency stylelint to v9.4.0 2018-07-25 20:14:56 +00:00
Jérémie Astori 7b926f7c32
Merge pull request #2515 from thelounge/xpaw/transparent-sw-cache
Network-first service worker caches
2018-07-25 00:57:20 -04:00
Jérémie Astori cc4ab38356
Merge pull request #2643 from thelounge/astorije/sticky-userlist
Make userlist section titles sticky on scroll, improve contrasts for accessibility, use CSS variables
2018-07-25 00:54:45 -04:00
Pavel Djundik db8aeaa827
Merge pull request #2674 from thelounge/renovate/graphql-request-1.x
chore(deps): update dependency graphql-request to v1.7.0
2018-07-24 18:21:56 +03:00
Renovate Bot 486be09274
chore(deps): update dependency graphql-request to v1.7.0 2018-07-24 14:39:10 +00:00
Jérémie Astori 2b89500010
Merge pull request #2673 from thelounge/renovate/fortawesome-fontawesome-free-5.x
chore(deps): update dependency @fortawesome/fontawesome-free to v5.2.0
2018-07-24 01:25:37 -04:00
Jérémie Astori 8c09be9db3
Reuse muted color var for unhandled messages, and remove channel list color overrides 2018-07-24 01:16:39 -04:00
Jérémie Astori 77d70d6d91
Center scroll lists when navigating with keyboard
- This applies to channel list and user list sidebars
- This avoids having a selected item behind a sticky header
- This provides better UX by starting the scroll before the bottom (or top) is reached, giving a preview of what comes next (or before)
2018-07-24 00:50:19 -04:00
Renovate Bot 2f2830c6ce
chore(deps): update dependency @fortawesome/fontawesome-free to v5.2.0 2018-07-23 16:48:51 +00:00
Pavel Djundik d8dcd0bd47
Merge pull request #2672 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.2
2018-07-23 13:38:51 +03:00
Renovate Bot 1acc93d566
chore(deps): update dependency webpack to v4.16.2 2018-07-23 09:57:38 +00:00
Pavel Djundik 6fa9ce3504
Merge pull request #2671 from thelounge/renovate/webpack-dev-server-3.x
chore(deps): update dependency webpack-dev-server to v3.1.5
2018-07-22 18:53:31 +03:00
Renovate Bot 41253a82be
chore(deps): update dependency webpack-dev-server to v3.1.5 2018-07-22 15:25:43 +00:00
Pavel Djundik e8c02d5ad2
Merge pull request #2669 from MaxLeiter/humandate-refactor
refactor getHumanDate() to accept a timestamp; avoids possible test failure; more accurate log times
2018-07-22 11:39:11 +03:00
Max Leiter 9bee3eca5a refactor getHumanDate() to accept a timestamp; fixes test 2018-07-22 00:27:49 -07:00
Jérémie Astori 78eae2be88
Merge pull request #2670 from thelounge/xpaw/text-log-extension
Don't put .log in text log folder name
2018-07-22 02:07:32 -04:00
Pavel Djundik 265876786c Don't put .log in text log folder name 2018-07-22 00:39:22 +03:00
Pavel Djundik 5b2de64af8
Merge pull request #2668 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.1.4
2018-07-21 11:00:47 +03:00
Pavel Djundik 33a3aa8882
Merge pull request #2667 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.2.0
2018-07-21 11:00:39 +03:00
Renovate Bot f6665da2ed
chore(deps): update dependency sinon to v6.1.4 2018-07-21 07:28:24 +00:00
Renovate Bot e90a0da31d
chore(deps): update dependency eslint to v5.2.0 2018-07-21 06:35:57 +00:00
Pavel Djundik b8db7a2f82
Fix closing tag being removed in user list
Fixes #2635
2018-07-21 02:25:18 -04:00
Jérémie Astori fbe8a4151c
Reuse CSS variable on muted texts (timestamp, self messages, etc.) and improve constrast accessibility
#767676 is the lightest gray that passes AA level of WCAG contrast recommendations
2018-07-21 02:25:18 -04:00
Jérémie Astori f69571847a
Make userlist section titles sticky on scroll 2018-07-21 02:25:17 -04:00
Jérémie Astori 09d6dfc604
Merge pull request #2645 from thelounge/astorije/better-docs
Improve inline documentation of config defaults and use it to generate website counterpart
2018-07-21 02:12:37 -04:00
Al McKinlay cff6d2fd9c
Merge pull request #2664 from christer88/Recommend-yarn
Recommend using Yarn instead of NPM in changelog and readme
2018-07-20 08:18:29 +01:00
christer88 8e48c6d768
Remove [sudo] for Yarn install/upgrade command in README.md
Fixes https://github.com/thelounge/thelounge/pull/2664#discussion_r203621102
2018-07-19 09:36:23 +02:00
christer88 8b1e7c0f72
Remove [sudo] as requested 2018-07-19 09:15:40 +02:00
christer88 8d5de36987
Recommend using Yarn instead of NPM in changelog
TheLounge has started using Yarn, but does also support NPM. Yarn seems to in some cases solve issues people experience when using NPM, e.g. Sqlite3 installation.

I think it's good and about time to recommend using Yarn instead of NPM.
2018-07-19 01:10:49 +02:00
Pavel Djundik dc8aa04887
Merge pull request #2662 from thelounge/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.1.0
2018-07-18 19:24:41 +03:00
Renovate Bot c999e6a8bf
chore(deps): update dependency webpack-cli to v3.1.0 2018-07-18 14:59:19 +00:00
Jérémie Astori 80d6cc78c3
Merge pull request #2659 from thelounge/renovate/mime-types-2.x
fix(deps): update dependency mime-types to v2.1.19
2018-07-18 02:51:41 -04:00
Renovate Bot ecb817b866
fix(deps): update dependency mime-types to v2.1.19 2018-07-18 06:14:26 +00:00
Jérémie Astori 69e3728f5e
Merge pull request #2658 from thelounge/renovate/fortawesome-fontawesome-free-5.x
chore(deps): update dependency @fortawesome/fontawesome-free to v5.1.1
2018-07-18 02:13:55 -04:00
Jérémie Astori 7c1619554d
Re-order and improve inline comments of config.js
This is now used to generate https://thelounge.github.io/docs/server/configuration.html. These should now always match.
There is no breaking changes involved by this commit.
2018-07-18 01:42:04 -04:00
Renovate Bot 61bd7f1f20
chore(deps): update dependency @fortawesome/fontawesome-free to v5.1.1 2018-07-17 17:42:51 +00:00
Pavel Djundik 482bdf51f6
Merge pull request #2657 from MiniDigger/patch-1
use replace over trimEnd to support ff60
2018-07-17 16:37:10 +03:00
MiniDigger 8fa4a2833f
use replace over trimEnd to support ff60 2018-07-17 15:25:30 +02:00
Pavel Djundik 390d7c22ca
Merge pull request #2655 from realies/master
Change alert sound from ogg to wav
2018-07-17 11:07:48 +03:00
Pavel Djundik 91dcb7564b
Merge pull request #2653 from thelounge/xpaw/motd
Use monospace font for MOTD, set an icon, fix new line trimming
2018-07-17 11:07:38 +03:00
Pavel Djundik ee4c8d78d3 Use monospace font on MOTDs and set an icon 2018-07-17 10:13:50 +03:00
Pavel Djundik 5209b12d44 Fix MOTD display to actually only trim new lines 2018-07-17 10:13:50 +03:00
realies 8f5182b379 Change alert sound from ogg to wav 2018-07-17 09:14:58 +03:00
Jérémie Astori fd5652ed60
Add a script to generate documentation for config.js based on comments 2018-07-17 01:39:45 -04:00
Jérémie Astori 056a38caeb
Merge pull request #2654 from thelounge/renovate/fs-extra-7.x
fix(deps): update dependency fs-extra to v7
2018-07-17 00:30:57 -04:00
Renovate Bot 3f222c38ee
fix(deps): update dependency fs-extra to v7 2018-07-17 01:40:41 +00:00
Pavel Djundik cf356e3312
Merge pull request #2652 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.1
2018-07-16 11:53:28 +03:00
Renovate Bot 1ea7e490b9
chore(deps): update dependency webpack to v4.16.1 2018-07-16 08:42:48 +00:00
Pavel Djundik 01f52752ca
Merge pull request #2651 from thelounge/renovate/sqlite3-4.x
chore(deps): update dependency sqlite3 to v4.0.2
2018-07-16 09:51:21 +03:00
Renovate Bot 58de64232c
chore(deps): update dependency sqlite3 to v4.0.2 2018-07-16 01:06:06 +00:00
Pavel Djundik 8fdf41a827
Merge pull request #2648 from thelounge/renovate/irc-framework-3.x
fix(deps): update dependency irc-framework to v3.1.0
2018-07-15 20:37:08 +03:00
Renovate Bot 08e3f54a89
fix(deps): update dependency irc-framework to v3.1.0 2018-07-15 16:22:56 +00:00
Pavel Djundik 4b84adb834
Merge pull request #2633 from thelounge/astorije/nicer-motd
Make the MOTDs a little nicer if possible
2018-07-15 13:40:58 +03:00
Jérémie Astori 4038240127
Merge pull request #2646 from thelounge/renovate/html-minifier-3.x
chore(deps): update dependency html-minifier to v3.5.19
2018-07-13 19:11:17 -04:00
Renovate Bot 41f82f4510
chore(deps): update dependency html-minifier to v3.5.19 2018-07-13 09:03:05 +00:00
Jérémie Astori 9f79ae2f19
Merge pull request #2641 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.16.0
2018-07-12 01:21:34 -04:00
Renovate Bot 35ffe9d5b9
chore(deps): update dependency webpack to v4.16.0 2018-07-11 08:53:46 +00:00
Pavel Djundik bb26da2c3a
Merge pull request #2640 from thelounge/xpaw/ignorelist-fix
Fix ignore list resetting on server restart
2018-07-11 11:12:34 +03:00
Pavel Djundik e8b3836050 Fix ignore list resetting on server restart 2018-07-11 10:57:02 +03:00
Pavel Djundik 3bf24047dd
Merge pull request #2637 from thelounge/xpaw/chan-list-log
Do not write /list messages to logs
2018-07-10 16:59:24 +03:00
Pavel Djundik 74e5d2c930
Merge pull request #2639 from thelounge/xpaw/remove-extra-tag
Remove extra closing tag
2018-07-10 16:59:14 +03:00
Pavel Djundik 71dad07480
Remove extra closing tag 2018-07-10 15:05:17 +03:00
Pavel Djundik 9bb8d4f385 Do not write /list messages to logs 2018-07-10 12:44:23 +03:00
Pavel Djundik 3a11cd2dda
Merge pull request #2584 from thelounge/renovate/sqlite3-4.x
chore(deps): update dependency sqlite3 to v4.0.1
2018-07-10 11:54:23 +03:00
Jérémie Astori 3eca924a7c
Make the MOTDs a little nicer if possible
This removes the leading hyphens from MOTD lines (under the condition they all do) and trims empty lines around the MOTD (but not inside).
2018-07-10 00:38:11 -04:00
Renovate Bot b39a4a67e2
chore(deps): update dependency sqlite3 to v4.0.1 2018-07-09 04:18:08 +00:00
Jérémie Astori 6187b3bd0b
Merge pull request #2632 from thelounge/renovate/eslint-5.x
chore(deps): update dependency eslint to v5.1.0
2018-07-09 00:17:45 -04:00
Renovate Bot da35ca3559
chore(deps): update dependency eslint to v5.1.0 2018-07-08 21:18:30 +00:00
Jérémie Astori 7f94a47a50
Merge pull request #2622 from thelounge/astorije/fix-highlight-mobile
Fix incorrect left padding for highlights on mobile
2018-07-08 15:03:10 -04:00
Pavel Djundik d41ca1a1f9
Merge pull request #2630 from thelounge/xpaw/autocompl-bugs
Fix disabling autocomplete and fix completing special channels
2018-07-08 21:58:33 +03:00
Jérémie Astori f58e171a69
Fix incorrect left padding for highlights on mobile 2018-07-08 14:46:55 -04:00
Pavel Djundik ff98f31be2
Fix disabling autocomplete and fix completing special channels 2018-07-08 18:21:15 +03:00
Jérémie Astori f249747642
Merge pull request #2604 from Zarthus/issue_templates
Introduce issue templates
2018-07-07 12:19:19 -04:00
Jérémie Astori c8313af571
Merge pull request #2628 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.1.3
2018-07-07 12:17:58 -04:00
Renovate Bot 40ac64f2e4
chore(deps): update dependency sinon to v6.1.3 2018-07-07 08:59:16 +00:00
Pavel Djundik 95e6fb3a49
Merge pull request #2609 from RockyTV/rockytv
Stop handling CTCP messages if the sender/target is ignored
2018-07-07 11:09:35 +03:00
Jérémie Astori 45b87ea905
Merge pull request #2624 from thelounge/xpaw/test-fix
Increase delay between links to remove random test failure
2018-07-07 02:08:24 -04:00
Jérémie Astori b6b0e70046
Merge pull request #2626 from thelounge/xpaw/context-menu-target
Fix incorrect target in (dis)connect context menu
2018-07-07 02:05:51 -04:00
Pavel Djundik 9447b4894d Fix incorrect target in (dis)connect context menu 2018-07-06 21:21:57 +03:00
Jos Ahrens f5b70092b2
Modify Feature_Request.md template
- Stop asking for version
- Add comment suggesting to look into existing issues
- Add <h2> block for "Feature Description"
2018-07-06 17:14:29 +00:00
Pavel Djundik 28df906957 Implement caching for static resources 2018-07-06 15:38:57 +03:00
Pavel Djundik 0f6fd4dac5 Listen for beforeinstallprompt to trigger 'add to home' 2018-07-06 15:38:57 +03:00
Pavel Djundik 1f604a8556 Network-first cache in service worker 2018-07-06 12:35:02 +03:00
Pavel Djundik 11bd2dfa4c Increase delay between links to remove random test failure 2018-07-06 12:29:21 +03:00
Pavel Djundik cdebd532ce Make menu state consistent on desktop and mobile; fix sliding on desktop
Fixes #2572
2018-07-06 12:27:26 +03:00
Pavel Djundik d5f0a2481f
Merge pull request #2623 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.1.2
2018-07-06 12:26:01 +03:00
Renovate Bot 94c7a09f55
chore(deps): update dependency sinon to v6.1.2 2018-07-06 07:46:34 +00:00
Jérémie Astori 21c4dea8a9
Merge pull request #2599 from thelounge/xpaw/userlist
Make userlist state consistent on mobile and desktop
2018-07-06 01:29:23 -04:00
Jérémie Astori 93fcd57b2d
Merge pull request #2571 from thelounge/xpaw/protocol-handler
Implement irc:// protocol handler
2018-07-05 22:08:07 -04:00
Jérémie Astori 2bd82fec6e
Merge pull request #2595 from joandrsn/master
Clarify /topic command without newtopic
2018-07-05 22:05:11 -04:00
Jérémie Astori 8c7d7163c9
Merge pull request #2620 from thelounge/renovate/babel-loader-7.x
chore(deps): update dependency babel-loader to v7.1.5
2018-07-05 21:32:43 -04:00
Jérémie Astori 7bb8089095
Merge pull request #2621 from richrd/master
Fix link to contributing instructions in readme
2018-07-05 21:29:49 -04:00
Richard Lewis 904664743f
Fix link to contributing instructions 2018-07-05 23:57:13 +03:00
Renovate Bot 69c1b0a55a
chore(deps): update dependency babel-loader to v7.1.5 2018-07-05 16:38:02 +00:00
Pavel Djundik 8873ac3524
Merge pull request #2619 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.15.1
2018-07-05 17:08:42 +03:00
Renovate Bot 5cd805fc44
chore(deps): update dependency webpack to v4.15.1 2018-07-05 13:46:15 +00:00
Pavel Djundik 19ac4f72aa Implement irc:// protocol handler 2018-07-05 13:01:10 +03:00
Pavel Djundik 0a8f83c2fe
Merge pull request #2617 from christer88/patch-1
Disable username autocapitalize on input field when signing on
2018-07-05 12:51:24 +03:00
Pavel Djundik 752eca4eef
Merge pull request #2615 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.15.0
2018-07-05 11:38:51 +03:00
christer88 251ed60f1c
Disable username autocapitalize on input field when signing on
Fixes https://github.com/thelounge/thelounge/issues/2616
2018-07-05 08:00:07 +02:00
Renovate Bot c5b4f4e9c4
chore(deps): update dependency webpack to v4.15.0 2018-07-04 19:49:48 +00:00
Pavel Djundik 184f6bae09
Merge pull request #2570 from thelounge/xpaw/uid
Warn if config owner doesn't match process uid
2018-07-04 11:53:58 +03:00
Pavel Djundik d63f0ccc50 Make userlist state consistent on mobile and desktop 2018-07-04 10:26:07 +03:00
Pavel Djundik b5390f1ef3
Merge pull request #2610 from thelounge/renovate/primer-tooltips-1.x
fix(deps): update dependency primer-tooltips to v1.5.6
2018-07-03 23:13:40 +03:00
Pavel Djundik c919eba4cd
Merge pull request #2612 from thelounge/renovate/sinon-6.x
chore(deps): update dependency sinon to v6.1.0
2018-07-03 23:13:31 +03:00
Renovate Bot 238e68fab9
fix(deps): update dependency primer-tooltips to v1.5.6 2018-07-03 19:24:35 +00:00
Renovate Bot e0fcf97777
chore(deps): update dependency sinon to v6.1.0 2018-07-03 19:24:14 +00:00
Pavel Djundik 4eb599e786
Merge pull request #2613 from SinZ163/patch-1
Add reminder that ascii is awesome
2018-07-03 21:58:25 +03:00
Pavel Djundik 45a68d21e8
Merge pull request #2611 from thelounge/renovate/html-minifier-3.x
chore(deps): update dependency html-minifier to v3.5.18
2018-07-03 21:56:35 +03:00
Trent Monahan 3a89935c29 Add reminder that ascii is awesome. 2018-07-03 19:51:10 +10:00
Renovate Bot a9044fadae
chore(deps): update dependency html-minifier to v3.5.18 2018-07-03 07:21:59 +00:00
Pavel Djundik dc6ca963f5
Merge pull request #2598 from thelounge/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.14.0
2018-07-02 17:04:54 +03:00
Alexandre Oliveira 671dad4ed6 Stop handling CTCP messages if the sender/target is ignored 2018-07-01 15:48:37 -03:00
Renovate Bot f9e522cc0e
chore(deps): update dependency webpack to v4.14.0 2018-06-30 03:27:06 +00:00
Jérémie Astori 4109480b27
Merge pull request #2608 from Zarthus/broken_link_fix
Fix broken link in CONTRIBUTING.md
2018-06-29 22:47:34 -04:00
Jérémie Astori 9b697b414a
Merge pull request #2606 from thelounge/renovate/commander-2.x
Update dependency commander to v2.16.0
2018-06-29 22:43:03 -04:00
Renovate Bot ada6439ae4
Update dependency commander to v2.16.0 2018-06-30 01:30:56 +00:00
Jérémie Astori fc582d5351
Merge pull request #2607 from thelounge/renovate/mini-css-extract-plugin-0.x
Update dependency mini-css-extract-plugin to v0.4.1
2018-06-29 21:30:31 -04:00
Jos Ahrens 14e982e2d8
contributing: fix broken link 2018-06-29 16:32:52 +00:00
Jos Ahrens e5fc54a3c0
introduce issue templates 2018-06-29 16:06:46 +00:00
Renovate Bot 0d82f8159c
Update dependency mini-css-extract-plugin to v0.4.1 2018-06-29 13:50:02 +00:00
Jérémie Astori 9126bac89b
Merge pull request #2603 from Zarthus/dotgithub_folder
add `.github` folder
2018-06-29 01:33:07 -04:00
Jérémie Astori 8cda22056f
Merge pull request #2605 from thelounge/renovate/uuid-3.x
Update dependency uuid to v3.3.2
2018-06-29 01:28:53 -04:00
Renovate Bot 84c106858a
Update dependency uuid to v3.3.2 2018-06-28 22:19:10 +00:00
Jos Ahrens a24d932102
add .github folder
Moves all github-related markdown files to a .github folder

closes #2600
2018-06-28 16:27:57 +00:00
Jonas Andersen 90e55bd759 Removed 'the command' 2018-06-27 08:47:47 +02:00
Jérémie Astori 51f5cda4ff
Merge pull request #2593 from MaxLeiter/fix-x-button-text
Switch close button text on channels to Leave and kept as Close for other types.
2018-06-27 00:37:59 -04:00
Max Leiter f1b88e5216 switch close button text on channels to Leave and kept as Close for other types. 2018-06-26 21:11:04 -07:00
Jérémie Astori 82c9c3c26a
Merge pull request #2594 from thelounge/renovate/copy-webpack-plugin-4.x
Update dependency copy-webpack-plugin to v4.5.2
2018-06-26 19:04:56 -04:00
Renovate Bot 06819dc4b9
Update dependency copy-webpack-plugin to v4.5.2 2018-06-26 22:50:32 +00:00
Jérémie Astori db22669050
Merge pull request #2596 from thelounge/renovate/uuid-3.x
Update dependency uuid to v3.3.0
2018-06-26 18:50:10 -04:00
Renovate Bot 87a995fe0b
Update dependency uuid to v3.3.0 2018-06-26 13:26:22 +00:00
Jonas Andersen 1ebbacdb2a Clarify /topic command without newtopic 2018-06-26 11:52:20 +02:00
Pavel Djundik d1a995471e
Merge pull request #2592 from MaxLeiter/eslint-arrow-rule-fix
Update `no-confusing-error` eslint rule to allow parenthesis
2018-06-26 10:51:26 +03:00
Max Leiter 46abaeb279 Update no-confusing-error eslint rule to allow parenthesis 2018-06-26 00:35:02 -07:00
Pavel Djundik 6089372ac7
Merge pull request #2587 from aspotton/userinfo_in_sidebar_context_menu
Add 'User information' (whois) support to the sidebar context menu
2018-06-26 09:51:57 +03:00
Jérémie Astori 397b5e8f47
Merge pull request #2590 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5.0.1
2018-06-26 00:43:13 -04:00
Renovate Bot b80a1f11f0
Update dependency eslint to v5.0.1 2018-06-26 04:01:46 +00:00
Jérémie Astori 061fa615ce
Merge pull request #2589 from thelounge/renovate/html-minifier-3.x
Update dependency html-minifier to v3.5.17
2018-06-25 23:09:57 -04:00
Renovate Bot 6639452c87
Update dependency html-minifier to v3.5.17 2018-06-25 21:24:28 +00:00
Jérémie Astori 935db3cdd1
Merge pull request #2588 from thelounge/renovate/sinon-6.x
Update dependency sinon to v6.0.1
2018-06-24 14:54:31 -04:00
Renovate Bot f35e718b2e
Update dependency sinon to v6.0.1 2018-06-24 18:22:03 +00:00
Jérémie Astori 742ba4cfdb
Merge pull request #2586 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.12.1
2018-06-24 13:12:08 -04:00
Adam Spotton 54e502c020 Add 'User information' (whois) support to the sidebar context menu 2018-06-24 11:52:55 -04:00
Renovate Bot 8a1c2a1596
Update dependency webpack to v4.12.1 2018-06-24 08:47:55 +00:00
Pavel Djundik 5e438b7fab
Merge pull request #2585 from thelounge/astorije/highlight-show-seconds
Fix highlights when seconds are shown in timestamps
2018-06-24 00:16:38 +03:00
Jérémie Astori 7e8610bbac
Fix highlights when seconds are shown in timestamps 2018-06-23 14:58:17 -04:00
Jérémie Astori 1d6c6dd52b
Merge pull request #2526 from thelounge/astorije/higlight-border-and-bg
Replace current red-text highlight with a full background-color highlight
2018-06-23 14:20:44 -04:00
Jérémie Astori dfa19bac18
Merge pull request #2582 from thelounge/renovate/eslint-5.x
Update dependency eslint to v5
2018-06-23 11:46:22 -04:00
Renovate Bot 1de4404bb2
Update dependency eslint to v5 2018-06-23 03:01:35 +00:00
Jérémie Astori 4b19f79cb8
Merge pull request #2548 from thelounge/xpaw/input-height
Fix text not having enough space in <select> with some fonts
2018-06-21 21:10:40 -04:00
Jérémie Astori 10642b8f5a
Merge pull request #2576 from thelounge/xpaw/query-away-notify
Also send away notices to query windows
2018-06-21 21:01:58 -04:00
Jérémie Astori f2acae4ce1
Merge pull request #2580 from thelounge/xpaw/title-fixes
Reset highlights on self messages; update title when other client opens a channel
2018-06-21 21:00:44 -04:00
Jérémie Astori c2ce56292c
Use a combination background + left border for highlight messages 2018-06-21 13:30:29 -04:00
Pavel Djundik d00cf72614 Reset highlights on self messages; update title when other client opens a channel 2018-06-21 16:51:07 +03:00
Pavel Djundik 3e029c4e8a
Merge pull request #2579 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.3.2
2018-06-21 11:20:52 +03:00
Pavel Djundik 2379c523be
Merge pull request #2577 from thelounge/renovate/fortawesome-fontawesome-free-5.x
Update dependency @fortawesome/fontawesome-free to v5.1.0
2018-06-21 11:20:41 +03:00
Renovate Bot bbba3df6d3
Update dependency web-push to v3.3.2 2018-06-20 21:53:44 +00:00
Renovate Bot a7474dd5f0
Update dependency @fortawesome/fontawesome-free to v5.1.0 2018-06-20 20:03:33 +00:00
Pavel Djundik b986025e1a
Merge pull request #2554 from Jay2k1/whowas-support
WHOWAS support
2018-06-20 21:11:41 +03:00
Pavel Djundik 5091939aa4 Add support for WHOWAS
Fixes #2050

Co-Authored-By: jay2k1 <jay2k1@users.noreply.github.com>
2018-06-20 21:03:00 +03:00
Pavel Djundik 62e2cbe66b Also send away notices to query windows 2018-06-20 19:45:27 +03:00
Pavel Djundik c95b09cbac
Merge pull request #2523 from Jay2k1/show-self-away
Display visual feedback on self away/back
2018-06-20 19:37:59 +03:00
Pavel Djundik b8d60ddaa6 Correctly handle away and back events
Also support for self messages

Co-Authored-By: jay2k1 <jay2k1@users.noreply.github.com>
2018-06-20 19:32:19 +03:00
Pavel Djundik bdccfd82f1
Merge pull request #2575 from thelounge/renovate/irc-framework-3.x
Update dependency irc-framework to v3
2018-06-20 19:05:03 +03:00
Pavel Djundik a9413dc277 Update for changes in irc-framework 2018-06-20 18:30:32 +03:00
Renovate Bot 5827b151ee
Update dependency irc-framework to v3 2018-06-20 15:27:15 +00:00
Pavel Djundik d9abe9224e Warn if config owner doesn't match process uid 2018-06-19 17:18:06 +03:00
Pavel Djundik b744ff6b1e
Merge pull request #2569 from thelounge/xpaw/fix-2568
Fix circular dependency in Helper+log
2018-06-19 16:17:58 +03:00
Pavel Djundik a124e7bdb8 Change input sizes to be consistent 2018-06-19 13:32:15 +03:00
Pavel Djundik 08682d2448 Fix circular dependency in Helper+log
Fixes #2568
2018-06-19 10:09:38 +03:00
Jérémie Astori 36aef26ce9
3.0.0-pre.7 2018-06-19 00:37:45 -04:00
Jérémie Astori 9d278a1fe2
Add changelog entry for v3.0.0-pre.7 2018-06-19 00:36:53 -04:00
Jérémie Astori e2602b28ad
Merge pull request #2315 from thelounge/astorije/ui
Revamp default theme a bit
2018-06-19 00:26:20 -04:00
Jérémie Astori 0be8de738a
Merge pull request #2377 from thelounge/xpaw/contextmenu-keyboard
Make context menus accessible with keyboard
2018-06-19 00:23:22 -04:00
Jérémie Astori 511e612e16
Merge pull request #2567 from thelounge/xpaw/fix-2566
Do not remove date marker when loading history if date changes
2018-06-17 13:57:21 -04:00
Jérémie Astori c46eca1873
Merge pull request #2565 from thelounge/xpaw/modern-babel
Target more modern browsers in babel
2018-06-17 13:56:13 -04:00
Pavel Djundik 9a808b58e9 Do not remove date marker when loading history if date changes
Fixes #2566
2018-06-17 11:46:31 +03:00
Pavel Djundik a637cb0632
Merge pull request #2559 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.0.8
2018-06-17 10:31:58 +03:00
Renovate Bot eefe0279a1
Update dependency webpack-cli to v3.0.8 2018-06-16 23:14:28 +00:00
Jérémie Astori 7485850606
Merge pull request #2564 from thelounge/xpaw/nyc_output
Move .nyc_output folder out of root
2018-06-16 18:46:37 -04:00
Pavel Djundik 74cbfe973a Target more modern browsers in babel 2018-06-16 19:56:16 +03:00
Pavel Djundik a07b372c71 Move .nyc_output folder out of root 2018-06-16 12:13:29 +03:00
Jérémie Astori 1d797af794
Merge pull request #2563 from thelounge/xpaw/no-global-log
Remove `log` from `global`
2018-06-15 18:27:13 -04:00
Pavel Djundik 472d618033 Remove log from global 2018-06-15 23:31:06 +03:00
Pavel Djundik 6bbe569dac
Merge pull request #2561 from thelounge/renovate/stylelint-9.x
Update dependency stylelint to v9.3.0
2018-06-15 17:06:43 +03:00
Renovate Bot 2cf5a0fd96
Update dependency stylelint to v9.3.0 2018-06-15 13:35:41 +00:00
Pavel Djundik 9d8d8eefa6
Merge pull request #2560 from Jay2k1/remove-comment
remove unnecessary comment
2018-06-15 14:45:33 +03:00
Jay2k1 254e39df18
remove unnecessary comment 2018-06-15 13:42:47 +02:00
Pavel Djundik 24531538fd Remove unnecessary code
This cause context menu to re-open when clicking on user in the context menu
2018-06-15 13:27:59 +03:00
Max Leiter 012ca805c1 Add role attributes in context menus 2018-06-15 13:27:59 +03:00
Pavel Djundik d178ac9749 Make context menus accessible with keyboard 2018-06-15 13:27:58 +03:00
Jérémie Astori f814d7369c
Introduce some CSS variables to simplify writing themes that stay close to the default style 2018-06-14 18:58:42 -04:00
Jérémie Astori 8137ece450
Make sidebar logo scroll with networks, wrap logos in div element 2018-06-14 18:49:56 -04:00
Jérémie Astori bff38efd50
Optimize SVG logos 2018-06-14 18:49:56 -04:00
Jérémie Astori a97aa59689
Display full logo+text on public mode, logo-only on private mode 2018-06-14 18:49:56 -04:00
Jérémie Astori ad3688e61d
Update Morning to be an exact dark version of default theme 2018-06-14 18:49:56 -04:00
Jérémie Astori 0e50cb4f06
Add normal version of logo for themes with light sidebars 2018-06-14 18:49:55 -04:00
Jérémie Astori 6201df072e
Revamp default theme a bit 2018-06-14 18:49:55 -04:00
Jérémie Astori a81cef397c
Merge pull request #2558 from thelounge/xpaw/chantitle-undefined
Fix undefined channel when updating title
2018-06-14 18:44:36 -04:00
Jérémie Astori dfee1a0fb0
Merge pull request #2501 from Jay2k1/textlog-formatting
Improve formatting of text logs
2018-06-14 18:43:00 -04:00
Pavel Djundik 8e211405b1
Merge pull request #2557 from thelounge/renovate/primer-tooltips-1.x
Update dependency primer-tooltips to v1.5.5
2018-06-14 22:03:07 +03:00
Pavel Djundik 4f018ba23b Fix undefined channel when updating title 2018-06-14 18:54:38 +03:00
Renovate Bot acfd493d9e
Update dependency primer-tooltips to v1.5.5 2018-06-14 15:53:41 +00:00
Pavel Djundik 1f96342590
Merge pull request #2555 from thelounge/renovate/filenamify-2.x
Update dependency filenamify to v2.1.0
2018-06-14 17:20:34 +03:00
Renovate Bot 62381a0731
Update dependency filenamify to v2.1.0 2018-06-14 13:35:19 +00:00
Jérémie Astori 65bd014a21
Merge pull request #2553 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.0.6
2018-06-13 23:35:40 -04:00
Jay2k1 e11f97a2bb Improve formatting of text logs 2018-06-13 22:45:18 +02:00
Renovate Bot cf18905775
Update dependency webpack-cli to v3.0.6 2018-06-13 19:13:16 +00:00
Pavel Djundik 25e26a5b28
Merge pull request #2496 from Jay2k1/alert-count-in-title
Add alert count to title
2018-06-13 21:25:40 +03:00
Jay2k1 a0a2e91928 add highlight count to page title 2018-06-13 19:06:32 +02:00
Pavel Djundik be2b81c478
Merge pull request #2540 from thelounge/astorije/favicon-normal
Make non-highlighted favicon look more different than highlighted one
2018-06-13 17:44:39 +03:00
Jérémie Astori 4d17cfb715
Merge pull request #2550 from thelounge/xpaw/notice-log
Log notices as correct sender when it will be shown in active window
2018-06-12 19:19:21 -04:00
Pavel Djundik 5dced897d8
Log notices as correct sender when it will be shown in active window 2018-06-12 19:09:55 -04:00
Jérémie Astori 2640027bd8
Merge pull request #2544 from thelounge/xpaw/no-sync-label
Remove label on force sync button
2018-06-12 18:52:51 -04:00
Pavel Djundik b54862022e
Merge pull request #2551 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.0.4
2018-06-12 16:07:04 +03:00
Renovate Bot 9b6e6efce2
Update dependency webpack-cli to v3.0.4 2018-06-12 11:57:31 +00:00
Pavel Djundik 063ef1a98e Remove label on force sync button 2018-06-12 11:25:00 +03:00
Jérémie Astori a267add7a4
Merge pull request #2547 from thelounge/xpaw/hl-sync
Synchronise number of highlighted messages to client
2018-06-11 23:47:24 -04:00
Jérémie Astori 32ccfd50af
Merge pull request #2543 from thelounge/xpaw/link-title
Fix multiple <title> tags being concatenated
2018-06-11 09:15:37 -04:00
Jérémie Astori eff7618f79
Merge pull request #2546 from thelounge/xpaw/fix-2545
Fix sqlite history not loading when maxHistory is -1
2018-06-11 09:13:29 -04:00
Pavel Djundik 7a3008aec6 Synchronize number of highlighted messages to client
Also fixes #1791
2018-06-11 14:29:57 +03:00
Pavel Djundik ea00587c00 Fix sqlite history not loading when maxHistory is -1
Fixes #2545
2018-06-11 14:08:05 +03:00
Pavel Djundik 0d48c596c8 Fix multiple <title> tags being concatenated 2018-06-11 11:32:32 +03:00
Pavel Djundik 12cd1b2614
Merge pull request #2542 from thelounge/renovate/sinon-6.x
Update dependency sinon to v6
2018-06-11 10:50:29 +03:00
Pavel Djundik e420a210b9
Merge pull request #2538 from thelounge/xpaw/fetch-links-once
De-duplicate link fetching to one request at once
2018-06-11 10:49:29 +03:00
Pavel Djundik 4e2523060b De-duplicate link fetching to one request at once 2018-06-11 10:38:03 +03:00
Renovate Bot 663b9daef6
Update dependency sinon to v6 2018-06-11 05:36:25 +00:00
Jérémie Astori af11b864ce
Merge pull request #2541 from thelounge/astorije/optional-sqlite3
Mark sqlite3 as an optional dependency
2018-06-10 18:05:52 -04:00
Jérémie Astori a3f88ffa5b
Mark sqlite3 as an optional dependency
Reminder: `optionalDependencies` simply means the install will not fail if that dependency fails to install, not that it will not get installed by default. We currently handle the case in code when sqlite3 is not working properly.

See https://docs.npmjs.com/files/package.json#optionaldependencies
2018-06-10 17:35:02 -04:00
Jérémie Astori d94da2aa09
Make non-highlighted favicon look more different than highlighted one 2018-06-10 16:48:08 -04:00
Pavel Djundik 7ea32d8a71
Merge pull request #2539 from thelounge/astorije/more-caret
Restore whitespace between caret and More/Less text in previews
2018-06-10 22:53:02 +03:00
Jérémie Astori 49babf773e
Restore whitespace between caret and More/Less text in previews 2018-06-10 15:39:39 -04:00
Jérémie Astori e3808068af
Merge pull request #2536 from thelounge/xpaw/fix-2473
Focus into input if trying to type into any non-input element
2018-06-10 13:35:10 -04:00
Jérémie Astori 50b4fa3441
Merge pull request #2535 from thelounge/xpaw/shields-cache
Set caching on shields.io badges in readme
2018-06-10 11:11:44 -04:00
Pavel Djundik 3b2173c694 Focus into input if trying to type into any non-input element
Fixes #2473
2018-06-10 14:19:17 +03:00
Pavel Djundik 825c1b8986
Set caching on shields.io badges in readme 2018-06-10 12:20:55 +03:00
Pavel Djundik 011bf80038
Merge pull request #2534 from thelounge/mcinkay/unicode-custom-highlight
Fix word boundary in the custom highlights regex not matching unicode
2018-06-10 11:33:37 +03:00
Pavel Djundik b7428c2b20
Merge pull request #2114 from MaxLeiter/disconnect
Allow connecting/disconnecting from networks in UI, closes #631
2018-06-10 11:33:06 +03:00
Alistair McKinlay 3cd8ce6514 Fix word boundary in the custom highlights regex not matching unicode
Fixes #1939
2018-06-10 09:27:11 +01:00
Max Leiter 9c4c1d6d51 Allow connecting/disconnecting from networks in UI, closes #631 2018-06-09 16:32:21 -07:00
Pavel Djundik b7072c8955
Merge pull request #2532 from benharri/auto-detect-url
use http for protocol-less URLs
2018-06-09 20:52:59 +03:00
Ben Harris d2987d037c use http for protocol-less URLs 2018-06-09 13:46:46 -04:00
Jérémie Astori 213586be95
Merge pull request #2530 from thelounge/xpaw/fix-2529
Fix adding a new network expanding collapsed networks incorrectly
2018-06-09 01:39:26 -04:00
Jérémie Astori a1a45f8c67
Merge pull request #2517 from thelounge/renovate/sinon-5.x
Update dependency sinon to v5.1.1
2018-06-09 01:37:46 -04:00
Renovate Bot 9d5159477c
Update dependency sinon to v5.1.1 2018-06-09 01:12:29 +00:00
Pavel Djundik 84ac5f55fe
Merge pull request #2531 from thelounge/renovate/emoji-regex-7.x
Update dependency emoji-regex to v7
2018-06-08 15:34:07 +03:00
Renovate Bot e0135d0832
Update dependency emoji-regex to v7 2018-06-08 09:14:04 +00:00
Pavel Djundik e5954ec0d8 Fix adding a new expanding collapsed networks incorrectly
Fixes #2529
2018-06-08 12:11:00 +03:00
Pavel Djundik 56de773614
Merge pull request #2528 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.12.0
2018-06-08 11:18:05 +03:00
Renovate Bot 838af985e1
Update dependency webpack to v4.12.0 2018-06-08 07:36:34 +00:00
Jérémie Astori 59e8e1aa7e
Merge pull request #2518 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.11.1
2018-06-07 23:25:40 -04:00
Jérémie Astori 8a7212a04f
Merge pull request #2524 from thelounge/xpaw/fix-away-cmd
Fix "/away " not setting you away
2018-06-07 23:23:56 -04:00
Pavel Djundik 730c266ea8
Fix "/away " not setting you away 2018-06-07 19:23:51 +03:00
Renovate Bot 5f9c4878b9
Update dependency webpack to v4.11.1 2018-06-07 05:16:28 +00:00
Jérémie Astori 0a1a4fc68a
Merge pull request #2520 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.0.3
2018-06-07 01:15:53 -04:00
Renovate Bot 0a3ded2957
Update dependency webpack-cli to v3.0.3 2018-06-07 01:26:37 +00:00
Jérémie Astori de1e6091bf
Merge pull request #2514 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.11.0
2018-06-05 08:46:12 -04:00
Renovate Bot 36797f3594
Update dependency webpack to v4.11.0 2018-06-05 12:27:39 +00:00
Pavel Djundik 3248f0db1e
Merge pull request #2506 from thelounge/xpaw/rm-logs-format
Remove ability to change date format and timezone
2018-06-05 14:55:44 +03:00
Pavel Djundik c0d712c53d Remove ability to change date format and timezone 2018-06-05 12:03:06 +03:00
Jérémie Astori 01cc10dc43
Merge pull request #2512 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.0.2
2018-06-05 00:15:09 -04:00
Renovate Bot 4a9a58e19c
Update dependency webpack-cli to v3.0.2 2018-06-04 20:23:46 +00:00
Pavel Djundik cd55e7bb2a
Merge pull request #2510 from Jay2k1/ctcp-unread-counter
Make CTCP requests/responses increase unread counter
2018-06-04 10:51:53 +03:00
Jay2k1 5d748a59cc
Make CTCP requests/responses increase unread counter 2018-06-04 00:47:30 +02:00
Jérémie Astori 8653b2a382
Merge pull request #2508 from thelounge/xpaw/no-join-topic-log
Do not write topic on join to logs
2018-06-03 18:04:03 -04:00
Jérémie Astori fe49b005da
Merge pull request #2509 from thelounge/renovate/nyc-12.x
Update dependency nyc to v12.0.2
2018-06-03 18:01:39 -04:00
Renovate Bot f4e0cde4e6
Update dependency nyc to v12.0.2 2018-06-03 21:02:43 +00:00
Pavel Djundik 4d94ab4218 Do not write ignorelist to logs 2018-06-03 22:20:09 +03:00
Pavel Djundik b0f32dc29b Do not write topic on join to logs 2018-06-03 22:14:02 +03:00
Pavel Djundik a6ed4f3652
Merge pull request #2497 from thelounge/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3
2018-06-03 21:55:59 +03:00
Renovate Bot a71fc83401
Update dependency webpack-cli to v3 2018-06-03 18:13:14 +00:00
Pavel Djundik cd1763cbf8
Merge pull request #2504 from thelounge/xpaw/fix-2438
If a preview fails to load, remove the link from msg object
2018-06-03 20:39:14 +03:00
Jérémie Astori b336e4f202
Merge pull request #2505 from thelounge/xpaw/fix-2324
Don't mark your nick changes as self in each channel
2018-06-03 13:37:38 -04:00
Pavel Djundik a663993d0b If a preview fails to load, remove the link from msg object
Fixes #2438
2018-06-03 12:25:01 +03:00
Pavel Djundik 2d13eaaf6b
Merge pull request #2503 from dgw/sidebar-lobby-overflow
Prevent long lobby names pushing badges out of sidebar
2018-06-02 23:12:38 +03:00
dgw fa66c3f23b Prevent long lobby names pushing badges out of sidebar 2018-06-02 15:01:57 -05:00
Pavel Djundik 4ee4d015cb
Merge pull request #2502 from dgw/fix-always-locked-network
Undo webpack sorting, it made network always locked
2018-06-02 22:16:28 +03:00
dgw 35841b3369 Undo webpack sorting, it made network always locked 2018-06-02 14:13:42 -05:00
Jérémie Astori c0ff2fe2b2
Merge pull request #2498 from thelounge/xpaw/handlebars-minify
Minify handlebar templates
2018-06-02 11:57:05 -04:00
Pavel Djundik e5059c73ed
Merge pull request #2500 from thelounge/renovate/mousetrap-1.x
Update dependency mousetrap to v1.6.2
2018-06-02 17:18:18 +03:00
Renovate Bot 3f26cee4d4
Update dependency mousetrap to v1.6.2 2018-06-02 13:19:57 +00:00
Pavel Djundik 4824a2b535
Merge pull request #2388 from Raqbit/master
Fix Alt+Up/Down cycling through channels of collapsed networks
2018-06-02 13:49:19 +03:00
Pavel Djundik 6ee06583a9 Minify handlebar templates 2018-06-02 12:24:36 +03:00
Jérémie Astori 8f7a141711
Merge pull request #2494 from thelounge/xpaw/list-together
Put list items in network context menu together
2018-06-01 21:45:20 -04:00
Jérémie Astori ecaf269fe1
Merge pull request #2495 from thelounge/renovate/webpack-cli-2.x
Update dependency webpack-cli to v2.1.5
2018-06-01 21:33:30 -04:00
Renovate Bot 850bfdd722
Update dependency webpack-cli to v2.1.5 2018-06-01 16:44:30 +00:00
Pavel Djundik f1ad8fa8f2
Merge pull request #2488 from Jay2k1/addAsteriskOnCopy
Add asterisk in front of nick in action lines
2018-06-01 19:43:30 +03:00
Pavel Djundik a35154185a
Put list items in network context menu together 2018-06-01 12:13:40 +03:00
Pavel Djundik 03b5e2c5db
Merge pull request #2481 from thelounge/renovate/fortawesome-fontawesome-free-5.x
Update dependency @fortawesome/fontawesome-free to v5.1.0-11
2018-06-01 12:03:14 +03:00
Pavel Djundik 52ca445636
Merge pull request #2493 from thelounge/renovate/moment-2.x
Update dependency moment to v2.22.2
2018-06-01 12:03:00 +03:00
Renovate Bot 8fffa6b03f
Update dependency moment to v2.22.2 2018-06-01 07:56:47 +00:00
Renovate Bot d0d71b309e
Update dependency @fortawesome/fontawesome-free to v5.1.0-11 2018-06-01 04:10:49 +00:00
Jérémie Astori b7ed3066c1
Merge pull request #2492 from thelounge/renovate/nyc-12.x
Update dependency nyc to v12
2018-06-01 00:10:09 -04:00
Renovate Bot 7037a58ca9
Update dependency nyc to v12 2018-06-01 00:48:10 +00:00
Jay2k1 6f8e26bdbf Add asterisk in front of nick in action lines 2018-05-31 16:16:49 +02:00
Pavel Djundik b4693fb768
Merge pull request #2482 from Jay2k1/master
Fix being unable to click channel link in chan after being kicked
2018-05-31 15:54:51 +03:00
Pavel Djundik 20abf92e4b
Merge pull request #2487 from thelounge/astorije/nick-pointer
Fix mouse cursor on userlist
2018-05-31 12:15:50 +03:00
Jérémie Astori 5344768e93
Fix mouse cursor on userlist 2018-05-31 00:50:00 -04:00
Pavel Djundik 0855d51e10
Merge pull request #2484 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.10.2
2018-05-30 12:01:45 +03:00
Renovate Bot ab29a7ba74
Update dependency webpack to v4.10.2 2018-05-30 08:39:32 +00:00
Jérémie Astori 24b9b93c3e
Merge pull request #2480 from thelounge/xpaw/fix-2478
Show connect window when last network is removed
2018-05-29 23:36:22 -04:00
Jérémie Astori 4994c3bca8
Merge pull request #2483 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.10.1
2018-05-29 23:29:07 -04:00
Renovate Bot 20d36a0502
Update dependency webpack to v4.10.1 2018-05-29 19:30:32 +00:00
Jay2k1 d0284dc1b9 Remove else so join is always sent
Fixes #2472
2018-05-29 19:39:57 +02:00
Pavel Djundik 000d56a96d Show connect window when last network is removed 2018-05-29 13:07:18 +03:00
Jérémie Astori 2de022235f
Merge pull request #2476 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.10.0
2018-05-29 00:46:56 -04:00
Renovate Bot df006845ae
Update dependency webpack to v4.10.0 2018-05-28 23:32:58 +00:00
Jérémie Astori e30984a13d
Merge pull request #2429 from c-ciobanu/c-ciobanu/feature-2360
Add password visibility toggle feature
2018-05-28 19:02:16 -04:00
Jérémie Astori d185a78af7
Merge pull request #2197 from RockyTV/rockytv
Add support for /ignore, /unignore and /ignorelist commands
2018-05-28 18:33:51 -04:00
Jérémie Astori 899ca6737b
Merge pull request #2475 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.9.2
2018-05-28 18:28:40 -04:00
Renovate Bot d4b028556a
Update dependency webpack to v4.9.2 2018-05-28 21:11:42 +00:00
Pavel Djundik a221bf9d40
Merge pull request #2471 from thelounge/xpaw/rm-urijs
Remove URIjs
2018-05-28 23:03:00 +03:00
Alexandre Oliveira 468427bfdb Add support for /ignore, /unignore and /ignorelist commands 2018-05-28 16:46:12 -03:00
Pavel Djundik 07fcccbda5 Remove urijs and upgrade lockfile 2018-05-28 13:54:24 +03:00
Pavel Djundik 929047b6a5 Replace URIjs with native URLSearchParams 2018-05-28 10:16:00 +03:00
Pavel Djundik 0de90daa64
Merge pull request #2366 from thelounge/xpaw/refactor-userlog
Refactor userLog to be the same as sqlite logger
2018-05-26 23:53:17 +03:00
Jérémie Astori 19cce592c8
Merge pull request #2397 from thelounge/xpaw/linkify-it
Switch to `linkify-it` for url detection in messages
2018-05-26 16:44:18 -04:00
Jérémie Astori 0277ac1a73
3.0.0-pre.6 2018-05-26 02:22:41 -04:00
Jérémie Astori a37d6478e4
Add changelog entry for v3.0.0-pre.6 2018-05-26 02:17:21 -04:00
Jérémie Astori 67a73fb79d
Merge pull request #2467 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.9.1
2018-05-26 01:50:53 -04:00
Renovate Bot 979eb5c6ca
Update dependency webpack to v4.9.1 2018-05-25 21:35:48 +00:00
Pavel Djundik d39224c594
Merge pull request #2466 from thelounge/xpaw/cfg
Update Travis and Renovate configs
2018-05-25 11:32:43 +03:00
Cristi Ciobanu 490c94b33a change icon tag 2018-05-24 21:21:30 +02:00
Pavel Djundik 4890d6d477 Enable rebaseStalePrs in renovate 2018-05-24 16:44:47 +03:00
Pavel Djundik de70e0ab0a Pass --frozen-lockfile to yarn in Travis builds 2018-05-24 16:44:41 +03:00
Pavel Djundik 944b8d9f34
Merge pull request #2459 from thelounge/renovate/web-push-3.x
Update dependency web-push to v3.3.1
2018-05-24 16:32:09 +03:00
Renovate Bot 3c110a7d30
Update dependency web-push to v3.3.1 2018-05-24 13:16:13 +00:00
Pavel Djundik d5e1211e28
Merge pull request #2465 from thelounge/renovate/yarn-1.x
Update dependency yarn to v1.7.0
2018-05-24 16:15:49 +03:00
Pavel Djundik 3c1c5e0085
Merge pull request #2464 from thelounge/renovate/sinon-5.x
Update dependency sinon to v5.0.10
2018-05-24 16:15:29 +03:00
Renovate Bot aa7c7c16e5
Update dependency sinon to v5.0.10 2018-05-24 08:19:12 +00:00
Jérémie Astori 99ad9e3c24
Merge pull request #2460 from thelounge/renovate/webpack-4.x
Update dependency webpack to v4.8.3
2018-05-24 02:36:38 -04:00
Renovate Bot d2e47c5d86
Update dependency yarn to v1.7.0 2018-05-24 02:42:10 +00:00
Cristi Ciobanu 25dc2848ca changed i with button 2018-05-24 00:12:37 +02:00
Renovate Bot 87553a4531
Update dependency webpack to v4.8.3 2018-05-23 18:12:40 +00:00
Pavel Djundik a7fdea723f
Merge pull request #2463 from thelounge/renovate/webpack-cli-2.x
Update dependency webpack-cli to v2.1.4
2018-05-23 19:37:28 +03:00
Renovate Bot ce2c58848b
Update dependency webpack-cli to v2.1.4 2018-05-23 16:25:40 +00:00
Pavel Djundik 5cfec76d3a Refactor userLog to be the same as sqlite logger
Fixes #1392
2018-05-23 16:56:18 +03:00
Pavel Djundik 97dfdbf7c0 Default to https: for urls with no scheme 2018-05-23 16:50:59 +03:00
Pavel Djundik 42344302de Bump required node version to 6.13.0 2018-05-23 16:31:02 +03:00
Pavel Djundik d4fa6bbcb0 Use WHATWG URL parser in link prefetcher 2018-05-23 16:31:02 +03:00
Pavel Djundik 629ae8bfa4 Fix protocol-aware urls, add better link validation in previews 2018-05-23 16:31:02 +03:00
Pavel Djundik 15c14c6dea Change test cases to match linkify-it 2018-05-23 16:31:02 +03:00
Pavel Djundik 58ec2768ec Use linkify-it 2018-05-23 16:31:02 +03:00
Pavel Djundik c7c2587079
Merge pull request #2445 from MaxLeiter/pointer
Pointer cursor hovering nicks in userlist
2018-05-23 16:21:44 +03:00
Pavel Djundik 02aa47d8c6
Merge pull request #2461 from thelounge/renovate/package-json-5.x
Update dependency package-json to v5
2018-05-22 20:01:25 +03:00
Renovate Bot b07ea86034
Update dependency package-json to v5 2018-05-22 15:40:18 +00:00
Pavel Djundik 8982dd556c
Merge pull request #2455 from thelounge/renovate/sinon-5.x
Update dependency sinon to v5.0.7
2018-05-22 17:15:30 +03:00
Pavel Djundik f7d2ca1da0
Merge pull request #2458 from thelounge/renovate/stylelint-9.x
Update dependency stylelint to v9.2.1
2018-05-22 17:15:14 +03:00
Renovate Bot ea9961f9f6
Update dependency stylelint to v9.2.1 2018-05-22 14:00:00 +00:00
Renovate Bot 636edf500c
Update dependency sinon to v5.0.7 2018-05-22 13:59:50 +00:00
Pavel Djundik 9267ae99cb
Merge pull request #2457 from thelounge/renovate/socket.io-client-2.x
Update dependency socket.io-client to v2.1.1
2018-05-22 16:59:07 +03:00
Pavel Djundik 77d4fc89e0
Merge pull request #2456 from thelounge/renovate/socket.io-2.x
Update dependency socket.io to v2.1.1
2018-05-22 16:58:59 +03:00
Renovate Bot 2f44cab13f
Update dependency socket.io-client to v2.1.1 2018-05-22 13:32:39 +00:00
Renovate Bot d4f42255b3
Update dependency socket.io to v2.1.1 2018-05-22 12:33:49 +00:00
Pavel Djundik 173b831cf7
Merge pull request #2449 from thelounge/renovate/babel-preset-env-1.x
Update dependency babel-preset-env to v1.7.0
2018-05-22 15:28:43 +03:00
Pavel Djundik 62e4077e93
Merge pull request #2450 from thelounge/renovate/fs-extra-6.x
Update dependency fs-extra to v6.0.1
2018-05-22 15:28:37 +03:00
Pavel Djundik 9bc1860345
Merge pull request #2451 from thelounge/renovate/mocha-5.x
Update dependency mocha to v5.2.0
2018-05-22 15:28:28 +03:00
Pavel Djundik f93c00cd1a
Merge pull request #2452 from thelounge/renovate/nyc-11.x
Update dependency nyc to v11.8.0
2018-05-22 15:28:07 +03:00
Pavel Djundik 22a32f19eb
Merge pull request #2453 from thelounge/renovate/primer-tooltips-1.x
Update dependency primer-tooltips to v1.5.4
2018-05-22 15:27:45 +03:00
Pavel Djundik a764e7b19a
Merge pull request #2454 from thelounge/renovate/request-2.x
Update dependency request to v2.87.0
2018-05-22 15:27:28 +03:00
Renovate Bot 8a5d6bb340
Update dependency request to v2.87.0 2018-05-22 11:29:18 +00:00
Renovate Bot c3bd6f5e8e
Update dependency primer-tooltips to v1.5.4 2018-05-22 11:29:08 +00:00
Renovate Bot f56c8fbbf1
Update dependency nyc to v11.8.0 2018-05-22 10:38:11 +00:00
Renovate Bot 0fa43eec4b
Update dependency mocha to v5.2.0 2018-05-22 10:37:57 +00:00
Renovate Bot 43b5cc190e
Update dependency fs-extra to v6.0.1 2018-05-22 09:32:23 +00:00
Renovate Bot 4a732c01e5
Update dependency babel-preset-env to v1.7.0 2018-05-22 09:32:10 +00:00
Pavel Djundik 3a25134e8c
Merge pull request #2437 from thelounge/renovate/configure
Configure Renovate
2018-05-22 09:58:29 +03:00
Raqbit e2e6fe2533 Fix Alt+Up/Down cycling through channels of collapsed networks 2018-05-19 20:15:21 +02:00
Max Leiter 0833f143ff Pointer cursor hovering nicks in userlist 2018-05-17 17:11:14 -07:00
Pavel Djundik db4661339a
Merge pull request #2439 from thelounge/xpaw/identd-parseint
Specify parseInt base in respondToIdent
2018-05-15 16:42:28 +03:00
Pavel Djundik 8442472f37 Specify parseInt base 2018-05-15 16:04:05 +03:00
Pavel Djundik 9d5f213289 Don't mark your nick changes as self in each channel 2018-05-15 10:00:16 +03:00
Pavel Djundik 67abcb03c2 Replace Greenkeeper with Renovate 2018-05-15 09:56:23 +03:00
Renovate Bot 31a8055c6e Add renovate.json 2018-05-15 09:56:11 +03:00
Jérémie Astori 8edc1be7b5
Merge pull request #2414 from thelounge/xpaw/fix-2329
Fix join channel form not working
2018-05-15 01:19:38 -04:00
Pavel Djundik d22f0344ea
Merge pull request #2391 from thelounge/xpaw/no-sqlite-crash
Gracefully fail if sqlite3 module fails to load
2018-05-13 17:04:22 +03:00
qwe bab78f9913 moved the reveal password block into his own template 2018-05-10 21:20:35 +02:00
qwe 0294643403 minor fixes 2018-05-10 20:37:10 +02:00
Pavel Djundik f5a8f23d2b
Merge pull request #2378 from thelounge/xpaw/fix-2327
Add prefix to channels from connect window
2018-05-10 17:14:50 +03:00
Jérémie Astori 0305dadc7f
Merge pull request #2431 from thelounge/xpaw/512px
Add 512px icons in manifest and specify image types
2018-05-10 00:18:35 -04:00
Jérémie Astori 4219fabca8
Merge pull request #2433 from thelounge/greenkeeper/nyc-11.7.3
Update nyc to the latest version 🚀
2018-05-10 00:17:41 -04:00
greenkeeperio-bot 1e3b2ca2f7 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-10 00:53:53 +00:00
greenkeeper[bot] 17680b130e chore(package): update nyc to version 11.7.3 2018-05-10 00:50:20 +00:00
qwe bdfc367c6c refactor password visibility toggle feature 2018-05-10 01:25:17 +02:00
Pavel Djundik 9ce586e21d
Merge pull request #2413 from thelounge/xpaw/overscroll-behavior
Use overscroll-behavior
2018-05-09 17:23:30 +03:00
Pavel Djundik c6f7aa2eda Add 512px icons in manifest and specify image types 2018-05-09 10:18:42 +03:00
Jérémie Astori faeb00af25
Merge pull request #2430 from thelounge/greenkeeper/nyc-11.7.2
Update nyc to the latest version 🚀
2018-05-09 01:34:50 -04:00
greenkeeperio-bot 7a9bc497fc chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-09 00:47:38 +00:00
greenkeeper[bot] 8899446fe3 chore(package): update nyc to version 11.7.2 2018-05-09 00:43:25 +00:00
qwe 2d49e34805 add password toggle to connect and login 2018-05-08 23:40:39 +02:00
Jérémie Astori f54fef4210
Merge pull request #2428 from thelounge/xpaw/fix-merge-sort
Fix merge() in parser not filling unstyled text correctly
2018-05-08 01:39:56 -04:00
qwe 97b178dbdb Add password visibility toggle feature 2018-05-08 01:52:54 +02:00
Pavel Djundik 95a435c5c9 Fix merge() in parser not filling unstyled text correctly 2018-05-07 21:19:54 +03:00
Pavel Djundik e05b107cc1
Merge pull request #2427 from thelounge/greenkeeper/sinon-5.0.5
Update sinon to the latest version 🚀
2018-05-07 19:20:32 +03:00
greenkeeperio-bot 621082b0a4 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-07 06:47:40 +00:00
greenkeeper[bot] 1e454ae5ed chore(package): update sinon to version 5.0.5 2018-05-07 06:44:05 +00:00
Jérémie Astori c169a9e1b8
Merge pull request #2425 from thelounge/greenkeeper/webpack-cli-2.1.3
Update webpack-cli to the latest version 🚀
2018-05-07 02:24:01 -04:00
Jérémie Astori 0cd6366b5c
Merge pull request #2416 from thelounge/xpaw/out-of-focus-touch
Allow out-of-focus typing on touch devices
2018-05-07 02:23:35 -04:00
Jérémie Astori 907b92ed61
Merge pull request #2426 from thelounge/greenkeeper/npm-run-all-4.1.3
Update npm-run-all to the latest version 🚀
2018-05-07 02:17:30 -04:00
greenkeeperio-bot 30ad035b07 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-06 18:24:59 +00:00
greenkeeper[bot] db83d96527 chore(package): update npm-run-all to version 4.1.3 2018-05-06 18:16:11 +00:00
greenkeeperio-bot 8cb0ff6308 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-06 15:26:29 +00:00
greenkeeper[bot] 4c6cef76f5 chore(package): update webpack-cli to version 2.1.3 2018-05-06 15:22:46 +00:00
Pavel Djundik 4a9c3236aa
Merge pull request #2422 from thelounge/greenkeeper/ua-parser-js-0.7.18
Update ua-parser-js to the latest version 🚀
2018-05-05 14:35:36 +03:00
Pavel Djundik 45bad20bb3
Merge pull request #2423 from thelounge/greenkeeper/graphql-request-1.6.0
Update graphql-request to the latest version 🚀
2018-05-05 14:35:24 +03:00
greenkeeperio-bot d92770edb4 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-04 18:22:40 +00:00
greenkeeper[bot] d4d65b5377 chore(package): update graphql-request to version 1.6.0 2018-05-04 18:17:56 +00:00
greenkeeperio-bot 71a36ebee0 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-04 16:22:30 +00:00
greenkeeper[bot] ea4b694ac3 fix(package): update ua-parser-js to version 0.7.18 2018-05-04 16:18:37 +00:00
Pavel Djundik 7fa67de9aa
Merge pull request #2421 from thelounge/greenkeeper/webpack-4.7.0
Update webpack to the latest version 🚀
2018-05-04 17:30:05 +03:00
Pavel Djundik fd6048c7b6
Merge pull request #2420 from thelounge/xpaw/fontawesome
Use new fontawesome package
2018-05-04 17:29:13 +03:00
greenkeeperio-bot db07f2af57 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-04 13:35:45 +00:00
greenkeeper[bot] efa5b03cf8 chore(package): update webpack to version 4.7.0 2018-05-04 13:27:03 +00:00
Pavel Djundik d4d516af1e Use new fontawesome package
Ref: b60cbbecb4/UPGRADING.md (50x-to-510)
2018-05-04 12:09:24 +03:00
Pavel Djundik 55c1293b4c Allow out-of-focus typing on touch devices 2018-05-03 15:51:40 +03:00
Jérémie Astori 5aafb38624
Merge pull request #2415 from thelounge/greenkeeper/webpack-dev-server-3.1.4
Update webpack-dev-server to the latest version 🚀
2018-05-03 00:14:55 -04:00
greenkeeperio-bot a729d909a7 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-02 22:01:35 +00:00
greenkeeper[bot] dbcf69206a chore(package): update webpack-dev-server to version 3.1.4 2018-05-02 21:52:37 +00:00
Pavel Djundik 1e5e9bbc57
Merge pull request #2405 from thelounge/xpaw/sort-arrow
Show a ghost placeholder when dragging channels
2018-05-02 17:37:31 +03:00
Pavel Djundik f23c063b71 Fix join channel form not working
Fixes #2329
2018-05-02 17:09:32 +03:00
Pavel Djundik 7dd6340e46 Show a ghost placeholder when dragging channels
Co-Authored-By: Jérémie Astori <astorije@users.noreply.github.com>
2018-05-02 16:11:10 +03:00
Pavel Djundik e1b6ba9f0d Use overscroll-behavior
Ref: https://developers.google.com/web/updates/2017/11/overscroll-behavior
2018-05-02 14:17:56 +03:00
Pavel Djundik 94f1d8dde0 Override server provided defaults with parameters passed in the URL if they match the data type 2018-05-02 13:08:00 +03:00
Pavel Djundik ee5e82fe9a Fix connect window opening twice in public mode 2018-05-02 13:08:00 +03:00
Pavel Djundik 426893077f Add prefix to channels from connect window
Fixes #2327
2018-05-02 13:08:00 +03:00
Al McKinlay 5e1beb5b46
Merge pull request #2412 from thelounge/greenkeeper/sinon-5.0.3
Update sinon to the latest version 🚀
2018-05-02 10:54:55 +01:00
greenkeeperio-bot 7f11af1c13 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-02 09:38:42 +00:00
greenkeeper[bot] cd34616339 chore(package): update sinon to version 5.0.3 2018-05-02 09:35:32 +00:00
Jérémie Astori 9558a1af58
Merge pull request #2408 from thelounge/xpaw/parser-merger
Minor optimization in style parser
2018-05-01 19:37:10 -04:00
Jérémie Astori 0c8765647a
Merge pull request #2410 from thelounge/greenkeeper/fs-extra-6.0.0
Update fs-extra to the latest version 🚀
2018-05-01 19:35:49 -04:00
Jérémie Astori df7e62915b
Merge pull request #2409 from thelounge/xpaw/ms-edge-css
Fix CSS issues in Microsoft Edge
2018-05-01 19:34:49 -04:00
Jérémie Astori a71904a25e
Merge pull request #2411 from thelounge/greenkeeper/@fortawesome/fontawesome-free-webfonts-1.0.7
Update @fortawesome/fontawesome-free-webfonts to the latest version 🚀
2018-05-01 19:29:54 -04:00
greenkeeperio-bot ddad808d88 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-01 20:41:57 +00:00
Al McKinlay 1790e9f530
Merge pull request #2407 from thelounge/greenkeeper/sinon-5.0.2
Update sinon to the latest version 🚀
2018-05-01 21:41:16 +01:00
Al McKinlay f1477a3608
Merge pull request #2404 from thelounge/xpaw/fix-2218
Fix join channel ui moving when sorting channels
2018-05-01 21:40:13 +01:00
greenkeeper[bot] b6881c20d2 chore(package): update @fortawesome/fontawesome-free-webfonts to version 1.0.7 2018-05-01 20:39:17 +00:00
Al McKinlay 44c5f71ac2
Merge pull request #2406 from thelounge/xpaw/fix-2400
Fix channel and ban lists in context menu not working
2018-05-01 21:14:47 +01:00
Pavel Djundik 6c41b68bca Fix CSS issues in Microsoft Edge 2018-05-01 19:11:45 +03:00
greenkeeperio-bot 44a94ea04d chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-01 14:23:13 +00:00
greenkeeper[bot] d86fe768f3 fix(package): update fs-extra to version 6.0.0 2018-05-01 14:18:37 +00:00
Pavel Djundik d19c00faab Build clean text message only once 2018-05-01 14:32:13 +03:00
Pavel Djundik 162b801839 Move part sorting to merge 2018-05-01 14:31:46 +03:00
greenkeeperio-bot 77dec4da01 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-05-01 11:21:07 +00:00
greenkeeper[bot] 860e2607e4 chore(package): update sinon to version 5.0.2 2018-05-01 11:17:15 +00:00
Pavel Djundik 886301e765
Merge pull request #2396 from thelounge/xpaw/fix-2341
Use per-client channel and message ids
2018-05-01 13:26:38 +03:00
Pavel Djundik f50d383670 Fix channel and ban lists in context menu not working
Fixes #2400
2018-05-01 11:36:10 +03:00
Pavel Djundik b3e57a013f Fix join channel ui moving when sorting channels
Fixes #2218
2018-05-01 11:18:39 +03:00
Jérémie Astori 4ddb5d5b7d
Merge pull request #2402 from thelounge/greenkeeper/webpack-cli-2.1.1
Update webpack-cli to the latest version 🚀
2018-05-01 01:08:32 -04:00
greenkeeper[bot] 0346f2238f
chore(package): update webpack-cli to version 2.1.2 2018-05-01 00:57:16 -04:00
Jérémie Astori 2a423174b1
Merge pull request #2401 from thelounge/greenkeeper/sinon-5.0.1
Update sinon to the latest version 🚀
2018-04-30 23:59:08 -04:00
greenkeeperio-bot 487d8c4a3d chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-30 09:47:11 +00:00
greenkeeper[bot] 0f4adedeab chore(package): update sinon to version 5.0.1 2018-04-30 09:43:33 +00:00
Jérémie Astori 16236ec0bf
Merge pull request #2380 from jake-walker/master
Add `upgrade` CLI command for themes and packages
2018-04-29 14:53:03 -04:00
Jérémie Astori 6bf4ea9f43
Merge pull request #2399 from thelounge/xpaw/fix-2389
Fix `aria-controls` on collapse button
2018-04-29 14:50:33 -04:00
Pavel Djundik 38f3557e0b Fix aria-controls on collapse button
Fixes #2389
2018-04-29 15:20:06 +03:00
Jake Walker cd81a2bcec Added upgrade command
Using suggested changes


Changes suggested by astorije


Upgrade parameter removed and allow multiple packages to upgrade


Fixed


Minor fix
2018-04-29 08:47:39 +01:00
Jérémie Astori 37a35eeece
Merge pull request #2398 from thelounge/xpaw/data-attr
Use attr() on user-controlled data
2018-04-29 02:13:07 -04:00
Pavel Djundik e2e3a59336
Merge pull request #2009 from thelounge/astorije/favicons
Favicons, favicons everywhere
2018-04-28 19:48:47 +03:00
Jérémie Astori 1daad45f11
Use the new logo for favicons, notifications badges, and homescreen app icons 2018-04-28 12:14:41 -04:00
Pavel Djundik 2da5920bda
Merge pull request #2387 from thelounge/astorije/node-10
Run Travis CI against Node v10
2018-04-28 12:54:32 +03:00
Pavel Djundik fb1aef882a Upgrade lockfile to latest versions 2018-04-28 11:49:04 +03:00
Jérémie Astori 8618af2ee0 Run Travis CI against Node v10 2018-04-28 11:46:44 +03:00
Pavel Djundik 14cc8b7827 Use attr() on user-controlled data
See https://www.reddit.com/r/javascript/comments/8f57i1/psa_there_are_over_1000_people_in_the_us_named/dy0rib2/
2018-04-28 11:19:49 +03:00
Pavel Djundik 2ea6446323
Merge pull request #2394 from thelounge/greenkeeper/graphql-request-1.5.2
Update graphql-request to the latest version 🚀
2018-04-27 20:45:08 +03:00
Pavel Djundik bf8a16b7fe Use per-client channel and message ids
Fixes #2341
2018-04-27 13:16:23 +03:00
greenkeeperio-bot a8b9d8d96c chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-27 08:24:16 +00:00
greenkeeper[bot] 39d59edece chore(package): update graphql-request to version 1.5.2 2018-04-27 08:22:03 +00:00
Jérémie Astori 92c4df6e9c
Merge pull request #2390 from thelounge/xpaw/network-uuid
Remove network ids and use uuids everywhere
2018-04-27 01:23:49 -04:00
Pavel Djundik 8d7cd4ea91
Merge pull request #2392 from thelounge/xpaw/quit-part
Correctly add quits to parts
2018-04-26 15:10:49 +03:00
Pavel Djundik 02db91bcc9 Correctly add quits to parts 2018-04-26 13:36:56 +03:00
Pavel Djundik e136edb6ac Remove network ids and use uuids everywhere 2018-04-26 12:37:28 +03:00
Pavel Djundik 0ad9def514 Gracefully fail if sqlite3 module fails to load 2018-04-26 12:11:38 +03:00
Pavel Djundik 4f85779e78
Merge pull request #2385 from thelounge/xpaw/yarn
Make a separate function to execute yarn commands; fallback to global yarn
2018-04-26 10:14:02 +03:00
Jérémie Astori 4ff5995617
Merge pull request #2386 from thelounge/xpaw/quits-parts
Count quits as parts in condensed messages to reduce information density
2018-04-25 21:24:58 -04:00
Pavel Djundik bf2a80a7b5
Count quits as parts in condensed messages to reduce information density
See https://github.com/thelounge/thelounge/pull/2383#discussion_r183915328 for discussion
2018-04-25 21:08:06 -04:00
Jérémie Astori c5564f6bff
Merge pull request #2383 from thelounge/xpaw/condensed-join-part
Make condensed joins and parts shorter
2018-04-25 21:03:56 -04:00
Jérémie Astori d202eaa267
Merge pull request #2384 from thelounge/greenkeeper/lodash-4.17.9
Update lodash to the latest version 🚀
2018-04-24 19:55:58 -04:00
Pavel Djundik f7d34739b5 Make a separate function to execute yarn commands; fallback to global yarn
Fixes #2301
Fixes #2348
2018-04-24 21:38:54 +03:00
greenkeeperio-bot dfdcb95a5d chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-24 18:23:47 +00:00
greenkeeper[bot] b4d5732a50 fix(package): update lodash to version 4.17.9 2018-04-24 18:19:47 +00:00
Pavel Djundik 810ecd429a
Make condensed joins and parts shorter 2018-04-24 13:01:20 +03:00
Jérémie Astori 73b1293522
Merge pull request #2379 from thelounge/xpaw/unsafe-perm
Document npm's unsafe-perm
2018-04-24 01:22:06 +00:00
Jérémie Astori 3d56e0aad0
Merge pull request #2381 from thelounge/xpaw/autocomplete-nick
Fix your own nick in auto completion
2018-04-24 01:21:29 +00:00
Pavel Djundik f6b7ce7383
Fix your own nick in auto completion 2018-04-23 15:34:22 +03:00
Pavel Djundik 74f9421417
Document npm's unsafe-perm 2018-04-22 21:32:01 +03:00
Jérémie Astori 8e2cce5b43
Merge pull request #2376 from thelounge/greenkeeper/webpack-cli-2.0.15
Update webpack-cli to the latest version 🚀
2018-04-21 22:20:43 +02:00
Jérémie Astori ccb01d964c
Merge pull request #2355 from Jay2k1/Jay2k1-opvoice
Add 'op' and 'voice' user context menu items
2018-04-21 22:12:41 +02:00
greenkeeperio-bot 580e3c7675 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-21 07:15:40 +00:00
greenkeeper[bot] 590d0fc228 chore(package): update webpack-cli to version 2.0.15 2018-04-21 07:12:18 +00:00
Jay2k1 808b2b249b add 'op' and 'voice' context menu entries 2018-04-21 00:53:59 +02:00
Jérémie Astori 49c5e6a502
Merge pull request #2369 from thelounge/astorije/show-older-msg-btn
Make "Show older messages" style consistent with other buttons
2018-04-20 19:04:52 +02:00
Jérémie Astori bb260c4c04
Merge pull request #2368 from thelounge/astorije/window-header
Remove header border on non-chat windows and reduce top margin a bit more
2018-04-20 19:04:20 +02:00
Jérémie Astori ec8e4fc458
Make sure the channel list button stays always visible 2018-04-20 17:05:53 +02:00
Pavel Djundik 4fe53fc170
Merge pull request #2373 from thelounge/greenkeeper/mocha-5.1.1
Update mocha to the latest version 🚀
2018-04-19 13:11:24 +03:00
Pavel Djundik c46160c99e
Merge pull request #2374 from thelounge/greenkeeper/nyc-11.7.1
Update nyc to the latest version 🚀
2018-04-19 13:11:14 +03:00
greenkeeperio-bot 619d49b669 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-19 08:18:31 +00:00
greenkeeper[bot] b6ca2f08ff chore(package): update nyc to version 11.7.1 2018-04-19 08:15:06 +00:00
greenkeeperio-bot 8b4095c0cf chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-19 02:42:52 +00:00
greenkeeper[bot] 2e9a8dfb0d chore(package): update mocha to version 5.1.1 2018-04-19 02:37:50 +00:00
Pavel Djundik c546228c7e
Merge pull request #2370 from thelounge/greenkeeper/webpack-4.6.0
Update webpack to the latest version 🚀
2018-04-18 13:15:01 +03:00
greenkeeper[bot] bfdd751db9 chore(package): update webpack to version 4.6.0 2018-04-18 10:23:22 +03:00
Pavel Djundik e1eb0e6353
Merge pull request #2371 from thelounge/greenkeeper/undate-0.3.0
Update undate to the latest version 🚀
2018-04-18 10:21:44 +03:00
Pavel Djundik b381c9161d
Merge pull request #2364 from thelounge/astorije/fix-userlist-bottom
Fix user list scroll area expanding behind the message input on mobile
2018-04-18 10:17:51 +03:00
Pavel Djundik e254f76459
Merge pull request #2367 from thelounge/astorije/quickfix-tooltips
Quick-fix tooltips not being loaded by Webpack
2018-04-18 10:14:22 +03:00
greenkeeperio-bot a5802f492b chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-18 03:17:07 +00:00
greenkeeper[bot] 2da5c270ff chore(package): update undate to version 0.3.0 2018-04-18 03:14:59 +00:00
Jérémie Astori 1762db8bd4
Make "Show older messages" style consistent with other buttons
Also store the loading text in a `data` attribute instead of duplicate in template + JS, in order to help with future internationalization
2018-04-18 00:12:24 +02:00
Jérémie Astori c9dc323bcc
Remove header border on non-chat windows and reduce top margin a bit more 2018-04-17 23:36:30 +02:00
Jérémie Astori 235a3dad92
Quick-fix tooltips not being loaded by Webpack 2018-04-17 23:07:12 +02:00
Pavel Djundik 3f540a8240
Merge pull request #2365 from thelounge/greenkeeper/chalk-2.4.0
Update chalk to the latest version 🚀
2018-04-17 10:26:45 +03:00
greenkeeperio-bot 43c9665523 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-17 05:43:22 +00:00
greenkeeper[bot] 612a58eb2f fix(package): update chalk to version 2.4.0 2018-04-17 05:39:32 +00:00
Jérémie Astori 0661b4aa37
Fix user list scroll area expanding behind the message input on mobile 2018-04-17 00:27:36 +02:00
Jérémie Astori 31646f2a28
Merge pull request #2337 from thelounge/xpaw/remove-nick-edit
Remove nick editor
2018-04-16 19:53:17 +02:00
Jérémie Astori 7ed8188f54
Merge pull request #2358 from thelounge/greenkeeper/yarn-1.6.0
Update yarn to the latest version 🚀
2018-04-16 19:37:45 +02:00
Jérémie Astori 0797cfad84
Merge pull request #2361 from thelounge/astorije/version
Add project version in outputs that mention source SHA
2018-04-16 16:22:39 +02:00
Jérémie Astori 2006902b8a
Check if working directory is a git repo itself before getting commit hash 2018-04-16 16:16:52 +02:00
Jérémie Astori 3cf4e2105e
Ignore stderr of git version check instead of redirecting it to /dev/null 2018-04-16 15:50:24 +02:00
Jérémie Astori 62917d3d1f
Merge pull request #2363 from thelounge/xpaw/fix-2362
Fix nicks with special characters being colored incorrectly in messages
2018-04-16 15:24:53 +02:00
Pavel Djundik 73b1124dce Fix nicks with special characters being colored incorrectly in messages
Fixes #2362
2018-04-16 14:45:08 +03:00
Jérémie Astori 34f4d0abf4
Add project version in outputs that mention source SHA 2018-04-16 00:19:25 +02:00
Pavel Djundik a392a08c7a Remove nick editor 2018-04-15 22:17:30 +03:00
Pavel Djundik efae5fd28d
Merge pull request #2229 from thelounge/xpaw/edit-networks
Allow editing networks via UI
2018-04-15 22:10:02 +03:00
greenkeeperio-bot 0793c35eb3 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-15 13:32:49 +00:00
greenkeeper[bot] 0dff676021 fix(package): update yarn to version 1.6.0 2018-04-15 13:30:26 +00:00
Pavel Djundik c98b755f17
Merge pull request #2357 from thelounge/greenkeeper/moment-2.22.1
Update moment to the latest version 🚀
2018-04-15 12:12:17 +03:00
greenkeeperio-bot f49bf09261 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-15 06:30:05 +00:00
greenkeeper[bot] f2e5511544 fix(package): update moment to version 2.22.1 2018-04-15 06:26:01 +00:00
Jérémie Astori a242fb15a3
Merge pull request #2356 from thelounge/xpaw/placeholder
Update placeholder rules for modern browsers
2018-04-14 17:22:28 -04:00
Pavel Djundik 09482aed7b
Update placeholder rules for modern browsers 2018-04-14 10:24:39 +03:00
Jérémie Astori 81188e8ef6
Merge pull request #2354 from thelounge/greenkeeper/mocha-5.1.0
Update mocha to the latest version 🚀
2018-04-12 23:41:30 -04:00
greenkeeperio-bot fb49f468f1 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-13 02:42:44 +00:00
greenkeeper[bot] b67fdb7806 chore(package): update mocha to version 5.1.0 2018-04-13 02:40:17 +00:00
Jérémie Astori 5a9233c426
Merge pull request #2349 from thelounge/astorije/fix-previews
Fix previews on Morning (and others)
2018-04-12 09:27:50 -04:00
Pavel Djundik 2bea5f67b9 Use default nick set in config for fallback 2018-04-12 10:39:03 +03:00
Pavel Djundik c1406adcb2 Add tests for editing network 2018-04-12 10:38:35 +03:00
Pavel Djundik f86d73972d Implement network editing UI and object updating 2018-04-12 10:38:35 +03:00
Pavel Djundik 682d3070e9 Move IRC object and validation to network model 2018-04-12 10:37:45 +03:00
Jérémie Astori ee6fb8c619
Fix color of "More" preview button in Morning 2018-04-12 00:52:05 -04:00
Jérémie Astori 2b051194c8
Fix preview text color overriding inherited color
This messes up dark themes, or really any theme that does not use #222 as body color...
2018-04-12 00:45:49 -04:00
Jérémie Astori b08b23d59e
Merge pull request #2328 from thelounge/astorije/local-themes
Local themes
2018-04-12 00:23:11 -04:00
Jérémie Astori 39ca8f74ae
Merge pull request #2272 from thelounge/astorije/improve-previews
Improve UI of previews
2018-04-12 00:21:38 -04:00
Pavel Djundik 0010d4965c
Merge pull request #2346 from thelounge/greenkeeper/@fortawesome/fontawesome-free-webfonts-1.0.6
Update @fortawesome/fontawesome-free-webfonts to the latest version 🚀
2018-04-11 10:01:30 +03:00
Jérémie Astori 6f3c88663a
Merge pull request #2317 from creesch/syncDefault
Enable sync on empty localstorage, force sync, sync on both load and reconnect.
2018-04-11 01:30:03 -04:00
Jérémie Astori 7d1af273d1
Merge pull request #2344 from thelounge/xpaw/client-guid
Replace client ids with guids
2018-04-11 00:13:30 -04:00
greenkeeperio-bot 8d755793f2 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-10 22:31:33 +00:00
greenkeeper[bot] d3efa6b82f chore(package): update @fortawesome/fontawesome-free-webfonts to version 1.0.6 2018-04-10 22:29:21 +00:00
Pavel Djundik 99386510d8 Replace client ids with guids 2018-04-10 16:15:44 +03:00
Jérémie Astori bb16b3e30b
Simplify showing/hiding "More" button of a new preview on active channel 2018-04-09 21:39:41 -04:00
Jérémie Astori d55420faae
Bind a single resize event, debounced, instead of one handler per preview 2018-04-09 21:39:41 -04:00
Jérémie Astori ac02bd370b
Do not compute preview "More" buttons on mobile 2018-04-09 21:39:40 -04:00
Jérémie Astori dbabdd83dc
Lighten the "More" button handler when checks are not necessary 2018-04-09 21:39:40 -04:00
Jérémie Astori 8d255fc331
Only bind preview "More" buttons on link previews 2018-04-09 21:39:40 -04:00
Jérémie Astori 1ccdeb015c
Trigger the correct event directly instead of resize when opening/closing a menu 2018-04-09 21:39:39 -04:00
Jérémie Astori 53a2101de3
Make sure preview "More" button computation does nothing when preview is collapsed 2018-04-09 21:39:39 -04:00
Jérémie Astori 5bff07f6f6
Fix handling preview More buttons on inactive channels 2018-04-09 21:39:38 -04:00
Jérémie Astori 527cac4c75
Debounce resize event to avoid performance bottleneck 2018-04-09 21:39:38 -04:00
Jérémie Astori 7355db94d6
Improve UI of previews
- Remove margins around thumbnails and images, increase radius, etc. for a fresher look overall
- Increase preview body contrast just enough to pass AA standards
- Add a `More`/`Less` button to expand previews that take more than one line. Button is added only when necessary
- Use a zoom-in cursor on hover for thumbnails
- Improve preview message errors
2018-04-09 21:39:38 -04:00
Pavel Djundik ff5a231ea0
Merge pull request #2339 from thelounge/greenkeeper/webpack-dev-server-3.1.3
Update webpack-dev-server to the latest version 🚀
2018-04-08 13:53:33 +03:00
Pavel Djundik 7cbc0dc047
Merge pull request #2340 from dgw/no-undefined-os-version
Prevent "undefined" OS version in session list
2018-04-08 13:53:14 +03:00
dgw da23d42692 Prevent "undefined" OS version in session list 2018-04-08 05:44:55 -05:00
greenkeeperio-bot 07ec00c33f chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-08 09:10:53 +00:00
greenkeeper[bot] e83079eec4 chore(package): update webpack-dev-server to version 3.1.3 2018-04-08 09:04:46 +00:00
Jérémie Astori d28a9a9253
Merge pull request #2338 from thelounge/greenkeeper/webpack-dev-server-3.1.2
Update webpack-dev-server to the latest version 🚀
2018-04-07 13:23:57 -04:00
greenkeeperio-bot 9380230614 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-07 13:54:28 +00:00
greenkeeper[bot] b230358553 chore(package): update webpack-dev-server to version 3.1.2 2018-04-07 13:49:18 +00:00
Pavel Djundik 6626fbcfbd
Merge pull request #2117 from thelounge/webpack4
Upgrade to webpack 4; tracking pr
2018-04-06 12:59:07 +03:00
Jérémie Astori bbb41a2b5b Fix yarn text:browser not loading any test 2018-04-06 12:52:53 +03:00
Pavel Djundik c28a5c25b9 Add css-loader 2018-04-06 12:52:53 +03:00
Jérémie Astori d6e6dab565 Fix a forgotten npm reference 2018-04-06 12:52:53 +03:00
Pavel Djundik 0030f68831 Update to webpack4 WIP 2018-04-06 12:52:52 +03:00
Pavel Djundik fe6ac3e954
Merge pull request #2335 from thelounge/astorije/sinon-4.5.0
Update sinon to the latest version
2018-04-06 10:49:19 +03:00
Jérémie Astori 4e8cc2e164
Update sinon to the latest version
No sure why Greenkeeper missed it but oh well.
2018-04-06 02:03:15 -04:00
Pavel Djundik e9123af089
Merge pull request #2331 from thelounge/xpaw/input-line-height
Fix line-height showing scrollbar on mobile
2018-04-04 16:49:00 +03:00
Pavel Djundik d4b9b6ed32 Fix line-height showing scrollbar on mobile 2018-04-04 12:40:42 +03:00
Jérémie Astori 62fb5524ae
Switch client to default theme when it is using a theme that has been removed 2018-04-02 23:51:59 -04:00
Jérémie Astori 4e5c924e5c
Add CLI messages to help users transition their themes 2018-04-02 23:51:58 -04:00
Jérémie Astori be591d016a
Rename Example theme 2018-04-02 23:51:57 -04:00
Jérémie Astori 7b13c6f076
Remove Crypto and Zenburn themes from the core codebase 2018-04-01 20:01:38 -04:00
Jérémie Astori 36a62fb365
Merge pull request #2321 from MaxLeiter/header-margin
Fix .container margins
2018-04-01 18:38:07 -04:00
Pavel Djundik b4b571b50f
Merge pull request #2323 from thelounge/greenkeeper/stylelint-9.2.0
Update stylelint to the latest version 🚀
2018-04-01 21:15:56 +03:00
greenkeeperio-bot 260c0dd538 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-04-01 10:45:37 +00:00
greenkeeper[bot] 6b263bf43d chore(package): update stylelint to version 9.2.0 2018-04-01 10:42:11 +00:00
creesch 63c84cd362 Don't use event delegation for sync button 2018-03-31 22:28:39 +02:00
Jérémie Astori 7591088982
Merge pull request #2290 from lol768/feature/join-alias-query-param
Add ?channels=x,y,z alias for ?join=x,y,z
2018-03-31 14:05:25 -04:00
Pavel Djundik e94301b122
Merge pull request #2320 from thelounge/greenkeeper/textcomplete-0.17.1
Update textcomplete to the latest version 🚀
2018-03-31 20:53:52 +03:00
Pavel Djundik f58aac6fb3
Merge pull request #2319 from thelounge/greenkeeper/moment-2.22.0
Update moment to the latest version 🚀
2018-03-31 20:53:44 +03:00
Max Leiter 27e4994d10 Fix .container margins 2018-03-31 01:43:27 -07:00
greenkeeperio-bot 946d01a61b chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-31 01:33:21 +00:00
greenkeeper[bot] 084ed153e3 chore(package): update textcomplete to version 0.17.1 2018-03-31 01:32:08 +00:00
greenkeeperio-bot d7f4a14bfe chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-30 22:44:25 +00:00
greenkeeper[bot] 46e7231bfa fix(package): update moment to version 2.22.0 2018-03-30 22:40:43 +00:00
Pavel Djundik 7a752081e7
Merge pull request #2314 from thelounge/astorije/fix-autocomplete-enter
Fix autocomplete selection when hitting Enter
2018-03-30 11:18:45 +03:00
Pavel Djundik 316e199aa4
Merge pull request #2312 from thelounge/revert-2296-astorije/fix-travis-node-9
Re-include latest Node.js v9 version in Travis build
2018-03-30 10:49:19 +03:00
creesch 95dc519019 Sync on both load and reconnect. 2018-03-30 09:49:02 +02:00
creesch 107749e91a Enable sync on empty localstorage 2018-03-30 09:46:59 +02:00
creesch e967859d5f Force sync button 2018-03-30 09:32:20 +02:00
Jérémie Astori 09a6c8b067
Fix autocomplete selection when hitting Enter 2018-03-29 22:04:08 -04:00
Jérémie Astori 153d9c6b2c
Merge pull request #2309 from thelounge/xpaw/example-padding
Remove left padding from sidebar in example theme
2018-03-29 19:50:01 -04:00
Jérémie Astori 205fed6992
Merge pull request #2311 from thelounge/greenkeeper/socket.io-client-2.1.0
Update socket.io-client to the latest version 🚀
2018-03-29 19:46:59 -04:00
Jérémie Astori 86474bd535
Revert "Exclude Node v9.9 from Travis build, for now" 2018-03-29 19:46:05 -04:00
greenkeeperio-bot 357e010f39
chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-29 19:38:58 -04:00
greenkeeper[bot] be85a7f224
chore(package): update socket.io-client to version 2.1.0 2018-03-29 19:38:29 -04:00
Jérémie Astori 5196c1ebad
Merge pull request #2310 from thelounge/greenkeeper/socket.io-2.1.0
Update socket.io to the latest version 🚀
2018-03-29 19:36:51 -04:00
greenkeeperio-bot 7054fe2bd2 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-29 23:10:31 +00:00
greenkeeper[bot] e936233ead fix(package): update socket.io to version 2.1.0 2018-03-29 23:08:40 +00:00
Pavel Djundik 8f838b80e7 Remove left padding from sidebar in example theme 2018-03-29 21:46:03 +03:00
Pavel Djundik 2e964d0a7e
Merge pull request #2270 from thelounge/xpaw/mask-image
Replace pseudo element gradient fade with mask-image
2018-03-29 21:29:54 +03:00
Jérémie Astori fe08547d6b
Merge pull request #2289 from lol768/master
Add auto-prepend behaviour for unprefixed channel names
2018-03-29 01:19:45 -04:00
Al McKinlay ce08201d13
Merge pull request #1878 from thelounge/yamanickill/refactor-context-menu
Pull context menu code out of lounge.js and make it more generic
2018-03-29 06:04:24 +01:00
Jérémie Astori faf8e525b3
Merge pull request #2303 from tilde-team/master
catch stderr from yarn subprocess, addresses #2301
2018-03-29 00:25:38 -04:00
Jérémie Astori 45bdfe205a
Merge pull request #2307 from thelounge/greenkeeper/istanbul-instrumenter-loader-3.0.1
Update istanbul-instrumenter-loader to the latest version 🚀
2018-03-29 00:18:11 -04:00
greenkeeperio-bot d34d11fbb3 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-28 17:28:34 +00:00
greenkeeper[bot] 1f86ace5d8 chore(package): update istanbul-instrumenter-loader to version 3.0.1 2018-03-28 17:23:32 +00:00
Ben Harris 56004ec338 catch stderr from yarn subprocess, addresses #2301 2018-03-28 12:27:51 -04:00
Jérémie Astori 12cdec3f2e
3.0.0-pre.5 2018-03-28 03:13:30 -04:00
Jérémie Astori ac4c857146
Add changelog entry for v3.0.0-pre.5 2018-03-28 03:13:11 -04:00
Pavel Djundik 27e715f4a4
Merge pull request #2302 from thelounge/greenkeeper/@fortawesome/fontawesome-free-webfonts-1.0.5
Update @fortawesome/fontawesome-free-webfonts to the latest version 🚀
2018-03-28 10:08:42 +03:00
Pavel Djundik c4be637ba8
Merge pull request #2305 from thelounge/astorije/fix-master
Fix bug preventing to click on channels/queries
2018-03-28 10:02:57 +03:00
Jérémie Astori 7d057a9ca7
Fix bug preventing to click on channels/queries
This bug is present both in channel list, #channel in messages, etc.
2018-03-27 19:28:20 -04:00
Jérémie Astori 3d04afa4f6
3.0.0-pre.4 2018-03-27 19:17:11 -04:00
Jérémie Astori 9aa6f3f590
Add changelog entry for v3.0.0-pre.4 2018-03-27 19:16:36 -04:00
greenkeeperio-bot cce29fe2c5 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-27 20:43:49 +00:00
greenkeeper[bot] 5005d7a1f1 chore(package): update @fortawesome/fontawesome-free-webfonts to version 1.0.5 2018-03-27 20:41:24 +00:00
Al McKinlay edba18375f
Merge pull request #2286 from thelounge/xpaw/input-history
Reimplement input history
2018-03-27 17:38:49 +01:00
Al McKinlay a0523b3427
Merge pull request #2298 from thelounge/xpaw/fix-2293
Do not close sidebar when collapsing networks
2018-03-27 17:29:15 +01:00
Pavel Djundik a2440e665f Do not close sidebar when collapsing networks
Fixes #2293
2018-03-27 12:07:19 +03:00
Pavel Djundik 3aea9d34e9 Reimplement input history 2018-03-26 11:23:10 +03:00
Pavel Djundik f856229141 Allow whitespace in topics again
Was removed in c051b70537
2018-03-26 11:22:52 +03:00
Pavel Djundik 8ce55af55d Overflow topics with fade instead of ellipsis 2018-03-26 11:22:52 +03:00
Pavel Djundik 23c969ad1b Replace pseudo element gradient fade with mask-image 2018-03-26 11:22:52 +03:00
Al McKinlay 1dc356a8f2 Pull context menu code out of lounge.js and make it more generic
Add separate call for divider in context menu factory
2018-03-26 09:08:43 +01:00
Pavel Djundik 2cfd0e1fe0
Merge pull request #2297 from thelounge/astorije/nick-fallbacks
Fix/Improve some nick fallbacks
2018-03-26 11:00:01 +03:00
Pavel Djundik 79ea700121
Merge pull request #2296 from thelounge/astorije/fix-travis-node-9
Exclude Node v9.9 from Travis build, for now
2018-03-26 10:26:59 +03:00
Jérémie Astori 5738642d44
Fix/Improve some nick fallbacks
- Rename a forgotten `lounge-user`
- Generate nick fallbacks when already in use by appending 0-9 instead of 10-98 (?!).
- Generate nick fallbacks when invalid similarly to our config default instead of random string. This is to make it less confusing when fallback gets used.
2018-03-26 03:00:46 -04:00
Jérémie Astori 0a48b28d83
Exclude Node v9.9 from Travis build, for now 2018-03-25 17:23:00 -04:00
Jérémie Astori fab237d373
Merge pull request #2292 from thelounge/xpaw/tests
Fix lint issue on master; increase timeout globally on CI
2018-03-25 17:11:15 -04:00
Pavel Djundik a222dc9237 Ensure sqlite tests are serialized 2018-03-25 16:00:48 +03:00
Adam Williams 25dee77600 Add auto-prepend behaviour for unprefixed channels
This change adds behaviour to automatically prefix channel names passed in via the "?join=x,y,z" query string/search parameter which do not appear to include an appropriate channel symbol.
2018-03-24 22:17:32 +00:00
Pavel Djundik 1ddc617b79 Fix lint issue 2018-03-24 22:53:02 +02:00
Jérémie Astori d8eed4d15e
Merge pull request #2282 from thelounge/astorije/accessible-nick-colors
Reduce lightness of low contrast nick colors to reach AA level of WCAG 2.0
2018-03-24 15:42:35 -04:00
Adam Williams 950bad1d7a Add ?channels=x,y,z alias for ?join=x,y,z
For backwards compat. with Iris and other systems.
2018-03-24 16:54:26 +00:00
Pavel Djundik 80c6e48b98
Merge pull request #2287 from thelounge/xpaw/accept
Send `Accept` header when fetching links
2018-03-24 16:58:00 +02:00
Jérémie Astori 13768a7d28
Merge pull request #2285 from thelounge/xpaw/consistent-as-needed
quote-props: consistent-as-needed
2018-03-24 02:29:13 -04:00
Jérémie Astori 0d9eb5d198
Reduce lightness of low contrast nick colors to reach AA level of WCAG 2.0, for Zenburn theme 2018-03-24 02:05:08 -04:00
Pavel Djundik beb2af73b7
Merge pull request #2284 from thelounge/xpaw/fix-2209
Hide autocompletion menu when input is submitted
2018-03-23 22:40:59 +03:00
Pavel Djundik ca96d09a23 Send Accept header
Closes #2277
2018-03-23 20:17:03 +02:00
Pavel Djundik f82edcd7e7 quote-props: consistent-as-needed 2018-03-23 16:15:59 +02:00
Pavel Djundik 3afc38efcb
Merge pull request #2275 from thelounge/xpaw/autocomplete-brackets
Autocomplete bracket and quote characters like in a modern IDE
2018-03-23 12:21:37 +03:00
Pavel Djundik 3886c2a82f Hide autocompletion menu when input is submitted
Fixes #2209
2018-03-23 12:20:53 +03:00
Pavel Djundik 18c82f2d06
Merge pull request #2283 from thelounge/greenkeeper/textcomplete-0.17.0
Update textcomplete to the latest version 🚀
2018-03-23 12:05:52 +03:00
Pavel Djundik 051f6c5a7f Autocomplete bracket and quote characters like in a modern IDE 2018-03-23 12:03:36 +03:00
greenkeeperio-bot 2e7f6d4b6a chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-23 06:56:56 +00:00
Jérémie Astori 51696ed813
Merge pull request #2280 from thelounge/greenkeeper/mocha-5.0.5
Update mocha to the latest version 🚀
2018-03-23 02:53:31 -04:00
greenkeeper[bot] 1672de266e chore(package): update textcomplete to version 0.17.0 2018-03-23 06:53:07 +00:00
Jérémie Astori 43be85cee9
Reduce lightness of low contrast nick colors to reach AA level of WCAG 2.0 2018-03-23 01:19:43 -04:00
greenkeeperio-bot ab74fa6e2c chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-23 04:33:56 +00:00
greenkeeper[bot] 5ebd6e313b chore(package): update mocha to version 5.0.5 2018-03-23 04:31:37 +00:00
Jérémie Astori de59dc7d9f
Merge pull request #2258 from thelounge/xpaw/fix-2257
Unfocus input on touch devices to close the keyboard
2018-03-22 21:39:00 -04:00
Al McKinlay 8194433372
Merge pull request #2274 from thelounge/issue-template
Create issue template
2018-03-22 16:33:54 +00:00
Pavel Djundik 819f6c5ad2
Merge pull request #2273 from thelounge/xpaw/oidentd-order
Fix order in oidentd file
2018-03-22 18:30:49 +02:00
Pavel Djundik 69c7b32c1d Create issue template
[skip ci]
2018-03-22 17:32:58 +02:00
Pavel Djundik 95047ba695
Fix order in oidentd file
oident'd parser expects exact order and the man page is written incorrectly.
2018-03-22 13:44:43 +02:00
Pavel Djundik 6f47a78afd Unfocus input on touch devices to close the keyboard
Fixes #2257
2018-03-22 12:47:15 +02:00
Pavel Djundik c8b5165618
Merge pull request #2268 from thelounge/xpaw/self-condensed
Do not condense actions that are performed or related to the user
2018-03-22 11:41:23 +02:00
Jérémie Astori 39a6ff8a2b
Merge pull request #2271 from thelounge/greenkeeper/eslint-4.19.1
Update eslint to the latest version 🚀
2018-03-22 01:30:09 -04:00
greenkeeperio-bot bf77cb57fd chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-22 02:46:35 +00:00
greenkeeper[bot] 31e97fdd0e chore(package): update eslint to version 4.19.1 2018-03-22 02:43:38 +00:00
Jérémie Astori 96ea3accdf
Merge pull request #2269 from thelounge/greenkeeper/sinon-4.4.7
Update sinon to the latest version 🚀
2018-03-21 20:28:15 -04:00
greenkeeper[bot] a0983ac2da
chore(package): update sinon to version 4.4.8 2018-03-21 20:21:27 -04:00
Pavel Djundik 0be544676b Do not condense actions that are performed or related to the user 2018-03-21 14:48:07 +02:00
Jérémie Astori dbe81f1e59
Merge pull request #2254 from thelounge/astorije/sign-out-settings
Empty local storage on sign out and move the sign out button to the settings
2018-03-20 21:06:44 -04:00
Jérémie Astori e37ae0c559
Merge pull request #2265 from thelounge/greenkeeper/primer-tooltips-1.5.3
Update primer-tooltips to the latest version 🚀
2018-03-20 19:44:04 -04:00
Jérémie Astori bb4740ba76
Merge pull request #2259 from thelounge/xpaw/keybind-scroll
Scroll channel list only when using keybinds
2018-03-20 19:40:14 -04:00
Pavel Djundik 528d2b5fb7
Scroll channel list only when using keybinds 2018-03-20 19:27:07 -04:00
Jérémie Astori d7d8a51332
Merge pull request #2262 from realies/master
stop propagation, prevent input history call when alt is involved
2018-03-20 19:23:22 -04:00
Jérémie Astori f6f8cd7a29
Merge pull request #2263 from thelounge/xpaw/hotkeys-input
Bind formatting hotkeys on input element
2018-03-20 19:22:31 -04:00
greenkeeperio-bot 69cc8b3c89 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-20 20:01:00 +00:00
greenkeeper[bot] 810a6b8125 fix(package): update primer-tooltips to version 1.5.3 2018-03-20 19:58:33 +00:00
realies 72af0a4947 stop propagation, prevent input history call when alt is involved 2018-03-20 21:00:03 +02:00
Pavel Djundik 3c1db1d7d6 Bind formatting hotkeys on input element
And bind only one event for all of the hotkeys
2018-03-20 20:57:19 +02:00
Pavel Djundik 453eab3a12
Merge pull request #2252 from thelounge/astorije/coverage-windows
Fix `yarn coverage` script on Windows
2018-03-20 09:45:14 +02:00
Pavel Djundik e4e570381c
Merge pull request #2255 from MaxLeiter/ctcp_abbr
Fix typo in CTCP request
2018-03-20 09:42:19 +02:00
Max Leiter 817141a781 Fix typo 2018-03-20 13:35:54 +07:00
Jérémie Astori 97a9f7c8ff
Merge pull request #2253 from thelounge/greenkeeper/commander-2.15.1
Update commander to the latest version 🚀
2018-03-20 02:08:48 -04:00
Jérémie Astori c86ea9463d
Use Sinon to stub the logger instead of manual stubbing 2018-03-20 01:54:04 -04:00
Jérémie Astori d1548572d4
Move the sign out button to the settings and empty local storage on sign out
This change improves privacy/security by ensuring all local storage (which includes settings, etc.) is destroyed on sign out or when revoking a remote session. Because signing out is now more "risky", the button has been moved to the settings along with other existing sessions.

This commit:

- Removes the power/sign-out icon from the sidebar footer (gives additional room for when the admin panel gets added)
- Adds a "Sign out" button next to the current session info in the settings session list
- Renames "Disconnect" buttons into "Revoke" to better clarify the intent (I will admit that I borrowed the wording from Telegram)
- Fixes incorrect `localStorage.remove` method
- Uses Sinon.js to mock wrappers for `window.localStorage` and `window.location` (does not mock those themselves, in the "Do not mock what you do not own" fashion, mock our layer instead). I expect we will be able to test a bit more from the UI with this. A good next candidate will be the `mockLogger` things.
2018-03-20 01:52:22 -04:00
greenkeeperio-bot 5804af2082 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-20 01:56:41 +00:00
greenkeeper[bot] 85b7c01c2d fix(package): update commander to version 2.15.1 2018-03-20 01:52:14 +00:00
Jérémie Astori 22725968e8
Fix yarn coverage script on Windows 2018-03-19 20:01:25 -04:00
Pavel Djundik 5d6ea4f32e
Merge pull request #2251 from thelounge/xpaw/canplay
Render video and audio previews only after canplay event fires
2018-03-19 20:08:14 +02:00
Pavel Djundik 7554600dd4
Merge pull request #2221 from thelounge/astorije/shortcut-help
Improve readability and styling of shortcut keys in the Help section
2018-03-19 20:00:37 +02:00
Pavel Djundik 77a98bfd14 Render video and audio previews only after canplay event fires 2018-03-19 12:47:36 +02:00
Jérémie Astori 883b6dbef2
Improve readability and styling of shortcut keys in the Help section 2018-03-19 01:45:48 -04:00
Jérémie Astori 8ecacc9978
Merge pull request #2186 from MaxLeiter/emoji-tip
Improve accessibility for emoji
2018-03-18 15:50:57 -04:00
Pavel Djundik 430d48434c
Merge pull request #2248 from MaxLeiter/underline-strikethrough
Support strikethrough and underline at same time
2018-03-18 21:49:16 +02:00
Max Leiter 9053a0bb6a Strikethrough and underline support 2018-03-18 12:37:53 -07:00
Max Leiter 01753a814c Improve accessibility for emoji 2018-03-18 12:13:48 -07:00
Al McKinlay e43c591890
Merge pull request #2195 from thelounge/mcinkay/collapse-state
Save collapsed state to localstorage
2018-03-18 16:41:00 +00:00
Al McKinlay 6195e5d8f6 Save collapsed state to localstorage 2018-03-18 16:12:10 +00:00
Pavel Djundik 039c12266a
Merge pull request #2246 from thelounge/astorije/sidebar-overlay
Add a semi-opaque overlay when channel list is open on mobile
2018-03-18 18:00:23 +02:00
Jérémie Astori 1632ae27d0
Merge pull request #2247 from thelounge/xpaw/failed-login-log
Print failed login attempts to console
2018-03-18 11:14:00 -04:00
Jérémie Astori 8d72cb1416
Remove transition on box-shadow as it affects performance (and is not _that_ noticeable) 2018-03-18 03:00:49 -04:00
Jérémie Astori 8100f98d6b
Handle scrolls 0-45° as horizontal (opening the menu); 45-90° as vertical (chat scroll) 2018-03-18 01:18:43 -04:00
Jérémie Astori 6828cd1075
Fix transitions of sidebar overlay 2018-03-17 21:08:08 -04:00
Pavel Djundik 84f460d9b8 Make slideout work anywhere on the screen
Also makes touchmove event passive
2018-03-17 11:40:15 +02:00
Pavel Djundik 5bb0b198e6 Disable scrolling through sidebar overlay 2018-03-17 11:35:33 +02:00
Pavel Djundik ed4b6e85ac Print failed login attempts to console 2018-03-17 10:09:59 +02:00
Jérémie Astori 1e8c0547ec
Add a semi-opaque overlay when channel list is open on mobile 2018-03-17 03:13:43 -04:00
Jérémie Astori cf49a3427e
Ensure links in chats cannot be opened by accident when closing the channel list 2018-03-17 03:12:30 -04:00
Jérémie Astori 4c0479fe3d
Merge pull request #2244 from thelounge/greenkeeper/eslint-4.19.0
Update eslint to the latest version 🚀
2018-03-17 00:03:23 -04:00
Jérémie Astori c395e74e64
Merge pull request #2235 from thelounge/xpaw/store-sidebar-visibility
Store visibility status of sidebar menus
2018-03-16 23:57:24 -04:00
Jérémie Astori 4c62b0d50c
Merge pull request #2225 from thelounge/mcinkay/2224-collapse-select-lobby
Select lobby of network when collapsing network
2018-03-16 21:49:16 -04:00
greenkeeperio-bot 5339f529aa chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-17 00:04:33 +00:00
greenkeeper[bot] 7fd200db63 chore(package): update eslint to version 4.19.0 2018-03-17 00:02:12 +00:00
Jérémie Astori 97973d47f2
Merge pull request #2243 from birkof/master
Incorrect spelling
2018-03-16 19:17:46 -04:00
Daniel STANCU bf4d55564c Incorrect spelling 2018-03-17 00:44:19 +02:00
Pavel Djundik 0858938eea
Merge pull request #2242 from thelounge/xpaw/fix-master
Keep input reference as jquery object
2018-03-16 18:56:34 +02:00
Pavel Djundik d3d4dce54d
Merge pull request #2241 from thelounge/stop-slacking-greenkeeper
Update express to 4.16.3
2018-03-16 18:37:49 +02:00
Pavel Djundik fdd321311e Keep input reference as jquery object 2018-03-16 18:37:12 +02:00
Pavel Djundik e987917c64
Merge pull request #2215 from thelounge/xpaw/out-of-focus-typing
Do not aggressively focus input when clicking anywhere and handle typing out of focus
2018-03-16 18:25:38 +02:00
Pavel Djundik 60a8f61040 Update express to 4.16.3 2018-03-16 18:18:30 +02:00
Pavel Djundik b6cde34a08 Automatically focus input when typing into nothing 2018-03-16 18:11:02 +02:00
Pavel Djundik 44b9597981 Do not handle modifier hotkeys if input is not focused 2018-03-16 18:07:19 +02:00
Pavel Djundik 7267f89377 Do not aggressively focus input when clicking anywhere 2018-03-16 18:07:19 +02:00
Jérémie Astori 9164f65693
Merge pull request #2238 from thelounge/greenkeeper/sqlite3-4.0.0
Update sqlite3 to the latest version 🚀
2018-03-16 03:03:28 -04:00
Pavel Djundik 103c3395dd Store visibility status of sidebar menus
Fixes #51
Closes #1606
2018-03-16 09:03:16 +02:00
Jérémie Astori 640d8df487
Merge pull request #2236 from thelounge/xpaw/fix-2214
Rework how unread marker is moved when status messages are hidden
2018-03-16 02:15:43 -04:00
Jérémie Astori 49f1a01dba
Merge pull request #2206 from ESWAT/keybind-cycle-lobbies
Add keybinds for cycling through networks/lobbies
2018-03-16 01:37:22 -04:00
Jérémie Astori 67f7975ced
Merge pull request #2237 from thelounge/xpaw/ident-hexip
Send hexip in ident responses
2018-03-15 22:06:48 -04:00
greenkeeperio-bot 5bff3abd52 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-15 15:56:58 +00:00
Pavel Djundik 3de3d05b8a Rework how unread marker is moved when status messages are hidden
Fixes #2214
2018-03-15 17:52:04 +02:00
greenkeeper[bot] 916ebcb1be fix(package): update sqlite3 to version 4.0.0 2018-03-15 15:51:56 +00:00
Philip Karpiak c0f430e509 Add keybinds for cycling through networks/lobbies 2018-03-15 10:10:20 -04:00
Pavel Djundik df04d697b1 Send hexip in ident responses 2018-03-15 15:30:37 +02:00
Al McKinlay 1fbdb170e4 Select lobby of network when collapsing network
Fixes #2224
2018-03-15 08:32:21 +00:00
Jérémie Astori cdb810ebc5
Merge pull request #2228 from thelounge/greenkeeper/stylelint-9.1.3
Update stylelint to the latest version 🚀
2018-03-15 01:18:07 -04:00
Jérémie Astori 3873c4def1
Merge pull request #2073 from thelounge/astorije/eslint-object-shorthand
Enforce object literal shorthand syntax with ESLint
2018-03-15 00:29:27 -04:00
Jérémie Astori 00bca229f0
Enforce object literal shorthand syntax with ESLint 2018-03-15 00:22:09 -04:00
greenkeeperio-bot 2c499c9f6d chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-14 19:27:41 +00:00
greenkeeper[bot] b3f48cf926 chore(package): update stylelint to version 9.1.3 2018-03-14 19:24:13 +00:00
Pavel Djundik f07a6db7ab
Merge pull request #2199 from thelounge/astorije/sign-in-logo
Add logo to the sign in page
2018-03-14 10:57:41 +02:00
Pavel Djundik 9414989fc1
Merge pull request #2212 from thelounge/xpaw/hide-chan-list
Allow hiding channel list on desktop
2018-03-14 10:54:09 +02:00
Jérémie Astori a7e928ed4f
Merge pull request #2222 from thelounge/xpaw/sqlite-close
Do not try to write anything to sqlite after its closed
2018-03-14 03:07:01 -04:00
Pavel Djundik 8a7408097d
Merge pull request #2210 from thelounge/xpaw/undate
Use undate library to handle modifier keys
2018-03-14 09:05:39 +02:00
Pavel Djundik 0af3f10997
Do not try to write anything to sqlite after its closed 2018-03-14 08:45:52 +02:00
Jérémie Astori ed67dc5de5
Add logo to the sign in page 2018-03-13 23:05:11 -04:00
Jérémie Astori 74ccef02bf
Merge pull request #2220 from thelounge/greenkeeper/stylelint-9.1.2
Update stylelint to the latest version 🚀
2018-03-13 19:14:59 -04:00
Jérémie Astori 88b7f5bc2f
Merge pull request #2217 from thelounge/xpaw/fix-url-caret
Fix some URLs not being sent as-is to the client
2018-03-13 19:11:43 -04:00
greenkeeperio-bot 52fd311016 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-13 23:04:12 +00:00
greenkeeper[bot] 70128e22b9 chore(package): update stylelint to version 9.1.2 2018-03-13 22:59:53 +00:00
Pavel Djundik 351a203acd Fix some URLs not being sent as-is to the client 2018-03-13 22:08:19 +02:00
Pavel Djundik 120953773e
Merge pull request #2213 from thelounge/xpaw/theme-repaint
Do not repaint theme on page load
2018-03-13 18:26:52 +02:00
Pavel Djundik a56ad36a42 Do not repaint theme on page load 2018-03-13 17:38:01 +02:00
Pavel Djundik 74220d8a24 Allow hiding channel list on desktop
Fixes #17
2018-03-13 17:00:02 +02:00
Pavel Djundik 7e2edc2c9f Use undate library to handle modifier keys 2018-03-13 12:43:48 +02:00
Pavel Djundik 0260bcbf3b
Merge pull request #2208 from thelounge/greenkeeper/nyc-11.6.0
Update nyc to the latest version 🚀
2018-03-13 09:38:49 +02:00
greenkeeperio-bot 44d6c1cf6d chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-13 07:07:49 +00:00
greenkeeper[bot] 4b239a9c9c chore(package): update nyc to version 11.6.0 2018-03-13 07:04:12 +00:00
Jérémie Astori 288aaac465
Merge pull request #2152 from thelounge/yamanickill/sort-channels-on-join
Insert channel/user into channel list at alphabetically sorted point, not just the end
2018-03-13 00:37:59 -04:00
Pavel Djundik 0dc76e773f
Merge pull request #2185 from thelounge/xpaw/flexbox-viewport
Convert the entire viewport to use flexbox
2018-03-12 23:07:48 +02:00
Pavel Djundik 6a6789a3c7
Merge pull request #2202 from thelounge/greenkeeper/request-2.84.0
Update request to the latest version 🚀
2018-03-12 19:28:57 +02:00
Pavel Djundik be69f88ef6
Merge pull request #2205 from thelounge/xpaw/fa5-join
Fix join and part icons
2018-03-12 17:45:12 +02:00
Pavel Djundik 43fc531a6f Fix join and part icons 2018-03-12 17:37:57 +02:00
greenkeeper[bot] e345bc8ac8 fix(package): update request to version 2.85.0 2018-03-12 14:44:27 +02:00
Al McKinlay 5ce67ba093 Insert channel/user into channel list at alphabetically sorted point, not just the end
Don't sort queries/users after special chans


Set all users in tests to be of type query


Add test for not inserting infront of lobby


Break after finding the index, otherwise it always adds it to the end


Add checking for lobby in first test


Fix off-by-one error on the frontend


Fix utterly idiotic issue adding a duplicate of the channel we are on rather than the new user when we query


Check that we always insert before first special chan
2018-03-12 12:42:59 +00:00
Al McKinlay 191f8429c3
Merge pull request #2194 from thelounge/astorije/font-awesome-5
Upgrade to Font Awesome 5
2018-03-12 09:19:07 +00:00
Jérémie Astori e9e440a625
Merge pull request #2201 from thelounge/astorije/rm-mailto
Remove `mailto:` part of security email address
2018-03-12 04:05:08 -04:00
Jérémie Astori f2e5bd1b3c
Remove mailto: part of security email address
This actually displays `send us your report at mailto:security@thelounge.chat.`. Also, it's optional and Markdown renderer adds it when rendering to a `<a>` link.
2018-03-12 03:54:10 -04:00
Jérémie Astori da5a876f93
Use warning icon for insecure connections 2018-03-11 15:57:35 -04:00
Jérémie Astori c28fda6b28
Switch to Font Awesome 5 2018-03-11 15:57:35 -04:00
Jérémie Astori 35e5ff2fc7
Merge pull request #2196 from thelounge/astorije/rm-config-cli
Remove `thelounge config` from the CLI
2018-03-11 15:54:30 -04:00
Jérémie Astori 2954afd77d
Remove thelounge config from the CLI 2018-03-11 14:36:57 -04:00
Al McKinlay ab2bb2881f
Merge pull request #1860 from thelounge/yamanickill/advanced
Add advanced toggle and hide certain settings by default
2018-03-11 18:14:23 +00:00
Al McKinlay 1a9ad1a7e3 Add advanced toggle and hide certain settings by default 2018-03-11 17:47:47 +00:00
Jérémie Astori bd619220d0
Merge pull request #2190 from thelounge/xpaw/fix-2178
Close sqlite database when user quits
2018-03-10 17:34:26 -05:00
Pavel Djundik b01e01bc19 Convert most of the layout to flexbox, make sidebar an overlay 2018-03-11 00:23:43 +02:00
Pavel Djundik a15e922e27 Close sqlite database when user quits
Fixes #2178
2018-03-11 00:21:47 +02:00
Jérémie Astori 6857c5dd08
Merge pull request #2192 from creesch/settingSync
Don't access "Notification" if the browser does not support it
2018-03-10 15:24:54 -05:00
creesch 6d4fb93e6b Don't access "Notification" if the browser does not support it. 2018-03-10 20:21:30 +01:00
Jérémie Astori 38b8cdbb5e
Merge pull request #2189 from thelounge/xpaw/fix-2176
Allow overriding arrays in config, warn about incorrect types
2018-03-10 13:36:31 -05:00
Jérémie Astori f2fb27f6a4
Merge pull request #2188 from thelounge/xpaw/no-blind-playback-cap
Only request znc.in/playback if sqlite logging is enabled
2018-03-10 13:31:08 -05:00
Pavel Djundik ddb1a280cb Allow overriding arrays in config, warn about incorrect types
Fixes #2176
2018-03-10 13:59:24 +02:00
Pavel Djundik 5146686814 Only request znc.in/playback if sqlite logging is enabled 2018-03-10 13:25:56 +02:00
Jérémie Astori 1bf8c1578d
Merge pull request #2182 from thelounge/xpaw/no-contain
Remove `contain` as it's causing rendering issues
2018-03-09 18:59:07 -05:00
Jérémie Astori 50a9ef5b3a
Merge pull request #2183 from thelounge/greenkeeper/copy-webpack-plugin-4.5.1
Update copy-webpack-plugin to the latest version 🚀
2018-03-09 18:58:21 -05:00
greenkeeperio-bot 01857a50ee chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-09 13:31:07 +00:00
greenkeeper[bot] 71def026c9 chore(package): update copy-webpack-plugin to version 4.5.1 2018-03-09 13:27:11 +00:00
Pavel Djundik c86c4f0362
Remove contain as it's causing rendering issues 2018-03-09 13:01:02 +02:00
Pavel Djundik 08f2ebd373
Merge pull request #2180 from thelounge/xpaw/ci
Try to fix sqlite test failing on CI randomly
2018-03-09 12:43:55 +02:00
Pavel Djundik 20c9df39b1
Merge pull request #2181 from thelounge/xpaw/client-away-crash
Do not crash when awayMessage is set but IRC connection does not exist
2018-03-09 12:41:36 +02:00
Pavel Djundik b2eb11b5ef
Merge pull request #1851 from creesch/settingSync
Optional syncing of client settings.
2018-03-09 12:37:17 +02:00
Pavel Djundik b5b0ebe00d
Do not crash when awayMessage is set but IRC connection does not 2018-03-09 12:33:24 +02:00
Pavel Djundik 49046be361 Try to fix sqlite test failing on CI randomly 2018-03-09 11:41:30 +02:00
creesch 27393bb804 Offer optional syncing of client settings
Write synced settings to localstorage.

move settings and webpush init to init.js

stub for server sending clientsettings

get very basic setting sync working

Also update client.config.clientSettings on settings:set

Full setting sync with mandatory and excluded sync options

Actually check client preferences.

Further settings restructuring.

Refactor options.js make storage act in a sane manner.

Add new parameter to applySetting

Do not sync if the setting is stored as a result of syncing

General clean up, commenting and restructing.

sync from server on checking "sync"

offer initial sync

Better deal with DOM being ready and instances of inital sync showing

Don't try to disable autocompletion when not enabled.

Restructure option.js to seperate functions from settings.

More consistency in naming options vs settings

Switch processSetting and applySetting names reflecting their functionality better.

move options init back to configuration.

simplify how settings are synced around.

move options init after template building.

Remove unneeded hasOwnProperty

Use global for #theme and only apply theme in applySetting

Return when no server side clientsettings excist.

Autocompletion options to options.settings

Make nocss param in url work again.

Actually filter out empty highlight values.

Clarify alwaysSync comment.

Remove manual step for initial sync

change attr to prop in options.js

replace unbind with off in autocompletion.js

Do not sync settings when the lounge is set to public.

fix eslint error

Fix merge error

Do not show sync warning after page refresh when sync is enabled

Move setting sync label in actual label.

Improve server setting sync handling performance and failure potential.

Don't give impression that the desktop notificiation is off when the browser permission is denied.

Refine showing and hiding of notification warnings.

rename all setting socket events to singular setting.

add experimental note and icon to settingsync.

fix css linting error
2018-03-09 10:36:29 +01:00
Pavel Djundik 218e06fbd4
Merge pull request #2179 from thelounge/xpaw/push-colon
Do not include colon in push message for actions
2018-03-09 11:22:01 +02:00
Pavel Djundik 167101c3aa Do not include colon in push message for actions 2018-03-09 11:06:19 +02:00
Pavel Djundik d66d5dc144
Merge pull request #2177 from thelounge/xpaw/no-horizontal-scroll
Always hide horizontal overflow in chat
2018-03-09 10:09:46 +02:00
Pavel Djundik 653b46e2f4
Always hide horizontal overflow in chat 2018-03-09 09:31:58 +02:00
Pavel Djundik 5aa9d7e1dc
Merge pull request #1839 from thelounge/sqlite
Add sqlite logging and reloading messages
2018-03-09 09:06:25 +02:00
Jérémie Astori fc7e8339b7
3.0.0-pre.3 2018-03-08 21:27:05 -05:00
Jérémie Astori 047c4d0a98
Add changelog entry for v3.0.0-pre.3 2018-03-08 21:27:00 -05:00
Jérémie Astori f3c10bdd42
Merge pull request #2175 from thelounge/astorije/fix-tests
Ignore order of preview results in unicode link tests
2018-03-08 21:22:29 -05:00
Jérémie Astori 5e6e27d73f
Ignore order of preview results in unicode link tests 2018-03-08 21:01:57 -05:00
Jérémie Astori 4faf669348
Merge pull request #2169 from thelounge/greenkeeper/commander-2.15.0
Update commander to the latest version 🚀
2018-03-08 20:12:21 -05:00
Jérémie Astori f105a11cd4
Merge pull request #2166 from dgw/2062-scroll-to-new-channels
Scroll to joined/activated channel
2018-03-08 19:59:05 -05:00
Jérémie Astori c816bc9834
Merge pull request #2172 from williamboman/fix/stock-themes-user-hover
Fix background color when hovering users in user list (darker themes)
2018-03-08 19:39:41 -05:00
Jérémie Astori 7cad5063f2
Fix userlist search background/color in darker themes 2018-03-08 19:28:20 -05:00
William Boman 8d4475ff84
client/themes: fix background color when hovering users in the user list 2018-03-08 19:21:44 -05:00
Jérémie Astori b8531e6070
Merge pull request #2171 from thelounge/xpaw/fix-unicode-urls
Normalize unicode URLs in link prefetcher
2018-03-08 19:06:37 -05:00
Jérémie Astori d0ac101b0d
Merge pull request #2170 from thelounge/xpaw/optimize-notified
Optimized notification dot state
2018-03-08 19:04:51 -05:00
Pavel Djundik dfc4cad712 Add test coverage for sqlite plugin 2018-03-08 20:23:29 +02:00
Pavel Djundik 8f59ca1bec Add support for znc.in/playback
Fixes #1768
2018-03-08 20:23:29 +02:00
Pavel Djundik 941849eaa8 Add message indexing 2018-03-08 20:23:29 +02:00
Pavel Djundik 731b29c059 Generate uuid per network 2018-03-08 20:23:29 +02:00
Pavel Djundik f475cc39ef Normalize unicode URLs in link prefetcher
Fixes #1644
2018-03-08 19:43:39 +02:00
dgw e5a6417a82 Scroll to newly joined/activated channels
Add a new utility function for scrolling elements into view with the
same, consistent options, and use it for both the new channel scrolling
behavior and the existing userlist scroll code.

Implements & resolves #2062
2018-03-08 10:30:07 -06:00
Pavel Djundik 0fb462c88e Optimized notification dot state 2018-03-08 15:46:05 +02:00
greenkeeperio-bot 8dcdfbdffa chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-08 08:16:16 +00:00
greenkeeper[bot] 8d6b3fa335 fix(package): update commander to version 2.15.0 2018-03-08 08:13:32 +00:00
Pavel Djundik d1648823c3
Merge pull request #2149 from thelounge/xpaw/sidebar-flex
Cleanup sidebar to use flexbox
2018-03-08 09:04:11 +02:00
Pavel Djundik 6fdd6d4f8e
Merge pull request #2161 from realies/patch-4
Add install command support for package version
2018-03-08 08:57:39 +02:00
Pavel Djundik 884984f9b4 Cleanup sidebar to use flexbox 2018-03-08 08:50:04 +02:00
Pavel Djundik 73755ce973 Remove .chanlist wrapper
Added in 04046719c1, but it's not necessary
2018-03-08 08:50:04 +02:00
Jérémie Astori 589d7a9811
Merge pull request #1838 from thelounge/xpaw/ogp-media
Try to find og:video and og:audio on html pages
2018-03-07 19:22:30 -05:00
Jérémie Astori 4a8aae1f1a
Merge pull request #2168 from thelounge/greenkeeper/mocha-5.0.4
Update mocha to the latest version 🚀
2018-03-07 19:11:13 -05:00
greenkeeperio-bot 68adda5821 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-07 21:56:41 +00:00
greenkeeper[bot] d4a068e2de chore(package): update mocha to version 5.0.4 2018-03-07 21:53:39 +00:00
realies a941fe97a6 Add install command support for package version 2018-03-07 19:59:03 +02:00
Pavel Djundik 58d9490c2a Try to find og:video and og:audio on html pages 2018-03-07 12:53:56 +02:00
Pavel Djundik fe51c6d7e7 Move video size to css 2018-03-07 12:53:28 +02:00
Pavel Djundik 20415a2edb
Merge pull request #2165 from thelounge/greenkeeper/mocha-5.0.3
Update mocha to the latest version 🚀
2018-03-07 12:01:34 +02:00
greenkeeperio-bot 2506feb1ea chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-07 09:23:17 +00:00
greenkeeper[bot] 5c7f34bd48 chore(package): update mocha to version 5.0.3 2018-03-07 09:19:02 +00:00
Pavel Djundik d5c9fb5536
Merge pull request #2158 from thelounge/xpaw/slideout
Do not listen to touch events until client is initialized
2018-03-07 10:13:50 +02:00
Pavel Djundik bb066ecb02 Do not listen to touch events until client is initialized
Fixes #2148
2018-03-07 10:02:02 +02:00
Pavel Djundik 6c6168e80a
Merge pull request #2164 from thelounge/xpaw/remove-maxlisteners
Remove setMaxListeners
2018-03-07 09:19:04 +02:00
Pavel Djundik c63c0f2ec8
Merge pull request #2163 from thelounge/xpaw/fix-2162
Apply ECDH curve fix only on affected version
2018-03-07 09:16:50 +02:00
Pavel Djundik 6fa48d3acf Remove setMaxListeners
Reverts 2cee0ea6ef as this no longer causes the EventEmitter warning due to `maxRedirects` being set to 5 on our end.

Ref: https://github.com/request/request/issues/311#issuecomment-153507416
2018-03-07 09:13:06 +02:00
Pavel Djundik 827310a645 Apply ECDH curve fix only on affected version
Fixes #2162
2018-03-07 08:44:22 +02:00
Jérémie Astori dd3d8f8fb3
Merge pull request #2156 from thelounge/xpaw/chalk
Update chalk to the latest version
2018-03-06 19:56:41 -05:00
Jérémie Astori c3ed4ebc5e
Merge pull request #2159 from thelounge/xpaw/ecdh-auto-curves
Fix default ecdh curve for better compatibility
2018-03-06 19:53:11 -05:00
Jérémie Astori 6dbc6eb842
Merge pull request #2160 from thelounge/xpaw/flexbugs
Fix chat and userlist not scrolling
2018-03-06 19:42:15 -05:00
Pavel Djundik 8b417fe97a Fix chat and userlist not scrolling 2018-03-06 20:21:00 +02:00
Pavel Djundik 85efebc6be
Merge pull request #2150 from thelounge/xpaw/chat-flexbox
Cleanup chat/userlist to use flexbox, fix a couple of bugs
2018-03-06 16:23:16 +02:00
Pavel Djundik 501730f2ca Fix default ecdh curve for better compatibility 2018-03-06 15:11:42 +02:00
Pavel Djundik 4551c10a5c
Merge pull request #2154 from thelounge/xpaw/rejectUnauthorized-v2
Fix rejectUnauthorized
2018-03-06 12:51:56 +02:00
Pavel Djundik 9188943261 Fix rejectUnauthorized 2018-03-06 11:42:06 +02:00
Pavel Djundik 11eedc3ea1 Update chalk and lock file to latest version 2018-03-06 10:46:52 +02:00
Jérémie Astori e8c64b084e
Merge pull request #2155 from thelounge/greenkeeper/mocha-5.0.2
Update mocha to the latest version 🚀
2018-03-06 00:49:21 -05:00
greenkeeperio-bot 9f503b6de9 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-06 05:08:51 +00:00
greenkeeper[bot] 97ed29e1dd chore(package): update mocha to version 5.0.2 2018-03-06 05:06:03 +00:00
Pavel Djundik e719e4ff81 Cleanup chat/userlist to use flexbox, fix a couple of bugs 2018-03-05 18:17:13 +02:00
Jérémie Astori cbf82a1bc7
Merge pull request #2075 from thelounge/xpaw/rejectUnauthorized
Allow setting `rejectUnauthorized` per network
2018-03-04 18:13:16 -05:00
Pavel Djundik eab823ba66 Allow setting rejectUnauthorized per network 2018-03-04 12:45:48 +02:00
Pavel Djundik 68cc9a2e28
Merge pull request #2143 from thelounge/xpaw/fix-2128
Do not crash when user file can not be read or written
2018-03-03 23:03:57 +02:00
Al McKinlay 04046719c1
Merge pull request #1867 from thelounge/yamanickill/867-collapsible-network
Add support for collapsing networks
2018-03-03 20:01:33 +00:00
Alistair McKinlay 894d6f162d
Hide collapse button if no channels 2018-03-03 14:51:06 -05:00
Pavel Djundik 4b7a53c5e1 Do not rethrow exception if user file failed to write 2018-03-03 21:46:14 +02:00
Pavel Djundik 6b5f6e3e79 Do not crash when user file can not be read
Fixes #2128
Fixes #447
2018-03-03 21:46:14 +02:00
Pavel Djundik e0b15f18e1
Merge pull request #1668 from thelounge/xpaw/center-loading
Center loading screen and add logo
2018-03-03 10:03:22 +02:00
Pavel Djundik 276266e24f Center loading screen 2018-03-03 09:45:24 +02:00
Jérémie Astori 9107f9e351
Merge pull request #2145 from thelounge/xpaw/chalk
Replace colors.js with chalk
2018-03-03 02:42:04 -05:00
Jérémie Astori 6aa5ab160d
Merge pull request #2147 from thelounge/greenkeeper/moment-2.21.0
Update moment to the latest version 🚀
2018-03-03 02:39:19 -05:00
Jérémie Astori 8deb056ecf
Merge pull request #1842 from thelounge/astorije/userlist-up-down
Move the user list client code to its own file and make it possible to navigate with keyboard
2018-03-03 02:32:09 -05:00
Jérémie Astori f909e096bc
3.0.0-pre.2 2018-03-03 00:49:56 -05:00
Jérémie Astori f6bf4a1c94
Add changelog entry for v3.0.0-pre.2 2018-03-03 00:49:38 -05:00
Jérémie Astori f9f35fa498
Merge pull request #2144 from thelounge/xpaw/warn-config-folder
Warn about old config folder
2018-03-03 00:23:38 -05:00
Jérémie Astori 5f0fcf5f41
Merge pull request #2146 from thelounge/greenkeeper/eslint-4.18.2
Update eslint to the latest version 🚀
2018-03-02 22:00:12 -05:00
Jérémie Astori 92bd4ed083
Merge pull request #2142 from thelounge/xpaw/fix-2141
Set channel state to joined when channel already exists
2018-03-02 21:55:00 -05:00
greenkeeperio-bot 5bca4b7323 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-03 01:21:30 +00:00
greenkeeper[bot] f816a3972f fix(package): update moment to version 2.21.0 2018-03-03 01:17:08 +00:00
greenkeeperio-bot 0d02f49b9b chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-02 22:44:35 +00:00
greenkeeper[bot] 8e6be8a4d4 chore(package): update eslint to version 4.18.2 2018-03-02 22:42:12 +00:00
Pavel Djundik fee81e78e1 Replace colors.js with chalk 2018-03-02 20:28:54 +02:00
Pavel Djundik 59174db7e5
Merge pull request #2140 from thelounge/xpaw/line-height
Bring back line-height on messages
2018-03-02 20:20:41 +02:00
Pavel Djundik eaf8c35f40 Warn about old config folder 2018-03-02 19:05:30 +02:00
Pavel Djundik 7a0a1b86f6 Set channel state to joined when channel already exists
Fixes #2141
Fixes #2103
2018-03-02 12:29:40 +02:00
Jérémie Astori 49f2721908 Tweak collapse/expand icon design
- Animate the caret similarly to previews and status messages
- Tweak margins to center things a bit
- Remove unused CSS attributes
2018-03-02 08:57:12 +00:00
Al McKinlay 7fec928ba8 Make networks collapsable 2018-03-02 08:57:12 +00:00
Pavel Djundik 2bf4416aec Bring back line-height on messages
Was removed in c051b70537, but this affected line height on mobile view due to increased font size
2018-03-02 10:56:55 +02:00
Jérémie Astori c485ec8c42
Merge pull request #2139 from thelounge/greenkeeper/copy-webpack-plugin-4.4.3
Update copy-webpack-plugin to the latest version 🚀
2018-03-02 01:02:44 -05:00
greenkeeperio-bot b613be7761
chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-01 22:46:39 -05:00
greenkeeper[bot] 46c58dcb8d
chore(package): update copy-webpack-plugin to version 4.5.0 2018-03-01 22:46:39 -05:00
Pavel Djundik 4cb6ec9eae
Merge pull request #2136 from thelounge/greenkeeper/graphql-request-1.5.1
Update graphql-request to the latest version 🚀
2018-03-01 17:29:03 +02:00
Pavel Djundik 45586f7150
Merge pull request #2137 from thelounge/greenkeeper/stylelint-config-standard-18.2.0
Update stylelint-config-standard to the latest version 🚀
2018-03-01 17:28:16 +02:00
greenkeeperio-bot f04b27b921 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-01 14:32:05 +00:00
greenkeeper[bot] e4bbefd0a5 chore(package): update stylelint-config-standard to version 18.2.0 2018-03-01 14:27:18 +00:00
greenkeeperio-bot 1e8ca56c65 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-03-01 11:52:49 +00:00
greenkeeper[bot] 2a9525a860 chore(package): update graphql-request to version 1.5.1 2018-03-01 11:51:01 +00:00
Al McKinlay 8bbca05ad6
Merge pull request #2133 from thelounge/yamanickill/alt-up-down
Change ctrl/command up/down to alt/option up/down to align with other apps
2018-03-01 10:03:00 +00:00
Pavel Djundik f7a828122c
Merge pull request #2135 from williamboman/fix/stock-themes-code-blocks
Make code blocks more readable in darker themes
2018-03-01 11:45:38 +02:00
Alistair McKinlay 9c5147ae09 Change ctrl/command up/down to alt/option up/down to align with other apps 2018-03-01 09:07:36 +00:00
William Boman 15dbbf4efc client/themes: make code blocks more readable in darker themes 2018-03-01 09:34:29 +01:00
Jérémie Astori 5ed8cc6320
Merge pull request #2134 from thelounge/xpaw/travis-timeout
Increase test timeout on CI
2018-02-28 18:41:24 -05:00
Pavel Djundik fb17107406
Increase test timeout on CI 2018-02-28 22:42:21 +02:00
Pavel Djundik 00681e876f
Merge pull request #1669 from edbrannin/edbrannin/autocomplete-chat-names-1459
add autocompleted names to private chats
2018-02-28 18:54:44 +02:00
Pavel Djundik 61438cbe5a
Merge pull request #2132 from thelounge/xpaw/no-client-lodash
Remove unintentionally included lodash in client build
2018-02-28 18:49:32 +02:00
Pavel Djundik 20a6133d73 Remove unintentionally included lodash in client build 2018-02-28 17:19:33 +02:00
Ed Brannin 4e67e55a7d add autocompleted names to private chats
Fix #1459

https://github.com/thelounge/lounge/issues/1459

Add rawNicks() to more easily get the list of nicks for the current
channel or chat without overly complicating its caller.
2018-02-28 14:25:01 +02:00
Pavel Djundik f282a973f8
Merge pull request #2131 from thelounge/greenkeeper/textcomplete-0.16.1
Update textcomplete to the latest version 🚀
2018-02-28 10:15:32 +02:00
greenkeeperio-bot 9852eb072b chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-28 06:30:24 +00:00
greenkeeper[bot] 02593c51e2 chore(package): update textcomplete to version 0.16.1 2018-02-28 06:28:27 +00:00
Pavel Djundik 14ef881d17
Merge pull request #1907 from thelounge/xpaw/accessible-messages-log
Add log role to message container
2018-02-27 13:19:46 +02:00
Pavel Djundik 6e93bd2c9b
Merge pull request #2126 from thelounge/greenkeeper/yarn-1.5.1
Update yarn to the latest version 🚀
2018-02-27 13:18:46 +02:00
Pavel Djundik 59ec0348b6
Merge pull request #1930 from thelounge/astorije/ctcp-request
Let user know someone is making a CTCP request against their nick
2018-02-27 13:15:27 +02:00
Pavel Djundik 92eb45a6f5
Merge pull request #2108 from thelounge/xpaw/socket-closed
Log socket close error if any
2018-02-27 13:14:30 +02:00
greenkeeperio-bot 845b4a240a chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-27 09:09:07 +00:00
greenkeeper[bot] 3acb14dac9 fix(package): update yarn to version 1.5.1 2018-02-27 09:06:03 +00:00
Jérémie Astori 0f6d27497d
Merge pull request #2113 from thelounge/xpaw/refactor-header
Refactor channel titles to use flexbox
2018-02-27 01:02:15 -05:00
Jérémie Astori aadb506b8f
Merge pull request #2121 from thelounge/astorije/download-badge-link
Point download badge to npm-stat instead of npm
2018-02-27 00:31:06 -05:00
Jérémie Astori 88cbcc0694
Merge pull request #2123 from thelounge/greenkeeper/yarn-1.5.0
Update yarn to the latest version 🚀
2018-02-26 21:38:13 -05:00
Pavel Djundik c051b70537 Refactor channel titles to use flexbox 2018-02-26 22:40:43 +02:00
Pavel Djundik 1b97c1031d Log socket close error if any 2018-02-26 14:20:23 +02:00
greenkeeperio-bot be8cf925d8 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-26 11:56:29 +00:00
greenkeeper[bot] 9ba6b78726 fix(package): update yarn to version 1.5.0 2018-02-26 11:54:18 +00:00
Pavel Djundik 22b02dff31
Merge pull request #2122 from thelounge/revert-1910-xpaw/user-scalable
Revert "Allow scaling the page"
2018-02-26 10:35:35 +02:00
Jérémie Astori 615353c582
Make sure a previously highlighted nick in the user list is highlighted when the list is refreshed
List is refreshed when there is a change in the channel (join/part/quit/nick).
2018-02-26 01:36:36 -05:00
Jérémie Astori 3070ae098a
Mark the first user list result as active for convenience
This _also_ reproduces behavior of autocompletion dropdown.
2018-02-26 01:36:36 -05:00
Jérémie Astori 81e1d15ee9
Override mouse position when clicking on user in userlist to open dropdown at correct position 2018-02-26 01:36:36 -05:00
Jérémie Astori ee7272305a
Adjust user list scroll when active item is outside of the visible area 2018-02-26 01:36:35 -05:00
Jérémie Astori bfc8959bb9
Share highlighting behavior of userlist between mouse hover and keyboard selection
This effectively reproduces the behavior of the autocomplete menu.
2018-02-26 01:36:35 -05:00
Jérémie Astori 649d60c119
Allow navigating through userlist results from keyboard 2018-02-26 01:36:35 -05:00
Jérémie Astori 25517f3ad7
Move the user list client code to its own file 2018-02-26 01:36:34 -05:00
Jérémie Astori fd4492ab41
Merge pull request #2115 from christer88/master
Channel leave button tooltip to correspond with right click context menu
2018-02-26 01:30:46 -05:00
Jérémie Astori 02b35ab367
Revert "Allow scaling the page" 2018-02-26 01:15:00 -05:00
Jérémie Astori e26bbeccbe
Point download badge to npm-stat instead of npm 2018-02-25 16:36:47 -05:00
christer88 5d9a123827
Make channel leave button tooltip correspond with context menu 2018-02-25 02:29:05 +01:00
Jérémie Astori bc1a6319a0
Merge pull request #2094 from thelounge/astorije/tests-in-browser
Enable in-browser run of client testing
2018-02-24 13:00:01 -05:00
Jérémie Astori 7a6b560303
Merge pull request #2098 from keegan/master
Enable logging for LDAP users
2018-02-24 12:54:48 -05:00
Jérémie Astori fe4f453a34
Re-order scripts alphabetically in package.json and replace start-dev with dev 2018-02-23 23:52:37 -05:00
Jérémie Astori ecede860ef
Enable in-browser run of client testing
This gets us one step closer to cross-browser testing 🎉
2018-02-23 23:52:36 -05:00
Jérémie Astori 2dbb150463
Merge pull request #2109 from thelounge/xpaw/fix-stuck-rendering
Fix "rendering..." getting stuck on first connection
2018-02-23 20:27:56 -05:00
Jérémie Astori a9994656c3
Merge pull request #2112 from thelounge/greenkeeper/web-push-3.3.0
Update web-push to the latest version 🚀
2018-02-23 20:18:07 -05:00
Keegan 4fe7dc0808 Enable logging for LDAP users 2018-02-23 20:07:08 -05:00
Jérémie Astori d798a0fe9b
Merge pull request #2105 from thelounge/greenkeeper/graphql-request-1.5.0
Update graphql-request to the latest version 🚀
2018-02-23 19:44:02 -05:00
Jérémie Astori f18a7b2fe6
Merge pull request #2107 from thelounge/xpaw/correct-scroller
Always correctly trigger sticky scroll on .chat container
2018-02-23 19:38:57 -05:00
Jérémie Astori 964da1487a
Merge pull request #2101 from thelounge/xpaw/prefetch-error
Word prefetch errors differently
2018-02-23 19:29:19 -05:00
Jérémie Astori deac669532
Merge pull request #2097 from thelounge/greenkeeper/irc-framework-2.11.0
Update irc-framework to the latest version 🚀
2018-02-23 19:17:07 -05:00
Jérémie Astori 221aad7104
Merge pull request #2111 from thelounge/greenkeeper/copy-webpack-plugin-4.4.2
Update copy-webpack-plugin to the latest version 🚀
2018-02-23 19:15:59 -05:00
Jérémie Astori b9ca43d529
Merge pull request #2102 from thelounge/help-wanted
Back to help wanted label
2018-02-23 19:14:44 -05:00
Jérémie Astori 9e28c0d541
Merge pull request #2106 from thelounge/xpaw/logwarn
Fix log.warn in ldap
2018-02-23 19:11:47 -05:00
Jérémie Astori c490091346
Merge pull request #2110 from thelounge/xpaw/body
Use document.body when wrapping it in a jquery object
2018-02-23 19:06:46 -05:00
greenkeeperio-bot 0610784632 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-23 21:04:23 +00:00
greenkeeper[bot] c07342b67b fix(package): update web-push to version 3.3.0 2018-02-23 21:02:25 +00:00
greenkeeperio-bot 827e37f3d4 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-23 19:45:24 +00:00
greenkeeper[bot] 7fcf683da3 chore(package): update copy-webpack-plugin to version 4.4.2 2018-02-23 19:41:28 +00:00
Pavel Djundik bd2907c13f Use document.body when wrapping it in a jquery object 2018-02-23 21:22:05 +02:00
Pavel Djundik 7ce1f1cf9e Fix "rendering..." getting stuck on first connection 2018-02-23 21:18:42 +02:00
Pavel Djundik 63828b95e0 Always correctly trigger sticky scroll on .chat container
`.chat` has the overflow on it, and not `.messages` so stuff like scrollTop only works on `.chat`
2018-02-23 18:21:42 +02:00
Pavel Djundik 7f82b440a2
Fix log.warn in ldap 2018-02-23 17:52:16 +02:00
greenkeeperio-bot f78333a544 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-23 14:52:01 +00:00
greenkeeper[bot] fedb44435d chore(package): update graphql-request to version 1.5.0 2018-02-23 14:50:28 +00:00
Pavel Djundik 24fa5b0e38
Back to help wanted label 2018-02-23 15:40:36 +02:00
Pavel Djundik 3efd888727
Word prefetch errors differently 2018-02-23 13:47:55 +02:00
Pavel Djundik 5bac385a75
Merge pull request #2099 from thelounge/xpaw/wsengine
Change wsEngine to "ws"
2018-02-23 12:47:15 +02:00
Pavel Djundik 9c46bc5713 Change wsEngine to "ws"
uWS causes major delays - https://github.com/socketio/socket.io/issues/3100
2018-02-23 12:35:35 +02:00
Jérémie Astori a24ab74c4c
Merge pull request #2090 from thelounge/xpaw/rng-nick
Allow generating random numbers in nick on page load
2018-02-22 20:54:52 -05:00
greenkeeperio-bot b91248719a chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-22 14:43:12 +00:00
greenkeeper[bot] ca36da8280 fix(package): update irc-framework to version 2.11.0 2018-02-22 14:38:30 +00:00
Pavel Djundik 3074251be9
Merge pull request #2095 from thelounge/xpaw/banlist-lobby
Send empty banlist error to lobby for channels user is not in
2018-02-22 12:02:00 +02:00
Pavel Djundik 3da870be8c Send empty banlist error to lobby for channels user is not in 2018-02-22 11:01:49 +02:00
Pavel Djundik eebfa4bfd9
Merge pull request #2093 from thelounge/astorije/pr-script-yarn
Use Yarn in the PR-test script
2018-02-22 10:31:49 +02:00
Jérémie Astori b943b12cd1
Use Yarn in the PR-test script 2018-02-22 00:50:27 -05:00
Jérémie Astori f8c894d7e1
Merge pull request #2082 from thelounge/xpaw/rm-isRegistered
Remove isRegistered
2018-02-22 00:45:22 -05:00
Jérémie Astori fa4331bcd9
Limit CTCP requests to prevent easy spamming 2018-02-22 00:42:33 -05:00
Jérémie Astori e03694b49c
Let user know someone is making a CTCP request against their nick 2018-02-22 00:42:33 -05:00
Jérémie Astori da0ab54292
Merge pull request #2091 from thelounge/rename-lounge-repo
Update all links to thelounge repository
2018-02-22 00:19:32 -05:00
Pavel Djundik 59ec07be87
Update all links to thelounge repository 2018-02-21 22:47:52 -05:00
Jérémie Astori 7e8ceaeda4
Merge pull request #2092 from thelounge/greenkeeper/stylelint-9.1.1
Update stylelint to the latest version 🚀
2018-02-21 21:44:19 -05:00
greenkeeperio-bot a3a5ce9aa4 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-21 22:49:21 +00:00
greenkeeper[bot] a121ada239 chore(package): update stylelint to version 9.1.1 2018-02-21 22:44:54 +00:00
Pavel Djundik 84e524c635 Change default nick 2018-02-21 19:34:33 +02:00
Pavel Djundik 906e79f39b Allow generating random numbers in nick on page load 2018-02-21 19:34:33 +02:00
Pavel Djundik e957a52e43
Merge pull request #1864 from thelounge/yamanickill/isop
Change isOpInChannel to allow multiple different user roles
2018-02-21 19:32:11 +02:00
Al McKinlay c09f06fccc Change isOpInChannel to allow multiple different user roles 2018-02-21 15:05:02 +00:00
Jérémie Astori 863e9b0b48
Merge pull request #2088 from thelounge/xpaw/harden-server-events
Ignore events on the server if incorrect data is supplied
2018-02-21 09:57:19 -05:00
Jérémie Astori 5bc3ef3ed8
Merge pull request #1918 from williamboman/fix/send-accept-language-in-link-previews
relay client's preferred language in link preview requests
2018-02-21 09:54:08 -05:00
Jérémie Astori cf3d1e928d
Merge pull request #2089 from thelounge/greenkeeper/stylelint-9.1.0
Update stylelint to the latest version 🚀
2018-02-21 09:38:26 -05:00
Pavel Djundik dfba84d811
Merge pull request #2081 from thelounge/xpaw/secure-localhost
Consider localhost connections secure
2018-02-21 14:00:56 +02:00
greenkeeperio-bot b9df9d6981 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-21 11:29:40 +00:00
greenkeeper[bot] ab15fef282 chore(package): update stylelint to version 9.1.0 2018-02-21 11:22:07 +00:00
Pavel Djundik b501d648e3 Ignore events on the server if incorrect data is supplied 2018-02-21 13:17:56 +02:00
William Boman acb6179b30 relay client's preferred language in link preview requests
Closes #1440.
2018-02-21 10:35:33 +01:00
Jérémie Astori f6c76ff9bd
Merge pull request #2087 from thelounge/astorije/npmignore-webpack-test
Do not publish Webpack config for test env
2018-02-21 02:50:29 -05:00
Jérémie Astori 25c6cb4f6f
Merge pull request #2086 from thelounge/astorije/node-readme
Update Node version required in README
2018-02-21 02:50:11 -05:00
Jérémie Astori 599568a428
Merge pull request #2085 from thelounge/astorije/readme-nitpick
Fix badge links in README going over the images
2018-02-21 02:47:34 -05:00
Jérémie Astori 75dda78b9c
Do not publish Webpack config for test env 2018-02-21 01:19:16 -05:00
Jérémie Astori 4fe946d791
Update Node version required in README 2018-02-21 00:57:05 -05:00
Jérémie Astori 8cfc7aae09
3.0.0-pre.1 2018-02-21 00:12:51 -05:00
Jérémie Astori 32d98c327d
Add changelog entry for v3.0.0-pre.1 2018-02-21 00:12:03 -05:00
Jérémie Astori 8d8ab049cd
Fix badge links in README going over the images 2018-02-20 23:56:02 -05:00
Jérémie Astori 0602a9495a
Merge pull request #2036 from thelounge/xpaw/prefetch-errors
Report server errors when preview fetch fails
2018-02-20 22:21:39 -05:00
Jérémie Astori ddfd942e66
Merge pull request #2084 from thelounge/greenkeeper/eslint-4.18.1
Update eslint to the latest version 🚀
2018-02-20 19:50:27 -05:00
greenkeeperio-bot 70a5fb99d4 chore(package): update lockfile
https://npm.im/greenkeeper-lockfile
2018-02-20 23:26:23 +00:00
greenkeeper[bot] 901b0eff7d chore(package): update eslint to version 4.18.1 2018-02-20 23:24:04 +00:00
Pavel Djundik f9ca608ad5
Merge pull request #1726 from thelounge/astorije/mocha-webpack
Instrument client code before running tests
2018-02-20 15:38:56 +02:00
Jérémie Astori 9c4ea85041 Instrument client code before running tests
Despite being a bit gross to look at, this brings a few advantages:

- Tests are now closer to what actually runs, so more likely to find broken stuff.
- We can start using things that were so far Webpack-only or browser-only, like ES6 imports, loading Handlebars templates, etc.
- We open ourselves to browser testing (there is some work to do, but that would be a necessary step).
- We improve the client/server separation, by making it possible to run them independently

I do some extra steps around coverage: now we have 2 reports (client + server), so I have an extra step to combine them (the `nyc report` part). This is  strictly to keep feature parity (the coverage report of this code is effectively the same as before), but in the near future, we might want to keep both reports separate, for example to continue separating client/server. Another reason would be to use something like Codecov, which I believe has the ability to have multiple reports. This is down the road though, our coverage is not good enough to make hosting them somewhere be useful (I think).

A few extras with this commit:

- Coverage summary is displayed when tests are run (this is not slowing down tests)
- Tests check for leaks (see https://mochajs.org/#--check-leaks)
- Tests now output with the `dot` reporter. This is nice as `npm test` runs in parallel, the whole output holds in a few lines instead of spanning over multiple screens.
2018-02-20 15:32:30 +02:00
Pavel Djundik b10962f13f Remove isRegistered 2018-02-20 13:24:46 +02:00
Pavel Djundik f8e53d5f72
Merge pull request #1987 from thelounge/yarn
Switch from npm to yarn
2018-02-20 12:27:01 +02:00
Pavel Djundik 37c61e2413 Report server errors when preview fetch fails 2018-02-20 11:33:42 +02:00
Pavel Djundik 2bcb9bcca1 Update readme to suggest using yarn 2018-02-20 11:28:14 +02:00
Pavel Djundik 913e88185e Change (un)install commands to use locally installed yarn 2018-02-20 11:28:14 +02:00
Pavel Djundik f646fbbd4f Add yarn.lock, update CI services to run yarn 2018-02-20 11:28:14 +02:00
Pavel Djundik dc6252d3f6 Consider localhost connections secure 2018-02-20 10:36:19 +02:00
Pavel Djundik 1ce2792fc4
Merge pull request #1920 from thelounge/xpaw/more-eslint
Enforce padding-line-between-statements
2018-02-20 09:41:40 +02:00
Jérémie Astori feb5071786
Merge pull request #2080 from thelounge/astorije/travis-dist-tag
Deal with npm's `dist-tag` at Travis deploy time
2018-02-20 02:36:30 -05:00
Jérémie Astori 477e2f9cd1
Merge pull request #2079 from thelounge/xpaw/fix-master-v2
Add titles to all windows
2018-02-20 02:36:09 -05:00
Pavel Djundik c733e72e7a Auto-fix code for padding-line-between-statements rule 2018-02-20 09:28:04 +02:00
Pavel Djundik 1453e262d1 Enforce padding-line-between-statements in eslint 2018-02-20 09:27:32 +02:00
Pavel Djundik a2195c15e4 Add titles to all windows 2018-02-20 09:19:20 +02:00
Jérémie Astori 4e63ef9764
After deploying a stable release, clean up the next tag 2018-02-20 00:59:47 -05:00
Jérémie Astori 288e8148fd
Tag npm releases with latest or next depending on stable/pre-release 2018-02-20 00:58:43 -05:00
Jérémie Astori 7975f4debc
Merge pull request #1928 from thelounge/xpaw/ctcp-resp
Rewrite ctcp handling
2018-02-20 00:12:30 -05:00
Pavel Djundik 7330dc9553
Rewrite ctcp handling 2018-02-19 14:43:58 -05:00
Jérémie Astori 95abf830cd
Merge pull request #2078 from thelounge/xpaw/fix-master-after-no-var
Fix active class not being removed when switching channels
2018-02-19 14:27:29 -05:00
Pavel Djundik 7724762c14 Fix active class not being removed when switching channels 2018-02-19 21:05:05 +02:00
Pavel Djundik 6c7ddd0f47
Merge pull request #1734 from thelounge/astorije/thelounge_home
Switch default home location to `~/.thelounge`
2018-02-19 20:54:57 +02:00
Jérémie Astori a94d3f1b6d
Merge pull request #2003 from thelounge/astorije/logo-readme
Add logo to README, and make intro it look a little nicer
2018-02-19 13:46:08 -05:00
Pavel Djundik 51684f7a2a Switch default home location to ~/.thelounge and remove support of .lounge_home 2018-02-19 20:43:53 +02:00
Jérémie Astori c7ad6d9d3d
Merge pull request #2077 from thelounge/astorije/rm-lounge-cli
Remove support for the `lounge` CLI (which was replaced with `thelounge`)
2018-02-19 13:27:47 -05:00
Jérémie Astori ca8df65dfd
Link npm version to the package page on Yarn 2018-02-19 13:21:06 -05:00
Jérémie Astori bdb6064c76
Add logo to README, and make intro it look a little nicer 2018-02-19 13:21:06 -05:00
Jérémie Astori 69a4207ea4
Remove support for the lounge CLI (which was replaced with thelounge) 2018-02-19 13:14:14 -05:00
Pavel Djundik c97352905d
Merge pull request #1962 from thelounge/xpaw/no-var
Enable no-var rule
2018-02-19 20:12:31 +02:00
Pavel Djundik 9ecb776760
Merge pull request #2031 from thelounge/astorije/irc-monospace
Improve monospace formatting in messages
2018-02-19 20:09:04 +02:00
Pavel Djundik 8886459be9
Merge pull request #2049 from thelounge/xpaw/ui-network-status
Sync network status and security to client UI
2018-02-19 19:57:36 +02:00
Jérémie Astori 53fe991407
Merge pull request #1980 from thelounge/astorije/website
Replace reference to website with new URL
2018-02-19 12:56:08 -05:00
Jérémie Astori 26fa60f475
Merge pull request #1730 from thelounge/astorije/rm-css-theme-deprecation
Remove deprecated support for CSS filenames in theme configuration
2018-02-19 12:55:38 -05:00
Pavel Djundik a3e448acf5 Enable no-var rule
Fixes #1961
2018-02-19 19:49:39 +02:00
Pavel Djundik 0d068f34a8
Merge pull request #1966 from thelounge/xpaw/no-session-convert
Remove session token hash conversion
2018-02-19 19:33:42 +02:00
Jérémie Astori 8403d277b4
Replace reference to website with new URL 2018-02-19 12:23:41 -05:00
Jérémie Astori ab982ecc3c Remove deprecated support for CSS filenames in theme configuration 2018-02-19 19:17:45 +02:00
Pavel Djundik 2685f46669
Merge pull request #1834 from thelounge/astorije/rm-deprecated-options
Remove deprecated options for `thelounge start`
2018-02-19 19:10:14 +02:00
Pavel Djundik 3ccdee6f00
Merge pull request #1927 from thelounge/astorije/fix-ctcp
Fix CTCP commands always sent upper-case
2018-02-19 19:06:08 +02:00
Pavel Djundik 890555785d
Merge pull request #2069 from thelounge/greenkeeper/stylelint-9.0.0
Update stylelint to the latest version 🚀
2018-02-19 18:53:21 +02:00
Pavel Djundik a09b21decd
Merge pull request #1733 from thelounge/astorije/home_option_env_var
Remove deprecated support for the `--home` option and `$LOUNGE_HOME` environment variable
2018-02-19 18:51:44 +02:00
Pavel Djundik 40f05b837d
Merge pull request #1729 from thelounge/astorije/rm-debug-deprecation
Remove deprecated support for `debug` as a boolean in the configuration file
2018-02-19 18:51:11 +02:00
Pavel Djundik a145b8e27c
Merge pull request #1728 from thelounge/astorije/rm-autoload-deprecation
Remove autoload deprecation notice
2018-02-19 18:50:51 +02:00
Pavel Djundik 742929280d
Merge pull request #1919 from thelounge/yamanickill/image-size-error
Show error if image is greater than max prefetch size
2018-02-19 18:49:18 +02:00
Jérémie Astori 4196e627f9 Fix CTCP commands always sent upper-case
This is a Node v6+ only fix.
`irc-framework` upper-cases the first argument, and we were sending everything as a string in first argument. This correctly splits.
2018-02-19 18:43:52 +02:00
Jérémie Astori 559281bfb9
Merge pull request #2076 from thelounge/xpaw/no-scripts-coverage
Skip scripts folder from test coverage
2018-02-19 11:43:12 -05:00
Pavel Djundik b82ceb162b
Merge pull request #2059 from thelounge/xpaw/motd
Render MOTD with a single message
2018-02-19 18:42:16 +02:00
greenkeeper[bot] 38e8c2eb41 chore(package): update stylelint to version 9.0.0 2018-02-19 18:41:51 +02:00
Pavel Djundik 0044be266e
Merge pull request #1727 from thelounge/astorije/node-6
Switch to Node v6 as the minimal supported version
2018-02-19 18:41:23 +02:00
Pavel Djundik 558a6fba0a
Merge pull request #1915 from thelounge/xpaw/aria-tablist
Turn channel list into an accessible tablist
2018-02-19 18:33:28 +02:00
Jérémie Astori 3cba89dc9e Add ES6-related ESLint rules 2018-02-19 18:30:00 +02:00
Jérémie Astori 416f45d1e3 Use some ES6/Node v4-only syntax when possible 2018-02-19 18:30:00 +02:00
Jérémie Astori 6013a02fc2 Exit the program when the Node.js version is incompatible with The Lounge 2018-02-19 18:30:00 +02:00
Jérémie Astori c432ee431d Switch to Node v6 as the oldest version we support
Removed a deprecation notice I added in an earlier commit (ef1c59072c).
2018-02-19 18:30:00 +02:00
Jérémie Astori 421d2b7b70 Improve the Node version warning because why not
This makes the warning look nice and consistent with the other logs we display, while being safe to never break if a dependency/loaded file is not compatible with this version of Node.
Note that there is some ES6 syntax (`let`, arrow functions, template literals), but The Lounge has not been compatible with Node v0.10 for a very long time now.
2018-02-19 18:30:00 +02:00
Pavel Djundik 13a53706f0
Merge pull request #1760 from thelounge/astorije/rm-object.assign-polyfill
Get rid of `Object.assign` polyfill
2018-02-19 18:29:45 +02:00
Pavel Djundik c6f6e8d8d2
Skip scripts folder from test coverage 2018-02-19 16:38:21 +02:00
Pavel Djundik b57830b859 Sync network status and security to client UI
Co-Authored-By: Jérémie Astori <astorije@users.noreply.github.com>
2018-02-19 13:12:01 +02:00
Jérémie Astori 7b27e7d024
2.7.1 2018-02-18 21:12:11 -05:00
Jérémie Astori 837dad2535
Merge pull request #2072 from thelounge/astorije/changelog-2.7.1
Add changelog entry for v2.7.1
2018-02-18 21:09:15 -05:00
Jérémie Astori 3144882491
Add changelog entry for v2.7.1 2018-02-18 15:23:44 -05:00
Jérémie Astori 5669cf40db
Merge pull request #2071 from thelounge/xpaw/outgoing_addr
Fix bind not being passed to irc-framework
2018-02-18 11:21:10 -05:00
Pavel Djundik f92aeceb22
Fix bind not being passed to irc-framework 2018-02-18 13:07:24 +02:00
Pavel Djundik 735393fb03
Merge pull request #2070 from thelounge/greenkeeper/stylelint-config-standard-18.1.0
Update stylelint-config-standard to the latest version 🚀
2018-02-18 12:40:34 +02:00
greenkeeper[bot] 44353772da chore(package): update stylelint-config-standard to version 18.1.0 2018-02-18 10:23:33 +00:00
Pavel Djundik 9905fdcbef
Merge pull request #1910 from thelounge/xpaw/user-scalable
Allow scaling the page
2018-02-18 10:07:43 +02:00
Pavel Djundik e448dc711c Turn channel list into an accessible tablist 2018-02-18 09:58:44 +02:00
Pavel Djundik 23b59ece45
Allow scaling the page 2018-02-18 01:45:57 -05:00
Jérémie Astori c8418a638d
Merge pull request #2058 from thelounge/xpaw/channel-state
Track channel state to allow removing channels user is not in
2018-02-17 19:27:09 -05:00
Pavel Djundik c0442e4c99
Merge pull request #2066 from thelounge/xpaw/fix-509
Display password field when displayNetwork is false
2018-02-17 10:37:04 +02:00
Pavel Djundik 38bc8e6782 Display password field when displayNetwork is false
Fixes #509
2018-02-17 10:23:01 +02:00
Jérémie Astori 51ee504e90
Merge pull request #2068 from thelounge/greenkeeper/eslint-4.18.0
Update eslint to the latest version 🚀
2018-02-17 00:31:01 -05:00
Jérémie Astori e7bcec77df
Merge pull request #2067 from thelounge/greenkeeper/mime-types-2.1.18
Update mime-types to the latest version 🚀
2018-02-17 00:29:59 -05:00
greenkeeper[bot] a3fd86f9a9 chore(package): update eslint to version 4.18.0 2018-02-17 01:07:56 +00:00
greenkeeper[bot] 227c9263e5 fix(package): update mime-types to version 2.1.18 2018-02-16 17:35:16 +00:00
Pavel Djundik 5d2453347f
Merge pull request #2063 from thelounge/xpaw/install-exact-version
Provide exact version into `npm install` command
2018-02-14 12:39:05 +02:00
Pavel Djundik 0d074f1cbe Provide exact version into npm install command 2018-02-14 12:09:02 +02:00
Pavel Djundik d1e5a8f492 Render MOTD with a single message 2018-02-14 11:00:46 +02:00
Pavel Djundik 116a73c8d0 Remove actionTypes and check templates directly 2018-02-14 11:00:45 +02:00
Jérémie Astori 3e713e8be8
Merge pull request #2061 from thelounge/greenkeeper/mocha-5.0.1
Update mocha to the latest version 🚀
2018-02-13 21:37:26 -05:00
greenkeeper[bot] 93131fb542 chore(package): update mocha to version 5.0.1 2018-02-14 02:18:02 +00:00
Pavel Djundik 72e5e9f237
Merge pull request #2055 from thelounge/xpaw/fix-2054
Fix border after nickname not taking full height
2018-02-13 16:22:43 +02:00
Pavel Djundik 939e2a00f3
Merge pull request #2060 from thelounge/xpaw/fix-themes
Fix themes not loading
2018-02-13 14:37:15 +02:00
Pavel Djundik 13e81e5a41 Fix themes not loading
Broken by e4701be708
2018-02-13 13:57:13 +02:00
Pavel Djundik fa993c29d5 Trim MOTD to avoid empty line at the end 2018-02-13 12:38:33 +02:00
Pavel Djundik f7449c565f Fix border after nickname not taking full height
Fixes #2054
2018-02-13 12:37:10 +02:00
Pavel Djundik 7e704b2d73 Track channel state to allow removing channels user is not in 2018-02-13 12:30:26 +02:00
Al McKinlay 865e5bb41b
Merge pull request #1933 from RockyTV/rockytv
Show channel name on channel-related errors
2018-02-13 10:03:20 +00:00
Pavel Djundik 4639a2528d
Merge pull request #2021 from thelounge/xpaw/ldapjs-no-dtrace
Use forked ldapjs to remove dtrace
2018-02-13 11:58:25 +02:00
Pavel Djundik e4701be708
Merge pull request #2035 from thelounge/astorije/ensure-packages-are-dirs
Ensure packages loaded are directories
2018-02-13 11:32:02 +02:00
Jérémie Astori 6d931e8dcb
Make sure packages are correctly removed from package.json when uninstalled 2018-02-13 01:06:31 -05:00
Jérémie Astori 2c570fa9ef
Load packages from package.json, fix loading thelounge metadata from the wrong file, add tests 2018-02-13 01:06:31 -05:00
Jérémie Astori b5d96d215f
Ensure packages loaded are directories 2018-02-13 01:06:30 -05:00
Alexandre Oliveira c53015c1af Show channel name on channel-related errors
Fixes #1207
2018-02-12 15:22:31 -02:00
Jérémie Astori 0b3741859f
Merge pull request #2048 from thelounge/greenkeeper/copy-webpack-plugin-4.4.1
Update copy-webpack-plugin to the latest version 🚀
2018-02-11 03:48:19 -05:00
Jérémie Astori f2ddb633b1
Merge pull request #2052 from thelounge/greenkeeper/webpack-3.11.0
Update webpack to the latest version 🚀
2018-02-10 13:57:08 -05:00
Jérémie Astori 1988bbd149
Merge pull request #2053 from thelounge/greenkeeper/urijs-1.19.1
Update urijs to the latest version 🚀
2018-02-10 13:55:46 -05:00
greenkeeper[bot] 03a99ecd60 fix(package): update urijs to version 1.19.1 2018-02-10 16:06:01 +00:00
greenkeeper[bot] 053e2ffbbf chore(package): update webpack to version 3.11.0 2018-02-10 15:31:49 +00:00
greenkeeper[bot] 12b5cbc40f chore(package): update copy-webpack-plugin to version 4.4.1 2018-02-08 15:09:03 +00:00
Jérémie Astori 82fc55c1f1
Merge pull request #2047 from thelounge/xpaw/off-img-event
Unbind image events after the image is loaded
2018-02-08 08:52:53 -05:00
Jérémie Astori a15216493a
Merge pull request #2046 from thelounge/greenkeeper/copy-webpack-plugin-4.4.0
Update copy-webpack-plugin to the latest version 🚀
2018-02-08 08:18:17 -05:00
Pavel Djundik 12bbaef4ab Unbind image events after the image is loaded 2018-02-08 14:54:57 +02:00
greenkeeper[bot] 9c90e94ef8 chore(package): update copy-webpack-plugin to version 4.4.0 2018-02-08 10:40:42 +00:00
Pavel Djundik f6051d3f6b
Merge pull request #2045 from thelounge/xpaw/pkg-subfolder
Make sure packages can be referenced in subfolders
2018-02-08 12:19:38 +02:00
Pavel Djundik 339f65295d
Make sure packages can be referenced in subfolders 2018-02-08 10:57:57 +02:00
Jérémie Astori 7883feca30
Merge pull request #2043 from thelounge/xpaw/preview-on-failed-img
Still render link previews if image fails to load
2018-02-08 01:55:02 -05:00
Pavel Djundik 14847260b6
Merge pull request #2042 from thelounge/xpaw/fix-2040
Fix crash when hostname is changed in lockNetwork mode
2018-02-07 23:03:55 +02:00
Pavel Djundik 85cb039426 Still render link previews if image fails to load 2018-02-07 17:40:15 +02:00
Pavel Djundik aee1ec2739 Fix crash when hostname is changed in lockNetwork mode
Fixes #2040
2018-02-07 12:03:25 +02:00
Jérémie Astori 99ee31d795
Merge pull request #2041 from thelounge/greenkeeper/commander-2.14.1
Update commander to the latest version 🚀
2018-02-07 03:09:07 -05:00
greenkeeper[bot] e28efe5e38 fix(package): update commander to version 2.14.1 2018-02-07 07:52:52 +00:00
Jérémie Astori 572c93d06b
Merge pull request #2039 from thelounge/xpaw/fix-1721
Fix duplicate chat containers and unread markers when reconnecting
2018-02-06 19:10:00 -05:00
Pavel Djundik c4f6701d65 Use forked ldapjs to remove dtrace
Fixes #1756
2018-02-06 13:21:59 +02:00
Pavel Djundik a9198b1cf6 Fix duplicate chat containers and unread markers when reconnecting
Fixes #1721
2018-02-06 11:10:11 +02:00
Pavel Djundik 79a2c72c06
Merge pull request #2038 from thelounge/greenkeeper/commander-2.14.0
Update commander to the latest version 🚀
2018-02-06 09:24:46 +02:00
Jérémie Astori bbaea66d11
Merge pull request #2033 from thelounge/xpaw/fix-default-theme
Fix default theme not being correct
2018-02-06 00:26:14 -05:00
Jérémie Astori b213e988ca
Merge pull request #2037 from thelounge/xpaw/fix-1501
Fix queries going to lobby if the network name matches user name
2018-02-05 23:47:55 -05:00
greenkeeper[bot] 72aa243666 fix(package): update commander to version 2.14.0 2018-02-06 01:33:31 +00:00
Pavel Djundik b7ccb5a294 Fix queries going to lobby if the network name matches user name
Fixes #1501
Fixes #1983
2018-02-05 14:35:01 +02:00
Pavel Djundik 60777b9b1f Fix default theme not being correct 2018-02-04 19:54:07 +02:00
Pavel Djundik dbb51e0f46
Merge pull request #2032 from thelounge/greenkeeper/lodash-4.17.5
Update lodash to the latest version 🚀
2018-02-04 10:22:17 +02:00
greenkeeper[bot] c0749136fc fix(package): update lodash to version 4.17.5 2018-02-04 01:24:58 +00:00
Jérémie Astori 003ae7131b
Improve monospace formatting in messages
This effectively styles it just like to `code` syntax used in the Help window, such as in the list of available commands.
2018-02-03 12:53:33 -05:00
Jérémie Astori cb4312f410
Merge pull request #2030 from thelounge/xpaw/fix-2028
Fix messages not being condensed correctly
2018-02-03 11:58:46 -05:00
Pavel Djundik 51d5a4eff4 Fix #2028 - Messages are not condensed correctly 2018-02-03 10:43:39 +02:00
Jérémie Astori c6e282bffd
Merge pull request #2029 from thelounge/greenkeeper/eslint-4.17.0
Update eslint to the latest version 🚀
2018-02-03 00:12:55 -05:00
greenkeeper[bot] 349edad826 chore(package): update eslint to version 4.17.0 2018-02-03 04:22:32 +00:00
Jérémie Astori ec70bd91a8
Merge pull request #2022 from thelounge/xpaw/not-loggable-types
Define which message types should not be logged
2018-02-02 00:47:07 -05:00
Jérémie Astori 91e3ca88bb
UI for "Image too large" errors 2018-02-01 21:14:37 -05:00
Al McKinlay 335bd803af
Show error if image is greater than max prefetch size 2018-02-01 21:09:45 -05:00
Pavel Djundik 6b024191c1
Merge pull request #2015 from thelounge/xpaw/jquery-deprecations
Remove deprecated jQuery calls
2018-02-01 12:30:37 +02:00
Pavel Djundik 6d6b5cb2a9 Remove deprecated jQuery calls
Fixes #2011
2018-02-01 12:15:51 +02:00
Pavel Djundik 1904e9b0ab
Merge pull request #2013 from thelounge/xpaw/fix-1959
Fix #1959: Do not block /join command from being sent
2018-02-01 10:08:22 +02:00
Pavel Djundik e5fa6e32f9
Merge pull request #2027 from thelounge/xpaw/fix-auto-open-media
Fix auto-open media option not working
2018-02-01 10:07:51 +02:00
Pavel Djundik 1fdd1ff0c3 Define which message types should not be logged 2018-02-01 10:03:10 +02:00
Pavel Djundik b4951b1f86 Fix auto-open media option not working
Bug introduced in ffa9685b41
2018-02-01 09:57:15 +02:00
Jérémie Astori 93265ef830
Merge pull request #2020 from thelounge/xpaw/fix-1991
Wait for server response when parting channels
2018-02-01 00:42:17 -05:00
Jérémie Astori ede0f44ca2
Merge pull request #2025 from thelounge/xpaw/fix-2024
Fix #2024 - Send visible defaults when displayNetwork is false
2018-02-01 00:34:04 -05:00
Jérémie Astori 4f737ce5bb
Merge pull request #2023 from thelounge/xpaw/textcomplete-null
Fix textcomplete reference in autocompletion.disable
2018-02-01 00:31:03 -05:00
Pavel Djundik e6241556be Fix #2024 - Send visible defaults when displayNetwork is false 2018-01-31 23:14:26 +02:00
Pavel Djundik b765abcb65
Fix textcomplete reference in autocompletion.disable 2018-01-31 21:06:29 +02:00
Pavel Djundik ffa9685b41
Merge pull request #1925 from thelounge/xpaw/img-preview-preload
Preload preview images before appending them to DOM
2018-01-31 10:07:20 +02:00
Pavel Djundik 33dbc80dbc Fix #1991: Wait for server response when parting channels 2018-01-31 10:04:54 +02:00
Jérémie Astori c605f35335
Merge pull request #2019 from thelounge/yamanickill/save-queries
Save query channels in user.json
2018-01-30 19:27:28 -05:00
Jérémie Astori dcdc1d150f
Merge pull request #1979 from thelounge/astorije/index
Do not statically serve the index template prior to rendering it
2018-01-30 19:21:07 -05:00
Al McKinlay 5cf24b80e6 Save query channels in user.json 2018-01-30 17:14:51 +00:00
Pavel Djundik bc05ca1c63
Merge pull request #1988 from thelounge/greenkeeper/primer-tooltips-1.5.2
Update primer-tooltips to the latest version 🚀
2018-01-30 14:07:53 +02:00
Pavel Djundik 8f2caca6d7
Merge pull request #2014 from thelounge/yamanickill/2012-css-csp
Allow https css
2018-01-30 14:07:19 +02:00
Al McKinlay 72fafc5b4f Allow https css
Fixed #2012
2018-01-30 09:23:34 +00:00
Pavel Djundik 869e978a99
Fix #1959: Do not block /join command from being sent 2018-01-30 11:14:17 +02:00
Pavel Djundik 4f5807b8fe
Merge pull request #1856 from MaxLeiter/close-channel-tooltip
Add tooltip to channel close button
2018-01-30 11:12:30 +02:00
Jérémie Astori 8d124dd2a2
Merge pull request #1924 from thelounge/xpaw/img-decoding
Set decoding=async on image previews
2018-01-30 00:22:22 -05:00
Jérémie Astori ff9dd3833e
Merge pull request #1993 from milindl/feat/chan-auto-current
Show channels for only active server in autocomplete
2018-01-30 00:12:45 -05:00
Jérémie Astori a9e3b551e6
Merge pull request #1994 from thelounge/greenkeeper/jquery-3.3.1
Update jquery to the latest version 🚀
2018-01-30 00:08:20 -05:00
Jérémie Astori 90c3c3b22e
Merge pull request #2010 from thelounge/xpaw/start_url
Set start_url in manifest.json
2018-01-29 18:17:01 -05:00
Pavel Djundik 43aceccb41
Set start_url in manifest.json 2018-01-29 19:46:54 +02:00
Max Leiter 8057c416fb Add tooltip to close channel/leave query button on sidebar 2018-01-29 09:36:09 -08:00
Pavel Djundik 25460156cb
Merge pull request #1985 from thelounge/greenkeeper/semver-5.5.0
Update semver to the latest version 🚀
2018-01-29 16:33:05 +02:00
Jérémie Astori 15ea2db31b
Merge pull request #1999 from thelounge/astorije/fix-timestamp-tooltip
Fix timestamp tooltips not aligning correctly with timestamps
2018-01-29 01:07:55 -05:00
Jérémie Astori 2640c2a15e
Merge pull request #1955 from thelounge/xpaw/fix-touch-select
Prevent user contextmenu from opening while selecting text
2018-01-29 01:07:36 -05:00
Jérémie Astori 46931b0a7d
Merge pull request #1989 from thelounge/greenkeeper/mocha-5.0.0
Update mocha to the latest version 🚀
2018-01-29 01:06:08 -05:00
Jérémie Astori f7429ab80b
Merge pull request #1992 from thelounge/greenkeeper/eslint-4.16.0
Update eslint to the latest version 🚀
2018-01-29 01:05:11 -05:00
Jérémie Astori ede37b9cb6
Merge pull request #1931 from thelounge/astorije/build-views
Build template list at Webpack time instead of manually keeping this in sync with the views folders
2018-01-29 01:04:06 -05:00
Jérémie Astori 9e49ee28e8
2.7.0 2018-01-28 23:11:58 -05:00
Jérémie Astori 73962bb835
Merge pull request #2002 from thelounge/astorije/changelog-2.7.0
Changelog entry for v2.7.0
2018-01-28 23:09:52 -05:00
Jérémie Astori 1d7a7a89a6
Add changelog entry for v2.7.0 2018-01-28 22:19:08 -05:00
Jérémie Astori 275d80b412
Add thelounge keyword to package.json for npm registry 2018-01-27 16:32:47 -05:00
Jérémie Astori befafade31
Slightly improve the changelog script, by splitting uncategorized items
I have more substantial ideas for future changelogs, but this already helped me for v2.7.0 changelog, and it is as far as I can go without editing the changelogs themselves. Stay tuned.
2018-01-27 16:32:47 -05:00
Jérémie Astori c809d4beaf
Fix a bug with the changelog script, on commit pagination 2018-01-27 16:32:47 -05:00
Jérémie Astori 65c6774af0
Remove pre-release dist-tag for release of v2.7.0 stable 2018-01-27 16:32:46 -05:00
Jérémie Astori 449a59ae72
2.7.0-rc.3 2018-01-27 00:05:37 -05:00
Jérémie Astori 2eb13801ad
Add changelog entry for v2.7.0-rc.3 2018-01-27 00:02:00 -05:00
Jérémie Astori 991ec5315d
Merge pull request #2006 from thelounge/yamanickill/2005-expand
Stop expanding condensed messages on /expand
2018-01-26 19:56:37 -05:00
Alistair McKinlay 0b83ba6a40 Stop expanding condensed messages on /expand 2018-01-26 08:52:51 +00:00
Jérémie Astori 5722bd9845
Allow timestamp tooltips to expand beyond message boundaries 2018-01-24 00:22:18 -05:00
Jérémie Astori 6bfd6ed473
Fix timestamp tooltips not aligning correctly with timestamps 2018-01-23 00:49:17 -05:00
greenkeeper[bot] 25f02eb211 chore(package): update jquery to version 3.3.1 2018-01-20 17:37:32 +00:00
milindl d6d54c2c56 Show channels for only active server in autocomplete
Fix #1381.
2018-01-20 18:24:21 +05:30
greenkeeper[bot] cfca2fa155 chore(package): update eslint to version 4.16.0 2018-01-20 06:15:08 +00:00
Jérémie Astori b2eebfa65e
2.7.0-rc.2 2018-01-19 23:33:00 -05:00
Jérémie Astori 54af12b329
Add changelog entry for v2.7.0-rc.2 2018-01-19 23:30:33 -05:00
Jérémie Astori 25d69438b8
Merge pull request #1986 from thelounge/astorije/fix-deleting-package
Make sure existing packages (and themes) are not deleted when installing a new one on Node.js v8
2018-01-18 01:30:17 -05:00
greenkeeper[bot] 710ba10772 chore(package): update mocha to version 5.0.0 2018-01-18 06:10:02 +00:00
greenkeeper[bot] 9946b918d7 fix(package): update primer-tooltips to version 1.5.2 2018-01-18 00:44:09 +00:00
Jérémie Astori 432023fc7e
Make sure existing packages (and themes) are not deleted when installing a new one on Node.js v8
- When installing a package on Node v8 (or whatever npm version ships with it - v5), all packages not listed in `package.json` are removed. Since we explicitly added `--no-save`, installing a theme would delete the previous one. I am now checking that the file already exists or not. This means that it will still happen to people the next time they run `thelounge install`, because the previous install did not save into `package.json` :/
- Adding `--save` to make sure that the same, correct behavior is done on Node v6 as well (npm v3)
- Adding `--save-exact` for good measure.
2018-01-16 20:25:35 -05:00
greenkeeper[bot] d3cbcfcc8b fix(package): update semver to version 5.5.0 2018-01-16 20:35:46 +00:00
Pavel Djundik 33de4840c6
Merge pull request #1984 from thelounge/astorije/vulnerability-disclosure
Add SECURITY guidelines about security vulnerability disclosures, and link them from the CONTRIBUTING guidelines
2018-01-16 10:35:12 +02:00
Jérémie Astori fda03b8362
Add SECURITY guidelines about security vulnerability disclosures, and link them from the CONTRIBUTING guidelines 2018-01-15 20:26:26 -05:00
Jérémie Astori 33d82287be
Do not statically serve the index template prior to rendering it
Without this, going to `https://thelounge.example.com/index.html` would return the raw file. This now excludes it from the `public` folder so it cannot be rendered as is.
Renaming the file is for good measure, to indicate that this HTML file must be templated. Because it is a straight rename with no modification, rebasing PRs on it should not be to painful, as git re-applies changes on renamed files.
2018-01-14 13:02:27 -05:00
Jérémie Astori 7a691b8e6c
2.7.0-rc.1 2018-01-13 19:23:24 -05:00
Jérémie Astori aac4025c59
Add changelog entry for v2.7.0-rc.1 2018-01-13 19:23:06 -05:00
Jérémie Astori 42199eda29
Merge pull request #1978 from merlinthp/chpass_callback
Add missing execution of callback in ClientManager.updateUser
2018-01-13 18:47:01 -05:00
Howard Johnson 10d43f27ed Add missing executions of callback in ClientManager.updateUser
Signed-off-by: Howard Johnson <merlin@merlinthp.org>
2018-01-13 23:05:23 +00:00
Pavel Djundik 1aaa9391db
Merge pull request #1970 from thelounge/astorije/fix-themes
Fix local themes not being found in theme selector dropdown, and serve local themes using the themes route instead of the public folder
2018-01-13 23:09:55 +02:00
Jérémie Astori c49239b4f1
Fix themes not being found in theme selector dropdown 2018-01-13 13:45:30 -05:00
Jérémie Astori f8c66aa512
Merge pull request #1975 from thelounge/xpaw/fix-1902
Fix enabling push notifications on Firefox
2018-01-13 13:14:33 -05:00
Jérémie Astori 503c1538f5
Merge pull request #1974 from thelounge/astorije/fix-uninstall
Fix `thelounge uninstall` command
2018-01-13 13:13:19 -05:00
Jérémie Astori 45dc52886e
Fix thelounge uninstall command
- Exit with code 1 when package was not installed
- Run a pre-step to check if package is installed before uninstalling. I have tried every possible way I could think of without that first `npm list` step based on output of `npm uninstall`, but different npm versions produce different outputs, so there is nothing reliable. This is a more robust way to do so anyway.
- Consolidate error handlers
2018-01-13 02:00:37 -05:00
Pavel Djundik 8d0bdfc200 Fix #1902 - unable to enable push notifications on Firefox 57 2018-01-12 12:04:04 +02:00
Jérémie Astori 3eb017caf8
Merge pull request #1964 from thelounge/sign-git-tag
Set sign-git-tag to true in .npmrc
2018-01-11 23:50:17 -05:00
Jérémie Astori d1c7613535
Merge pull request #1963 from thelounge/greenkeeper/commander-2.13.0
Update commander to the latest version 🚀
2018-01-11 23:36:42 -05:00
Jérémie Astori edaa8119af
Merge pull request #1965 from thelounge/greenkeeper/ldapjs-1.0.2
Update ldapjs to the latest version 🚀
2018-01-11 23:17:50 -05:00
Pavel Djundik 59a1a9cd36 Fix #1958: Remove session token hash conversion 2018-01-11 21:44:00 +02:00
greenkeeper[bot] fd6f740d36 fix(package): update ldapjs to version 1.0.2 2018-01-11 18:41:53 +00:00
Pavel Djundik cdd9418bb0
Set sign-git-tag to true in .npmrc 2018-01-11 17:12:04 +02:00
greenkeeper[bot] c4b5671aef fix(package): update commander to version 2.13.0 2018-01-11 15:08:34 +00:00
Pavel Djundik 98c3108bde
Merge pull request #1940 from thelounge/xpaw/fix-1934
Hash user tokens, increase token entropy
2018-01-11 13:34:14 +02:00
Jérémie Astori 40aadf7c95
Merge pull request #1619 from thelounge/1447-css-plugin
Allow custom css from plugins
2018-01-10 21:44:47 -05:00
Jérémie Astori 6cbc2eeef3
Merge pull request #1956 from thelounge/xpaw/fix-notif-timestamp
Provide correct timestamp to browser notifications
2018-01-10 21:42:23 -05:00
Pavel Djundik eac092e661 Hash user tokens, increase token entropy
Fixes #1934
2018-01-10 15:54:52 +02:00
Pavel Djundik 31c33e43d5 Provide correct timestamp to browser notifications 2018-01-09 18:47:13 +02:00
Pavel Djundik e77de3315a Prevent user contextmenu from opening while selecting text 2018-01-09 18:16:20 +02:00
Jérémie Astori b3702b0550
Merge pull request #1938 from thelounge/astorije/uninstall-packages
Add a `thelounge uninstall` command to remove themes and packages
2018-01-09 00:51:27 -05:00
Jérémie Astori b8bd6fccbb
Merge pull request #1949 from thelounge/xpaw/no-history-spam
Only emit "more" history to the client that requested it
2018-01-07 13:37:36 -05:00
Pavel Djundik fc39a67e10 Only emit "more" history to the client that requested it 2018-01-07 15:06:59 +02:00
Jérémie Astori 011b086760
Merge pull request #1947 from thelounge/greenkeeper/eslint-4.15.0
Update eslint to the latest version 🚀
2018-01-07 01:18:34 -05:00
greenkeeper[bot] 41d872bcaf chore(package): update eslint to version 4.15.0 2018-01-07 02:37:59 +00:00
Jérémie Astori d2388dc623
Bail when uninstalling if package.json for TL packages does not exist
It is on purpose that the message is the same than when a package was not installed. From a user standpoint, it only matters that this specific package was not installed.
2018-01-06 12:12:10 -05:00
Jérémie Astori 3971ecff63
Customize a bit thelounge install|uninstall
- Hides progress bars that flash when installing/uninstalling as it does not bring real value here, at least for now
- Inform user if package being uninstalled was not actually installed
- Do not display npm outputs, mention which version was installed (this will probably need refining when installing packages with dependencies)
2018-01-06 12:12:10 -05:00
Jérémie Astori d9cb640c2a
Add a thelounge uninstall command to remove themes and packages 2018-01-06 12:12:09 -05:00
Pavel Djundik 52b3ef18f7
Merge pull request #1941 from thelounge/xpaw/fix-log-from
Fix nicknames in text logs
2018-01-05 20:47:30 +02:00
Al McKinlay 3510094665 Allow custom css from plugins 2018-01-05 17:40:47 +00:00
Pavel Djundik 4307bb0563
Fix nicknames in text logs 2018-01-05 15:41:03 +02:00
Pavel Djundik 628ef7aa66
Merge pull request #1937 from thelounge/greenkeeper/irc-framework-2.10.3
Update irc-framework to the latest version 🚀
2018-01-05 11:32:23 +02:00
Jérémie Astori ede032a7f4
Merge pull request #1917 from williamboman/fix/css-animation-jitter
fix animation jitter when clicking join channel button
2018-01-04 19:56:55 -05:00
greenkeeper[bot] 37cc576af1 fix(package): update irc-framework to version 2.10.3 2018-01-04 14:52:22 +00:00
William Boman dfe4b2f6d6 fix animation jitter when clicking join channel button 2018-01-04 10:53:07 +01:00
Jérémie Astori 313a321918
Merge pull request #1916 from williamboman/fix/no-autocomplete-channel-join
views/join_channel: disable autocompletion of form inputs
2018-01-04 00:29:52 -05:00
Pavel Djundik 0854bd359b
Merge pull request #1926 from thelounge/xpaw/image-extension
Store images with correct file extension
2018-01-03 17:47:45 +02:00
Pavel Djundik 6675ced196 Store images with correct file extension 2018-01-03 13:33:52 +02:00
Jérémie Astori a122ed5b7f
Build template list at Webpack time instead of manually keeping this in sync with the views folders 2018-01-02 01:38:57 -05:00
Jérémie Astori 068b842561
Merge pull request #1914 from thelounge/astorije/changelog-prerelease-wording
Separate and improve wording for `pre` and `rc` pre-release versions
2018-01-01 20:37:29 -05:00
Pavel Djundik f38fa9b98e Set decoding=async on image previews 2017-12-29 21:57:52 +02:00
Jérémie Astori 50d8bf5191
Merge pull request #1923 from thelounge/astorije/bump-primer-tooltips
Update primer-tooltips to the latest version
2017-12-29 14:13:05 -05:00
Pavel Djundik e98291dd3f Preload preview images before appending them to DOM 2017-12-29 12:30:15 +02:00
Jérémie Astori 9ca08ae434
Update primer-tooltips to the latest version
Only changes between v1.5.0 and v1.5.1 (according to https://github.com/primer/primer/commits/master/modules/primer-tooltips) are:

- https://github.com/primer/primer/pull/394
- https://github.com/primer/primer/pull/409

So we are not affected.
2017-12-29 02:20:21 -05:00
Jérémie Astori 49135f4d77
Merge pull request #1922 from thelounge/greenkeeper/mocha-4.1.0
Update mocha to the latest version 🚀
2017-12-29 02:15:18 -05:00
greenkeeper[bot] 168bd1b3ab chore(package): update mocha to version 4.1.0 2017-12-29 05:18:38 +00:00
Pavel Djundik dafca48061
Merge pull request #1921 from thelounge/astorije/fix-stylelint
Fix stylelint
2017-12-29 00:29:06 +02:00
Jérémie Astori 5c9e985999
Separate and improve wording for pre and rc pre-release versions 2017-12-28 17:26:32 -05:00
Jérémie Astori 0a8cccf5d7
Remove CLI option of Stylelint that currently makes it a noop 2017-12-28 17:07:37 -05:00
Jérémie Astori 04fee16fec
Fix CSS currently failing Stylelint checker 2017-12-28 17:07:08 -05:00
Jérémie Astori dd40011967
Merge pull request #1913 from thelounge/astorije/changelog-script
Allow keywords as changelog script version argument, e.g. `node scripts/changelog pre`
2017-12-28 15:26:38 -05:00
Jérémie Astori 7346866f03
Merge pull request #1905 from thelounge/xpaw/mute-disabled-inputs
Mute disabled inputs
2017-12-28 15:21:05 -05:00
William Boman f3b64958cb views/join_channel: disable autocompletion of form inputs 2017-12-28 13:51:28 +01:00
Pavel Djundik 069cb6192f Mute disabled inputs 2017-12-28 10:44:37 +02:00
Jérémie Astori 322987a204
Merge pull request #1906 from thelounge/xpaw/aria-label-input
Set aria-label on main input
2017-12-28 00:13:52 -05:00
Jérémie Astori a2b03a5de6
Merge pull request #1908 from thelounge/xpaw/user-css-label
Add screen reader label for custom css textarea
2017-12-28 00:12:20 -05:00
Jérémie Astori 470f2dd814
2.7.0-pre.4 2017-12-27 19:39:36 -05:00
Jérémie Astori b47538860e
Add changelog entry for v2.7.0-pre.4 2017-12-27 19:39:07 -05:00
Jérémie Astori dbd07d55e3
Allow keywords as changelog script version argument, e.g. node scripts/changelog pre 2017-12-27 19:18:07 -05:00
Pavel Djundik 3cd99816b8
Add screen reader label for custom css textarea 2017-12-27 22:48:03 +02:00
Pavel Djundik 48ebde6008
Add log role to message container
Fixes #936
2017-12-27 22:43:21 +02:00
Pavel Djundik bd9e219d92 Set aria-label on main input 2017-12-27 22:34:19 +02:00
Jérémie Astori 835236f8ac
Merge pull request #1901 from thelounge/xpaw/fix-nicks-match
Do not match nicknames incorrectly as part of a bigger word
2017-12-27 14:32:59 -05:00
Jérémie Astori b02b47c822
Merge pull request #1904 from thelounge/astorije/csp-video-controls
Make sure data URIs are allowed by CSP not to block video controls
2017-12-27 14:31:44 -05:00
Jérémie Astori dab4fc44ea
Make sure data URIs are allowed by CSP not to block video controls 2017-12-27 13:56:38 -05:00
Pavel Djundik 349136f172 Do not match nicknames incorrectly as part of a bigger word
Fixes #1776
Fixes #1885
2017-12-27 20:44:59 +02:00
Jérémie Astori c17d7bddae
Merge pull request #1899 from thelounge/astorije/improve-init
Improve a bit window loading on init
2017-12-27 13:31:25 -05:00
Pavel Djundik 9f99b165c9
Merge pull request #1903 from thelounge/greenkeeper/graphql-request-1.4.1
Update graphql-request to the latest version 🚀
2017-12-27 19:20:46 +02:00
greenkeeper[bot] 84587ea0a1 chore(package): update graphql-request to version 1.4.1 2017-12-27 09:31:50 +00:00
Pavel Djundik d16b18de78 Open context menu inside of chats on sidebar item 2017-12-26 20:40:02 +02:00
Jérémie Astori a392b9f35f
Improve a bit window loading on init 2017-12-25 18:19:12 -05:00
Jérémie Astori 1fc2051c1d
Merge pull request #1897 from thelounge/astorije/improve-version-checker
Improve the version checking and changelog features
2017-12-25 17:57:27 -05:00
Jérémie Astori f725e944dd
Add (semi-working) image viewer support for images shown in changelogs
Semi-working because this does not support Preview/Next. The existing image viewer is very custom to in-channel message previews and expects a certain markup, that needs rework tobe more generic.
2017-12-25 17:44:55 -05:00
Jérémie Astori 3eb429dde3
Make sure all links will open a new tab instead of exiting the application 2017-12-25 17:44:55 -05:00
Jérémie Astori 238e894377
Improve the version checking part of the changelog feature
- There is no client caching of the changelog/version anymore. Instead, server returns the expiration date of its cache, and that is used by the client as well.
- There is now a "Check now" button on the client that appears when data is stale. This means that info is fetched only once and never refreshed (it was refreshed every hour before) unless the user explicitly wants to check latest version, which in turn is as stale as server info is, i.e. 15 minutes max.
- Button style is shared with the "Join a channel" feature, `.btn-small` (not `.btn-sm` to be explicit that this is not a Bootstrap thing).
- Version checker content is now centralized in the `version_checker` template, instead of being partially in the checker template, partially in the Help template,  and partially in the code.
- A "Try again" button lets user attempt to fetch info instead of forcing them to reload the page.
- Use Flexbox to display a nicer version checker: icon is slightly bigger, and button is always aligned on the right.
- Changelog logic has been removed from `lounge.js` and moved into the component file.
- Changelog template is only passed what it needs instead of everything the server gives us.
- Public version now displays version checker, since server is caching things.
- Cleaner code overall.
2017-12-25 17:44:53 -05:00
Pavel Djundik 3c8fcadfe8
Merge pull request #1895 from thelounge/xpaw/sw-notification-focus
Open and focus correct channel when clicking on push notifications
2017-12-25 11:59:47 +02:00
Pavel Djundik d2106f1782
Merge pull request #1896 from thelounge/xpaw/fix-push-error
Fix error not showing up in failed push subscription
2017-12-24 22:53:04 +02:00
Pavel Djundik 80c11f2bde Fix error not showing up in failed push subscription 2017-12-24 22:12:36 +02:00
Jérémie Astori ff6d6e3e82
Merge pull request #1887 from thelounge/greenkeeper/eslint-4.14.0
Update eslint to the latest version 🚀
2017-12-24 14:53:01 -05:00
Jérémie Astori 12dd11bd10
Merge pull request #1889 from thelounge/astorije/fix-window-on-load
Display the correct window on page reload
2017-12-24 14:47:13 -05:00
Pavel Djundik f81f083b24 Open and focus correct channel when clicking on push notifications
Affects all notifications sent via service workers

Fixes #1550
2017-12-24 16:06:23 +02:00
Jérémie Astori 7d49730bad
Merge pull request #1892 from thelounge/astorije/fix-slideout
Fix slideout not closing on mobile when hitting a footer icon
2017-12-24 02:59:36 -05:00
Jérémie Astori 7f165a7593
Fix slideout not closing on mobile when hitting a footer icon
Introduced by 9691df67e3 (diff-e5178f7b74fe45f2cfe1baf9aa1ef6faR347).
Seriously...
2017-12-24 02:51:58 -05:00
Jérémie Astori d1c2f0df72
Display the correct window on page reload
This commit packs 2 fixes:

- Reloading the page while viewing the settings or help window would now send you to a channel window. This was broken when fixing an issue with the "Join a channel..." form
- Reloading the page while viewing the changelog would also send you to a channel window. This is because, on reload, the click emitted was restricted to sidebar and footer, while it had to be emitted from the help page. It is yet another aspect of our wonky window management and hopefully we can make this much more robust with a better overall solution.
2017-12-23 20:46:43 -05:00
greenkeeper[bot] 7dec39a499 chore(package): update eslint to version 4.14.0 2017-12-23 23:31:34 +00:00
Pavel Djundik 7c2422ee19
Merge pull request #1881 from thelounge/astorije/fix-join-channel-load
Fix join channel UI opening by itself
2017-12-23 23:17:21 +02:00
Jérémie Astori 32a95c4d75
Merge pull request #1327 from thelounge/xpaw/view-changelog
Changelog viewer and updater checker in the client
2017-12-23 16:13:29 -05:00
Pavel Djundik c14c3b73d2
Merge pull request #1882 from thelounge/astorije/join-ui-message
Improve wording of join channel UI form restrictions
2017-12-23 21:10:02 +02:00
Jérémie Astori 4b34a093c9
Reduce changelog client cache to 1h since as there is also server caching now 2017-12-23 13:38:34 -05:00
Jérémie Astori 57c24704af
Cache changelog information on the server for 15 minutes 2017-12-23 13:37:33 -05:00
Jérémie Astori 0cbe0cb24e
Merge pull request #1884 from thelounge/xpaw/fix-1883
Fix #1883: message gaps when reconnecting
2017-12-23 13:10:17 -05:00
Pavel Djundik 18d135ca92
Merge pull request #1880 from thelounge/astorije/client-settings-tooltip
Rename "Client Settings" into "Settings" in tooltip + cleanup
2017-12-23 11:38:31 +02:00
Pavel Djundik 6377e0de66 Fix #1883: message gaps when reconnecting 2017-12-23 11:36:52 +02:00
Jérémie Astori 7fa30980aa
Improve wording of join channel UI form restrictions
This gives a more actionable message to the user if they do not enter a valid value.
2017-12-23 03:05:29 -05:00
Jérémie Astori 6c50fe72b9
Fix join channel UI opening by itself
Without this, `target` was matching all of the lobby link, the "Join a channel..." button, and the join form submit button. This change restricts to the first one.
2017-12-23 03:00:16 -05:00
Jérémie Astori 685951966b
Rename "Client Settings" into "Settings" in tooltip, cleanup 2017-12-22 22:53:56 -05:00
Jérémie Astori 9691df67e3
Improve UI of the About section and changelog viewer
- Keep consistent width between the Help page and Changelog (which is already different from other windows 😠)
- Add icons to the About links
- Make sure `li` elements (i.e. all the lists in changelogs) are consistent in size with rest of the client
- Display version and release notes link on the "About The Lounge" header line, smaller, pushed to the right
- Check new releases when opening the Help window in order to display it without having to open the release notes. Release notes are being fed to the Changelog page at that moment to avoid fetching twice.
- Re-check version/fetch release notes after 24h. Since The Lounge can now run 24/7, reconnect when losing the network, we have to assume an "always-on" usage.
- Change icon, animate background color when getting response from GitHub to avoid flashing.
- Combine click handlers with our wonderful window management. These were the same handler, even with similar checks (`target` exists, etc.), just in 2 different places. This is necessary for the next item.
- Combine "Open release notes" and "Go back to Help" button behaviors with window management handlers. The window management code is gross as ever, and is in desperate need of a refactor, but at least there is no duplicated code for the same behavior + history management. This fixes the "Next" history behavior (however reloading the app while viewing the notes does not load on the notes, but this is a bug for a different PR!).
- Added a rule in the history management thingy: if a link we want to add history handling to has an `id`, store that in the state
- Added a button to go back to the Help window
- Fixed links to releases
- Send user to the GitHub issues *list* instead of *new issue form* because if they do not have a GitHub account, they will be redirected to the login page, which is a rather unpleasant experience when you are already confused...
- Fixed a bug that would return data about a new release in `latest` even though it is already the `current`. It was showing the current version as "The Lounge v... is now available".
- Added https://user-images.githubusercontent.com to the CSP rule when prefetch storage is enabled, because that is where we have stored screenshots in the changelog so far. Meh (we can improve that later if we decide to have a dedicated place for screenshots).
- Fetch changelog info even in public mode because users in public mode can access the release notes. They do not see the result of the version checker however.
2017-12-22 22:46:11 -05:00
Jérémie Astori cbe9a4e221
Support pre blocks in our style
We use this in our changelogs. Style for this is straight from Bootstrap 3 minus the border.
2017-12-22 22:04:41 -05:00
Pavel Djundik df858a5aaf
Add changelog viewing and update checking 2017-12-22 16:26:12 -05:00
Jérémie Astori 5490235f4d
Merge pull request #1836 from MaxLeiter/join_channel
Join channel UI
2017-12-22 13:13:34 -05:00
Jérémie Astori 47f95c234d
Call the openForm function specifically when clicking on the context menu instead of relying on click handler
Not defining a `toggleForm` function has the advantage of "fixing" the fact that clicking "Join a channel..." from the context menu would close it when it was already open
2017-12-22 12:18:49 -05:00
Jérémie Astori 1063d7b1d6
Mark the channel field of "Join a channel" UI as required 2017-12-22 12:18:48 -05:00
Jérémie Astori a03f894888
Change content of tooltip and button when opening/closing join channel form 2017-12-22 12:18:48 -05:00
Jérémie Astori d2b0385431
Add a keyboard handler to close the join form when hitting "Escape" 2017-12-22 12:18:48 -05:00
Jérémie Astori 9ea3966140
Move the join channel form to its own component 2017-12-22 12:18:47 -05:00
Jérémie Astori 522bba694b
Use an ellipsis for change nick and join channel tooltips 2017-12-22 12:18:47 -05:00
Jérémie Astori 3307ced4d8
Remove background on close/join-channel sidebar buttons 2017-12-22 12:18:47 -05:00
Max Leiter 3fde87efbc
Add join channel UI via context menu or plus button next to lobbys 2017-12-22 12:18:46 -05:00
Al McKinlay 148628c49f
Merge pull request #1877 from thelounge/greenkeeper/copy-webpack-plugin-4.3.1
Update copy-webpack-plugin to the latest version 🚀
2017-12-22 13:18:08 +00:00
greenkeeper[bot] 5edc8914b9 chore(package): update copy-webpack-plugin to version 4.3.1 2017-12-22 12:40:39 +00:00
Pavel Djundik 18a9a82c26
Merge pull request #1876 from thelounge/xpaw/notequal-lobby
Use notEqual helper for close button
2017-12-22 13:57:43 +02:00
Pavel Djundik aad9033d06
Use notEqual helper for close button 2017-12-22 12:30:23 +02:00
Pavel Djundik 06becc798f
Merge pull request #1874 from thelounge/astorije/handlebars-notEqual
Add a `notEqual` block helper for Handlebars and tests for `equal`
2017-12-22 12:28:15 +02:00
Al McKinlay 8004e051aa
Merge pull request #1833 from Cldfire/master
Remove lobby close button
2017-12-22 10:18:29 +00:00
Al McKinlay 8ac0586464
Merge pull request #1875 from MiniDigger/patch-1
Fix incorrect documentation url in default config
2017-12-22 10:17:49 +00:00
MiniDigger 9517360531
Fix incorrect documentation url in default config 2017-12-22 10:16:09 +01:00
Jérémie Astori 371c5bcac2
Add a notEqual block helper for Handlebars 2017-12-21 22:09:08 -05:00
Jérémie Astori 6d053d65e7
Add tests for the Handlebars helper equal 2017-12-21 20:09:12 -05:00
Jérémie Astori 8652ca6968
Merge pull request #1845 from thelounge/astorije/error-loading
Improve error page at loading time
2017-12-21 19:23:41 -05:00
Jérémie Astori f975426c61
Rename the error handlers file at loading time 2017-12-21 18:23:54 -05:00
Jérémie Astori 84db8d8866
Wrap entire error loading script in anonymous function to avoid leaks 2017-12-21 18:23:52 -05:00
Jérémie Astori 0ffd4d60d9
Improve error page at loading
- Display the "Reload page" instantly and not after 5 seconds
- Remove stack trace, buggy anyway
- Wrap the error details so it does not expand beyond boundaries (scrollbar would not show up either)
- Do not show the slow-loading warning on error
- Make zeeoe details selectable instead of editable
- Label improvements
2017-12-21 18:22:53 -05:00
Jérémie Astori da7481c23c
Merge pull request #1850 from thelounge/xpaw/whois-dl
Format whois as a definition list
2017-12-21 18:05:01 -05:00
Jérémie Astori 3f9a8d6066
Merge pull request #1871 from thelounge/astorije/focus-buttons
Add visual feedback on focused buttons, for example when tabbing to it
2017-12-21 16:56:02 -05:00
Jérémie Astori 98cab94f9b
Add visual feedback on focused buttons, for example when tabbing to it 2017-12-21 16:38:20 -05:00
Pavel Djundik 56b5a13abc
Merge pull request #1855 from MaxLeiter/primer-npm
Update to primer on npm
2017-12-21 16:41:54 +02:00
Max Leiter 32b4349130 Update to primer on npm, set tooltipped-no-delay for all tooltips 2017-12-20 22:04:13 -08:00
Jérémie Astori 31f1c2bf2b
Merge pull request #1858 from thelounge/yamanickill/context-menu-banlist
Add banlist context menu item if user isn't normal user
2017-12-20 20:13:55 -05:00
Al McKinlay 96adc56cd7
Merge pull request #1865 from thelounge/xpaw/proper-msg-from-fix
Correctly fix `from` field in messages
2017-12-20 12:07:48 +00:00
Pavel Djundik dc8c10f461 Correctly fix from field in messages
This should have been in #1859
2017-12-20 13:45:17 +02:00
Al McKinlay 5084037cdc Add banlist context menu item 2017-12-20 09:53:28 +00:00
Jérémie Astori 09b2cd7527
Merge pull request #1863 from thelounge/greenkeeper/nyc-11.4.1
Update nyc to the latest version 🚀
2017-12-20 01:16:23 -05:00
greenkeeper[bot] 4a2101e3fc chore(package): update nyc to version 11.4.1 2017-12-20 05:35:33 +00:00
Jérémie Astori 70f3d7d6cc
Merge pull request #1859 from thelounge/xpaw/msg-user
Fix possible issues with `from` in messages
2017-12-19 19:30:52 -05:00
Jérémie Astori 2ca5b3d407
Merge pull request #1857 from thelounge/greenkeeper/moment-2.20.1
Update moment to the latest version 🚀
2017-12-19 19:29:05 -05:00
Pavel Djundik ce5d18c4fa Fix possible issues with from in messages 2017-12-19 13:45:33 +02:00
Pavel Djundik 602c50989f
Merge pull request #1854 from thelounge/greenkeeper/textcomplete-0.16.0
Update textcomplete to the latest version 🚀
2017-12-19 13:19:56 +02:00
greenkeeper[bot] cbca3887ae fix(package): update moment to version 2.20.1 2017-12-19 04:51:37 +00:00
Jérémie Astori a5dea8caa0
Update how textcomplete gets imported per the v0.16 changes
See ab6509782a (diff-04c6e90faac2675aa89e2176d2eec7d8)
2017-12-18 23:15:08 -05:00
greenkeeper[bot] 461d61d6f5 chore(package): update textcomplete to version 0.16.0 2017-12-19 01:32:34 +00:00
Jérémie Astori 95ff256e68
Merge pull request #1853 from thelounge/xpaw/clear-storage
Clear storage folder after successful start and graceful exit
2017-12-18 19:31:46 -05:00
Pavel Djundik 2b7657a9e7 Format whois as a definition list 2017-12-18 19:40:01 +02:00
Pavel Djundik c06fb9a275 Clear storage folder after successful start and graceful exit 2017-12-18 16:59:05 +02:00
Al McKinlay ada870e959
Merge pull request #1843 from thelounge/astorije/time-status-mobile
Add missing time (and icon) of status messages on mobile
2017-12-18 14:00:14 +00:00
Jérémie Astori 36be7565a7
Merge pull request #1691 from realies/patch-2
fix gap between #sidebar and #footer
2017-12-18 00:06:14 -05:00
Cldfire daa45c13fd Remove lobby close button
Without cheating and doing `display: none` this time around.
2017-12-17 22:28:56 -05:00
Jérémie Astori 27b6849678
Merge pull request #1799 from thelounge/xpaw/nick-postfix
Insert user-configurable string when autocompleting nicks
2017-12-17 20:22:30 -05:00
Pavel Djundik b5ad495c6d Insert user-configurable string when autocompleting nicks
Fixes #1176
2017-12-17 21:15:47 +02:00
Pavel Djundik 7dd4603d3c
Merge pull request #1849 from thelounge/astorije/fix-special-chans
Fix UI issues with special channels
2017-12-17 19:37:18 +02:00
Pavel Djundik 41014cdf05
Merge pull request #1848 from thelounge/greenkeeper/moment-2.20.0
Update moment to the latest version 🚀
2017-12-17 19:35:27 +02:00
Jérémie Astori af4f322bf9
Fix UI issues with special channels
As a reminder, "special" channels right now are banlists and channel lists.

- Remove that bottom margin that was causing things to hide behind the message input. This was probably relevant before the whole UI was flexbox-based and was not removed when switching.
- Do not align to bottom on special channels
- Hide unread and date markers on special channels
- Make sure table headers in special channels are not truncated, which was for example the case with "Users" being broken up ("User" and "s" on 2 different lines)
2017-12-17 01:14:11 -05:00
greenkeeper[bot] 5d08578a74 fix(package): update moment to version 2.20.0 2017-12-17 01:24:17 +00:00
Jérémie Astori bf602db991
Merge pull request #1844 from thelounge/astorije/mousetrap-mod
Use cross-platform modifier shortcut for Mousetrap when possible
2017-12-16 16:26:44 -05:00
Jérémie Astori cd606b8c28
Use cross-platform modifier shortcut for Mousetrap when possible
See https://craig.is/killing/mice#api.bind.combo
2017-12-16 16:14:12 -05:00
Jérémie Astori d9cc335351
Add missing time (and icon) of status messages on mobile 2017-12-16 16:11:10 -05:00
Jérémie Astori ffe8f2899b
Merge pull request #1787 from thelounge/xpaw/messages-bottom
Align message container to the bottom
2017-12-15 22:27:04 -05:00
Jérémie Astori 80f6171bd2
2.7.0-pre.3 2017-12-15 21:32:23 -05:00
Jérémie Astori 721170283c
Add changelog entry for v2.7.0-pre.3 2017-12-15 21:28:34 -05:00
Jérémie Astori 0a333ad84d
Merge pull request #1829 from thelounge/astorije/better-icons
Use better icons for channel/query list and context menu actions
2017-12-15 19:27:19 -05:00
Jérémie Astori 861d6b6642
Use better icons for channel/query list and context menu actions 2017-12-15 19:09:15 -05:00
Pavel Djundik d68c2caa26
Merge pull request #1841 from thelounge/greenkeeper/stylelint-8.4.0
Update stylelint to the latest version 🚀
2017-12-15 11:32:14 +02:00
greenkeeper[bot] 15acab80d4 chore(package): update stylelint to version 8.4.0 2017-12-15 08:44:55 +00:00
Jérémie Astori ec9abe49b2
Merge pull request #1837 from thelounge/greenkeeper/copy-webpack-plugin-4.3.0
Update copy-webpack-plugin to the latest version 🚀
2017-12-15 01:59:41 -05:00
greenkeeper[bot] 4d2b550cf8 chore(package): update copy-webpack-plugin to version 4.3.0 2017-12-14 09:20:26 +00:00
Al McKinlay b9f1b9fd4d
Merge pull request #1832 from MaxLeiter/media
Rename thumbnail/image option to more general `media`
2017-12-14 09:05:40 +00:00
Al McKinlay 8b52825d51
Merge pull request #1817 from MaxLeiter/videos
Support video file previews
2017-12-14 08:56:58 +00:00
Max Leiter d4ad60c11d Support video file previews 2017-12-13 17:52:07 -08:00
Max Leiter fdd8ef3e6a
Rename thumbnail/image option to more general 'media' 2017-12-13 20:03:12 -05:00
Jérémie Astori b67e7ee3ef
Merge pull request #1835 from thelounge/greenkeeper/textcomplete-0.15.0
Update textcomplete to the latest version 🚀
2017-12-13 18:58:07 -05:00
Pavel Djundik ccd37aba8f
Merge pull request #1725 from keegan/master
Stop LDAP Auth from succeeding without password
2017-12-13 20:20:10 +02:00
greenkeeper[bot] d68a2fa872 chore(package): update textcomplete to version 0.15.0 2017-12-13 15:15:02 +00:00
Pavel Djundik 7dcab09516
Merge pull request #1806 from MaxLeiter/sound
Support audio file previews
2017-12-13 11:03:04 +02:00
Jérémie Astori 96d3e58734
Remove deprecated options for thelounge start
This was replaced with the `--config` option.
2017-12-13 01:33:25 -05:00
Jérémie Astori 234c4a8bac
Merge pull request #1831 from thelounge/xpaw/extended-colors
Add styling for 16-98 colors
2017-12-12 20:28:39 -05:00
Max Leiter ad1114ccfe Support audio file previews 2017-12-12 11:29:13 -08:00
Pavel Djundik ccd0a6559b Add styling for 16-98 colors 2017-12-12 20:14:05 +02:00
Pavel Djundik e1ae339190 Add test for extended colors 2017-12-12 20:06:37 +02:00
Jérémie Astori 9a8cde189d
Remove autoload deprecation notice 2017-12-12 02:58:17 -05:00
Jérémie Astori deaf803467
Remove deprecated support for debug as a boolean in the configuration file 2017-12-12 02:57:39 -05:00
Jérémie Astori 826482bb5b
Remove deprecated support for the --home option and $LOUNGE_HOME environment variable 2017-12-12 02:54:50 -05:00
Jérémie Astori 3e708f9c0b
Get rid of Object.assign polyfill
As far as I know, this is only required for IE at this point, and we have already made changes that removed support of any version of IE.
2017-12-12 02:42:59 -05:00
Jérémie Astori d0f5d5025e
Merge pull request #1820 from thelounge/astorije/config-options
Deprecate existing options of `thelounge start` and add a generic `--config` override
2017-12-12 00:48:59 -05:00
Jérémie Astori d89112173d
Fix command line index parsing options (--home and --config) twice 2017-12-11 23:53:51 -05:00
Jérémie Astori 6547d18e7f
Color all references to deprecations in bold red 2017-12-11 23:48:52 -05:00
Jérémie Astori 07a01b0547
Deprecate existing options of thelounge start in favor or -c, --config 2017-12-11 23:48:52 -05:00
Jérémie Astori df2787d3e9
Add a --config / -c option to the start CLI command to arbitrarily override any configuration key
The biggest caveat is that JS code (such as functions) will not be interpreted as such, on purpose, for security precautions. If such thing is needed, then a configuration file must be used.
2017-12-11 23:48:52 -05:00
Jérémie Astori b90c224a99
Define a raw logger to avoid using console.log, use it in extra help for environment variables, and add a test for this
This has multiple benefits:

- Respects the "Do not mock what you do not own" principle, instead we mock `log.raw` when necessary
- Lets us not re-assign `console.log`, which breaks as Mocha uses `console.log` as well
- Save and restore initial `log.raw` in test hooks (before/after), otherwise this would break Mocha/Chai
2017-12-11 23:48:51 -05:00
Jérémie Astori 6077a1ae67
Merge pull request #1828 from thelounge/greenkeeper/eslint-4.13.1
Update eslint to the latest version 🚀
2017-12-11 23:24:25 -05:00
Jérémie Astori aa66f284e7
Merge pull request #1826 from thelounge/greenkeeper/fs-extra-5.0.0
Update fs-extra to the latest version 🚀
2017-12-11 23:23:55 -05:00
Jérémie Astori aeb8f66f30
Merge pull request #1722 from creesch/contextMenu
Add actions to user context menu
2017-12-11 23:14:54 -05:00
Erik Vosseberg 33d865501d
Add whois and conversation as action to user contextmenu
Add Op specific actions to contextMenu

Show context menu when left clicking user

Switch to using data attributes as selectors

remove ban as possible action

Move `isOpInChannel()` to utils.js

Capitalize strings

use CSS.escape for `ownNick`

use string interpolation

properly point to findCurrentNetworkChan

Move context menu item actions to command pattern

add icons for context menu actions

Make list in context menu always list.

remove empty lines in style.css

use info circle instead of question circle

change context menu labels.

change contextMenuActions.execute to more explicit method.
2017-12-11 23:04:29 -05:00
greenkeeper[bot] 6fb09048f6 chore(package): update eslint to version 4.13.1 2017-12-11 23:51:07 +00:00
greenkeeper[bot] e652ff6c7d fix(package): update fs-extra to version 5.0.0 2017-12-11 17:42:23 +00:00
Pavel Djundik 9b75b5727a
Merge pull request #1824 from thelounge/astorije/icons
Improve user and channel icons in channel list and context menu
2017-12-11 13:22:56 +02:00
Pavel Djundik 4be5ed693c
Merge pull request #1822 from thelounge/greenkeeper/moment-2.19.4
Update moment to the latest version 🚀
2017-12-11 11:24:59 +02:00
Jérémie Astori ce2adb4b8d
Use hashtag icon for channel instead of the sad file icon :) 2017-12-11 01:20:28 -05:00
Jérémie Astori 9436ba9301
Make sure user icon matches in network list, window context menu, and nick context menu 2017-12-11 01:19:50 -05:00
greenkeeper[bot] 493a5407a2 fix(package): update moment to version 2.19.4 2017-12-11 01:21:14 +00:00
Jérémie Astori c0869b05a3
Merge pull request #1807 from thelounge/astorije/users-commands
Do not load user commands or display them on `--help` if public mode or using LDAP
2017-12-10 14:24:55 -05:00
Pavel Djundik 4e6a29db35
Merge pull request #1797 from grissly-man/master
#1793 - implement reverse style
2017-12-10 16:15:40 +02:00
Pavel Djundik 40af84b653
Merge pull request #1818 from thelounge/astorije/improve-tests
Remove dead code in tests, and fix a link test
2017-12-10 11:55:59 +02:00
Pavel Djundik ca22da28a7
Merge pull request #1821 from thelounge/astorije/empty-conf-warning
Warn if user configuration being loaded is empty
2017-12-10 11:55:14 +02:00
Jérémie Astori 206ded55ff
Warn if user configuration being loaded is empty 2017-12-10 01:03:00 -05:00
Jérémie Astori c2243ed7b4
Remove dead code in tests, and fix a link test
I used `npm run coverage` while *not* excluding the test folder to detect dead code in our test folder, it is actually pretty useful to do so (as a one-shot, not to do that in our config).
Only remaining unreached path is L40 in `test/plugins/auth/ldap.js`, but it does seem to me that it might be useful in case of failures, so I preferred to leave it there.
2017-12-09 18:56:05 -05:00
Jérémie Astori a8fb892873
Merge pull request #1816 from MaxLeiter/fix-network-context
Proper network icon in context menu
2017-12-09 18:17:38 -05:00
Pavel Djundik de98c2b13a
Merge pull request #1802 from MaxLeiter/chanlist
Add 'Channel list' to network context menu
2017-12-10 01:09:35 +02:00
Max Leiter 6311176f00 Proper network icon in context menu 2017-12-09 15:03:15 -08:00
Max Leiter fb5eb0664a Add 'Channel list' to network context menu 2017-12-09 14:34:33 -08:00
Jérémie Astori c21aee3d4a
Do not load user commands or display them on --help if public mode or using LDAP 2017-12-09 01:51:08 -05:00
Jérémie Astori c038935b96
Move user commands to their own subfolder 2017-12-09 01:38:52 -05:00
Jérémie Astori 844ca1fbe6
Merge pull request #1811 from thelounge/astorije/improve-helper
Clean up path helpers, expand defaults location in `thelounge --help`, add tests for `expandHome`
2017-12-08 21:53:14 -05:00
Jérémie Astori 22237658cb
Add some unit tests for Helper.expandHome 2017-12-08 19:50:32 -05:00
Jérémie Astori f32cd57bcb
Merge pull request #1814 from thelounge/xpaw/clean-extra
Clean monospace and strikethrough formatters
2017-12-08 19:05:04 -05:00
Jérémie Astori ebc2d7ecc5
Merge pull request #1815 from thelounge/greenkeeper/eslint-4.13.0
Update eslint to the latest version 🚀
2017-12-08 19:04:24 -05:00
greenkeeper[bot] c562c4fd58 chore(package): update eslint to version 4.13.0 2017-12-08 22:29:41 +00:00
Pavel Djundik b391b87e29 Clean monospace and strikethrough formatters 2017-12-08 21:09:23 +02:00
Jérémie Astori 52d5cb2311
Expand home shorthand in CLI help around THELOUNGE_HOME environment variable 2017-12-07 23:03:40 -05:00
Jérémie Astori 0482747781
Only use helpers and not shared variables around path helpers
This refactor has a few benefits, for example there cannot be a rogue update of `Helper.CONFIG_PATH` or something.
2017-12-07 23:02:32 -05:00
Jérémie Astori 7bbd3d61d5
Merge pull request #1810 from thelounge/xpaw/tweak-csp
Harden content security policy even further
2017-12-07 19:35:01 -05:00
Pavel Djundik fb0f68f8a5 Harden content security policy even further 2017-12-07 20:45:45 +02:00
Logan Griswold fb94ad4205 implement reverse formatting with tests
implement reverse formatting with tests
2017-12-07 18:27:59 +00:00
Pavel Djundik f9be519c2f
Merge pull request #1593 from RJacksonm1/reload-passwords-all-proper-like
Ensure passwords are reloaded when updated via CLI
2017-12-07 13:18:16 +02:00
Jérémie Astori b662764caa
Merge pull request #1800 from thelounge/xpaw/textcomplete
Update textcomplete library and rewrite tabcomplete
2017-12-06 18:29:49 -05:00
Pavel Djundik 65423eb8fd
Merge pull request #1380 from thelounge/xpaw/inline-notices
Show notices and errors inline
2017-12-06 18:06:40 +02:00
Pavel Djundik 5e48e04623 Show notices and errors inline 2017-12-06 17:58:52 +02:00
Jérémie Astori 3df1e9d731
Merge pull request #1804 from thelounge/xpaw/no-use-before-define
Enable no-use-before-define rule
2017-12-06 09:08:38 -05:00
Jérémie Astori 6ec1a2ee14
Merge pull request #1803 from thelounge/xpaw/merge-condensed
Merge condensed messages when loading more history
2017-12-06 09:07:33 -05:00
Pavel Djundik 20af04bca0 Enable no-use-before-define rule 2017-12-06 15:57:04 +02:00
Pavel Djundik e462ed6270 Rewrite tabcomplete 2017-12-06 15:47:30 +02:00
Pavel Djundik 1bdbb75d4c Merge condensed messages when loading more history 2017-12-06 14:07:43 +02:00
Pavel Djundik df703dc73a Upgrade to new textcomplete library 2017-12-06 12:06:57 +02:00
Rob Jackson 15f7f2e371
Ensure passwords are reloaded when updated via CLI (fixes #598) 2017-12-05 18:52:08 -05:00
Jérémie Astori db53f13865
Merge pull request #1794 from thelounge/xpaw/handle-js-errors
Handle javascript errors while loading
2017-12-05 18:33:11 -05:00
Jérémie Astori ee6ff6a5e5
Merge pull request #1798 from thelounge/greenkeeper/fs-extra-4.0.3
Update fs-extra to the latest version 🚀
2017-12-05 18:31:17 -05:00
greenkeeper[bot] 481b6fd336 fix(package): update fs-extra to version 4.0.3 2017-12-05 15:03:53 +00:00
Pavel Djundik 2afd4d7ec4 Hide error under details 2017-12-05 15:17:31 +02:00
Pavel Djundik 2d0ddfb2e8
Merge pull request #1778 from thelounge/xpaw/lazy-init
Heavily improve performance of "init" event
2017-12-05 12:03:01 +02:00
Pavel Djundik c5bda23548
Merge pull request #1578 from thelounge/ircv3/chghost
Handle `CHGHOST` cap
2017-12-05 11:18:58 +02:00
Pavel Djundik b5d39b96b9
Handle CHGHOST cap 2017-12-04 23:33:48 -05:00
Jérémie Astori b80710ed82
Merge pull request #1788 from PolarizedIons/PolarizedIons/actualip
Add actualip to the actualhost line in the whois output
2017-12-04 23:30:04 -05:00
Jérémie Astori 4b3f22701e
Merge pull request #1782 from thelounge/greenkeeper/irc-framework-2.10.0
Update irc-framework to the latest version 🚀
2017-12-04 23:29:01 -05:00
Jérémie Astori 915f1da190
Merge pull request #1796 from thelounge/greenkeeper/webpack-3.10.0
Update webpack to the latest version 🚀
2017-12-04 23:27:46 -05:00
greenkeeper[bot] 04f4bb1269 fix(package): update irc-framework to version 2.10.2 2017-12-04 20:53:20 +02:00
greenkeeper[bot] 3e1c96552d chore(package): update webpack to version 3.10.0 2017-12-04 18:21:21 +00:00
Jérémie Astori 683bc4ef60
Merge pull request #1792 from grissly-man/master
Implement strikethrough and monospace formatting
2017-12-03 15:15:19 -05:00
Logan Griswold f07c1bef69
#1755 - implement monospace formatting with keybinding, tests, and help section 2017-12-03 15:10:46 -05:00
Logan Griswold 0643d3b4a3
#1754 - implement strikethrough formatting, client keybinding, tests, and help section 2017-12-03 15:10:34 -05:00
Pavel Djundik e3823803aa Handle javascript errors while loading 2017-12-03 17:16:56 +02:00
Pavel Djundik 5fc70397a9 Make sure all joins send filtered clone 2017-12-03 16:31:37 +02:00
Pavel Djundik fe1c7612f5 Add tests for getFilteredClone methods 2017-12-03 16:31:37 +02:00
Pavel Djundik 552f3da67e Implement manual network/channel cloning for better performance 2017-12-03 16:31:37 +02:00
Pavel Djundik 41e121d270 Only emit a single message per channel on init 2017-12-03 16:13:18 +02:00
Jérémie Astori 2f47307437
Merge pull request #1790 from thelounge/greenkeeper/intersection-observer-0.5.0
Update intersection-observer to the latest version 🚀
2017-12-02 17:57:14 -05:00
greenkeeper[bot] 80040dc153 chore(package): update intersection-observer to version 0.5.0 2017-12-02 20:58:55 +00:00
Jérémie Astori f237ed1684
2.7.0-pre.2 2017-12-01 22:50:53 -05:00
Jérémie Astori f277864454
Add changelog entry for v2.7.0-pre.2 2017-12-01 22:50:17 -05:00
Jérémie Astori 8a568a3ef4
Merge pull request #1789 from thelounge/xpaw/notification-permission
Ask for notification permission on page load if setting is enabled
2017-12-01 22:42:57 -05:00
Pavel Djundik 6aff2657e9 Ask for notification permission on page load if setting is enabled 2017-12-01 22:27:36 +02:00
stepie22 c7f6b8409f Change whois's actual host to include the actualip aswell 2017-12-01 15:03:02 +02:00
Pavel Djundik a469f22699
Merge pull request #1780 from thelounge/greenkeeper/webpack-3.9.0
Update webpack to the latest version 🚀
2017-12-01 12:53:29 +02:00
Pavel Djundik 52b234bdfc
Merge pull request #1770 from thelounge/astorije/client-tests
Add a bunch of client tests
2017-12-01 12:51:13 +02:00
Pavel Djundik 11568d7405 Align message container to the bottom 2017-12-01 12:41:26 +02:00
Pavel Djundik 9d87ce5d7a
Merge pull request #1785 from thelounge/astorije/fix-home-fie-rename
Do not rename home file as it is very likely to have permission issues
2017-12-01 11:49:11 +02:00
greenkeeper[bot] 8889201081 chore(package): update webpack to version 3.9.1
Closes #1780
2017-12-01 11:46:32 +02:00
Pavel Djundik 1bca238e9b
Merge pull request #1781 from thelounge/greenkeeper/web-push-3.2.5
Update web-push to the latest version 🚀
2017-12-01 11:31:13 +02:00
Jérémie Astori 052248445c
Do not rename home file as it is very likely to have permission issues
On most systems (Linux at least), to install a npm package locally, one must use `sudo`. When The Lounge runs, it usually does not run with `sudo`. This causes the program to crash as user running The Lounge cannot create/delete files there.

We will let people manually convert this file instead of doing it for them. This file is mainly intended for package authors anyway, most users will never have to touch it.
2017-12-01 01:33:04 -05:00
Jérémie Astori 6dd568b27f
2.7.0-pre.1 2017-11-30 21:03:36 -05:00
Jérémie Astori 89f1326ce7
Add pre-release tag until stable version is ready to be released 2017-11-30 21:02:48 -05:00
Jérémie Astori 7a15434d37
Add changelog entry for v2.7.0-pre.1 2017-11-30 21:00:27 -05:00
Jérémie Astori b2835855c0
Merge pull request #1779 from thelounge/xpaw/nick-links-fixes
Fix nicks not being detected in actions and duplicate nicks
2017-11-30 20:43:36 -05:00
Jérémie Astori 6bb0251d57
Ignore coverage folder from coverage report 2017-11-30 20:33:23 -05:00
Jérémie Astori f368dcdc69
Add a bunch of client tests 2017-11-30 20:33:23 -05:00
greenkeeper[bot] ed8037d1f0 fix(package): update web-push to version 3.2.5 2017-11-30 15:15:07 +00:00
Pavel Djundik d770028da6 Fix duplicate user names not being found 2017-11-30 14:16:11 +02:00
Pavel Djundik a7bd40a5b1 Fix users not being linked in /me actions 2017-11-30 14:13:11 +02:00
Pavel Djundik 104e270882
Merge pull request #1771 from thelounge/astorije/fix-user-in-msg
Clone instances of `User` in `Msg` to avoid unintentional mutations
2017-11-30 11:29:23 +02:00
Pavel Djundik f89054784f
Merge pull request #1764 from thelounge/xpaw/fix-data-from
Fix data-from on messages
2017-11-30 11:28:00 +02:00
Pavel Djundik be6975cb83
Merge pull request #1772 from thelounge/astorije/fix-nick-change
Fix nick changes wrongly reported
2017-11-30 11:26:26 +02:00
Pavel Djundik bdbdb69f02
Merge pull request #1773 from thelounge/astorije/fix-default-from
Fix default value given to `Msg.from`
2017-11-30 11:25:30 +02:00
Jérémie Astori fd72179b3d
Merge pull request #1777 from thelounge/greenkeeper/eslint-4.12.1
Update eslint to the latest version 🚀
2017-11-30 02:12:15 -05:00
greenkeeper[bot] 2f4205d095 chore(package): update eslint to version 4.12.1 2017-11-30 06:04:42 +00:00
Jérémie Astori 4ec10b922a
Clone instances of User in Msg to avoid unintentional mutations 2017-11-30 00:41:19 -05:00
Jérémie Astori e60bbd9548
Fix nick changes wrongly reported 2017-11-29 18:44:33 -05:00
Jérémie Astori c0d348a678
Fix default value given to Msg.from
- `{}` is not falsey so Handlebars would try to render the block (see http://handlebarsjs.com/builtin_helpers.html#conditionals), therefore with a `nick` of `undefined`, which breaks `colorClass` (doing `undefined.length)
- There does not seem to be a way to check for empty objects in Handlebars (sigh) so checking `from.nick` seems like the most reliable way to check for a non-empty value. Alternatively, we could use a helper to check `{}` but meh.
2017-11-29 18:37:17 -05:00
Pavel Djundik 36e0ce46b4
Merge pull request #1775 from thelounge/greenkeeper/moment-2.19.3
Update moment to the latest version 🚀
2017-11-29 22:25:02 +02:00
Pavel Djundik 68753ae3e8 Fix data-from on messages 2017-11-29 20:45:19 +02:00
Pavel Djundik 53968bf453
Merge pull request #1769 from thelounge/astorije/test-timeout
Increase timeout of server tests
2017-11-29 18:45:57 +02:00
greenkeeper[bot] a97a6de60f fix(package): update moment to version 2.19.3 2017-11-29 16:37:20 +00:00
Jérémie Astori 7de7292560
Increase timeout of server tests 2017-11-28 19:43:00 -05:00
Pavel Djundik c9e340e153
Merge pull request #1761 from thelounge/astorije/slow-tests
Mark slow tests as such to reduce noise on test report
2017-11-28 11:43:24 +02:00
Pavel Djundik c3b076ca74
Merge pull request #1759 from thelounge/astorije/avoid-escape-quotes2
Avoid escaping quotes whenever possible (again)
2017-11-28 11:41:15 +02:00
Pavel Djundik 561de89568
Merge pull request #1763 from thelounge/greenkeeper/commander-2.12.2
Update commander to the latest version 🚀
2017-11-28 11:41:02 +02:00
greenkeeper[bot] 12e0087d47 fix(package): update commander to version 2.12.2 2017-11-28 07:14:48 +00:00
Jérémie Astori 624b3ebc18
Mark slow tests as such to reduce noise on test report 2017-11-27 18:47:19 -05:00
Jérémie Astori 03d6bf06ee
Avoid escaping quotes whenever possible (again)
Oops, I forgot to rebase and fix after merging a previous PR. I wish there was a way to enforce this with ESLint, but did not find any (only allow) :(
2017-11-27 18:40:23 -05:00
Jérémie Astori c9da29f2fc
Merge pull request #1757 from thelounge/xpaw/detached-sign-in
Do not keep sign-in and loader references in memory
2017-11-27 18:32:20 -05:00
Jérémie Astori 7daf566025
Merge pull request #1758 from MaxLeiter/improve-regex
update nick regex for linking nicks in text
2017-11-27 18:30:37 -05:00
Max Leiter f98deaba70 update nick regex for linking nicks in text 2017-11-27 13:58:10 -08:00
Jérémie Astori 74521225ba
Merge pull request #1751 from thelounge/greenkeeper/stylelint-8.3.1
Update stylelint to the latest version 🚀
2017-11-27 13:32:01 -05:00
Jérémie Astori b53f1719eb
Merge pull request #1749 from thelounge/astorije/avoid-escape-quotes
Avoid escaping quotes whenever possible
2017-11-27 12:57:55 -05:00
Jérémie Astori e5862a9303
Merge pull request #1752 from thelounge/xpaw/simple-build-cmd
Avoid using npm-run-all for build
2017-11-27 12:57:21 -05:00
Jérémie Astori 39e99fcd29
Merge pull request #1753 from thelounge/xpaw/webp
Detect image/webp as an image
2017-11-27 12:55:27 -05:00
Pavel Djundik 5855099d5b Do not keep sign-in and loader references in memory 2017-11-27 19:39:16 +02:00
Pavel Djundik 4e2eed2023
Merge pull request #1709 from MaxLeiter/master
Link nicks mentioned in messages
2017-11-27 19:31:36 +02:00
Max Leiter 3d31fa4686 Link nicks mentioned in messages 2017-11-27 09:10:56 -08:00
Pavel Djundik 4e45820235
Detect image/webp as an image 2017-11-27 15:50:35 +02:00
Pavel Djundik ba002cca64
Merge pull request #1708 from thelounge/astorije/thelounge
Switch CLI tool from `lounge` to `thelounge`, deprecate `lounge`
2017-11-27 13:58:46 +02:00
Pavel Djundik 6fc812d272
Merge pull request #1748 from MaxLeiter/highlights
Fix text highlighting when clicking on condensed message toggles
2017-11-27 11:48:03 +02:00
Pavel Djundik 0dbdd4732b
Avoid using npm-run-all for build 2017-11-27 11:45:58 +02:00
Pavel Djundik 52f8934d9b
Merge pull request #1750 from thelounge/astorije/parallelize-npm-test
Parallelize `npm test`
2017-11-27 11:44:51 +02:00
greenkeeper[bot] 2fcb89a779 chore(package): update stylelint to version 8.3.1 2017-11-27 08:59:26 +00:00
Jérémie Astori b25884c5bd
Make stylelint report unncessary disables
From the man:

```
    --report-needless-disables, --rd

      Report stylelint-disable comments that are not blocking a lint warning.
      If you provide the argument "error", the process will exit with code 2
      if needless disables are found.
```
2017-11-26 17:57:14 -05:00
Jérémie Astori 2a8feaa454
Parallelize npm test
After this, tests run in ~7s locally vs. ~14s without. ¯\_(ツ)_/¯
One caveat is that coloring must be forced now. Hope this looks okay on Travis.
2017-11-26 17:54:58 -05:00
Jérémie Astori 287c3a8223
Avoid escaping quotes whenever possible
Our `.eslintrc.yml` configuration file already allows for avoiding escape (see [ESLint doc for `avoidEscape`](https://eslint.org/docs/rules/quotes#avoidescape)) so we might as well use it. We already use this in a few places I believe.
2017-11-26 17:34:28 -05:00
Jérémie Astori 823ed0153f
Merge pull request #1747 from thelounge/astorije/fix-parse
Fix duplicate text generated when sending channel and link together
2017-11-26 17:23:32 -05:00
Max Leiter d9d4672d75 Fix text highlighting when clicking on condensed message toggles 2017-11-26 14:05:23 -08:00
Jérémie Astori ddc7ace78d
Bring test from ircmessageparser
See https://github.com/Bonuspunkt/ircmessageparser/pull/12/files#diff-e6c9a6bca996bc454cc244d17bfeda5c for reference (same test, linted)
2017-11-26 17:02:57 -05:00
Bonuspunkt 0e52b133af Sending channel and link together generates duplicate text 2017-11-26 21:33:27 +02:00
Jérémie Astori d9efaef369
Merge pull request #1746 from thelounge/xpaw/fix-preview-keep-to-bottom
Trigger keep to bottom for previews correctly
2017-11-26 12:35:08 -05:00
Jérémie Astori 7f16ad649d
Merge pull request #1745 from thelounge/greenkeeper/stylelint-8.3.0
Update stylelint to the latest version 🚀
2017-11-26 12:33:08 -05:00
Pavel Djundik 6862c2e6b0 Trigger keep to bottom for previews correctly 2017-11-26 15:49:31 +02:00
Pavel Djundik e3515d2ea1 Update stylelint rules 2017-11-26 14:28:33 +02:00
greenkeeper[bot] 645b3c13b3 chore(package): update stylelint-config-standard to version 18.0.0 2017-11-26 14:06:27 +02:00
greenkeeper[bot] c5a530fe31 chore(package): update stylelint to version 8.3.0 2017-11-26 10:54:28 +00:00
Pavel Djundik 5ffeb04343
Merge pull request #1739 from thelounge/xpaw/inactive-scroll
Do not keep scroll to bottom in inactive channels
2017-11-26 11:40:50 +02:00
Pavel Djundik eaeb3375db
Merge pull request #1738 from thelounge/xpaw/extra-msg-trims
Trim channel messages in active channel and when switching channels
2017-11-26 11:40:31 +02:00
Jérémie Astori 9a3c9a7ab0
Merge pull request #1744 from thelounge/greenkeeper/eslint-4.12.0
Update eslint to the latest version 🚀
2017-11-26 00:21:54 -05:00
greenkeeper[bot] f092c2393c chore(package): update eslint to version 4.12.0 2017-11-26 04:09:23 +00:00
Jérémie Astori d99030aff5
Merge pull request #1743 from MaxLeiter/patch-3
Fix whois template parsing real name field
2017-11-25 16:13:51 -05:00
Max Leiter 9eb79d675c
Fix whois template parsing real name field
Links and etc will now render correctly
2017-11-25 12:23:03 -08:00
Jérémie Astori 553c24c909
Merge pull request #1742 from thelounge/xpaw/fetch-error-callback
Call callback on fetch error
2017-11-25 15:17:03 -05:00
Pavel Djundik 727021be68 Call callback on fetch error 2017-11-25 20:59:12 +02:00
Jérémie Astori 8585dbc6c4
Merge pull request #1736 from thelounge/greenkeeper/commander-2.12.0
Update commander to the latest version 🚀
2017-11-25 02:38:09 -05:00
Jérémie Astori 14f08ea271
Merge pull request #1737 from thelounge/greenkeeper/copy-webpack-plugin-4.2.2
Update copy-webpack-plugin to the latest version 🚀
2017-11-23 13:27:31 -05:00
Pavel Djundik 2f84b01427 Do not keep scroll to bottom in inactive channels 2017-11-23 19:33:19 +02:00
Pavel Djundik 15a52ccec3 Trim channel messages in active channel and when switching channels
Fixes #1461
2017-11-23 16:23:32 +02:00
greenkeeper[bot] 2fefe0e4f3 fix(package): update commander to version 2.12.1
Closes #1736
2017-11-23 10:24:28 +00:00
greenkeeper[bot] 5c6c34de83 chore(package): update copy-webpack-plugin to version 4.2.3
Closes #1737
2017-11-23 10:11:34 +00:00
Jérémie Astori 7fb92fee64
Merge pull request #1717 from thelounge/astorije/thelounge_home-env-var
Deprecate `LOUNGE_HOME` env var in favor of `THELOUNGE_HOME`, `.lounge_home` file in favor of `.thelounge_home`
2017-11-22 16:39:02 -05:00
Jérémie Astori aca23257ed
Switch CLI tool from lounge to thelounge and deprecate lounge
This is in preparation of The Lounge v3 which will make `thelounge` uniform across the entire project. No more confusion!
2017-11-22 16:37:26 -05:00
Jérémie Astori 643a8222a6
Merge pull request #1731 from thelounge/xpaw/fix-1413
Handle hex colours when cleaning string
2017-11-22 16:29:08 -05:00
Pavel Djundik c053011611 Make regex in cleanIrcMessage const 2017-11-22 16:06:32 +02:00
Pavel Djundik 28b084af69 Fix #1413 - Handle hex colours when cleaning string 2017-11-22 16:03:59 +02:00
Pavel Djundik ca389c914f
Merge pull request #1491 from realies/master
Focus a channel by joining it, refactor user commands #1189
2017-11-22 15:42:32 +02:00
Jérémie Astori a10f147c36
Merge pull request #1720 from thelounge/xpaw/fix-new-user-obj
Access new nick attribute in user object
2017-11-21 19:28:37 -05:00
keegan f73132e226
Stop LDAP Auth from succeeding without password 2017-11-21 19:19:24 -05:00
Pavel Djundik 3f06acfa6e
Merge pull request #1681 from creesch/whois
Include all available whois info
2017-11-21 21:26:10 +02:00
Pavel Djundik c268d91b4e Access new nick attribute in user object
This was broken in #1698
2017-11-21 13:54:12 +02:00
Jérémie Astori 827f1dab96
Deprecate LOUNGE_HOME env var in favor of THELOUNGE_HOME, .lounge_home file in favor of .thelounge_home
This is one more step towards uniformization of lounge/thelounge due with The Lounge v3.
2017-11-21 00:36:26 -05:00
Erik Vosseberg f40edc7dc2
Include all available whois info 2017-11-21 00:27:24 -05:00
Pavel Djundik 489bb8e395
Merge pull request #1683 from thelounge/astorije/split-index
Split index.html into components
2017-11-20 12:10:52 +02:00
Pavel Djundik 01f524b7c5 Don't send defaults if not displaying network 2017-11-19 19:46:04 +02:00
Pavel Djundik adab03f730 Fix test 2017-11-19 19:43:43 +02:00
Pavel Djundik e86a155ec2 Remove express-handlebars, read manifest.json to get theme-color 2017-11-19 19:43:43 +02:00
Pavel Djundik c30f4aaaeb Move help to view 2017-11-19 19:43:43 +02:00
Pavel Djundik dbc6b099fe unused var 2017-11-19 19:43:43 +02:00
Pavel Djundik 90861effb4 Fix sign in 2017-11-19 19:43:43 +02:00
Pavel Djundik 8d88779918 Fix options 2017-11-19 19:43:42 +02:00
Pavel Djundik e85e00ebed Remove unused 2017-11-19 19:43:42 +02:00
Pavel Djundik 711b5e1d91 Make settings/options mostly work
Fixes #1672
2017-11-19 19:43:42 +02:00
Pavel Djundik 55d1625ab2 Split connect and settings into templates 2017-11-19 19:43:42 +02:00
Pavel Djundik 2a6b255aee Make sign in work 2017-11-19 19:43:42 +02:00
Pavel Djundik 303dddb12e wip 2017-11-19 19:43:42 +02:00
Jérémie Astori 0e55dafd8a WIP 2017-11-19 19:43:42 +02:00
Pavel Djundik 055bd5dca5
Merge pull request #1580 from thelounge/xpaw/mobile-active-notifications
Use service worker to display notifications if available
2017-11-19 18:40:45 +02:00
Pavel Djundik 1e4c39a87c
Merge pull request #1716 from thelounge/xpaw/fix-topic-from
Not all topic callbacks include nick
2017-11-19 18:39:44 +02:00
Pavel Djundik 57289396da
Not all topic callbacks include nick 2017-11-19 18:30:10 +02:00
Pavel Djundik 0402554563 Move cleanIrcMessage to a separate file 2017-11-19 18:19:52 +02:00
Pavel Djundik 8791a17fc4 Use service worker to display notifications if available 2017-11-19 18:18:55 +02:00
Jérémie Astori da5a5c7175
Merge pull request #1712 from thelounge/xpaw/users-map
Convert users list to map
2017-11-19 11:07:05 -05:00
Pavel Djundik 0f75c1a138 Change users array to be a Map 2017-11-19 11:35:15 +02:00
Pavel Djundik 56a9ad184d
Merge pull request #1698 from thelounge/xpaw/refactor-user-msgs
Refactor how user object is sent to the client
2017-11-19 11:25:33 +02:00
Pavel Djundik 74dcc52657
Refactor how user object is sent to the client 2017-11-19 02:46:45 -05:00
Jérémie Astori f2d9ef62cf
Merge pull request #1715 from thelounge/astorije/deprecate-node-v4
Deprecate support of Node v4 in preparation of The Lounge v3
2017-11-19 01:05:57 -05:00
Jérémie Astori 3af9a45087
Merge pull request #1676 from realies/patch-1
handle empty client queries
2017-11-19 00:42:10 -05:00
realies c5de1b3dbe
handle empty client queries 2017-11-19 00:33:29 -05:00
Jérémie Astori 36ab3ffc8d
Merge pull request #1689 from thelounge/xpaw/parse-real-name
Parse formatting in real name
2017-11-19 00:07:23 -05:00
Jérémie Astori 257b6d320b
Merge pull request #1711 from thelounge/astorije/comma-dangle
Enforce dangling commas with ESLint
2017-11-19 00:06:22 -05:00
Jérémie Astori 5ffa91c964
Merge pull request #1713 from thelounge/greenkeeper/copy-webpack-plugin-4.2.1
Update copy-webpack-plugin to the latest version 🚀
2017-11-19 00:05:18 -05:00
Jérémie Astori 5c6b51a05b
2.6.0 2017-11-18 22:22:12 -05:00
Jérémie Astori 7d8b9b7e7c
Merge pull request #1714 from thelounge/astorije/changelog-2.6.0
Changelog entry for v2.6.0
2017-11-18 22:21:43 -05:00
Jérémie Astori 35f615187f
Remove pre-release dist tag 2017-11-18 13:55:54 -05:00
Jérémie Astori ef1c59072c
Deprecate support of Node v4 in preparation of The Lounge v3 2017-11-18 13:52:31 -05:00
Jérémie Astori 29557a1f3b
Add changelog entry for v2.6.0 2017-11-17 21:14:27 -05:00
Jérémie Astori a813d1a78f
Remove placeholder comment from the changelog now that it gets pre-generated by a script 2017-11-17 20:50:10 -05:00
Jérémie Astori 1c18ed9775
Merge pull request #1707 from thelounge/astorije/changelog-script
Add a script to pre-generate changelog entries
2017-11-17 20:21:18 -05:00
greenkeeper[bot] 71cdbfff53 chore(package): update copy-webpack-plugin to version 4.2.1 2017-11-17 14:21:03 +00:00
Jérémie Astori 1dc92d8934
Enforce dangling commas with ESLint
¯\_(ツ)_/¯
2017-11-15 01:35:15 -05:00
Jérémie Astori f6be0e0ee0
Add a script to pre-generate changelog entries
I have been using and improving that script for some time now, at least all 2.5 and 2.6 releases. 👌
2017-11-12 16:28:01 -05:00
Jérémie Astori f0a9fdb658
2.6.0-rc.4 2017-11-12 14:27:18 -05:00
Jérémie Astori 67957f15fc
Add changelog entry for v2.6.0-rc.4 2017-11-12 14:25:54 -05:00
Jérémie Astori 6af282e6e8
Merge pull request #1706 from thelounge/xpaw/fix-local-themes
Fix local theme folder
2017-11-12 14:24:21 -05:00
Pavel Djundik e5cded0ad6 Fix local theme folder 2017-11-12 21:11:08 +02:00
Jérémie Astori 1ead5fd53a
2.6.0-rc.3 2017-11-12 13:02:59 -05:00
Jérémie Astori e1aac141e0
Add changelog entry for v2.6.0-rc.3 2017-11-12 13:02:50 -05:00
Jérémie Astori bd3f60a480
Merge pull request #1705 from thelounge/astorije/client-folder
Make sure entire client folder is ignored on release, except findLink.js
2017-11-12 13:02:18 -05:00
Jérémie Astori 56fbc1197c
Make sure entire client folder is ignored on release, except findLink.js
This was tested using `npm pack`.
2017-11-12 12:54:51 -05:00
Jérémie Astori aa9e4aa8b4
2.6.0-rc.2 2017-11-12 12:34:31 -05:00
Jérémie Astori 95c9d37d2a
Add changelog entry for v2.6.0-rc.2 2017-11-12 12:32:26 -05:00
Jérémie Astori 290cbc1617
Merge pull request #1704 from thelounge/keep-findlinks-file
Fix #1703 - Keep findLinks file in npm builds
2017-11-12 12:09:54 -05:00
Pavel Djundik 4888ffea3b
Fix #1703 - Keep findLinks file in npm builds 2017-11-12 12:11:24 +02:00
Jérémie Astori 1906bae5f5
2.6.0-rc.1 2017-11-11 20:26:18 -05:00
Jérémie Astori 1f950878d7
Add changelog entry for v2.6.0-rc.1 2017-11-11 20:26:12 -05:00
Jérémie Astori 91691bd747
Add pre-release tag until stable version is ready to be released 2017-11-11 20:22:44 -05:00
Jérémie Astori 21badddc38
Merge pull request #1609 from dgw/restore-autocomplete-help
Restore autocompletion help
2017-11-11 20:16:09 -05:00
Jérémie Astori 1e7b398903
Merge pull request #1701 from thelounge/xpaw/sync-write
Go back to writing user files synchronously
2017-11-11 19:24:28 -05:00
Jérémie Astori c9039115bb
Merge pull request #1702 from thelounge/greenkeeper/moment-2.19.2
Update moment to the latest version 🚀
2017-11-11 19:23:03 -05:00
greenkeeper[bot] 59fe513142 fix(package): update moment to version 2.19.2 2017-11-11 20:45:24 +00:00
Pavel Djundik 9ff398dac3 Go back to writing user files synchronously 2017-11-11 20:44:09 +02:00
Pavel Djundik 5fd493bdc2
Merge pull request #1699 from thelounge/greenkeeper/eslint-4.11.0
Update eslint to the latest version 🚀
2017-11-11 11:21:11 +02:00
Jérémie Astori 4034861d2d
Merge pull request #1697 from thelounge/greenkeeper/intersection-observer-0.4.3
Update intersection-observer to the latest version 🚀
2017-11-10 20:39:02 -05:00
greenkeeper[bot] af060bd2d0 chore(package): update eslint to version 4.11.0 2017-11-10 22:08:08 +00:00
greenkeeper[bot] 760c8046b2 chore(package): update intersection-observer to version 0.4.3 2017-11-10 20:32:28 +00:00
Pavel Djundik 48b6a136d1
Merge pull request #1693 from thelounge/xpaw/fix-1692
Fix #1692 when kicker is server
2017-11-10 17:09:34 +02:00
Pavel Djundik 329a27d5c6
Merge pull request #1695 from thelounge/xpaw/fix-unhandled-data
Fix missing attributes on unhandled messages
2017-11-10 17:09:17 +02:00
Pavel Djundik 9ff974b702 Fix missing attributes on unhandled messages 2017-11-10 16:18:44 +02:00
Pavel Djundik feb7d9d4bb Fix #1692 when kicker is server 2017-11-08 23:10:17 +02:00
realies 5c4e1e55a6
fix gap between #sidebar and #footer 2017-11-08 18:01:35 +02:00
Jérémie Astori f8af23c64a
Merge pull request #1688 from thelounge/greenkeeper/npm-run-all-4.1.2
Update npm-run-all to the latest version 🚀
2017-11-07 19:42:31 -05:00
Pavel Djundik 10dab7afac
Parse formatting in real name 2017-11-07 17:38:03 +02:00
greenkeeper[bot] 6b40ee1b77 chore(package): update npm-run-all to version 4.1.2 2017-11-07 11:51:15 +00:00
Pavel Djundik 8062609c86
Merge pull request #1602 from thelounge/xpaw/remove-inconsolata
Remove Inconsolata
2017-11-06 22:15:19 +02:00
Al McKinlay fc3e08c50f
Merge pull request #1671 from LFlare/fix/1667-hyphen-overflow
Fix hyphenated names overflowing (#1667)
2017-11-06 19:55:08 +00:00
Jérémie Astori 9161a09a6a
Merge pull request #1682 from thelounge/xpaw/remove-cleanup
Remove webpack-cleanup-plugin
2017-11-05 14:00:01 -05:00
dgw 3677cb4c8b Restore autocompletion help
Cleaned up and updated the section for the current version of The Lounge.
Resolves #1147.
2017-11-05 05:57:34 -06:00
Pavel Djundik 41f50f9218 Remove webpack-cleanup-plugin 2017-11-03 12:47:28 +02:00
Pavel Djundik 56fc211628
Merge pull request #1680 from thelounge/greenkeeper/nyc-11.3.0
Update nyc to the latest version 🚀
2017-11-02 11:06:09 +02:00
greenkeeper[bot] f53348decb chore(package): update nyc to version 11.3.0 2017-11-02 06:33:27 +00:00
Pavel Djundik cc5e6a9a90
Merge pull request #1678 from thelounge/astorije/travis-node-v9
Add Node V9 testing to Travis builds
2017-11-01 11:44:08 +02:00
Jérémie Astori 843d34304e
Add Node V9 testing to Travis builds
But keep production builds with LTS v8, at least for now.
2017-11-01 02:16:21 -04:00
Pavel Djundik 15e9ea5001
Merge pull request #1673 from timmw/fix-contributing-link
Fix 'help wanted' link
2017-10-30 22:17:11 +02:00
Tim Miller-Williams 27d35e6c80 Fix 'help wanted' link 2017-10-30 20:06:22 +00:00
Amos Ng e83ba807f4
Fix hyphenated names overflowing (#1667) 2017-10-31 00:01:35 +08:00
Jérémie Astori a7666a5d56
Merge pull request #1670 from thelounge/xpaw/fix-emoji
Generate correct emoji unicode
2017-10-29 14:58:20 -04:00
Pavel Djundik 14e2174d44 Generate correct emoji unicode 2017-10-29 10:41:53 +02:00
Pavel Djundik 81e3e88391
Merge pull request #1636 from thelounge/xpaw/cleanup-clientmanager
Cleanup client manager functions
2017-10-29 10:25:42 +02:00
Pavel Djundik a60d7e31d9
Merge pull request #1651 from thelounge/xpaw/new-emoji
Generate emoji map from EmojiOne data
2017-10-29 10:25:14 +02:00
Pavel Djundik 65b1aa973f
Merge pull request #1666 from thelounge/greenkeeper/eslint-4.10.0
Update eslint to the latest version 🚀
2017-10-28 10:17:10 +03:00
greenkeeper[bot] aaa8200028 chore(package): update eslint to version 4.10.0 2017-10-27 21:48:50 +00:00
Pavel Djundik 8a66c51b64 Merge pull request #1662 from MaxLeiter/improved-run-pr
Allow run-pr script to pass arguments to npm start
2017-10-26 09:23:35 +03:00
Max Leiter 38c31a74a2 Allow run-pr script to pass arguments to npm start 2017-10-25 10:06:17 -07:00
Jérémie Astori 40722601a2 Merge pull request #1637 from Swapnull/swapnull/page-title-padding
Reduced padding around page titles
2017-10-24 13:16:14 -04:00
Jérémie Astori 7e081b83ba Merge pull request #1661 from MaxLeiter/fix-url-params
Fix url query parameters in public mode
2017-10-24 09:22:37 -04:00
Max Leiter e6979fb5fd Fix url query parameters in public mode 2017-10-23 19:31:23 -07:00
Pavel Djundik 61b955ca78 Merge pull request #1654 from thelounge/greenkeeper/web-push-3.2.4
Update web-push to the latest version 🚀
2017-10-23 20:05:52 +03:00
Jérémie Astori 2f025586ce Merge pull request #1653 from thelounge/greenkeeper/copy-webpack-plugin-4.2.0
Update copy-webpack-plugin to the latest version 🚀
2017-10-22 13:46:58 -04:00
Jérémie Astori 2d5d7b4df9 Merge pull request #1659 from thelounge/greenkeeper/socket.io-client-2.0.4
Update socket.io-client to the latest version 🚀
2017-10-22 13:45:38 -04:00
Jérémie Astori 3d31e1e5d3 Merge pull request #1660 from thelounge/greenkeeper/socket.io-2.0.4
Update socket.io to the latest version 🚀
2017-10-22 13:44:43 -04:00
greenkeeper[bot] 3447817ad7 fix(package): update socket.io to version 2.0.4 2017-10-22 13:31:44 +00:00
greenkeeper[bot] 463606756d chore(package): update socket.io-client to version 2.0.4 2017-10-22 13:19:58 +00:00
greenkeeper[bot] fee445245f fix(package): update web-push to version 3.2.4 2017-10-19 23:16:30 +00:00
greenkeeper[bot] 0569f31e9c chore(package): update copy-webpack-plugin to version 4.2.0 2017-10-19 22:38:15 +00:00
Al McKinlay 4317d4014e Merge pull request #1650 from dgw/1647-textcomplete
Fix loading app with autocomplete disabled
2017-10-19 11:14:10 +01:00
Pavel Djundik ff922d4f92 Regenerate emoji map 2017-10-19 12:46:52 +03:00
Pavel Djundik 862d75b8ab Add script to generate emoji map from emojione data 2017-10-19 12:46:52 +03:00
dgw 72e5844b8b Fix loading app with autocomplete disabled
Adds a client-side require() that was missing from 1e2d35f. Fixes #1647.
2017-10-19 00:37:33 -05:00
Swapnull 449976b0f9 reduce padding around titles 2017-10-18 21:00:18 +01:00
Pavel Djundik 57613c10ca Merge pull request #1611 from thelounge/xpaw/public-folder
Create public folder with webpack
2017-10-18 21:26:28 +03:00
Pavel Djundik 554c89f9a5 Merge pull request #1627 from dgw/autocomplete-service-shortcuts
Add service aliases to command list for completion
2017-10-18 21:22:09 +03:00
Pavel Djundik ded79a184d Merge pull request #1598 from thelounge/xpaw/fix-863
Synchronize unread marker when other client opens a channel
2017-10-18 21:21:50 +03:00
Pavel Djundik f542e69b99 Merge pull request #1600 from thelounge/xpaw/fix-1571
Synchronize unread marker when client reconnects
2017-10-18 21:21:31 +03:00
Pavel Djundik 4535636855 Merge pull request #1599 from RJacksonm1/fill-mobile-screen-betterer
Remove content borders on mobile to maximise use of space
2017-10-18 21:21:22 +03:00
Pavel Djundik 3f2a017583 Create public folder with webpack 2017-10-18 21:20:12 +03:00
Pavel Djundik 8d0d31d7b6 Merge pull request #1645 from thelounge/greenkeeper/handlebars-4.0.11
Update handlebars to the latest version 🚀
2017-10-18 11:19:11 +03:00
greenkeeper[bot] 9541a0da49 chore(package): update handlebars to version 4.0.11 2017-10-17 20:57:51 +00:00
Pavel Djundik 5615544090 Merge pull request #1643 from thelounge/greenkeeper/webpack-3.8.1
Update webpack to the latest version 🚀
2017-10-17 20:46:32 +03:00
greenkeeper[bot] f1750d1cb7 chore(package): update webpack to version 3.8.1 2017-10-17 15:53:41 +00:00
Pavel Djundik a263c3eab9 Merge pull request #1615 from dgw/mark-echoes-read
Mark channels as read when receiving self-messages
2017-10-17 16:25:59 +03:00
Pavel Djundik 4d544143b4 Merge pull request #1639 from thelounge/xpaw/fix-attach-race-condition
Fix possible race condition when attaching clients
2017-10-17 16:24:14 +03:00
Pavel Djundik b59954eee0 Merge pull request #1641 from thelounge/greenkeeper/babel-preset-env-1.6.1
Update babel-preset-env to the latest version 🚀
2017-10-17 16:07:34 +03:00
dgw d675297405 Mark channels as read when receiving self-messages
Resets highlight counter and last unread message ID on server, and
clears the badge on the active client when the message is rendered.

Resolves #911
2017-10-17 08:05:35 -05:00
greenkeeper[bot] 5f52e31e9d chore(package): update babel-preset-env to version 1.6.1 2017-10-17 12:45:44 +00:00
Pavel Djundik e3ee3f7788 Merge pull request #1638 from thelounge/bump-dependancies
Bump express, moment, ua-parser-js and webpack to latest version
2017-10-17 13:35:40 +03:00
Pavel Djundik d626c146c4 Bump express, moment, ua-parser-js and webpack to latest version 2017-10-17 13:01:09 +03:00
Pavel Djundik 50504ed09b Fix possible race condition when attaching clients 2017-10-17 12:45:18 +03:00
Pavel Djundik afc594a655 Merge pull request #1607 from PolarizedIons/PolarizedIons/rm-channels-dom
Remove channel containers from DOM after quitting network
2017-10-17 11:31:17 +03:00
Pavel Djundik b2985a2c2a Merge pull request #1625 from thelounge/socket.io-2.0.3
Update socket.io to 2.0.3
2017-10-17 11:17:13 +03:00
Pavel Djundik 280eea970a Get client ip address correctly 2017-10-17 10:35:28 +03:00
Pavel Djundik c2f1edcbde Update socket.io to 2.0.3 2017-10-17 10:35:28 +03:00
Jérémie Astori 9b06560899 Merge pull request #1632 from thelounge/greenkeeper/eslint-4.9.0
Update eslint to the latest version 🚀
2017-10-17 02:16:56 -04:00
Jérémie Astori 3661d8cff9 Merge pull request #1616 from thelounge/greenkeeper/stylelint-8.2.0
Update stylelint to the latest version 🚀
2017-10-17 02:11:14 -04:00
Jérémie Astori d1d871f351 Merge pull request #1617 from thelounge/greenkeeper/mocha-4.0.1
Update mocha to the latest version 🚀
2017-10-17 02:10:58 -04:00
Jérémie Astori 11b72223a7 Merge pull request #1624 from thelounge/greenkeeper/moment-2.19.0
Update moment to the latest version 🚀
2017-10-17 02:09:52 -04:00
Jérémie Astori e2e594d4f5 Merge pull request #1626 from thelounge/greenkeeper/webpack-3.7.0
Update webpack to the latest version 🚀
2017-10-17 02:09:19 -04:00
Jérémie Astori 638d50c5e7
2.5.0 2017-10-17 01:00:08 -04:00
Jérémie Astori 6dde4780b8 Merge pull request #1629 from thelounge/astorije/changelog-2.5.0
Changelog entry for v2.5.0
2017-10-17 00:57:41 -04:00
Jérémie Astori 9bc3144511
Add changelog entry for v2.5.0 2017-10-17 00:33:25 -04:00
Pavel Djundik 5c45321cca Cleanup client manager functions 2017-10-15 19:05:19 +03:00
greenkeeper[bot] 9cf85328ed chore(package): update eslint to version 4.9.0 2017-10-14 19:35:19 +00:00
Jérémie Astori d79ede5087
Remove pre-release dist tag 2017-10-12 00:35:45 -04:00
dgw 59ad0ba863 Add service aliases to command list for completion
Includes known aliases for AdminServ (/as), BotServ (/bs), ChanServ
(/cs), HelpServ (/hs), HostServ (/hs; /ho on some IRCds), MemoServ
(/ms), NickServ (/ns), OperServ (/os), and RootServ (/rs).

Not all IRCds will have all of these services available, but it's not
trivial to filter out the ones that don't exist on a particular network.
2017-10-11 19:50:06 -05:00
greenkeeper[bot] 5243a6e42f chore(package): update webpack to version 3.7.0 2017-10-11 18:28:35 +00:00
Jérémie Astori 69ef6831b9
2.5.0-rc.5 2017-10-11 00:16:34 -04:00
Jérémie Astori 9a859474de
Add changelog entry for v2.5.0-rc.5 2017-10-11 00:15:10 -04:00
Jérémie Astori b6963d98a4 Merge pull request #1623 from thelounge/astorije/channel-list-close
Make sure channel list close button is really absent when channel is not selected
2017-10-11 00:10:07 -04:00
greenkeeper[bot] 01bd59e3ca fix(package): update moment to version 2.19.0 2017-10-10 09:51:25 +00:00
Jérémie Astori 75bc45f354
Make sure channel list close button is really absent when channel is not selected 2017-10-10 02:05:54 -04:00
Jérémie Astori 09878a5568
2.5.0-rc.4 2017-10-06 22:29:37 -04:00
Jérémie Astori 672617c8ad
Add changelog entry for v2.5.0-rc.4 2017-10-06 22:25:44 -04:00
Jérémie Astori c2681a9f6e Merge pull request #1620 from thelounge/xpaw/invalid-uri-test
Add tests for invalid urls
2017-10-06 22:21:26 -04:00
Pavel Djundik 44acc5cb00 Teardown sockets in tests 2017-10-06 12:53:08 +03:00
Pavel Djundik 586a486418 Add tests for invalid urls 2017-10-06 12:25:26 +03:00
Pavel Djundik 530d71764f Merge pull request #1604 from thelounge/greenkeeper/urijs-1.19.0
Update urijs to the latest version 🚀
2017-10-06 10:15:42 +03:00
greenkeeper[bot] 4bc8b9ed0c chore(package): update mocha to version 4.0.1 2017-10-06 03:19:34 +00:00
Pavel Djundik 9a8c1b2fd0 Wrap withinString in try/catch 2017-10-05 23:50:45 +03:00
greenkeeper[bot] 0d6ff2535e fix(package): update urijs to version 1.19.0 2017-10-05 23:50:44 +03:00
greenkeeper[bot] d59becbf53 chore(package): update stylelint to version 8.2.0 2017-10-05 17:36:49 +00:00
realies 9a348e3eeb indexOf to charAt 2017-10-05 20:12:26 +03:00
Jérémie Astori 7f285e847f
2.5.0-rc.3 2017-10-04 18:14:07 -04:00
Jérémie Astori 21cdf11350
Add changelog entry for v2.5.0-rc.3 2017-10-04 18:12:50 -04:00
realies 960a6d42e1 Combine if statements to reduce nesting 2017-10-04 13:53:22 +03:00
realies 3244ec91e8 Remove unused var, satisfy linter rules, simplify calls 2017-10-04 00:56:14 +03:00
realies 3890aaad6b Use jQuery for parsing, isolate user commands, remove /clear 2017-10-03 23:29:19 +03:00
Pavel Djundik f18d019383 Merge pull request #1610 from thelounge/astorije/size-fixes
Fix some missing parts from recent font changes/resizing
2017-10-03 12:14:28 +03:00
Pavel Djundik 271324fa6f Merge pull request #1608 from thelounge/xpaw/remove-progress
Remove --progress from webpack
2017-10-03 11:36:24 +03:00
Jérémie Astori 54cffb4712
Fix some missing parts from recent font changes/resizing
- Separate messages by one more pixel: the recent font changes make multiline messages rather hard to differentite from one another. I believe adding 2px looked better, but I knew that would cause riots so I went for a middle ground 😅
- Make previews the same size than messages themselves, and adapt the thumbnail height accordingly
- Make the message input font size same as message size
2017-10-03 01:09:02 -04:00
Pavel Djundik b11a96d828 Remove --progress from webpack 2017-10-02 20:07:08 +03:00
PolarizedIons 99c8e1c04a
Remove channel containers from DOM after quitting network 2017-10-02 13:55:23 +02:00
Jérémie Astori fc0af518c6
2.5.0-rc.2 2017-10-01 23:46:40 -04:00
Jérémie Astori 24f9467084
Add changelog entry for v2.5.0-rc.2 2017-10-01 23:41:09 -04:00
Jérémie Astori 50d49a2ec2 Merge pull request #1597 from thelounge/astorije/fix-time-width
Give chat timestamp a fix width to fix message alignment issues
2017-10-01 22:24:25 -04:00
Rob Jackson d5d3cb0851 Remove content borders on mobile to maximise use of space 2017-10-01 22:02:22 +01:00
Pavel Djundik 737c75638e Remove Inconsolata 2017-10-01 12:22:04 +03:00
Pavel Djundik 38584e2f8e Synchronize unread marker when client reconnects
Fixes #1571
2017-10-01 12:00:59 +03:00
Pavel Djundik 08ee28e99b Synchornize unread marker when other client opens a channel
Fixes #863
2017-10-01 11:52:34 +03:00
Jérémie Astori a93adcbdfa
Give chat timestamp a fix width to fix message alignment issues 2017-10-01 01:12:08 -04:00
Jérémie Astori 0cc9c4166b Merge pull request #1583 from thelounge/astorije/thelounge-packages
Use `thelounge` instead of `lounge` when it comes to external packages
2017-09-30 23:47:02 -04:00
Jérémie Astori d87e174644 Merge pull request #1591 from thelounge/eslint-4.8.0
Update eslint to version 4.8.0
2017-09-30 07:55:53 -04:00
Pavel Djundik 0d21843283 Update eslint to version 4.8.0 2017-09-30 12:22:39 +03:00
Jérémie Astori c3ccfb092a Merge pull request #1579 from thelounge/xpaw/install-msg
Add info message before calling `packageJson`
2017-09-29 17:53:40 -04:00
Jérémie Astori 82b7b3549d Merge pull request #1585 from thelounge/xpaw/fix-1584
Do not try to write user log if network is not found
2017-09-29 17:53:07 -04:00
Jérémie Astori 947f78eb9c Merge pull request #1587 from thelounge/fix-lounge-home-file
Do not ignore .lounge_home in npm releases
2017-09-29 17:49:45 -04:00
Jérémie Astori 7b7e167594 Merge pull request #1589 from thelounge/express-4.16.0
Update express to version 4.16.0
2017-09-29 17:36:47 -04:00
Pavel Djundik bc6868b123 Update express to version 4.16.0 2017-09-29 22:09:22 +03:00
Pavel Djundik bdf93481e6 Do not ignore .lounge_home in npm releases 2017-09-29 20:10:57 +03:00
Pavel Djundik 1c4d9351d5 Add info message before calling packageJson 2017-09-29 10:54:03 +03:00
Pavel Djundik fd21c84a76 Do not try to write user log if network is not found
Fixes #1584
2017-09-29 10:37:27 +03:00
Jérémie Astori 1e10cc66a6
Use thelounge instead of lounge when it comes to external packages 2017-09-29 00:03:01 -04:00
Pavel Djundik da31317156 Skip cleanup on Travis 2017-09-27 10:39:12 +03:00
Pavel Djundik 0b16026fe2 Merge pull request #1568 from Gilles123/patch-1
Fix nick change on Safari for Mac and iOS
2017-09-27 10:27:18 +03:00
Pavel Djundik ad92a6d9b9 Merge pull request #1577 from thelounge/greenkeeper/request-2.83.0
Update request to the latest version 🚀
2017-09-27 10:26:56 +03:00
greenkeeper[bot] 408fbbfbc1 fix(package): update request to version 2.83.0 2017-09-27 03:35:01 +00:00
Jérémie Astori 28b662ddae
2.5.0-rc.1 2017-09-26 18:54:55 -04:00
Jérémie Astori 45312b0c76
Add pre-release tag until v2.5.0 final gets released 2017-09-26 18:54:47 -04:00
Jérémie Astori 120e1df75f
Add changelog entry for v2.5.0-rc.1 2017-09-26 18:54:23 -04:00
Gilles123 04d9b52113
Fix nick change on Safari for Mac and iOS
It is currently impossible to edit the nick text after pressing the edit button on Safari for iOS and Mac because user-select is set to None on Safari by default. This fixes that issue. Tested that it is not editable when it shouldn't be and that it doesn't break anything on Chrome or Firefox.
2017-09-26 18:44:23 -04:00
Jérémie Astori 0bf47ff06a Merge pull request #1552 from thelounge/astorije/monospace-custom-css
Use monospace font in custom CSS textarea
2017-09-26 18:31:08 -04:00
Jérémie Astori 5728424c75
Use monospace font in custom CSS textarea 2017-09-26 11:21:42 -04:00
Pavel Djundik 3fc0f4e686 Merge pull request #1536 from thelounge/xpaw/session-list
Implement session list and allow signing out other clients
2017-09-26 11:03:41 +03:00
Pavel Djundik 7cfd8d90c1 Merge pull request #1554 from thelounge/astorije/rm-event-stream
Remove event-stream dependency in favor of plain Buffers
2017-09-26 11:00:35 +03:00
Pavel Djundik 2f15ab3999 Fix attached client not having token on login 2017-09-26 10:56:08 +03:00
Pavel Djundik 833bdfa2aa Fix session data not updating correctly 2017-09-26 10:56:08 +03:00
Pavel Djundik d7e6db92b5 Implement session list 2017-09-26 10:56:08 +03:00
Al McKinlay 0f1919a4fd Merge pull request #1573 from thelounge/astorije/fix-colors
Fix flickering on link hovering, and inconsistencies between chat links and UI links
2017-09-26 08:35:50 +01:00
Jérémie Astori 46e8ec9ca9
Fix flickering on link hovering, and inconsistencies between chat links and UI links 2017-09-25 18:06:55 -04:00
Pavel Djundik 80ef01c180 Merge pull request #1572 from thelounge/xpaw/add-vapid-test
Add hardcoded vapid key and a test for it
2017-09-25 23:12:02 +03:00
Pavel Djundik 08edc434ca Merge pull request #1567 from dgw/preview-length-abort
Abort image prefetch if Content-Length exceeds limit
2017-09-25 23:11:20 +03:00
dgw 09cd9ce33a Abort img prefetch if Content-Length exceeds limit
If the Content-Length header is present in the response when an image
is prefetched, The Lounge can avoid wasting bandwidth (both for itself
and for the image's host) if the value of the header exceeds the
prefetch size limit by aborting the request immediately.
2017-09-25 05:31:21 -05:00
Pavel Djundik 7c9eedb820 Add hardcoded vapid key and a test for it
Hopefully fixes #1569
2017-09-25 11:46:15 +03:00
realies f1c40aa8de Simplify initial commit and remove unnecessary refactor 2017-09-25 07:18:31 +03:00
Jérémie Astori 90ae5dbefc Merge pull request #1566 from thelounge/astorije/mousetrap-preview
Use Mousetrap for image viewer shortcuts
2017-09-24 12:33:56 -04:00
Jérémie Astori 2c0fc67ab9
Use Mousetrap for image viewer shortcuts 2017-09-23 22:02:13 -04:00
Jérémie Astori 77714accca Merge pull request #1565 from thelounge/astorije/fix-menu
Fix wrongly positioned menu when opening it and switching to landscape
2017-09-23 13:07:36 -04:00
Jérémie Astori 5e4a4d1d0b
Fix wrongly positioned menu when opening it and switching to landscape
This could be reproduced on tablet or large phone (as long as portrait mode shows a collapsible menu and landscape mode shows normal menu) or when resizing the browser on desktop.
2017-09-23 12:21:31 -04:00
Jérémie Astori 8268eb03c6 Merge pull request #1561 from thelounge/astorije/font-size-fixes
Reduce message size on mobile and increase a bit UI text
2017-09-23 12:07:29 -04:00
Jérémie Astori 75b927b4a3
Remove event-stream dependency in favor of plain Buffers 2017-09-23 04:08:17 -04:00
Jérémie Astori 4dc3769b18
Make channel list links clickable on full width, simplify code
- Close button and badge are now positioned using the same method. Previously one was float and the other was absolutely positioned.
- Increase the close button size to match 2.4.0, as it was made smaller when moving to the native font stack.
- Removed link margins on left/right of the channel links, and the `1px` gap between links.
- Removed hack/fix for drag-and-drop now made unnecessary
2017-09-22 23:42:16 -04:00
Jérémie Astori 713d2c14e5
Reduce message size on mobile and increase a bit UI text 2017-09-22 21:59:45 -04:00
Pavel Djundik f85686bcb2 Merge pull request #1468 from thelounge/xpaw/combine-notifications
Combine unread notifications into a single one
2017-09-22 21:04:04 +03:00
Pavel Djundik b456ab997c Merge pull request #1503 from thelounge/astorije/image-preview-history
Handle browser history when opening/closing image preview
2017-09-22 21:03:50 +03:00
Pavel Djundik cddeb51109 Merge pull request #1555 from thelounge/greenkeeper/eslint-4.7.2
Update eslint to the latest version 🚀
2017-09-22 10:24:52 +03:00
greenkeeper[bot] 203907f706 chore(package): update eslint to version 4.7.2 2017-09-21 19:49:06 +00:00
Pavel Djundik ede56398f6 Merge pull request #1553 from thelounge/astorije/bigger-fonts
Increase font size on desktops and mobiles
2017-09-21 13:59:13 +03:00
Jérémie Astori 3eaf12cc36
Increase font size on desktops and mobiles 2017-09-21 03:26:30 -04:00
Jérémie Astori e165d51e60 Merge pull request #1549 from thelounge/xpaw/fix-default-chan
Fix opening first channel on server start
2017-09-20 21:30:24 -04:00
Pavel Djundik 649e9c3192 Fix opening first channel on server start
Fixes #1547
2017-09-20 16:17:38 +03:00
Pavel Djundik 01eda0aac3 Merge pull request #1539 from thelounge/xpaw/install-command
Create lounge install command
2017-09-20 11:11:48 +03:00
Pavel Djundik 75555d90ee Merge pull request #1543 from thelounge/xpaw/remove-dupe-keybindings
Remove duplicate keybindings help
2017-09-20 11:09:58 +03:00
Pavel Djundik 416ebf97ff Create 'lounge install' command 2017-09-20 10:59:06 +03:00
Pavel Djundik 1c065ad1b6 Remove duplicate keybindings help 2017-09-20 10:57:43 +03:00
Pavel Djundik 8f275c6a55 Merge pull request #1546 from thelounge/greenkeeper/request-2.82.0
Update request to the latest version 🚀
2017-09-20 10:18:42 +03:00
Jérémie Astori 637949ea55 Merge pull request #1471 from thelounge/xpaw/client-reconnection
Automatic client reconnection
2017-09-20 00:05:37 -04:00
Jérémie Astori d97b844e29 Merge pull request #1520 from iamstratos/master
Add touch-action to Messages, Sidebar and User list
2017-09-19 23:53:27 -04:00
Jérémie Astori a181d79544 Merge pull request #1542 from thelounge/xpaw/move-theme-warning
Print compatibility theme setting only once warning on startup
2017-09-19 21:14:29 -04:00
Jérémie Astori 1dae995631 Merge pull request #1544 from thelounge/xpaw/fix-more-condensed
Fix history not loading if first message is condensed
2017-09-19 18:37:53 -04:00
greenkeeper[bot] 48cc810455 fix(package): update request to version 2.82.0 2017-09-19 19:57:56 +00:00
Pavel Djundik 6041e492ee Fix history not loading if first message is condensed 2017-09-19 18:01:02 +03:00
Pavel Djundik 21c9919fa1 Print compatibility theme setting warning on startup 2017-09-19 12:21:08 +03:00
Pavel Djundik 6cfe60e4d9 Group push notifications per target 2017-09-19 12:01:50 +03:00
Pavel Djundik 935c5b309a Force reconnect on server shutdown 2017-09-19 11:59:56 +03:00
Pavel Djundik 532f55cb86 Redraw channels 2017-09-19 11:59:56 +03:00
Pavel Djundik cffa957e34 Only send messages newer than last seen id 2017-09-19 11:45:22 +03:00
Pavel Djundik 05fc00d9be Display all the status changes in UI 2017-09-19 11:45:22 +03:00
Pavel Djundik 0c0df1efc9 Force reload the page if socket reconnects and server restarted 2017-09-19 11:45:22 +03:00
Al McKinlay c7433eca95 Merge pull request #1541 from thelounge/greenkeeper/eslint-4.7.1
Update eslint to the latest version
2017-09-19 08:57:09 +01:00
Jérémie Astori 26eba56ab8 Merge pull request #1540 from thelounge/xpaw/native-fonts
Use native font stack
2017-09-19 00:29:32 -04:00
Jérémie Astori b844b0a782 Merge pull request #1283 from MaxLeiter/MaxLeiter/window-save
Add anchor tag to URL to signify open page for reloading
2017-09-18 19:01:23 -04:00
greenkeeper[bot] 55fe080eaa chore(package): update eslint to version 4.7.1 2017-09-18 21:57:40 +00:00
Pavel Djundik 4e776f7a5f Remove Lato 2017-09-18 13:33:04 +03:00
Pavel Djundik 3ac15f97f1 Use native font stack 2017-09-18 13:32:52 +03:00
Pavel Djundik 2ea57a4133 Merge pull request #1538 from thelounge/astorije/eslint-console
Enable `no-console` and `no-alert` ESLint rules
2017-09-18 13:06:44 +03:00
Jérémie Astori aa377ee59b
Switch Font Awesome build script to use our logger 2017-09-17 22:20:20 -04:00
Jérémie Astori 82c4898715
Use explicit keywords instead of cryptic codes in ESLint config
Bikeshedding at its best, isn't it?
2017-09-17 22:04:29 -04:00
Jérémie Astori 64cc4927b3
Make sure we never ship with JS alerts by accident 2017-09-17 21:50:41 -04:00
Jérémie Astori b8399471b3
Enable ESLint no-console rule to avoid future mistakes 2017-09-17 21:50:21 -04:00
Jérémie Astori 2e2e201784 Merge pull request #1266 from thelounge/yamanickill/1228-theme-management
Allow themes from npm
2017-09-17 20:05:59 -04:00
Alistair McKinlay 59d2f93f61
Allow themes from npm 2017-09-17 19:47:29 -04:00
Jérémie Astori 90cb79ac91 Merge pull request #845 from MaxLeiter/MaxLeiter/away-notify
Use away-notify to show updates on users away state
2017-09-17 14:45:27 -04:00
Max Leiter 163cfaba3c Use away-notify to show user away status change 2017-09-17 11:16:48 -07:00
Jérémie Astori 4f38bc9077 Merge pull request #1535 from thelounge/astorije/fix-master
Fix references to undefined `this`
2017-09-17 02:57:43 -04:00
Jérémie Astori cb1b6db14e
Fix references to undefined this 2017-09-17 02:24:54 -04:00
Al McKinlay 948f304bb9 Merge pull request #1511 from thelounge/xpaw/checkered-background
Checkered background for transparent images in image viewer
2017-09-16 20:53:13 +01:00
Al McKinlay ec6307d55f Merge pull request #1517 from thelounge/xpaw/move-unread-in-history
Move unread marker when loading more history
2017-09-16 20:51:55 +01:00
Al McKinlay aace1aab05 Merge pull request #1528 from thelounge/xpaw/move-log-function
Move user log function where it belongs
2017-09-16 20:50:06 +01:00
Pavel Djundik 59a5f6237c Merge pull request #1532 from thelounge/greenkeeper/eslint-4.7.0
Update eslint to the latest version 🚀
2017-09-16 10:32:42 +03:00
Jérémie Astori 3bf6ba5802 Merge pull request #1531 from thelounge/greenkeeper/webpack-3.6.0
Update webpack to the latest version 🚀
2017-09-16 02:47:26 -04:00
greenkeeper[bot] 90d6916b10 chore(package): update eslint to version 4.7.0 2017-09-15 20:57:02 +00:00
greenkeeper[bot] 474fbc0a9c chore(package): update webpack to version 3.6.0 2017-09-15 09:06:48 +00:00
Max Leiter c4ebd141c5 Add anchor tag to URL to signify open page for reloading 2017-09-14 13:25:20 -07:00
Pavel Djundik 9e008a76b7 Merge pull request #1527 from dgw/kick-modes
Display correct kick modes
2017-09-14 10:46:35 +03:00
Pavel Djundik 17dd18a605 Write correct timestamp to user log 2017-09-14 10:42:21 +03:00
Pavel Djundik 79eb83d82f Move userLog function where it belongs
Fixes #438
2017-09-14 10:41:50 +03:00
dgw e4c6d78762 Display correct kick modes
Defining both the kicker and the target before any code touches the
channel user list ensures that everything is passed to the template.
2017-09-14 02:39:00 -05:00
Al McKinlay 676cc01203 Merge pull request #1518 from thelounge/xpaw/cleanup-jquery
Remove unnecessary end() calls
2017-09-14 07:25:55 +01:00
Al McKinlay 171449c81e Merge pull request #1519 from thelounge/xpaw/fix-show-more-when-empty
Fix requesting last messages when no message id is known
2017-09-14 07:25:17 +01:00
Al McKinlay f2fb05e7c9 Merge pull request #1526 from thelounge/astorije/rm-clear
Get rid of `/clear` command and keybind
2017-09-14 07:23:36 +01:00
Pavel Djundik 4431616822 Merge pull request #1476 from eliemichel/pr-part-other
Take an optional argument in /part
2017-09-14 09:20:44 +03:00
Élie Michel f26c2dad0f
Take an optional argument in /part
Fix #1430
2017-09-13 20:24:45 -04:00
Jérémie Astori 92f8c2bfef
Get rid of /clear command and keybind
Since the introduction of infinite scrolling, `/clear` is now broken. As far as I can tell, there is no way to reproduce something decent (and working!) without drastically changing its behavior from "hide the messages in current channel" to "permanently destroy all messages in memory in the current channel", which is not a great change to introduce sneakily 😂.

The code for this was very trivial, so removing it now until there is a better way to do so, if this is ever possible.

Also, `/clear` was not even autocompleted, sooo...
2017-09-13 20:06:03 -04:00
ssstratos 6708261368 Add touch-action to more elements
- Add touch-action: pan-y to .container, .networks, .sidebar, #form
#input
- Add touch-action: none to body
2017-09-14 01:04:03 +03:00
Jérémie Astori 376e7a60fb Merge pull request #1524 from thelounge/astorije/fix-hover
Fix hovering condensed messages
2017-09-13 01:53:12 -04:00
Jérémie Astori c63dfc66b3 Merge pull request #1521 from thelounge/greenkeeper/fs-extra-4.0.2
Update fs-extra to the latest version 🚀
2017-09-13 01:47:39 -04:00
Jérémie Astori 6d08b8d087
Fix hovering condensed messages 2017-09-13 01:36:11 -04:00
greenkeeper[bot] 0e40d7f82f fix(package): update fs-extra to version 4.0.2 2017-09-12 23:08:50 +00:00
ssstratos 32da456c84 Add touch-action to Messages, Sidebar and User list
This commit fixes #1035
2017-09-12 23:50:31 +03:00
Pavel Djundik 14cac93e10 Fix requesting last messages when no message id is known
Fixes #1460
2017-09-12 16:05:40 +03:00
Pavel Djundik 712bdafd9e Remove unnecessary end() calls 2017-09-12 15:52:16 +03:00
Pavel Djundik 706943af26 Move unread marker when loading more history
Fixes #835
2017-09-12 15:40:26 +03:00
Pavel Djundik 15b922595f Merge pull request #1515 from thelounge/greenkeeper/mocha-3.5.3
Update mocha to the latest version 🚀
2017-09-12 15:25:23 +03:00
Pavel Djundik 103b315ccf Merge pull request #1516 from thelounge/greenkeeper/web-push-3.2.3
Update web-push to the latest version 🚀
2017-09-12 15:25:11 +03:00
greenkeeper[bot] 519b5de4ef fix(package): update web-push to version 3.2.3 2017-09-12 01:27:40 +00:00
greenkeeper[bot] b2a3b3c0f3 chore(package): update mocha to version 3.5.3 2017-09-11 22:04:51 +00:00
Pavel Djundik bc9faa733a Merge pull request #1514 from thelounge/greenkeeper/mocha-3.5.2
Update mocha to the latest version 🚀
2017-09-11 21:39:15 +03:00
Pavel Djundik 8de7f44b98 Merge pull request #1500 from thelounge/xpaw/even-more-modules
Move even more code out of lounge.js
2017-09-11 21:38:56 +03:00
Pavel Djundik 17127e9fc2 Move keybinds to another file 2017-09-11 20:48:35 +03:00
Pavel Djundik 41b9ffb5e7 Move 'show more' to same event file 2017-09-11 20:48:35 +03:00
Pavel Djundik 17af195994 Move message notification code to msg file 2017-09-11 20:48:35 +03:00
greenkeeper[bot] c3f141f82e chore(package): update mocha to version 3.5.2 2017-09-10 22:07:29 +00:00
Jérémie Astori a921d7bf04
[Squash me] Fix bug refusing to switch channel when clicking back after closing image viewer 2017-09-10 15:00:27 -04:00
Jérémie Astori b33ea0f567
Squash me when ready 2017-09-10 14:28:00 -04:00
Jérémie Astori 2d61c018b0 Merge pull request #1513 from thelounge/greenkeeper/mocha-3.5.1
Update mocha to the latest version 🚀
2017-09-10 14:20:25 -04:00
greenkeeper[bot] 2a510c38a2 chore(package): update mocha to version 3.5.1 2017-09-10 05:54:46 +00:00
Jérémie Astori bb432497be
Handle browser history when opening/closing image preview 2017-09-09 16:40:34 -04:00
Jérémie Astori a44eea61a1 Merge pull request #1512 from thelounge/xpaw/fix-black-previews
Fix image viewer turning black sometimes
2017-09-09 12:45:08 -04:00
Pavel Djundik 67da82c151 Fix image viewer turning black sometimes 2017-09-09 18:46:49 +03:00
Jérémie Astori 9d7d5a110c Merge pull request #1509 from thelounge/astorije/fix-expand-preview
Fix `/expand` command also expanding condensed status messages
2017-09-09 10:47:57 -04:00
Pavel Djundik f2bc5adf7b Checkered background for transparent images in image viewer 2017-09-09 14:09:23 +03:00
Jérémie Astori d82f4007ec
Fix /expand command also expanding condensed status messages 2017-09-07 19:50:00 -04:00
Pavel Djundik 3b049f174c Merge pull request #1507 from thelounge/greenkeeper/webpack-3.5.6
Update webpack to the latest version 🚀
2017-09-07 08:29:15 +03:00
Jérémie Astori 4d8fae1ab8 Merge pull request #1508 from thelounge/xpaw/msg-preview-idle
Render link previews in browser idle event
2017-09-06 19:34:23 -04:00
Pavel Djundik c81a74a20c Render link previews in browser idle event
Fixes #1504
2017-09-06 22:03:56 +03:00
greenkeeper[bot] 86289f0a6e chore(package): update webpack to version 3.5.6 2017-09-06 16:08:19 +00:00
Pavel Djundik 9a981a526e Merge pull request #1505 from thelounge/greenkeeper/nyc-11.2.1
Update nyc to the latest version 🚀
2017-09-06 19:07:22 +03:00
greenkeeper[bot] 8304f5da81 chore(package): update nyc to version 11.2.1 2017-09-06 06:33:07 +00:00
Jérémie Astori 87d6918358 Merge pull request #1495 from thelounge/xpaw/only-order-autocomplete-on-msg
Only change nick autocompletion when receiving a message
2017-09-05 19:50:08 -04:00
Pavel Djundik 65e4e386da Merge pull request #1499 from thelounge/greenkeeper/stylelint-8.1.1
chore(package): update stylelint to version 8.1.1
2017-09-05 18:36:21 +03:00
Pavel Djundik e2a122c3ca Only change nick autocompletion when receiving a message
And other minor optimizations and fixes
2017-09-05 18:28:01 +03:00
Al McKinlay 3d2d8495f5 Merge pull request #1498 from thelounge/greenkeeper/nyc-11.2.0
Update nyc to the latest version
2017-09-05 16:17:45 +01:00
greenkeeper[bot] 07de177b0e chore(package): update stylelint to version 8.1.1
Closes #1494
2017-09-05 11:45:00 +00:00
Al McKinlay 845db70969 Merge pull request #1496 from MaxLeiter/commands
Add /list to autocomplete
2017-09-05 10:15:11 +01:00
greenkeeper[bot] f885ce456e chore(package): update nyc to version 11.2.0 2017-09-05 05:29:05 +00:00
Max Leiter d80efdfe23 Add /list to autocomplete 2017-09-04 15:33:33 -07:00
Pavel Djundik 6b1be79026 Merge pull request #1493 from thelounge/greenkeeper/eslint-4.6.1
Update eslint to the latest version 🚀
2017-09-04 09:06:16 +03:00
Pavel Djundik 099fb058c6 Merge pull request #1478 from eliemichel/pr-proper-ldap--rebased
Implement a proper LDAP authentication process
2017-09-04 09:02:58 +03:00
greenkeeper[bot] 477736a231 chore(package): update eslint to version 4.6.1 2017-09-03 21:53:07 +00:00
Elie Michel 32e1a36980 Generalize auth plugin fallback mechanism
@astorije this is for you ;)
https://github.com/thelounge/lounge/pull/1478#discussion_r136492534
2017-09-03 23:00:25 +02:00
Elie Michel 435e14669b Change string formatting style 2017-09-03 23:00:25 +02:00
Elie Michel 803cff92c8 Set public to true for websocket tests
A side effect of LDAP auth tests was breaking these other tests,
that should have already forced public instance in their pre-condition.
2017-09-03 23:00:24 +02:00
Elie Michel 00e54e49ac Add tests for LDAP auth plugin 2017-09-03 23:00:24 +02:00
Elie Michel 12ba10f688 Reorganize auth plugins 2017-09-03 23:00:23 +02:00
Élie Michel cfa6db10c7 Make new LDAP options backward compatible
Also draft some kind of plugin system for auth, although it essentially consists in writing a function
and there is no mechanism to automatically fallback from one auth to another
2017-09-03 23:00:23 +02:00
Jérémie Astori d7d185d06a Merge pull request #1492 from thelounge/xpaw/simpler-server-error
One line server startup errors
2017-09-03 14:37:03 -04:00
Pavel Djundik c845d5723d One line server startup errors 2017-09-03 15:13:56 +03:00
Pavel Djundik 704dae9dec Merge pull request #1464 from thelounge/xpaw/clipboard
Format messages on copy
2017-09-03 14:19:21 +03:00
Pavel Djundik 7ee808169d Format messages on copy
Fixes #1146
2017-09-03 11:27:53 +03:00
Pavel Djundik 43c8f6fd96 Merge pull request #1485 from thelounge/xpaw/always-condense
Always create condensed wrapper
2017-09-03 11:26:31 +03:00
Jérémie Astori f9757786be Merge pull request #1490 from thelounge/astorije/bump-prefetch-limit
Bump default image prefetch limit
2017-09-02 20:31:14 -04:00
Jérémie Astori d543123095 Bump default image prefetch limit to 2MB 2017-09-02 21:17:46 +03:00
realies bb1e3ee917 Focus a channel by joining it, refactor user commands #1189 2017-09-02 19:28:36 +03:00
Pavel Djundik 94d40256d9 Always create condensed wrapper 2017-09-02 18:31:47 +03:00
Jérémie Astori 77e9cb65d5 Merge pull request #1318 from thelounge/xpaw/infinite-scroll
Automatically load history when scrolling upwards
2017-09-01 19:45:49 -04:00
Pavel Djundik e2db8b23a4
Add IntersectionObserver polyfill 2017-09-01 19:38:15 -04:00
Pavel Djundik 838eca8fe5
Fix scrolling issue 2017-09-01 19:33:55 -04:00
Pavel Djundik 629592d641
Implement infinite scroll using IntersectionObserver 2017-09-01 19:33:54 -04:00
Pavel Djundik 72a534f42b
Correctly calculate scroll when loading more history 2017-09-01 19:33:54 -04:00
Jérémie Astori 08fbcd4958 Merge pull request #1487 from thelounge/greenkeeper/handlebars-loader-1.6.0
Update handlebars-loader to the latest version 🚀
2017-09-01 19:15:31 -04:00
Jérémie Astori f18ba07be6 Merge pull request #1488 from thelounge/xpaw/eslint-semicolons
Enforce semicolon spacing
2017-09-01 19:12:11 -04:00
Pavel Djundik 111453aeaf Enforce semicolon spacing 2017-09-01 21:17:45 +03:00
greenkeeper[bot] 9b19024ba5 chore(package): update handlebars-loader to version 1.6.0 2017-09-01 17:14:54 +00:00
Pavel Djundik 9e1296d303 Merge pull request #1479 from thelounge/xpaw/unix-socket
Add support for binding to unix sockets
2017-09-01 11:25:00 +03:00
Pavel Djundik f65fb6573b Merge pull request #1481 from MaxLeiter/emoji-title
Change vertical alignment of emoji in topics, fixes #1480
2017-09-01 11:23:39 +03:00
Pavel Djundik 4a6b79d147 Merge pull request #1482 from thelounge/greenkeeper/chai-4.1.2
Update chai to the latest version 🚀
2017-09-01 10:22:53 +03:00
Jérémie Astori 220af0e180 Merge pull request #1449 from dgw/cycle-command
Add /cycle command (a.k.a. /rejoin)
2017-08-31 23:45:54 -04:00
Jérémie Astori 1c1faf2dd9 Merge pull request #1465 from thelounge/astorije/rm-remember-me
Remove the "Stay signed in" checkbox at login
2017-08-31 23:38:59 -04:00
Jérémie Astori ad8ec4b1e6
Remove the "Stay signed in" checkbox at login
This option is less and less the norm on modern webapps, it is fair to assume this is the default behavior. In fact, we were making it the default.

But more importantly, coming soon is the ability of remotely logging out of your other sessions, which is well handled through token deletion. That means we need to know about said tokens, which are not sent in no-"Stay signed in" version.
2017-08-31 23:07:43 -04:00
greenkeeper[bot] 4381395ca6 chore(package): update chai to version 4.1.2 2017-08-31 22:04:54 +00:00
Max Leiter 05aa5da6e0 Change vertical alignment of emoji in topics, fixes #1480 2017-08-31 13:53:21 -07:00
Pavel Djundik 918b7382b8 Merge pull request #1475 from thelounge/xpaw/condensed-css
Implement condensed messages option entirely with CSS
2017-08-31 22:16:42 +03:00
Pavel Djundik 271948b0fb Merge pull request #1477 from thelounge/xpaw/graceful-quit
Gracefully quit on Ctrl+C
2017-08-31 22:12:08 +03:00
Pavel Djundik b79a6cce0c Add support for binding to unix sockets
Fixes #686.
Fixes #691.
2017-08-31 21:56:20 +03:00
dgw bed6053cec Add /cycle command (a.k.a. /rejoin)
Closes #1436
2017-08-31 06:43:32 -05:00
Jérémie Astori a53169627e Merge pull request #1473 from thelounge/greenkeeper/jquery-textcomplete-1.8.3
Update jquery-textcomplete to the latest version 🚀
2017-08-30 21:00:20 -04:00
greenkeeper[bot] 1e54018f15
chore(package): update jquery-textcomplete to version 1.8.4 2017-08-30 20:52:32 -04:00
Pavel Djundik 0d57df81af Gracefully quit on Ctrl+C
Fixes #268
2017-08-30 20:26:45 +03:00
Pavel Djundik d814abd1cf Implement condensed messages option entirely with CSS
Fixes #1432
2017-08-30 15:43:31 +03:00
Jérémie Astori 5821247b3d Merge pull request #1472 from thelounge/xpaw/css-escape
Escape channel names in slugify helper correctly
2017-08-29 21:28:10 -04:00
Jérémie Astori 2920f5f24a Merge pull request #1474 from thelounge/xpaw/fix-user-remove
Deleting a user should log them out
2017-08-29 21:27:06 -04:00
Pavel Djundik 05f8bfe906 Deleting a user should log them out
Fixes #916
2017-08-29 15:43:52 +03:00
Pavel Djundik 53ebee195c Escape channel names in slugify helper correctly
Fixes #1172.
2017-08-29 12:38:29 +03:00
Pavel Djundik d8f2d7fc10 Merge pull request #1452 from thelounge/xpaw/refactor-dates
Completely refactor how date markers are inserted
2017-08-29 11:59:35 +03:00
Élie Michel 19710b90c0 Merge branch 'master' into pr-proper-ldap 2017-08-29 08:42:26 +02:00
Jérémie Astori c8a78d447a Merge pull request #1466 from thelounge/greenkeeper/npm-run-all-4.1.1
Update npm-run-all to the latest version 🚀
2017-08-28 20:40:57 -04:00
greenkeeper[bot] 0929358b9a chore(package): update npm-run-all to version 4.1.1 2017-08-28 08:33:07 +00:00
Pavel Djundik 99400421ef Completely refactor how date markers are inserted 2017-08-27 11:38:23 +03:00
Al McKinlay 099d9219fd Merge pull request #1457 from thelounge/xpaw/requestIdleCallback
Process chat messages in requestIdleCallback if available
2017-08-26 20:57:15 +01:00
Al McKinlay 19f3cbd10e Merge pull request #1453 from thelounge/xpaw/tabcomplete-module
Move all auto completion code to a separate file
2017-08-26 19:33:56 +01:00
Pavel Djundik c55c338c72 Merge pull request #1446 from thelounge/parse-emoji
Parse emoji to make them bigger
2017-08-26 20:34:40 +03:00
Pavel Djundik 495d8c3e04 Merge pull request #1448 from thelounge/xpaw/quit-promo
Set default quit default message
2017-08-26 20:34:32 +03:00
Jérémie Astori f7ecd0a053 Merge pull request #1350 from thelounge/xpaw/proper-cli
Only create config folder in 'start' command
2017-08-26 12:17:10 -04:00
Jérémie Astori 234fd31411
Clarify some users.length that were forgotten in a previous PR 2017-08-26 12:04:13 -04:00
Pavel Djundik 252dca3d3f
Only create config folder in 'start' command
Fixes #520.
Fixes #1288.
2017-08-26 12:04:13 -04:00
Jérémie Astori 330bb9a84e Merge pull request #1463 from thelounge/astorije/better-error
Improve output of WebPush error
2017-08-26 12:03:08 -04:00
Jérémie Astori 9c5071ec98
Improve output of WebPush error
Without this, the error displayed contains a lot of superfluous information, repeated.
2017-08-26 11:47:35 -04:00
Jérémie Astori 45eef67163 Merge pull request #1462 from thelounge/greenkeeper/npm-run-all-4.1.0
Update npm-run-all to the latest version 🚀
2017-08-26 10:20:31 -04:00
greenkeeper[bot] 327c0fdb6a chore(package): update npm-run-all to version 4.1.0 2017-08-26 14:08:04 +00:00
Pavel Djundik 6ba2b8a3d1 Merge pull request #1458 from PolarizedIons/spell-check
Fix general spelling errors
2017-08-25 19:13:04 +03:00
PolarizedIons e00b28d201 Fix general spelling errors 2017-08-25 18:02:28 +02:00
Pavel Djundik f56c748015 Process chat messages in equestIdleCallback if available 2017-08-25 15:30:47 +03:00
Jérémie Astori d4e02d96fa Merge pull request #1451 from thelounge/fix-condensed-time
Do not hide time from events in condensed block
2017-08-24 19:31:22 -04:00
Pavel Djundik 4a3026e11b Set default quit default message 2017-08-24 21:07:47 +03:00
Pavel Djundik 1e2d35f206 Move all auto completion code to a separate file 2017-08-24 17:44:40 +03:00
Pavel Djundik 5785af6738 Do not hide time from events in condensed block 2017-08-24 15:21:07 +03:00
Pavel Djundik 60e69a83fc Merge pull request #1387 from yashsriv/extend/fuzzy
Extend fuzzy search in autocomplete to all strategies
2017-08-24 12:01:34 +03:00
Pavel Djundik 06741a1e1c Merge pull request #1153 from bews/bews/dev-8-font
Bigger font size
2017-08-24 11:56:30 +03:00
Pavel Djundik 70ea6e73a0 Add findEmoji tests 2017-08-24 11:54:28 +03:00
Mac Carrithers f8663ed28b Parse emoji to make them bigger 2017-08-24 11:54:28 +03:00
Yash Srivastav 0e332ec19d
Merge redundant functions into one 2017-08-24 05:48:22 +05:30
Yash Srivastav fa021da7cf
Add fuzzy searching for autocompleting colors 2017-08-24 05:38:21 +05:30
Yash Srivastav 1c8aa7a88f
Extend fuzzy search in autocomplete to all strategies
Fixes #1086
Just building upon the work already done in #1334
2017-08-24 05:38:16 +05:30
Jérémie Astori e292ef2bed Merge pull request #1443 from thelounge/astorije/improve-user-mgmt-cli
Improve CLI user management
2017-08-23 19:49:18 -04:00
Jérémie Astori ed68ff4a34
Make sure CLI does not crash on undefined.length when we figured out users could not be read already 2017-08-23 13:21:15 -04:00
Jérémie Astori cdbefd3905
Make The Lounge private mode by default 2017-08-23 13:21:14 -04:00
Jérémie Astori 684f1a641d
Make sure server is running before loading users 2017-08-23 13:21:14 -04:00
Jérémie Astori aa49856446
Warn when adding or listing users in public mode 2017-08-23 13:21:14 -04:00
Jérémie Astori f221121998
Inform when no users during autoload to take into account removing the last user 2017-08-23 13:21:14 -04:00
Jérémie Astori 90842267e8
Do not prevent server to run when there are no users in private mode 2017-08-23 13:20:46 -04:00
Jérémie Astori 9811f2be02 Merge pull request #1444 from thelounge/xpaw/protect-history-loading
Do not unintentionally send incorrect messages from history
2017-08-23 09:27:12 -04:00
Pavel Djundik c24e48bdb5 Merge pull request #1445 from thelounge/xpaw/gitignore-vapid-keys
Ignore vapid.json generated during tests
2017-08-23 14:23:54 +03:00
Pavel Djundik 1bf2be1b51 Do not unintentionally send incorrect messages from history 2017-08-23 14:17:53 +03:00
Pavel Djundik 45d974a0c3 Ignore vapid.json generated during tests 2017-08-23 12:36:35 +03:00
Jérémie Astori 91ecd99c84 Merge pull request #1442 from thelounge/astorije/fix-condensed-time
Fix time placeholder showing on mobile format for condensed messages
2017-08-23 02:48:35 -04:00
Jérémie Astori 51bd46b871
Fix time placeholder showing on mobile format for condensed messages
As an extra, make sure time placeholder cannot be selected anymore, and do not do an extra call to `tz` helper when time is not relevant/displayed.

I tried to entirely remove `time`/`from` blocks, but because of flexbox layout, that broke message alignment...
2017-08-23 02:23:54 -04:00
Pavel Djundik fcd9782eb7 Merge pull request #1124 from thelounge/xpaw/push-notifications
Implement push notifications
2017-08-22 23:16:41 +03:00
Jérémie Astori 3b79a3df90 Merge pull request #1358 from starquake/highlight-wordboundary
Take into account wordboundaries for custom highlighting
2017-08-22 09:35:55 -04:00
Jérémie Astori b0b2518e10 Merge pull request #1438 from thelounge/astorije/env-var-doc
Add documentation for LOUNGE_HOME environment variable in the CLI helper
2017-08-22 09:30:51 -04:00
Jérémie Astori 9917b9259f Merge pull request #1356 from MaxLeiter/MaxLeiter/two-char-emoji
Only match emoji autocomplete after two characters
2017-08-22 09:23:11 -04:00
Max Leiter 64ea29f46d Only match emoji autocomplete after two characters 2017-08-22 11:04:38 +03:00
Pavel Djundik 36f2f644ea Add tests for stripping formatting 2017-08-22 10:54:18 +03:00
Pavel Djundik 0ac3ba28e1 Web Push Notifications 2017-08-22 10:54:18 +03:00
Jérémie Astori a99ea14dc0 Merge pull request #1439 from thelounge/astorije/more-standard-css
Get closer to stylelint's standard config
2017-08-21 13:54:58 -04:00
Jérémie Astori e5ee53fc1f
Use leading-zero notation to get closer to stylelint standard config 2017-08-21 02:22:40 -04:00
Jérémie Astori 5d77bcb7c8
Use double-colon on pseudo elements to get closer to stylelint standard config 2017-08-21 02:18:33 -04:00
Jérémie Astori ac3ce74343
Read default LOUNGE_HOME from .lounge_home file 2017-08-21 02:03:40 -04:00
Jérémie Astori 98bfe349d9
Add documentation for LOUNGE_HOME environment variable in the CLI helper 2017-08-21 01:49:32 -04:00
Pavel Djundik 1e9910f899 Merge pull request #1437 from thelounge/xpaw/cleanup-condensed
Cleanup condensed appendMessage
2017-08-20 19:37:32 +03:00
Pavel Djundik 0c0d45ff4f Cleanup condensed appendMessage 2017-08-19 21:47:23 +03:00
Pavel Djundik f2f350c0c5 Merge pull request #1435 from thelounge/greenkeeper/eslint-4.5.0
Update eslint to the latest version 🚀
2017-08-19 11:28:03 +03:00
Pavel Djundik a7f336507a Merge pull request #1434 from thelounge/greenkeeper/babel-loader-7.1.2
Update babel-loader to the latest version 🚀
2017-08-19 11:27:37 +03:00
greenkeeper[bot] 1314ecd77d chore(package): update eslint to version 4.5.0 2017-08-19 03:12:36 +00:00
greenkeeper[bot] ae297e4269 chore(package): update babel-loader to version 7.1.2 2017-08-18 23:02:09 +00:00
Jan Visser 43cc2792c9 Take into account wordboundaries for custom highlighting 2017-08-18 14:26:41 +02:00
Jérémie Astori 14eb0c0d7f Merge pull request #1427 from thelounge/readme-features
Add feature overview in readme
2017-08-17 23:22:34 -04:00
Pavel Djundik 533fe25db4
Add feature overview in readme 2017-08-17 23:14:27 -04:00
Jérémie Astori 3e39bdb329 Merge pull request #1425 from thelounge/greenkeeper/babel-core-6.26.0
Update babel-core to the latest version 🚀
2017-08-16 22:38:30 -04:00
Jérémie Astori 3c117a6b88 Merge pull request #1426 from thelounge/update-packages
Update express and ua-parser-js to latest versions
2017-08-16 21:33:30 -04:00
Pavel Djundik e8b83b85c2 Update express and ua-parser-js to latest versions 2017-08-16 22:26:12 +03:00
greenkeeper[bot] 697ae217b9 chore(package): update babel-core to version 6.26.0 2017-08-16 17:14:29 +00:00
Jérémie Astori 10d38e107c Merge pull request #1419 from thelounge/xpaw/remove-homedir-polyfill
Remove os.homedir() polyfill
2017-08-16 12:56:55 -04:00
Pavel Djundik 8343f3cdcf
Remove os.homedir() polyfill 2017-08-16 12:48:07 -04:00
Jérémie Astori 8dd6b0f25a Merge pull request #1424 from thelounge/greenkeeper/webpack-3.5.5
Update webpack to the latest version 🚀
2017-08-16 12:14:23 -04:00
greenkeeper[bot] 047be5d638 chore(package): update webpack to version 3.5.5 2017-08-16 15:17:13 +00:00
Pavel Djundik 21aba63e09 Merge pull request #1417 from thelounge/astorije/fix-full-width-status-messages
Fix expanded status messages not taking up full line width
2017-08-16 11:09:38 +03:00
Pavel Djundik e6200f1461 Merge pull request #1421 from thelounge/yamanickill/1420-user-options-falsey
Fix issue with falsey user options getting overridden by truthy defaults
2017-08-16 11:09:22 +03:00
Alistair McKinlay bc2a37913f Fix issue with falsey user options getting overridden by truthy defaults 2017-08-16 09:01:09 +01:00
Pavel Djundik aef1bb3acc Merge pull request #1418 from thelounge/astorije/cli-config-take-two
Document recent CLI changes in help + rename to .lounge_home
2017-08-16 09:34:47 +03:00
Jérémie Astori 507cc61d5c
Rename new file holding config location for consistency
`.lounge_config` is misleading as this file does not contain the config itself. Also, env var is called `LOUNGE_HOME`, deprecated flag is `--home`, so it makes more sense that way.
2017-08-16 00:34:29 -04:00
Jérémie Astori 5e7a7a3870
Update CLI help with regard to recent deprecation of --home option
- Mark the option as deprecated (cannot be removed from the help, unfortunately)
- Add details to `lounge config` regarding `LOUNGE_HOME`
- Remove mention of `--home` in default config file
2017-08-16 00:33:33 -04:00
Jérémie Astori f93634df39 Merge pull request #1416 from thelounge/xpaw/handle-distro-configs
Use .lounge_config to help distribution packages handle config paths right
2017-08-15 20:11:38 -04:00
Jérémie Astori 270fd8d4f9 Fix expanded status messages not taking up full line width 2017-08-15 20:06:18 -04:00
Pavel Djundik 5299d976c0 Use .lounge_config to help distribution packages handle config paths right 2017-08-15 21:57:47 +03:00
Pavel Djundik 6ce46a63bf Merge pull request #1412 from thelounge/xpaw/fix-uri
Do not throw an exception when URI parsing fails
2017-08-15 14:40:37 +03:00
Pavel Djundik e4ee3fbb3c Do not throw an exception when URI parsing fails 2017-08-14 15:25:34 +03:00
Pavel Djundik 28e32dc558 Merge pull request #759 from thelounge/yamanickill/condense-joins
Initial part/join condensing
2017-08-14 11:18:51 +03:00
Jérémie Astori bd530552c2 Merge pull request #1411 from thelounge/xpaw/refactor-auth
Refactor authentication flow
2017-08-13 16:35:23 -04:00
Jérémie Astori 43a8604b32
Add some human-friendliness to the condensed status messages 2017-08-13 16:16:48 -04:00
Jérémie Astori 853e646670
Move condense caret to the right, animate transition, add hover state (with transition), reuse thumbnail toggle style 2017-08-13 16:16:38 -04:00
Jérémie Astori b508783101
Improve UI of expanded/condensed status message selection in client settings 2017-08-13 16:14:38 -04:00
Jérémie Astori 0cdc2a0a04
Replace status message abbr with a tooltipped icon 2017-08-13 16:14:37 -04:00
Pavel Djundik 3190fd00bf Refactor authentication flow 2017-08-13 21:37:12 +03:00
Alistair McKinlay 499dfdfe92
Condense Joins 2017-08-13 14:30:30 -04:00
Jérémie Astori d87662482b Merge pull request #1409 from thelounge/xpaw/show-more-trim
Remove 10 second interval to trim buffer
2017-08-13 12:36:22 -04:00
Pavel Djundik 16cde4fcb2 Merge pull request #1407 from thelounge/greenkeeper/webpack-3.5.4
Update webpack to the latest version 🚀
2017-08-13 19:17:40 +03:00
Jérémie Astori dff94cc6fd Merge pull request #1406 from thelounge/xpaw/storage-dereferencing
Correctly dereference stored images when leaving channels
2017-08-13 12:17:02 -04:00
Jérémie Astori f688e8df6c Merge pull request #1410 from thelounge/xpaw/resolve-relative-uris
Resolve relative URIs in link previewer
2017-08-13 12:15:24 -04:00
Pavel Djundik 66ea26f4bd Resolve relative URIs in link previewer
Also adds support for image_src links
2017-08-13 13:06:01 +03:00
Pavel Djundik e5ce2f2688 Remove 10 second interval to trim buffer
Fixes #96
2017-08-13 12:23:51 +03:00
greenkeeper[bot] 5bb500f384 chore(package): update webpack to version 3.5.4 2017-08-12 09:38:21 +00:00
Pavel Djundik 6f32e7ae75 Correctly dereference stored images when leaving channels
Fixes #1404
2017-08-11 15:02:58 +03:00
Pavel Djundik d39e8ba9f8 Merge pull request #1397 from thelounge/greenkeeper/webpack-3.5.0
Update webpack to the latest version 🚀
2017-08-11 10:34:47 +03:00
greenkeeper[bot] e394224868 chore(package): update webpack to version 3.5.3 2017-08-11 10:25:36 +03:00
Pavel Djundik 536498c53c Merge pull request #1405 from thelounge/greenkeeper/urijs-1.18.12
Update urijs to the latest version 🚀
2017-08-11 09:54:40 +03:00
greenkeeper[bot] d63de95b4e fix(package): update urijs to version 1.18.12 2017-08-10 18:41:49 +00:00
Jérémie Astori 3822c11cc2 Merge pull request #1403 from thelounge/xpaw/loading-messages-text
Change history button text while loading
2017-08-09 18:33:13 -04:00
Pavel Djundik 6b00cdeba9 Change history button text while loading 2017-08-09 14:18:37 +03:00
Pavel Djundik 40c129dbb7 Merge pull request #1401 from thelounge/greenkeeper/urijs-1.18.11
Update urijs to the latest version 🚀
2017-08-09 13:08:34 +03:00
Jérémie Astori 053a0d0723 Merge pull request #1399 from thelounge/xpaw/correct-browser-name
Correctly append OS name
2017-08-08 21:49:19 -04:00
greenkeeper[bot] fa2bd86d72 fix(package): update urijs to version 1.18.11 2017-08-08 21:03:21 +00:00
Pavel Djundik 25ac4d9e69 Correctly append OS name 2017-08-08 22:46:55 +03:00
Jérémie Astori ff85b616f0 Merge pull request #1395 from thelounge/greenkeeper/eslint-4.4.0
Update eslint to the latest version 🚀
2017-08-08 00:36:24 -04:00
greenkeeper[bot] b529a99cf6
chore(package): update eslint to version 4.4.1 2017-08-08 00:15:29 -04:00
Jérémie Astori 80e3302947 Merge pull request #1394 from thelounge/greenkeeper/chai-4.1.1
Update chai to the latest version 🚀
2017-08-05 12:27:42 -04:00
greenkeeper[bot] c9e70ab94c chore(package): update chai to version 4.1.1 2017-08-05 07:53:19 +00:00
Jérémie Astori 5a6591112b Merge pull request #1199 from thelounge/xpaw/safer-auth-flow
Implement multiple sessions for users
2017-08-04 00:33:00 -04:00
Jérémie Astori 2df29db6e5 Merge pull request #1373 from thelounge/astorije/stack-overflow
Add Stack Overflow link in CONTRIBUTING file
2017-08-03 11:50:57 -04:00
Jérémie Astori df6c6a3ab7 Merge pull request #1386 from thelounge/greenkeeper/fs-extra-4.0.1
Update fs-extra to the latest version 🚀
2017-08-02 14:43:09 -04:00
greenkeeper[bot] 1749279c0c
fix(package): update fs-extra to version 4.0.1 2017-08-02 13:57:44 -04:00
Jérémie Astori 99db108d9a Merge pull request #1388 from thelounge/greenkeeper/mocha-3.5.0
Update mocha to the latest version 🚀
2017-08-02 13:30:50 -04:00
Jérémie Astori b280eeaf86
Add a SUPPORT file 2017-08-01 01:41:49 -04:00
Jérémie Astori 1629983a5d
Add Stack Overflow link in CONTRIBUTING file 2017-08-01 01:37:47 -04:00
Jérémie Astori 45276e3958 Merge pull request #1385 from thelounge/greenkeeper/irc-framework-2.9.1
Update irc-framework to the latest version 🚀
2017-08-01 01:29:11 -04:00
greenkeeper[bot] 497676c39d chore(package): update mocha to version 3.5.0 2017-07-31 20:53:36 +00:00
greenkeeper[bot] 2b23f630f1 fix(package): update irc-framework to version 2.9.1 2017-07-31 14:36:26 +00:00
Pavel Djundik c14f7da1b2 Generate unique tokens for each login and session 2017-07-31 02:02:15 +03:00
Pavel Djundik 30e167c42c Merge pull request #1379 from thelounge/greenkeeper/irc-framework-2.9.0
Update irc-framework to the latest version 🚀
2017-07-31 01:59:49 +03:00
Pavel Djundik f19581b41c Merge pull request #1382 from thelounge/greenkeeper/nyc-11.1.0
Update nyc to the latest version 🚀
2017-07-31 01:59:37 +03:00
Jérémie Astori 8e4582f3f5
2.4.0 2017-07-30 18:50:15 -04:00
Jérémie Astori 769fdab252
Remove temporary npm tag for pre-releases 2017-07-30 18:50:09 -04:00
Jérémie Astori db9e34da8d
Add changelog entry for v2.4.0 2017-07-30 18:49:49 -04:00
greenkeeper[bot] 613e2ffda8 chore(package): update nyc to version 11.1.0 2017-07-29 20:42:05 +00:00
Niko Bews b02db5f1c6 Bigger font size 2017-07-29 23:39:34 +03:00
Pavel Djundik df698ab3ea Correctly send /list parameters 2017-07-28 13:53:41 +03:00
greenkeeper[bot] 81ac90f2c1 fix(package): update irc-framework to version 2.9.0 2017-07-27 19:46:47 +00:00
Jérémie Astori 1bcf59f704
2.4.0-rc.2 2017-07-27 13:36:51 -04:00
Jérémie Astori 5e9d203f3e
Add changelog for v2.4.0-rc.2 2017-07-27 13:36:30 -04:00
Pavel Djundik 5ccc184509 Merge pull request #1378 from thelounge/astorije/install-urijs
Move urijs from devDependencies to dependencies
2017-07-27 11:50:55 +03:00
Jérémie Astori 8115dea4bf Move urijs from devDependencies to dependencies
https://github.com/thelounge/lounge/pull/1276 refactored previews, and in particular [reused our link-in-messages detection](https://github.com/thelounge/lounge/pull/1276/files#diff-4805d608cbc31851a7bee1bf4c7e247eR6) instead of [having a separate logic](https://github.com/thelounge/lounge/pull/1276/files#diff-4805d608cbc31851a7bee1bf4c7e247eL19). 

Unfortunately, this loads a client library, which requires `urijs`. Since these are built at release time, we were not including this package in the production dependencies, and it is now breaking at install time.

This might happen again if we add a client dependency in this file and forget it is also loaded by the server. We could in the future either extract this logic into a shared location, or we could move this logic entirely on the server (or maybe many other options), but in the meantime this will fix the issue in `v2.4.0-rc.1`.
2017-07-27 02:04:47 -04:00
Jérémie Astori 9f9b300d26
2.4.0-rc.1 2017-07-27 00:50:54 -04:00
Jérémie Astori 365bed34a3
Prepare changelog entry for v2.4.0-rc.1 and set up pre-release publish tag 2017-07-27 00:50:42 -04:00
Jérémie Astori 8aa89d7da2 Merge pull request #1366 from thelounge/astorije/persist-preview-toggle
Keep track of preview visibility on the server so it persists at page reload
2017-07-26 18:26:12 -04:00
Jérémie Astori 157289258a
Keep track of preview visibility on the server so it persists at page reload 2017-07-26 18:16:50 -04:00
Jérémie Astori e34da8a9f3 Merge pull request #1376 from thelounge/greenkeeper/webpack-3.4.1
Update webpack to the latest version 🚀
2017-07-26 18:07:09 -04:00
Pavel Djundik 5ffecac70d Merge pull request #1374 from thelounge/astorije/fix-hover-glitch
Remove user link color override on dark theme
2017-07-26 20:04:48 +03:00
greenkeeper[bot] dddfc78279 chore(package): update webpack to version 3.4.1 2017-07-26 09:02:43 +00:00
Jérémie Astori 60bf17fe91
Remove user link color override on dark theme
This fixes a UI glitch on hover when colored nicknames are disabled on Morning and Zenburn.
2017-07-26 01:38:51 -04:00
Jérémie Astori 1f6ac656aa Merge pull request #1370 from thelounge/xpaw/image-viewer-focus
Remove focus from input when opening image viewer
2017-07-25 12:41:13 -04:00
Jérémie Astori 30a1bb7b9b Merge pull request #1371 from thelounge/greenkeeper/webpack-3.4.0
Update webpack to the latest version 🚀
2017-07-25 12:37:03 -04:00
Pavel Djundik 45a2d074fb Remove focus from input when opening image viewer
Fixes #1342
2017-07-25 18:07:14 +03:00
greenkeeper[bot] 334768d5d5 chore(package): update webpack to version 3.4.0 2017-07-25 14:41:38 +00:00
Pavel Djundik 2a7dadd6ee Merge pull request #1369 from thelounge/greenkeeper/semver-5.4.0
Update semver to the latest version 🚀
2017-07-25 11:29:36 +03:00
greenkeeper[bot] 8a7b0c1440
fix(package): update semver to version 5.4.1 2017-07-24 19:24:49 -04:00
Jérémie Astori 8259b0924b Merge pull request #1367 from thelounge/astorije/fix-viewer-cycle
Fix image viewer cycling when some previews are hidden
2017-07-24 19:21:49 -04:00
Jérémie Astori 8dcb4700e3 Merge pull request #1368 from thelounge/astorije/rm-viewer-blur
Remove background blur filter/transition when opening the image viewer
2017-07-24 19:21:27 -04:00
Jérémie Astori 5b60bb0b0c
Remove background blur filter/transition when opening the image viewer 2017-07-24 02:31:12 -04:00
Jérémie Astori 60b531a174
Fix image viewer cycling when some previews are hidden 2017-07-24 02:14:14 -04:00
Jérémie Astori 2a81af6949 Merge pull request #1365 from thelounge/astorije/image-viewer-previous-next
Add Previous/Next cycling buttons to the image viewer
2017-07-24 01:47:53 -04:00
Jérémie Astori dc33b3ea95 Merge pull request #1363 from thelounge/xpaw/fix-preview-overflow
Fix link previews not truncating correctly
2017-07-24 01:47:03 -04:00
Jérémie Astori b9f17b77ab
Add Previous/Next cycling buttons to the image viewer 2017-07-23 13:14:27 -04:00
Pavel Djundik 52d85559aa Fix link previews not truncating correctly 2017-07-22 12:33:49 +03:00
Jérémie Astori 30cf980506 Merge pull request #1359 from thelounge/xpaw/fix-link-previews
Fix remaining issues with link previews
2017-07-22 01:24:13 -04:00
Jérémie Astori e73f82e46c Merge pull request #1361 from thelounge/xpaw/fix-mobile-zalgo
Hide overflow on entire message row
2017-07-21 23:01:08 -04:00
Jérémie Astori 2102c79835 Merge pull request #1362 from thelounge/greenkeeper/eslint-4.3.0
Update eslint to the latest version 🚀
2017-07-21 23:00:15 -04:00
greenkeeper[bot] f35fc4acf3 chore(package): update eslint to version 4.3.0 2017-07-21 16:46:00 +00:00
Pavel Djundik 30f40ee448 Fix remaining issues with link previews
Fixes #1357
2017-07-21 19:39:06 +03:00
Pavel Djundik ed9bfcf2fa Merge pull request #1194 from thelounge/xpaw/lazy-user-list
Lazily load user list in channels on init, keep autocompletion sort on server
2017-07-21 17:25:23 +03:00
Pavel Djundik 74ca130d51 Hide overflow on entire message row
Fixes #1360
2017-07-21 15:00:42 +03:00
Pavel Djundik f642a3c776 Merge pull request #1353 from thelounge/astorije/better-preview-ordering
Enforce correct order for previews on server-side prefectch rather than at client parsing
2017-07-21 11:12:37 +03:00
Pavel Djundik 7d981d60d8 Recycle existing User objects in names event
This is required to keep lastMessage correct. This will also be useful for the away tracking PR.
2017-07-21 11:05:37 +03:00
Pavel Djundik 48d367e379 Use findUser 2017-07-21 11:05:37 +03:00
Pavel Djundik d06c279f02 Lazily load user list 2017-07-21 11:05:36 +03:00
Pavel Djundik 7af573fd96 Handle auto completion order on the server
Fixes #289.
2017-07-21 11:05:21 +03:00
Jérémie Astori 900d41bf47
Re-use .previews to order incoming previews instead of extra links 2017-07-21 01:51:51 -04:00
Jérémie Astori 1c8ea0b75c
Fix preserved whitespace-related issues for previews by separating them from main text 2017-07-21 01:50:09 -04:00
Jérémie Astori a13c08a45b
Enforce correct order for previews on server-side prefectch rather than at client parsing
This has the benefit of not adding `.preview` divs everywhere, anytime we use `parse()`, and also to un-tie the position of the preview blocks from the result of the helper. This means that templates that call `parse` and have some extra markup after that are not constrained anymore.

This is effectively an alternative, better way to fix https://github.com/thelounge/lounge/issues/1343, but the initial fix that was put in place (https://github.com/thelounge/lounge/pull/1347) is still relevant, for example to make sure a preview stays hidden (and does not add extra margin/padding/etc.) if the link does not prefetch.
2017-07-21 01:06:42 -04:00
Al McKinlay d839a9e64a Merge pull request #1319 from MaxLeiter/patch-1
Update README for when to run `npm run build`
2017-07-20 08:56:26 +01:00
Max Leiter e0d6e11d4c Update README directions on when to npm run build
need to `npm run build` a lot more since webpack was added
2017-07-19 22:28:02 -07:00
Jérémie Astori 4e7eed7958 Merge pull request #1334 from MaxLeiter/MaxLeiter/emoji
Emoji fuzzysearching
2017-07-20 01:20:57 -04:00
Jérémie Astori 9a5f577ae8 Merge pull request #1354 from thelounge/yamanickill/more-index
Change more to use id rather than count.
2017-07-20 01:18:52 -04:00
Max Leiter 4a56870c08 Emoji fuzzysearching 2017-07-19 11:33:16 -07:00
Alistair McKinlay e01e21cdbe Change more to use id rather than count. 2017-07-19 07:37:13 +01:00
Jérémie Astori f88d1e3bef Merge pull request #1242 from starquake/newlines-fix
Correctly show whitespace and newlines in messages
2017-07-19 02:05:31 -04:00
Jérémie Astori 03d6f284fb Merge pull request #1330 from MaxLeiter/MaxLeiter/TIME
Add SOURCE CTCP Command
2017-07-19 02:00:50 -04:00
Jérémie Astori c6dd350a0b Merge pull request #1352 from thelounge/xPaw/kick-target-mode
Fix incorrect mode on kick target
2017-07-18 12:35:53 -04:00
Jan Visser f0e6e397a4 Correctly handle multiple successive whitespace characters 2017-07-18 16:54:35 +02:00
Pavel Djundik 70d09841d9 Fix incorrect mode on kick target 2017-07-18 17:38:24 +03:00
Pavel Djundik 488dd7aeb4 Merge pull request #1347 from thelounge/astorije/fix-empty-preview
Hide empty preview divs when there are no previews loaded
2017-07-18 15:44:51 +03:00
Pavel Djundik ff757d4386 Merge pull request #1348 from thelounge/astorije/fix-action-previews
Fix previews in actions ("/me") after page reload
2017-07-18 15:44:31 +03:00
Pavel Djundik 06d0189237 Merge pull request #1307 from thelounge/xpaw/image-proxy
Store preview images on disk for privacy, security and caching
2017-07-18 11:47:05 +03:00
Pavel Djundik f35a2809a7 Store preview images on disk for privacy, security and caching 2017-07-18 11:37:16 +03:00
Jérémie Astori 5fb34ce93f
Fix previews in actions ("/me") after page reload 2017-07-18 01:27:18 -04:00
Jérémie Astori e5bace1794
Hide empty preview divs when there are no previews loaded 2017-07-18 00:37:45 -04:00
Jérémie Astori ce0e460368 Merge pull request #1325 from thelounge/astorije/image-viewer
An image viewer popup for thumbnails and image previews
2017-07-18 00:09:21 -04:00
Pavel Djundik 8727957710 Merge pull request #1345 from MaxLeiter/patch-3
Update README badge to new demo URL
2017-07-18 01:20:46 +03:00
Max Leiter 2fdd4ab16e Update README badge to new demo URL 2017-07-17 15:17:01 -07:00
Max Leiter 58cf481d86 Add SOURCE CTCP Command 2017-07-17 11:09:20 -07:00
Jérémie Astori 511b173b6f
Add an image viewer for thumbnails and image previews 2017-07-16 19:25:48 -04:00
Jérémie Astori 9735f2b7a1 Merge pull request #1340 from thelounge/greenkeeper/stylelint-8.0.0
Update stylelint to the latest version 🚀
2017-07-16 13:06:07 -04:00
greenkeeper[bot] b7a1700908 chore(package): update stylelint to version 8.0.0 2017-07-16 15:56:58 +03:00
Jérémie Astori a010973766
Fix some button styling 2017-07-15 12:27:39 -04:00
Pavel Djundik 1ee67abd72 Merge pull request #1338 from thelounge/greenkeeper/webpack-3.3.0
Update webpack to the latest version 🚀
2017-07-15 17:58:13 +03:00
Jérémie Astori dedb3d0381 Merge pull request #1332 from thelounge/greenkeeper/fs-extra-4.0.0
Update fs-extra to the latest version 🚀
2017-07-15 10:50:21 -04:00
greenkeeper[bot] bcf11eca55 chore(package): update webpack to version 3.3.0 2017-07-15 14:07:12 +00:00
Pavel Djundik 265673674d Merge pull request #1326 from MaxLeiter/MaxLeiter/readme-image-update
Update screenshot in README
2017-07-15 12:12:17 +03:00
Pavel Djundik e2c5468d27 Merge pull request #1328 from thelounge/xpaw/remove-ie-compat
Remove X-UA-Compatible
2017-07-15 11:56:38 +03:00
Pavel Djundik 4837699d5c Merge pull request #1329 from MaxLeiter/MaxLeiter/safari-icon
Add mask-icon for pinned safari tab
2017-07-15 11:54:04 +03:00
Pavel Djundik 7869f09949 Merge pull request #1336 from thelounge/astorije/fix-autocomplete-transition
Remove "in" transition on autocomplete items to fix a visual glitch on value refresh
2017-07-15 11:48:46 +03:00
Pavel Djundik 244d0f84f8 Merge pull request #1335 from thelounge/astorije/fix-morning-toggle
Fix preview toggle button background on Morning
2017-07-15 11:42:52 +03:00
Max Leiter 46b7296b87 Add mask-icon for pinned safari tab 2017-07-14 18:32:54 -07:00
Jérémie Astori 1110097664
Remove "in" transition on autocomplete items to fix a visual glitch on value refresh 2017-07-14 20:43:47 -04:00
Jérémie Astori d2a3287800
Fix preview toggle button on Morning 2017-07-14 20:22:45 -04:00
greenkeeper[bot] 48bae15939 fix(package): update fs-extra to version 4.0.0 2017-07-14 17:53:45 +00:00
Pavel Djundik 43f1b6b627 Remove X-UA-Compatible
Ref: https://stackoverflow.com/a/26348511/2200891
2017-07-14 12:18:01 +03:00
Max Leiter 0b68b07e3b Update screenshot in README 2017-07-12 15:47:13 -07:00
Pavel Djundik 6823fc2c29 Merge pull request #1323 from thelounge/greenkeeper/chai-4.1.0
Update chai to the latest version 🚀
2017-07-12 11:10:54 +03:00
Pavel Djundik a3d81adbd2 Merge pull request #1322 from thelounge/greenkeeper/webpack-3.2.0
Update webpack to the latest version 🚀
2017-07-12 11:10:45 +03:00
Jérémie Astori 2e3101547e Merge pull request #1324 from thelounge/astorije/fix-zenburn-previews
Fix background of toggle button and margin glitch of toggle body on Zenburn
2017-07-12 03:51:22 -04:00
Jérémie Astori 9937fcdbf9
Fix background of toggle button and margin glitch of toggle body on Zenburn 2017-07-12 02:56:58 -04:00
greenkeeper[bot] 50dc3cd01a chore(package): update chai to version 4.1.0 2017-07-12 00:40:14 +00:00
greenkeeper[bot] 20e4368865 chore(package): update webpack to version 3.2.0 2017-07-11 20:31:33 +00:00
Jérémie Astori a8643ea5af Merge pull request #1321 from thelounge/greenkeeper/jquery-textcomplete-1.8.2
Update jquery-textcomplete to the latest version 🚀
2017-07-11 09:13:40 -04:00
Jérémie Astori fb703004b1 Merge pull request #1320 from thelounge/greenkeeper/stylelint-7.13.0
Update stylelint to the latest version 🚀
2017-07-11 01:28:42 -04:00
greenkeeper[bot] df883c509e chore(package): update jquery-textcomplete to version 1.8.2 2017-07-11 01:20:56 +00:00
greenkeeper[bot] 35c9e88c86 chore(package): update stylelint to version 7.13.0 2017-07-10 21:33:08 +00:00
Pavel Djundik 199bc459b4 Merge pull request #1303 from thelounge/astorije/multiple-previews
Support multiple previews per message
2017-07-09 18:29:31 +03:00
Al McKinlay 841d3cd29e Merge pull request #1315 from thelounge/greenkeeper/eslint-4.2.0
Update eslint to the latest version
2017-07-09 15:21:39 +01:00
Al McKinlay 2d853f20aa Merge pull request #1309 from thelounge/astorije/collapse-previews
Add collapse/expand commands to toggle all previews
2017-07-09 15:20:48 +01:00
Al McKinlay 865900111d Merge pull request #1314 from thelounge/astorije/fix-missing-transitions
Fix missing transitions
2017-07-09 15:17:35 +01:00
Al McKinlay 590a63ae31 Merge pull request #1306 from thelounge/xpaw/remove-prettify
Remove hostname prettifier
2017-07-09 15:03:08 +01:00
greenkeeper[bot] fabfaa4cbb chore(package): update eslint to version 4.2.0 2017-07-09 02:27:31 +00:00
Jérémie Astori 7fb527847e
Fix missing transitions 2017-07-08 21:17:03 -04:00
Jérémie Astori 28200830ed
Move preview toggle buttons next to their respective URLs and switch from ellipsis to caret 2017-07-08 04:36:26 -04:00
Jérémie Astori 64ebe0f437
Support multiple previews per message
- Load up to 5 previews per message (to avoid abuse)
- Do not load multiple times the same URL
- Prepare preview containers per message instead of appending (to maintain correct order)
- Store an array of previews instead of a single preview in `Msg` objects
- Consolidate preview rendering for new messages and upon refresh/load history (when rendering entire channels)
- Update `parse` tests to reflect previous point
- Add test for multiple URLs
- Switch preview tests from `assert` API to `expect` API
2017-07-08 04:34:12 -04:00
Jérémie Astori c2f2c69e91 Merge pull request #1312 from thelounge/astorije/bump-express-socket.io
Bump express and socket.io to their latest patch versions
2017-07-08 03:53:31 -04:00
Jérémie Astori b1fa78665c Merge pull request #1294 from awalgarg/autocomplete-optout
Allow opting out of autocomplete
2017-07-08 03:46:35 -04:00
Jérémie Astori 1af06eab4c Merge pull request #1310 from thelounge/astorije/reword-previews-settings
Reword link preview settings to better match reality
2017-07-07 19:35:44 -04:00
Jérémie Astori 82cba0b06f
Bump express and socket.io to their latest patch versions
Greenkeeper missed express because of their odd RC releases, and we are still stuck trying to bump socket.io to their v2
2017-07-07 19:24:06 -04:00
Pavel Djundik 336cc6f44b Merge pull request #1308 from thelounge/greenkeeper/webpack-3.1.0
Update webpack to the latest version 🚀
2017-07-07 14:14:26 +03:00
Jérémie Astori cff76d033d
Reword link preview settings to better match reality
- s/Links and URLs/Link previews/: From a user perspective, these are the same thing... These options are for the prefetcher, not the URLs themselves
- s/thumbnails/images/: What we call thumbnails are for "site" previews, not actual image links
- s/links/websites/: Technically, both image and non-image links are links, "websites" carries a tiny bit better the meaning
2017-07-07 02:23:44 -04:00
Jérémie Astori e08f18f447
Add collapse/expand commands to toggle all previews 2017-07-07 00:18:37 -04:00
Jérémie Astori 1b4f4ee11e Merge pull request #1305 from thelounge/xpaw/fix-lock-and-defaults
Fix losing network settings
2017-07-06 18:46:57 -04:00
greenkeeper[bot] 69d931750b chore(package): update webpack to version 3.1.0 2017-07-06 22:11:32 +00:00
Pavel Djundik f06de70c40 Remove hostname prettifier 2017-07-06 15:02:32 +03:00
Pavel Djundik f3a4ed8e52 Fix losing network name when displayNetwork is false 2017-07-06 15:00:53 +03:00
Pavel Djundik 23b2f7197c Deep merge default config 2017-07-06 15:00:43 +03:00
Pavel Djundik fc231bca76 Merge pull request #1298 from thelounge/xpaw/fix-toggle-scroll
Fix jumps when toggling link preview
2017-07-04 21:00:56 +03:00
Jérémie Astori 5ffcbed632 Merge pull request #1292 from thelounge/greenkeeper/commander-2.11.0
Update commander to the latest version 🚀
2017-07-04 13:56:35 -04:00
Pavel Djundik 818a21b52e Fix jumps when toggling link preview 2017-07-04 20:51:22 +03:00
Jérémie Astori c7ed85a9a4 Merge pull request #1297 from thelounge/astorije/color-previews-zenburn
Fix background color contrast on Zenburn previews
2017-07-04 13:49:29 -04:00
Jérémie Astori 43522ee20a Merge pull request #1295 from thelounge/greenkeeper/babel-preset-env-1.6.0
Update babel-preset-env to the latest version 🚀
2017-07-04 13:45:56 -04:00
Jérémie Astori a96b071fb3
Fix background color contrast on Zenburn previews 2017-07-04 13:39:39 -04:00
Jérémie Astori a7ddfbc8a3 Merge pull request #1296 from thelounge/astorije/previews-crypto
Fix too big line height previews text on Crypto
2017-07-04 13:34:40 -04:00
Pavel Djundik 81e9a205c6 Merge pull request #1291 from thelounge/astorije/title-previews
Add title attributes to previews
2017-07-04 20:19:35 +03:00
Jérémie Astori 1ba8f10440
Fix too big line height previews text on Crypto 2017-07-04 13:15:55 -04:00
Jérémie Astori ec5b5ef565
Add title attributes to previews
This is useful on long preview titles/descriptions that truncate. We currently do the same for topics
2017-07-04 12:56:57 -04:00
Jérémie Astori 72ca99009b Merge pull request #1293 from thelounge/xpaw/fix-preview-truncate
Do not truncate link previews if viewport can fit more text
2017-07-04 12:54:54 -04:00
greenkeeper[bot] 398dbcad53 chore(package): update babel-preset-env to version 1.6.0 2017-07-04 15:09:08 +00:00
Pavel Djundik 2e82400d80 Merge pull request #1279 from thelounge/greenkeeper/jquery-textcomplete-1.8.1
Update jquery-textcomplete to the latest version 🚀
2017-07-04 13:02:55 +03:00
Pavel Djundik c62bc2fa35 Do not truncate link previews if viewport can fit more text
Fixes #1084
2017-07-04 09:51:35 +03:00
Jérémie Astori 17978af710 Merge pull request #1280 from thelounge/xpaw/simple-vendor
Do not hardcode vendor bundles in webpack
2017-07-04 01:43:40 -04:00
Awal Garg 8c8d683348 Allow opting out of autocomplete 2017-07-03 22:37:38 +05:30
greenkeeper[bot] 5831745958 fix(package): update commander to version 2.11.0 2017-07-03 10:12:45 +00:00
Jérémie Astori 622c91b25a Merge pull request #1276 from thelounge/xpaw/refactor-toggle
Refactor link previews
2017-07-03 02:33:49 -04:00
Pavel Djundik 14b2ad7938 Refactor link previews 2017-07-03 00:41:18 +03:00
Jérémie Astori c7def1c1b6 Merge pull request #1284 from MaxLeiter/MaxLeiter/npmrc
Add .npmrc file; set save-exact to true so packages are installed pinned
2017-06-29 19:38:33 -04:00
Jérémie Astori be47af7ea8 Merge pull request #1287 from thelounge/xpaw/npm-ignore-dotfiles
Ignore all dotfiles in npmignore
2017-06-29 19:06:06 -04:00
Jérémie Astori e7d480c645 Merge pull request #1282 from thelounge/greenkeeper/babel-loader-7.1.1
Update babel-loader to the latest version 🚀
2017-06-29 19:02:19 -04:00
Pavel Djundik 58b2d8c788 Ignore all dotfiles in npmignore 2017-06-29 12:49:07 +03:00
Max Leiter c70f1d0d95 Add .npmrc file; set save-exact to true so packages are installed pinned by default 2017-06-28 21:06:23 -07:00
greenkeeper[bot] 97e35e9dd4 chore(package): update babel-loader to version 7.1.1 2017-06-28 00:38:51 +00:00
Pavel Djundik a3744cf81b Do not hardcoded vendor bundles in webpack 2017-06-27 12:55:12 +03:00
greenkeeper[bot] da8cec4067 chore(package): update jquery-textcomplete to version 1.8.1 2017-06-27 09:15:41 +00:00
Jérémie Astori 20b24a39df Merge pull request #1278 from thelounge/greenkeeper/stylelint-7.12.0
Update stylelint to the latest version 🚀
2017-06-26 23:56:02 -04:00
Jérémie Astori 80df7f3836 Merge pull request #1277 from thelounge/greenkeeper/nyc-11.0.3
Update nyc to the latest version 🚀
2017-06-26 23:55:31 -04:00
greenkeeper[bot] 19b4d7bea2 chore(package): update stylelint to version 7.12.0 2017-06-26 21:23:50 +00:00
greenkeeper[bot] 6f9d7b0771 chore(package): update nyc to version 11.0.3 2017-06-26 14:37:34 +00:00
Jérémie Astori ad10777684 Merge pull request #1274 from thelounge/xpaw/increase-prefetch-limit
Increase max downloaded bytes for link preview
2017-06-26 02:44:46 -04:00
Jérémie Astori f516d21f7b Merge pull request #1273 from thelounge/xpaw/no-preview
Do not display preview if there is nothing to preview
2017-06-26 02:36:46 -04:00
Pavel Djundik e967759802 Increase max downloaded bytes for link preview
twitter.com sends opengraph meta tags within ~20kb of data for individual tweets
2017-06-26 09:34:56 +03:00
Pavel Djundik 77667e7a3f Do not display preview if there is nothing to preview 2017-06-26 09:27:51 +03:00
Pavel Djundik cfd71cab02 Merge pull request #1272 from thelounge/greenkeeper/eslint-4.1.1
Update eslint to the latest version 🚀
2017-06-26 09:11:04 +03:00
Jérémie Astori e0ed1195fa Merge pull request #1202 from thelounge/xpaw/trust-proxy
Parse X-Forwarded-For header correctly
2017-06-26 01:52:53 -04:00
Jérémie Astori aee518365d Merge pull request #1252 from thelounge/bews/username-template
Move nickname rendering to a single template
2017-06-26 01:49:50 -04:00
Jérémie Astori a7d81d55bd Merge pull request #1267 from thelounge/astorije/rm-devdependencies-badge
Remove devDependencies badge on README
2017-06-26 01:48:48 -04:00
Jérémie Astori 5abc4c8c2a Merge pull request #1256 from thelounge/xPaw/og-title
Check og:title before title tag
2017-06-26 01:48:07 -04:00
Jérémie Astori 147a36adde Merge pull request #1254 from thelounge/xpaw/thumb-is-img
Make sure thumbnail is a valid image
2017-06-26 01:46:20 -04:00
Jérémie Astori 0239fdd2fb Merge pull request #1255 from thelounge/xPaw/og-description
Check og:description before description
2017-06-26 01:44:54 -04:00
Jérémie Astori bb7abcdaae Merge pull request #1260 from thelounge/xpaw/check-link-statuscode
Check status code in link prefetcher
2017-06-26 01:44:01 -04:00
greenkeeper[bot] e3a5c1b01c chore(package): update eslint to version 4.1.1 2017-06-26 01:21:59 +00:00
Pavel Djundik 6f8ebcc7e1 Merge pull request #1269 from thelounge/astorije/rm-semver
Remove mention in CHANGELOG that The Lounge uses Semantic Versioning
2017-06-25 10:50:09 +03:00
Jérémie Astori c6b90690a7 Merge pull request #1264 from thelounge/greenkeeper/eslint-4.1.0
Update eslint to the latest version 🚀
2017-06-25 01:29:50 -04:00
Jérémie Astori f4cfa17c73 Merge pull request #1257 from thelounge/greenkeeper/commander-2.10.0
Update commander to the latest version 🚀
2017-06-25 01:29:22 -04:00
Jérémie Astori e43dd6ffdd Remove mention in CHANGELOG that The Lounge uses Semantic Versioning
Not that we don't use something as close as possible, but as an end-user project, it is not entirely meaningful to say we are Semver-compliant, since there is no real breaking changes we introduce. Semver is however very good for libraries.
2017-06-25 01:19:15 -04:00
Jérémie Astori a32a39e96b
2.3.2 2017-06-25 01:12:20 -04:00
Jérémie Astori 0bd07edab4
Add changelog entry for v2.3.2 2017-06-25 01:11:42 -04:00
Jérémie Astori 5d65f447b5 Remove devDependencies badge on README
Now that Greenkeeper is taking care of our dependencies, it makes less sense to keep this one.

This also create some room for a potential future extra badge if we need it, without taking up a new line.

I would however definitely keep the production dependencies badge because it informs users on the status of what they install. It also leaves an access to David's devDependencies report if interested.
2017-06-24 15:01:07 -04:00
Pavel Djundik c9f63fc699 Merge pull request #1217 from MaxLeiter/patch-3
Fix MOTD underline in Safari
2017-06-24 12:19:14 +03:00
Jérémie Astori 3480e091fa Merge pull request #1261 from thelounge/xPaw/hide-link-time
Hide link time element on small devices
2017-06-24 01:07:25 -04:00
greenkeeper[bot] df7dfd77e3 chore(package): update eslint to version 4.1.0 2017-06-24 01:31:08 +00:00
Max Leiter e76019b82c Fix MOTD underline in Safari
before: https://sr.ht/mdPx.png

after: https://sr.ht/h45R.png

Basically, safari's user agent CSS applies an underline to <abbr> tags, which bootstrap already does as well (but bootstrap doesn't use text-decoration so it's not overriden).
2017-06-23 14:30:08 -07:00
Pavel Djundik 25fefd5e54 Hide link time element on small devices 2017-06-23 20:51:36 +03:00
Pavel Djundik ddc076e894 Check status code in link prefetcher
Fixes #1258.
2017-06-23 20:49:45 +03:00
greenkeeper[bot] 87c4e6f9bb fix(package): update commander to version 2.10.0 2017-06-23 09:38:37 +00:00
Jérémie Astori 358852cecb Merge pull request #1253 from thelounge/xpaw/nick-fade-pos
Fix nick fade positioning
2017-06-23 02:02:43 -04:00
Jérémie Astori 96e6ac8111 Merge pull request #1249 from thelounge/xpaw/stylelint-config-standard
Use stylelint-config-standard
2017-06-23 01:44:18 -04:00
Jérémie Astori 74da20ab6a Merge pull request #1238 from thelounge/greenkeeper/webpack-3.0.0
Update webpack to the latest version 🚀
2017-06-23 01:43:23 -04:00
Pavel Djundik 015a9fb6ef Check og:title before title tag 2017-06-22 22:41:05 +03:00
Pavel Djundik 23c7f7296c Check og:description before description 2017-06-22 22:34:17 +03:00
Pavel Djundik 3fd2849a37 Make sure thumbnail is a valid image
Fixes #1239.
Fixes #1180.
2017-06-22 22:32:13 +03:00
Pavel Djundik 714580e94a Fix nick fade positioning 2017-06-22 22:05:13 +03:00
Niko Bews eb4a4c7dfe Move nickname rendering to a single template
Closes #1241
2017-06-22 13:28:17 +03:00
Pavel Djundik f55d765aae Merge pull request #1246 from bews/bews/dev-18-size
Handle images with unknown size in prefetch
2017-06-22 13:17:02 +03:00
Pavel Djundik 2e59735c19 Merge pull request #1251 from thelounge/xpaw/stray-tag
Fix stray end tag
2017-06-22 13:16:31 +03:00
Pavel Djundik c1068164f5 Fix stray end tag 2017-06-22 11:34:47 +03:00
Pavel Djundik 138111b16e Use stylelint-config-standard 2017-06-22 11:23:50 +03:00
Jérémie Astori 8dcc63fd6a Merge pull request #1247 from thelounge/ignore-package-lock
Ignore package-lock.json
2017-06-21 19:11:54 -04:00
Jérémie Astori b9d7739927 Merge pull request #1248 from thelounge/xpaw/kb
Remove kilobyte ambiguity
2017-06-21 19:08:05 -04:00
Niko Bews 57fd0562a2 Handle images with unknown size in prefetch 2017-06-21 14:40:51 +03:00
Pavel Djundik b0efbf8a1e Parse x-forwarded-for header correctly 2017-06-21 14:34:06 +03:00
Pavel Djundik 16bc465cfd Remove kilobyte ambiguity 2017-06-21 14:01:47 +03:00
Pavel Djundik 04adcac0e0 Ignore package-lock.json
Close #1213
2017-06-21 10:57:06 +03:00
greenkeeper[bot] 6f9acb0b94 chore(package): update webpack to version 3.0.0 2017-06-21 10:11:25 +03:00
Pavel Djundik da87482b66 Merge pull request #1245 from thelounge/greenkeeper/babel-loader-7.1.0
Update babel-loader to the latest version 🚀
2017-06-21 10:10:49 +03:00
Jérémie Astori 0b85582744 Merge pull request #1175 from thelounge/yamanickill/socket-modules
Add modules for socket events
2017-06-20 23:42:52 -04:00
Jérémie Astori ead4a7f791 Merge pull request #1233 from thelounge/xPaw/user-select
Make everything unselectable by default
2017-06-20 23:38:17 -04:00
Jérémie Astori d09ac7ae13 Merge pull request #1244 from thelounge/xPaw/fix-page-keys
Correctly finish scroll animation when using page keys
2017-06-20 23:25:32 -04:00
greenkeeper[bot] 3fa9efc0bc chore(package): update babel-loader to version 7.1.0 2017-06-20 10:47:08 +00:00
Pavel Djundik 28528dc865 Correctly finish scroll animation when using page keys
Fixes #1022.
2017-06-20 13:22:58 +03:00
Pavel Djundik 2091a5b41b Merge pull request #1120 from thelounge/xpaw/scroll-perf
Include trickery to reduce paints and improve performance
2017-06-20 13:18:06 +03:00
Pavel Djundik 04c67de1af Merge pull request #1158 from bews/bews/dev-10-usercut
Fade out for long usernames.
2017-06-20 13:15:43 +03:00
Alistair McKinlay f90c355c8e Add modules for socket events 2017-06-20 07:22:58 +01:00
Jérémie Astori 5cbf847c4a Merge pull request #1240 from thelounge/astorije/better-run_pr-script
Improve the PR tester script a bit
2017-06-20 02:21:39 -04:00
Jérémie Astori 211d2e5460
Always rebase with master when running PRs to make sure latest code is being tested 2017-06-20 01:18:30 -04:00
Jérémie Astori a403dac8ef
Build in production environment on script testing PRs 2017-06-20 01:17:11 -04:00
Pavel Djundik 32a73d49f1 Merge pull request #1016 from swordbeta/unread_marker_hidden_joins
Unread marker takes hidden messages into account.
2017-06-20 08:15:31 +03:00
Pavel Djundik 16795cf2b7 Merge pull request #1231 from thelounge/eslint4
Update to eslint 4 and enforce extra rules
2017-06-19 20:30:41 +03:00
Pavel Djundik f6dd616d5e Update to eslint 4 and enforce extra rules 2017-06-19 09:58:29 +03:00
Jérémie Astori edc106dadb Merge pull request #1230 from thelounge/greenkeeper/stylelint-7.11.1
Update stylelint to the latest version 🚀
2017-06-19 02:16:05 -04:00
Pavel Djundik ef5b0d9e16 Make everything unselectable by default 2017-06-16 18:59:06 +03:00
greenkeeper[bot] 2917699b44 chore(package): update stylelint to version 7.11.1 2017-06-15 22:40:26 +00:00
Jérémie Astori 1a6f2fc387 Merge pull request #1150 from bews/bews/dev-9-reload
Add "reload page" button when Lounge fails to start.
2017-06-10 13:25:37 -04:00
Niko Bews cba87582a5 Add "reload page" button when Lounge fails to start. 2017-06-10 20:15:32 +03:00
Pavel Djundik 53ffcb5960 Merge pull request #1141 from bews/bews/dev-6-seconds
Show seconds in timestamp
2017-06-10 16:15:03 +03:00
Niko Bews fd983a7f6b Show seconds in timestamp 2017-06-10 14:53:15 +03:00
Pavel Djundik 7ec0dcfec8
Mark touch events as passive 2017-06-09 23:20:00 -04:00
Pavel Djundik 518160a1fa
Include trickery to reduce paints and improve performance
Fixes #1083.
Fixes #1071.
2017-06-09 23:19:59 -04:00
Jérémie Astori 8bfce28d68 Merge pull request #1206 from thelounge/greenkeeper/chai-4.0.2
Update chai to the latest version 🚀
2017-06-09 23:00:50 -04:00
Jérémie Astori 866409bfb0 Merge pull request #1214 from thelounge/xpaw/more-focus
Consider click also a read activity
2017-06-09 22:49:34 -04:00
Jérémie Astori b31c2a935b Merge pull request #1215 from thelounge/greenkeeper/stylelint-7.11.0
Update stylelint to the latest version 🚀
2017-06-09 22:47:25 -04:00
greenkeeper[bot] eacef7e175 chore(package): update stylelint to version 7.11.0 2017-06-09 12:57:37 +00:00
Pavel Djundik 93bc406c2e Consider click also a read activity 2017-06-09 14:10:55 +03:00
greenkeeper[bot] ad091a1d36 chore(package): update chai to version 4.0.2 2017-06-09 10:39:52 +03:00
Pavel Djundik 2dd71a1d15 Merge pull request #1198 from thelounge/greenkeeper/nyc-11.0.1
Update nyc to the latest version 🚀
2017-06-09 10:37:56 +03:00
Pavel Djundik fa09098b4a Merge pull request #1212 from thelounge/greenkeeper/babel-core-6.25.0
Update babel-core to the latest version 🚀
2017-06-09 10:28:53 +03:00
Pavel Djundik 972115320a Merge pull request #1184 from thelounge/greenkeeper/spdy-3.4.5
Update spdy to the latest version 🚀
2017-06-09 10:26:19 +03:00
greenkeeper[bot] 3304681e7a
fix(package): update spdy to version 3.4.7 2017-06-09 02:17:22 -04:00
Jérémie Astori f77f54942b
2.3.1 2017-06-09 02:06:51 -04:00
Jérémie Astori 7349945b0e
Add changelog entry for v2.3.1 2017-06-09 02:06:45 -04:00
greenkeeper[bot] f5c0a7f7fc
chore(package): update nyc to version 11.0.2 2017-06-08 20:05:06 -04:00
Jérémie Astori 5a3b9cf969 Merge pull request #1211 from thelounge/xpaw/fix-default-network-name
Fix network name not being set when displayNetwork is false
2017-06-08 19:59:41 -04:00
greenkeeper[bot] 797321b91a chore(package): update babel-core to version 6.25.0 2017-06-08 21:48:44 +00:00
Pavel Djundik 81bdf7d33e Fix network name not being set when displayNetwork is false 2017-06-08 21:40:17 +03:00
Pavel Djundik ca54c40d0f Merge pull request #1197 from thelounge/xpaw/socketio-transports
Correctly configure client socket transports
2017-06-08 20:19:49 +03:00
Jérémie Astori a2147fe6e1 Merge pull request #1191 from thelounge/travis-versions
Update node versions for travis
2017-06-08 09:13:35 -04:00
Jérémie Astori c88a0875b6 Merge pull request #1205 from thelounge/xpaw/no-hardcoded-title
Keep original <title> name when changing the title
2017-06-08 09:10:11 -04:00
Al McKinlay 52a560dc71 Merge pull request #1177 from thelounge/greenkeeper/babel-preset-env-1.5.0
Update babel-preset-env to the latest version 🚀
2017-06-08 09:05:36 +01:00
Al McKinlay 74dc5a6864 Merge pull request #1179 from thelounge/greenkeeper/handlebars-4.0.9
Update handlebars to the latest version
2017-06-08 09:04:10 +01:00
Al McKinlay 92bbe19a00 Merge pull request #1183 from thelounge/greenkeeper/webpack-2.6.0
Update webpack to the latest version
2017-06-08 09:02:29 +01:00
Al McKinlay f505a4ef80 Merge pull request #1170 from thelounge/greenkeeper/mocha-3.4.0
Update mocha to the latest version
2017-06-08 08:52:42 +01:00
Jérémie Astori 5a5bf823a0 Merge pull request #1195 from thelounge/xpaw/consistent-user-object
Do not store unnecessary information in user objects
2017-06-08 02:46:25 -04:00
greenkeeper[bot] 9db2befb3b
chore(package): update webpack to version 2.6.1 2017-06-08 02:20:28 -04:00
greenkeeper[bot] 3c494d0674
chore(package): update handlebars to version 4.0.10 2017-06-08 02:18:01 -04:00
greenkeeper[bot] 7ea3ae484e
chore(package): update babel-preset-env to version 1.5.2 2017-06-08 02:16:13 -04:00
greenkeeper[bot] 550546741b
chore(package): update mocha to version 3.4.2 2017-06-08 02:13:20 -04:00
Jérémie Astori 2d046748fe Merge pull request #1204 from thelounge/xpaw/do-not-store-password
Do not store passwords in settings storage
2017-06-08 01:42:06 -04:00
Jérémie Astori b054cae078 Merge pull request #1201 from thelounge/xpaw/fix-timezone-test
Fix localtime test to correctly use UTC
2017-06-08 01:41:11 -04:00
Jérémie Astori 7f73712694
2.3.0 2017-06-08 01:11:42 -04:00
Jérémie Astori c040bb4355
Remove temporary npm tag used for pre-releases
This was added in 3b665fb68f.
2017-06-08 01:11:19 -04:00
Jérémie Astori 5e9ea333eb
Add changelog entry for v2.3.0 2017-06-08 01:10:14 -04:00
Pavel Djundik 571818d4c2 Keep original <title> name when changing the title 2017-06-05 14:40:25 +03:00
Pavel Djundik 22c00aca95 Do not store passwords in settings storage 2017-06-03 21:41:21 +03:00
Pavel Djundik bd9e41f2c1 Fix localtime test to correctly use UTC 2017-06-03 10:29:52 +03:00
Pavel Djundik b46f92c7d8 Only update bcrypt password rounds if the password actually matches 2017-06-02 11:02:03 +03:00
Pavel Djundik 16fb118d02 Correctly configure client transports
Fixes #848
2017-06-01 22:43:23 +03:00
Pavel Djundik acf5dd5351 Do not store unnecessary information in user objects 2017-06-01 21:54:46 +03:00
Al McKinlay 2cbf85cf4f Update node versions for travis 2017-05-31 09:49:39 +01:00
swordbeta 24419cb8e8 Assign last visible div to var. 2017-05-17 13:19:18 +02:00
Jérémie Astori 1f1b025b81
2.3.0-rc.2 2017-05-16 01:46:32 -04:00
Jérémie Astori 4654ad42b1
Add changelog entry for v2.3.0-rc.2 2017-05-16 01:46:12 -04:00
Jérémie Astori 085feb606e Merge pull request #1167 from thelounge/astorije/fix-userlist-search
Fix user list search not responding to clicks on search results
2017-05-14 01:20:01 -04:00
Jérémie Astori 3e54569624
Fix user list search not responding to clicks on search results 2017-05-13 18:34:27 -04:00
Niko Bews 035d10005a Fade out for long usernames. 2017-05-11 03:37:11 +03:00
Al McKinlay 07e4f4d1a4 Merge pull request #1157 from thelounge/astorije/motd-default
Display MOTD by default on client
2017-05-10 10:14:22 +01:00
Al McKinlay 0480275ab9 Merge pull request #1156 from PolarizedIons/fix-fix-datemarker
Fix fixing the date-marker not being removed when it should be.
2017-05-10 10:13:51 +01:00
Jérémie Astori 895fcc4066 Display MOTD by default on client 2017-05-09 18:18:32 -04:00
PolarizedIons 54a9637ed4 Fix fixing the date-marker not being removed when it should be.
Accidentally copy-pasted more than I should have when I moved the scrollable height calculation code, and I caused the older
messages to be added before doing checks for the date-markers, which would fail.
2017-05-09 19:23:31 +02:00
Jérémie Astori 45df995d7f
2.3.0-rc.1 2017-05-07 01:23:22 +02:00
Jérémie Astori 4cbfc38106
Add minimal change log entry for v2.3.0-rc.1 2017-05-07 01:22:38 +02:00
Jérémie Astori 3b665fb68f
Add temporary tag until stable version for v2.3.0 gets released
Make sure to remove this before publishing stable or dist-tags will have to be updated manually on npm afterwards.

For reference, this was previously set in 25ec49dea0 and removed in 1dc3e74f7f for v2.0.0.
2017-05-07 01:01:12 +02:00
Jérémie Astori 614085cc30 Merge pull request #1142 from thelounge/greenkeeper/webpack-2.5.1
Update webpack to the latest version 🚀
2017-05-06 23:33:22 +02:00
greenkeeper[bot] 83f01f6f6c chore(package): update webpack to version 2.5.1 2017-05-06 20:21:29 +00:00
Pavel Djundik 691f628e48 Merge pull request #1095 from thelounge/xpaw/fix-nick-autocomplete
Fix nick autocomplete
2017-05-06 13:43:27 +03:00
Pavel Djundik 7ae364e360 Merge pull request #1100 from thelounge/xpaw/0x04
Add support for 0x04 hex colors
2017-05-06 13:43:14 +03:00
Pavel Djundik fe77563cdb Merge pull request #1114 from thelounge/xpaw/moment
Use moment to render dates everywhere
2017-05-06 13:43:02 +03:00
Pavel Djundik 57d7616d1b Merge pull request #1109 from thelounge/astorije/autocomplete-colors
Add autocomplete strategy for foreground and background colors
2017-05-06 13:42:47 +03:00
Pavel Djundik 4a75ca57e0 Merge pull request #1125 from thelounge/astorije/rm-autocompletion-help
Remove autocompletion section from the help page
2017-05-06 13:41:46 +03:00
Jérémie Astori 66e03bed79 Merge pull request #1133 from thelounge/greenkeeper/webpack-2.5.0
Update webpack to the latest version 🚀
2017-05-06 12:28:57 +02:00
Pavel Djundik 89f6fb9047 Merge pull request #1136 from thelounge/greenkeeper/fs-extra-3.0.1
Update fs-extra to the latest version 🚀
2017-05-06 12:22:47 +03:00
Jérémie Astori 783a8567e2 Merge pull request #1138 from thelounge/xpaw/fix-emoji-autocomplete
Allow autocompleting full emoji short names
2017-05-05 22:03:32 +02:00
Jérémie Astori 222075dd9d Merge pull request #1140 from thelounge/greenkeeper/nyc-10.3.2
Update nyc to the latest version 🚀
2017-05-05 21:36:54 +02:00
greenkeeper[bot] ae42f81d6f chore(package): update nyc to version 10.3.2 2017-05-05 18:49:27 +00:00
Pavel Djundik 9766c3e254 Allow autocompleting full emoji short names 2017-05-05 21:08:41 +03:00
Pavel Djundik 328c61920e Merge pull request #1132 from PolarizedIons/fix-datemarker
Fix date-marker not being removed on loading new messages
2017-05-05 21:05:10 +03:00
Pavel Djundik a4806e423f Merge pull request #1129 from thelounge/greenkeeper/handlebars-4.0.8
Update handlebars to the latest version 🚀
2017-05-05 20:58:12 +03:00
PolarizedIons c5e215f439 Fix date-marker not being removed on loading new messages 2017-05-05 14:07:01 +02:00
greenkeeper[bot] 6e3b5f9837 fix(package): update fs-extra to version 3.0.1 2017-05-04 23:54:24 +00:00
swordbeta 979d992bd1 Don't show unread marker for date marker. 2017-05-04 21:38:58 +02:00
greenkeeper[bot] aa850e9b99 chore(package): update webpack to version 2.5.0 2017-05-04 10:30:58 +00:00
greenkeeper[bot] e85cf24587 chore(package): update handlebars to version 4.0.8 2017-05-02 21:04:54 +00:00
Pavel Djundik 700d3c1ff2 Use moment to render dates everywhere 2017-05-01 21:31:31 +03:00
Jérémie Astori 60bf4b22b0
Remove autocompletion section from the help page
Rationale for this is that the whole point of autocompletion is to be intuitive and show up naturally when starting to type something else. For example, all commands start with `/`, so obviously starting to type a command will trigger autocomplete. This is true for channels as well. Emoji are a bit particular because all systems that support emoji open their completion with `:`. The only not-so-intuitive completion strategy is for nicks because it is not so common to start them with `@` on IRC, but as long as we keep tab completion after any set of characters, this is fine. It will be even nicer once regular tab completion uses the same autocompletion dropdown.
2017-05-01 15:32:23 +02:00
Pavel Djundik d6ca06b12b Merge pull request #1123 from thelounge/greenkeeper/irc-framework-2.8.1
Update irc-framework to the latest version 🚀
2017-05-01 10:09:20 +03:00
Jérémie Astori 0981605fae
Add autocomplete strategy for background colors 2017-05-01 02:49:35 +02:00
greenkeeper[bot] c86b23e790 fix(package): update irc-framework to version 2.8.1
https://greenkeeper.io/
2017-04-30 22:25:07 +00:00
Jérémie Astori 2831de8271 Merge pull request #1122 from thelounge/xpaw/fix-search-tab
Disable tabindex on userlist search input
2017-04-30 14:54:30 +02:00
Jérémie Astori 6d1eef836a
Add autocomplete strategy for foreground colors 2017-04-30 14:08:12 +02:00
Pavel Djundik 381ea326f4 Disable tabindex on userlist search input
Fixes #1036.
2017-04-30 15:07:09 +03:00
Pavel Djundik f7b7248ff7 Fix nick autocomplete
Fixes #1119.
2017-04-30 15:03:27 +03:00
Jérémie Astori 7e72120c41 Merge pull request #1116 from thelounge/greenkeeper/handlebars-4.0.7
Update handlebars to the latest version 🚀
2017-04-30 13:50:49 +02:00
greenkeeper[bot] 29cd9b80ef chore(package): update handlebars to version 4.0.7
https://greenkeeper.io/
2017-04-29 20:56:52 +00:00
Pavel Djundik c91c01188c Merge pull request #1098 from thelounge/greenkeeper/fs-extra-3.0.0
Update fs-extra to the latest version 🚀
2017-04-29 15:45:12 +03:00
Pavel Djundik e2b55c491e Merge pull request #1113 from thelounge/greenkeeper/nyc-10.3.0
Update nyc to the latest version 🚀
2017-04-29 15:01:28 +03:00
Pavel Djundik 8ad92ed7b7 Merge pull request #1115 from PolarizedIons/fix-sorting
Fix channel sorting messing up the order
2017-04-29 14:56:19 +03:00
PolarizedIons dd48ba4e87 Fix channel sorting messing up the order 2017-04-29 13:19:31 +02:00
greenkeeper[bot] 14ea84988f chore(package): update nyc to version 10.3.0
https://greenkeeper.io/
2017-04-29 07:07:10 +00:00
Pavel Djundik 0b645d54c6 Add support for 0x04 hex colors
Ref: https://modern.ircdocs.horse/formatting.html#hex-color
2017-04-29 09:50:26 +03:00
Pavel Djundik 0773bf1ecb Merge pull request #1108 from MaxLeiter/ctcp-command
Add ctcp to constants, adds to auto-complete
2017-04-29 09:17:48 +03:00
Max Leiter 70655120cb Add ctcp to constants, adds to auto-complete 2017-04-28 14:45:18 -07:00
Jérémie Astori 45b23f73cf Merge pull request #1107 from thelounge/xpaw/fix-sidebar
Fix chat layout on small devices when users list is hidden
2017-04-28 21:09:20 +02:00
Pavel Djundik a3810dea06 Fix chat layout on small devices when users list is hidden
Fixes #1092
2017-04-28 21:58:00 +03:00
Pavel Djundik 131b1a6409 Merge pull request #1093 from thelounge/astorije/fix-network-layout
Fix network layout displaying the scrollbar incorrectly
2017-04-28 19:19:57 +03:00
Jérémie Astori 26ccd2f1f8 Merge pull request #1104 from thelounge/xpaw/fix-autoaway
Fix away message disappearing
2017-04-28 18:15:52 +02:00
Pavel Djundik d6d7df62fe Fix away message disappearing
Closes #1102
2017-04-28 18:58:14 +03:00
greenkeeper[bot] b9ead20fc7 fix(package): update fs-extra to version 3.0.0
https://greenkeeper.io/
2017-04-27 19:39:32 +00:00
Jérémie Astori 927c40739e Fix network layout displaying the scrollbar incorrectly
This was introduced by https://github.com/thelounge/lounge/pull/856/files#diff-97db1f70168fb5f12457b238ff6052b5R773 (and L794-798): a right position got introduced for all channel containers, but default position for other types of containers was absent before this script.
2017-04-26 23:30:51 +02:00
Pavel Djundik 5eb5b99115 Merge pull request #1091 from PolarizedIons/fix-autocomplete
Fix broken nick autocomplete caused by #856
2017-04-26 20:59:31 +03:00
PolarizedIons 81a5615c9a Fix nick autocomplete 2017-04-26 19:34:31 +02:00
Jérémie Astori 06af65cf01 Merge pull request #1078 from thelounge/1022-slow-scrolling
Add fix for slow scrolling when holding pg-up/pg-dn
2017-04-26 13:47:40 +02:00
Pavel Djundik 586dde7761 Merge pull request #856 from thelounge/astorije/fuzzy-match-user-list
Implement fuzzy-matching for the user list
2017-04-26 12:57:06 +03:00
Pavel Djundik dd5e50fc68 Merge pull request #1062 from thelounge/remove-cycle-nicks
Remove cycle nicks button
2017-04-26 11:41:51 +03:00
Pavel Djundik 6c8d1616fd Merge pull request #787 from yashsriv/feat/emoji-autocomplete
Add autocomplete for emoji, users, chans, and commands
2017-04-26 11:39:08 +03:00
Jérémie Astori 5c3e15e17c
Remove json-loader, unnecessary with Webpack v2
See these notes:

- https://webpack.js.org/guides/migrating/#json-loader-is-not-required-anymore
- https://github.com/webpack-contrib/json-loader#json-loader
2017-04-26 13:59:09 +05:30
Jérémie Astori e000ba45df
Improve details of emoji/chan/nick/command autocompletion
- Make dropdown items match context menu items
- Disable transparency on dropdown item links
- Clean up help page additions
- Better align help page autocompletion characters
- Use ES6 features (`const`, arrow functions, method definition shorthands)
- Use `Array#filter` instead of `$.map`
- Do not display `@` in nick completion *when* only one `@` is used (to be less confusing and more consistent)
2017-04-26 13:58:43 +05:30
Yash Srivastav 29d8bc9d3d
Add Help for autocompletion 2017-04-26 13:58:43 +05:30
Yash Srivastav 7229e0dda4
Disable history completion during emoji completion 2017-04-26 13:58:43 +05:30
Yash Srivastav 785842cde5
Add emoji/nick/commands/chan autocomplete 2017-04-26 13:58:36 +05:30
Pavel Djundik e3bd30b05f Merge pull request #1077 from thelounge/yamanickill/1073-ban-unban
Add ban/unban command
2017-04-26 11:17:41 +03:00
Pavel Djundik ba20d4f70e Merge pull request #1080 from thelounge/yamanickill/1042-back-twice
Replace the state on init rather than adding a new entry
2017-04-26 11:16:43 +03:00
Alistair McKinlay b03d01b6eb Add ban/unban command
Fixes #1073
2017-04-26 08:54:25 +01:00
Alistair McKinlay d0987719ce Replace the state on init rather than adding a new entry
Fixes #1042
2017-04-26 08:36:26 +01:00
Jérémie Astori ac9101ed61 Merge pull request #1066 from thelounge/yamanickill/options-module
Create options module
2017-04-26 00:17:51 +02:00
Jérémie Astori b1159eff9b Merge pull request #1082 from MaxLeiter/setTopic
Use irc-framework setTopic() for topic command
2017-04-25 23:32:58 +02:00
Al McKinlay 443b1e8048 Merge pull request #1087 from thelounge/yamanickill/fix-index
Fix showing prefetch options
2017-04-25 11:12:09 +00:00
Alistair McKinlay b69ba5e4b1 Fix showing prefetch options 2017-04-25 10:26:52 +01:00
Max Leiter e45cfbf02c Use irc-framework setTopic() for topic command 2017-04-24 21:05:57 -07:00
Jérémie Astori eca52bf8e3 Merge pull request #1079 from thelounge/greenkeeper/mocha-3.3.0
Update mocha to the latest version 🚀
2017-04-25 00:10:10 +02:00
Alistair McKinlay fe07bf6637 Add fix for slow scrolling when holding pg-up/pg-dn
Fixes #1022
2017-04-24 12:01:24 +01:00
Pavel Djundik 5ab79effd2 Merge pull request #1074 from thelounge/greenkeeper/irc-framework-2.8.0
Update irc-framework to the latest version 🚀
2017-04-24 13:46:09 +03:00
greenkeeper[bot] 413ab234d6 chore(package): update mocha to version 3.3.0
https://greenkeeper.io/
2017-04-24 09:45:02 +00:00
Alistair McKinlay 326f1ac476 Create options module 2017-04-24 09:06:01 +01:00
Pavel Djundik c583d6edf9 Correctly update user list and search filtering on user updates 2017-04-23 18:18:56 -04:00
Pavel Djundik b1e9a7ffda Use separate container for search results 2017-04-23 18:18:56 -04:00
Jérémie Astori cfa9da17a7 Rely on fuzzy's case insensitivity, do not trim mode 2017-04-23 18:18:56 -04:00
Jérémie Astori 6a26014b81 Implement fuzzy-matching for the user list 2017-04-23 18:18:56 -04:00
greenkeeper[bot] 36a7cf4007 fix(package): update irc-framework to version 2.8.0
https://greenkeeper.io/
2017-04-23 18:13:49 +00:00
Jérémie Astori 30bf20eb12 Merge pull request #1064 from thelounge/xpaw/harden-sort
Rewrite server code of channel sorting
2017-04-23 14:12:53 -04:00
Jérémie Astori b45946ff2f Merge pull request #1070 from thelounge/greenkeeper/irc-framework-2.7.0
Update irc-framework to the latest version 🚀
2017-04-23 11:46:27 -04:00
Jérémie Astori 37bfd91944 Merge pull request #1072 from thelounge/babel-env
Use babel-preset-env
2017-04-23 11:23:51 -04:00
Pavel Djundik 2cfc9119cb Use babel-preset-env 2017-04-23 10:58:02 +03:00
Pavel Djundik 98e3bd0ca2 Merge pull request #1054 from thelounge/astorije/friendly-date-marker
Use moment on the client to display friendly dates
2017-04-23 10:24:21 +03:00
Pavel Djundik e6961c5aab Merge pull request #1063 from thelounge/greenkeeper/babel-loader-7.0.0
Update babel-loader to the latest version 🚀
2017-04-23 10:23:43 +03:00
Pavel Djundik 57acf0f5ce Revert "Disable (temporarily) client ping timeouts"
This reverts commit ffa0740b50.
2017-04-23 09:42:16 +03:00
greenkeeper[bot] 184dd177a6 fix(package): update irc-framework to version 2.7.0
https://greenkeeper.io/
2017-04-23 02:13:17 +00:00
Jérémie Astori 3c60a67a11 Merge pull request #1067 from thelounge/yamanickill/constants-module
Move commands into constants module
2017-04-22 19:46:38 -04:00
Alistair McKinlay 2e286849fc Move commands into constants module 2017-04-22 20:16:59 +01:00
Jérémie Astori 52814113a9 Merge pull request #1068 from thelounge/patch-show-more
Enable show more button correctly
2017-04-22 12:50:01 -04:00
Jérémie Astori ad41a6f76e Merge pull request #1069 from thelounge/patch-displaynetwork
Fix displayNetwork to work correctly
2017-04-22 12:49:05 -04:00
Pavel Djundik d1ecdb6b52 Fix displayNetwork to work correctly 2017-04-22 19:05:58 +03:00
Pavel Djundik 7522847ecc Enable show more button correctly 2017-04-22 19:04:46 +03:00
Pavel Djundik 78221fc50b Merge pull request #1009 from thelounge/yamanickill/1008-banlist
Add support for banlist messages
2017-04-22 16:22:16 +03:00
Pavel Djundik 934400f5ee Do not build feature branch with open pull requests on AppVeyor
Ref: https://github.com/appveyor/ci/issues/882
2017-04-22 16:04:18 +03:00
Alistair McKinlay 1e504f4383 Add support for banlist messages 2017-04-22 13:51:28 +01:00
Pavel Djundik a1bdd6f740 Rewrite server code of channel sorting
Fixes server crash, fixes losing channels
2017-04-22 13:32:42 +03:00
Pavel Djundik 761dfbb33c Merge pull request #1057 from thelounge/1055-handlebars-index
Change index.html to be rendered using handlebars
2017-04-22 11:26:13 +03:00
Jérémie Astori 5fabf2f61a Make sure friendly date markers are reset at midnight 2017-04-22 00:39:00 -04:00
Jérémie Astori 648cfd12db Use moment on the client to display friendly dates
Also, unread and date markers are now half-transparent based on their colors and not parent opacity. This is necessary to display a non-translucide tooltip.
2017-04-22 00:38:19 -04:00
Jérémie Astori bc5b03d2fc Merge pull request #1060 from thelounge/yamanickill/modularise-socket
Create socket module
2017-04-22 00:36:06 -04:00
Jérémie Astori 060627487a Merge pull request #1058 from thelounge/greenkeeper/handlebars-loader-1.5.0
Update handlebars-loader to the latest version 🚀
2017-04-21 21:14:07 -04:00
greenkeeper[bot] 751d6690ff chore(package): update babel-loader to version 7.0.0
https://greenkeeper.io/
2017-04-21 20:25:48 +00:00
Pavel Djundik 999e419636 Remove cycle nicks button
Reverts #708.
Fixes #869.
Fixes #1023.
2017-04-21 21:00:57 +03:00
Jérémie Astori 6c0cf7cfcc Merge pull request #972 from thelounge/bonuspunkt/message-parser
New IRC message parser
2017-04-21 13:40:16 -04:00
Jérémie Astori fa1aecdd9e Remove URI.js monkey-patch as fix landed in v1.18.5
See https://github.com/medialize/URI.js/issues/325
2017-04-21 20:31:27 +03:00
Jérémie Astori 03e3444a35 Explain the modules of the message parser and add tests
- Add comments and descriptions to:
  - `findChannels.js`
  - `parseStyle`
  - `findLinks`
  - `fill`
  - `anyIntersection`
  - `merge`
  - `parse`
- Minor optimizations to `parseStyle`
- Add tests for `fill`
2017-04-21 20:31:27 +03:00
Jérémie Astori 90f4a94bb2 Use template literals in parse
Also make it output double quotes for consistency with web stuff.
2017-04-21 20:31:27 +03:00
Jérémie Astori 5b4c00d8ca Extract findLinks into its own file and add tests
Tests were taken from 5a249c30b1/test/findLinks.js.
The underlying code is different but the tests are the same.
2017-04-21 20:31:27 +03:00
Bonuspunkt eb1360c3af Add message parser tests 2017-04-21 20:31:27 +03:00
Bonuspunkt 0b85ded53f Add bonuspunkt's parser
Fixes #15.
Fixes #199.
Fixes #583.
Fixes #654.
Fixes #928.
Fixes #1001.
2017-04-21 20:29:04 +03:00
Al McKinlay ef8a2bab18 Merge pull request #1044 from thelounge/1043-slugify-undefined
Add fix for undefined name being slugified
2017-04-21 14:35:18 +01:00
Alistair McKinlay 05d363d9a5 Create socket module 2017-04-21 09:54:46 +01:00
Alistair McKinlay adfd99c92c Add fix for undefined name being slugified 2017-04-21 09:32:57 +01:00
Alistair McKinlay b4310dbc03 Review changes
(Should be squashed before merge)
2017-04-21 09:26:02 +01:00
Alistair McKinlay cc85b2143c Change index.html to be rendered using handlebars 2017-04-21 09:16:24 +01:00
greenkeeper[bot] f9de811df1 chore(package): update handlebars-loader to version 1.5.0
https://greenkeeper.io/
2017-04-21 03:48:20 +00:00
Pavel Djundik 8658f15751 Merge pull request #1051 from thelounge/astorije/irc-colors-https
Use HTTPS version to the IRC color guide
2017-04-20 16:09:50 +03:00
Al McKinlay 9072fda146 Merge pull request #1052 from KlipperKyle/KlipperKyle/motd
Issue 1019: Show MOTD by default
2017-04-20 09:07:27 +01:00
Jérémie Astori 5bab511c42 Use HTTPS version to the IRC color guide 2017-04-20 01:50:03 -04:00
Jérémie Astori 4de632ba3c Merge pull request #1018 from swordbeta/sort_channel_list
Improve channels list.
2017-04-20 01:40:14 -04:00
Jérémie Astori f16823393a Merge pull request #1053 from thelounge/astorije/coverage-exclude
Exclude Webpack config from coverage report
2017-04-19 10:13:19 -04:00
Jérémie Astori f5dc6cc28f Merge pull request #1050 from metsjeesus/ssl_bundle
Fix to helper.expandhome to correctly resolve "" and undefined
2017-04-19 10:13:01 -04:00
Jérémie Astori 5a274f3316 Merge pull request #1045 from thelounge/495-disable-more-messages
Disable show more button when loading messages
2017-04-19 10:12:14 -04:00
Michael van Tricht 764ac831d4 Improve channels list.
- Set fixed width to channel and users column.
- Sort by number of users in channel.
- Executing /list multiple times wont show multiple tables.
- Channel list is not stickied to the bottom.
- Limit channels to 500. Scrolling through 1k is very slow on my system.
2017-04-19 12:02:15 +02:00
Jérémie Astori 8aa6f9c500 Exclude Webpack config from coverage report 2017-04-19 01:19:11 -04:00
Kyle Terrien a900abc2a4 Issue 1019: Show MOTD by default 2017-04-18 19:48:14 -07:00
Metsjeesus b750da3f9d Fix to helper.expandhome to correctly resolve "" and undefined 2017-04-18 17:36:43 +03:00
Alistair McKinlay 4938878d10 Disable show more button when loading messages 2017-04-17 10:35:27 +01:00
Jérémie Astori fb04f9fcbf Merge pull request #1030 from thelounge/greenkeeper/webpack-2.4.0
Update webpack to the latest version 🚀
2017-04-16 12:27:25 -04:00
greenkeeper[bot] 955aada1cf chore(package): update webpack to version 2.4.1
https://greenkeeper.io/
2017-04-16 12:45:30 +03:00
Pavel Djundik f185c86a47 Merge pull request #816 from DanielOaks/master+unhandled-slug
Add slug with command to unhandled messages
2017-04-16 12:37:32 +03:00
Daniel Oaks 5c336d3789 Add slug with command to unhandled messages 2017-04-16 12:31:32 +03:00
Jérémie Astori 53e419355d Merge pull request #575 from williamboman/feat/history
client: implement History Web API
2017-04-16 02:36:00 -04:00
William Boman cc0962ba12 client: implement states using the History Web API 2017-04-15 22:34:14 +02:00
Jérémie Astori 6ae6600518 Merge pull request #1024 from metsjeesus/ssl_bundle
Add SSL CA bundle option
2017-04-15 14:46:23 -04:00
Jérémie Astori 5bc1be1f39 Merge pull request #1040 from thelounge/focusin-reset-notifications
Reset notification markers on document focus
2017-04-15 13:20:23 -04:00
Metsjeesus fa51a2c281 Add CA bundle option in SSL 2017-04-15 19:12:21 +03:00
Pavel Djundik d093a7f4c2 Reset notification markers on document focus
Fixes #837
2017-04-15 18:43:34 +03:00
Jérémie Astori 8627bbb713 Merge pull request #1032 from thelounge/userlist-sticky
Stick to bottom when opening user list
2017-04-15 01:51:44 -04:00
Jérémie Astori ecb60e3c78 Merge pull request #1033 from thelounge/preload-scripts
Preload scripts as soon as possible
2017-04-15 01:35:38 -04:00
Jérémie Astori 3140c66b9e Merge pull request #1034 from thelounge/rel-opener
Add rel noopener to URLs in index.html
2017-04-14 20:46:43 -04:00
Pavel Djundik 1e2e8a82db Add rel noopener to URLs in index.html 2017-04-14 21:36:41 +03:00
Pavel Djundik 8020c3c817 Preload scripts as soon as possible 2017-04-14 21:29:40 +03:00
Pavel Djundik 507bf05d24 Remove referrer meta tag, we send Referrer-Policy header 2017-04-14 21:29:40 +03:00
Pavel Djundik fce3d11e74 Stick to bottom when opening user list
Fixes #1031
2017-04-14 21:29:04 +03:00
Pavel Djundik 3e9678d9cf Merge pull request #1028 from thelounge/xpaw/cert-var
Use local variables to check length
2017-04-14 10:52:03 +03:00
Pavel Djundik f645c32cb9 Use local variables to check length 2017-04-14 00:05:28 +03:00
Jérémie Astori 725d8431f7 Merge pull request #1027 from thelounge/astorije/rm-perspective
Remove invalid CSS perspective properties
2017-04-13 12:34:16 -04:00
Jérémie Astori b7d353b620 Remove invalid CSS perspective properties
These are not valid without units per the CSS validator, which is confirmed in the Chrome dev tools. I could not trigger any consequences by removing these.
2017-04-13 02:30:36 -04:00
Jérémie Astori 5890a3def1 Merge pull request #824 from thelounge/xpaw/time-tooltip
Use css tooltips on time elements, ability to view time on mobile
2017-04-13 02:04:15 -04:00
Jérémie Astori 5b721c1b99 Update Primer tooltips to latest v0.5.3
This:

- Makes tooltips appear after timer instead of instantly, necessary for timestamp tooltips (see https://github.com/thelounge/lounge/pull/824#pullrequestreview-13676231)
- Uses Primer default animation (not sure if .2s transition was ours or theirs but here it is)
- Goes closer to default tooltips which will help to bump future versions and/or to streamline this in build process
2017-04-13 01:55:27 -04:00
Pavel Djundik 5d36b29aa8 Only disable touch tooltips on certain buttons 2017-04-13 01:55:27 -04:00
Pavel Djundik c0a7ae9d92 Use css tooltips on time elements 2017-04-13 01:55:27 -04:00
Jérémie Astori d2331558c3 Merge pull request #1020 from thelounge/greenkeeper/babel-preset-es2015-6.24.1
Update babel-preset-es2015 to the latest version 🚀
2017-04-08 11:26:55 -04:00
Jérémie Astori bc16e716f7 Merge pull request #1021 from thelounge/greenkeeper/babel-core-6.24.1
Update babel-core to the latest version 🚀
2017-04-08 11:24:52 -04:00
Michael van Tricht bcbd29cd22 Unread marker takes hidden messages into account. 2017-04-08 15:56:09 +02:00
greenkeeper[bot] 7c5f631319 chore(package): update babel-core to version 6.24.1
https://greenkeeper.io/
2017-04-07 17:11:52 +00:00
greenkeeper[bot] ba2aa7a852 chore(package): update babel-preset-es2015 to version 6.24.1
https://greenkeeper.io/
2017-04-07 15:55:35 +00:00
Jérémie Astori 8c987e7a28 Merge pull request #1017 from swordbeta/list_command_styling
Fix Zenburn and Morning channel list font color.
2017-04-06 18:39:51 -04:00
Michael van Tricht 8744d754ff Fix Zenburn and Morning channel list font color. 2017-04-06 16:45:01 +02:00
Jérémie Astori 23981e8de0 Merge pull request #1015 from thelounge/astorije/referrer-policy
Use Referrer-Policy header instead of CSP referrer
2017-04-06 03:01:37 -04:00
Jérémie Astori b8c49463a9 Merge pull request #524 from thelounge/PR/inline-preview
Improve inline previews for links and images
2017-04-06 03:00:54 -04:00
Jérémie Astori fe7c570cc9 Use Referrer-Policy header instead of CSP referrer
According to MDN:

> referrer
>   Used to specify information in the referer (sic) header for links away from a page.
>   Use the Referrer-Policy header instead.

See:

- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/referrer
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
2017-04-06 02:25:43 -04:00
Pavel Djundik bb24bc645c Merge pull request #1013 from awalgarg/patch-1
fix: count only message items for show-more
2017-04-06 06:43:29 +03:00
Jérémie Astori 2c8e7a8cab Merge pull request #955 from thelounge/xpaw/page-keys
Implement pgup/pgdown keys
2017-04-05 18:19:34 -04:00
Awal Garg c066f25b17 fix: count only message items for show-more
the `messages` div contains a `date-marker` div and an `unread-marker` div. this causes the `count` variable to be 2 more than the expected value, which makes the show-more button skip two messages when loading history. this change filters the counted elements to fix this issue.
2017-04-06 00:45:28 +05:30
Jérémie Astori dce42df050 Fix link preview title going underneath the user list
Also fix the preview description not respecting the ellipsis, and update the image size and margin to nicely align with text.
2017-04-04 02:31:44 -04:00
Jérémie Astori d842517c4e Fix image preview talking full width
Bootstrap was taking over these declarations because they use `!important`.
2017-04-04 02:09:53 -04:00
Maxime Poulin 6a273d825a Improve inline previews for links and images 2017-04-04 01:40:51 -04:00
Pavel Djundik 10bafb8b5d Merge pull request #1007 from thelounge/greenkeeper/webpack-2.3.3
Update webpack to the latest version 🚀
2017-04-04 07:36:02 +03:00
greenkeeper[bot] e1ff04174f chore(package): update webpack to version 2.3.3
https://greenkeeper.io/
2017-04-03 08:03:32 +00:00
Pavel Djundik e211d948d7 Merge pull request #1006 from thelounge/greenkeeper/mousetrap-1.6.1
Update mousetrap to the latest version 🚀
2017-04-03 07:29:41 +03:00
Jérémie Astori 09eaf80f8c Fix page scroll glitch 2017-04-02 21:03:01 -04:00
greenkeeper[bot] 855092aa44 chore(package): update mousetrap to version 1.6.1
https://greenkeeper.io/
2017-04-02 19:46:29 +00:00
Pavel Djundik 78b17f37f9 Merge pull request #1005 from thelounge/greenkeeper/stylelint-7.10.1
Update stylelint to the latest version 🚀
2017-04-02 21:36:48 +03:00
greenkeeper[bot] 332047c0dc chore(package): update stylelint to version 7.10.1
https://greenkeeper.io/
2017-04-02 10:54:48 +00:00
Jérémie Astori f11ee8eaf7 Merge pull request #1004 from thelounge/greenkeeper/stylelint-7.10.0
Update stylelint to the latest version 🚀
2017-04-01 15:43:35 -04:00
Jérémie Astori 1b32bf6820 Merge pull request #1003 from thelounge/channel-keys
Store channel keys
2017-04-01 15:35:56 -04:00
Pavel Djundik 2d9aa35c06 Implement pgup/pgdown keys 2017-04-01 22:35:07 +03:00
Pavel Djundik c0e364e1c2 Store channel keys 2017-04-01 15:28:38 -04:00
Jérémie Astori 44f71bb93e Merge pull request #1002 from thelounge/xpaw/append-date-marker
Correctly append date marker when receiving a message
2017-04-01 12:59:24 -04:00
greenkeeper[bot] 4d592a6a40 chore(package): update stylelint to version 7.10.0
https://greenkeeper.io/
2017-04-01 16:14:00 +00:00
Pavel Djundik 110c0f0c87 Correctly append date marker when receiving a message 2017-04-01 11:06:01 +03:00
Pavel Djundik 152da11256 Merge pull request #985 from rockhouse/master
Switch to bcryptjs and make password comparison async
2017-04-01 10:09:13 +03:00
S 001f96035b Switch to bcryptjs and make password comparison async
- PasswordCompareAsync prevents timeouts on resource constraint devices
- All password.compare calls are now async
- Updated tests to accept async functions
2017-04-01 03:06:09 -04:00
Jérémie Astori 953325aca3 Merge pull request #523 from thelounge/PR/fix-msg-width
Remove table layout for chat messages (and fix layout issues yet again)
2017-04-01 02:40:03 -04:00
Jérémie Astori e54cc451ce Merge pull request #998 from thelounge/greenkeeper/jquery-3.2.1
chore(package): update jquery to version 3.2.1
2017-03-31 19:54:30 -04:00
Jérémie Astori 900b93ae07 Merge pull request #999 from thelounge/greenkeeper/moment-2.18.1
fix(package): update moment to version 2.18.1
2017-03-31 19:54:05 -04:00
Jérémie Astori c767ce9fb6 Merge pull request #1000 from thelounge/greenkeeper/eslint-3.19.0
Update eslint to the latest version 🚀
2017-03-31 19:53:28 -04:00
greenkeeper[bot] 5923e48dda chore(package): update eslint to version 3.19.0
https://greenkeeper.io/
2017-03-31 20:50:18 +00:00
Pavel Djundik 212703d162 Merge pull request #810 from thelounge/xpaw/color-hotkeys
Implement color hotkeys
2017-03-31 19:17:16 +03:00
Pavel Djundik 332bbad2fd Merge pull request #775 from thelounge/patches/auto-away
Auto away when no clients are connected
2017-03-31 19:15:55 +03:00
greenkeeper[bot] 5ce8d93410 fix(package): update moment to version 2.18.1
Closes #976

https://greenkeeper.io/
2017-03-31 19:14:59 +03:00
greenkeeper[bot] 0a06874a97 chore(package): update jquery to version 3.2.1
Closes #969

https://greenkeeper.io/
2017-03-31 19:14:28 +03:00
Jérémie Astori 6186abd550 Merge pull request #981 from thelounge/greenkeeper/webpack-2.3.0
Update webpack to the latest version 🚀
2017-03-31 01:43:45 -04:00
Jérémie Astori 4363ef4abe Merge pull request #973 from thelounge/xpaw/use-require
Use require() instead of import in client code
2017-03-31 01:41:29 -04:00
greenkeeper[bot] 6b641059c1 chore(package): update webpack to version 2.3.2
https://greenkeeper.io/
2017-03-31 01:37:04 -04:00
Pavel Djundik 443a50b1db Merge pull request #997 from thelounge/astorije/fix-eslint
Remove extra newline to please ESLint
2017-03-31 08:32:43 +03:00
Jérémie Astori e62da5b1ea Remove extra newline to please ESLint
See https://travis-ci.org/thelounge/lounge/jobs/217041734#L1200
2017-03-31 01:26:37 -04:00
Jérémie Astori abd155e881 Merge pull request #873 from PolarizedIons/fix-username-override
Fix filling in the nickname, overriding the username (in add network tab)
2017-03-31 01:20:12 -04:00
Jérémie Astori fb672ab57f Improvements to the new flex layout for messages 2017-03-30 19:50:48 -04:00
Maxime Poulin 35b6b47de3 Remove table layout for chat messages (and fix layout issues yet again) 2017-03-30 19:50:48 -04:00
Jérémie Astori 41e3975674 Merge pull request #995 from thelounge/greenkeeper/urijs-1.18.10
Update urijs to the latest version 🚀
2017-03-30 18:41:41 -04:00
greenkeeper[bot] 92349976cb chore(package): update urijs to version 1.18.10
https://greenkeeper.io/
2017-03-30 09:10:14 +00:00
Pavel Djundik 2b85315b39 Merge pull request #992 from swordbeta/patch-1
Help page: commands can be autocompleted.
2017-03-30 11:32:25 +03:00
Pavel Djundik 2c6f5251d8 Merge pull request #994 from thelounge/astorije/fix-height-help
Fix wrong font size in help center labels
2017-03-30 09:51:09 +03:00
Jérémie Astori da0a52e3cb Fix wrong font size in help center labels
This only concerns plain texts, not `<code>` or `<kbd>`.
2017-03-30 02:19:26 -04:00
Jérémie Astori d5d3cb605b Merge pull request #977 from thelounge/xpaw/reduce-vendor
Do not build json3 module with Webpack
2017-03-30 01:27:15 -04:00
Pavel Djundik 9bf1e6e0d5 Do not build json3 module of Webpack 2017-03-30 01:15:44 -04:00
Michael van Tricht 3f031ba6ff Help page: commands can be autocompleted. 2017-03-29 10:11:12 +02:00
Pavel Djundik b98208317d Merge pull request #989 from thelounge/greenkeeper/nyc-10.2.0
Update nyc to the latest version 🚀
2017-03-29 07:33:59 +03:00
Pavel Djundik 7b2c284245 Merge pull request #991 from thelounge/astorije/eslint-eol
Setup ESLint to make sure an EOF feed is always present
2017-03-29 07:33:30 +03:00
Pavel Djundik 4a68b78fd5 Implement away message restoration on reconnections and auto away 2017-03-29 00:27:58 -04:00
Jérémie Astori d287dede49 Setup ESLint to make sure an EOF feed is always present 2017-03-29 00:05:28 -04:00
Jérémie Astori 2bcbb62af0 Remove unnecessary coverage dir from excluded nyc files
This is possible since 50adde4196.
2017-03-28 19:09:40 -04:00
greenkeeper[bot] 1f01da21ff chore(package): update nyc to version 10.2.0
https://greenkeeper.io/
2017-03-28 05:16:34 +00:00
Jérémie Astori b66afb6939 Merge pull request #968 from thelounge/greenkeeper/babel-loader-6.4.1
Update babel-loader to the latest version 🚀
2017-03-27 19:41:50 -04:00
Jérémie Astori 7487c1c1ac Merge pull request #978 from williamboman/feat/data-from
views/msg: set data-from attribute to allow styling messages from specific user(s)
2017-03-27 19:40:33 -04:00
greenkeeper[bot] 03fe53e87f chore(package): update babel-loader to version 6.4.1
https://greenkeeper.io/
2017-03-27 19:27:59 -04:00
Jérémie Astori 993a7bcbde Merge pull request #975 from thelounge/xpaw/enforce-more-spaces
Enforce more space and new line rules
2017-03-27 19:24:39 -04:00
Jérémie Astori 8fc811bf6b Merge pull request #971 from thelounge/greenkeeper/eslint-3.18.0
Update eslint to the latest version 🚀
2017-03-27 19:23:27 -04:00
Jérémie Astori 1126a68ebd Merge pull request #969 from thelounge/greenkeeper/jquery-3.2.0
Update jquery to the latest version 🚀
2017-03-27 19:22:01 -04:00
Jérémie Astori 755dc3480d Merge pull request #964 from thelounge/greenkeeper/fs-extra-2.1.0
Update fs-extra to the latest version 🚀
2017-03-27 19:19:31 -04:00
Jérémie Astori 272a259966 Merge pull request #960 from thelounge/greenkeeper/babel-preset-es2015-6.24.0
Update babel-preset-es2015 to the latest version 🚀
2017-03-27 19:17:47 -04:00
Jérémie Astori 9bee548915 Merge pull request #958 from thelounge/greenkeeper/babel-core-6.24.0
Update babel-core to the latest version 🚀
2017-03-27 19:17:23 -04:00
Jérémie Astori 8bc66e8e5e Merge pull request #976 from thelounge/greenkeeper/moment-2.18.0
Update moment to the latest version 🚀
2017-03-27 19:14:32 -04:00
Élie Michel ed3b4faa62 Fix eslint styling issues 2017-03-21 15:49:54 +01:00
Élie Michel 642442c041 Implement a proper LDAP authentication process
The Lounge first log as a special user in order to search (as in LDAP's
'"search" verb) for the user's full DN. It then attempts to bind using the
found user DN and the user provided password.
2017-03-21 15:15:33 +01:00
William Boman c6ed95e555 views/msg: set data-from attribute to allow styling messages from specific user(s) 2017-03-20 23:08:28 +01:00
greenkeeper[bot] 7175dc1706 fix(package): update moment to version 2.18.0
https://greenkeeper.io/
2017-03-18 21:27:01 +00:00
Pavel Djundik 3b2e3fc08c Enforce more space and new line rules 2017-03-18 21:40:39 +02:00
Stephan 3318acd16b fix filling in nickname overriding username (in add network tab) 2017-03-18 18:11:43 +02:00
Pavel Djundik d9358d555f Generate sourcemap in production build
Fixes #974
2017-03-18 16:09:43 +02:00
greenkeeper[bot] 777f477135 fix(package): update fs-extra to version 2.1.0
https://greenkeeper.io/
2017-03-18 11:25:50 +02:00
Pavel Djundik dcefcd19cb Use require() instead of import in client code
Closes #895
2017-03-18 11:21:18 +02:00
Jérémie Astori 52cc3ee909 Merge pull request #970 from thelounge/xpaw/fix-ident
Fix variable shuffling around ident handler
2017-03-17 20:56:59 -04:00
greenkeeper[bot] aac6980eb5 chore(package): update eslint to version 3.18.0
https://greenkeeper.io/
2017-03-17 22:13:47 +00:00
Pavel Djundik c409328ddf Fix variable shuffling around ident handler
Fixes #965
2017-03-17 22:24:40 +02:00
greenkeeper[bot] ae5f768dd1 chore(package): update jquery to version 3.2.0
https://greenkeeper.io/
2017-03-16 21:35:11 +00:00
Jérémie Astori ff72ebbb74 Merge pull request #804 from thelounge/xpaw/new-identd
Rewrite identd server, combine with oidentd
2017-03-13 02:04:24 -04:00
Jérémie Astori 8ef99d7ad8 Add shortcuts for new formatting in help window 2017-03-13 01:58:39 -04:00
greenkeeper[bot] 8cd8ba6101 chore(package): update babel-preset-es2015 to version 6.24.0
https://greenkeeper.io/
2017-03-13 03:54:02 +00:00
greenkeeper[bot] 65a218d9de chore(package): update babel-core to version 6.24.0
https://greenkeeper.io/
2017-03-13 02:38:54 +00:00
Pavel Djundik 9997aafec7 Rewrite identd server, combine with oidentd 2017-03-12 12:02:22 +02:00
Pavel Djundik f2e43b84be Implement color hotkeys 2017-03-12 11:50:18 +02:00
518 changed files with 55971 additions and 11663 deletions

1
.browserslistrc Normal file
View file

@ -0,0 +1 @@
last 2 year, firefox esr

View file

@ -6,6 +6,7 @@ root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
@ -15,10 +16,6 @@ insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.{json,yml}]
indent_style = space
indent_size = 2
[.eslintrc]
[*.{json,md,yml}]
indent_style = space
indent_size = 2

View file

@ -1,8 +1,3 @@
# built by tools
client/js/bundle.js
client/js/bundle.vendor.js
# third party
client/js/libs/jquery/*.js
public/
coverage/
dist/

193
.eslintrc.cjs Normal file
View file

@ -0,0 +1,193 @@
// @ts-check
const {defineConfig} = require("eslint-define-config");
const projects = defineConfig({
parserOptions: {
project: [
"./tsconfig.json",
"./client/tsconfig.json",
"./server/tsconfig.json",
"./shared/tsconfig.json",
"./test/tsconfig.json",
],
},
}).parserOptions.project;
const baseRules = defineConfig({
rules: {
"block-scoped-var": "error",
curly: ["error", "all"],
"dot-notation": "error",
eqeqeq: "error",
"handle-callback-err": "error",
"no-alert": "error",
"no-catch-shadow": "error",
"no-control-regex": "off",
"no-console": "error",
"no-duplicate-imports": "error",
"no-else-return": "error",
"no-implicit-globals": "error",
"no-restricted-globals": ["error", "event", "fdescribe"],
"no-template-curly-in-string": "error",
"no-unsafe-negation": "error",
"no-useless-computed-key": "error",
"no-useless-constructor": "error",
"no-useless-return": "error",
"no-use-before-define": [
"error",
{
functions: false,
},
],
"no-var": "error",
"object-shorthand": [
"error",
"methods",
{
avoidExplicitReturnArrows: true,
},
],
"padding-line-between-statements": [
"error",
{
blankLine: "always",
prev: ["block", "block-like"],
next: "*",
},
{
blankLine: "always",
prev: "*",
next: ["block", "block-like"],
},
],
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"spaced-comment": ["error", "always"],
strict: "off",
yoda: "error",
},
}).rules;
const vueRules = defineConfig({
rules: {
"import/no-default-export": 0,
"import/unambiguous": 0, // vue SFC can miss script tags
"@typescript-eslint/prefer-readonly": 0, // can be used in template
"vue/component-tags-order": [
"error",
{
order: ["template", "style", "script"],
},
],
"vue/multi-word-component-names": "off",
"vue/no-mutating-props": "off",
"vue/no-v-html": "off",
"vue/require-default-prop": "off",
"vue/v-slot-style": ["error", "longform"],
},
}).rules;
const tsRules = defineConfig({
rules: {
// note you must disable the base rule as it can report incorrect errors
"no-shadow": "off",
"@typescript-eslint/no-shadow": ["error"],
"@typescript-eslint/no-redundant-type-constituents": "off",
},
}).rules;
const tsRulesTemp = defineConfig({
rules: {
// TODO: eventually remove these
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-this-alias": "off",
"@typescript-eslint/no-unnecessary-type-assertion": "off",
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/no-unused-vars": "off",
},
}).rules;
const tsTestRulesTemp = defineConfig({
rules: {
// TODO: remove these
"@typescript-eslint/no-unsafe-return": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/restrict-plus-operands": "off",
},
}).rules;
module.exports = defineConfig({
root: true,
parserOptions: {
ecmaVersion: 2022,
},
overrides: [
{
files: ["**/*.ts", "**/*.vue"],
parser: "@typescript-eslint/parser",
parserOptions: {
tsconfigRootDir: __dirname,
project: projects,
extraFileExtensions: [".vue"],
},
plugins: ["@typescript-eslint"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"prettier",
],
rules: {
...baseRules,
...tsRules,
...tsRulesTemp,
},
},
{
files: ["**/*.vue"],
parser: "vue-eslint-parser",
parserOptions: {
ecmaVersion: 2022,
ecmaFeatures: {
jsx: true,
},
parser: "@typescript-eslint/parser",
tsconfigRootDir: __dirname,
project: projects,
},
plugins: ["vue"],
extends: [
"eslint:recommended",
"plugin:vue/vue3-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"prettier",
],
rules: {...baseRules, ...tsRules, ...tsRulesTemp, ...vueRules},
},
{
files: ["./tests/**/*.ts"],
parser: "@typescript-eslint/parser",
rules: {
...baseRules,
...tsRules,
...tsRulesTemp,
...tsTestRulesTemp,
},
},
],
env: {
es6: true,
browser: true,
mocha: true,
node: true,
},
extends: ["eslint:recommended", "prettier"],
rules: baseRules,
});

View file

@ -1,49 +0,0 @@
---
root: true
env:
es6: true
browser: true
mocha: true
node: true
rules:
block-scoped-var: 2
block-spacing: [2, always]
brace-style: [2, 1tbs]
comma-dangle: 0
curly: [2, all]
dot-notation: 2
eqeqeq: 2
handle-callback-err: 2
indent: [2, tab, { "MemberExpression": 1 }]
key-spacing: [2, {beforeColon: false, afterColon: true}]
keyword-spacing: [2, {before: true, after: true}]
linebreak-style: [2, unix]
no-compare-neg-zero: 2
no-console: 0
no-control-regex: 0
no-else-return: 2
no-implicit-globals: 2
no-multi-spaces: 2
no-shadow: 2
no-template-curly-in-string: 2
no-trailing-spaces: 2
no-unsafe-negation: 2
no-useless-escape: 2
no-useless-return: 2
object-curly-spacing: [2, never]
quote-props: [2, as-needed]
quotes: [2, double, avoid-escape]
semi: [2, always]
space-before-blocks: 2
space-before-function-paren: [2, never]
space-infix-ops: 2
spaced-comment: [2, always]
strict: 2
globals:
log: false
extends: eslint:recommended

View file

@ -3,24 +3,20 @@
Welcome to The Lounge, it's great to have you here! We thank you in advance for
your contributions.
### I have a question
- Find us on the Freenode channel `#thelounge`. You might not get an answer
right away, but this channel is full of nice people who will be happy to
help you.
### I want to report a bug
- Look at the [open and closed
issues](https://github.com/thelounge/lounge/issues?q=is%3Aissue) to see if
issues](https://github.com/thelounge/thelounge/issues?q=is%3Aissue) to see if
this was not already discussed before. If you can't see any, feel free to
[open a new issue](https://github.com/thelounge/lounge/issues/new).
[open a new issue](https://github.com/thelounge/thelounge/issues/new).
- If you think you discovered a security vulnerability, **do not open a public
issue on GitHub.** Refer to our [security guidelines](/SECURITY.md) instead.
### I want to contribute to the code
- Make sure to discuss your ideas with the community in an
[issue](https://github.com/thelounge/lounge/issues) or on the IRC channel.
- Take a look at the open issues labeled as [`help wanted`](https://github.com/thelounge/lounge/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3A%22help+wanted%22)
[issue](https://github.com/thelounge/thelounge/issues) or on the IRC channel.
- Take a look at the open issues labeled as [`help wanted`](https://github.com/thelounge/thelounge/labels/help%20wanted)
if you want to help without having a specific idea in mind.
- Make sure that your PRs do not contain unnecessary commits or merge commits.
[Squash commits](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History)
@ -32,6 +28,10 @@ your contributions.
Pope's guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
- Each PR will be reviewed by at least two different project maintainers. You
can read more about this in the [maintainers'
corner](https://github.com/thelounge/lounge/wiki/Maintainers'-corner).
corner](https://github.com/thelounge/thelounge/wiki/Maintainers'-corner).
- Please document any relevant changes in the documentation that can be found
[in its own repository](https://github.com/thelounge/thelounge.github.io).
[in its own repository](https://github.com/thelounge/thelounge.chat).
- Note that we use prettier on the project. You can set up IDE plugins to format
on save ([see VS Code one here](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)).
- We have a git hook to automatically run prettier before commit, in case you don't install the plugin.
- If for any reason, prettier does not work for you, you can run `yarn format:prettier` and that should format everything.

14
.github/ISSUE_TEMPLATE/Bug_Report.md vendored Normal file
View file

@ -0,0 +1,14 @@
---
name: Bug Report
about: Create a bug report
labels: "Type: Bug"
---
<!-- Have a question? Join #thelounge on Libera.Chat -->
- _Node version:_
- _Browser version:_
- _Device, operating system:_
- _The Lounge version:_
---

View file

@ -0,0 +1,10 @@
---
name: Feature Request
about: Request a new feature
labels: "Type: Feature"
---
<!-- Have a question? Join #thelounge on Libera.Chat. -->
<!-- Make sure to check the existing issues prior to submitting your suggestion. -->
### Feature Description

16
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,16 @@
contact_links:
- name: Docker container issues
url: https://github.com/thelounge/thelounge-docker/issues
about: Report issues related to the Docker container here
- name: Debian package issues
url: https://github.com/thelounge/thelounge-deb/issues
about: Report issues related to the Debian package here
- name: Arch Linux package issues
url: https://github.com/thelounge/thelounge-archlinux/issues
about: Report issues related to the Arch Linux package here
- name: General support
url: https://demo.thelounge.chat/?join=%23thelounge
about: "Join #thelounge on Libera.Chat to ask a question before creating an issue"

11
.github/SUPPORT.md vendored Normal file
View file

@ -0,0 +1,11 @@
## Support
Welcome to The Lounge, it's great to have you here! If you have a question, or
need help, you have a few options:
- Check out [existing questions on Stack Overflow](https://stackoverflow.com/questions/tagged/thelounge)
to see if yours has been answered before. If not, feel free to [ask for a new question](https://stackoverflow.com/questions/ask?tags=thelounge)
(using `thelounge` tag so that other people can easily find it).
- Find us on the Libera.Chat channel `#thelounge`. You might not get an answer
right away, but this channel is full of nice people who will be happy to
help you.

48
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,48 @@
name: Build
permissions:
contents: read
on: [push, pull_request]
jobs:
build:
name: Node ${{ matrix.node_version }} on ${{ matrix.os }}
strategy:
matrix:
include:
# EOL: April 2025
- os: macOS-latest
node_version: 18.x
- os: windows-latest
node_version: 18.x
- os: ubuntu-latest
node_version: 18.x
# EOL: April 2026
- os: ubuntu-latest
node_version: 20.x
# EOL: April June 2024
- os: ubuntu-latest
node_version: 21.x
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@master
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
- name: Install
run: yarn --frozen-lockfile --non-interactive
- name: Build
run: yarn build
env:
NODE_ENV: production
- name: Test
run: yarn test

53
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,53 @@
name: Release
permissions:
contents: read
id-token: write
on:
push:
tags: v*
jobs:
release:
name: Release workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "latest"
registry-url: "https://registry.npmjs.org/"
- name: Install
run: yarn --frozen-lockfile --non-interactive
- name: Build
run: yarn build
env:
NODE_ENV: production
- name: Test
run: yarn test
- name: Publish latest
if: "!contains(github.ref, '-')"
run: npm publish --tag latest --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
- name: Publish next
if: contains(github.ref, '-')
run: npm publish --tag next --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
- name: Remove next tag
if: "!contains(github.ref, '-')"
run: npm dist-tag rm thelounge next || true
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}

16
.gitignore vendored
View file

@ -1,13 +1,9 @@
node_modules/
npm-debug.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
.nyc_output/
coverage/
# Built assets created at npm install/prepublish time
# See https://docs.npmjs.com/misc/scripts
client/fonts/
client/js/bundle.js
client/js/bundle.js.map
client/js/bundle.vendor.js
client/js/bundle.vendor.js.map
public/
dist/

View file

@ -1,20 +0,0 @@
# This file must not contain generated assets listed in .gitignore.
# npm-debug.log and node_modules/ are ignored by default.
# See https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
client/js/bundle.vendor.js.map
client/views/
coverage/
scripts/
test/
.editorconfig
.eslintignore
.eslintrc.yml
.gitattributes
.gitignore
.nycrc
.npmignore
.stylelintrc
.travis.yml
appveyor.yml
webpack.config.js

2
.npmrc Normal file
View file

@ -0,0 +1,2 @@
save-exact = true
sign-git-tag = true

14
.nycrc
View file

@ -1,14 +0,0 @@
{
"all": true,
"exclude": [
"client/js/bundle.js",
"client/js/bundle.vendor.js",
"coverage/",
"test/"
],
"reporter": [
"lcov",
"text",
"text-summary"
]
}

28
.prettierignore Normal file
View file

@ -0,0 +1,28 @@
coverage/
public/
dist/
test/fixtures/.thelounge/logs/
test/fixtures/.thelounge/certificates/
test/fixtures/.thelounge/storage/
test/fixtures/.thelounge/sts-policies.json
*.log
*.png
*.svg
*.ico
*.wav
*.tpl
*.sh
*.opts
*.txt
yarn.lock
.gitignore
.npmrc
.npmignore
.prettierignore
.thelounge_home
.editorconfig
.eslintignore
.gitattributes
.browserslistrc
*.css

View file

@ -1,77 +0,0 @@
{
"ignoreFiles": [
"client/css/bootstrap.css",
"coverage/**/*.css"
],
"rules": {
"at-rule-empty-line-before": ["always", {
"except": ["blockless-after-blockless", "first-nested"],
"ignore": ["after-comment"]
}],
"block-closing-brace-newline-after": "always",
"block-closing-brace-newline-before": "always-multi-line",
"block-closing-brace-space-before": "always-single-line",
"block-no-empty": true,
"block-opening-brace-newline-after": "always-multi-line",
"block-opening-brace-space-after": "always-single-line",
"block-opening-brace-space-before": "always",
"color-hex-case": "lower",
"color-hex-length": "short",
"color-no-invalid-hex": true,
"comment-empty-line-before": ["always", {
"except": ["first-nested"],
"ignore": ["stylelint-command"]
}],
"comment-whitespace-inside": "always",
"declaration-bang-space-after": "never",
"declaration-bang-space-before": "always",
"declaration-block-semicolon-newline-after": "always-multi-line",
"declaration-block-semicolon-space-after": "always-single-line",
"declaration-block-semicolon-space-before": "never",
"declaration-block-single-line-max-declarations": 1,
"declaration-colon-newline-after": "always-multi-line",
"declaration-colon-space-after": "always-single-line",
"declaration-colon-space-before": "never",
"function-calc-no-unspaced-operator": true,
"function-comma-newline-after": "always-multi-line",
"function-comma-space-after": "always-single-line",
"function-comma-space-before": "never",
"function-parentheses-newline-inside": "always-multi-line",
"function-parentheses-space-inside": "never-single-line",
"function-whitespace-after": "always",
"function-url-quotes": "always",
"indentation": "tab",
"max-empty-lines": 1,
"media-feature-colon-space-after": "always",
"media-feature-colon-space-before": "never",
"media-feature-range-operator-space-after": "always",
"media-feature-range-operator-space-before": "always",
"media-query-list-comma-newline-after": "always-multi-line",
"media-query-list-comma-space-after": "always-single-line",
"media-query-list-comma-space-before": "never",
"media-feature-parentheses-space-inside": "never",
"no-eol-whitespace": true,
"no-missing-end-of-source-newline": true,
"number-leading-zero": "never",
"number-no-trailing-zeros": true,
"length-zero-no-unit": true,
"declaration-block-no-duplicate-properties": [true, {
"ignore": ["consecutive-duplicates"]
}],
"declaration-block-no-shorthand-property-overrides": true,
"rule-empty-line-before": ["always-multi-line", {
"except": ["first-nested"],
"ignore": ["after-comment"],
}],
"declaration-block-trailing-semicolon": "always",
"selector-combinator-space-after": "always",
"selector-combinator-space-before": "always",
"selector-list-comma-newline-after": "always",
"selector-list-comma-space-before": "never",
"selector-pseudo-element-colon-notation": "single",
"string-quotes": "double",
"value-list-comma-newline-after": "always-multi-line",
"value-list-comma-space-after": "always-single-line",
"value-list-comma-space-before": "never"
}
}

1
.thelounge_home Normal file
View file

@ -0,0 +1 @@
~/.thelounge

View file

@ -1,35 +0,0 @@
language: node_js
node_js:
- 7 # Current stable
- 6 # Active LTS until 2018-04-18
- 4 # Active LTS until 2017-04-01
matrix:
fast_finish: true
include:
- node_js: 7 # Version used to deploy to npm registry
env: BUILD_ENV=production
cache:
directories:
- ~/.npm
before_script:
- NODE_ENV=$BUILD_ENV npm run build
notifications:
email:
on_success: never
on_failure: always
deploy:
provider: npm
email:
secure: Eb/dO3VEnuG5CFSJbiTBDZ4X29o1bTITqfzc4SZJqkSKHLZ5/l0VHyd1In7T2U9yBtysnmm+dsOWYFwnH5NMt5kvGkkX754HBDz0QXO//IqADA/1cH1MMXuzJjRvHNrtbq3c6Iv0vO827kXfvqwkfGTmXfreT5w+xF7Y+0SjF8pfu2d/Z5omrmoy9J9SF/kfmahKYZwakc3h8p29JPmnFMUAR0JiZS/2gLSHQnGA3mCcnlO+U3bQuTVW3Z9RhiG51f/EMFfNZ8pBttM6CgE2Zth3AT50jbKjRgYdYN2ee/Z3qUJIoA6dfPALC7B+Z2UekqTiKx4SCk+9vZJJXqT8J+Fe67Dki/FgNWnEZaTn8eFs+Gfh2nnokNZUMd/2mMT0y0KbRaOYQarn6lFw+/Cn9hD6e8uRCqY0+YspMvGtV3LuHFy+br6YphlG6YKxJzExtGDvrwlDD70xJtqcgnlET3XOdzvfCpRSskh7FmVJMoL39f/j9r4FzWVDmfnRnDT6Cac2dSdbQM0Ldw3+65l/57K/Km7NeHbLA3LsnjSJqXuysYwosd6iUOQen59Dy+TvwKafEfAGXWcZNguFURIMf2LRZ4rwTZl6pp30nj23U6rmkWm3JTRZC95i/O4yP2rVoljNUEuMlHVts63r3lwXtuGQVo3+lQCYErK4Ceo7cQc=
api_key:
secure: I9iN31GWI+Mz0xPw81N7qh1M6uidB+3BmiPUXt8QigX45zwp9EhvfZ0U/AIdUyQwzK2RK1zLRQSt+2/1jyeVi+U+AAsRRmaAUx8iqKaQPAkPnQtElolgRP04WSgo7fvNejfM7zS939bQNKG3RlSm04yPgu+ke2igf799p2bpFe2LtyoEeIiUfrUkBiMSpMguN9XF8a7jqCyIouTKjXHR24RmzJ9r7ZoMV27yQauS7XlD81bontzNRZxTytDKdJpZ+sxGIT9mbbtM4LUFX8MeNe3p/bjWavEhrO0ZIpkbOfS/L/w1375YDoNPXxCs288lnGUH+NbGNAEfn+BTz8cmUp7jI7QWR/kNACPeopdAX4OdZxT8wfQcfQZrfCuSpKciOMC7vGgPpQqjQ61t1RKcKs9VUnwC0SwWjyo8LlzkFKnP1ks0eDGYsSoPLdpC9+76UmePkQdxMhscO8TOgkOCcsTMLiyt6ABGOGKu2iE5SsjUYtPiSiRzSBAQENoO560+xBSVTKwqvvhzUAIt4AuAQSgsFjAylDdyzKoObHX12hBdALrqSOOSVwwIQ5/jTgNAsilURHo7KPD407PhRnLOsvumL0qg4sr9S1hjuUKnNla5dg9GY8FVjJ+b2t0A2vgfG1pR1e3vrJRXrpkfRorhmjvKAk2o5you5pQ1Itty7rM=
on:
node: 7
condition: "$BUILD_ENV = production"
tags: true
repo: thelounge/lounge

10
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,10 @@
{
"recommendations": [
"EditorConfig.EditorConfig",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"Vue.volar",
"Vue.vscode-typescript-vue-plugin"
],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,11 @@
{
"configurations": [
{
"type": "node-terminal",
"name": "Run Dev",
"request": "launch",
"command": "yarn dev",
"cwd": "${workspaceFolder}"
}
]
}

10
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,10 @@
{
"editor.formatOnSave": true,
"prettier.useEditorConfig": true,
"prettier.requireConfig": true,
"prettier.disableLanguages": [],
"eslint.packageManager": "yarn",
"eslint.codeActionsOnSave.mode": "all",
"[typescript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},
"[vue]": {"editor.defaultFormatter": "esbenp.prettier-vscode"}
}

File diff suppressed because it is too large Load diff

106
README.md
View file

@ -1,60 +1,76 @@
# The Lounge
<h1 align="center">
<img
width="300"
alt="The Lounge"
src="https://raw.githubusercontent.com/thelounge/thelounge/master/client/img/logo-vertical-transparent-bg.svg?sanitize=true">
</h1>
[![#thelounge IRC channel on freenode](https://img.shields.io/badge/freenode-%23thelounge-BA68C8.svg)](https://avatar.playat.ch:1000/)
[![npm version](https://img.shields.io/npm/v/thelounge.svg)](https://www.npmjs.org/package/thelounge)
[![Travis CI Build Status](https://img.shields.io/travis/thelounge/lounge/master.svg?label=linux+build)](https://travis-ci.org/thelounge/lounge)
[![AppVeyor Build Status](https://img.shields.io/appveyor/ci/astorije/lounge/master.svg?label=windows+build)](https://ci.appveyor.com/project/astorije/lounge/branch/master)
[![Dependencies Status](https://img.shields.io/david/thelounge/lounge.svg)](https://david-dm.org/thelounge/lounge)
[![Developer Dependencies Status](https://img.shields.io/david/dev/thelounge/lounge.svg)](https://david-dm.org/thelounge/lounge?type=dev)
The Lounge is a modern web IRC client designed for self-hosting.
To learn more about configuration, usage and features of The Lounge, take a look at [the website](https://thelounge.github.io).
<h3 align="center">
Modern web IRC client designed for self-hosting
</h3>
<p align="center">
<img src="https://cloud.githubusercontent.com/assets/5481612/19623041/9bbaec40-9888-11e6-9961-8f3e0493ba30.png" width="550">
<strong>
<a href="https://thelounge.chat/">Website</a>
<a href="https://thelounge.chat/docs">Docs</a>
<a href="https://demo.thelounge.chat/">Demo</a>
<a href="https://github.com/thelounge/thelounge-docker">Docker</a>
</strong>
</p>
<p align="center">
<a href="https://demo.thelounge.chat/"><img
alt="#thelounge IRC channel on Libera.Chat"
src="https://img.shields.io/badge/Libera.Chat-%23thelounge-415364.svg?colorA=ff9e18"></a>
<a href="https://yarn.pm/thelounge"><img
alt="npm version"
src="https://img.shields.io/npm/v/thelounge.svg?colorA=333a41&maxAge=3600"></a>
<a href="https://github.com/thelounge/thelounge/actions"><img
alt="Build Status"
src="https://github.com/thelounge/thelounge/workflows/Build/badge.svg"></a>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/thelounge/thelounge.github.io/master/img/thelounge-screenshot.png" width="550">
</p>
## Overview
- **Modern features brought to IRC.** Push notifications, link previews, new message markers, and more bring IRC to the 21st century.
- **Always connected.** Remains connected to IRC servers while you are offline.
- **Cross platform.** It doesn't matter what OS you use, it just works wherever Node.js runs.
- **Responsive interface.** The client works smoothly on every desktop, smartphone and tablet.
- **Synchronized experience.** Always resume where you left off no matter what device.
To learn more about configuration, usage and features of The Lounge, take a look at [the website](https://thelounge.chat).
The Lounge is the official and community-managed fork of [Shout](https://github.com/erming/shout), by [Mattias Erming](https://github.com/erming).
## Installation and usage
The Lounge requires [Node.js](https://nodejs.org/) v4 or more recent.
The Lounge requires latest [Node.js](https://nodejs.org/) LTS version or more recent.
The [Yarn package manager](https://yarnpkg.com/) is also recommended.
If you want to install with npm, `--unsafe-perm` is required for a correct install.
### Running stable releases from npm (recommended)
### Running stable releases
Run this in a terminal to install (or upgrade) the latest stable release from
[npm](https://www.npmjs.com/):
```sh
[sudo] npm install -g thelounge
```
When installation is complete, run:
```sh
lounge start
```
For more information, read the [documentation](https://thelounge.github.io/docs/), [wiki](https://github.com/thelounge/lounge/wiki), or run:
```sh
lounge --help
```
Please refer to the [install and upgrade documentation on our website](https://thelounge.chat/docs/install-and-upgrade) for all available installation methods.
### Running from source
The following commands install and run the development version of The Lounge:
```sh
git clone https://github.com/thelounge/lounge.git
cd lounge
npm install
NODE_ENV=production npm run build
npm start
git clone https://github.com/thelounge/thelounge.git
cd thelounge
yarn install
NODE_ENV=production yarn build
yarn start
```
When installed like this, npm doesn't create a `lounge` executable. Use `npm start -- <command>` to run subcommands.
When installed like this, `thelounge` executable is not created. Use `node index <command>` to run commands.
⚠️ While it is the most recent codebase, this is not production-ready! Run at
your own risk. It is also not recommended to run this as root.
@ -66,6 +82,14 @@ fork.
Before submitting any change, make sure to:
- Read the [Contributing instructions](https://github.com/thelounge/lounge/blob/master/CONTRIBUTING.md#contributing)
- Run `npm test` to execute linters and test suite
- Run `npm run build` if you change or add anything in `client/js/libs` or `client/views`
- Read the [Contributing instructions](https://github.com/thelounge/thelounge/blob/master/.github/CONTRIBUTING.md#contributing)
- Run `yarn test` to execute linters and the test suite
- Run `yarn format:prettier` if linting fails
- Run `yarn build:client` if you change or add anything in `client/js` or `client/components`
- The built files will be output to `public/` by webpack
- Run `yarn build:server` if you change anything in `server/`
- The built files will be output to `dist/` by tsc
- `yarn dev` can be used to start The Lounge with hot module reloading
To ensure that you don't commit files that fail the linting, you can install a pre-commit git hook.
Execute `yarn githooks-install` to do so.

9
SECURITY.md Normal file
View file

@ -0,0 +1,9 @@
# Responsible Disclosure of Security Vulnerabilities
- ⚠️ **Do not open public issues on GitHub to report security vulnerabilities.**
- Contact us privately first, in a
[responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure)
manner.
- On IRC, send a private message to any voiced user on our Libera.Chat channel,
`#thelounge`.
- By email, send us your report at <security@thelounge.chat>.

View file

@ -1,30 +0,0 @@
---
# http://www.appveyor.com/docs/appveyor-yml
# Build version format
version: "{build}"
# Do not build on tags (GitHub only)
skip_tags: true
environment:
nodejs_version: '4'
install:
- ps: Install-Product node $env:nodejs_version
- appveyor-retry npm install
- npm run build
- npm install mocha-appveyor-reporter
- echo --reporter mocha-appveyor-reporter >> test/mocha.opts
test_script:
- node --version
- npm --version
- npm test
# cache npm modules
cache:
- '%AppData%\npm-cache -> package.json'
# Don't actually build
build: off

4
babel.config.cjs Normal file
View file

@ -0,0 +1,4 @@
module.exports = {
presets: [["@babel/preset-env", {bugfixes: true}], "babel-preset-typescript-vue3"],
plugins: ["@babel/plugin-transform-runtime"],
};

View file

@ -1,3 +0,0 @@
---
parserOptions:
sourceType: module

Binary file not shown.

BIN
client/audio/pop.wav Normal file

Binary file not shown.

195
client/components/App.vue Normal file
View file

@ -0,0 +1,195 @@
<template>
<div id="viewport" :class="viewportClasses" role="tablist">
<Sidebar v-if="store.state.appLoaded" :overlay="overlay" />
<div
id="sidebar-overlay"
ref="overlay"
aria-hidden="true"
@click="store.commit('sidebarOpen', false)"
/>
<router-view ref="loungeWindow"></router-view>
<Mentions />
<ImageViewer ref="imageViewer" />
<ContextMenu ref="contextMenu" />
<ConfirmDialog ref="confirmDialog" />
<div id="upload-overlay"></div>
</div>
</template>
<script lang="ts">
import constants from "../js/constants";
import eventbus from "../js/eventbus";
import Mousetrap, {ExtendedKeyboardEvent} from "mousetrap";
import throttle from "lodash/throttle";
import storage from "../js/localStorage";
import isIgnoredKeybind from "../js/helpers/isIgnoredKeybind";
import Sidebar from "./Sidebar.vue";
import ImageViewer from "./ImageViewer.vue";
import ContextMenu from "./ContextMenu.vue";
import ConfirmDialog from "./ConfirmDialog.vue";
import Mentions from "./Mentions.vue";
import {
computed,
provide,
defineComponent,
onBeforeUnmount,
onMounted,
ref,
Ref,
InjectionKey,
} from "vue";
import {useStore} from "../js/store";
import type {DebouncedFunc} from "lodash";
export const imageViewerKey = Symbol() as InjectionKey<Ref<typeof ImageViewer | null>>;
const contextMenuKey = Symbol() as InjectionKey<Ref<typeof ContextMenu | null>>;
const confirmDialogKey = Symbol() as InjectionKey<Ref<typeof ConfirmDialog | null>>;
export default defineComponent({
name: "App",
components: {
Sidebar,
ImageViewer,
ContextMenu,
ConfirmDialog,
Mentions,
},
setup() {
const store = useStore();
const overlay = ref(null);
const loungeWindow = ref(null);
const imageViewer = ref(null);
const contextMenu = ref(null);
const confirmDialog = ref(null);
provide(imageViewerKey, imageViewer);
provide(contextMenuKey, contextMenu);
provide(confirmDialogKey, confirmDialog);
const viewportClasses = computed(() => {
return {
notified: store.getters.highlightCount > 0,
"menu-open": store.state.appLoaded && store.state.sidebarOpen,
"menu-dragging": store.state.sidebarDragging,
"userlist-open": store.state.userlistOpen,
};
});
const debouncedResize = ref<DebouncedFunc<() => void>>();
const dayChangeTimeout = ref<any>();
const escapeKey = () => {
eventbus.emit("escapekey");
};
const toggleSidebar = (e: ExtendedKeyboardEvent) => {
if (isIgnoredKeybind(e)) {
return true;
}
store.commit("toggleSidebar");
return false;
};
const toggleUserList = (e: ExtendedKeyboardEvent) => {
if (isIgnoredKeybind(e)) {
return true;
}
store.commit("toggleUserlist");
return false;
};
const toggleMentions = () => {
if (store.state.networks.length !== 0) {
eventbus.emit("mentions:toggle");
}
};
const msUntilNextDay = () => {
// Compute how many milliseconds are remaining until the next day starts
const today = new Date();
const tommorow = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
).getTime();
return tommorow - today.getTime();
};
const prepareOpenStates = () => {
const viewportWidth = window.innerWidth;
let isUserlistOpen = storage.get("thelounge.state.userlist");
if (viewportWidth > constants.mobileViewportPixels) {
store.commit("sidebarOpen", storage.get("thelounge.state.sidebar") !== "false");
}
// If The Lounge is opened on a small screen (less than 1024px), and we don't have stored
// user list state, close it by default
if (viewportWidth >= 1024 && isUserlistOpen !== "true" && isUserlistOpen !== "false") {
isUserlistOpen = "true";
}
store.commit("userlistOpen", isUserlistOpen === "true");
};
prepareOpenStates();
onMounted(() => {
Mousetrap.bind("esc", escapeKey);
Mousetrap.bind("alt+u", toggleUserList);
Mousetrap.bind("alt+s", toggleSidebar);
Mousetrap.bind("alt+m", toggleMentions);
debouncedResize.value = throttle(() => {
eventbus.emit("resize");
}, 100);
window.addEventListener("resize", debouncedResize.value, {passive: true});
// Emit a daychange event every time the day changes so date markers know when to update themselves
const emitDayChange = () => {
eventbus.emit("daychange");
// This should always be 24h later but re-computing exact value just in case
dayChangeTimeout.value = setTimeout(emitDayChange, msUntilNextDay());
};
dayChangeTimeout.value = setTimeout(emitDayChange, msUntilNextDay());
});
onBeforeUnmount(() => {
Mousetrap.unbind("esc");
Mousetrap.unbind("alt+u");
Mousetrap.unbind("alt+s");
Mousetrap.unbind("alt+m");
if (debouncedResize.value) {
window.removeEventListener("resize", debouncedResize.value);
}
if (dayChangeTimeout.value) {
clearTimeout(dayChangeTimeout.value);
}
});
return {
viewportClasses,
escapeKey,
toggleSidebar,
toggleUserList,
toggleMentions,
store,
overlay,
loungeWindow,
imageViewer,
contextMenu,
confirmDialog,
};
},
});
</script>

View file

@ -0,0 +1,65 @@
<template>
<!-- TODO: investigate -->
<ChannelWrapper ref="wrapper" v-bind="$props">
<span class="name">{{ channel.name }}</span>
<span
v-if="channel.unread"
:class="{highlight: channel.highlight && !channel.muted}"
class="badge"
>{{ unreadCount }}</span
>
<template v-if="channel.type === 'channel'">
<span
v-if="channel.state === 0"
class="parted-channel-tooltip tooltipped tooltipped-w"
aria-label="Not currently joined"
>
<span class="parted-channel-icon" />
</span>
<span class="close-tooltip tooltipped tooltipped-w" aria-label="Leave">
<button class="close" aria-label="Leave" @click.stop="close" />
</span>
</template>
<template v-else>
<span class="close-tooltip tooltipped tooltipped-w" aria-label="Close">
<button class="close" aria-label="Close" @click.stop="close" />
</span>
</template>
</ChannelWrapper>
</template>
<script lang="ts">
import {PropType, defineComponent, computed} from "vue";
import roundBadgeNumber from "../js/helpers/roundBadgeNumber";
import useCloseChannel from "../js/hooks/use-close-channel";
import {ClientChan, ClientNetwork} from "../js/types";
import ChannelWrapper from "./ChannelWrapper.vue";
export default defineComponent({
name: "Channel",
components: {
ChannelWrapper,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
channel: {
type: Object as PropType<ClientChan>,
required: true,
},
active: Boolean,
isFiltering: Boolean,
},
setup(props) {
const unreadCount = computed(() => roundBadgeNumber(props.channel.unread));
const close = useCloseChannel(props.channel);
return {
unreadCount,
close,
};
},
});
</script>

View file

@ -0,0 +1,112 @@
<template>
<!-- TODO: move closed style to it's own class -->
<div
v-if="isChannelVisible"
ref="element"
:class="[
'channel-list-item',
{active: active},
{'parted-channel': channel.type === 'channel' && channel.state === 0},
{'has-draft': channel.pendingMessage},
{'has-unread': channel.unread},
{'has-highlight': channel.highlight},
{
'not-secure':
channel.type === 'lobby' && network.status.connected && !network.status.secure,
},
{'not-connected': channel.type === 'lobby' && !network.status.connected},
{'is-muted': channel.muted},
]"
:aria-label="getAriaLabel()"
:title="getAriaLabel()"
:data-name="channel.name"
:data-type="channel.type"
:aria-controls="'#chan-' + channel.id"
:aria-selected="active"
:style="channel.closed ? {transition: 'none', opacity: 0.4} : undefined"
role="tab"
@click="click"
@contextmenu.prevent="openContextMenu"
>
<slot :network="network" :channel="channel" :active-channel="activeChannel" />
</div>
</template>
<script lang="ts">
import eventbus from "../js/eventbus";
import isChannelCollapsed from "../js/helpers/isChannelCollapsed";
import {ClientNetwork, ClientChan} from "../js/types";
import {computed, defineComponent, PropType} from "vue";
import {useStore} from "../js/store";
import {switchToChannel} from "../js/router";
export default defineComponent({
name: "ChannelWrapper",
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
channel: {
type: Object as PropType<ClientChan>,
required: true,
},
active: Boolean,
isFiltering: Boolean,
},
setup(props) {
const store = useStore();
const activeChannel = computed(() => store.state.activeChannel);
const isChannelVisible = computed(
() => props.isFiltering || !isChannelCollapsed(props.network, props.channel)
);
const getAriaLabel = () => {
const extra: string[] = [];
const type = props.channel.type;
if (props.channel.unread > 0) {
if (props.channel.unread > 1) {
extra.push(`${props.channel.unread} unread messages`);
} else {
extra.push(`${props.channel.unread} unread message`);
}
}
if (props.channel.highlight > 0) {
if (props.channel.highlight > 1) {
extra.push(`${props.channel.highlight} mentions`);
} else {
extra.push(`${props.channel.highlight} mention`);
}
}
return `${type}: ${props.channel.name} ${extra.length ? `(${extra.join(", ")})` : ""}`;
};
const click = () => {
if (props.isFiltering) {
return;
}
switchToChannel(props.channel);
};
const openContextMenu = (event: MouseEvent) => {
eventbus.emit("contextmenu:channel", {
event: event,
channel: props.channel,
network: props.network,
});
};
return {
activeChannel,
isChannelVisible,
getAriaLabel,
click,
openContextMenu,
};
},
});
</script>

274
client/components/Chat.vue Normal file
View file

@ -0,0 +1,274 @@
<template>
<div id="chat-container" class="window" :data-current-channel="channel.name" lang="">
<div
id="chat"
:class="{
'hide-motd': !store.state.settings.motd,
'time-seconds': store.state.settings.showSeconds,
'time-12h': store.state.settings.use12hClock,
'colored-nicks': true, // TODO temporarily fixes themes, to be removed in next major version
}"
>
<div
:id="'chan-' + channel.id"
class="chat-view"
:data-type="channel.type"
:aria-label="channel.name"
role="tabpanel"
>
<div class="header">
<SidebarToggle />
<span class="title" :aria-label="'Currently open ' + channel.type">{{
channel.name
}}</span>
<div v-if="channel.editTopic === true" class="topic-container">
<input
ref="topicInput"
:value="channel.topic"
class="topic-input"
placeholder="Set channel topic"
enterkeyhint="done"
@keyup.enter="saveTopic"
@keyup.esc="channel.editTopic = false"
/>
<span aria-label="Save topic" class="save-topic" @click="saveTopic">
<span type="button" aria-label="Save topic"></span>
</span>
</div>
<span
v-else
:title="channel.topic"
:class="{topic: true, empty: !channel.topic}"
@dblclick="editTopic"
><ParsedMessage
v-if="channel.topic"
:network="network"
:text="channel.topic"
/></span>
<MessageSearchForm
v-if="
store.state.settings.searchEnabled &&
['channel', 'query'].includes(channel.type)
"
:network="network"
:channel="channel"
/>
<button
class="mentions"
aria-label="Open your mentions"
@click="openMentions"
/>
<button
class="menu"
aria-label="Open the context menu"
@click="openContextMenu"
/>
<span
v-if="channel.type === 'channel'"
class="rt-tooltip tooltipped tooltipped-w"
aria-label="Toggle user list"
>
<button
class="rt"
aria-label="Toggle user list"
@click="store.commit('toggleUserlist')"
/>
</span>
</div>
<div v-if="channel.type === 'special'" class="chat-content">
<div class="chat">
<div class="messages">
<div class="msg">
<component
:is="specialComponent"
:network="network"
:channel="channel"
/>
</div>
</div>
</div>
</div>
<div v-else class="chat-content">
<div
:class="[
'scroll-down tooltipped tooltipped-w tooltipped-no-touch',
{'scroll-down-shown': !channel.scrolledToBottom},
]"
aria-label="Jump to recent messages"
@click="messageList?.jumpToBottom()"
>
<div class="scroll-down-arrow" />
</div>
<ChatUserList v-if="channel.type === 'channel'" :channel="channel" />
<MessageList
ref="messageList"
:network="network"
:channel="channel"
:focused="focused"
/>
</div>
</div>
</div>
<div
v-if="store.state.currentUserVisibleError"
id="user-visible-error"
@click="hideUserVisibleError"
>
{{ store.state.currentUserVisibleError }}
</div>
<ChatInput :network="network" :channel="channel" />
</div>
</template>
<script lang="ts">
import socket from "../js/socket";
import eventbus from "../js/eventbus";
import ParsedMessage from "./ParsedMessage.vue";
import MessageList from "./MessageList.vue";
import ChatInput from "./ChatInput.vue";
import ChatUserList from "./ChatUserList.vue";
import SidebarToggle from "./SidebarToggle.vue";
import MessageSearchForm from "./MessageSearchForm.vue";
import ListBans from "./Special/ListBans.vue";
import ListInvites from "./Special/ListInvites.vue";
import ListChannels from "./Special/ListChannels.vue";
import ListIgnored from "./Special/ListIgnored.vue";
import {defineComponent, PropType, ref, computed, watch, nextTick, onMounted, Component} from "vue";
import type {ClientNetwork, ClientChan} from "../js/types";
import {useStore} from "../js/store";
import {SpecialChanType, ChanType} from "../../shared/types/chan";
export default defineComponent({
name: "Chat",
components: {
ParsedMessage,
MessageList,
ChatInput,
ChatUserList,
SidebarToggle,
MessageSearchForm,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
focused: Number,
},
emits: ["channel-changed"],
setup(props, {emit}) {
const store = useStore();
const messageList = ref<typeof MessageList>();
const topicInput = ref<HTMLInputElement | null>(null);
const specialComponent = computed(() => {
switch (props.channel.special) {
case SpecialChanType.BANLIST:
return ListBans as Component;
case SpecialChanType.INVITELIST:
return ListInvites as Component;
case SpecialChanType.CHANNELLIST:
return ListChannels as Component;
case SpecialChanType.IGNORELIST:
return ListIgnored as Component;
}
return undefined;
});
const channelChanged = () => {
// Triggered when active channel is set or changed
emit("channel-changed", props.channel);
socket.emit("open", props.channel.id);
if (props.channel.usersOutdated) {
props.channel.usersOutdated = false;
socket.emit("names", {
target: props.channel.id,
});
}
};
const hideUserVisibleError = () => {
store.commit("currentUserVisibleError", null);
};
const editTopic = () => {
if (props.channel.type === ChanType.CHANNEL) {
props.channel.editTopic = true;
}
};
const saveTopic = () => {
props.channel.editTopic = false;
if (!topicInput.value) {
return;
}
const newTopic = topicInput.value.value;
if (props.channel.topic !== newTopic) {
const target = props.channel.id;
const text = `/raw TOPIC ${props.channel.name} :${newTopic}`;
socket.emit("input", {target, text});
}
};
const openContextMenu = (event: any) => {
eventbus.emit("contextmenu:channel", {
event: event,
channel: props.channel,
network: props.network,
});
};
const openMentions = (event: any) => {
eventbus.emit("mentions:toggle", {
event: event,
});
};
watch(
() => props.channel,
() => {
channelChanged();
}
);
watch(
() => props.channel.editTopic,
(newTopic) => {
if (newTopic) {
void nextTick(() => {
topicInput.value?.focus();
});
}
}
);
onMounted(() => {
channelChanged();
if (props.channel.editTopic) {
void nextTick(() => {
topicInput.value?.focus();
});
}
});
return {
store,
messageList,
topicInput,
specialComponent,
hideUserVisibleError,
editTopic,
saveTopic,
openContextMenu,
openMentions,
};
},
});
</script>

View file

@ -0,0 +1,358 @@
<template>
<form id="form" method="post" action="" @submit.prevent="onSubmit">
<span id="upload-progressbar" />
<span id="nick">{{ network.nick }}</span>
<textarea
id="input"
ref="input"
dir="auto"
class="mousetrap"
enterkeyhint="send"
:value="channel.pendingMessage"
:placeholder="getInputPlaceholder(channel)"
:aria-label="getInputPlaceholder(channel)"
@input="setPendingMessage"
@keypress.enter.exact.prevent="onSubmit"
@blur="onBlur"
/>
<span
v-if="store.state.serverConfiguration?.fileUpload"
id="upload-tooltip"
class="tooltipped tooltipped-w tooltipped-no-touch"
aria-label="Upload file"
@click="openFileUpload"
>
<input
id="upload-input"
ref="uploadInput"
type="file"
aria-labelledby="upload"
multiple
@change="onUploadInputChange"
/>
<button
id="upload"
type="button"
aria-label="Upload file"
:disabled="!store.state.isConnected"
/>
</span>
<span
id="submit-tooltip"
class="tooltipped tooltipped-w tooltipped-no-touch"
aria-label="Send message"
>
<button
id="submit"
type="submit"
aria-label="Send message"
:disabled="!store.state.isConnected"
/>
</span>
</form>
</template>
<script lang="ts">
import Mousetrap from "mousetrap";
import {wrapCursor} from "undate";
import autocompletion from "../js/autocompletion";
import {commands} from "../js/commands/index";
import socket from "../js/socket";
import upload from "../js/upload";
import eventbus from "../js/eventbus";
import {watch, defineComponent, nextTick, onMounted, PropType, ref, onUnmounted} from "vue";
import type {ClientNetwork, ClientChan} from "../js/types";
import {useStore} from "../js/store";
import {ChanType} from "../../shared/types/chan";
const formattingHotkeys = {
"mod+k": "\x03",
"mod+b": "\x02",
"mod+u": "\x1F",
"mod+i": "\x1D",
"mod+o": "\x0F",
"mod+s": "\x1e",
"mod+m": "\x11",
};
// Autocomplete bracket and quote characters like in a modern IDE
// For example, select `text`, press `[` key, and it becomes `[text]`
const bracketWraps = {
'"': '"',
"'": "'",
"(": ")",
"<": ">",
"[": "]",
"{": "}",
"*": "*",
"`": "`",
"~": "~",
_: "_",
};
export default defineComponent({
name: "ChatInput",
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup(props) {
const store = useStore();
const input = ref<HTMLTextAreaElement>();
const uploadInput = ref<HTMLInputElement>();
const autocompletionRef = ref<ReturnType<typeof autocompletion>>();
const setInputSize = () => {
void nextTick(() => {
if (!input.value) {
return;
}
const style = window.getComputedStyle(input.value);
const lineHeight = parseFloat(style.lineHeight) || 1;
// Start by resetting height before computing as scrollHeight does not
// decrease when deleting characters
input.value.style.height = "";
// Use scrollHeight to calculate how many lines there are in input, and ceil the value
// because some browsers tend to incorrently round the values when using high density
// displays or using page zoom feature
input.value.style.height = `${
Math.ceil(input.value.scrollHeight / lineHeight) * lineHeight
}px`;
});
};
const setPendingMessage = (e: Event) => {
props.channel.pendingMessage = (e.target as HTMLInputElement).value;
props.channel.inputHistoryPosition = 0;
setInputSize();
};
const getInputPlaceholder = (channel: ClientChan) => {
if (channel.type === ChanType.CHANNEL || channel.type === ChanType.QUERY) {
return `Write to ${channel.name}`;
}
return "";
};
const onSubmit = () => {
if (!input.value) {
return;
}
// Triggering click event opens the virtual keyboard on mobile
// This can only be called from another interactive event (e.g. button click)
input.value.click();
input.value.focus();
if (!store.state.isConnected) {
return false;
}
const target = props.channel.id;
const text = props.channel.pendingMessage;
if (text.length === 0) {
return false;
}
if (autocompletionRef.value) {
autocompletionRef.value.hide();
}
props.channel.inputHistoryPosition = 0;
props.channel.pendingMessage = "";
input.value.value = "";
setInputSize();
// Store new message in history if last message isn't already equal
if (props.channel.inputHistory[1] !== text) {
props.channel.inputHistory.splice(1, 0, text);
}
// Limit input history to a 100 entries
if (props.channel.inputHistory.length > 100) {
props.channel.inputHistory.pop();
}
if (text[0] === "/") {
const args = text.substring(1).split(" ");
const cmd = args.shift()?.toLowerCase();
if (!cmd) {
return false;
}
if (Object.prototype.hasOwnProperty.call(commands, cmd) && commands[cmd](args)) {
return false;
}
}
socket.emit("input", {target, text});
};
const onUploadInputChange = () => {
if (!uploadInput.value || !uploadInput.value.files) {
return;
}
const files = Array.from(uploadInput.value.files);
upload.triggerUpload(files);
uploadInput.value.value = ""; // Reset <input> element so you can upload the same file
};
const openFileUpload = () => {
uploadInput.value?.click();
};
const blurInput = () => {
input.value?.blur();
};
const onBlur = () => {
if (autocompletionRef.value) {
autocompletionRef.value.hide();
}
};
watch(
() => props.channel.id,
() => {
if (autocompletionRef.value) {
autocompletionRef.value.hide();
}
}
);
watch(
() => props.channel.pendingMessage,
() => {
setInputSize();
}
);
onMounted(() => {
eventbus.on("escapekey", blurInput);
if (store.state.settings.autocomplete) {
if (!input.value) {
throw new Error("ChatInput autocomplete: input element is not available");
}
autocompletionRef.value = autocompletion(input.value);
}
const inputTrap = Mousetrap(input.value);
inputTrap.bind(Object.keys(formattingHotkeys), function (e, key) {
const modifier = formattingHotkeys[key];
if (!e.target) {
return;
}
wrapCursor(
e.target as HTMLTextAreaElement,
modifier,
(e.target as HTMLTextAreaElement).selectionStart ===
(e.target as HTMLTextAreaElement).selectionEnd
? ""
: modifier
);
return false;
});
inputTrap.bind(Object.keys(bracketWraps), function (e, key) {
if (
(e.target as HTMLTextAreaElement)?.selectionStart !==
(e.target as HTMLTextAreaElement).selectionEnd
) {
wrapCursor(e.target as HTMLTextAreaElement, key, bracketWraps[key]);
return false;
}
});
inputTrap.bind(["up", "down"], (e, key) => {
if (
store.state.isAutoCompleting ||
(e.target as HTMLTextAreaElement).selectionStart !==
(e.target as HTMLTextAreaElement).selectionEnd ||
!input.value
) {
return;
}
const onRow = (
input.value.value.slice(undefined, input.value.selectionStart).match(/\n/g) ||
[]
).length;
const totalRows = (input.value.value.match(/\n/g) || []).length;
const {channel} = props;
if (channel.inputHistoryPosition === 0) {
channel.inputHistory[channel.inputHistoryPosition] = channel.pendingMessage;
}
if (key === "up" && onRow === 0) {
if (channel.inputHistoryPosition < channel.inputHistory.length - 1) {
channel.inputHistoryPosition++;
} else {
return;
}
} else if (
key === "down" &&
channel.inputHistoryPosition > 0 &&
onRow === totalRows
) {
channel.inputHistoryPosition--;
} else {
return;
}
channel.pendingMessage = channel.inputHistory[channel.inputHistoryPosition];
input.value.value = channel.pendingMessage;
setInputSize();
return false;
});
if (store.state.serverConfiguration?.fileUpload) {
upload.mounted();
}
});
onUnmounted(() => {
eventbus.off("escapekey", blurInput);
if (autocompletionRef.value) {
autocompletionRef.value.destroy();
autocompletionRef.value = undefined;
}
upload.unmounted();
upload.abort();
});
return {
store,
input,
uploadInput,
onUploadInputChange,
openFileUpload,
blurInput,
onBlur,
setInputSize,
upload,
getInputPlaceholder,
onSubmit,
setPendingMessage,
};
},
});
</script>

View file

@ -0,0 +1,255 @@
<template>
<aside
ref="userlist"
class="userlist"
:aria-label="'User list for ' + channel.name"
@mouseleave="removeHoverUser"
>
<div class="count">
<input
ref="input"
:value="userSearchInput"
:placeholder="
channel.users.length + ' user' + (channel.users.length === 1 ? '' : 's')
"
type="search"
class="search"
aria-label="Search among the user list"
tabindex="-1"
@input="setUserSearchInput"
@keydown.up="navigateUserList($event, -1)"
@keydown.down="navigateUserList($event, 1)"
@keydown.page-up="navigateUserList($event, -10)"
@keydown.page-down="navigateUserList($event, 10)"
@keydown.enter="selectUser"
/>
</div>
<div class="names">
<div
v-for="(users, mode) in groupedUsers"
:key="mode"
:class="['user-mode', getModeClass(String(mode))]"
>
<template v-if="userSearchInput.length > 0">
<!-- eslint-disable vue/no-v-text-v-html-on-component -->
<Username
v-for="user in users"
:key="user.original.nick + '-search'"
:on-hover="hoverUser"
:active="user.original === activeUser"
:user="user.original"
v-html="user.string"
/>
<!-- eslint-enable -->
</template>
<template v-else>
<Username
v-for="user in users"
:key="user.nick"
:on-hover="hoverUser"
:active="user === activeUser"
:user="user"
/>
</template>
</div>
</div>
</aside>
</template>
<script lang="ts">
import {filter as fuzzyFilter} from "fuzzy";
import {computed, defineComponent, nextTick, PropType, ref} from "vue";
import type {UserInMessage} from "../../shared/types/msg";
import type {ClientChan, ClientUser} from "../js/types";
import Username from "./Username.vue";
const modes = {
"~": "owner",
"&": "admin",
"!": "admin",
"@": "op",
"%": "half-op",
"+": "voice",
"": "normal",
};
export default defineComponent({
name: "ChatUserList",
components: {
Username,
},
props: {
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup(props) {
const userSearchInput = ref("");
const activeUser = ref<UserInMessage | null>();
const userlist = ref<HTMLDivElement>();
const filteredUsers = computed(() => {
if (!userSearchInput.value) {
return;
}
return fuzzyFilter(userSearchInput.value, props.channel.users, {
pre: "<b>",
post: "</b>",
extract: (u) => u.nick,
});
});
const groupedUsers = computed(() => {
const groups = {};
if (userSearchInput.value && filteredUsers.value) {
const result = filteredUsers.value;
for (const user of result) {
const mode: string = user.original.modes[0] || "";
if (!groups[mode]) {
groups[mode] = [];
}
// Prepend user mode to search result
user.string = mode + user.string;
groups[mode].push(user);
}
} else {
for (const user of props.channel.users) {
const mode = user.modes[0] || "";
if (!groups[mode]) {
groups[mode] = [user];
} else {
groups[mode].push(user);
}
}
}
return groups as {
[mode: string]: (ClientUser & {
original: UserInMessage;
string: string;
})[];
};
});
const setUserSearchInput = (e: Event) => {
userSearchInput.value = (e.target as HTMLInputElement).value;
};
const getModeClass = (mode: string) => {
return modes[mode] as typeof modes;
};
const selectUser = () => {
// Simulate a click on the active user to open the context menu.
// Coordinates are provided to position the menu correctly.
if (!activeUser.value || !userlist.value) {
return;
}
const el = userlist.value.querySelector(".active");
if (!el) {
return;
}
const rect = el.getBoundingClientRect();
const ev = new MouseEvent("click", {
view: window,
bubbles: true,
cancelable: true,
clientX: rect.left,
clientY: rect.top + rect.height,
});
el.dispatchEvent(ev);
};
const hoverUser = (user: UserInMessage) => {
activeUser.value = user;
};
const removeHoverUser = () => {
activeUser.value = null;
};
const scrollToActiveUser = () => {
// Scroll the list if needed after the active class is applied
void nextTick(() => {
const el = userlist.value?.querySelector(".active");
el?.scrollIntoView({block: "nearest", inline: "nearest"});
});
};
const navigateUserList = (event: Event, direction: number) => {
// Prevent propagation to stop global keybind handler from capturing pagedown/pageup
// and redirecting it to the message list container for scrolling
event.stopImmediatePropagation();
event.preventDefault();
let users = props.channel.users;
// Only using filteredUsers when we have to avoids filtering when it's not needed
if (userSearchInput.value && filteredUsers.value) {
users = filteredUsers.value.map((result) => result.original);
}
// Bail out if there's no users to select
if (!users.length) {
activeUser.value = null;
return;
}
const abort = () => {
activeUser.value = direction ? users[0] : users[users.length - 1];
scrollToActiveUser();
};
// If there's no active user select the first or last one depending on direction
if (!activeUser.value) {
abort();
return;
}
let currentIndex = users.indexOf(activeUser.value as ClientUser);
if (currentIndex === -1) {
abort();
return;
}
currentIndex += direction;
// Wrap around the list if necessary. Normaly each loop iterates once at most,
// but might iterate more often if pgup or pgdown are used in a very short user list
while (currentIndex < 0) {
currentIndex += users.length;
}
while (currentIndex > users.length - 1) {
currentIndex -= users.length;
}
activeUser.value = users[currentIndex];
scrollToActiveUser();
};
return {
filteredUsers,
groupedUsers,
userSearchInput,
activeUser,
userlist,
setUserSearchInput,
getModeClass,
selectUser,
hoverUser,
removeHoverUser,
navigateUserList,
};
},
});
</script>

View file

@ -0,0 +1,102 @@
<template>
<div id="confirm-dialog-overlay" :class="{opened: !!data}">
<div v-if="data !== null" id="confirm-dialog">
<div class="confirm-text">
<div class="confirm-text-title">{{ data?.title }}</div>
<p>{{ data?.text }}</p>
</div>
<div class="confirm-buttons">
<button class="btn btn-cancel" @click="close(false)">Cancel</button>
<button class="btn btn-danger" @click="close(true)">{{ data?.button }}</button>
</div>
</div>
</div>
</template>
<style>
#confirm-dialog {
background: var(--body-bg-color);
color: #fff;
margin: 10px;
border-radius: 5px;
max-width: 500px;
}
#confirm-dialog .confirm-text {
padding: 15px;
user-select: text;
}
#confirm-dialog .confirm-text-title {
font-size: 20px;
font-weight: 700;
margin-bottom: 10px;
}
#confirm-dialog .confirm-buttons {
display: flex;
justify-content: flex-end;
padding: 15px;
background: rgba(0, 0, 0, 0.3);
}
#confirm-dialog .confirm-buttons .btn {
margin-bottom: 0;
margin-left: 10px;
}
#confirm-dialog .confirm-buttons .btn-cancel {
border-color: transparent;
}
</style>
<script lang="ts">
import eventbus from "../js/eventbus";
import {defineComponent, onMounted, onUnmounted, ref} from "vue";
type ConfirmDialogData = {
title: string;
text: string;
button: string;
};
type ConfirmDialogCallback = {
(confirmed: boolean): void;
};
export default defineComponent({
name: "ConfirmDialog",
setup() {
const data = ref<ConfirmDialogData>();
const callback = ref<ConfirmDialogCallback>();
const open = (incoming: ConfirmDialogData, cb: ConfirmDialogCallback) => {
data.value = incoming;
callback.value = cb;
};
const close = (result: boolean) => {
data.value = undefined;
if (callback.value) {
callback.value(!!result);
}
};
onMounted(() => {
eventbus.on("escapekey", close);
eventbus.on("confirm-dialog", open);
});
onUnmounted(() => {
eventbus.off("escapekey", close);
eventbus.off("confirm-dialog", open);
});
return {
data,
close,
};
},
});
</script>

View file

@ -0,0 +1,284 @@
<template>
<div
v-if="isOpen"
id="context-menu-container"
:class="{passthrough}"
@click="containerClick"
@contextmenu.prevent="containerClick"
@keydown.exact.up.prevent="navigateMenu(-1)"
@keydown.exact.down.prevent="navigateMenu(1)"
@keydown.exact.tab.prevent="navigateMenu(1)"
@keydown.shift.tab.prevent="navigateMenu(-1)"
>
<ul
id="context-menu"
ref="contextMenu"
role="menu"
:style="{
top: style.top + 'px',
left: style.left + 'px',
}"
tabindex="-1"
@mouseleave="activeItem = -1"
@keydown.enter.prevent="clickActiveItem"
>
<!-- TODO: type -->
<template v-for="(item, id) of (items as any)" :key="item.name">
<li
:class="[
'context-menu-' + item.type,
item.class ? 'context-menu-' + item.class : null,
{active: id === activeItem},
]"
role="menuitem"
@mouseenter="hoverItem(id)"
@click="clickItem(item)"
>
{{ item.label }}
</li>
</template>
</ul>
</div>
</template>
<script lang="ts">
import {
generateUserContextMenu,
generateChannelContextMenu,
generateInlineChannelContextMenu,
ContextMenuItem,
} from "../js/helpers/contextMenu";
import eventbus from "../js/eventbus";
import {defineComponent, nextTick, onMounted, onUnmounted, PropType, ref} from "vue";
import {ClientChan, ClientMessage, ClientNetwork, ClientUser} from "../js/types";
import {useStore} from "../js/store";
import {useRouter} from "vue-router";
export default defineComponent({
name: "ContextMenu",
props: {
message: {
required: false,
type: Object as PropType<ClientMessage>,
},
},
setup() {
const store = useStore();
const router = useRouter();
const isOpen = ref(false);
const passthrough = ref(false);
const contextMenu = ref<HTMLUListElement | null>();
const previousActiveElement = ref<HTMLElement | null>();
const items = ref<ContextMenuItem[]>([]);
const activeItem = ref(-1);
const style = ref({
top: 0,
left: 0,
});
const close = () => {
if (!isOpen.value) {
return;
}
isOpen.value = false;
items.value = [];
if (previousActiveElement.value) {
previousActiveElement.value.focus();
previousActiveElement.value = null;
}
};
const enablePointerEvents = () => {
passthrough.value = false;
document.body.removeEventListener("pointerup", enablePointerEvents);
};
const containerClick = (event: MouseEvent) => {
if (event.currentTarget === event.target) {
close();
}
};
const positionContextMenu = (event: MouseEvent) => {
const element = event.target as HTMLElement;
if (!contextMenu.value) {
return;
}
const menuWidth = contextMenu.value?.offsetWidth;
const menuHeight = contextMenu.value?.offsetHeight;
if (element && element.classList.contains("menu")) {
return {
left: element.getBoundingClientRect().left - (menuWidth - element.offsetWidth),
top: element.getBoundingClientRect().top + element.offsetHeight,
};
}
const offset = {left: event.pageX, top: event.pageY};
if (window.innerWidth - offset.left < menuWidth) {
offset.left = window.innerWidth - menuWidth;
}
if (window.innerHeight - offset.top < menuHeight) {
offset.top = window.innerHeight - menuHeight;
}
return offset;
};
const hoverItem = (id: number) => {
activeItem.value = id;
};
const clickItem = (item: ContextMenuItem) => {
close();
if ("action" in item && item.action) {
item.action();
} else if ("link" in item && item.link) {
router.push(item.link).catch(() => {
// eslint-disable-next-line no-console
console.error("Failed to navigate to", item.link);
});
}
};
const clickActiveItem = () => {
if (items.value[activeItem.value]) {
clickItem(items.value[activeItem.value]);
}
};
const open = (event: MouseEvent, newItems: ContextMenuItem[]) => {
event.preventDefault();
previousActiveElement.value = document.activeElement as HTMLElement;
items.value = newItems;
activeItem.value = 0;
isOpen.value = true;
// Position the menu and set the focus on the first item after it's size has updated
nextTick(() => {
const pos = positionContextMenu(event);
if (!pos) {
return;
}
style.value.left = pos.left;
style.value.top = pos.top;
contextMenu.value?.focus();
}).catch((e) => {
// eslint-disable-next-line no-console
console.error(e);
});
};
const openChannelContextMenu = (data: {
event: MouseEvent;
channel: ClientChan;
network: ClientNetwork;
}) => {
if (data.event.type === "contextmenu") {
// Pass through all pointer events to allow the network list's
// dragging events to continue triggering.
passthrough.value = true;
document.body.addEventListener("pointerup", enablePointerEvents, {
passive: true,
});
}
const newItems = generateChannelContextMenu(data.channel, data.network);
open(data.event, newItems);
};
const openInlineChannelContextMenu = (data: {channel: string; event: MouseEvent}) => {
const {network} = store.state.activeChannel;
const newItems = generateInlineChannelContextMenu(store, data.channel, network);
open(data.event, newItems);
};
const openUserContextMenu = (data: {
user: Pick<ClientUser, "nick" | "modes">;
event: MouseEvent;
}) => {
const {network, channel} = store.state.activeChannel;
const newItems = generateUserContextMenu(
store,
channel,
network,
channel.users.find((u) => u.nick === data.user.nick) || {
nick: data.user.nick,
modes: [],
}
);
open(data.event, newItems);
};
const navigateMenu = (direction: number) => {
let currentIndex = activeItem.value;
currentIndex += direction;
const nextItem = items.value[currentIndex];
// If the next item we would select is a divider, skip over it
if (nextItem && "type" in nextItem && nextItem.type === "divider") {
currentIndex += direction;
}
if (currentIndex < 0) {
currentIndex += items.value.length;
}
if (currentIndex > items.value.length - 1) {
currentIndex -= items.value.length;
}
activeItem.value = currentIndex;
};
onMounted(() => {
eventbus.on("escapekey", close);
eventbus.on("contextmenu:cancel", close);
eventbus.on("contextmenu:user", openUserContextMenu);
eventbus.on("contextmenu:channel", openChannelContextMenu);
eventbus.on("contextmenu:inline-channel", openInlineChannelContextMenu);
});
onUnmounted(() => {
eventbus.off("escapekey", close);
eventbus.off("contextmenu:cancel", close);
eventbus.off("contextmenu:user", openUserContextMenu);
eventbus.off("contextmenu:channel", openChannelContextMenu);
eventbus.off("contextmenu:inline-channel", openInlineChannelContextMenu);
close();
});
return {
isOpen,
items,
activeItem,
style,
contextMenu,
passthrough,
close,
containerClick,
navigateMenu,
hoverItem,
clickItem,
clickActiveItem,
};
},
});
</script>

View file

@ -0,0 +1,66 @@
<template>
<div :aria-label="localeDate" class="date-marker-container tooltipped tooltipped-s">
<div class="date-marker">
<span :aria-label="friendlyDate()" class="date-marker-text" />
</div>
</div>
</template>
<script lang="ts">
import dayjs from "dayjs";
import calendar from "dayjs/plugin/calendar";
import {computed, defineComponent, onBeforeUnmount, onMounted, PropType} from "vue";
import eventbus from "../js/eventbus";
import type {ClientMessage} from "../js/types";
dayjs.extend(calendar);
export default defineComponent({
name: "DateMarker",
props: {
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
focused: Boolean,
},
setup(props) {
const localeDate = computed(() => dayjs(props.message.time).format("D MMMM YYYY"));
const hoursPassed = () => {
return (Date.now() - Date.parse(props.message.time.toString())) / 3600000;
};
const dayChange = () => {
if (hoursPassed() >= 48) {
eventbus.off("daychange", dayChange);
}
};
const friendlyDate = () => {
// See http://momentjs.com/docs/#/displaying/calendar-time/
return dayjs(props.message.time).calendar(null, {
sameDay: "[Today]",
lastDay: "[Yesterday]",
lastWeek: "D MMMM YYYY",
sameElse: "D MMMM YYYY",
});
};
onMounted(() => {
if (hoursPassed() < 48) {
eventbus.on("daychange", dayChange);
}
});
onBeforeUnmount(() => {
eventbus.off("daychange", dayChange);
});
return {
localeDate,
friendlyDate,
};
},
});
</script>

View file

@ -0,0 +1,120 @@
<template>
<div ref="containerRef" :class="$props.class">
<slot
v-for="(item, index) of list"
:key="item[itemKey]"
:element="item"
:index="index"
name="item"
></slot>
</div>
</template>
<script lang="ts">
import {defineComponent, ref, PropType, watch, onUnmounted, onBeforeUnmount} from "vue";
import Sortable from "sortablejs";
const Props = {
delay: {
type: Number,
default: 0,
required: false,
},
delayOnTouchOnly: {
type: Boolean,
default: false,
required: false,
},
touchStartThreshold: {
type: Number,
default: 10,
required: false,
},
handle: {
type: String,
default: "",
required: false,
},
draggable: {
type: String,
default: "",
required: false,
},
ghostClass: {
type: String,
default: "",
required: false,
},
dragClass: {
type: String,
default: "",
required: false,
},
group: {
type: String,
default: "",
required: false,
},
class: {
type: String,
default: "",
required: false,
},
itemKey: {
type: String,
default: "",
required: true,
},
list: {
type: Array as PropType<any[]>,
default: [],
required: true,
},
filter: {
type: String,
default: "",
required: false,
},
};
export default defineComponent({
name: "Draggable",
props: Props,
emits: ["change", "choose", "unchoose"],
setup(props, {emit}) {
const containerRef = ref<HTMLElement | null>(null);
const sortable = ref<Sortable | null>(null);
watch(containerRef, (newDraggable) => {
if (newDraggable) {
sortable.value = new Sortable(newDraggable, {
...props,
onChoose(event) {
emit("choose", event);
},
onUnchoose(event) {
emit("unchoose", event);
},
onEnd(event) {
emit("change", event);
},
});
}
});
onBeforeUnmount(() => {
if (sortable.value) {
sortable.value.destroy();
containerRef.value = null;
}
});
return {
containerRef,
};
},
});
</script>

View file

@ -0,0 +1,478 @@
<template>
<div
id="image-viewer"
ref="viewer"
:class="{opened: link !== null}"
@wheel="onMouseWheel"
@touchstart.passive="onTouchStart"
@click="onClick"
>
<template v-if="link !== null">
<button class="close-btn" aria-label="Close"></button>
<button
v-if="previousImage"
class="previous-image-btn"
aria-label="Previous image"
@click.stop="previous"
></button>
<button
v-if="nextImage"
class="next-image-btn"
aria-label="Next image"
@click.stop="next"
></button>
<a class="open-btn" :href="link.link" target="_blank" rel="noopener"></a>
<img
ref="image"
:src="link.thumb"
alt=""
:style="computeImageStyles"
@load="onImageLoad"
@mousedown="onImageMouseDown"
@touchstart.passive="onImageTouchStart"
/>
</template>
</div>
</template>
<script lang="ts">
import Mousetrap from "mousetrap";
import {computed, defineComponent, ref, watch} from "vue";
import eventbus from "../js/eventbus";
import {ClientChan, ClientLinkPreview} from "../js/types";
import {SharedMsg} from "../../shared/types/msg";
export default defineComponent({
name: "ImageViewer",
setup() {
const viewer = ref<HTMLDivElement>();
const image = ref<HTMLImageElement>();
const link = ref<ClientLinkPreview | null>(null);
const previousImage = ref<ClientLinkPreview | null>();
const nextImage = ref<ClientLinkPreview | null>();
const channel = ref<ClientChan | null>();
const position = ref<{
x: number;
y: number;
}>({
x: 0,
y: 0,
});
const transform = ref<{
scale: number;
x: number;
y: number;
}>({
scale: 1,
x: 0,
y: 0,
});
const computeImageStyles = computed(() => {
// Sub pixels may cause the image to blur in certain browsers
// round it down to prevent that
const transformX = Math.floor(transform.value.x);
const transformY = Math.floor(transform.value.y);
return {
left: `${position.value.x}px`,
top: `${position.value.y}px`,
transform: `translate3d(${transformX}px, ${transformY}px, 0) scale3d(${transform.value.scale}, ${transform.value.scale}, 1)`,
};
});
const closeViewer = () => {
if (link.value === null) {
return;
}
channel.value = null;
previousImage.value = null;
nextImage.value = null;
link.value = null;
};
const setPrevNextImages = () => {
if (!channel.value || !link.value) {
return null;
}
const links = channel.value.messages
.map((msg: SharedMsg) => msg.previews)
.flat()
.filter((preview) => preview && preview.thumb);
const currentIndex = links.indexOf(link.value);
previousImage.value = links[currentIndex - 1] || null;
nextImage.value = links[currentIndex + 1] || null;
};
const previous = () => {
if (previousImage.value) {
link.value = previousImage.value;
}
};
const next = () => {
if (nextImage.value) {
link.value = nextImage.value;
}
};
const prepareImage = () => {
const viewerEl = viewer.value;
const imageEl = image.value;
if (!viewerEl || !imageEl) {
return;
}
const width = viewerEl.offsetWidth;
const height = viewerEl.offsetHeight;
const scale = Math.min(1, width / imageEl.width, height / imageEl.height);
position.value.x = Math.floor(-image.value!.naturalWidth / 2);
position.value.y = Math.floor(-image.value!.naturalHeight / 2);
transform.value.scale = Math.max(scale, 0.1);
transform.value.x = width / 2;
transform.value.y = height / 2;
};
const onImageLoad = () => {
prepareImage();
};
const calculateZoomShift = (newScale: number, x: number, y: number, oldScale: number) => {
if (!image.value || !viewer.value) {
return;
}
const imageWidth = image.value.width;
const centerX = viewer.value.offsetWidth / 2;
const centerY = viewer.value.offsetHeight / 2;
return {
x:
centerX -
((centerX - (y - (imageWidth * x) / 2)) / x) * newScale +
(imageWidth * newScale) / 2,
y:
centerY -
((centerY - (oldScale - (imageWidth * x) / 2)) / x) * newScale +
(imageWidth * newScale) / 2,
};
};
const correctPosition = () => {
const imageEl = image.value;
const viewerEl = viewer.value;
if (!imageEl || !viewerEl) {
return;
}
const widthScaled = imageEl.width * transform.value.scale;
const heightScaled = imageEl.height * transform.value.scale;
const containerWidth = viewerEl.offsetWidth;
const containerHeight = viewerEl.offsetHeight;
if (widthScaled < containerWidth) {
transform.value.x = containerWidth / 2;
} else if (transform.value.x - widthScaled / 2 > 0) {
transform.value.x = widthScaled / 2;
} else if (transform.value.x + widthScaled / 2 < containerWidth) {
transform.value.x = containerWidth - widthScaled / 2;
}
if (heightScaled < containerHeight) {
transform.value.y = containerHeight / 2;
} else if (transform.value.y - heightScaled / 2 > 0) {
transform.value.y = heightScaled / 2;
} else if (transform.value.y + heightScaled / 2 < containerHeight) {
transform.value.y = containerHeight - heightScaled / 2;
}
};
// Reduce multiple touch points into a single x/y/scale
const reduceTouches = (touches: TouchList) => {
let totalX = 0;
let totalY = 0;
let totalScale = 0;
for (let i = 0; i < touches.length; i++) {
const x = touches[i].clientX;
const y = touches[i].clientY;
totalX += x;
totalY += y;
for (let i2 = 0; i2 < touches.length; i2++) {
if (i !== i2) {
const x2 = touches[i2].clientX;
const y2 = touches[i2].clientY;
totalScale += Math.sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
}
}
}
if (totalScale === 0) {
totalScale = 1;
}
return {
x: totalX / touches.length,
y: totalY / touches.length,
scale: totalScale / touches.length,
};
};
const onTouchStart = (e: TouchEvent) => {
// prevent sidebar touchstart event, we don't want to interact with sidebar while in image viewer
e.stopImmediatePropagation();
};
// Touch image manipulation:
// 1. Move around by dragging it with one finger
// 2. Change image scale by using two fingers
const onImageTouchStart = (e: TouchEvent) => {
const img = image.value;
let touch = reduceTouches(e.touches);
let currentTouches = e.touches;
let touchEndFingers = 0;
const currentTransform = {
x: touch.x,
y: touch.y,
scale: touch.scale,
};
const startTransform = {
x: transform.value.x,
y: transform.value.y,
scale: transform.value.scale,
};
const touchMove = (moveEvent) => {
touch = reduceTouches(moveEvent.touches);
if (currentTouches.length !== moveEvent.touches.length) {
currentTransform.x = touch.x;
currentTransform.y = touch.y;
currentTransform.scale = touch.scale;
startTransform.x = transform.value.x;
startTransform.y = transform.value.y;
startTransform.scale = transform.value.scale;
}
const deltaX = touch.x - currentTransform.x;
const deltaY = touch.y - currentTransform.y;
const deltaScale = touch.scale / currentTransform.scale;
currentTouches = moveEvent.touches;
touchEndFingers = 0;
const newScale = Math.min(3, Math.max(0.1, startTransform.scale * deltaScale));
const fixedPosition = calculateZoomShift(
newScale,
startTransform.scale,
startTransform.x,
startTransform.y
);
if (!fixedPosition) {
return;
}
transform.value.x = fixedPosition.x + deltaX;
transform.value.y = fixedPosition.y + deltaY;
transform.value.scale = newScale;
correctPosition();
};
const touchEnd = (endEvent: TouchEvent) => {
const changedTouches = endEvent.changedTouches.length;
if (currentTouches.length > changedTouches + touchEndFingers) {
touchEndFingers += changedTouches;
return;
}
// todo: this is swipe to close, but it's not working very well due to unfinished delta calculation
/* if (
transform.value.scale <= 1 &&
endEvent.changedTouches[0].clientY - startTransform.y <= -70
) {
return this.closeViewer();
}*/
correctPosition();
img?.removeEventListener("touchmove", touchMove);
img?.removeEventListener("touchend", touchEnd);
};
img?.addEventListener("touchmove", touchMove, {passive: true});
img?.addEventListener("touchend", touchEnd, {passive: true});
};
// Image mouse manipulation:
// 1. Mouse wheel scrolling will zoom in and out
// 2. If image is zoomed in, simply dragging it will move it around
const onImageMouseDown = (e: MouseEvent) => {
// todo: ignore if in touch event currently?
// only left mouse
// TODO: e.buttons?
if (e.which !== 1) {
return;
}
e.stopPropagation();
e.preventDefault();
const viewerEl = viewer.value;
const imageEl = image.value;
if (!viewerEl || !imageEl) {
return;
}
const startX = e.clientX;
const startY = e.clientY;
const startTransformX = transform.value.x;
const startTransformY = transform.value.y;
const widthScaled = imageEl.width * transform.value.scale;
const heightScaled = imageEl.height * transform.value.scale;
const containerWidth = viewerEl.offsetWidth;
const containerHeight = viewerEl.offsetHeight;
const centerX = transform.value.x - widthScaled / 2;
const centerY = transform.value.y - heightScaled / 2;
let movedDistance = 0;
const mouseMove = (moveEvent: MouseEvent) => {
moveEvent.stopPropagation();
moveEvent.preventDefault();
const newX = moveEvent.clientX - startX;
const newY = moveEvent.clientY - startY;
movedDistance = Math.max(movedDistance, Math.abs(newX), Math.abs(newY));
if (centerX < 0 || widthScaled + centerX > containerWidth) {
transform.value.x = startTransformX + newX;
}
if (centerY < 0 || heightScaled + centerY > containerHeight) {
transform.value.y = startTransformY + newY;
}
correctPosition();
};
const mouseUp = (upEvent: MouseEvent) => {
correctPosition();
if (movedDistance < 2 && upEvent.button === 0) {
closeViewer();
}
image.value?.removeEventListener("mousemove", mouseMove);
image.value?.removeEventListener("mouseup", mouseUp);
};
image.value?.addEventListener("mousemove", mouseMove);
image.value?.addEventListener("mouseup", mouseUp);
};
// If image is zoomed in, holding ctrl while scrolling will move the image up and down
const onMouseWheel = (e: WheelEvent) => {
// if image viewer is closing (css animation), you can still trigger mousewheel
// TODO: Figure out a better fix for this
if (link.value === null) {
return;
}
e.preventDefault(); // TODO: Can this be passive?
if (e.ctrlKey) {
transform.value.y += e.deltaY;
} else {
const delta = e.deltaY > 0 ? 0.1 : -0.1;
const newScale = Math.min(3, Math.max(0.1, transform.value.scale + delta));
const fixedPosition = calculateZoomShift(
newScale,
transform.value.scale,
transform.value.x,
transform.value.y
);
if (!fixedPosition) {
return;
}
transform.value.scale = newScale;
transform.value.x = fixedPosition.x;
transform.value.y = fixedPosition.y;
}
correctPosition();
};
const onClick = (e: Event) => {
// If click triggers on the image, ignore it
if (e.target === image.value) {
return;
}
closeViewer();
};
watch(link, (newLink, oldLink) => {
// TODO: history.pushState
if (newLink === null) {
eventbus.off("escapekey", closeViewer);
eventbus.off("resize", correctPosition);
Mousetrap.unbind("left");
Mousetrap.unbind("right");
return;
}
setPrevNextImages();
if (!oldLink) {
eventbus.on("escapekey", closeViewer);
eventbus.on("resize", correctPosition);
Mousetrap.bind("left", previous);
Mousetrap.bind("right", next);
}
});
return {
link,
channel,
image,
transform,
closeViewer,
next,
previous,
onImageLoad,
onImageMouseDown,
onMouseWheel,
onClick,
onTouchStart,
previousImage,
nextImage,
onImageTouchStart,
computeImageStyles,
viewer,
};
},
});
</script>

View file

@ -0,0 +1,35 @@
<template>
<span
class="inline-channel"
dir="auto"
role="button"
tabindex="0"
@click.prevent="openContextMenu"
@contextmenu.prevent="openContextMenu"
><slot></slot
></span>
</template>
<script lang="ts">
import {defineComponent} from "vue";
import eventbus from "../js/eventbus";
export default defineComponent({
name: "InlineChannel",
props: {
channel: String,
},
setup(props) {
const openContextMenu = (event) => {
eventbus.emit("contextmenu:inline-channel", {
event: event,
channel: props.channel,
});
};
return {
openContextMenu,
};
},
});
</script>

View file

@ -0,0 +1,93 @@
<template>
<form
:id="'join-channel-' + channel.id"
class="join-form"
method="post"
action=""
autocomplete="off"
@keydown.esc.prevent="$emit('toggle-join-channel')"
@submit.prevent="onSubmit"
>
<input
v-model="inputChannel"
v-focus
type="text"
class="input"
name="channel"
placeholder="Channel"
pattern="[^\s]+"
maxlength="200"
title="The channel name may not contain spaces"
required
/>
<input
v-model="inputPassword"
type="password"
class="input"
name="key"
placeholder="Password (optional)"
pattern="[^\s]+"
maxlength="200"
title="The channel password may not contain spaces"
autocomplete="new-password"
/>
<button type="submit" class="btn btn-small">Join</button>
</form>
</template>
<script lang="ts">
import {defineComponent, PropType, ref} from "vue";
import {switchToChannel} from "../js/router";
import socket from "../js/socket";
import {useStore} from "../js/store";
import {ClientNetwork, ClientChan} from "../js/types";
export default defineComponent({
name: "JoinChannel",
directives: {
focus: {
mounted: (el: HTMLFormElement) => el.focus(),
},
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
emits: ["toggle-join-channel"],
setup(props, {emit}) {
const store = useStore();
const inputChannel = ref("");
const inputPassword = ref("");
const onSubmit = () => {
const existingChannel = store.getters.findChannelOnCurrentNetwork(inputChannel.value);
if (existingChannel) {
switchToChannel(existingChannel);
} else {
const chanTypes = props.network.serverOptions.CHANTYPES;
let channel = inputChannel.value;
if (chanTypes && chanTypes.length > 0 && !chanTypes.includes(channel[0])) {
channel = chanTypes[0] + channel;
}
socket.emit("input", {
text: `/join ${channel} ${inputPassword.value}`,
target: props.channel.id,
});
}
inputChannel.value = "";
inputPassword.value = "";
emit("toggle-join-channel");
};
return {
inputChannel,
inputPassword,
onSubmit,
};
},
});
</script>

View file

@ -0,0 +1,329 @@
<template>
<div
v-if="link.shown"
v-show="link.sourceLoaded || link.type === 'link'"
ref="container"
class="preview"
dir="ltr"
>
<div
ref="content"
:class="['toggle-content', 'toggle-type-' + link.type, {opened: isContentShown}]"
>
<template v-if="link.type === 'link'">
<a
v-if="link.thumb"
v-show="link.sourceLoaded"
:href="link.link"
class="toggle-thumbnail"
target="_blank"
rel="noopener"
@click="onThumbnailClick"
>
<img
:src="link.thumb"
decoding="async"
alt=""
class="thumb"
@error="onThumbnailError"
@abort="onThumbnailError"
@load="onPreviewReady"
/>
</a>
<div class="toggle-text" dir="auto">
<div class="head">
<div class="overflowable">
<a
:href="link.link"
:title="link.head"
target="_blank"
rel="noopener"
>{{ link.head }}</a
>
</div>
<button
v-if="showMoreButton"
:aria-expanded="isContentShown"
:aria-label="moreButtonLabel"
dir="auto"
class="more"
@click="onMoreClick"
>
<span class="more-caret" />
</button>
</div>
<div class="body overflowable">
<a :href="link.link" :title="link.body" target="_blank" rel="noopener">{{
link.body
}}</a>
</div>
</div>
</template>
<template v-else-if="link.type === 'image'">
<a
:href="link.link"
class="toggle-thumbnail"
target="_blank"
rel="noopener"
@click="onThumbnailClick"
>
<img
v-show="link.sourceLoaded"
:src="link.thumb"
decoding="async"
alt=""
@load="onPreviewReady"
/>
</a>
</template>
<template v-else-if="link.type === 'video'">
<video
v-show="link.sourceLoaded"
preload="metadata"
controls
@canplay="onPreviewReady"
>
<source :src="link.media" :type="link.mediaType" />
</video>
</template>
<template v-else-if="link.type === 'audio'">
<audio
v-show="link.sourceLoaded"
controls
preload="metadata"
@canplay="onPreviewReady"
>
<source :src="link.media" :type="link.mediaType" />
</audio>
</template>
<template v-else-if="link.type === 'error'">
<em v-if="link.error === 'image-too-big'">
This image is larger than {{ imageMaxSize }} and cannot be previewed.
<a :href="link.link" target="_blank" rel="noopener">Click here</a>
to open it in a new window.
</em>
<template v-else-if="link.error === 'message'">
<div>
<em>
A preview could not be loaded.
<a :href="link.link" target="_blank" rel="noopener">Click here</a>
to open it in a new window.
</em>
<br />
<pre class="prefetch-error">{{ link.message }}</pre>
</div>
<button
:aria-expanded="isContentShown"
:aria-label="moreButtonLabel"
class="more"
@click="onMoreClick"
>
<span class="more-caret" />
</button>
</template>
</template>
</div>
</div>
</template>
<script lang="ts">
import {
computed,
defineComponent,
inject,
nextTick,
onBeforeUnmount,
onMounted,
onUnmounted,
PropType,
ref,
watch,
} from "vue";
import {onBeforeRouteUpdate} from "vue-router";
import eventbus from "../js/eventbus";
import friendlysize from "../js/helpers/friendlysize";
import {useStore} from "../js/store";
import type {ClientChan, ClientLinkPreview} from "../js/types";
import {imageViewerKey} from "./App.vue";
export default defineComponent({
name: "LinkPreview",
props: {
link: {
type: Object as PropType<ClientLinkPreview>,
required: true,
},
keepScrollPosition: {
type: Function as PropType<() => void>,
required: true,
},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup(props) {
const store = useStore();
const showMoreButton = ref(false);
const isContentShown = ref(false);
const imageViewer = inject(imageViewerKey);
onBeforeRouteUpdate((to, from, next) => {
// cancel the navigation if the user is trying to close the image viewer
if (imageViewer?.value?.link) {
imageViewer.value.closeViewer();
return next(false);
}
next();
});
const content = ref<HTMLDivElement | null>(null);
const container = ref<HTMLDivElement | null>(null);
const moreButtonLabel = computed(() => {
return isContentShown.value ? "Less" : "More";
});
const imageMaxSize = computed(() => {
if (!props.link.maxSize) {
return;
}
return friendlysize(props.link.maxSize);
});
const handleResize = () => {
nextTick(() => {
if (!content.value || !container.value) {
return;
}
showMoreButton.value = content.value.offsetWidth >= container.value.offsetWidth;
}).catch((e) => {
// eslint-disable-next-line no-console
console.error("Error in LinkPreview.handleResize", e);
});
};
const onPreviewReady = () => {
props.link.sourceLoaded = true;
props.keepScrollPosition();
if (props.link.type === "link") {
handleResize();
}
};
const onPreviewUpdate = () => {
// Don't display previews while they are loading on the server
if (props.link.type === "loading") {
return;
}
// Error does not have any media to render
if (props.link.type === "error") {
onPreviewReady();
}
// If link doesn't have a thumbnail, render it
if (props.link.type === "link") {
handleResize();
props.keepScrollPosition();
}
};
const onThumbnailError = () => {
// If thumbnail fails to load, hide it and show the preview without it
props.link.thumb = "";
onPreviewReady();
};
const onThumbnailClick = (e: MouseEvent) => {
e.preventDefault();
if (!imageViewer?.value) {
return;
}
imageViewer.value.channel = props.channel;
imageViewer.value.link = props.link;
};
const onMoreClick = () => {
isContentShown.value = !isContentShown.value;
props.keepScrollPosition();
};
const updateShownState = () => {
// User has manually toggled the preview, do not apply default
if (props.link.shown !== null) {
return;
}
let defaultState = false;
switch (props.link.type) {
case "error":
// Collapse all errors by default unless its a message about image being too big
if (props.link.error === "image-too-big") {
defaultState = store.state.settings.media;
}
break;
case "link":
defaultState = store.state.settings.links;
break;
default:
defaultState = store.state.settings.media;
}
props.link.shown = defaultState;
};
updateShownState();
watch(
() => props.link.type,
() => {
updateShownState();
onPreviewUpdate();
}
);
onMounted(() => {
eventbus.on("resize", handleResize);
onPreviewUpdate();
});
onBeforeUnmount(() => {
eventbus.off("resize", handleResize);
});
onUnmounted(() => {
// Let this preview go through load/canplay events again,
// Otherwise the browser can cause a resize on video elements
props.link.sourceLoaded = false;
});
return {
moreButtonLabel,
imageMaxSize,
onThumbnailClick,
onThumbnailError,
onMoreClick,
onPreviewReady,
onPreviewUpdate,
showMoreButton,
isContentShown,
content,
container,
};
},
});
</script>

View file

@ -0,0 +1,22 @@
<template>
<span class="preview-size">({{ previewSize }})</span>
</template>
<script lang="ts">
import {defineComponent} from "vue";
import friendlysize from "../js/helpers/friendlysize";
export default defineComponent({
name: "LinkPreviewFileSize",
props: {
size: {type: Number, required: true},
},
setup(props) {
const previewSize = friendlysize(props.size);
return {
previewSize,
};
},
});
</script>

View file

@ -0,0 +1,37 @@
<template>
<button
v-if="link.type !== 'loading'"
:class="['toggle-button', 'toggle-preview', {opened: link.shown}]"
:aria-label="ariaLabel"
@click="onClick"
/>
</template>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import {ClientMessage, ClientLinkPreview} from "../js/types";
export default defineComponent({
name: "LinkPreviewToggle",
props: {
link: {type: Object as PropType<ClientLinkPreview>, required: true},
message: {type: Object as PropType<ClientMessage>, required: true},
},
emits: ["toggle-link-preview"],
setup(props, {emit}) {
const ariaLabel = computed(() => {
return props.link.shown ? "Collapse preview" : "Expand preview";
});
const onClick = () => {
props.link.shown = !props.link.shown;
emit("toggle-link-preview", props.link, props.message);
};
return {
ariaLabel,
onClick,
};
},
});
</script>

View file

@ -0,0 +1,247 @@
<template>
<div
v-if="isOpen"
id="mentions-popup-container"
@click="containerClick"
@contextmenu="containerClick"
>
<div class="mentions-popup">
<div class="mentions-popup-title">
Recent mentions
<button
v-if="resolvedMessages.length"
class="btn dismiss-all-mentions"
@click="dismissAllMentions()"
>
Dismiss all
</button>
</div>
<template v-if="resolvedMessages.length === 0">
<p v-if="isLoading">Loading</p>
<p v-else>You have no recent mentions.</p>
</template>
<template v-for="message in resolvedMessages" v-else :key="message.msgId">
<div :class="['msg', message.type]">
<div class="mentions-info">
<div>
<span class="from">
<Username :user="(message.from as any)" />
<template v-if="message.channel">
in {{ message.channel.channel.name }} on
{{ message.channel.network.name }}
</template>
<template v-else> in unknown channel </template> </span
>{{ ` ` }}
<span :title="message.localetime" class="time">
{{ messageTime(message.time.toString()) }}
</span>
</div>
<div>
<span
class="close-tooltip tooltipped tooltipped-w"
aria-label="Dismiss this mention"
>
<button
class="msg-dismiss"
aria-label="Dismiss this mention"
@click="dismissMention(message)"
></button>
</span>
</div>
</div>
<div class="content" dir="auto">
<ParsedMessage :message="(message as any)" />
</div>
</div>
</template>
</div>
</div>
</template>
<style>
#mentions-popup-container {
z-index: 8;
}
.mentions-popup {
background-color: var(--window-bg-color);
position: absolute;
width: 400px;
right: 80px;
top: 55px;
max-height: 400px;
overflow-y: auto;
z-index: 2;
padding: 10px;
}
.mentions-popup > .mentions-popup-title {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
font-size: 20px;
}
.mentions-popup .mentions-info {
display: flex;
justify-content: space-between;
}
.mentions-popup .msg {
margin-bottom: 15px;
user-select: text;
}
.mentions-popup .msg:last-child {
margin-bottom: 0;
}
.mentions-popup .msg .content {
background-color: var(--highlight-bg-color);
border-radius: 5px;
padding: 6px;
margin-top: 2px;
word-wrap: break-word;
word-break: break-word; /* Webkit-specific */
}
.mentions-popup .msg-dismiss::before {
font-size: 20px;
font-weight: normal;
display: inline-block;
line-height: 16px;
text-align: center;
content: "×";
}
.mentions-popup .msg-dismiss:hover {
color: var(--link-color);
}
.mentions-popup .dismiss-all-mentions {
margin: 0;
padding: 4px 6px;
}
@media (min-height: 500px) {
.mentions-popup {
max-height: 60vh;
}
}
@media (max-width: 768px) {
.mentions-popup {
border-radius: 0;
border: 0;
box-shadow: none;
width: 100%;
max-height: none;
right: 0;
left: 0;
bottom: 0;
top: 45px; /* header height */
}
}
</style>
<script lang="ts">
import Username from "./Username.vue";
import ParsedMessage from "./ParsedMessage.vue";
import socket from "../js/socket";
import eventbus from "../js/eventbus";
import localetime from "../js/helpers/localetime";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import {computed, watch, defineComponent, ref, onMounted, onUnmounted} from "vue";
import {useStore} from "../js/store";
import {ClientMention} from "../js/types";
dayjs.extend(relativeTime);
export default defineComponent({
name: "Mentions",
components: {
Username,
ParsedMessage,
},
setup() {
const store = useStore();
const isOpen = ref(false);
const isLoading = ref(false);
const resolvedMessages = computed(() => {
const messages = store.state.mentions.slice().reverse();
for (const message of messages) {
message.localetime = localetime(message.time);
message.channel = store.getters.findChannel(message.chanId);
}
return messages.filter((message) => !message.channel?.channel.muted);
});
watch(
() => store.state.mentions,
() => {
isLoading.value = false;
}
);
const messageTime = (time: string) => {
return dayjs(time).fromNow();
};
const dismissMention = (message: ClientMention) => {
store.state.mentions.splice(
store.state.mentions.findIndex((m) => m.msgId === message.msgId),
1
);
socket.emit("mentions:dismiss", message.msgId);
};
const dismissAllMentions = () => {
store.state.mentions = [];
socket.emit("mentions:dismiss_all");
};
const containerClick = (event: Event) => {
if (event.currentTarget === event.target) {
isOpen.value = false;
}
};
const togglePopup = () => {
isOpen.value = !isOpen.value;
if (isOpen.value) {
isLoading.value = true;
socket.emit("mentions:get");
}
};
const closePopup = () => {
isOpen.value = false;
};
onMounted(() => {
eventbus.on("mentions:toggle", togglePopup);
eventbus.on("escapekey", closePopup);
});
onUnmounted(() => {
eventbus.off("mentions:toggle", togglePopup);
eventbus.off("escapekey", closePopup);
});
return {
isOpen,
isLoading,
resolvedMessages,
messageTime,
dismissMention,
dismissAllMentions,
containerClick,
};
},
});
</script>

View file

@ -0,0 +1,173 @@
<template>
<div
:id="'msg-' + message.id"
:class="[
'msg',
{
self: message.self,
highlight: message.highlight || focused,
'previous-source': isPreviousSource,
},
]"
:data-type="message.type"
:data-command="message.command"
:data-from="message.from && message.from.nick"
>
<span
aria-hidden="true"
:aria-label="messageTimeLocale"
class="time tooltipped tooltipped-e"
>{{ `${messageTime}&#32;` }}
</span>
<template v-if="message.type === 'unhandled'">
<span class="from">[{{ message.command }}]</span>
<span class="content">
<span v-for="(param, id) in message.params" :key="id">{{
`&#32;${param}&#32;`
}}</span>
</span>
</template>
<template v-else-if="isAction()">
<span class="from"><span class="only-copy">***&nbsp;</span></span>
<component :is="messageComponent" :network="network" :message="message" />
</template>
<template v-else-if="message.type === 'action'">
<span class="from"><span class="only-copy">*&nbsp;</span></span>
<span class="content" dir="auto">
<Username
:user="message.from"
:network="network"
:channel="channel"
dir="auto"
/>&#32;<ParsedMessage :message="message" />
<LinkPreview
v-for="preview in message.previews"
:key="preview.link"
:keep-scroll-position="keepScrollPosition"
:link="preview"
:channel="channel"
/>
</span>
</template>
<template v-else>
<span v-if="message.type === 'message'" class="from">
<template v-if="message.from && message.from.nick">
<span class="only-copy" aria-hidden="true">&lt;</span>
<Username :user="message.from" :network="network" :channel="channel" />
<span class="only-copy" aria-hidden="true">&gt;&nbsp;</span>
</template>
</span>
<span v-else-if="message.type === 'plugin'" class="from">
<template v-if="message.from && message.from.nick">
<span class="only-copy" aria-hidden="true">[</span>
{{ message.from.nick }}
<span class="only-copy" aria-hidden="true">]&nbsp;</span>
</template>
</span>
<span v-else class="from">
<template v-if="message.from && message.from.nick">
<span class="only-copy" aria-hidden="true">-</span>
<Username :user="message.from" :network="network" :channel="channel" />
<span class="only-copy" aria-hidden="true">-&nbsp;</span>
</template>
</span>
<span class="content" dir="auto">
<span
v-if="message.showInActive"
aria-label="This message was shown in your active channel"
class="msg-shown-in-active tooltipped tooltipped-e"
><span></span
></span>
<span
v-if="message.statusmsgGroup"
:aria-label="`This message was only shown to users with ${message.statusmsgGroup} mode`"
class="msg-statusmsg tooltipped tooltipped-e"
><span>{{ message.statusmsgGroup }}</span></span
>
<ParsedMessage :network="network" :message="message" />
<LinkPreview
v-for="preview in message.previews"
:key="preview.link"
:keep-scroll-position="keepScrollPosition"
:link="preview"
:channel="channel"
/>
</span>
</template>
</div>
</template>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import dayjs from "dayjs";
import constants from "../js/constants";
import localetime from "../js/helpers/localetime";
import Username from "./Username.vue";
import LinkPreview from "./LinkPreview.vue";
import ParsedMessage from "./ParsedMessage.vue";
import MessageTypes from "./MessageTypes";
import type {ClientChan, ClientMessage, ClientNetwork} from "../js/types";
import {useStore} from "../js/store";
MessageTypes.ParsedMessage = ParsedMessage;
MessageTypes.LinkPreview = LinkPreview;
MessageTypes.Username = Username;
export default defineComponent({
name: "Message",
components: MessageTypes,
props: {
message: {type: Object as PropType<ClientMessage>, required: true},
channel: {type: Object as PropType<ClientChan>, required: false},
network: {type: Object as PropType<ClientNetwork>, required: true},
keepScrollPosition: Function as PropType<() => void>,
isPreviousSource: Boolean,
focused: Boolean,
},
setup(props) {
const store = useStore();
const timeFormat = computed(() => {
let format: keyof typeof constants.timeFormats;
if (store.state.settings.use12hClock) {
format = store.state.settings.showSeconds ? "msg12hWithSeconds" : "msg12h";
} else {
format = store.state.settings.showSeconds ? "msgWithSeconds" : "msgDefault";
}
return constants.timeFormats[format];
});
const messageTime = computed(() => {
return dayjs(props.message.time).format(timeFormat.value);
});
const messageTimeLocale = computed(() => {
return localetime(props.message.time);
});
const messageComponent = computed(() => {
return "message-" + (props.message.type || "invalid"); // TODO: force existence of type in sharedmsg
});
const isAction = () => {
if (!props.message.type) {
return false;
}
return typeof MessageTypes["message-" + props.message.type] !== "undefined";
};
return {
timeFormat,
messageTime,
messageTimeLocale,
messageComponent,
isAction,
};
},
});
</script>

View file

@ -0,0 +1,165 @@
<template>
<div :class="['msg', {closed: isCollapsed}]" data-type="condensed">
<div class="condensed-summary">
<span class="time" />
<span class="from" />
<span class="content" @click="onCollapseClick"
>{{ condensedText
}}<button class="toggle-button" aria-label="Toggle status messages"
/></span>
</div>
<Message
v-for="message in messages"
:key="message.id"
:network="network"
:message="message"
/>
</div>
</template>
<script lang="ts">
import {computed, defineComponent, PropType, ref} from "vue";
import {condensedTypes} from "../../shared/irc";
import {MessageType} from "../../shared/types/msg";
import {ClientMessage, ClientNetwork} from "../js/types";
import Message from "./Message.vue";
export default defineComponent({
name: "MessageCondensed",
components: {
Message,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
messages: {
type: Array as PropType<ClientMessage[]>,
required: true,
},
keepScrollPosition: {
type: Function as PropType<() => void>,
required: true,
},
focused: Boolean,
},
setup(props) {
const isCollapsed = ref(true);
const onCollapseClick = () => {
isCollapsed.value = !isCollapsed.value;
props.keepScrollPosition();
};
const condensedText = computed(() => {
const obj: Record<string, number> = {};
condensedTypes.forEach((type) => {
obj[type] = 0;
});
for (const message of props.messages) {
// special case since one MODE message can change multiple modes
if (message.type === MessageType.MODE) {
// syntax: +vv-t maybe-some targets
// we want the number of mode changes in the message, so count the
// number of chars other than + and - before the first space
const text = message.text ? message.text : "";
const modeChangesCount = text
.split(" ")[0]
.split("")
.filter((char) => char !== "+" && char !== "-").length;
obj[message.type] += modeChangesCount;
} else {
if (!message.type) {
/* eslint-disable no-console */
console.log(`empty message type, this should not happen: ${message.id}`);
continue;
}
obj[message.type]++;
}
}
// Count quits as parts in condensed messages to reduce information density
obj.part += obj.quit;
const strings: string[] = [];
condensedTypes.forEach((type) => {
if (obj[type]) {
switch (type) {
case "chghost":
strings.push(
String(obj[type]) +
(obj[type] > 1
? " users have changed hostname"
: " user has changed hostname")
);
break;
case "join":
strings.push(
String(obj[type]) +
(obj[type] > 1 ? " users have joined" : " user has joined")
);
break;
case "part":
strings.push(
String(obj[type]) +
(obj[type] > 1 ? " users have left" : " user has left")
);
break;
case "nick":
strings.push(
String(obj[type]) +
(obj[type] > 1
? " users have changed nick"
: " user has changed nick")
);
break;
case "kick":
strings.push(
String(obj[type]) +
(obj[type] > 1 ? " users were kicked" : " user was kicked")
);
break;
case "mode":
strings.push(
String(obj[type]) +
(obj[type] > 1 ? " modes were set" : " mode was set")
);
break;
case "away":
strings.push(
"marked away " +
(obj[type] > 1 ? String(obj[type]) + " times" : "once")
);
break;
case "back":
strings.push(
"marked back " +
(obj[type] > 1 ? String(obj[type]) + " times" : "once")
);
break;
}
}
});
if (strings.length) {
let text = strings.pop();
if (strings.length) {
text = strings.join(", ") + ", and " + text!;
}
return text;
}
return "";
});
return {
isCollapsed,
condensedText,
onCollapseClick,
};
},
});
</script>

View file

@ -0,0 +1,440 @@
<template>
<div ref="chat" class="chat" tabindex="-1">
<div v-show="channel.moreHistoryAvailable" class="show-more">
<button
ref="loadMoreButton"
:disabled="channel.historyLoading || !store.state.isConnected"
class="btn"
@click="onShowMoreClick"
>
<span v-if="channel.historyLoading">Loading</span>
<span v-else>Show older messages</span>
</button>
</div>
<div
class="messages"
role="log"
aria-live="polite"
aria-relevant="additions"
@copy="onCopy"
>
<template v-for="(message, id) in condensedMessages">
<DateMarker
v-if="shouldDisplayDateMarker(message, id)"
:key="message.id + '-date'"
:message="message as any"
:focused="message.id === focused"
/>
<div
v-if="shouldDisplayUnreadMarker(Number(message.id))"
:key="message.id + '-unread'"
class="unread-marker"
>
<span class="unread-marker-text" />
</div>
<MessageCondensed
v-if="message.type === 'condensed'"
:key="message.messages[0].id"
:network="network"
:keep-scroll-position="keepScrollPosition"
:messages="message.messages"
:focused="message.id === focused"
/>
<Message
v-else
:key="message.id"
:channel="channel"
:network="network"
:message="message"
:keep-scroll-position="keepScrollPosition"
:is-previous-source="isPreviousSource(message, id)"
:focused="message.id === focused"
@toggle-link-preview="onLinkPreviewToggle"
/>
</template>
</div>
</div>
</template>
<script lang="ts">
import {condensedTypes} from "../../shared/irc";
import {ChanType} from "../../shared/types/chan";
import {MessageType, SharedMsg} from "../../shared/types/msg";
import eventbus from "../js/eventbus";
import clipboard from "../js/clipboard";
import socket from "../js/socket";
import Message from "./Message.vue";
import MessageCondensed from "./MessageCondensed.vue";
import DateMarker from "./DateMarker.vue";
import {
computed,
defineComponent,
nextTick,
onBeforeUnmount,
onBeforeUpdate,
onMounted,
onUnmounted,
PropType,
ref,
watch,
} from "vue";
import {useStore} from "../js/store";
import {ClientChan, ClientMessage, ClientNetwork, ClientLinkPreview} from "../js/types";
type CondensedMessageContainer = {
type: "condensed";
time: Date;
messages: ClientMessage[];
id?: number;
};
// TODO; move into component
let unreadMarkerShown = false;
export default defineComponent({
name: "MessageList",
components: {
Message,
MessageCondensed,
DateMarker,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
focused: Number,
},
setup(props) {
const store = useStore();
const chat = ref<HTMLDivElement | null>(null);
const loadMoreButton = ref<HTMLButtonElement | null>(null);
const historyObserver = ref<IntersectionObserver | null>(null);
const skipNextScrollEvent = ref(false);
const isWaitingForNextTick = ref(false);
const jumpToBottom = () => {
skipNextScrollEvent.value = true;
props.channel.scrolledToBottom = true;
const el = chat.value;
if (el) {
el.scrollTop = el.scrollHeight;
}
};
const onShowMoreClick = () => {
if (!store.state.isConnected) {
return;
}
let lastMessage = -1;
// Find the id of first message that isn't showInActive
// If showInActive is set, this message is actually in another channel
for (const message of props.channel.messages) {
if (!message.showInActive) {
lastMessage = message.id;
break;
}
}
props.channel.historyLoading = true;
socket.emit("more", {
target: props.channel.id,
lastId: lastMessage,
condensed: store.state.settings.statusMessages !== "shown",
});
};
const onLoadButtonObserved = (entries: IntersectionObserverEntry[]) => {
entries.forEach((entry) => {
if (!entry.isIntersecting) {
return;
}
onShowMoreClick();
});
};
nextTick(() => {
if (!chat.value) {
return;
}
if (window.IntersectionObserver) {
historyObserver.value = new window.IntersectionObserver(onLoadButtonObserved, {
root: chat.value,
});
}
jumpToBottom();
}).catch((e) => {
// eslint-disable-next-line no-console
console.error("Error in new IntersectionObserver", e);
});
const condensedMessages = computed(() => {
if (props.channel.type !== ChanType.CHANNEL && props.channel.type !== ChanType.QUERY) {
return props.channel.messages;
}
// If actions are hidden, just return a message list with them excluded
if (store.state.settings.statusMessages === "hidden") {
return props.channel.messages.filter(
(message) => !condensedTypes.has(message.type || "")
);
}
// If actions are not condensed, just return raw message list
if (store.state.settings.statusMessages !== "condensed") {
return props.channel.messages;
}
let lastCondensedContainer: CondensedMessageContainer | null = null;
const condensed: (ClientMessage | CondensedMessageContainer)[] = [];
for (const message of props.channel.messages) {
// If this message is not condensable, or its an action affecting our user,
// then just append the message to container and be done with it
if (message.self || message.highlight || !condensedTypes.has(message.type || "")) {
lastCondensedContainer = null;
condensed.push(message);
continue;
}
if (!lastCondensedContainer) {
lastCondensedContainer = {
time: message.time,
type: "condensed",
messages: [],
};
condensed.push(lastCondensedContainer);
}
lastCondensedContainer!.messages.push(message);
// Set id of the condensed container to last message id,
// which is required for the unread marker to work correctly
lastCondensedContainer!.id = message.id;
// If this message is the unread boundary, create a split condensed container
if (message.id === props.channel.firstUnread) {
lastCondensedContainer = null;
}
}
return condensed.map((message) => {
// Skip condensing single messages, it doesn't save any
// space but makes useful information harder to see
if (message.type === "condensed" && message.messages.length === 1) {
return message.messages[0];
}
return message;
});
});
const shouldDisplayDateMarker = (
message: SharedMsg | CondensedMessageContainer,
id: number
) => {
const previousMessage = condensedMessages.value[id - 1];
if (!previousMessage) {
return true;
}
const oldDate = new Date(previousMessage.time);
const newDate = new Date(message.time);
return (
oldDate.getDate() !== newDate.getDate() ||
oldDate.getMonth() !== newDate.getMonth() ||
oldDate.getFullYear() !== newDate.getFullYear()
);
};
const shouldDisplayUnreadMarker = (id: number) => {
if (!unreadMarkerShown && id > props.channel.firstUnread) {
unreadMarkerShown = true;
return true;
}
return false;
};
const isPreviousSource = (currentMessage: ClientMessage, id: number) => {
const previousMessage = condensedMessages.value[id - 1];
return (
previousMessage &&
currentMessage.type === MessageType.MESSAGE &&
previousMessage.type === MessageType.MESSAGE &&
currentMessage.from &&
previousMessage.from &&
currentMessage.from.nick === previousMessage.from.nick
);
};
const onCopy = () => {
if (chat.value) {
clipboard(chat.value);
}
};
const keepScrollPosition = async () => {
// If we are already waiting for the next tick to force scroll position,
// we have no reason to perform more checks and set it again in the next tick
if (isWaitingForNextTick.value) {
return;
}
const el = chat.value;
if (!el) {
return;
}
if (!props.channel.scrolledToBottom) {
if (props.channel.historyLoading) {
const heightOld = el.scrollHeight - el.scrollTop;
isWaitingForNextTick.value = true;
await nextTick();
isWaitingForNextTick.value = false;
skipNextScrollEvent.value = true;
el.scrollTop = el.scrollHeight - heightOld;
}
return;
}
isWaitingForNextTick.value = true;
await nextTick();
isWaitingForNextTick.value = false;
jumpToBottom();
};
const onLinkPreviewToggle = async (preview: ClientLinkPreview, message: ClientMessage) => {
await keepScrollPosition();
// Tell the server we're toggling so it remembers at page reload
socket.emit("msg:preview:toggle", {
target: props.channel.id,
msgId: message.id,
link: preview.link,
shown: preview.shown,
});
};
const handleScroll = () => {
// Setting scrollTop also triggers scroll event
// We don't want to perform calculations for that
if (skipNextScrollEvent.value) {
skipNextScrollEvent.value = false;
return;
}
const el = chat.value;
if (!el) {
return;
}
props.channel.scrolledToBottom = el.scrollHeight - el.scrollTop - el.offsetHeight <= 30;
};
const handleResize = () => {
// Keep message list scrolled to bottom on resize
if (props.channel.scrolledToBottom) {
jumpToBottom();
}
};
onMounted(() => {
chat.value?.addEventListener("scroll", handleScroll, {passive: true});
eventbus.on("resize", handleResize);
void nextTick(() => {
if (historyObserver.value && loadMoreButton.value) {
historyObserver.value.observe(loadMoreButton.value);
}
});
});
watch(
() => props.channel.id,
() => {
props.channel.scrolledToBottom = true;
// Re-add the intersection observer to trigger the check again on channel switch
// Otherwise if last channel had the button visible, switching to a new channel won't trigger the history
if (historyObserver.value && loadMoreButton.value) {
historyObserver.value.unobserve(loadMoreButton.value);
historyObserver.value.observe(loadMoreButton.value);
}
}
);
watch(
() => props.channel.messages,
async () => {
await keepScrollPosition();
},
{
deep: true,
}
);
watch(
() => props.channel.pendingMessage,
async () => {
// Keep the scroll stuck when input gets resized while typing
await keepScrollPosition();
}
);
onBeforeUpdate(() => {
unreadMarkerShown = false;
});
onBeforeUnmount(() => {
eventbus.off("resize", handleResize);
chat.value?.removeEventListener("scroll", handleScroll);
});
onUnmounted(() => {
if (historyObserver.value) {
historyObserver.value.disconnect();
}
});
return {
chat,
store,
onShowMoreClick,
loadMoreButton,
onCopy,
condensedMessages,
shouldDisplayDateMarker,
shouldDisplayUnreadMarker,
keepScrollPosition,
isPreviousSource,
jumpToBottom,
onLinkPreviewToggle,
};
},
});
</script>

View file

@ -0,0 +1,175 @@
<template>
<form :class="['message-search', {opened: searchOpened}]" @submit.prevent="searchMessages">
<div class="input-wrapper">
<input
ref="searchInputField"
v-model="searchInput"
type="search"
name="search"
class="input"
placeholder="Search messages…"
@blur="closeSearch"
@keyup.esc="closeSearch"
/>
</div>
<button
v-if="!onSearchPage"
class="search"
type="button"
aria-label="Search messages in this channel"
@mousedown.prevent="toggleSearch"
/>
</form>
</template>
<style>
form.message-search {
display: flex;
}
form.message-search .input-wrapper {
display: flex;
}
form.message-search input {
width: 100%;
height: auto !important;
margin: 7px 0;
border: 0;
color: inherit;
background-color: #fafafa;
appearance: none;
}
form.message-search input::placeholder {
color: rgba(0, 0, 0, 0.35);
}
@media (min-width: 480px) {
form.message-search input {
min-width: 140px;
}
form.message-search input:focus {
min-width: 220px;
}
}
form.message-search .input-wrapper {
position: absolute;
top: 45px;
left: 0;
right: 0;
z-index: 1;
height: 0;
overflow: hidden;
background: var(--window-bg-color);
}
form.message-search .input-wrapper input {
margin: 7px;
}
form.message-search.opened .input-wrapper {
height: 50px;
}
#chat form.message-search button {
display: flex;
color: #607992;
}
</style>
<script lang="ts">
import {computed, defineComponent, onMounted, PropType, ref, watch} from "vue";
import {useRoute, useRouter} from "vue-router";
import eventbus from "../js/eventbus";
import {ClientNetwork, ClientChan} from "../js/types";
export default defineComponent({
name: "MessageSearchForm",
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup(props) {
const searchOpened = ref(false);
const searchInput = ref("");
const router = useRouter();
const route = useRoute();
const searchInputField = ref<HTMLInputElement | null>(null);
const onSearchPage = computed(() => {
return route.name === "SearchResults";
});
watch(route, (newValue) => {
if (newValue.query.q) {
searchInput.value = String(newValue.query.q);
}
});
onMounted(() => {
searchInput.value = String(route.query.q || "");
searchOpened.value = onSearchPage.value;
if (searchInputField.value && !searchInput.value && searchOpened.value) {
searchInputField.value.focus();
}
});
const closeSearch = () => {
if (!onSearchPage.value) {
searchInput.value = "";
searchOpened.value = false;
}
};
const toggleSearch = () => {
if (searchOpened.value) {
searchInputField.value?.blur();
return;
}
searchOpened.value = true;
searchInputField.value?.focus();
};
const searchMessages = (event: Event) => {
event.preventDefault();
if (!searchInput.value) {
return;
}
router
.push({
name: "SearchResults",
params: {
id: props.channel.id,
},
query: {
q: searchInput.value,
},
})
.catch((err) => {
if (err.name === "NavigationDuplicated") {
// Search for the same query again
eventbus.emit("re-search");
}
});
};
return {
searchOpened,
searchInput,
searchInputField,
closeSearch,
toggleSearch,
searchMessages,
onSearchPage,
};
},
});
</script>

View file

@ -0,0 +1,35 @@
<template>
<span class="content">
<ParsedMessage v-if="message.self" :network="network" :message="message" />
<template v-else>
<Username :user="message.from" />
is away
<i class="away-message">(<ParsedMessage :network="network" :message="message" />)</i>
</template>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import type {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeAway",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,34 @@
<template>
<span class="content">
<ParsedMessage v-if="message.self" :network="network" :message="message" />
<template v-else>
<Username :user="message.from" />
is back
</template>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeBack",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,38 @@
<template>
<span class="content">
<Username :user="message.from" />
has changed
<span v-if="message.new_ident"
>username to <b>{{ message.new_ident }}</b></span
>
<span v-if="message.new_host"
>hostname to
<i class="hostmask"><ParsedMessage :network="network" :text="message.new_host" /></i
></span>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeChangeHost",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,31 @@
<template>
<span class="content">
<Username :user="message.from" />
{{ `&#32;` }}<span class="ctcp-message"><ParsedMessage :text="message.ctcpMessage" /></span>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeCTCP",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,32 @@
<template>
<span class="content">
<Username :user="message.from" />
sent a <abbr title="Client-to-client protocol">CTCP</abbr> request:
<span class="ctcp-message"><ParsedMessage :text="message.ctcpMessage" /></span>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeRequestCTCP",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,77 @@
<template>
<span class="content">
<ParsedMessage :network="network" :message="message" :text="errorMessage" />
</span>
</template>
<script lang="ts">
import ParsedMessage from "../ParsedMessage.vue";
import {computed, defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
export default defineComponent({
name: "MessageTypeError",
components: {
ParsedMessage,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
setup(props) {
const errorMessage = computed(() => {
// TODO: enforce chan and nick fields so that we can get rid of that
const chan = props.message.channel || "!UNKNOWN_CHAN";
const nick = props.message.nick || "!UNKNOWN_NICK";
switch (props.message.error) {
case "bad_channel_key":
return `Cannot join ${chan} - Bad channel key.`;
case "banned_from_channel":
return `Cannot join ${chan} - You have been banned from the channel.`;
case "cannot_send_to_channel":
return `Cannot send to channel ${chan}`;
case "channel_is_full":
return `Cannot join ${chan} - Channel is full.`;
case "chanop_privs_needed":
return "Cannot perform action: You're not a channel operator.";
case "invite_only_channel":
return `Cannot join ${chan} - Channel is invite only.`;
case "no_such_nick":
return `User ${nick} hasn't logged in or does not exist.`;
case "not_on_channel":
return "Cannot perform action: You're not on the channel.";
case "password_mismatch":
return "Password mismatch.";
case "too_many_channels":
return `Cannot join ${chan} - You've already reached the maximum number of channels allowed.`;
case "unknown_command":
// TODO: not having message.command should never happen, so force existence
return `Unknown command: ${props.message.command || "!UNDEFINED_COMMAND_BUG"}`;
case "user_not_in_channel":
return `User ${nick} is not on the channel.`;
case "user_on_channel":
return `User ${nick} is already on the channel.`;
default:
if (props.message.reason) {
return `${props.message.reason} (${
props.message.error || "!UNDEFINED_ERR"
})`;
}
return props.message.error;
}
});
return {
errorMessage,
};
},
});
</script>

View file

@ -0,0 +1,11 @@
// This creates a version of `require()` in the context of the current
// directory, so we iterate over its content, which is a map statically built by
// Webpack.
// Second argument says it's recursive, third makes sure we only load templates.
const requireViews = require.context(".", false, /\.vue$/);
export default requireViews.keys().reduce((acc: Record<string, any>, path) => {
acc["message-" + path.substring(2, path.length - 4)] = requireViews(path).default;
return acc;
}, {});

View file

@ -0,0 +1,34 @@
<template>
<span class="content">
<Username :user="message.from" />
invited
<span v-if="message.invitedYou">you</span>
<Username v-else :user="message.target" />
to <ParsedMessage :network="network" :text="message.channel" />
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeInvite",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,38 @@
<template>
<span class="content">
<Username :user="message.from" />
<i class="hostmask">&#32;(<ParsedMessage :network="network" :text="message.hostmask" />)</i>
<template v-if="message.account">
<i class="account">&#32;[{{ message.account }}]</i>
</template>
<template v-if="message.gecos">
<i class="realname">&#32;({{ message.gecos }})</i>
</template>
has joined the channel
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeJoin",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,35 @@
<template>
<span class="content">
<Username :user="message.from" />
has kicked
<Username :user="message.target" />
<i v-if="message.text" class="part-reason"
>&#32;(<ParsedMessage :network="network" :message="message" />)</i
>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeKick",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,32 @@
<template>
<span class="content">
<Username :user="message.from" />
sets mode
<ParsedMessage :message="message" />
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeMode",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,24 @@
<template>
<span class="content">
Channel mode is <b>{{ message.text }}</b>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
export default defineComponent({
name: "MessageChannelMode",
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,24 @@
<template>
<span class="content">
Your user mode is <b>{{ message.raw_modes }}</b>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
export default defineComponent({
name: "MessageChannelMode",
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,49 @@
<template>
<span class="content">
<span class="text"><ParsedMessage :network="network" :text="cleanText" /></span>
</span>
</template>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
export default defineComponent({
name: "MessageTypeMonospaceBlock",
components: {
ParsedMessage,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
setup(props) {
const cleanText = computed(() => {
let lines = props.message.text.split("\n");
// If all non-empty lines of the MOTD start with a hyphen (which is common
// across MOTDs), remove all the leading hyphens.
if (lines.every((line) => line === "" || line[0] === "-")) {
lines = lines.map((line) => line.substring(2));
}
// Remove empty lines around the MOTD (but not within it)
return lines
.map((line) => line.replace(/\s*$/, ""))
.join("\n")
.replace(/^[\r\n]+|[\r\n]+$/g, "");
});
return {
cleanText,
};
},
});
</script>

View file

@ -0,0 +1,30 @@
<template>
<span class="content">
<Username :user="message.from" />
is now known as
<Username :user="{nick: message.new_nick, mode: message.from.mode}" />
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeNick",
components: {
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,35 @@
<template>
<span class="content">
<Username :user="message.from" />
<i class="hostmask"> (<ParsedMessage :network="network" :text="message.hostmask" />)</i> has
left the channel
<i v-if="message.text" class="part-reason"
>(<ParsedMessage :network="network" :message="message" />)</i
>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypePart",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,35 @@
<template>
<span class="content">
<Username :user="message.from" />
<i class="hostmask"> (<ParsedMessage :network="network" :text="message.hostmask" />)</i> has
quit
<i v-if="message.text" class="quit-reason"
>(<ParsedMessage :network="network" :message="message" />)</i
>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import type {ClientMessage, ClientNetwork} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeQuit",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,22 @@
<template>
<span class="content">{{ message.text }}</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
export default defineComponent({
name: "MessageTypeRaw",
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,36 @@
<template>
<span class="content">
<template v-if="message.from && message.from.nick"
><Username :user="message.from" /> has changed the topic to:
</template>
<template v-else>The topic is: </template>
<span v-if="message.text" class="new-topic"
><ParsedMessage :network="network" :message="message"
/></span>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import type {ClientMessage, ClientNetwork} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeTopic",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
});
</script>

View file

@ -0,0 +1,38 @@
<template>
<span class="content">
Topic set by
<Username :user="message.from" />
on {{ messageTimeLocale }}
</span>
</template>
<script lang="ts">
import localetime from "../../js/helpers/localetime";
import {computed, defineComponent, PropType} from "vue";
import {ClientNetwork, ClientMessage} from "../../js/types";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeTopicSetBy",
components: {
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
setup(props) {
const messageTimeLocale = computed(() => localetime(props.message.when));
return {
messageTimeLocale,
};
},
});
</script>

View file

@ -0,0 +1,143 @@
<template>
<span class="content">
<p>
<Username :user="{nick: message.whois.nick}" />
<span v-if="message.whois.whowas"> is offline, last information:</span>
</p>
<dl class="whois">
<template v-if="message.whois.account">
<dt>Logged in as:</dt>
<dd>{{ message.whois.account }}</dd>
</template>
<dt>Host mask:</dt>
<dd class="hostmask">
<ParsedMessage
:network="network"
:text="message.whois.ident + '@' + message.whois.hostname"
/>
</dd>
<template v-if="message.whois.actual_hostname">
<dt>Actual host:</dt>
<dd class="hostmask">
<a
:href="'https://ipinfo.io/' + message.whois.actual_ip"
target="_blank"
rel="noopener"
>{{ message.whois.actual_ip }}</a
>
<i v-if="message.whois.actual_hostname != message.whois.actual_ip">
({{ message.whois.actual_hostname }})</i
>
</dd>
</template>
<template v-if="message.whois.real_name">
<dt>Real name:</dt>
<dd><ParsedMessage :network="network" :text="message.whois.real_name" /></dd>
</template>
<template v-if="message.whois.registered_nick">
<dt>Registered nick:</dt>
<dd>{{ message.whois.registered_nick }}</dd>
</template>
<template v-if="message.whois.channels">
<dt>Channels:</dt>
<dd><ParsedMessage :network="network" :text="message.whois.channels" /></dd>
</template>
<template v-if="message.whois.modes">
<dt>Modes:</dt>
<dd>{{ message.whois.modes }}</dd>
</template>
<template v-if="message.whois.special">
<template v-for="special in message.whois.special" :key="special">
<dt>Special:</dt>
<dd>{{ special }}</dd>
</template>
</template>
<template v-if="message.whois.operator">
<dt>Operator:</dt>
<dd>{{ message.whois.operator }}</dd>
</template>
<template v-if="message.whois.helpop">
<dt>Available for help:</dt>
<dd>Yes</dd>
</template>
<template v-if="message.whois.bot">
<dt>Is a bot:</dt>
<dd>Yes</dd>
</template>
<template v-if="message.whois.away">
<dt>Away:</dt>
<dd><ParsedMessage :network="network" :text="message.whois.away" /></dd>
</template>
<template v-if="message.whois.secure">
<dt>Secure connection:</dt>
<dd>Yes</dd>
</template>
<template v-if="message.whois.certfp">
<dt>Certificate:</dt>
<dd>{{ message.whois.certfp }}</dd>
</template>
<template v-if="message.whois.server">
<dt>Connected to:</dt>
<dd>
{{ message.whois.server }} <i>({{ message.whois.server_info }})</i>
</dd>
</template>
<template v-if="message.whois.logonTime">
<dt>Connected at:</dt>
<dd>{{ localetime(message.whois.logonTime) }}</dd>
</template>
<template v-if="message.whois.idle">
<dt>Idle since:</dt>
<dd>{{ localetime(message.whois.idleTime) }}</dd>
</template>
</dl>
</span>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import localetime from "../../js/helpers/localetime";
import {ClientNetwork, ClientMessage} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
import Username from "../Username.vue";
export default defineComponent({
name: "MessageTypeWhois",
components: {
ParsedMessage,
Username,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
message: {
type: Object as PropType<ClientMessage>,
required: true,
},
},
setup() {
return {
localetime: (date: Date) => localetime(date),
};
},
});
</script>

View file

@ -0,0 +1,572 @@
<template>
<div id="connect" class="window" role="tabpanel" aria-label="Connect">
<div class="header">
<SidebarToggle />
</div>
<form class="container" method="post" action="" @submit.prevent="onSubmit">
<h1 class="title">
<template v-if="defaults.uuid">
<input v-model="defaults.uuid" type="hidden" name="uuid" />
Edit {{ defaults.name }}
</template>
<template v-else>
Connect
<template
v-if="config?.lockNetwork && store?.state.serverConfiguration?.public"
>
to {{ defaults.name }}
</template>
</template>
</h1>
<template v-if="!config?.lockNetwork">
<h2>Network settings</h2>
<div class="connect-row">
<label for="connect:name">Name</label>
<input
id="connect:name"
v-model.trim="defaults.name"
class="input"
name="name"
maxlength="100"
/>
</div>
<div class="connect-row">
<label for="connect:host">Server</label>
<div class="input-wrap">
<input
id="connect:host"
v-model.trim="defaults.host"
class="input"
name="host"
aria-label="Server address"
maxlength="255"
required
/>
<span id="connect:portseparator">:</span>
<input
id="connect:port"
v-model="defaults.port"
class="input"
type="number"
min="1"
max="65535"
name="port"
aria-label="Server port"
/>
</div>
</div>
<div class="connect-row">
<label for="connect:password">Password</label>
<RevealPassword
v-slot:default="slotProps"
class="input-wrap password-container"
>
<input
id="connect:password"
v-model="defaults.password"
class="input"
:type="slotProps.isVisible ? 'text' : 'password'"
placeholder="Server password (optional)"
name="password"
maxlength="300"
/>
</RevealPassword>
</div>
<div class="connect-row">
<label></label>
<div class="input-wrap">
<label class="tls">
<input
v-model="defaults.tls"
type="checkbox"
name="tls"
:disabled="defaults.hasSTSPolicy"
/>
Use secure connection (TLS)
<span
v-if="defaults.hasSTSPolicy"
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="This network has a strict transport security policy, you will be unable to disable TLS"
>🔒 STS</span
>
</label>
<label class="tls">
<input
v-model="defaults.rejectUnauthorized"
type="checkbox"
name="rejectUnauthorized"
/>
Only allow trusted certificates
</label>
</div>
</div>
<h2>Proxy Settings</h2>
<div class="connect-row">
<label></label>
<div class="input-wrap">
<label for="connect:proxyEnabled">
<input
id="connect:proxyEnabled"
v-model="defaults.proxyEnabled"
type="checkbox"
name="proxyEnabled"
/>
Enable Proxy
</label>
</div>
</div>
<template v-if="defaults.proxyEnabled">
<div class="connect-row">
<label for="connect:proxyHost">SOCKS Address</label>
<div class="input-wrap">
<input
id="connect:proxyHost"
v-model.trim="defaults.proxyHost"
class="input"
name="proxyHost"
aria-label="Proxy host"
maxlength="255"
/>
<span id="connect:proxyPortSeparator">:</span>
<input
id="connect:proxyPort"
v-model="defaults.proxyPort"
class="input"
type="number"
min="1"
max="65535"
name="proxyPort"
aria-label="SOCKS port"
/>
</div>
</div>
<div class="connect-row">
<label for="connect:proxyUsername">Proxy username</label>
<input
id="connect:proxyUsername"
ref="proxyUsernameInput"
v-model.trim="defaults.proxyUsername"
class="input username"
name="proxyUsername"
maxlength="100"
placeholder="Proxy username"
/>
</div>
<div class="connect-row">
<label for="connect:proxyPassword">Proxy password</label>
<RevealPassword
v-slot:default="slotProps"
class="input-wrap password-container"
>
<input
id="connect:proxyPassword"
ref="proxyPassword"
v-model="defaults.proxyPassword"
class="input"
:type="slotProps.isVisible ? 'text' : 'password'"
placeholder="Proxy password"
name="proxyPassword"
maxlength="300"
/>
</RevealPassword>
</div>
</template>
</template>
<template v-else-if="config.lockNetwork && !store.state.serverConfiguration?.public">
<h2>Network settings</h2>
<div class="connect-row">
<label for="connect:name">Name</label>
<input
id="connect:name"
v-model.trim="defaults.name"
class="input"
name="name"
maxlength="100"
/>
</div>
<div class="connect-row">
<label for="connect:password">Password</label>
<RevealPassword
v-slot:default="slotProps"
class="input-wrap password-container"
>
<input
id="connect:password"
v-model="defaults.password"
class="input"
:type="slotProps.isVisible ? 'text' : 'password'"
placeholder="Server password (optional)"
name="password"
maxlength="300"
/>
</RevealPassword>
</div>
</template>
<h2>User preferences</h2>
<div class="connect-row">
<label for="connect:nick">Nick</label>
<input
id="connect:nick"
v-model="defaults.nick"
class="input nick"
name="nick"
pattern="[^\s:!@]+"
maxlength="100"
required
@input="onNickChanged"
/>
</div>
<template v-if="!config?.useHexIp">
<div class="connect-row">
<label for="connect:username">Username</label>
<input
id="connect:username"
ref="usernameInput"
v-model.trim="defaults.username"
class="input username"
name="username"
maxlength="100"
/>
</div>
</template>
<div class="connect-row">
<label for="connect:realname">Real name</label>
<input
id="connect:realname"
v-model.trim="defaults.realname"
class="input"
name="realname"
maxlength="300"
/>
</div>
<div class="connect-row">
<label for="connect:leaveMessage">Leave message</label>
<input
id="connect:leaveMessage"
v-model.trim="defaults.leaveMessage"
autocomplete="off"
class="input"
name="leaveMessage"
placeholder="The Lounge - https://thelounge.chat"
/>
</div>
<template v-if="defaults.uuid && !store.state.serverConfiguration?.public">
<div class="connect-row">
<label for="connect:commands">
Commands
<span
class="tooltipped tooltipped-ne tooltipped-no-delay"
aria-label="One /command per line.
Each command will be executed in
the server tab on new connection"
>
<button class="extra-help" />
</span>
</label>
<textarea
id="connect:commands"
ref="commandsInput"
autocomplete="off"
:value="defaults.commands ? defaults.commands.join('\n') : ''"
class="input"
name="commands"
@input="resizeCommandsInput"
/>
</div>
</template>
<template v-else-if="!defaults.uuid">
<div class="connect-row">
<label for="connect:channels">Channels</label>
<input
id="connect:channels"
v-model.trim="defaults.join"
class="input"
name="join"
/>
</div>
</template>
<template v-if="store.state.serverConfiguration?.public">
<template v-if="config?.lockNetwork">
<div class="connect-row">
<label></label>
<div class="input-wrap">
<label class="tls">
<input v-model="displayPasswordField" type="checkbox" />
I have a password
</label>
</div>
</div>
<div v-if="displayPasswordField" class="connect-row">
<label for="connect:password">Password</label>
<RevealPassword
v-slot:default="slotProps"
class="input-wrap password-container"
>
<input
id="connect:password"
ref="publicPassword"
v-model="defaults.password"
class="input"
:type="slotProps.isVisible ? 'text' : 'password'"
placeholder="Server password (optional)"
name="password"
maxlength="300"
/>
</RevealPassword>
</div>
</template>
</template>
<template v-else>
<h2 id="label-auth">Authentication</h2>
<div class="connect-row connect-auth" role="group" aria-labelledby="label-auth">
<label class="opt">
<input
:checked="!defaults.sasl"
type="radio"
name="sasl"
value=""
@change="setSaslAuth('')"
/>
No authentication
</label>
<label class="opt">
<input
:checked="defaults.sasl === 'plain'"
type="radio"
name="sasl"
value="plain"
@change="setSaslAuth('plain')"
/>
Username + password (SASL PLAIN)
</label>
<label
v-if="!store.state.serverConfiguration?.public && defaults.tls"
class="opt"
>
<input
:checked="defaults.sasl === 'external'"
type="radio"
name="sasl"
value="external"
@change="setSaslAuth('external')"
/>
Client certificate (SASL EXTERNAL)
</label>
</div>
<template v-if="defaults.sasl === 'plain'">
<div class="connect-row">
<label for="connect:username">Account</label>
<input
id="connect:saslAccount"
v-model.trim="defaults.saslAccount"
class="input"
name="saslAccount"
maxlength="100"
required
/>
</div>
<div class="connect-row">
<label for="connect:password">Password</label>
<RevealPassword
v-slot:default="slotProps"
class="input-wrap password-container"
>
<input
id="connect:saslPassword"
v-model="defaults.saslPassword"
class="input"
:type="slotProps.isVisible ? 'text' : 'password'"
name="saslPassword"
maxlength="300"
required
/>
</RevealPassword>
</div>
</template>
<div v-else-if="defaults.sasl === 'external'" class="connect-sasl-external">
<p>The Lounge automatically generates and manages the client certificate.</p>
<p>
On the IRC server, you will need to tell the services to attach the
certificate fingerprint (certfp) to your account, for example:
</p>
<pre><code>/msg NickServ CERT ADD</code></pre>
</div>
</template>
<div>
<button type="submit" class="btn" :disabled="disabled ? true : false">
<template v-if="defaults.uuid">Save network</template>
<template v-else>Connect</template>
</button>
</div>
</form>
</div>
</template>
<style>
#connect .connect-auth {
display: block;
margin-bottom: 10px;
}
#connect .connect-auth .opt {
display: block;
width: 100%;
}
#connect .connect-auth input {
margin: 3px 10px 0 0;
}
#connect .connect-sasl-external {
padding: 10px;
border-radius: 2px;
background-color: #d9edf7;
color: #31708f;
}
#connect .connect-sasl-external pre {
margin: 0;
user-select: text;
}
</style>
<script lang="ts">
import RevealPassword from "./RevealPassword.vue";
import SidebarToggle from "./SidebarToggle.vue";
import {defineComponent, nextTick, PropType, ref, watch} from "vue";
import {useStore} from "../js/store";
import {ClientNetwork} from "../js/types";
export type NetworkFormDefaults = Partial<ClientNetwork> & {
join?: string;
};
export default defineComponent({
name: "NetworkForm",
components: {
RevealPassword,
SidebarToggle,
},
props: {
handleSubmit: {
type: Function as PropType<(network: ClientNetwork) => void>,
required: true,
},
defaults: {
type: Object as PropType<NetworkFormDefaults>,
required: true,
},
disabled: Boolean,
},
setup(props) {
const store = useStore();
const config = ref(store.state.serverConfiguration);
const previousUsername = ref(props.defaults?.username);
const displayPasswordField = ref(false);
const publicPassword = ref<HTMLInputElement | null>(null);
watch(displayPasswordField, (newValue) => {
if (newValue) {
void nextTick(() => {
publicPassword.value?.focus();
});
}
});
const commandsInput = ref<HTMLInputElement | null>(null);
const resizeCommandsInput = () => {
if (!commandsInput.value) {
return;
}
// Reset height first so it can down size
commandsInput.value.style.height = "";
// 2 pixels to account for the border
commandsInput.value.style.height = `${Math.ceil(
commandsInput.value.scrollHeight + 2
)}px`;
};
watch(
// eslint-disable-next-line
() => props.defaults?.commands,
() => {
void nextTick(() => {
resizeCommandsInput();
});
}
);
watch(
// eslint-disable-next-line
() => props.defaults?.tls,
(isSecureChecked) => {
const ports = [6667, 6697];
const newPort = isSecureChecked ? 0 : 1;
// If you disable TLS and current port is 6697,
// set it to 6667, and vice versa
if (props.defaults?.port === ports[newPort]) {
props.defaults.port = ports[1 - newPort];
}
}
);
const setSaslAuth = (type: string) => {
if (props.defaults) {
props.defaults.sasl = type;
}
};
const usernameInput = ref<HTMLInputElement | null>(null);
const onNickChanged = (event: Event) => {
if (!usernameInput.value) {
return;
}
const usernameRef = usernameInput.value;
if (!usernameRef.value || usernameRef.value === previousUsername.value) {
usernameRef.value = (event.target as HTMLInputElement)?.value;
}
previousUsername.value = (event.target as HTMLInputElement)?.value;
};
const onSubmit = (event: Event) => {
const formData = new FormData(event.target as HTMLFormElement);
const data: Partial<ClientNetwork> = {};
formData.forEach((value, key) => {
data[key] = value;
});
props.handleSubmit(data as ClientNetwork);
};
return {
store,
config,
displayPasswordField,
publicPassword,
commandsInput,
resizeCommandsInput,
setSaslAuth,
usernameInput,
onNickChanged,
onSubmit,
};
},
});
</script>

View file

@ -0,0 +1,576 @@
<template>
<div
v-if="store.state.networks.length === 0"
class="empty"
role="navigation"
aria-label="Network and Channel list"
>
You are not connected to any networks yet.
</div>
<div v-else ref="networklist" role="navigation" aria-label="Network and Channel list">
<div class="jump-to-input">
<input
ref="searchInput"
:value="searchText"
placeholder="Jump to..."
type="search"
class="search input mousetrap"
aria-label="Search among the channel list"
tabindex="-1"
@input="setSearchText"
@keydown.up="navigateResults($event, -1)"
@keydown.down="navigateResults($event, 1)"
@keydown.page-up="navigateResults($event, -10)"
@keydown.page-down="navigateResults($event, 10)"
@keydown.enter="selectResult"
@keydown.escape="deactivateSearch"
@focus="activateSearch"
/>
</div>
<div v-if="searchText" class="jump-to-results">
<div v-if="results.length">
<div
v-for="item in results"
:key="item.channel.id"
@mouseenter="setActiveSearchItem(item.channel)"
@click.prevent="selectResult"
>
<Channel
v-if="item.channel.type !== 'lobby'"
:channel="item.channel"
:network="item.network"
:active="item.channel === activeSearchItem"
:is-filtering="true"
/>
<NetworkLobby
v-else
:channel="item.channel"
:network="item.network"
:active="item.channel === activeSearchItem"
:is-filtering="true"
/>
</div>
</div>
<div v-else class="no-results">No results found.</div>
</div>
<Draggable
v-else
:list="store.state.networks"
:delay="LONG_TOUCH_DURATION"
:delay-on-touch-only="true"
:touch-start-threshold="10"
handle=".channel-list-item[data-type='lobby']"
draggable=".network"
ghost-class="ui-sortable-ghost"
drag-class="ui-sortable-dragging"
group="networks"
class="networks"
item-key="uuid"
@change="onNetworkSort"
@choose="onDraggableChoose"
@unchoose="onDraggableUnchoose"
>
<template v-slot:item="{element: network}">
<div
:id="'network-' + network.uuid"
:key="network.uuid"
:class="{
collapsed: network.isCollapsed,
'not-connected': !network.status.connected,
'not-secure': !network.status.secure,
}"
class="network"
role="region"
aria-live="polite"
@touchstart="onDraggableTouchStart"
@touchmove="onDraggableTouchMove"
@touchend="onDraggableTouchEnd"
@touchcancel="onDraggableTouchEnd"
>
<NetworkLobby
:network="network"
:is-join-channel-shown="network.isJoinChannelShown"
:active="
store.state.activeChannel &&
network.channels[0] === store.state.activeChannel.channel
"
@toggle-join-channel="
network.isJoinChannelShown = !network.isJoinChannelShown
"
/>
<JoinChannel
v-if="network.isJoinChannelShown"
:network="network"
:channel="network.channels[0]"
@toggle-join-channel="
network.isJoinChannelShown = !network.isJoinChannelShown
"
/>
<Draggable
draggable=".channel-list-item"
ghost-class="ui-sortable-ghost"
drag-class="ui-sortable-dragging"
:group="network.uuid"
:list="network.channels"
:delay="LONG_TOUCH_DURATION"
:delay-on-touch-only="true"
:touch-start-threshold="10"
class="channels"
item-key="name"
@change="onChannelSort"
@choose="onDraggableChoose"
@unchoose="onDraggableUnchoose"
>
<template v-slot:item="{element: channel, index}">
<Channel
v-if="index > 0"
:key="channel.id"
:data-item="channel.id"
:channel="channel"
:network="network"
:active="
store.state.activeChannel &&
channel === store.state.activeChannel.channel
"
/>
</template>
</Draggable>
</div>
</template>
</Draggable>
</div>
</template>
<style>
.jump-to-input {
margin: 8px;
position: relative;
}
.jump-to-input .input {
margin: 0;
width: 100%;
border: 0;
color: #fff;
background-color: rgba(255, 255, 255, 0.1);
padding-right: 35px;
appearance: none;
}
.jump-to-input .input::placeholder {
color: rgba(255, 255, 255, 0.35);
}
.jump-to-input::before {
content: "\f002"; /* http://fontawesome.io/icon/search/ */
color: rgba(255, 255, 255, 0.35);
position: absolute;
right: 8px;
top: 0;
bottom: 0;
pointer-events: none;
line-height: 35px !important;
}
.jump-to-results {
margin: 0;
padding: 0;
list-style: none;
overflow: auto;
}
.jump-to-results .no-results {
margin: 14px 8px;
text-align: center;
}
.jump-to-results .channel-list-item.active {
cursor: pointer;
}
.jump-to-results .channel-list-item .add-channel,
.jump-to-results .channel-list-item .close-tooltip {
display: none;
}
.jump-to-results .channel-list-item[data-type="lobby"] {
padding: 8px 14px;
}
.jump-to-results .channel-list-item[data-type="lobby"]::before {
content: "\f233";
}
</style>
<script lang="ts">
import {computed, watch, defineComponent, nextTick, onBeforeUnmount, onMounted, ref} from "vue";
import Mousetrap from "mousetrap";
import Draggable from "./Draggable.vue";
import {filter as fuzzyFilter} from "fuzzy";
import NetworkLobby from "./NetworkLobby.vue";
import Channel from "./Channel.vue";
import JoinChannel from "./JoinChannel.vue";
import socket from "../js/socket";
import collapseNetworkHelper from "../js/helpers/collapseNetwork";
import isIgnoredKeybind from "../js/helpers/isIgnoredKeybind";
import distance from "../js/helpers/distance";
import eventbus from "../js/eventbus";
import {ClientChan, NetChan} from "../js/types";
import {useStore} from "../js/store";
import {switchToChannel} from "../js/router";
import Sortable from "sortablejs";
export default defineComponent({
name: "NetworkList",
components: {
JoinChannel,
NetworkLobby,
Channel,
Draggable,
},
setup() {
const store = useStore();
const searchText = ref("");
const activeSearchItem = ref<ClientChan | null>();
// Number of milliseconds a touch has to last to be considered long
const LONG_TOUCH_DURATION = 500;
const startDrag = ref<[number, number] | null>();
const searchInput = ref<HTMLInputElement | null>(null);
const networklist = ref<HTMLDivElement | null>(null);
const sidebarWasClosed = ref(false);
const moveItemInArray = <T>(array: T[], from: number, to: number) => {
const item = array.splice(from, 1)[0];
array.splice(to, 0, item);
};
const items = computed(() => {
const newItems: NetChan[] = [];
for (const network of store.state.networks) {
for (const channel of network.channels) {
if (
store.state.activeChannel &&
channel === store.state.activeChannel.channel
) {
continue;
}
newItems.push({network, channel});
}
}
return newItems;
});
const results = computed(() => {
const newResults = fuzzyFilter(searchText.value, items.value, {
extract: (item) => item.channel.name,
}).map((item) => item.original);
return newResults;
});
const collapseNetwork = (event: Mousetrap.ExtendedKeyboardEvent) => {
if (isIgnoredKeybind(event)) {
return true;
}
if (store.state.activeChannel) {
collapseNetworkHelper(store.state.activeChannel.network, true);
}
return false;
};
const expandNetwork = (event: Mousetrap.ExtendedKeyboardEvent) => {
if (isIgnoredKeybind(event)) {
return true;
}
if (store.state.activeChannel) {
collapseNetworkHelper(store.state.activeChannel.network, false);
}
return false;
};
const onNetworkSort = (e: Sortable.SortableEvent) => {
const {oldIndex, newIndex} = e;
if (oldIndex === undefined || newIndex === undefined || oldIndex === newIndex) {
return;
}
moveItemInArray(store.state.networks, oldIndex, newIndex);
socket.emit("sort:networks", {
order: store.state.networks.map((n) => n.uuid),
});
};
const onChannelSort = (e: Sortable.SortableEvent) => {
let {oldIndex, newIndex} = e;
if (oldIndex === undefined || newIndex === undefined || oldIndex === newIndex) {
return;
}
// Indexes are offset by one due to the lobby
oldIndex += 1;
newIndex += 1;
const unparsedId = e.item.getAttribute("data-item");
if (!unparsedId) {
return;
}
const id = parseInt(unparsedId);
const netChan = store.getters.findChannel(id);
if (!netChan) {
return;
}
moveItemInArray(netChan.network.channels, oldIndex, newIndex);
socket.emit("sort:channel", {
network: netChan.network.uuid,
order: netChan.network.channels.map((c) => c.id),
});
};
const isTouchEvent = (event: any): boolean => {
// This is the same way Sortable.js detects a touch event. See
// SortableJS/Sortable@daaefeda:/src/Sortable.js#L465
return !!(
(event.touches && event.touches[0]) ||
(event.pointerType && event.pointerType === "touch")
);
};
const onDraggableChoose = (event: any) => {
const original = event.originalEvent;
if (isTouchEvent(original)) {
// onDrag is only triggered when the user actually moves the
// dragged object but onChoose is triggered as soon as the
// item is eligible for dragging. This gives us an opportunity
// to tell the user they've held the touch long enough.
event.item.classList.add("ui-sortable-dragging-touch-cue");
if (original instanceof TouchEvent && original.touches.length > 0) {
startDrag.value = [original.touches[0].clientX, original.touches[0].clientY];
} else if (original instanceof PointerEvent) {
startDrag.value = [original.clientX, original.clientY];
}
}
};
const onDraggableUnchoose = (event: any) => {
event.item.classList.remove("ui-sortable-dragging-touch-cue");
startDrag.value = null;
};
const onDraggableTouchStart = (event: TouchEvent) => {
if (event.touches.length === 1) {
// This prevents an iOS long touch default behavior: selecting
// the nearest selectable text.
document.body.classList.add("force-no-select");
}
};
const onDraggableTouchMove = (event: TouchEvent) => {
if (startDrag.value && event.touches.length > 0) {
const touch = event.touches[0];
const currentPosition = [touch.clientX, touch.clientY];
if (distance(startDrag.value, currentPosition as [number, number]) > 10) {
// Context menu is shown on Android after long touch.
// Dismiss it now that we're sure the user is dragging.
eventbus.emit("contextmenu:cancel");
}
}
};
const onDraggableTouchEnd = (event: TouchEvent) => {
if (event.touches.length === 0) {
document.body.classList.remove("force-no-select");
}
};
const activateSearch = () => {
if (searchInput.value === document.activeElement) {
return;
}
sidebarWasClosed.value = store.state.sidebarOpen ? false : true;
store.commit("sidebarOpen", true);
void nextTick(() => {
searchInput.value?.focus();
});
};
const deactivateSearch = () => {
activeSearchItem.value = null;
searchText.value = "";
searchInput.value?.blur();
if (sidebarWasClosed.value) {
store.commit("sidebarOpen", false);
}
};
const toggleSearch = (event: Mousetrap.ExtendedKeyboardEvent) => {
if (isIgnoredKeybind(event)) {
return true;
}
if (searchInput.value === document.activeElement) {
deactivateSearch();
return false;
}
activateSearch();
return false;
};
const setSearchText = (e: Event) => {
searchText.value = (e.target as HTMLInputElement).value;
};
const setActiveSearchItem = (channel?: ClientChan) => {
if (!results.value.length) {
return;
}
if (!channel) {
channel = results.value[0].channel;
}
activeSearchItem.value = channel;
};
const scrollToActive = () => {
// Scroll the list if needed after the active class is applied
void nextTick(() => {
const el = networklist.value?.querySelector(".channel-list-item.active");
if (el) {
el.scrollIntoView({block: "nearest", inline: "nearest"});
}
});
};
const selectResult = () => {
if (!searchText.value || !results.value.length) {
return;
}
if (activeSearchItem.value) {
switchToChannel(activeSearchItem.value);
deactivateSearch();
scrollToActive();
}
};
const navigateResults = (event: Event, direction: number) => {
// Prevent propagation to stop global keybind handler from capturing pagedown/pageup
// and redirecting it to the message list container for scrolling
event.stopImmediatePropagation();
event.preventDefault();
if (!searchText.value) {
return;
}
const channels = results.value.map((r) => r.channel);
// Bail out if there's no channels to select
if (!channels.length) {
activeSearchItem.value = null;
return;
}
let currentIndex = activeSearchItem.value
? channels.indexOf(activeSearchItem.value)
: -1;
// If there's no active channel select the first or last one depending on direction
if (!activeSearchItem.value || currentIndex === -1) {
activeSearchItem.value = direction ? channels[0] : channels[channels.length - 1];
scrollToActive();
return;
}
currentIndex += direction;
// Wrap around the list if necessary. Normaly each loop iterates once at most,
// but might iterate more often if pgup or pgdown are used in a very short list
while (currentIndex < 0) {
currentIndex += channels.length;
}
while (currentIndex > channels.length - 1) {
currentIndex -= channels.length;
}
activeSearchItem.value = channels[currentIndex];
scrollToActive();
};
watch(searchText, () => {
setActiveSearchItem();
});
onMounted(() => {
Mousetrap.bind("alt+shift+right", expandNetwork);
Mousetrap.bind("alt+shift+left", collapseNetwork);
Mousetrap.bind("alt+j", toggleSearch);
});
onBeforeUnmount(() => {
Mousetrap.unbind("alt+shift+right");
Mousetrap.unbind("alt+shift+left");
Mousetrap.unbind("alt+j");
});
const networkContainerRef = ref<HTMLDivElement>();
const channelRefs = ref<{[key: string]: HTMLDivElement}>({});
return {
store,
networklist,
searchInput,
searchText,
results,
activeSearchItem,
LONG_TOUCH_DURATION,
activateSearch,
deactivateSearch,
toggleSearch,
setSearchText,
setActiveSearchItem,
scrollToActive,
selectResult,
navigateResults,
onChannelSort,
onNetworkSort,
onDraggableTouchStart,
onDraggableTouchMove,
onDraggableTouchEnd,
onDraggableChoose,
onDraggableUnchoose,
};
},
});
</script>

View file

@ -0,0 +1,101 @@
<template>
<ChannelWrapper v-bind="$props" :channel="channel">
<button
v-if="network.channels.length > 1"
:aria-controls="'network-' + network.uuid"
:aria-label="getExpandLabel(network)"
:aria-expanded="!network.isCollapsed"
class="collapse-network"
@click.stop="onCollapseClick"
>
<span class="collapse-network-icon" />
</button>
<span v-else class="collapse-network" />
<div class="lobby-wrap">
<span :title="channel.name" class="name">{{ channel.name }}</span>
<span
v-if="network.status.connected && !network.status.secure"
class="not-secure-tooltip tooltipped tooltipped-w"
aria-label="Insecure connection"
>
<span class="not-secure-icon" />
</span>
<span
v-if="!network.status.connected"
class="not-connected-tooltip tooltipped tooltipped-w"
aria-label="Disconnected"
>
<span class="not-connected-icon" />
</span>
<span v-if="channel.unread" :class="{highlight: channel.highlight}" class="badge">{{
unreadCount
}}</span>
</div>
<span
:aria-label="joinChannelLabel"
class="add-channel-tooltip tooltipped tooltipped-w tooltipped-no-touch"
>
<button
:class="['add-channel', {opened: isJoinChannelShown}]"
:aria-controls="'join-channel-' + channel.id"
:aria-label="joinChannelLabel"
@click.stop="$emit('toggle-join-channel')"
/>
</span>
</ChannelWrapper>
</template>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import collapseNetwork from "../js/helpers/collapseNetwork";
import roundBadgeNumber from "../js/helpers/roundBadgeNumber";
import ChannelWrapper from "./ChannelWrapper.vue";
import type {ClientChan, ClientNetwork} from "../js/types";
export default defineComponent({
name: "Channel",
components: {
ChannelWrapper,
},
props: {
network: {
type: Object as PropType<ClientNetwork>,
required: true,
},
isJoinChannelShown: Boolean,
active: Boolean,
isFiltering: Boolean,
},
emits: ["toggle-join-channel"],
setup(props) {
const channel = computed(() => {
return props.network.channels[0];
});
const joinChannelLabel = computed(() => {
return props.isJoinChannelShown ? "Cancel" : "Join a channel…";
});
const unreadCount = computed(() => {
return roundBadgeNumber(channel.value.unread);
});
const onCollapseClick = () => {
collapseNetwork(props.network, !props.network.isCollapsed);
};
const getExpandLabel = (network: ClientNetwork) => {
return network.isCollapsed ? "Expand" : "Collapse";
};
return {
channel,
joinChannelLabel,
unreadCount,
onCollapseClick,
getExpandLabel,
};
},
});
</script>

View file

@ -0,0 +1,22 @@
<script lang="ts">
import {defineComponent, PropType, h} from "vue";
import parse from "../js/helpers/parse";
import type {ClientMessage, ClientNetwork} from "../js/types";
export default defineComponent({
name: "ParsedMessage",
functional: true,
props: {
text: String,
message: {type: Object as PropType<ClientMessage | string>, required: false},
network: {type: Object as PropType<ClientNetwork>, required: false},
},
render(context) {
return parse(
typeof context.text !== "undefined" ? context.text : context.message.text,
context.message,
context.network
);
},
});
</script>

View file

@ -0,0 +1,37 @@
<template>
<div>
<slot :is-visible="isVisible" />
<span
ref="revealButton"
type="button"
:class="[
'reveal-password tooltipped tooltipped-n tooltipped-no-delay',
{'reveal-password-visible': isVisible},
]"
:aria-label="isVisible ? 'Hide password' : 'Show password'"
@click="onClick"
>
<span :aria-label="isVisible ? 'Hide password' : 'Show password'" />
</span>
</div>
</template>
<script lang="ts">
import {defineComponent, ref} from "vue";
export default defineComponent({
name: "RevealPassword",
setup() {
const isVisible = ref(false);
const onClick = () => {
isVisible.value = !isVisible.value;
};
return {
isVisible,
onClick,
};
},
});
</script>

View file

@ -0,0 +1,66 @@
<template>
<Chat
v-if="activeChannel"
:network="activeChannel.network"
:channel="activeChannel.channel"
:focused="parseInt(String(route.query.focused), 10)"
@channel-changed="channelChanged"
/>
</template>
<script lang="ts">
import {watch, computed, defineComponent, onMounted} from "vue";
import {useRoute} from "vue-router";
import {useStore} from "../js/store";
import {ClientChan} from "../js/types";
// Temporary component for routing channels and lobbies
import Chat from "./Chat.vue";
export default defineComponent({
name: "RoutedChat",
components: {
Chat,
},
setup() {
const route = useRoute();
const store = useStore();
const activeChannel = computed(() => {
const chanId = parseInt(String(route.params.id || ""), 10);
const channel = store.getters.findChannel(chanId);
return channel;
});
const setActiveChannel = () => {
if (activeChannel.value) {
store.commit("activeChannel", activeChannel.value);
}
};
watch(activeChannel, () => {
setActiveChannel();
});
onMounted(() => {
setActiveChannel();
});
const channelChanged = (channel: ClientChan) => {
const chanId = channel.id;
const chanInStore = store.getters.findChannel(chanId);
if (chanInStore?.channel) {
chanInStore.channel.unread = 0;
chanInStore.channel.highlight = 0;
}
};
return {
route,
activeChannel,
channelChanged,
};
},
});
</script>

View file

@ -0,0 +1,83 @@
<template>
<div class="session-item">
<div class="session-item-info">
<strong>{{ session.agent }}</strong>
<a :href="'https://ipinfo.io/' + session.ip" target="_blank" rel="noopener">{{
session.ip
}}</a>
<p v-if="session.active > 1" class="session-usage">
Active in {{ session.active }} browsers
</p>
<p v-else-if="!session.current && !session.active" class="session-usage">
Last used on <time>{{ lastUse }}</time>
</p>
</div>
<div class="session-item-btn">
<button class="btn" @click.prevent="signOut">
<template v-if="session.current">Sign out</template>
<template v-else>Revoke</template>
</button>
</div>
</div>
</template>
<style>
.session-list .session-item {
display: flex;
font-size: 14px;
}
.session-list .session-item-info {
display: flex;
flex-direction: column;
flex-grow: 1;
}
.session-list .session-item-btn {
flex-shrink: 0;
}
.session-list .session-usage {
font-style: italic;
color: var(--body-color-muted);
}
</style>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import localetime from "../js/helpers/localetime";
import Auth from "../js/auth";
import socket from "../js/socket";
import {ClientSession} from "../js/store";
export default defineComponent({
name: "Session",
props: {
session: {
type: Object as PropType<ClientSession>,
required: true,
},
},
setup(props) {
const lastUse = computed(() => {
return localetime(props.session.lastUse);
});
const signOut = () => {
if (!props.session.current) {
socket.emit("sign-out", props.session.token);
} else {
socket.emit("sign-out");
Auth.signout();
}
};
return {
lastUse,
signOut,
};
},
});
</script>

View file

@ -0,0 +1,197 @@
<template>
<div>
<div
v-if="
!store.state.serverConfiguration?.public &&
!store.state.serverConfiguration?.ldapEnabled
"
id="change-password"
role="group"
aria-labelledby="label-change-password"
>
<h2 id="label-change-password">Change password</h2>
<div class="password-container">
<label for="current-password" class="sr-only"> Enter current password </label>
<RevealPassword v-slot:default="slotProps">
<input
id="current-password"
v-model="old_password"
autocomplete="current-password"
:type="slotProps.isVisible ? 'text' : 'password'"
name="old_password"
class="input"
placeholder="Enter current password"
/>
</RevealPassword>
</div>
<div class="password-container">
<label for="new-password" class="sr-only"> Enter desired new password </label>
<RevealPassword v-slot:default="slotProps">
<input
id="new-password"
v-model="new_password"
:type="slotProps.isVisible ? 'text' : 'password'"
name="new_password"
autocomplete="new-password"
class="input"
placeholder="Enter desired new password"
/>
</RevealPassword>
</div>
<div class="password-container">
<label for="new-password-verify" class="sr-only"> Repeat new password </label>
<RevealPassword v-slot:default="slotProps">
<input
id="new-password-verify"
v-model="verify_password"
:type="slotProps.isVisible ? 'text' : 'password'"
name="verify_password"
autocomplete="new-password"
class="input"
placeholder="Repeat new password"
/>
</RevealPassword>
</div>
<div
v-if="passwordChangeStatus && passwordChangeStatus.success"
class="feedback success"
>
Successfully updated your password
</div>
<div
v-else-if="passwordChangeStatus && passwordChangeStatus.error"
class="feedback error"
>
{{ passwordErrors[passwordChangeStatus.error] }}
</div>
<div>
<button type="submit" class="btn" @click.prevent="changePassword">
Change password
</button>
</div>
</div>
<div v-if="!store.state.serverConfiguration?.public" class="session-list" role="group">
<h2>Sessions</h2>
<h3>Current session</h3>
<Session v-if="currentSession" :session="currentSession" />
<template v-if="activeSessions.length > 0">
<h3>Active sessions</h3>
<Session
v-for="session in activeSessions"
:key="session.token"
:session="session"
/>
</template>
<h3>Other sessions</h3>
<p v-if="store.state.sessions.length === 0">Loading</p>
<p v-else-if="otherSessions.length === 0">
<em>You are not currently logged in to any other device.</em>
</p>
<Session
v-for="session in otherSessions"
v-else
:key="session.token"
:session="session"
/>
</div>
</div>
</template>
<script lang="ts">
import socket from "../../js/socket";
import RevealPassword from "../RevealPassword.vue";
import Session from "../Session.vue";
import {computed, defineComponent, onMounted, PropType, ref} from "vue";
import {useStore} from "../../js/store";
export default defineComponent({
name: "UserSettings",
components: {
RevealPassword,
Session,
},
setup() {
const store = useStore();
const passwordErrors = {
missing_fields: "Please fill in all fields",
password_mismatch: "Both new password fields must match",
password_incorrect: "The current password field does not match your account password",
update_failed: "Failed to update your password",
};
const passwordChangeStatus = ref<{
success: boolean;
error: keyof typeof passwordErrors;
}>();
const old_password = ref("");
const new_password = ref("");
const verify_password = ref("");
const currentSession = computed(() => {
return store.state.sessions.find((item) => item.current);
});
const activeSessions = computed(() => {
return store.state.sessions.filter((item) => !item.current && item.active > 0);
});
const otherSessions = computed(() => {
return store.state.sessions.filter((item) => !item.current && !item.active);
});
onMounted(() => {
socket.emit("sessions:get");
});
const changePassword = () => {
const data = {
old_password: old_password.value,
new_password: new_password.value,
verify_password: verify_password.value,
};
if (!data.old_password || !data.new_password || !data.verify_password) {
passwordChangeStatus.value = {
success: false,
error: "missing_fields",
};
return;
}
if (data.new_password !== data.verify_password) {
passwordChangeStatus.value = {
success: false,
error: "password_mismatch",
};
return;
}
socket.once("change-password", (response) => {
// TODO type
passwordChangeStatus.value = response as any;
});
socket.emit("change-password", data);
};
return {
store,
passwordChangeStatus,
passwordErrors,
currentSession,
activeSessions,
otherSessions,
changePassword,
old_password,
new_password,
verify_password,
};
},
});
</script>

View file

@ -0,0 +1,179 @@
<template>
<div>
<h2>Messages</h2>
<div>
<label class="opt">
<input :checked="store.state.settings.motd" type="checkbox" name="motd" />
Show <abbr title="Message Of The Day">MOTD</abbr>
</label>
</div>
<div>
<label class="opt">
<input
:checked="store.state.settings.showSeconds"
type="checkbox"
name="showSeconds"
/>
Include seconds in timestamp
</label>
</div>
<div>
<label class="opt">
<input
:checked="store.state.settings.use12hClock"
type="checkbox"
name="use12hClock"
/>
Use 12-hour timestamps
</label>
</div>
<template v-if="store.state.serverConfiguration?.prefetch">
<h2>Link previews</h2>
<div>
<label class="opt">
<input :checked="store.state.settings.media" type="checkbox" name="media" />
Auto-expand media
</label>
</div>
<div>
<label class="opt">
<input :checked="store.state.settings.links" type="checkbox" name="links" />
Auto-expand websites
</label>
</div>
</template>
<h2 id="label-status-messages">
Status messages
<span
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="Joins, parts, quits, kicks, nick changes, and mode changes"
>
<button class="extra-help" />
</span>
</h2>
<div role="group" aria-labelledby="label-status-messages">
<label class="opt">
<input
:checked="store.state.settings.statusMessages === 'shown'"
type="radio"
name="statusMessages"
value="shown"
/>
Show all status messages individually
</label>
<label class="opt">
<input
:checked="store.state.settings.statusMessages === 'condensed'"
type="radio"
name="statusMessages"
value="condensed"
/>
Condense status messages together
</label>
<label class="opt">
<input
:checked="store.state.settings.statusMessages === 'hidden'"
type="radio"
name="statusMessages"
value="hidden"
/>
Hide all status messages
</label>
</div>
<h2>Visual Aids</h2>
<div>
<label class="opt">
<input
:checked="store.state.settings.coloredNicks"
type="checkbox"
name="coloredNicks"
/>
Enable colored nicknames
</label>
<label class="opt">
<input
:checked="store.state.settings.autocomplete"
type="checkbox"
name="autocomplete"
/>
Enable autocomplete
</label>
</div>
<div>
<label class="opt">
<label for="nickPostfix" class="opt">
Nick autocomplete postfix
<span
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="Nick autocomplete postfix (for example a comma)"
>
<button class="extra-help" />
</span>
</label>
<input
id="nickPostfix"
:value="store.state.settings.nickPostfix"
type="text"
name="nickPostfix"
class="input"
placeholder="Nick autocomplete postfix (e.g. ', ')"
/>
</label>
</div>
<h2>Theme</h2>
<div>
<label for="theme-select" class="sr-only">Theme</label>
<select
id="theme-select"
:value="store.state.settings.theme"
name="theme"
class="input"
>
<option
v-for="theme in store.state.serverConfiguration?.themes"
:key="theme.name"
:value="theme.name"
>
{{ theme.displayName }}
</option>
</select>
</div>
<div>
<h2>Custom Stylesheet</h2>
<label for="user-specified-css-input" class="sr-only">
Custom stylesheet. You can override any style with CSS here.
</label>
<textarea
id="user-specified-css-input"
:value="store.state.settings.userStyles"
class="input"
name="userStyles"
placeholder="/* You can override any style with CSS here */"
/>
</div>
</div>
</template>
<style>
textarea#user-specified-css-input {
height: 100px;
}
</style>
<script lang="ts">
import {defineComponent} from "vue";
import {useStore} from "../../js/store";
export default defineComponent({
name: "AppearanceSettings",
setup() {
const store = useStore();
return {
store,
};
},
});
</script>

View file

@ -0,0 +1,175 @@
<template>
<div>
<div v-if="canRegisterProtocol || hasInstallPromptEvent">
<h2>Native app</h2>
<button
v-if="hasInstallPromptEvent"
type="button"
class="btn"
@click.prevent="nativeInstallPrompt"
>
Add The Lounge to Home screen
</button>
<button
v-if="canRegisterProtocol"
type="button"
class="btn"
@click.prevent="registerProtocol"
>
Open irc:// URLs with The Lounge
</button>
</div>
<div v-if="store.state.serverConfiguration?.fileUpload">
<h2>File uploads</h2>
<div>
<label class="opt">
<input
:checked="store.state.settings.uploadCanvas"
type="checkbox"
name="uploadCanvas"
/>
Attempt to remove metadata from images before uploading
<span
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="This option renders the image into a canvas element to remove metadata from the image.
This may break orientation if your browser does not support that."
>
<button class="extra-help" />
</span>
</label>
</div>
</div>
<div v-if="!store.state.serverConfiguration?.public">
<h2>Settings synchronisation</h2>
<label class="opt">
<input
:checked="store.state.settings.syncSettings"
type="checkbox"
name="syncSettings"
/>
Synchronize settings with other clients
</label>
<template v-if="!store.state.settings.syncSettings">
<div v-if="store.state.serverHasSettings" class="settings-sync-panel">
<p>
<strong>Warning:</strong> Checking this box will override the settings of
this client with those stored on the server.
</p>
<p>
Use the button below to enable synchronization, and override any settings
already synced to the server.
</p>
<button type="button" class="btn btn-small" @click="onForceSyncClick">
Sync settings and enable
</button>
</div>
<div v-else class="settings-sync-panel">
<p>
<strong>Warning:</strong> No settings have been synced before. Enabling this
will sync all settings of this client as the base for other clients.
</p>
</div>
</template>
</div>
<div v-if="!store.state.serverConfiguration?.public">
<h2>Automatic away message</h2>
<label class="opt">
<label for="awayMessage" class="sr-only">Automatic away message</label>
<input
id="awayMessage"
:value="store.state.settings.awayMessage"
type="text"
name="awayMessage"
class="input"
placeholder="Away message if The Lounge is not open"
/>
</label>
</div>
</div>
</template>
<style></style>
<script lang="ts">
import {computed, defineComponent, onMounted, ref} from "vue";
import {useStore} from "../../js/store";
import {BeforeInstallPromptEvent} from "../../js/types";
let installPromptEvent: BeforeInstallPromptEvent | null = null;
window.addEventListener("beforeinstallprompt", (e) => {
e.preventDefault();
installPromptEvent = e as BeforeInstallPromptEvent;
});
export default defineComponent({
name: "GeneralSettings",
setup() {
const store = useStore();
const canRegisterProtocol = ref(false);
const hasInstallPromptEvent = computed(() => {
// TODO: This doesn't hide the button after clicking
return installPromptEvent !== null;
});
onMounted(() => {
// Enable protocol handler registration if supported,
// and the network configuration is not locked
canRegisterProtocol.value =
!!window.navigator.registerProtocolHandler &&
!store.state.serverConfiguration?.lockNetwork;
});
const nativeInstallPrompt = () => {
if (!installPromptEvent) {
return;
}
installPromptEvent.prompt().catch((e) => {
// eslint-disable-next-line no-console
console.error(e);
});
installPromptEvent = null;
};
const onForceSyncClick = () => {
store.dispatch("settings/syncAll", true).catch((e) => {
// eslint-disable-next-line no-console
console.error(e);
});
store
.dispatch("settings/update", {
name: "syncSettings",
value: true,
sync: true,
})
.catch((e) => {
// eslint-disable-next-line no-console
console.error(e);
});
};
const registerProtocol = () => {
const uri = document.location.origin + document.location.pathname + "?uri=%s";
// @ts-expect-error
// the third argument is deprecated but recommended for compatibility: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler
window.navigator.registerProtocolHandler("irc", uri, "The Lounge");
// @ts-expect-error
window.navigator.registerProtocolHandler("ircs", uri, "The Lounge");
};
return {
store,
canRegisterProtocol,
hasInstallPromptEvent,
nativeInstallPrompt,
onForceSyncClick,
registerProtocol,
};
},
});
</script>

View file

@ -0,0 +1,103 @@
<template>
<!-- 220px is the width of the sidebar, and we add 100px to allow for the text -->
<aside class="settings-menu">
<h2>Settings</h2>
<ul role="navigation" aria-label="Settings tabs">
<SettingTabItem name="General" class-name="general" to="" />
<SettingTabItem name="Appearance" class-name="appearance" to="appearance" />
<SettingTabItem name="Notifications" class-name="notifications" to="notifications" />
<SettingTabItem name="Account" class-name="account" to="account" />
</ul>
</aside>
</template>
<style>
.settings-menu {
position: fixed;
/* top: Header + (padding bottom of h2 - border) */
top: calc(45px + 5px);
/* Mid page minus width of container and 30 pixels for padding */
margin-left: calc(50% - 480px - 30px);
}
/** The calculation is mobile + 2/3 of container width. Fairly arbitrary. */
@media screen and (max-width: calc(768px + 320px)) {
.settings-menu {
position: static;
width: min(480px, 100%);
align-self: center;
margin: 0 auto;
padding: 0 15px;
}
}
.settings-menu ul {
padding: 0;
}
.settings-menu li {
font-size: 18px;
list-style: none;
}
.settings-menu button {
color: var(--body-color-muted);
width: 100%;
height: 100%;
display: inline-block;
text-align: left;
}
.settings-menu li:not(:last-of-type) button {
margin-bottom: 8px;
}
.settings-menu button::before {
width: 18px;
height: 18px;
display: inline-block;
content: "";
margin-right: 8px;
}
.settings-menu .appearance::before {
content: "\f108"; /* http://fontawesome.io/icon/desktop/ */
}
.settings-menu .account::before {
content: "\f007"; /* http://fontawesome.io/icon/user/ */
}
.settings-menu .messages::before {
content: "\f0e0"; /* http://fontawesome.io/icon/envelope/ */
}
.settings-menu .notifications::before {
content: "\f0f3"; /* http://fontawesome.io/icon/bell/ */
}
.settings-menu .general::before {
content: "\f013"; /* http://fontawesome.io/icon/cog/ */
}
.settings-menu button:hover,
.settings-menu button.active {
color: var(--body-color);
}
.settings-menu button.active {
cursor: default;
}
</style>
<script lang="ts">
import SettingTabItem from "./SettingTabItem.vue";
import {defineComponent} from "vue";
export default defineComponent({
name: "SettingsTabs",
components: {
SettingTabItem,
},
});
</script>

View file

@ -0,0 +1,188 @@
<template>
<div>
<template v-if="!store.state.serverConfiguration?.public">
<h2>Push Notifications</h2>
<div>
<button
id="pushNotifications"
type="button"
class="btn"
:disabled="
store.state.pushNotificationState !== 'supported' &&
store.state.pushNotificationState !== 'subscribed'
"
@click="onPushButtonClick"
>
<template v-if="store.state.pushNotificationState === 'subscribed'">
Unsubscribe from push notifications
</template>
<template v-else-if="store.state.pushNotificationState === 'loading'">
Loading
</template>
<template v-else> Subscribe to push notifications </template>
</button>
<div v-if="store.state.pushNotificationState === 'nohttps'" class="error">
<strong>Warning</strong>: Push notifications are only supported over HTTPS
connections.
</div>
<div v-if="store.state.pushNotificationState === 'unsupported'" class="error">
<strong>Warning</strong>:
<span>Push notifications are not supported by your browser.</span>
</div>
</div>
</template>
<h2>Browser Notifications</h2>
<div>
<label class="opt">
<input
id="desktopNotifications"
:checked="store.state.settings.desktopNotifications"
:disabled="store.state.desktopNotificationState === 'nohttps'"
type="checkbox"
name="desktopNotifications"
/>
Enable browser notifications<br />
<div v-if="store.state.desktopNotificationState === 'unsupported'" class="error">
<strong>Warning</strong>: Notifications are not supported by your browser.
</div>
<div
v-if="store.state.desktopNotificationState === 'nohttps'"
id="warnBlockedDesktopNotifications"
class="error"
>
<strong>Warning</strong>: Notifications are only supported over HTTPS
connections.
</div>
<div
v-if="store.state.desktopNotificationState === 'blocked'"
id="warnBlockedDesktopNotifications"
class="error"
>
<strong>Warning</strong>: Notifications are blocked by your browser.
</div>
</label>
</div>
<div>
<label class="opt">
<input
:checked="store.state.settings.notification"
type="checkbox"
name="notification"
/>
Enable notification sound
</label>
</div>
<div>
<div class="opt">
<button id="play" @click.prevent="playNotification">Play sound</button>
</div>
</div>
<div>
<label class="opt">
<input
:checked="store.state.settings.notifyAllMessages"
type="checkbox"
name="notifyAllMessages"
/>
Enable notification for all messages
</label>
</div>
<div v-if="!store.state.serverConfiguration?.public">
<label class="opt">
<label for="highlights" class="opt">
Custom highlights
<span
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="If a message contains any of these comma-separated
expressions, it will trigger a highlight."
>
<button class="extra-help" />
</span>
</label>
<input
id="highlights"
:value="store.state.settings.highlights"
type="text"
name="highlights"
class="input"
autocomplete="off"
placeholder="Comma-separated, e.g.: word, some more words, anotherword"
/>
</label>
</div>
<div v-if="!store.state.serverConfiguration?.public">
<label class="opt">
<label for="highlightExceptions" class="opt">
Highlight exceptions
<span
class="tooltipped tooltipped-n tooltipped-no-delay"
aria-label="If a message contains any of these comma-separated
expressions, it will not trigger a highlight even if it contains
your nickname or expressions defined in custom highlights."
>
<button class="extra-help" />
</span>
</label>
<input
id="highlightExceptions"
:value="store.state.settings.highlightExceptions"
type="text"
name="highlightExceptions"
class="input"
autocomplete="off"
placeholder="Comma-separated, e.g.: word, some more words, anotherword"
/>
</label>
</div>
</div>
</template>
<script lang="ts">
import {computed, defineComponent} from "vue";
import {useStore} from "../../js/store";
import webpush from "../../js/webpush";
export default defineComponent({
name: "NotificationSettings",
setup() {
const store = useStore();
const isIOS = computed(
() =>
[
"iPad Simulator",
"iPhone Simulator",
"iPod Simulator",
"iPad",
"iPhone",
"iPod",
].includes(navigator.platform) ||
// iPad on iOS 13 detection
(navigator.userAgent.includes("Mac") && "ontouchend" in document)
);
const playNotification = () => {
const pop = new Audio();
pop.src = "audio/pop.wav";
// eslint-disable-next-line
pop.play();
};
const onPushButtonClick = () => {
webpush.togglePushSubscription();
};
return {
isIOS,
store,
playNotification,
onPushButtonClick,
};
},
});
</script>

View file

@ -0,0 +1,43 @@
<template>
<li :aria-label="name" role="tab" :aria-selected="route.name === name" aria-controls="settings">
<router-link v-slot:default="{navigate, isExactActive}" :to="'/settings/' + to" custom>
<button
:class="['icon', className, {active: isExactActive}]"
@click="navigate"
@keypress.enter="navigate"
>
{{ name }}
</button>
</router-link>
</li>
</template>
<script lang="ts">
import {defineComponent} from "vue";
import {useRoute} from "vue-router";
export default defineComponent({
name: "SettingTabListItem",
props: {
name: {
type: String,
required: true,
},
className: {
type: String,
required: true,
},
to: {
type: String,
required: true,
},
},
setup() {
const route = useRoute();
return {
route,
};
},
});
</script>

View file

@ -0,0 +1,269 @@
<template>
<aside id="sidebar" ref="sidebar">
<div class="scrollable-area">
<div class="logo-container">
<img
:src="`img/logo-${isPublic() ? 'horizontal-' : ''}transparent-bg.svg`"
class="logo"
alt="The Lounge"
role="presentation"
/>
<img
:src="`img/logo-${isPublic() ? 'horizontal-' : ''}transparent-bg-inverted.svg`"
class="logo-inverted"
alt="The Lounge"
role="presentation"
/>
<span
v-if="isDevelopment"
title="The Lounge has been built in development mode"
:style="{
backgroundColor: '#ff9e18',
color: '#000',
padding: '2px',
borderRadius: '4px',
fontSize: '12px',
}"
>DEVELOPER</span
>
</div>
<NetworkList />
</div>
<footer id="footer">
<span
class="tooltipped tooltipped-n tooltipped-no-touch"
aria-label="Connect to network"
><router-link
v-slot:default="{navigate, isActive}"
to="/connect"
role="tab"
aria-controls="connect"
>
<button
:class="['icon', 'connect', {active: isActive}]"
:aria-selected="isActive"
@click="navigate"
@keypress.enter="navigate"
/> </router-link
></span>
<span class="tooltipped tooltipped-n tooltipped-no-touch" aria-label="Settings"
><router-link
v-slot:default="{navigate, isActive}"
to="/settings"
role="tab"
aria-controls="settings"
>
<button
:class="['icon', 'settings', {active: isActive}]"
:aria-selected="isActive"
@click="navigate"
@keypress.enter="navigate"
></button> </router-link
></span>
<span
class="tooltipped tooltipped-n tooltipped-no-touch"
:aria-label="
store.state.serverConfiguration?.isUpdateAvailable
? 'Help\n(update available)'
: 'Help'
"
><router-link
v-slot:default="{navigate, isActive}"
to="/help"
role="tab"
aria-controls="help"
>
<button
:aria-selected="route.name === 'Help'"
:class="[
'icon',
'help',
{notified: store.state.serverConfiguration?.isUpdateAvailable},
{active: isActive},
]"
@click="navigate"
@keypress.enter="navigate"
></button> </router-link
></span>
</footer>
</aside>
</template>
<script lang="ts">
import {defineComponent, nextTick, onMounted, onUnmounted, PropType, ref} from "vue";
import {useRoute} from "vue-router";
import {useStore} from "../js/store";
import NetworkList from "./NetworkList.vue";
export default defineComponent({
name: "Sidebar",
components: {
NetworkList,
},
props: {
overlay: {type: Object as PropType<HTMLElement | null>, required: true},
},
setup(props) {
const isDevelopment = process.env.NODE_ENV !== "production";
const store = useStore();
const route = useRoute();
const touchStartPos = ref<Touch | null>();
const touchCurPos = ref<Touch | null>();
const touchStartTime = ref<number>(0);
const menuWidth = ref<number>(0);
const menuIsMoving = ref<boolean>(false);
const menuIsAbsolute = ref<boolean>(false);
const sidebar = ref<HTMLElement | null>(null);
const toggle = (state: boolean) => {
store.commit("sidebarOpen", state);
};
const onTouchMove = (e: TouchEvent) => {
const touch = (touchCurPos.value = e.touches.item(0));
if (
!touch ||
!touchStartPos.value ||
!touchStartPos.value.screenX ||
!touchStartPos.value.screenY
) {
return;
}
let distX = touch.screenX - touchStartPos.value.screenX;
const distY = touch.screenY - touchStartPos.value.screenY;
if (!menuIsMoving.value) {
// tan(45°) is 1. Gestures in 0°-45° (< 1) are considered horizontal, so
// menu must be open; gestures in 45°-90° (>1) are considered vertical, so
// chat windows must be scrolled.
if (Math.abs(distY / distX) >= 1) {
// eslint-disable-next-line no-use-before-define
onTouchEnd();
return;
}
const devicePixelRatio = window.devicePixelRatio || 2;
if (Math.abs(distX) > devicePixelRatio) {
store.commit("sidebarDragging", true);
menuIsMoving.value = true;
}
}
// Do not animate the menu on desktop view
if (!menuIsAbsolute.value) {
return;
}
if (store.state.sidebarOpen) {
distX += menuWidth.value;
}
if (distX > menuWidth.value) {
distX = menuWidth.value;
} else if (distX < 0) {
distX = 0;
}
if (sidebar.value) {
sidebar.value.style.transform = "translate3d(" + distX.toString() + "px, 0, 0)";
}
if (props.overlay) {
props.overlay.style.opacity = `${distX / menuWidth.value}`;
}
};
const onTouchEnd = () => {
if (!touchStartPos.value?.screenX || !touchCurPos.value?.screenX) {
return;
}
const diff = touchCurPos.value.screenX - touchStartPos.value.screenX;
const absDiff = Math.abs(diff);
if (
absDiff > menuWidth.value / 2 ||
(Date.now() - touchStartTime.value < 180 && absDiff > 50)
) {
toggle(diff > 0);
}
document.body.removeEventListener("touchmove", onTouchMove);
document.body.removeEventListener("touchend", onTouchEnd);
store.commit("sidebarDragging", false);
touchStartPos.value = null;
touchCurPos.value = null;
touchStartTime.value = 0;
menuIsMoving.value = false;
void nextTick(() => {
if (sidebar.value) {
sidebar.value.style.transform = "";
}
if (props.overlay) {
props.overlay.style.opacity = "";
}
});
};
const onTouchStart = (e: TouchEvent) => {
if (!sidebar.value) {
return;
}
touchStartPos.value = touchCurPos.value = e.touches.item(0);
if (e.touches.length !== 1) {
onTouchEnd();
return;
}
const styles = window.getComputedStyle(sidebar.value);
menuWidth.value = parseFloat(styles.width);
menuIsAbsolute.value = styles.position === "absolute";
if (
!store.state.sidebarOpen ||
(touchStartPos.value?.screenX && touchStartPos.value.screenX > menuWidth.value)
) {
touchStartTime.value = Date.now();
document.body.addEventListener("touchmove", onTouchMove, {passive: true});
document.body.addEventListener("touchend", onTouchEnd, {passive: true});
}
};
onMounted(() => {
document.body.addEventListener("touchstart", onTouchStart, {passive: true});
});
onUnmounted(() => {
document.body.removeEventListener("touchstart", onTouchStart);
});
const isPublic = () => document.body.classList.contains("public");
return {
isDevelopment,
store,
route,
sidebar,
toggle,
onTouchStart,
onTouchMove,
onTouchEnd,
isPublic,
};
},
});
</script>

View file

@ -0,0 +1,19 @@
<template>
<button class="lt" aria-label="Toggle channel list" @click="store.commit('toggleSidebar')" />
</template>
<script lang="ts">
import {defineComponent} from "vue";
import {useStore} from "../js/store";
export default defineComponent({
name: "SidebarToggle",
setup() {
const store = useStore();
return {
store,
};
},
});
</script>

View file

@ -0,0 +1,45 @@
<template>
<table class="ban-list">
<thead>
<tr>
<th class="hostmask">Banned</th>
<th class="banned_by">Banned By</th>
<th class="banned_at">Banned At</th>
</tr>
</thead>
<tbody>
<tr v-for="ban in channel.data" :key="ban.hostmask">
<td class="hostmask"><ParsedMessage :network="network" :text="ban.hostmask" /></td>
<td class="banned_by">{{ ban.banned_by }}</td>
<td class="banned_at">{{ localetime(ban.banned_at) }}</td>
</tr>
</tbody>
</table>
</template>
<script lang="ts">
import ParsedMessage from "../ParsedMessage.vue";
import localeTime from "../../js/helpers/localetime";
import {defineComponent, PropType} from "vue";
import type {ClientNetwork, ClientChan} from "../../js/types";
export default defineComponent({
name: "ListBans",
components: {
ParsedMessage,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup() {
const localetime = (date: number | Date) => {
return localeTime(date);
};
return {
localetime,
};
},
});
</script>

View file

@ -0,0 +1,36 @@
<template>
<span v-if="channel.data.text">{{ channel.data.text }}</span>
<table v-else class="channel-list">
<thead>
<tr>
<th class="channel">Channel</th>
<th class="users">Users</th>
<th class="topic">Topic</th>
</tr>
</thead>
<tbody>
<tr v-for="chan in channel.data" :key="chan.channel">
<td class="channel"><ParsedMessage :network="network" :text="chan.channel" /></td>
<td class="users">{{ chan.num_users }}</td>
<td class="topic"><ParsedMessage :network="network" :text="chan.topic" /></td>
</tr>
</tbody>
</table>
</template>
<script lang="ts">
import {defineComponent, PropType} from "vue";
import {ClientChan, ClientNetwork} from "../../js/types";
import ParsedMessage from "../ParsedMessage.vue";
export default defineComponent({
name: "ListChannels",
components: {
ParsedMessage,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
});
</script>

View file

@ -0,0 +1,39 @@
<template>
<table class="ignore-list">
<thead>
<tr>
<th class="hostmask">Hostmask</th>
<th class="when">Ignored At</th>
</tr>
</thead>
<tbody>
<tr v-for="user in channel.data" :key="user.hostmask">
<td class="hostmask"><ParsedMessage :network="network" :text="user.hostmask" /></td>
<td class="when">{{ localetime(user.when) }}</td>
</tr>
</tbody>
</table>
</template>
<script lang="ts">
import ParsedMessage from "../ParsedMessage.vue";
import localetime from "../../js/helpers/localetime";
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientChan} from "../../js/types";
export default defineComponent({
name: "ListIgnored",
components: {
ParsedMessage,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup() {
return {
localetime,
};
},
});
</script>

View file

@ -0,0 +1,43 @@
<template>
<table class="invite-list">
<thead>
<tr>
<th class="hostmask">Invited</th>
<th class="invitened_by">Invited By</th>
<th class="invitened_at">Invited At</th>
</tr>
</thead>
<tbody>
<tr v-for="invite in channel.data" :key="invite.hostmask">
<td class="hostmask">
<ParsedMessage :network="network" :text="invite.hostmask" />
</td>
<td class="invitened_by">{{ invite.invited_by }}</td>
<td class="invitened_at">{{ localetime(invite.invited_at) }}</td>
</tr>
</tbody>
</table>
</template>
<script lang="ts">
import ParsedMessage from "../ParsedMessage.vue";
import localetime from "../../js/helpers/localetime";
import {defineComponent, PropType} from "vue";
import {ClientNetwork, ClientChan} from "../../js/types";
export default defineComponent({
name: "ListInvites",
components: {
ParsedMessage,
},
props: {
network: {type: Object as PropType<ClientNetwork>, required: true},
channel: {type: Object as PropType<ClientChan>, required: true},
},
setup() {
return {
localetime: (date: Date) => localetime(date),
};
},
});
</script>

View file

@ -0,0 +1,84 @@
<template>
<span
:class="['user', {[nickColor]: store.state.settings.coloredNicks}, {active: active}]"
:data-name="user.nick"
role="button"
v-on="onHover ? {mouseenter: hover} : {}"
@click.prevent="openContextMenu"
@contextmenu.prevent="openContextMenu"
><slot>{{ mode }}{{ user.nick }}</slot></span
>
</template>
<script lang="ts">
import {computed, defineComponent, PropType} from "vue";
import {UserInMessage} from "../../shared/types/msg";
import eventbus from "../js/eventbus";
import colorClass from "../js/helpers/colorClass";
import type {ClientChan, ClientNetwork} from "../js/types";
import {useStore} from "../js/store";
type UsernameUser = Partial<UserInMessage> & {
mode?: string;
nick: string;
};
export default defineComponent({
name: "Username",
props: {
user: {
// TODO: UserInMessage shouldn't be necessary here.
type: Object as PropType<UsernameUser | UserInMessage>,
required: true,
},
active: Boolean,
onHover: {
type: Function as PropType<(user: UserInMessage) => void>,
required: false,
},
channel: {type: Object as PropType<ClientChan>, required: false},
network: {type: Object as PropType<ClientNetwork>, required: false},
},
setup(props) {
const mode = computed(() => {
// Message objects have a singular mode, but user objects have modes array
if (props.user.modes) {
return props.user.modes[0];
}
return props.user.mode;
});
// TODO: Nick must be ! because our user prop union includes UserInMessage
const nickColor = computed(() => colorClass(props.user.nick!));
const hover = () => {
if (props.onHover) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return props.onHover(props.user as UserInMessage);
}
return null;
};
const openContextMenu = (event: Event) => {
eventbus.emit("contextmenu:user", {
event: event,
user: props.user,
network: props.network,
channel: props.channel,
});
};
const store = useStore();
return {
mode,
nickColor,
hover,
openContextMenu,
store,
};
},
});
</script>

View file

@ -0,0 +1,66 @@
<template>
<div id="version-checker" :class="[store.state.versionStatus]">
<p v-if="store.state.versionStatus === 'loading'">Checking for updates</p>
<p v-if="store.state.versionStatus === 'new-version'">
The Lounge <b>{{ store.state.versionData?.latest.version }}</b>
<template v-if="store.state.versionData?.latest.prerelease"> (pre-release) </template>
is now available.
<br />
<a :href="store.state.versionData?.latest.url" target="_blank" rel="noopener">
Read more on GitHub
</a>
</p>
<p v-if="store.state.versionStatus === 'new-packages'">
The Lounge is up to date, but there are out of date packages Run
<code>thelounge upgrade</code> on the server to upgrade packages.
</p>
<template v-if="store.state.versionStatus === 'up-to-date'">
<p>The Lounge is up to date!</p>
<button
v-if="store.state.versionDataExpired"
id="check-now"
class="btn btn-small"
@click="checkNow"
>
Check now
</button>
</template>
<template v-if="store.state.versionStatus === 'error'">
<p>Information about latest release could not be retrieved.</p>
<button id="check-now" class="btn btn-small" @click="checkNow">Try again</button>
</template>
</div>
</template>
<script lang="ts">
import {defineComponent, onMounted} from "vue";
import socket from "../js/socket";
import {useStore} from "../js/store";
export default defineComponent({
name: "VersionChecker",
setup() {
const store = useStore();
const checkNow = () => {
store.commit("versionData", null);
store.commit("versionStatus", "loading");
socket.emit("changelog");
};
onMounted(() => {
if (!store.state.versionData) {
checkNow();
}
});
return {
store,
checkNow,
};
},
});
</script>

View file

@ -0,0 +1,93 @@
<template>
<div id="changelog" class="window" aria-label="Changelog">
<div class="header">
<SidebarToggle />
</div>
<div class="container">
<router-link id="back-to-help" to="/help">« Help</router-link>
<template
v-if="store.state.versionData?.current && store.state.versionData?.current.version"
>
<h1 class="title">
Release notes for {{ store.state.versionData.current.version }}
</h1>
<template v-if="store.state.versionData.current.changelog">
<h3>Introduction</h3>
<div
ref="changelog"
class="changelog-text"
v-html="store.state.versionData.current.changelog"
></div>
</template>
<template v-else>
<p>Unable to retrieve changelog for current release from GitHub.</p>
<p>
<a
v-if="store.state.serverConfiguration?.version"
:href="`https://github.com/thelounge/thelounge/releases/tag/v${store.state.serverConfiguration?.version}`"
target="_blank"
rel="noopener"
>View release notes for this version on GitHub</a
>
</p>
</template>
</template>
<p v-else>Loading changelog</p>
</div>
</div>
</template>
<script lang="ts">
import {defineComponent, onMounted, onUpdated, ref} from "vue";
import socket from "../../js/socket";
import {useStore} from "../../js/store";
import SidebarToggle from "../SidebarToggle.vue";
export default defineComponent({
name: "Changelog",
components: {
SidebarToggle,
},
setup() {
const store = useStore();
const changelog = ref<HTMLDivElement | null>(null);
const patchChangelog = () => {
if (!changelog.value) {
return;
}
const links = changelog.value.querySelectorAll("a");
links.forEach((link) => {
// Make sure all links will open a new tab instead of exiting the application
link.setAttribute("target", "_blank");
link.setAttribute("rel", "noopener");
if (link.querySelector("img")) {
// Add required metadata to image links, to support built-in image viewer
link.classList.add("toggle-thumbnail");
}
});
};
onMounted(() => {
if (!store.state.versionData) {
socket.emit("changelog");
}
patchChangelog();
});
onUpdated(() => {
patchChangelog();
});
return {
store,
};
},
});
</script>

View file

@ -0,0 +1,117 @@
<template>
<NetworkForm :handle-submit="handleSubmit" :defaults="defaults" :disabled="disabled" />
</template>
<script lang="ts">
import {defineComponent, ref} from "vue";
import socket from "../../js/socket";
import {useStore} from "../../js/store";
import NetworkForm, {NetworkFormDefaults} from "../NetworkForm.vue";
export default defineComponent({
name: "Connect",
components: {
NetworkForm,
},
props: {
queryParams: Object,
},
setup(props) {
const store = useStore();
const disabled = ref(false);
const handleSubmit = (data: Record<string, any>) => {
disabled.value = true;
socket.emit("network:new", data);
};
const parseOverrideParams = (params?: Record<string, string>) => {
if (!params) {
return {};
}
const parsedParams: Record<string, any> = {};
for (let key of Object.keys(params)) {
let value = params[key];
// Param can contain multiple values in an array if its supplied more than once
if (Array.isArray(value)) {
value = value[0];
}
// Support `channels` as a compatibility alias with other clients
if (key === "channels") {
key = "join";
}
if (
!Object.prototype.hasOwnProperty.call(
store.state.serverConfiguration?.defaults,
key
)
) {
continue;
}
// When the network is locked, URL overrides should not affect disabled fields
if (
store.state.serverConfiguration?.lockNetwork &&
["name", "host", "port", "tls", "rejectUnauthorized"].includes(key)
) {
continue;
}
if (key === "join") {
value = value
.split(",")
.map((chan) => {
if (!chan.match(/^[#&!+]/)) {
return `#${chan}`;
}
return chan;
})
.join(", ");
}
// Override server provided defaults with parameters passed in the URL if they match the data type
switch (typeof store.state.serverConfiguration?.defaults[key]) {
case "boolean":
if (value === "0" || value === "false") {
parsedParams[key] = false;
} else {
parsedParams[key] = !!value;
}
break;
case "number":
parsedParams[key] = Number(value);
break;
case "string":
parsedParams[key] = String(value);
break;
}
}
return parsedParams;
};
const defaults = ref<Partial<NetworkFormDefaults>>(
Object.assign(
{},
store.state.serverConfiguration?.defaults,
parseOverrideParams(props.queryParams)
)
);
return {
defaults,
disabled,
handleSubmit,
};
},
});
</script>

View file

@ -0,0 +1,879 @@
<template>
<div id="help" class="window" role="tabpanel" aria-label="Help">
<div class="header">
<SidebarToggle />
</div>
<div class="container">
<h1 class="title">Help</h1>
<h2 class="help-version-title">
<span>About The Lounge</span>
<small>
v{{ store.state.serverConfiguration?.version }} (<router-link
id="view-changelog"
to="/changelog"
>release notes</router-link
>)
</small>
</h2>
<div class="about">
<VersionChecker />
<template v-if="store.state.serverConfiguration?.gitCommit">
<p>
The Lounge is running from source (<a
:href="`https://github.com/thelounge/thelounge/tree/${store.state.serverConfiguration?.gitCommit}`"
target="_blank"
rel="noopener"
>commit <code>{{ store.state.serverConfiguration?.gitCommit }}</code></a
>).
</p>
<ul>
<li>
Compare
<a
:href="`https://github.com/thelounge/thelounge/compare/${store.state.serverConfiguration?.gitCommit}...master`"
target="_blank"
rel="noopener"
>between
<code>{{ store.state.serverConfiguration?.gitCommit }}</code> and
<code>master</code></a
>
to see what you are missing
</li>
<li>
Compare
<a
:href="`https://github.com/thelounge/thelounge/compare/${store.state.serverConfiguration?.version}...${store.state.serverConfiguration?.gitCommit}`"
target="_blank"
rel="noopener"
>between
<code>{{ store.state.serverConfiguration?.version }}</code> and
<code>{{ store.state.serverConfiguration?.gitCommit }}</code></a
>
to see your local changes
</li>
</ul>
</template>
<p>
<a
href="https://thelounge.chat/"
target="_blank"
rel="noopener"
class="website-link"
>Website</a
>
</p>
<p>
<a
href="https://thelounge.chat/docs/"
target="_blank"
rel="noopener"
class="documentation-link"
>Documentation</a
>
</p>
<p>
<a
href="https://github.com/thelounge/thelounge/issues/new"
target="_blank"
rel="noopener"
class="report-issue-link"
>Report an issue</a
>
</p>
</div>
<h2 v-if="isTouch">Gestures</h2>
<div v-if="isTouch" class="help-item">
<div class="subject gesture">Single-Finger Swipe Left</div>
<div class="description">
<p>Hide sidebar.</p>
</div>
</div>
<div v-if="isTouch" class="help-item">
<div class="subject gesture">Single-Finger Swipe Right</div>
<div class="description">
<p>Show sidebar.</p>
</div>
</div>
<div v-if="isTouch" class="help-item">
<div class="subject gesture">Two-Finger Swipe Left</div>
<div class="description">
<p>Switch to the next window in the channel list.</p>
</div>
</div>
<div v-if="isTouch" class="help-item">
<div class="subject gesture">Two-Finger Swipe Right</div>
<div class="description">
<p>Switch to the previous window in the channel list.</p>
</div>
</div>
<h2>Keyboard Shortcuts</h2>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Shift</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the next lobby in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Shift</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the previous lobby in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Shift</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Collapse current network.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Shift</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Expand current network.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the next window in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the previous window in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Ctrl</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the next window with unread messages in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>Ctrl</kbd> <kbd></kbd></span>
<span v-else><kbd></kbd> <kbd></kbd> <kbd></kbd></span>
</div>
<div class="description">
<p>Switch to the previous window with unread messages in the channel list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>A</kbd></span>
<span v-else><kbd></kbd> <kbd>A</kbd></span>
</div>
<div class="description">
<p>Switch to the first window with unread messages.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>S</kbd></span>
<span v-else><kbd></kbd> <kbd>S</kbd></span>
</div>
<div class="description">
<p>Toggle sidebar.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>U</kbd></span>
<span v-else><kbd></kbd> <kbd>U</kbd></span>
</div>
<div class="description">
<p>Toggle channel user list.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>J</kbd></span>
<span v-else><kbd></kbd> <kbd>J</kbd></span>
</div>
<div class="description">
<p>Toggle jump to channel switcher.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>M</kbd></span>
<span v-else><kbd></kbd> <kbd>M</kbd></span>
</div>
<div class="description">
<p>Toggle recent mentions popup.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Alt</kbd> <kbd>/</kbd></span>
<span v-else><kbd></kbd> <kbd>/</kbd></span>
</div>
<div class="description">
<p>Switch to the help menu.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span><kbd>Esc</kbd></span>
</div>
<div class="description">
<p>
Close current contextual window (context menu, image viewer, topic edit,
etc) and remove focus from input.
</p>
</div>
</div>
<h2>Formatting Shortcuts</h2>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>K</kbd></span>
<span v-else><kbd></kbd> <kbd>K</kbd></span>
</div>
<div class="description">
<p>
Mark any text typed after this shortcut to be colored. After hitting this
shortcut, enter an integer in the range
<code>015</code> to select the desired color, or use the autocompletion
menu to choose a color name (see below).
</p>
<p>
Background color can be specified by putting a comma and another integer in
the range <code>015</code> after the foreground color number
(autocompletion works too).
</p>
<p>
A color reference can be found
<a
href="https://modern.ircdocs.horse/formatting.html#colors"
target="_blank"
rel="noopener"
>here</a
>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>B</kbd></span>
<span v-else><kbd></kbd> <kbd>B</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut as
<span class="irc-bold">bold</span>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>U</kbd></span>
<span v-else><kbd></kbd> <kbd>U</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut as
<span class="irc-underline">underlined</span>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>I</kbd></span>
<span v-else><kbd></kbd> <kbd>I</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut as
<span class="irc-italic">italics</span>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>S</kbd></span>
<span v-else><kbd></kbd> <kbd>S</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut as
<span class="irc-strikethrough">struck through</span>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>M</kbd></span>
<span v-else><kbd></kbd> <kbd>M</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut as
<span class="irc-monospace">monospaced</span>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<span v-if="!isApple"><kbd>Ctrl</kbd> <kbd>O</kbd></span>
<span v-else><kbd></kbd> <kbd>O</kbd></span>
</div>
<div class="description">
<p>
Mark all text typed after this shortcut to be reset to its original
formatting.
</p>
</div>
</div>
<h2>Autocompletion</h2>
<p>
To auto-complete nicknames, channels, commands, and emoji, type one of the
characters below to open a suggestion list. Use the <kbd></kbd> and
<kbd></kbd> keys to highlight an item, and insert it by pressing <kbd>Tab</kbd> or
<kbd>Enter</kbd> (or by clicking the desired item).
</p>
<p>Autocompletion can be disabled in settings.</p>
<div class="help-item">
<div class="subject">
<code>@</code>
</div>
<div class="description">
<p>Nickname</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>#</code>
</div>
<div class="description">
<p>Channel</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/</code>
</div>
<div class="description">
<p>Commands (see list of commands below)</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>:</code>
</div>
<div class="description">
<p>
Emoji (note: requires two search characters, to avoid conflicting with
common emoticons like <code>:)</code>)
</p>
</div>
</div>
<h2>Commands</h2>
<div class="help-item">
<div class="subject">
<code>/away [message]</code>
</div>
<div class="description">
<p>Mark yourself as away with an optional message.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/back</code>
</div>
<div class="description">
<p>Remove your away status (set with <code>/away</code>).</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/ban nick</code>
</div>
<div class="description">
<p>
Ban (<code>+b</code>) a user from the current channel. This can be a
nickname or a hostmask.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/banlist</code>
</div>
<div class="description">
<p>Load the banlist for the current channel.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/collapse</code>
</div>
<div class="description">
<p>
Collapse all previews in the current channel (opposite of
<code>/expand</code>)
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/connect host [port]</code>
</div>
<div class="description">
<p>
Connect to a new IRC network. If <code>port</code> starts with a
<code>+</code> sign, the connection will be made secure using TLS.
</p>
<p>Alias: <code>/server</code></p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/ctcp target cmd [args]</code>
</div>
<div class="description">
<p>
Send a <abbr title="Client-to-client protocol">CTCP</abbr>
request. Read more about this on
<a
href="https://en.wikipedia.org/wiki/Client-to-client_protocol"
target="_blank"
rel="noopener"
>the dedicated Wikipedia article</a
>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/deop nick [...nick]</code>
</div>
<div class="description">
<p>
Remove op (<code>-o</code>) from one or several users in the current
channel.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/devoice nick [...nick]</code>
</div>
<div class="description">
<p>
Remove voice (<code>-v</code>) from one or several users in the current
channel.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/disconnect [message]</code>
</div>
<div class="description">
<p>Disconnect from the current network with an optionally-provided message.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/expand</code>
</div>
<div class="description">
<p>
Expand all previews in the current channel (opposite of
<code>/collapse</code>)
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/invite nick [channel]</code>
</div>
<div class="description">
<p>
Invite a user to the specified channel. If
<code>channel</code> is omitted, user will be invited to the current
channel.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/ignore nick</code>
</div>
<div class="description">
<p>
Block any messages from the specified user on the current network. This can
be a nickname or a hostmask.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/ignorelist</code>
</div>
<div class="description">
<p>Load the list of ignored users for the current network.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/join channel [password]</code>
</div>
<div class="description">
<p>
Join a channel. Password is only needed in protected channels and can
usually be omitted.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/kick nick [reason]</code>
</div>
<div class="description">
<p>Kick a user from the current channel.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/kickban nick [reason]</code>
</div>
<div class="description">
<p>
Kick and ban (<code>+b</code>) a user from the current channel. Unlike
<code>/ban</code>, only nicknames (and not host masks) can be used.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/list</code>
</div>
<div class="description">
<p>Retrieve a list of available channels on this network.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/me message</code>
</div>
<div class="description">
<p>
Send an action message to the current channel. The Lounge will display it
inline, as if the message was posted in the third person.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/mode flags [args]</code>
</div>
<div class="description">
<p>
Set the given flags to the current channel if the active window is a
channel, another user if the active window is a private message window, or
yourself if the current window is a server window.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/msg channel message</code>
</div>
<div class="description">
<p>Send a message to the specified channel.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/mute [...channel]</code>
</div>
<div class="description">
<p>
Prevent messages from generating any feedback for a channel. This turns off
the highlight indicator, hides mentions and inhibits push notifications.
Muting a network lobby mutes the entire network. Not specifying any channel
target mutes the current channel. Revert with <code>/unmute</code>.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/nick newnick</code>
</div>
<div class="description">
<p>Change your nickname on the current network.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/notice channel message</code>
</div>
<div class="description">
<p>Sends a notice message to the specified channel.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/op nick [...nick]</code>
</div>
<div class="description">
<p>Give op (<code>+o</code>) to one or several users in the current channel.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/part [channel]</code>
</div>
<div class="description">
<p>
Close the specified channel or private message window, or the current
channel if <code>channel</code> is omitted.
</p>
<p>Aliases: <code>/close</code>, <code>/leave</code></p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/rejoin</code>
</div>
<div class="description">
<p>
Leave and immediately rejoin the current channel. Useful to quickly get op
from ChanServ in an empty channel, for example.
</p>
<p>Alias: <code>/cycle</code></p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/query nick</code>
</div>
<div class="description">
<p>Send a private message to the specified user.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/quit [message]</code>
</div>
<div class="description">
<p>Disconnect from the current network with an optional message.</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/raw message</code>
</div>
<div class="description">
<p>Send a raw message to the current IRC network.</p>
<p>Aliases: <code>/quote</code>, <code>/send</code></p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/slap nick</code>
</div>
<div class="description">
<p>Slap someone in the current channel with a trout!</p>
</div>
</div>
<div v-if="store.state.settings.searchEnabled" class="help-item">
<div class="subject">
<code>/search query</code>
</div>
<div class="description">
<p>Search for messages in the current channel / user</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/topic [newtopic]</code>
</div>
<div class="description">
<p>
Get the topic in the current channel. If <code>newtopic</code> is specified,
sets the topic in the current channel.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/unban nick</code>
</div>
<div class="description">
<p>
Unban (<code>-b</code>) a user from the current channel. This can be a
nickname or a hostmask.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/unignore nick</code>
</div>
<div class="description">
<p>
Unblock messages from the specified user on the current network. This can be
a nickname or a hostmask.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/unmute [...channel]</code>
</div>
<div class="description">
<p>
Un-mutes the given channel(s) or the current channel if no channel is
provided. See <code>/mute</code> for more information.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/voice nick [...nick]</code>
</div>
<div class="description">
<p>
Give voice (<code>+v</code>) to one or several users in the current channel.
</p>
</div>
</div>
<div class="help-item">
<div class="subject">
<code>/whois nick</code>
</div>
<div class="description">
<p>Retrieve information about the given user on the current network.</p>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import {defineComponent, ref} from "vue";
import {useStore} from "../../js/store";
import SidebarToggle from "../SidebarToggle.vue";
import VersionChecker from "../VersionChecker.vue";
export default defineComponent({
name: "Help",
components: {
SidebarToggle,
VersionChecker,
},
setup() {
const store = useStore();
const isApple = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) || false;
const isTouch = navigator.maxTouchPoints > 0;
return {
isApple,
isTouch,
store,
};
},
});
</script>

View file

@ -0,0 +1,67 @@
<template>
<NetworkForm
v-if="networkData"
:handle-submit="handleSubmit"
:defaults="networkData"
:disabled="disabled"
/>
</template>
<script lang="ts">
import {defineComponent, onMounted, ref, watch} from "vue";
import {useRoute} from "vue-router";
import {switchToChannel} from "../../js/router";
import socket from "../../js/socket";
import {useStore} from "../../js/store";
import NetworkForm, {NetworkFormDefaults} from "../NetworkForm.vue";
export default defineComponent({
name: "NetworkEdit",
components: {
NetworkForm,
},
setup() {
const route = useRoute();
const store = useStore();
const disabled = ref(false);
const networkData = ref<NetworkFormDefaults | null>(null);
const setNetworkData = () => {
socket.emit("network:get", String(route.params.uuid || ""));
networkData.value = store.getters.findNetwork(String(route.params.uuid || ""));
};
const handleSubmit = (data: {uuid: string; name: string}) => {
disabled.value = true;
socket.emit("network:edit", data);
// TODO: move networks to vuex and update state when the network info comes in
const network = store.getters.findNetwork(data.uuid);
if (network) {
network.name = network.channels[0].name = data.name;
switchToChannel(network.channels[0]);
}
};
watch(
() => route.params.uuid,
() => {
setNetworkData();
}
);
onMounted(() => {
setNetworkData();
});
return {
disabled,
networkData,
handleSubmit,
};
},
});
</script>

View file

@ -0,0 +1,321 @@
<template>
<div id="chat-container" class="window">
<div
id="chat"
:class="{
'time-seconds': store.state.settings.showSeconds,
'time-12h': store.state.settings.use12hClock,
}"
>
<div
class="chat-view"
data-type="search-results"
aria-label="Search results"
role="tabpanel"
>
<div v-if="network && channel" class="header">
<SidebarToggle />
<span class="title"
>Searching in <span class="channel-name">{{ channel.name }}</span> for</span
>
<span class="topic">{{ route.query.q }}</span>
<MessageSearchForm :network="network" :channel="channel" />
<button
class="close"
aria-label="Close search window"
title="Close search window"
@click="closeSearch"
/>
</div>
<div v-if="network && channel" class="chat-content">
<div ref="chat" class="chat" tabindex="-1">
<div v-show="moreResultsAvailable" class="show-more">
<button
ref="loadMoreButton"
:disabled="
!!store.state.messageSearchPendingQuery ||
!store.state.isConnected
"
class="btn"
@click="onShowMoreClick"
>
<span v-if="store.state.messageSearchPendingQuery">Loading</span>
<span v-else>Show older messages</span>
</button>
</div>
<div
v-if="store.state.messageSearchPendingQuery && !offset"
class="search-status"
>
Searching
</div>
<div v-else-if="!messages.length && !offset" class="search-status">
No results found.
</div>
<div
class="messages"
role="log"
aria-live="polite"
aria-relevant="additions"
>
<div
v-for="(message, id) in messages"
:key="message.id"
class="result"
@click="jump(message, id)"
>
<DateMarker
v-if="shouldDisplayDateMarker(message, id)"
:key="message.id + '-date'"
:message="message"
/>
<Message
:key="message.id"
:channel="channel"
:network="network"
:message="message"
:data-id="message.id"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<style>
.channel-name {
font-weight: 700;
}
</style>
<script lang="ts">
import socket from "../../js/socket";
import eventbus from "../../js/eventbus";
import SidebarToggle from "../SidebarToggle.vue";
import Message from "../Message.vue";
import MessageSearchForm from "../MessageSearchForm.vue";
import DateMarker from "../DateMarker.vue";
import {watch, computed, defineComponent, nextTick, ref, onMounted, onUnmounted} from "vue";
import type {ClientMessage} from "../../js/types";
import {useStore} from "../../js/store";
import {useRoute, useRouter} from "vue-router";
import {switchToChannel} from "../../js/router";
import {SearchQuery} from "../../../shared/types/storage";
export default defineComponent({
name: "SearchResults",
components: {
SidebarToggle,
Message,
DateMarker,
MessageSearchForm,
},
setup() {
const store = useStore();
const route = useRoute();
const router = useRouter();
const chat = ref<HTMLDivElement>();
const loadMoreButton = ref<HTMLButtonElement>();
const offset = ref(0);
const moreResultsAvailable = ref(false);
const oldScrollTop = ref(0);
const oldChatHeight = ref(0);
const messages = computed(() => {
const results = store.state.messageSearchResults?.results;
if (!results) {
return [];
}
return results;
});
const chan = computed(() => {
const chanId = parseInt(String(route.params.id || ""), 10);
return store.getters.findChannel(chanId);
});
const network = computed(() => {
if (!chan.value) {
return null;
}
return chan.value.network;
});
const channel = computed(() => {
if (!chan.value) {
return null;
}
return chan.value.channel;
});
const setActiveChannel = () => {
if (!chan.value) {
return;
}
store.commit("activeChannel", chan.value);
};
const closeSearch = () => {
if (!channel.value) {
return;
}
switchToChannel(channel.value);
};
const shouldDisplayDateMarker = (message: ClientMessage, id: number) => {
const previousMessage = messages.value[id - 1];
if (!previousMessage) {
return true;
}
return new Date(previousMessage.time).getDay() !== new Date(message.time).getDay();
};
const clearSearchState = () => {
offset.value = 0;
store.commit("messageSearchResults", null);
store.commit("messageSearchPendingQuery", null);
};
const doSearch = () => {
if (!network.value || !channel.value) {
return;
}
clearSearchState(); // this is a new search, so we need to clear anything before that
const query: SearchQuery = {
networkUuid: network.value.uuid,
channelName: channel.value.name,
searchTerm: String(route.query.q || ""),
offset: offset.value,
};
store.commit("messageSearchPendingQuery", query);
socket.emit("search", query);
};
const onShowMoreClick = () => {
if (!chat.value || !network.value || !channel.value) {
return;
}
offset.value += 100;
oldScrollTop.value = chat.value.scrollTop;
oldChatHeight.value = chat.value.scrollHeight;
const query: SearchQuery = {
networkUuid: network.value.uuid,
channelName: channel.value.name,
searchTerm: String(route.query.q || ""),
offset: offset.value,
};
store.commit("messageSearchPendingQuery", query);
socket.emit("search", query);
};
const jumpToBottom = async () => {
await nextTick();
const el = chat.value;
if (!el) {
return;
}
el.scrollTop = el.scrollHeight;
};
const jump = (message: ClientMessage, id: number) => {
// TODO: Implement jumping to messages!
// This is difficult because it means client will need to handle a potentially nonlinear message set
// (loading IntersectionObserver both before AND after the messages)
};
watch(
() => route.params.id,
() => {
doSearch();
setActiveChannel();
}
);
watch(
() => route.query,
() => {
doSearch();
setActiveChannel();
}
);
watch(messages, async () => {
moreResultsAvailable.value = !!(
messages.value.length && !(messages.value.length % 100)
);
if (!offset.value) {
await jumpToBottom();
} else {
await nextTick();
const el = chat.value;
if (!el) {
return;
}
const currentChatHeight = el.scrollHeight;
el.scrollTop = oldScrollTop.value + currentChatHeight - oldChatHeight.value;
}
});
onMounted(() => {
setActiveChannel();
doSearch();
eventbus.on("escapekey", closeSearch);
eventbus.on("re-search", doSearch);
});
onUnmounted(() => {
eventbus.off("escapekey", closeSearch);
eventbus.off("re-search", doSearch);
clearSearchState();
});
return {
chat,
loadMoreButton,
messages,
moreResultsAvailable,
network,
channel,
route,
offset,
store,
setActiveChannel,
closeSearch,
shouldDisplayDateMarker,
doSearch,
onShowMoreClick,
jumpToBottom,
jump,
};
},
});
</script>

View file

@ -0,0 +1,56 @@
<template>
<div id="settings" class="window" role="tabpanel" aria-label="Settings">
<div class="header">
<SidebarToggle />
</div>
<Navigation />
<div class="container">
<form ref="settingsForm" autocomplete="off" @change="onChange" @submit.prevent>
<router-view></router-view>
</form>
</div>
</div>
</template>
<script lang="ts">
import {defineComponent} from "vue";
import SidebarToggle from "../SidebarToggle.vue";
import Navigation from "../Settings/Navigation.vue";
import {useStore} from "../../js/store";
export default defineComponent({
name: "Settings",
components: {
SidebarToggle,
Navigation,
},
setup() {
const store = useStore();
const onChange = (event: Event) => {
const ignore = ["old_password", "new_password", "verify_password"];
const name = (event.target as HTMLInputElement).name;
if (ignore.includes(name)) {
return;
}
let value: boolean | string;
if ((event.target as HTMLInputElement).type === "checkbox") {
value = (event.target as HTMLInputElement).checked;
} else {
value = (event.target as HTMLInputElement).value;
}
void store.dispatch("settings/update", {name, value, sync: true});
};
return {
onChange,
};
},
});
</script>

Some files were not shown because too many files have changed in this diff Show more