diff --git a/ChangeLog.md b/ChangeLog.md index 5bb20d24..d00c2f73 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,11 +1,23 @@ # Changelog: * **XX.XX.20** - - Rewrote the channel conversation UI + - Rewrote the channel conversation UI and manager - Several bug fixes like the scrollbar - Updated the channel history view mode - Improved chat box behaviour - Automatically crawling all channels on server join for new messages (requires TeaSpeak 1.4.16-b2 or higher) - + - Improved the channel chat history browsing experience + - Added support for the `qote` bbcode and markdown syntax + - Recoded the private conversation UI and manager + - Improved client disconnect/reconnect handing + - Updated several chat box issues + - Improved history view + - Improved chat experience when chatting with two different users which have the same identity + - Automatically reopening the last open private chats + - Fixed the chat partner typing indicator + - Fixed chat scroll bar after switching tabs + - Fixed the chat "scroll to new messages" button + - Finalized the loader animation + * **12.07.20** - Made the loader compatible with ES5 to support older browsers - Updated the loader animation diff --git a/README.md b/README.md index f0d1634a..8ad2038c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,14 @@ To **report an issue**, then find and push the **New Issue** button, fill all th You can also ask questions here, if you have any. # Browser support: -MS Edge: partitional - No voice support (missing data channel support) - + +| Browser | Supported | +| -- | -- | +| MS Edge | Partitional | +| MS Edge (Chromium) | Yes | +| Chrome | Yes | +| Firefox | Yes | +| Opera | Yes | +| Safari | Yes | +| Internet Explorer | No | diff --git a/file.ts b/file.ts index d0cf2e10..a5bcb724 100644 --- a/file.ts +++ b/file.ts @@ -134,6 +134,7 @@ const APP_FILE_LIST_SHARED_VENDORS: ProjectResource[] = [ "type": "js", "search-pattern": /.*(\.min)?\.js$/, "build-target": "dev|rel", + "search-exclude": /.*xbbcode.*/g, "path": "vendor/", "local-path": "./vendor/" @@ -142,6 +143,7 @@ const APP_FILE_LIST_SHARED_VENDORS: ProjectResource[] = [ "type": "css", "search-pattern": /.*\.css$/, "build-target": "dev|rel", + "search-exclude": /.*xbbcode.*/g, "path": "vendor/", "local-path": "./vendor/" diff --git a/loader/app/animation.ts b/loader/app/animation.ts index d14f616e..6ada9777 100644 --- a/loader/app/animation.ts +++ b/loader/app/animation.ts @@ -37,6 +37,7 @@ function initializeElements() { image.alt = lazyImage.getAttribute("alt"); image.src = lazyImage.getAttribute(apngSupport ? "src-apng" : "src-gif") || lazyImage.getAttribute("src"); image.className = lazyImage.className; + image.draggable = false; lazyImage.replaceWith(image); } diff --git a/loader/app/polifill.ts b/loader/app/polifill.ts index 3acd59a0..712039bc 100644 --- a/loader/app/polifill.ts +++ b/loader/app/polifill.ts @@ -1,9 +1,15 @@ -/* IE11 */ -if(!Element.prototype.remove) - Element.prototype.remove = function() { - this.parentElement?.removeChild(this); - }; +/* IE11 and safari */ +if(Element.prototype.remove === undefined) + Object.defineProperty(Element.prototype, "remove", { + enumerable: false, + configurable: false, + writable: false, + value: function(){ + this.parentElement.removeChild(this); + } + }); +/* IE11 */ function ReplaceWithPolyfill() { let parent = this.parentNode, i = arguments.length, currentNode; if (!parent) return; diff --git a/loader/app/targets/app.ts b/loader/app/targets/app.ts index 118c119b..c861aa11 100644 --- a/loader/app/targets/app.ts +++ b/loader/app/targets/app.ts @@ -63,10 +63,6 @@ const loader_javascript = { await loader.scripts.load_multiple([ ["vendor/jsrender/jsrender.min.js"], - ["vendor/xbbcode/src/parser.js"], - ["vendor/emoji-picker/src/jquery.lsxemojipicker.js"], - ["vendor/twemoji/twemoji.min.js", ""], /* empty string means not required */ - ["vendor/highlight/highlight.pack.js", ""], /* empty string means not required */ ["vendor/remarkable/remarkable.min.js", ""], /* empty string means not required */ ], { cache_tag: cache_tag(), @@ -127,23 +123,6 @@ const loader_webassembly = { const loader_style = { load_style: async taskId => { - const options = { - cache_tag: cache_tag(), - max_parallel_requests: -1 - }; - - await loader.style.load_multiple([ - "vendor/xbbcode/src/xbbcode.css" - ], options, LoaderTaskCallback(taskId)); - - await loader.style.load_multiple([ - "vendor/emoji-picker/src/jquery.lsxemojipicker.css" - ], options, LoaderTaskCallback(taskId)); - - await loader.style.load_multiple([ - ["vendor/highlight/styles/darcula.css", ""], /* empty string means not required */ - ], options, LoaderTaskCallback(taskId)); - if(__build.mode === "debug") { await loader_style.load_style_debug(taskId); } else { @@ -213,24 +192,6 @@ const loader_style = { } }; -/* register tasks */ -loader.register_task(loader.Stage.INITIALIZING, { - name: "safari fix", - function: async () => { - /* safari remove "fix" */ - if(Element.prototype.remove === undefined) - Object.defineProperty(Element.prototype, "remove", { - enumerable: false, - configurable: false, - writable: false, - value: function(){ - this.parentElement.removeChild(this); - } - }); - }, - priority: 50 -}); - loader.register_task(loader.Stage.INITIALIZING, { name: "secure tester", function: async () => { @@ -279,12 +240,6 @@ loader.register_task(loader.Stage.TEMPLATES, { priority: 10 }); -loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "lsx emoji picker setup", - function: async () => await (window as any).setup_lsx_emoji_picker({twemoji: typeof(window.twemoji) !== "undefined"}), - priority: 10 -}); - loader.register_task(loader.Stage.SETUP, { name: "page setup", function: async () => { diff --git a/loader/html/index.html.ejs b/loader/html/index.html.ejs index 81b33761..3e03582f 100644 --- a/loader/html/index.html.ejs +++ b/loader/html/index.html.ejs @@ -68,7 +68,7 @@ var initial_css;