polari issueshttps://gitlab.gnome.org/GNOME/polari/-/issues2024-03-11T16:43:01Zhttps://gitlab.gnome.org/GNOME/polari/-/issues/224Translatable developer and application names2024-03-11T16:43:01ZSabri ÜnalTranslatable developer and application namesIt seems I was wrong about untranslatable developer and application names.
If you think these areas should be translatable you can remove translatable=no tags.
Sorry for my mistake.
```xml
<developer_name translatable="no">Florian M...It seems I was wrong about untranslatable developer and application names.
If you think these areas should be translatable you can remove translatable=no tags.
Sorry for my mistake.
```xml
<developer_name translatable="no">Florian Müllner</developer_name>
<developer id="fmuellner@gnome.org">
<name translatable="no">Florian Müllner</name>
</developer>
```
Code: https://gitlab.gnome.org/GNOME/polari/-/blob/main/data/metainfo/org.gnome.Polari.metainfo.xml.in?ref_type=heads#L27-31
### Also
Appstream decided to use reverse DNS for developer IDs.
> The element should have a id property, containing a unique ID to identify the component developer / development team. It is recommended to use a reverse-DNS name, like org.gnome or io.github.ximion, or a Fediverse handle (like @user@example.org) as ID to achieve a higher chance of uniqueness.
More information: https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-developerhttps://gitlab.gnome.org/GNOME/polari/-/issues/223Polari still runtime depends on GTK3 for thumbnailer2024-03-03T22:08:20ZMart RaudseppPolari still runtime depends on GTK3 for thumbnailersrc/thumbnailer.js used by urlPreview.js via separate gjs call still uses GTK3 explicitly:
```
import Gdk from 'gi://Gdk?version=3.0';
import Gtk from 'gi://Gtk?version=3.0';
```
Looks like a bunch of distros haven't noticed that and h...src/thumbnailer.js used by urlPreview.js via separate gjs call still uses GTK3 explicitly:
```
import Gdk from 'gi://Gdk?version=3.0';
import Gtk from 'gi://Gtk?version=3.0';
```
Looks like a bunch of distros haven't noticed that and have removed the gtk3 deps, thus not guaranteeing thumbnailing by urlPreview will actually work (though gtk3 GIR is probably installed for something else for most users and thus be fine in practice for those users).https://gitlab.gnome.org/GNOME/polari/-/issues/222Can't auth on Quakenet.2024-02-14T10:27:12ZGustav HartvigssonCan't auth on Quakenet.To auth on Quakenet, you need to be able to send a message to `Q@CServe.quakenet.org`, but it seems that it is not possible to do such a thing. When ever a message is sent to the Q bot, on that address, nothing happens.
This is a bug.
...To auth on Quakenet, you need to be able to send a message to `Q@CServe.quakenet.org`, but it seems that it is not possible to do such a thing. When ever a message is sent to the Q bot, on that address, nothing happens.
This is a bug.
An other problem is that passwords being sent to `NickServ` can't be removed, this is a security issue in that, not all IRC networks uses `NickServ`, and may result in sensitive information being sent to a random user.
Thank you for your time,\
Gustav.https://gitlab.gnome.org/GNOME/polari/-/issues/221Appdata screenshots are too large2024-02-12T23:17:50ZTobias BernardAppdata screenshots are too largeThe current screenshots are great in terms of content, but a bit too large. It's [recommended](https://docs.flathub.org/docs/for-app-authors/appdata-guidelines/quality-guidelines/) for appdata screenshots to not be larger than 1000x700 p...The current screenshots are great in terms of content, but a bit too large. It's [recommended](https://docs.flathub.org/docs/for-app-authors/appdata-guidelines/quality-guidelines/) for appdata screenshots to not be larger than 1000x700 pixels to ensure that the UI is easy to see at the thumbnail size GNOME Software and the Flathub website.
https://gitlab.gnome.org/GNOME/polari/-/tree/main/data/appdatahttps://gitlab.gnome.org/GNOME/polari/-/issues/218Polari crashed2023-09-05T12:44:22ZKdwkPolari crashedThis crash does not appear to be connected to a user action. It does not appear to be reproducible.
[gdb (bt full; c).txt](/uploads/1f9faa3810a497c96a3931b8c257c22f/gdb.txt)This crash does not appear to be connected to a user action. It does not appear to be reproducible.
[gdb (bt full; c).txt](/uploads/1f9faa3810a497c96a3931b8c257c22f/gdb.txt)https://gitlab.gnome.org/GNOME/polari/-/issues/215Polari very crashy when trying to load history from ZNC2023-08-18T05:19:06Zbbhttbbhtt.zn0i8@slmail.mePolari very crashy when trying to load history from ZNCI have an account connected with ZNC https://sub-pop.net/post/irccloud-bouncer-polari/. I made it with `mc-tool` on host and moved `~/.local/share/telepathy/mission-control/accounts.cfg` to `~/.var/app/org.gnome.Polari/data/telepathy/mis...I have an account connected with ZNC https://sub-pop.net/post/irccloud-bouncer-polari/. I made it with `mc-tool` on host and moved `~/.local/share/telepathy/mission-control/accounts.cfg` to `~/.var/app/org.gnome.Polari/data/telepathy/mission-control/accounts.cfg` as the Flatpak doesn't have `mc-tool` in it.
Polari constantly crashes on first run when I open a blank room that's trying to load history.
![image](/uploads/3656991be05ed2b74b85108fb5ff32cf/image.png)
Here are some of the crash traces:
```
0x00007ffff7c897cb in slab_allocator_free_chunk (chunk_size=chunk_size@entry=80, mem=mem@entry=0x55555aec4a20) at ../glib/gslice.c:1415
1415 next->prev = prev;
(gdb) bt
#0 0x00007ffff7c897cb in slab_allocator_free_chunk (chunk_size=chunk_size@entry=80, mem=mem@entry=0x55555aec4a20) at ../glib/gslice.c:1415
#1 0x00007ffff7c89ace in magazine_cache_trim (local_allocator=0x7ffff7d4fdc0 <allocator>, stamp=<optimized out>, ix=<optimized out>) at ../glib/gslice.c:725
#2 magazine_cache_push_magazine (ix=<optimized out>, magazine_chunks=<optimized out>, count=20) at ../glib/gslice.c:756
#3 0x00007ffff7c8ac86 in thread_memory_magazine2_unload (tmem=0x7fffe4000b70, ix=<optimized out>) at ../glib/gslice.c:855
#4 g_slice_free1 (mem_size=<optimized out>, mem_block=0x55555ab35300) at ../glib/gslice.c:1167
#5 0x00007ffff7d8cdf9 in g_type_free_instance (instance=0x55555ab35300) at ../gobject/gtype.c:2010
#6 0x00007ffff7ef04be in message_to_write_data_free (data=0x55555a259aa0) at ../gio/gdbusprivate.c:905
#7 write_message_cb (source_object=<optimized out>, res=<optimized out>, user_data=user_data@entry=0x55555a259aa0) at ../gio/gdbusprivate.c:1356
#8 0x00007ffff7e7c483 in g_task_return_now (task=0x7fffe4003980 [GTask]) at ../gio/gtask.c:1232
#9 0x00007ffff7e7c4d5 in complete_in_idle_cb (task=0x7fffe4003980) at ../gio/gtask.c:1246
#10 0x00007ffff7c6a681 in g_main_dispatch (context=<optimized out>) at ../glib/gmain.c:3454
#11 g_main_context_dispatch (context=<optimized out>) at ../glib/gmain.c:4172
#12 0x00007ffff7c6abd8 in g_main_context_iterate (context=0x5555557298a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../glib/gmain.c:4248
#13 0x00007ffff7c6aebf in g_main_loop_run (loop=0x55555572a250) at ../glib/gmain.c:4448
#14 0x00007ffff7eeebf2 in gdbus_shared_thread_func (user_data=0x555555729870) at ../gio/gdbusprivate.c:284
#15 0x00007ffff7c96b49 in g_thread_proxy (data=0x5555557225e0) at ../glib/gthread.c:831
#16 0x00007ffff788f1da in start_thread (arg=<optimized out>) at pthread_create.c:442
#17 0x00007ffff7917f44 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
```
```
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
[Current thread is 1 (Thread 0x7f9c80c3a500 (LWP 2))]
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007f9c828911f3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f9c8283f00e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007f9c828287fc in __GI_abort () at abort.c:79
#4 0x00007f9c82c9d3f9 in mem_error (format=format@entry=0x7f9c82ce9699 "assertion failed: %s") at ../glib/gslice.c:1528
#5 0x00007f9c82c9d766 in slab_allocator_free_chunk (chunk_size=chunk_size@entry=80, mem=mem@entry=0x5583c3b8a080) at ../glib/gslice.c:1403
#6 0x00007f9c82c9dace in magazine_cache_trim (local_allocator=0x7f9c82d63dc0 <allocator>, stamp=<optimized out>, ix=<optimized out>) at ../glib/gslice.c:725
#7 magazine_cache_push_magazine (ix=<optimized out>, magazine_chunks=<optimized out>, count=20) at ../glib/gslice.c:756
#8 0x00007f9c82c9ec86 in thread_memory_magazine2_unload (tmem=0x5583c0fd37d0, ix=<optimized out>) at ../glib/gslice.c:855
#9 g_slice_free1 (mem_size=<optimized out>, mem_block=0x5583c43a18a0) at ../glib/gslice.c:1167
#10 0x00007f9c82da0df9 in g_type_free_instance (instance=0x5583c43a18a0) at ../gobject/gtype.c:2010
#11 0x00007f9c6fade543 in gsk_container_node_finalize (node=0x5583c4358300 [GskContainerNode]) at ../gsk/gskrendernodeimpl.c:2602
#12 0x00007f9c82c91c26 in g_rc_box_release_full (mem_block=0x5583c43a2730, clear_func=0x7f9c6f8c7230 <gtk_text_line_display_finalize>)
at ../glib/grcbox.c:476
#13 0x00007f9c82c998f2 in real_node_free (node=0x5583c4093a00, seq=0x5583c23d1170) at ../glib/gsequence.c:1884
#14 0x00007f9c6f8cf0bd in gtk_text_line_display_cache_invalidate (cache=0x5583c23f7700, cache@entry=<error reading variable: value has been optimized out>)
at ../gtk/gtktextlinedisplaycache.c:355
#15 0x00007f9c6f8cf29a in gtk_text_line_display_cache_blow_cb (data=<error reading variable: value has been optimized out>)
at ../gtk/gtktextlinedisplaycache.c:120
#16 0x00007f9c82c7f37f in g_timeout_dispatch (source=0x5583c435ee80, callback=<optimized out>, user_data=<optimized out>) at ../glib/gmain.c:5017
#17 0x00007f9c82c7e681 in g_main_dispatch (context=<optimized out>) at ../glib/gmain.c:3454
#18 g_main_context_dispatch (context=<optimized out>) at ../glib/gmain.c:4172
#19 0x00007f9c82c7ebd8 in g_main_context_iterate (context=context@entry=0x5583c1045780, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../glib/gmain.c:4248
#20 0x00007f9c82c7ec73 in g_main_context_iteration (context=context@entry=0x5583c1045780, may_block=may_block@entry=1) at ../glib/gmain.c:4313
#21 0x00007f9c82ec2d1d in g_application_run (application=0x5583c1542100 [Gjs_Application], argc=<optimized out>, argv=<optimized out>)
at ../gio/gapplication.c:2573
#22 0x00007f9c82a2b056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#23 0x00007f9c82a29add in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>)
at ../src/x86/ffi64.c:673
#24 0x00007f9c82a2a2b3 in ffi_call (cif=0x5583c11b93f0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>) at ../src/x86/ffi64.c:710
#25 0x00007f9c82ad0f34 in Gjs::Function::invoke(JSContext*, JS::CallArgs const&, JS::Handle<JSObject*>, _GIArgument*)
(this=0x5583c11b93d0, context=0x5583c0ffb220, args=<optimized out>, this_obj=..., r_value=<optimized out>) at ../gi/function.cpp:1041
#26 0x00007f9c82ad1728 in Gjs::Function::call(JSContext*, unsigned int, JS::Value*) (context=0x5583c0ffb220, js_argc=<optimized out>, vp=<optimized out>)
at ../gi/function.cpp:1221
#27 0x00007f9c81966990 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&)
(args=..., reason=js::CallReason::Call, native=0x7f9c82ad1640 <Gjs::Function::call(JSContext*, unsigned int, JS::Value*)>, cx=0x5583c0ffb220)
at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:420
#28 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)
--Type <RET> for more, q to quit, c to continue without paging--c
(cx=0x5583c0ffb220, args=..., construct=<optimized out>, reason=js::CallReason::Call) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:493
#29 0x00007f9c8195a487 in InternalCall (reason=<optimized out>, args=<optimized out>, cx=<optimized out>) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:574
#30 js::CallFromStack(JSContext*, JS::CallArgs const&) (args=<optimized out>, cx=<optimized out>) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:578
#31 Interpret(JSContext*, js::RunState&) (cx=0x5583c0ffb220, state=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:3314
#32 0x00007f9c8196615b in js::RunScript(JSContext*, js::RunState&) (cx=0x5583c0ffb220, state=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:389
#33 0x00007f9c819684fa in js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, js::AbstractFramePtr, JS::MutableHandle<JS::Value>) (result=..., evalInFrame=..., envChainArg=..., script=..., cx=0x5583c0ffb220) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:781
#34 js::Execute(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) (cx=0x5583c0ffb220, script=script@entry=..., envChain=envChain@entry=..., rval=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:813
#35 0x00007f9c819c30f7 in js::ModuleObject::execute(JSContext*, JS::Handle<js::ModuleObject*>, JS::MutableHandle<JS::Value>) (cx=<optimized out>, self=self@entry=..., rval=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/builtin/ModuleObject.cpp:1249
#36 0x00007f9c81b37b48 in intrinsic_ExecuteModule(JSContext*, unsigned int, JS::Value*) (cx=<optimized out>, argc=<optimized out>, vp=<optimized out>) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/SelfHosting.cpp:1891
#37 0x00003e51319cd4e0 in ()
#38 0x0000000000000000 in ()
```
It settles down after the history is loaded, and URL previews generated (restarting polari after each crash)
Polari is from Flathub
Not sure how reproducible this is but in my case:
1. Join a large room like #linux
2. Have enough history so that you can scroll a few times
3. Open #linux or try to scroll
4. Crasheshttps://gitlab.gnome.org/GNOME/polari/-/issues/214Polari crashes the whole desktop and logs the user out2023-08-06T12:51:44ZFrancis BaldonPolari crashes the whole desktop and logs the user outI'm on openSUSE Aeon and Polari is installed from Flathub. How do I get and attach the log?I'm on openSUSE Aeon and Polari is installed from Flathub. How do I get and attach the log?https://gitlab.gnome.org/GNOME/polari/-/issues/213Polari can lose channels list if closed early2023-04-12T08:51:05ZBastien NoceraPolari can lose channels list if closed earlyThere are a couple of places in the roomManager where `saved-channel-list` can be set, and I wonder if there are cases, such as shutting down the app early, where an incomplete channel list can be set.
This would explain why I lost my c...There are a couple of places in the roomManager where `saved-channel-list` can be set, and I wonder if there are cases, such as shutting down the app early, where an incomplete channel list can be set.
This would explain why I lost my channels list a couple of weeks ago.https://gitlab.gnome.org/GNOME/polari/-/issues/209Warning after pressing "Join" in channels dialogue2022-11-28T14:04:52ZBastien NoceraWarning after pressing "Join" in channels dialogueUsing Polari from Flathub:
```
(polari:257): Gjs-CRITICAL **: 15:01:39.415: JS ERROR: TypeError: (intermediate value).get_current_event_device is not a function
ServerRoomList/<@resource:///org/gnome/Polari/js/serverRoomManager.js:183:27...Using Polari from Flathub:
```
(polari:257): Gjs-CRITICAL **: 15:01:39.415: JS ERROR: TypeError: (intermediate value).get_current_event_device is not a function
ServerRoomList/<@resource:///org/gnome/Polari/js/serverRoomManager.js:183:27
@resource:///org/gnome/Polari/js/main.js:42:13
```https://gitlab.gnome.org/GNOME/polari/-/issues/208Becomes unresponsive after typing in room manager2023-10-26T21:46:19ZBastien NoceraBecomes unresponsive after typing in room managerUsing Polari from Flathub, the room manager (channels list) became unresponsive to clicks, after I tried typing `gnome-sysadmin` in the channels search entry while having the "Libera Chat" server selected. The parent window could still b...Using Polari from Flathub, the room manager (channels list) became unresponsive to clicks, after I tried typing `gnome-sysadmin` in the channels search entry while having the "Libera Chat" server selected. The parent window could still be resized by moving the dialogue by its header bar, and buttons were still highlight, but clicks didn't do anything.
```
(polari:183): Gjs-CRITICAL **: 14:55:47.169: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), or remove() vfuncs. Because it would crash the application, it has been blocked.
(polari:183): Gjs-CRITICAL **: 14:55:47.169: The offending callback was TreeModelForeachFunc().
== Stack trace for context 0x55b94ad7d190 ==
#0 7ffe7e4b2e40 b resource:///org/gnome/Polari/js/serverRoomManager.js:251 (5726e5ff380 @ 141)
#1 7ffe7e4b2ef0 b resource:///org/gnome/Polari/js/serverRoomManager.js:152 (5726e5faf10 @ 13)
#2 55b94ae9a288 i resource:///org/gnome/Polari/js/main.js:42 (5726e58c5b0 @ 505)
#3 7ffe7e4b61c0 b self-hosted:2355 (5726e5739c0 @ 674)
#4 55b94ae9a1b8 i self-hosted:2312 (5726e573970 @ 328)
(polari:183): Gjs-CRITICAL **: 14:55:47.169: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), or remove() vfuncs. Because it would crash the application, it has been blocked.
(polari:183): Gjs-CRITICAL **: 14:55:47.169: The offending callback was TreeModelFilterVisibleFunc().
== Stack trace for context 0x55b94ad7d190 ==
#0 7ffe7e4b2e40 b resource:///org/gnome/Polari/js/serverRoomManager.js:263 (5726e5ff380 @ 229)
#1 7ffe7e4b2ef0 b resource:///org/gnome/Polari/js/serverRoomManager.js:152 (5726e5faf10 @ 13)
#2 55b94ae9a288 i resource:///org/gnome/Polari/js/main.js:42 (5726e58c5b0 @ 505)
#3 7ffe7e4b61c0 b self-hosted:2355 (5726e5739c0 @ 674)
#4 55b94ae9a1b8 i self-hosted:2312 (5726e573970 @ 328)
(polari:183): Gjs-CRITICAL **: 14:55:47.171: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), or remove() vfuncs. Because it would crash the application, it has been blocked.
(polari:183): Gjs-CRITICAL **: 14:55:47.171: The offending callback was SourceFunc().
== Stack trace for context 0x55b94ad7d190 ==
#0 55b94ae9a288 i resource:///org/gnome/Polari/js/main.js:42 (5726e58c5b0 @ 505)
#1 7ffe7e4b61c0 b self-hosted:2355 (5726e5739c0 @ 674)
#2 55b94ae9a1b8 i self-hosted:2312 (5726e573970 @ 328)
```
With the last warning repeating until I killed the application.https://gitlab.gnome.org/GNOME/polari/-/issues/206Crashes when clicking "End conversation"2022-09-13T09:11:53ZBastien NoceraCrashes when clicking "End conversation"Crash clicking "End conversation" using current Flathub version
```
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x00007fefb7f18857 in __GI_abort () at abort.c:79
#2 0x00007fefb82b1c5c in g_assertion_me...Crash clicking "End conversation" using current Flathub version
```
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x00007fefb7f18857 in __GI_abort () at abort.c:79
#2 0x00007fefb82b1c5c in g_assertion_message (domain=<optimized out>, file=<optimized out>, line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../glib/gtestutils.c:3253
#3 0x00007fefb83153f7 in g_assertion_message_expr (domain=domain@entry=0x7fefb1f1e41a "Gtk", file=file@entry=0x7fefb1f7de11 "../gtk/gtkwidget.c", line=line@entry=7720, func=func@entry=0x7fefb1f81620 <__func__.197> "gtk_widget_real_unrealize", expr=expr@entry=0x7fefb1f7de60 "!priv->mapped") at ../glib/gtestutils.c:3279
#4 0x00007fefb1d44071 in gtk_widget_real_unrealize (widget=<optimized out>) at ../gtk/gtkwidget.c:7720
#5 0x00007fefb1c35d36 in gtk_popover_unrealize (widget=0x558325fc66b0 [Gjs_RoomRowPopover]) at ../gtk/gtkpopover.c:972
#6 0x00007fefb83e56ce in _g_closure_invoke_va (closure=closure@entry=0x558325e01910, return_value=return_value@entry=0x0, instance=instance@entry=0x558325fc66b0, args=args@entry=0x7ffd2bd4dc70, n_params=0, param_types=0x0) at ../gobject/gclosure.c:893
#7 0x00007fefb83ffd6b in g_signal_emit_valist (instance=0x558325fc66b0, signal_id=36, detail=<optimized out>, var_args=var_args@entry=0x7ffd2bd4dc70) at ../gobject/gsignal.c:3406
#8 0x00007fefb83fff83 in g_signal_emit (instance=instance@entry=0x558325fc66b0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3553
#9 0x00007fefb1d34c46 in gtk_widget_unrealize (widget=0x558325fc66b0 [Gjs_RoomRowPopover]) at ../gtk/gtkwidget.c:3485
#10 0x00007fefb1d43ff4 in gtk_widget_forall (widget=<optimized out>, callback=0x7fefb1d34bd0 <gtk_widget_unrealize>, user_data=0x0) at ../gtk/gtkwidget.c:11998
#11 0x00007fefb1d44089 in gtk_widget_real_unrealize (widget=0x55832b1d68d0 [Gjs_RoomRow]) at ../gtk/gtkwidget.c:7728
#12 0x00007fefb83e5798 in _g_closure_invoke_va (closure=closure@entry=0x558325e01910, return_value=return_value@entry=0x0, instance=instance@entry=0x55832b1d68d0, args=args@entry=0x7ffd2bd4dfb0, n_params=0, param_types=0x0) at ../gobject/gclosure.c:893
#13 0x00007fefb83ffd6b in g_signal_emit_valist (instance=0x55832b1d68d0, signal_id=36, detail=<optimized out>, var_args=var_args@entry=0x7ffd2bd4dfb0) at ../gobject/gsignal.c:3406
#14 0x00007fefb83fff83 in g_signal_emit (instance=instance@entry=0x55832b1d68d0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3553
#15 0x00007fefb1d34c46 in gtk_widget_unrealize (widget=0x55832b1d68d0 [Gjs_RoomRow]) at ../gtk/gtkwidget.c:3485
#16 0x00007fefb1d447d8 in gtk_widget_unparent (widget=0x55832b1d68d0 [Gjs_RoomRow]) at ../gtk/gtkwidget.c:2593
#17 0x00007fefb1beff1e in gtk_list_box_remove (box=0x558325e4a710 [Gjs_RoomList], child=0x55832b1d68d0 [Gjs_RoomRow]) at ../gtk/gtklistbox.c:2410
#18 0x00007fefb7e31fe5 in ffi_call_unix64 () at ../src/x86/unix64.S:101
#19 0x00007fefb7e313f6 in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:669
#20 0x00007fefb814b8b5 in Gjs::Function::invoke(JSContext*, JS::CallArgs const&, JS::Handle<JSObject*>, _GIArgument*) (this=0x55832893ea00, context=0x5583259f1ac0, args=..., this_obj=..., r_value=0x0) at ../gi/function.cpp:968
#21 0x00007fefb814c32a in Gjs::Function::call(JSContext*, unsigned int, JS::Value*) (context=0x5583259f1ac0, js_argc=<optimized out>, vp=<optimized out>) at ../gi/function.cpp:1148
#22 0x00007fefb6f573a0 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) (args=..., reason=js::CallReason::Call, native=0x7fefb814c250 <Gjs::Function::call(JSContext*, unsigned int, JS::Value*)>, cx=0x5583259f1ac0) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:426
#23 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (cx=0x5583259f1ac0, args=..., construct=<optimized out>, reason=js::CallReason::Call) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:497
#24 0x00007fefb6f49e29 in js::CallFromStack(JSContext*, JS::CallArgs const&) (args=<optimized out>, cx=<optimized out>) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:575
#25 Interpret(JSContext*, js::RunState&) (cx=0x5583259f1ac0, state=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:3226
#26 0x00007fefb6f56abb in js::RunScript(JSContext*, js::RunState&) (cx=0x5583259f1ac0, state=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:395
#27 0x00007fefb6f56f43 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (cx=0x5583259f1ac0, args=..., construct=js::NO_CONSTRUCT, reason=<optimized out>) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:543
#28 0x00007fefb6f58617 in InternalCall (reason=js::CallReason::Call, args=..., cx=0x5583259f1ac0) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:571
#29 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) (cx=cx@entry=0x5583259f1ac0, fval=..., fval@entry=..., thisv=..., thisv@entry=..., args=..., rval=rval@entry=..., reason=reason@entry=js::CallReason::Call) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/vm/Interpreter.cpp:588
#30 0x00007fefb755b497 in js::jit::InvokeFunction(JSContext*, JS::Handle<JSObject*>, bool, bool, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) (cx=0x5583259f1ac0, obj=..., constructing=<optimized out>, ignoresReturnValue=<optimized out>, argc=2, argv=0x7ffd2bd4ef00, rval=...) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/jit/VMFunctions.cpp:760
#31 0x00007fefb755b96e in js::jit::InvokeFromInterpreterStub(JSContext*, js::jit::InterpreterStubExitFrameLayout*) (cx=<optimized out>, frame=0x7ffd2bd4eed8) at /usr/lib/debug/source/sdk/mozjs.bst/js/src/jit/VMFunctions.cpp:784
(gdb) frame 4
#4 0x00007fefb1d44071 in gtk_widget_real_unrealize (widget=<optimized out>) at ../gtk/gtkwidget.c:7720
7720 g_assert (!priv->mapped);
(gdb) p priv
$1 = (GtkWidgetPrivate *) 0x558325fc6560
(gdb) p priv->mapped
$2 = 1
```
Not sure how that could happen, might be a problem in GTK4.https://gitlab.gnome.org/GNOME/polari/-/issues/205crashing tpl_log_iter_pidgin_get_events2022-11-28T13:52:46Zaxetcrashing tpl_log_iter_pidgin_get_eventspolari 42.1-1 amd64
```
#0 0x00007f0290dd2cbe in tpl_log_iter_pidgin_get_events (iter=<optimized out>, num_events=5, error=<optimized out>) at log-iter-pidgin.c:87
#1 0x00007f0290ddf0f1 in tpl_log_walker_fill_cache_async_thread
...polari 42.1-1 amd64
```
#0 0x00007f0290dd2cbe in tpl_log_iter_pidgin_get_events (iter=<optimized out>, num_events=5, error=<optimized out>) at log-iter-pidgin.c:87
#1 0x00007f0290ddf0f1 in tpl_log_walker_fill_cache_async_thread
(simple=0x561469081810 [GSimpleAsyncResult], object=<optimized out>, cancellable=<optimized out>) at log-walker.c:310
#2 0x00007f02bde4d524 in run_in_thread (job=<optimized out>, c=0x0, _data=0x561467d15380) at ../../../gio/gsimpleasyncresult.c:899
#3 0x00007f02bde2ef76 in io_job_thread (task=<optimized out>, source_object=<optimized out>, task_data=0x561469082900, cancellable=<optimized out>)
at ../../../gio/gioscheduler.c:85
#4 0x00007f02bde62bd3 in g_task_thread_pool_thread (thread_data=0x56146908a840, pool_data=<optimized out>) at ../../../gio/gtask.c:1452
#5 0x00007f02bdc9842a in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:354
#6 0x00007f02bdc97a4d in g_thread_proxy (data=0x7f02800aec60) at ../../../glib/gthread.c:827
#7 0x00007f02bd91eb27 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:435
#8 0x00007f02bd9a178c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
```https://gitlab.gnome.org/GNOME/polari/-/issues/203Rework the way to remove a custom network2022-03-22T17:04:35ZAlban BrowaeysRework the way to remove a custom networkFollowing obsolete documentation, I added irc.kde.org which is no more.
By trial and error I found that to remove it from the list of Networks in the join room UI, this was a matter of deleting the network from the left pane main Polari...Following obsolete documentation, I added irc.kde.org which is no more.
By trial and error I found that to remove it from the list of Networks in the join room UI, this was a matter of deleting the network from the left pane main Polari window, with the contextual menu.
As I had a hard time finding this I feel this way is not intuitive.
I believe the non-intuitiveness stems from that the fact that to delete we need to popup the contextual menu while there is a button to create it.
At least I believe this should be given a second eye.
Maybe add an edit mode to the left pane with checkboxes right to the networks names and a batch delete button (this could also apply to rooms).https://gitlab.gnome.org/GNOME/polari/-/issues/201Convert three assignment statements to the usage of compound operators2021-12-18T17:17:53ZMarkus ElfringConvert three assignment statements to the usage of compound operators:eyes: Some source code analysis tools can help to find opportunities for improving software components.
:thought_balloon: I propose to [increase the usage of compound operators](https://262.ecma-international.org/12.0/#sec-assignment-o...:eyes: Some source code analysis tools can help to find opportunities for improving software components.
:thought_balloon: I propose to [increase the usage of compound operators](https://262.ecma-international.org/12.0/#sec-assignment-operators "Description for assignment operators") accordingly.
```diff
diff --git a/src/accountsMonitor.js b/src/accountsMonitor.js
index 685916d8..d0d21ca8 100644
--- a/src/accountsMonitor.js
+++ b/src/accountsMonitor.js
@@ -296,7 +296,7 @@ const PolariAccount = GObject.registerClass({
params['use-ssl'] = !!params['use-ssl'];
let defaultPort = params['use-ssl'] ? 6697 : 6667;
- params['port'] = params['port'] || defaultPort;
+ params['port'] ||= defaultPort;
return params;
}
diff --git a/src/chatView.js b/src/chatView.js
index f6f7c5ea..4c19ad29 100644
--- a/src/chatView.js
+++ b/src/chatView.js
@@ -158,7 +158,7 @@ const TextView = GObject.registerClass({
}, this.get_pixels_below_lines());
let lineSpace = Math.floor((pixelsAbove + pixelsBelow) / 2);
- y = y - lineSpace + 0.5;
+ y -= lineSpace - 0.5;
let width = this.get_allocated_width() - 2 * MARGIN;
diff --git a/src/telepathyClient.js b/src/telepathyClient.js
index 8f4215c4..f2748c46 100644
--- a/src/telepathyClient.js
+++ b/src/telepathyClient.js
@@ -490,7 +490,7 @@ class TelepathyClient extends Tp.BaseClient {
});
let reason = Tp.ChannelGroupChangeReason.NONE;
- message = message || _('Good Bye');
+ message ||= _('Good Bye');
try {
await room.channel.leave_async(reason, message);
} catch (e) {
```https://gitlab.gnome.org/GNOME/polari/-/issues/200[Feature request] Don't show the URL preview image when the network is not av...2021-12-03T07:10:19Zrclobus[Feature request] Don't show the URL preview image when the network is not availableRequest: When _hasNetwork() returns false, don't create an URL preview box, because it takes up a lot of space, and does not show meaningful content.
I've found the code here: https://sources.debian.org/src/polari/41.0-2/src/urlPreview....Request: When _hasNetwork() returns false, don't create an URL preview box, because it takes up a lot of space, and does not show meaningful content.
I've found the code here: https://sources.debian.org/src/polari/41.0-2/src/urlPreview.js/
To reproduce: mark your network connection as metered and request a URL in polari.https://gitlab.gnome.org/GNOME/polari/-/issues/195Text in chat window displayed underneath text entry2022-02-23T14:34:08ZBastien NoceraText in chat window displayed underneath text entryIn some circumstances text will be displayed underneath the text entry instead of scrolling up. This seems to be a problem since the GNOME 41 release and the GTK4 port.In some circumstances text will be displayed underneath the text entry instead of scrolling up. This seems to be a problem since the GNOME 41 release and the GTK4 port.https://gitlab.gnome.org/GNOME/polari/-/issues/191Can't join a channels2021-09-20T08:11:18ZCharles-Antoine CouretCan't join a channelsWhen trying to join a new channel, I can enter the channel name but in clicking on it, the checkbox is not set then Polari is freezing and consuming a lot of CPU.
This error is repeating forever in the logs:
```
sept. 20 09:52:56 Bisho...When trying to join a new channel, I can enter the channel name but in clicking on it, the checkbox is not set then Polari is freezing and consuming a lot of CPU.
This error is repeating forever in the logs:
```
sept. 20 09:52:56 Bishop polari[2796]: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), >
sept. 20 09:52:56 Bishop polari[2796]: The offending callback was SourceFunc().
```https://gitlab.gnome.org/GNOME/polari/-/issues/190Soft wrap in entryArea2021-09-10T01:30:06ZJacob MealeySoft wrap in entryAreaWhen a user writes a message that is longer than the width of the Entry it scrolls sideways. Instead it could be better to have it soft wrap the text onto a new line. I know that the GTK Entry's behavior is to stay on one line and scroll...When a user writes a message that is longer than the width of the Entry it scrolls sideways. Instead it could be better to have it soft wrap the text onto a new line. I know that the GTK Entry's behavior is to stay on one line and scroll sideways so I'm not entirely sure how to approach this.
Regardless of how this issue is approached, I think it would make writing longer messages more pleasant.https://gitlab.gnome.org/GNOME/polari/-/issues/186No way to enter commands as per user manual2021-09-05T14:39:56ZJason HeerisNo way to enter commands as per user manualI started up Polari 3.38 (on Gnome 3.38.5, Ubuntu 21.04) and configured it to connect to `libera.chat`. The first thing I want to do is sort out my nickname, backup nickname and password. According to both [Libera's documentation](https:...I started up Polari 3.38 (on Gnome 3.38.5, Ubuntu 21.04) and configured it to connect to `libera.chat`. The first thing I want to do is sort out my nickname, backup nickname and password. According to both [Libera's documentation](https://libera.chat/guides/registration) and [Polari's user manual](https://help.gnome.org/users/polari/stable/irc-nick-password.html.en) I can do this by sending a private message to the `NickServ` user. Specifically, the user manual says to use the following command:
/msg NickServ identify username password
But it does not say *how*. Here's a screenshot of what I see.
![polari](/uploads/a01fffec07b09054385db7241845e961/polari.png)
There is no obvious text box or command entry area. The `+` button prompts me to join a chat room, but says nothing about messaging individual users. There's also nothing about this in the drop down menu on the network name, the settings menu, or the application menu.
Where do I enter commands? Or, if it's not intended for Polari users to enter IRC commands directly, why does the user manual mention them?https://gitlab.gnome.org/GNOME/polari/-/issues/185Detect why channels can't be joined2021-11-12T17:04:40ZBastien NoceraDetect why channels can't be joinedWhen trying to join OFTC channels, it's possible that the IRC server will refuse to let us join. It can be a lack of identification:
```
** (telepathy-idle:3): DEBUG: 14:25:39.531: _parse_message: parsing ":coulomb.oftc.net 477 hadess #g...When trying to join OFTC channels, it's possible that the IRC server will refuse to let us join. It can be a lack of identification:
```
** (telepathy-idle:3): DEBUG: 14:25:39.531: _parse_message: parsing ":coulomb.oftc.net 477 hadess #gstreamer :Cannot join channel (Need to be identified and verified to join this channel, '/msg NickServ help' to learn how to register and verify.)"
```
Or the fact that the [channel was joined using an insecure channel](https://gitlab.gnome.org/GNOME/polari/-/issues/181).
It would be very useful if Polari could at least show that an error occurred joining that channel, rather than simply the "..." icon as that implies that the connection is still "in progress" when it's definitely failed. Being able to show that error message would probably help diagnose problems, as a next step.