OverviewFilesCommitsIssuesDocsReleasesPeers

ollama_semantic_function_calling commits / 9bd5d60

removing keet repomix
9bd5d608ff479583b8ab04d0a2afb2924592a3d5
by fleeky.ashatron <fleeky@7rnx.net> · 2025-05-13T16:44:33.000Z

Changed files (1) +0 -3412

ollamatools-new/keet/repomix-output.xml +0 -3412
……@@ -1,3412 +0,0 @@
1This file is a merged representation of a subset of the codebase, containing files not matching ignore patterns, combined into a single document by Repomix.
2The content has been processed where content has been compressed (code blocks are separated by ⋮---- delimiter).
3
4<file_summary>
5This section contains a summary of this file.
6
7<purpose>
8This file contains a packed representation of the entire repository's contents.
9It is designed to be easily consumable by AI systems for analysis, code review,
10or other automated processes.
11</purpose>
12
13<file_format>
14The content is organized as follows:
151. This summary section
162. Repository information
173. Directory structure
184. Repository files, each consisting of:
19 - File path as an attribute
20 - Full contents of the file
21</file_format>
22
23<usage_guidelines>
24- This file should be treated as read-only. Any changes should be made to the
25 original repository files, not this packed version.
26- When processing this file, use the file path to distinguish
27 between different files in the repository.
28- Be aware that this file may contain sensitive information. Handle it with
29 the same level of security as you would the original repository.
30</usage_guidelines>
31
32<notes>
33- Some files may have been excluded based on .gitignore rules and Repomix's configuration
34- Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files
35- Files matching these patterns are excluded: **/*.svg
36- Files matching patterns in .gitignore are excluded
37- Files matching default ignore patterns are excluded
38- Content has been compressed - code blocks are separated by ⋮---- delimiter
39- Files are sorted by Git change count (files with more changes are at the bottom)
40</notes>
41
42<additional_info>
43
44</additional_info>
45
46</file_summary>
47
48<directory_structure>
49assets/
50 css/
51 components/
52 copy-button.css
53 device.css
54 form-progress-head.css
55 profile-settings/
56 devices/
57 devices-main.css
58 devices-sync.css
59 wallet/
60 wallet-configuration.css
61 wallet-import-configuration.css
62 wallet-transfers.css
63 wallets-setup.css
64 profile-languages.css
65 profile-network-status.css
66 profile-recover.css
67 profile-settings-body.css
68 profile-settings-error.css
69 profile-settings-footer.css
70 profile-settings-header.css
71 profile-settings-list-item-dev.css
72 profile-settings-list.css
73 profile-settings.css
74 software-version.css
75 room-info/
76 room-info-body.css
77 room-info-header.css
78 room-info.css
79 room-list/
80 room-list-item.css
81 setup-layout/
82 setup-identity-backup-layout.css
83 setup-identity-root-layout.css
84 setup-identity-sync-device-layout.css
85 setup-layout.css
86 account-secret-phrase-view.css
87 app.css
88 call-members-preview.css
89 chat-editor.css
90 chat.css
91 emoji-picker.css
92 emojis.css
93 fonts.css
94 invite-modal.css
95 lg-video.css
96 lightgallery.css
97 main.css
98 notifications.css
99 reset.css
100 room-start.css
101 screen-share-permissions.css
102 seek-slider.css
103 split.css
104 sync-devices-request-popup.css
105 tos.css
106 tour.css
107patches/
108 react-refresh+0.14.2.patch
109workers/
110 compute/
111 index.js
112 package.json
113.mise.toml
114CHANGELOG.md
115index.html
116jest.config.js
117package.json
118</directory_structure>
119
120<files>
121This section contains the contents of the repository's files.
122
123<file path="assets/css/components/copy-button.css">
124.copy-button {
125⋮----
126.copy-button > span {
127⋮----
128.copy-button:hover {
129⋮----
130.copy-button:focus {
131⋮----
132.copy-button > svg {
133</file>
134
135<file path="assets/css/components/device.css">
136.identity-device {
137⋮----
138.identity-device > *:last-child {
139⋮----
140.identity-device .circle-check {
141</file>
142
143<file path="assets/css/components/form-progress-head.css">
144.form-progress {
145⋮----
146.form-progress > div {
147⋮----
148.form-progress > div.active {
149⋮----
150.form-progress-head {
151⋮----
152.form-progress-head__left {
153⋮----
154.form-progress-head__right {
155</file>
156
157<file path="assets/css/profile-settings/devices/devices-main.css">
158.profile-devices-main {
159⋮----
160.profile-devices-main__list-loading {
161⋮----
162.profile-devices-main__list-item {
163⋮----
164.profile-devices-main__list-item:last-child {
165⋮----
166.profile-devices-main__list-item-title {
167⋮----
168.profile-devices-main__add {
169⋮----
170.profile-devices-main__add button {
171⋮----
172.profile-devices-main__anonymous {
173</file>
174
175<file path="assets/css/profile-settings/devices/devices-sync.css">
176.profile-devices-add__form {
177⋮----
178.profile-devices-add__form-qrcode {
179⋮----
180.profile-devices-add__form-qrcode-title {
181⋮----
182.profile-devices-add__form-qrcode-code {
183.profile-devices-add__form-qrcode-code > qr-code::part(table) {
184⋮----
185.profile-devices-add__form-list-loading {
186⋮----
187.profile-devices-add__form-list-item {
188⋮----
189.profile-devices-add__form-list-item-title {
190⋮----
191.profile-devices-add__form-add {
192⋮----
193.profile-devices-add__form-add button {
194⋮----
195.profile-devices-add__form-message {
196</file>
197
198<file path="assets/css/profile-settings/wallet/wallet-configuration.css">
199.wallet-configuration {
200⋮----
201.wallet-configuration input[type=text] {
202⋮----
203.wallet-configuration input[type=text]:focus {
204⋮----
205.wallet-configuration [type=text]::placeholder {
206⋮----
207.wallet-configuration label {
208⋮----
209.wallet-configuration label.right {
210⋮----
211.wallet-configuration-header {
212⋮----
213.wallet-configuration-header img {
214⋮----
215.wallet-configuration-header span {
216⋮----
217#wallet-configuration-form {
218⋮----
219.wallet-configuration-choose {
220⋮----
221.wallet-configuration-choose > button {
222⋮----
223.wallet-configuration-choose > button.enabled {
224⋮----
225.wallet-configuration-btn-spinner {
226⋮----
227.wallet-configuration-save, .remove-configuration {
228⋮----
229.wallet-configuration-save {
230⋮----
231.wallet-configuration-save:disabled {
232⋮----
233.remove-configuration {
234</file>
235
236<file path="assets/css/profile-settings/wallet/wallet-import-configuration.css">
237.wallet-import-configuration {
238⋮----
239.wallet-import-configuration p {
240⋮----
241.wallet-import-configuration__screen {
242⋮----
243.wallet-import-configuration input[type=text] {
244⋮----
245.wallet-import-configuration input[type=text]:focus {
246⋮----
247.wallet-import-configuration input[type=text]::-webkit-input-placeholder {
248⋮----
249.wallet-import-configuration input[type=file] {
250⋮----
251.wallet-import-configuration__submit, .wallet-import-configuration__browse {
252⋮----
253.wallet-import-configuration__submit {
254⋮----
255.wallet-import-configuration__submit:disabled {
256⋮----
257.wallet-import-configuration__browse {
258⋮----
259.wallet-import-configuration__filepath-label {
260⋮----
261.wallet-import-configuration__folder {
262⋮----
263.wallet-import-configuration__path {
264</file>
265
266<file path="assets/css/profile-settings/wallet/wallet-transfers.css">
267.wallet-transfers {
268⋮----
269.wallet-transfers__content {
270⋮----
271.wallet-transfers__loader {
272⋮----
273.wallet-transfers__loader-text {
274⋮----
275.wallet-transfers__error-background {
276⋮----
277.wallet-transfers__balance {
278⋮----
279.wallet-transfers__balance-title {
280⋮----
281.wallet-transfers__balance-amount {
282⋮----
283.wallet-transfers__balance-amount span:first-child {
284⋮----
285.wallet-transfers__loader-spinner {
286⋮----
287.wallet-transfers__empty {
288⋮----
289.wallet-transfers__list {
290⋮----
291.wallet-transfers__transaction {
292⋮----
293.wallet-transfers__transaction-details {
294⋮----
295.wallet-transfers__transaction-details > div {
296⋮----
297.wallet-transfers__transaction-tx {
298⋮----
299.wallet-transfers__transaction-user {
300⋮----
301.wallet-transfers__transaction-date {
302⋮----
303.transfer-timestamp span {
304⋮----
305.wallet-transfers__transaction-pic {
306⋮----
307.wallet-transfers__transaction-description {
308⋮----
309.received-payment-icon, .sent-payment-icon {
310⋮----
311.wallet-transfers__transaction-amount {
312⋮----
313.wallet-transfers__transaction-amount span:first-child {
314⋮----
315.wallet-transfers__transaction-amount span:nth-child(2) {
316</file>
317
318<file path="assets/css/profile-settings/wallet/wallets-setup.css">
319.wallets-setup {
320⋮----
321.wallets-setup > p {
322⋮----
323.wallets-setup > button {
324</file>
325
326<file path="assets/css/profile-settings/profile-languages.css">
327.profile-languages {
328⋮----
329.profile-languages ul li {
330⋮----
331.profile-languages ul li.selected {
332</file>
333
334<file path="assets/css/profile-settings/profile-network-status.css">
335.profile-network-status {
336⋮----
337.profile-network-status__grid {
338⋮----
339.profile-network-status__content {
340⋮----
341.profile-network-status__grid > div > div {
342⋮----
343.profile-network-status__btns {
344⋮----
345.profile-network-status__grid > div > div:first-child {
346</file>
347
348<file path="assets/css/profile-settings/profile-recover.css">
349.profile-recover__form {
350⋮----
351.profile-recover__form-title {
352⋮----
353.profile-recover__form-desc {
354⋮----
355.profile-recover__form-textarea {
356⋮----
357.profile-recover__form-textarea-valid {
358⋮----
359.profile-recover__form-textarea-error {
360⋮----
361.profile-recover__form-error {
362⋮----
363.profile-recover__form-submit {
364⋮----
365.profile-recover__confirmation-header {
366⋮----
367.profile-recover__success {
368⋮----
369.profile-recover__success-text {
370⋮----
371.profile-recover__success-text span:last-child {
372⋮----
373.profile-recover__success-submit {
374⋮----
375.profile-recover__declined {
376⋮----
377.profile-recover__declined-text {
378⋮----
379.profile-recover__declined-text span:last-child {
380⋮----
381.profile-recover__declined-submit {
382⋮----
383/* SYNCING VIEW */
384⋮----
385.profile-recover__syncing {
386⋮----
387.profile-recover__syncing-content {
388⋮----
389.profile-recover__syncing h4 {
390⋮----
391.profile-recover__syncing p {
392⋮----
393.profile-recover__syncing-submit {
394⋮----
395/* SEARCHING VIEW */
396⋮----
397.profile-recover__searching {
398⋮----
399.profile-recover__searching-content {
400⋮----
401.profile-recover__searching-submit {
402⋮----
403/* AGREEMENT VIEW */
404⋮----
405.profile-recover__agreement {
406⋮----
407.profile-recover__agreement-head {
408⋮----
409.profile-recover__agreement-content {
410⋮----
411.profile-recover__agreement-content p {
412⋮----
413.profile-recover__agreement-checkbox {
414⋮----
415.profile-recover__agreement-checkbox input[type=checkbox] {
416</file>
417
418<file path="assets/css/profile-settings/profile-settings-body.css">
419.profile-settings-body {
420⋮----
421.profile-settings-body__scrollable {
422</file>
423
424<file path="assets/css/profile-settings/profile-settings-error.css">
425.profile-settings-error {
426</file>
427
428<file path="assets/css/profile-settings/profile-settings-footer.css">
429.profile-settings-footer {
430⋮----
431.profile-settings-footer a,
432⋮----
433.profile-settings-footer a {
434⋮----
435.profile-settings-footer a:hover {
436⋮----
437.profile-settings-footer a:hover span {
438⋮----
439.profile-settings-footer a svg {
440</file>
441
442<file path="assets/css/profile-settings/profile-settings-header.css">
443.profile-settings-header {
444⋮----
445.profile-settings-header__border {
446⋮----
447.profile-settings-header__icons {
448⋮----
449.profile-settings-header__icons > * {
450⋮----
451.profile-settings-header__go-back {
452⋮----
453.profile-settings-header__left {
454⋮----
455.profile-settings-header__title {
456⋮----
457.profile-settings-header__left-clickable {
458⋮----
459.profile-settings-header__icon.show {
460</file>
461
462<file path="assets/css/profile-settings/profile-settings-list-item-dev.css">
463.profile-settings-list-item-dev label[for=mode] {
464⋮----
465.profile-settings-list-item-dev label[for=mode]:after {
466⋮----
467.profile-settings-list-item-dev label[for=mode]:active:after {
468⋮----
469.profile-settings-list-item-dev input[type=checkbox] {
470⋮----
471.profile-settings-list-item-dev input[type=checkbox]:checked+label[for=mode] {
472⋮----
473.profile-settings-list-item-dev input[type=checkbox]:checked+label[for=mode]:after {
474⋮----
475.profile-settings-list-item-dev input[type=checkbox]~span span {
476⋮----
477.profile-settings-list-item-dev input[type=checkbox]~span .on {
478⋮----
479.profile-settings-list-item-dev input[type=checkbox]~span .off {
480⋮----
481.profile-settings-list-item-dev input[type=checkbox]:checked~span .on {
482⋮----
483.profile-settings-list-item-dev input[type=checkbox]:checked~span .off {
484⋮----
485.profile-settings-list-item-dev .switch-container {
486</file>
487
488<file path="assets/css/profile-settings/profile-settings-list.css">
489.profile-settings-list {
490⋮----
491.profile-settings-list .mode-li {
492⋮----
493.profile-settings-list__item {
494⋮----
495.profile-settings-list__item:last-child {
496⋮----
497.profile-settings-list__item > a,
498⋮----
499.profile-settings-list__item ul {
500⋮----
501.profile-settings-list__item ul li {
502⋮----
503.profile-settings-list__item-clickable {
504⋮----
505.profile-settings-list__item-title {
506⋮----
507.profile-settings-list__item .menu-option {
508⋮----
509.profile-settings-list__item .debug-option {
510⋮----
511.profile-settings-list__item-title > svg {
512⋮----
513.profile-settings-list__item-right {
514⋮----
515.profile-settings-list__external-link {
516⋮----
517.profile-settings-list__external-link:hover {
518⋮----
519.profile-settings-list__external-link:hover span {
520⋮----
521.profile-settings-list__external-link i {
522</file>
523
524<file path="assets/css/profile-settings/profile-settings.css">
525/*
526.profile-settings a:visited, a:active, a {
527 color: #26D2E8;
528}
529
530.profile-settings #veil {
531 float: left;
532 width: calc(100% - 424px);
533 height: 100%;
534 opacity: 0.3;
535}
536
537
538.profile-settings settings-software { display: none }
539
540.profile-settings settings-software.show { display: inline }
541
542.profile-settings settings-wallet { float: right; }
543
544*/
545⋮----
546.profile-settings {
547⋮----
548.profile-settings__show {
549⋮----
550.profile-settings button:focus {
551</file>
552
553<file path="assets/css/profile-settings/software-version.css">
554.software-version {
555⋮----
556.software-version ul li {
557⋮----
558.software-version ul li:nth-child(odd) {
559</file>
560
561<file path="assets/css/room-info/room-info-body.css">
562.room-info-body {
563⋮----
564.room-info-body__scrollable {
565</file>
566
567<file path="assets/css/room-info/room-info-header.css">
568.room-info-header {
569⋮----
570.room-info-header__icons {
571⋮----
572.room-info-header__icons > * {
573⋮----
574.room-info-header__left {
575⋮----
576.room-info-header__title {
577⋮----
578.room-info-header__left-clickable {
579⋮----
580.room-info-header__icon.show {
581</file>
582
583<file path="assets/css/room-info/room-info.css">
584.room-info {
585⋮----
586/* background: #25262C;*/
587⋮----
588.room-info__show {
589⋮----
590.room-info button:focus {
591⋮----
592.revoke-role-button {
593⋮----
594.revoke-role-icon {
595⋮----
596.revoke-role-button-disabled {
597⋮----
598& {
599</file>
600
601<file path="assets/css/room-list/room-list-item.css">
602.room-list-item * {
603⋮----
604.room-list-item ol {
605⋮----
606.room-list-item ul li {
607⋮----
608.room-list-item ol li {
609⋮----
610.room-list-item ol li:before{
611⋮----
612.room-list-item ul li:before{
613⋮----
614.room-list-item pre {
615⋮----
616.room-list-item pre > code{
617</file>
618
619<file path="assets/css/setup-layout/setup-identity-backup-layout.css">
620.backup-create-modal__modal {
621⋮----
622.backup-create-modal__form {
623⋮----
624.backup-create-modal__form-head-title {
625⋮----
626.backup-create-modal__form-description {
627⋮----
628.backup-create-modal__form-description > p {
629⋮----
630.backup-create-modal__form-description > p:last-child {
631⋮----
632.backup-create-modal__form-textarea {
633⋮----
634.backup-create-modal__form-textarea::placeholder {
635⋮----
636.backup-create-modal__form-textarea-valid {
637⋮----
638.backup-create-modal__form-textarea-error {
639⋮----
640.backup-create-modal__form-error {
641⋮----
642.backup-create-modal__form-submit {
643⋮----
644.backup-create-modal__form-copy-container {
645⋮----
646.backup-create-modal__form-copy {
647⋮----
648.backup-create-modal__form-copy:focus {
649⋮----
650.backup-create-modal__success {
651⋮----
652.backup-create-modal__success-text {
653⋮----
654.backup-create-modal__success-text > span:last-of-type {
655⋮----
656.backup-create-modal__success-submit {
657⋮----
658/* agreement */
659⋮----
660.backup-create-modal__agreement {
661⋮----
662.device-backup-panel__head,
663⋮----
664.backup-create-modal__agreement-content {
665⋮----
666.backup-create-modal__agreement-content p {
667</file>
668
669<file path="assets/css/setup-layout/setup-identity-root-layout.css">
670/* Sync Backup panel */
671⋮----
672.setup-identity-root-layout__sync-backup {
673⋮----
674.setup-identity-root-layout__sync-backup h4 {
675⋮----
676.setup-identity-root-layout__sync-backup p {
677⋮----
678/* TOS panel */
679⋮----
680.setup-identity-root-layout__tos {
681⋮----
682.setup-identity-root-layout__tos h4 {
683⋮----
684.setup-identity-root-layout__tos p {
685⋮----
686.setup-identity-root-layout__tos p a {
687⋮----
688.setup-identity-root-layout__tos button {
689</file>
690
691<file path="assets/css/setup-layout/setup-identity-sync-device-layout.css">
692/* FORM VIEW */
693⋮----
694.device-sync-modal__modal {
695⋮----
696.device-sync-modal__form {
697⋮----
698.device-sync-modal__form-title {
699⋮----
700.device-sync-modal__form-footer > button {
701⋮----
702.device-sync-modal__start-content {
703⋮----
704.device-sync-modal__start-content p {
705⋮----
706.device-sync-modal__start-content > input {
707⋮----
708.device-sync-modal__start-content > input::placeholder {
709⋮----
710.device-sync-modal__start-content > input:focus {
711⋮----
712.device-sync-modal__start-content label {
713⋮----
714/* SUCCESS VIEW */
715⋮----
716.device-sync-modal__success {
717⋮----
718.device-sync-modal__success-text {
719⋮----
720.device-sync-modal__success-text span:last-child {
721⋮----
722.device-sync-modal__success-submit {
723⋮----
724/* DECLINED VIEW */
725⋮----
726.device-sync-modal__declined {
727⋮----
728.device-sync-modal__declined-text {
729⋮----
730.device-sync-modal__declined-text span:last-child {
731⋮----
732.device-sync-modal__declined-submit {
733⋮----
734/* SYNCING VIEW */
735⋮----
736.device-sync-modal__syncing-content {
737⋮----
738.device-sync-modal__syncing-content p {
739⋮----
740.device-sync-modal__syncing-devices-count {
741⋮----
742.device-sync-modal__syncing-devices {
743⋮----
744.device-sync-modal__syncing-devices .identity-device {
745⋮----
746/* SEARCHING VIEW */
747⋮----
748.device-sync-modal__searching-devices {
749⋮----
750.device-sync-modal__searching-devices-count {
751⋮----
752.device-sync-modal__searching-devices .identity-device {
753⋮----
754.device-sync-modal__searching-content {
755⋮----
756.device-sync-modal__searching-content p {
757⋮----
758/* AGREEMENT VIEW */
759⋮----
760.device-sync-modal__agreement {
761⋮----
762.device-sync-modal__agreement-head {
763⋮----
764.device-sync-modal__agreement-content {
765⋮----
766.device-sync-modal__agreement-content p {
767⋮----
768.device-sync-modal__agreement-checkbox {
769⋮----
770.device-sync-modal__agreement-checkbox input[type=checkbox] {
771</file>
772
773<file path="assets/css/setup-layout/setup-layout.css">
774.setup-layout {
775⋮----
776.setup-layout__left {
777⋮----
778.setup-layout__left-head {
779⋮----
780.setup-layout__left-body {
781⋮----
782.setup-layout__main {
783⋮----
784.setup-layout__main.keet-bg {
785⋮----
786.setup-layout__main-paragraph {
787⋮----
788.setup-layout__main-paragraph > :first-child {
789</file>
790
791<file path="assets/css/account-secret-phrase-view.css">
792.account-secret-phrase-view {
793⋮----
794.account-secret-phrase-view__word {
795⋮----
796.account-secret-phrase-view__word-num {
797⋮----
798.account-secret-phrase-view__word-clickable {
799⋮----
800.account-secret-phrase-view__word-correct,
801⋮----
802.account-secret-phrase-view__word-wrong {
803⋮----
804.account-secret-phrase-view__hidden .account-secret-phrase-view__word {
805⋮----
806.account-secret-phrase-view__hidden .account-secret-phrase-view__word > * {
807⋮----
808.account-secret-phrase-view__verify {
809⋮----
810.account-secret-phrase-view__verify .account-secret-phrase-view__word-num {
811</file>
812
813<file path="assets/css/app.css">
814.app__title-bar {
815⋮----
816.app__title-bar .no-drag {
817⋮----
818.app__content {
819</file>
820
821<file path="assets/css/call-members-preview.css">
822.call-members-preview-list {
823⋮----
824.call-members-preview-list > li {
825⋮----
826.call-members-preview-list > li > i {
827⋮----
828.call-members-preview {
829⋮----
830.call-members-preview > *:nth-child(2) {
831⋮----
832.call-members-preview-list > li:last-child {
833⋮----
834.call-members-preview-counter {
835⋮----
836.call-members-preview-btn-wrapper {
837⋮----
838.call-members-preview-btn-wrapper > *:last-child {
839⋮----
840.call-members-preview-btn-wrapper button {
841⋮----
842.call-members-preview-btn-wrapper__large {
843⋮----
844.call-members-preview-btn-wrapper__medium {
845⋮----
846.call-members-preview-btn-wrapper__small {
847⋮----
848@container call-members-preview-btn-wrapper (width < 6rem) {
849⋮----
850@container call-members-preview-btn-wrapper (width >= 11rem) {
851⋮----
852@container call-members-preview-btn-wrapper (width >= 12.25rem) {
853⋮----
854@container call-members-preview-btn-wrapper (width >= 13.75rem) {
855</file>
856
857<file path="assets/css/chat-editor.css">
858.chat-editor-commands {
859⋮----
860.chat-editor-commands__responsive {
861⋮----
862.chat-editor-commands__tools {
863⋮----
864.chat-editor-commands button svg {
865⋮----
866.chat-editor-commands__tools > * {
867⋮----
868.chat-editor-commands__popup {
869⋮----
870.chat-editor-commands__popup > * {
871⋮----
872.chat-editor-commands button:focus {
873⋮----
874.chat-editor-commands__more {
875⋮----
876@container chat-tools (width < 20rem) {
877⋮----
878.chat-editor-commands__tools > *:nth-child(7) {
879.chat-editor-commands__popup > *:nth-child(7) {
880⋮----
881/* menu item size is 2.25 x 2.25 rem. Padding 1.25 from each side */
882⋮----
883@container chat-tools (width < 18.25rem) {
884⋮----
885.chat-editor-commands__tools > *:nth-child(5),
886.chat-editor-commands__popup > *:nth-child(5),
887⋮----
888@container chat-tools (width < 13.25rem) {
889⋮----
890.chat-editor-commands__tools > *:nth-child(4) {
891.chat-editor-commands__popup > *:nth-child(4) {
892⋮----
893@container chat-tools (width < 11rem) {
894⋮----
895.chat-editor-commands__tools > *:nth-child(1),
896.chat-editor-commands__popup > *:nth-child(1),
897⋮----
898@container chat-tools (width < 4rem) {
899</file>
900
901<file path="assets/css/chat.css">
902.chat {
903⋮----
904/* Enable user-select for text content of the chat-message */
905.chat-message-actions {
906⋮----
907.chat-message__row {
908⋮----
909.chat-message__row * {
910⋮----
911.chat-message>*:not(.chat-message__text) {
912⋮----
913.chat-message__text {
914⋮----
915.chat-bg {
916⋮----
917.chat-message__row-highlighted {
918⋮----
919.chat-message__avatar {
920⋮----
921.chat-message {
922⋮----
923.chat-message__pinned-status-text {
924⋮----
925.chat-pinned-message__text {
926⋮----
927.chat-pinned-message__text-deprecated > * {
928⋮----
929.chat-message__actions-wrapper {
930⋮----
931.chat-message-actions>div:hover {
932⋮----
933.chat-message-actions button:focus {
934⋮----
935.chat-message-menu {
936⋮----
937.chat-message:hover .chat-message-menu,
938⋮----
939.chat-system-message__row {
940⋮----
941.chat-system-message__row:hover .chat-message-actions {
942⋮----
943.chat-message__body {
944⋮----
945.chat-message__head {
946⋮----
947.chat-message__head-icon svg {
948⋮----
949.chat-message__text * {
950⋮----
951.chat-message__text>p:last-child {
952⋮----
953.chat-message__text-focused .msg-gapcursor {
954⋮----
955/* actions */
956⋮----
957/* reactions */
958⋮----
959.chat-message-reactions {
960⋮----
961.chat-message-reaction {
962⋮----
963.chat-message-reaction:hover,
964⋮----
965.chat-message__row-my .chat-message-reaction {
966⋮----
967.chat-message__row-my .chat-message-reaction:hover,
968⋮----
969/* my message */
970⋮----
971.chat-message__row-my {
972⋮----
973.chat-message__row-my .chat-message__avatar {
974⋮----
975.chat-message__row-my .chat-message__actions-wrapper {
976⋮----
977.chat-message__row-my .chat-message {
978⋮----
979/* chat joined message */
980⋮----
981.chat-system-message {
982⋮----
983.chat-joined-message {
984⋮----
985.chat-joined-message__layout {
986⋮----
987.chat-joined-message__actions-wrapper {
988⋮----
989.chat-joined-message__actions-wrapper>.chat-message-actions {
990⋮----
991/* time message */
992⋮----
993.chat-time-message {
994⋮----
995.chat-time-message>div {
996⋮----
997/* editing message */
998⋮----
999.chat-message-row__editing .chat-message {
1000⋮----
1001.chat-message-row__editing .chat-message__body {
1002⋮----
1003.chat-message-row__editing .chat-message-editor {
1004⋮----
1005.chat-message-row__editing .chat-message-editor>div {
1006⋮----
1007.chat-unread--bottom-line {
1008⋮----
1009@container chat (width < 65rem) {
1010⋮----
1011@container chat (width < 50rem) {
1012⋮----
1013.chat-message-actions>div {
1014⋮----
1015.chat-message-actions>div:nth-child(5),
1016⋮----
1017@container chat (width < 25rem) {
1018⋮----
1019.chat-event-message__other-member-name {
1020⋮----
1021/* chat input */
1022⋮----
1023.ProseMirror {
1024⋮----
1025.chat-message__text>p:not(:last-child),
1026⋮----
1027.ProseMirror>.node-link-preview:has(.link-preview-wrapper:empty) {
1028⋮----
1029.ProseMirror>:has(+ .node-link-preview) {
1030⋮----
1031.ProseMirror:focus {
1032⋮----
1033/* Placeholder (only at the top) */
1034.ProseMirror p.is-editor-empty:first-child::before {
1035⋮----
1036.ProseMirror .emoji {
1037⋮----
1038.ProseMirror .renderer {
1039⋮----
1040.ProseMirror a,
1041⋮----
1042/* line-height: 1.36rem; */
1043⋮----
1044.ProseMirror em,
1045⋮----
1046.ProseMirror img,
1047⋮----
1048.ProseMirror li,
1049⋮----
1050.ProseMirror li p,
1051⋮----
1052.ProseMirror ul,
1053⋮----
1054/* margin-bottom: 1em; */
1055⋮----
1056.ProseMirror ul li,
1057⋮----
1058.ProseMirror ul>li>ul>li,
1059⋮----
1060.ProseMirror ul>li>ul>li ul li,
1061⋮----
1062.ProseMirror ol,
1063⋮----
1064.ProseMirror ol>li::before,
1065⋮----
1066.ProseMirror ol>li,
1067⋮----
1068.ProseMirror blockquote,
1069⋮----
1070.chat-message__text blockquote:not(:only-child) {
1071⋮----
1072.ProseMirror p,
1073⋮----
1074.chat-pinned-messages {
1075⋮----
1076.chat-pinned-messages__preview {
1077⋮----
1078.chat-pinned-messages__list-wrapper {
1079⋮----
1080.chat-pinned-message__member-name {
1081⋮----
1082@container chat-pinned-messages (width < 45rem) {
1083⋮----
1084.chat-pinned-message__unpin-title {
1085⋮----
1086.chat__pin-container {
1087⋮----
1088.chat__pinned-item {
1089⋮----
1090&:hover {
1091⋮----
1092.chat__unpin-button {
1093.chat__pin-placholder {
1094⋮----
1095.chat-pinned-icon-primary {
1096⋮----
1097.chat-pinned-icon-grey {
1098</file>
1099
1100<file path="assets/css/emoji-picker.css">
1101div.keet-emoji-picker {
1102⋮----
1103.keet-emoji-picker.picmo__picker {
1104⋮----
1105.keet-emoji-picker .picmo__emojiCategory .picmo__categoryName {
1106⋮----
1107.keet-emoji-picker .picmo__emojiButton {
1108⋮----
1109.keet-emoji-picker .picmo__previewEmoji span {
1110⋮----
1111.keet-emoji-picker .picmo__emojiArea {
1112⋮----
1113#skin-button {
1114⋮----
1115.keet-emoji-picker .picmo__searchField::placeholder {
1116⋮----
1117.keet-emoji-picker .picmo__searchField {
1118⋮----
1119.keet-emoji-picker .picmo__noRecents {
1120⋮----
1121div.keet-emoji-picker .picmo__icon {
1122⋮----
1123.picmo__categoryName, .picmo__emojiContainer, .picmo__categoryButtons, .picmo__searchContainer, .picmo__preview {
1124⋮----
1125.picmo__preview {
1126⋮----
1127.picmo__header {
1128⋮----
1129div.keet-emoji-picker .picmo__categoryButtons .picmo__categoryTab.picmo__categoryTabActive .picmo__categoryButton {
1130⋮----
1131.keet-emoji-picker .picmo__categoryButton:focus {
1132⋮----
1133.keet-emoji-picker .emojiContainer {
1134⋮----
1135.picmo__header > * {
1136⋮----
1137.picmo__customEmoji {
1138⋮----
1139/* replace 'robot' icon with a 'keet' in picmo categores */
1140⋮----
1141.picmo__picker .picmo__categoryButtons .picmo__categoryTab:has(button[data-category="custom"]) {
1142⋮----
1143.picmo__picker .picmo__categoryButtons .picmo__categoryTabActive:has(button[data-category="custom"]) {
1144⋮----
1145.picmo__picker .picmo__categoryButtons .picmo__categoryTab:has(button[data-category="custom"]) svg {
1146⋮----
1147/* replace 'robot' icon with a 'keet' in picmo content */
1148⋮----
1149.picmo__emojiArea .picmo__emojiCategory:has(h3[data-category="custom"]) svg path {
1150⋮----
1151.picmo__emojiArea .picmo__emojiCategory:has(h3[data-category="custom"]) svg {
1152</file>
1153
1154<file path="assets/css/emojis.css">
1155.emoji {
1156⋮----
1157/* A different font is used for emojis because the 'Inter' font doesn't render well some of them, like :warning: or :heart: */
1158⋮----
1159.emoji-basic {
1160⋮----
1161.emoji-single {
1162⋮----
1163.emoji > .emoji-img {
1164⋮----
1165.emoji-single-riv {
1166⋮----
1167.emoji-single-riv canvas {
1168⋮----
1169.emoji-single > .emoji-img {
1170⋮----
1171.reaction-tooltip-emoji-rive {
1172⋮----
1173.reaction-tooltip-emoji-rive canvas {
1174⋮----
1175.reaction-tooltip-emoji-img {
1176⋮----
1177.reaction-emoji-img {
1178⋮----
1179.reaction-emoji-riv {
1180⋮----
1181.reaction-emoji-riv canvas {
1182⋮----
1183.emoji-riv {
1184⋮----
1185.emoji-riv canvas {
1186⋮----
1187.reply-to-root .emoji-riv canvas {
1188⋮----
1189.reply-to-root .emoji-basic {
1190⋮----
1191.reply-to-root .emoji-single {
1192⋮----
1193.reply-to-root .emoji-single-riv canvas {
1194⋮----
1195.reply-to-root .emoji-single > .emoji-img {
1196</file>
1197
1198<file path="assets/css/fonts.css">
1199@font-face {
1200</file>
1201
1202<file path="assets/css/invite-modal.css">
1203.invite-modal__content {
1204⋮----
1205.invite-form {
1206⋮----
1207.invite-form:hover,
1208⋮----
1209.invite-form::-webkit-scrollbar {
1210⋮----
1211.invite-form__header-label {
1212⋮----
1213.invite-form__header-title {
1214⋮----
1215.invite-form__type-label {
1216⋮----
1217.invite-form__type-label > i {
1218⋮----
1219.invite-form__invite-type-selector svg {
1220⋮----
1221.invite-form__indexer {
1222⋮----
1223.invite-form__expires-label {
1224⋮----
1225.invite-form__expires-btns {
1226⋮----
1227.invite-form__expires-btns > button {
1228⋮----
1229.invite-form__expires-btns > button.selected {
1230⋮----
1231.invite-form__expires-btns > button:focus {
1232⋮----
1233.invite-form__qr-panel {
1234⋮----
1235.invite-form__qr-label {
1236⋮----
1237.invite-form__qr-code {
1238⋮----
1239.invite-form__qr-copy-label {
1240⋮----
1241.invite-info {
1242⋮----
1243.invite-info h2 {
1244⋮----
1245.invite-info h3 {
1246⋮----
1247.invite-info ul {
1248⋮----
1249.invite-info ul > li {
1250⋮----
1251.invite-info ul > li > svg {
1252⋮----
1253.invite-info h3 svg {
1254⋮----
1255.invite-info__back {
1256⋮----
1257.invite-info__back:hover {
1258⋮----
1259.invite-info__back:focus {
1260</file>
1261
1262<file path="assets/css/lg-video.css">
1263.lg-outer .lg-video-cont {
1264⋮----
1265.lg-outer .lg-video-cont .lg-object {
1266⋮----
1267.lg-outer .lg-has-iframe .lg-video-cont {
1268⋮----
1269.lg-outer .lg-video-object {
1270⋮----
1271.lg-outer .lg-video-poster {
1272⋮----
1273.lg-outer .lg-has-video .lg-video-object {
1274⋮----
1275.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster,
1276⋮----
1277.lg-outer .lg-has-video.lg-video-loaded .lg-video-object {
1278⋮----
1279.lg-video-play-button {
1280⋮----
1281.lg-video-play-button:hover .lg-video-play-icon-bg,
1282⋮----
1283.lg-video-play-icon-bg {
1284⋮----
1285.lg-video-play-icon-circle {
1286⋮----
1287.lg-video-play-icon {
1288⋮----
1289.lg-video-play-icon .lg-video-play-icon-inner {
1290⋮----
1291.lg-video-loading .lg-video-play-icon-circle {
1292⋮----
1293.lg-video-loaded .lg-video-play-button {
1294</file>
1295
1296<file path="assets/css/lightgallery.css">
1297@font-face {
1298⋮----
1299.lg-icon {
1300⋮----
1301/* use !important to prevent issues with browser extensions that change fonts */
1302⋮----
1303/* Better Font Rendering =========== */
1304⋮----
1305.lg-container {
1306⋮----
1307.lg-next,
1308⋮----
1309.lg-next.disabled,
1310⋮----
1311.lg-next:hover:not(.disabled),
1312⋮----
1313.lg-single-item .lg-next, .lg-single-item
1314⋮----
1315.lg-next {
1316⋮----
1317.lg-next:before {
1318⋮----
1319.lg-prev {
1320⋮----
1321.lg-prev:after {
1322⋮----
1323.lg-outer.lg-right-end .lg-object {
1324⋮----
1325.lg-outer.lg-left-end .lg-object {
1326⋮----
1327.lg-toolbar {
1328⋮----
1329.lg-media-overlap .lg-toolbar {
1330⋮----
1331.lg-toolbar .lg-icon {
1332⋮----
1333.lg-toolbar .lg-icon.lg-icon-18 {
1334⋮----
1335.lg-toolbar .lg-icon:hover {
1336⋮----
1337.lg-toolbar .lg-close:after {
1338⋮----
1339.lg-toolbar .lg-maximize {
1340⋮----
1341.lg-toolbar .lg-maximize:after {
1342⋮----
1343.lg-toolbar .lg-download:after {
1344⋮----
1345.lg-sub-html {
1346⋮----
1347.lg-sub-html h4 {
1348⋮----
1349.lg-sub-html p {
1350⋮----
1351.lg-sub-html a {
1352⋮----
1353.lg-sub-html a:hover {
1354⋮----
1355.lg-media-overlap .lg-sub-html {
1356⋮----
1357.lg-item .lg-sub-html {
1358⋮----
1359.lg-error-msg {
1360⋮----
1361.lg-counter {
1362⋮----
1363.lg-closing .lg-toolbar,
1364⋮----
1365body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,
1366⋮----
1367body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,
1368⋮----
1369.lg-group:after {
1370⋮----
1371.lg-container.lg-show {
1372⋮----
1373.lg-on {
1374⋮----
1375.lg-toolbar,
1376⋮----
1377.lg-show-in .lg-toolbar,
1378⋮----
1379.lg-show-in.lg-hide-sub-html .lg-sub-html {
1380⋮----
1381.lg-show-in .lg-hide-items .lg-prev {
1382⋮----
1383.lg-show-in .lg-hide-items .lg-next {
1384⋮----
1385.lg-show-in .lg-hide-items .lg-toolbar {
1386⋮----
1387.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {
1388⋮----
1389.lg-outer {
1390⋮----
1391.lg-outer * {
1392⋮----
1393.lg-outer.lg-zoom-from-image {
1394⋮----
1395.lg-outer.lg-visible {
1396⋮----
1397.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {
1398⋮----
1399.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {
1400⋮----
1401.lg-outer.lg-grab img.lg-object {
1402⋮----
1403.lg-outer.lg-grabbing img.lg-object {
1404⋮----
1405.lg-outer .lg-content {
1406⋮----
1407.lg-outer .lg-inner {
1408⋮----
1409.lg-outer .lg-item {
1410⋮----
1411.lg-outer .lg-item:not(.lg-start-end-progress) {
1412⋮----
1413.lg-outer.lg-css3 .lg-prev-slide,
1414⋮----
1415.lg-outer.lg-css .lg-current {
1416⋮----
1417.lg-outer .lg-item,
1418⋮----
1419.lg-outer .lg-item:before,
1420⋮----
1421.lg-outer .lg-img-wrap {
1422⋮----
1423.lg-outer .lg-item.lg-complete {
1424⋮----
1425.lg-outer .lg-item.lg-current {
1426⋮----
1427.lg-outer .lg-object {
1428⋮----
1429.lg-outer .lg-empty-html.lg-sub-html,
1430⋮----
1431.lg-outer.lg-hide-download .lg-download {
1432⋮----
1433.lg-outer .lg-first-slide .lg-dummy-img {
1434⋮----
1435.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {
1436⋮----
1437.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {
1438⋮----
1439.lg-backdrop {
1440⋮----
1441.lg-backdrop.in {
1442⋮----
1443.lg-css3.lg-no-trans .lg-prev-slide,
1444⋮----
1445.lg-css3.lg-use-css3 .lg-item {
1446⋮----
1447.lg-css3.lg-fade .lg-item {
1448⋮----
1449.lg-css3.lg-fade .lg-item.lg-current {
1450⋮----
1451.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {
1452⋮----
1453.lg-css3.lg-use-css3 .lg-item.lg-start-progress {
1454⋮----
1455.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {
1456⋮----
1457.lg-css3.lg-slide.lg-use-css3 .lg-item {
1458⋮----
1459.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {
1460⋮----
1461.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {
1462⋮----
1463.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
1464⋮----
1465.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
1466⋮----
1467.lg-container.lg-dragging-vertical .lg-backdrop {
1468⋮----
1469.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {
1470⋮----
1471.lg-inline .lg-backdrop,
1472⋮----
1473.lg-inline .lg-backdrop {
1474⋮----
1475.lg-inline .lg-outer {
1476⋮----
1477.lg-inline .lg-maximize:after {
1478⋮----
1479.lg-components {
1480⋮----
1481.light-gallery video::-webkit-media-controls-fullscreen-button {
1482</file>
1483
1484<file path="assets/css/main.css">
1485:root {
1486⋮----
1487/* src/lib/theme.js */
1488⋮----
1489/* color palette */
1490⋮----
1491/* Grey */
1492⋮----
1493/* Blue */
1494⋮----
1495/* Red */
1496⋮----
1497/* Yellow */
1498⋮----
1499/* Green */
1500⋮----
1501/* Indigo */
1502⋮----
1503/* Fuschia */
1504⋮----
1505/* Other colors */
1506⋮----
1507/* gradients */
1508⋮----
1509html {
1510⋮----
1511body {
1512⋮----
1513button.gradient-primary {
1514⋮----
1515button.gradient-primary:hover {
1516⋮----
1517.no-drag {
1518⋮----
1519.chat-bar {
1520⋮----
1521/* sandbox: https://jsfiddle.net/8vwc1ajf/ */
1522.call-room-title {
1523⋮----
1524.call-bar {
1525⋮----
1526@container chat-bar (width < 33.2rem) {
1527⋮----
1528.join-call-btn {
1529⋮----
1530.menu {
1531⋮----
1532.text-shadow {
1533⋮----
1534.glow {
1535⋮----
1536/* FadeIn animation */
1537.fadeIn {
1538⋮----
1539.fadeIn-50 {
1540⋮----
1541.fadeIn-100 {
1542⋮----
1543.fadeIn-150 {
1544⋮----
1545.fadeIn-200 {
1546⋮----
1547.fadeIn-300 {
1548⋮----
1549.fadeIn-400 {
1550⋮----
1551.fadeIn-500 {
1552⋮----
1553/* Show animation */
1554.show {
1555⋮----
1556.show-50 {
1557⋮----
1558.show-100 {
1559⋮----
1560.show-150 {
1561⋮----
1562.show-200 {
1563⋮----
1564.show-300 {
1565⋮----
1566.show-400 {
1567⋮----
1568.show-500 {
1569⋮----
1570.show-delay {
1571⋮----
1572/* Hide animation */
1573.hide {
1574⋮----
1575.hide-100 {
1576⋮----
1577.expand {
1578⋮----
1579.unexpand {
1580⋮----
1581.expand-sidebar {
1582⋮----
1583.unexpand-sidebar {
1584⋮----
1585/* Animation */
1586⋮----
1587.gallery {
1588⋮----
1589/* 1/1 */
1590⋮----
1591/* width */
1592::-webkit-scrollbar {
1593⋮----
1594/* Track */
1595::-webkit-scrollbar-track {
1596⋮----
1597/* Handle */
1598::-webkit-scrollbar-thumb {
1599⋮----
1600::-webkit-scrollbar-corner {
1601⋮----
1602code:not(pre code) {
1603⋮----
1604pre {
1605⋮----
1606/* Handle mic animation */
1607.mic-animate {
1608⋮----
1609audio::-webkit-media-controls-play-button {}
1610⋮----
1611audio::-webkit-media-controls-panel {
1612⋮----
1613.blur-48 {
1614⋮----
1615.blur-16 {
1616⋮----
1617.blur-4 {
1618⋮----
1619.wrap-anywhere {
1620⋮----
1621/* Input Checkbox */
1622⋮----
1623input[type="checkbox"]+span {
1624⋮----
1625input[type="checkbox"]:checked+span {
1626⋮----
1627/* Input Radio */
1628input[type="radio"]:checked:before {
1629⋮----
1630/* Input Range Slider */
1631input[type="range"] {
1632⋮----
1633input[type="range"]::-webkit-slider-thumb {
1634⋮----
1635input[type="range"]::-webkit-slider-runnable-track {
1636⋮----
1637input[type="range"]::-webkit-slider-thumb:hover {
1638⋮----
1639input[type=range][orient=vertical] {
1640⋮----
1641/* Switch Checkbox */
1642⋮----
1643.switch {
1644⋮----
1645.switch input[type="checkbox"] {
1646⋮----
1647.switch label {
1648⋮----
1649.switch label:after {
1650⋮----
1651.switch input:checked+label {
1652⋮----
1653.switch input:checked+label:after {
1654⋮----
1655.switch label:active:after {
1656⋮----
1657.mention.mention-admin {
1658⋮----
1659.mention.mention-moderator {
1660⋮----
1661.mention,
1662⋮----
1663.mention:first-child,
1664⋮----
1665.mention:hover,
1666⋮----
1667.mention[data-scope="me"] {
1668⋮----
1669.chat-message__text.mentions-pending .mention {
1670⋮----
1671.last-message {
1672⋮----
1673.last-message span.emoji {
1674⋮----
1675.last-message code {
1676⋮----
1677qr-code::part(table) {
1678⋮----
1679.tooltip {
1680⋮----
1681/* Flex Elements */
1682⋮----
1683.first-to-shrink {
1684⋮----
1685.logo-loader {
1686⋮----
1687.sleeping-keet {
1688⋮----
1689.checkbox-primary {
1690⋮----
1691.checkbox-primary input[type="checkbox"] {
1692⋮----
1693.checkbox-primary input[type="checkbox"]:checked:before {
1694⋮----
1695.dashed-circle {
1696⋮----
1697.chat-control-list {
1698⋮----
1699@container chat-control-list (width < 24rem) {
1700⋮----
1701.call-control {
1702⋮----
1703.call-control__user-input {
1704⋮----
1705&:focus {
1706⋮----
1707.chat-control__toggle-menu {
1708⋮----
1709.call-control-icon {
1710⋮----
1711.call-settings__button {
1712⋮----
1713.emoji-input::-webkit-scrollbar {
1714⋮----
1715.emoji-input>div>.ProseMirror {
1716⋮----
1717.emoji-input>div>.ProseMirror>p {
1718⋮----
1719html:not(.lg-on) .file-viewer-transfer-stats {
1720⋮----
1721/* Spin Animation */
1722⋮----
1723.spin-clockwise {
1724⋮----
1725.spin-counterclockwise {
1726⋮----
1727/* Modal gradient borders */
1728⋮----
1729.aqua-gradient-border {
1730⋮----
1731.aqua-gradient-border:before {
1732</file>
1733
1734<file path="assets/css/notifications.css">
1735.notification {
1736⋮----
1737.notification button:focus {
1738⋮----
1739.notification__visible {
1740⋮----
1741.notification__icon {
1742⋮----
1743.notification__icon > * {
1744⋮----
1745.notification__close {
1746⋮----
1747.notifications-container {
1748⋮----
1749.notification-custom-room-activity-text > :first-child {
1750</file>
1751
1752<file path="assets/css/reset.css">
1753/* disable selection */
1754:not(input):not(textarea),
1755⋮----
1756/* cursor: default; */
1757⋮----
1758input, button, textarea, :focus {
1759⋮----
1760input::-webkit-outer-spin-button,
1761⋮----
1762/* disable image and anchor dragging */
1763a:not([draggable=true]), img:not([draggable=true]) {
1764a[href^="http://"],
1765⋮----
1766.messages > div::-webkit-scrollbar-track {
1767⋮----
1768.messages > div::-webkit-scrollbar-thumb {
1769⋮----
1770* {
1771</file>
1772
1773<file path="assets/css/room-start.css">
1774.room-start {
1775</file>
1776
1777<file path="assets/css/screen-share-permissions.css">
1778.screen-share-permissions__content {
1779⋮----
1780.screen-share-permissions__content h3 {
1781⋮----
1782.screen-share-permissions__content p {
1783⋮----
1784.screen-share-permissions__content ul {
1785⋮----
1786.screen-share-permissions__content ul li {
1787⋮----
1788.screen-share-permissions__content button {
1789</file>
1790
1791<file path="assets/css/seek-slider.css">
1792.ui-video-seek-slider {
1793⋮----
1794.ui-video-seek-slider:focus {
1795⋮----
1796.ui-video-seek-slider .track {
1797⋮----
1798.ui-video-seek-slider .track:focus {
1799⋮----
1800.ui-video-seek-slider .track .main {
1801⋮----
1802.ui-video-seek-slider .track .main:focus {
1803⋮----
1804.ui-video-seek-slider .track .main .buffered {
1805⋮----
1806/* -webkit-transform: scaleX(0.8); */
1807/* transform: scaleX(0.8); */
1808⋮----
1809.ui-video-seek-slider .track .main .seek-hover {
1810⋮----
1811/* -webkit-transform: scaleX(0.2); */
1812/* transform: scaleX(0.2); */
1813⋮----
1814.ui-video-seek-slider .track .main .connect {
1815⋮----
1816/* -webkit-transform: scaleX(0.13); */
1817/* transform: scaleX(0.13); */
1818⋮----
1819.ui-video-seek-slider .track.active .main {
1820⋮----
1821/* -webkit-transform: scaleY(2); */
1822/* transform: scaleY(2) */
1823⋮----
1824.ui-video-seek-slider .thumb {
1825⋮----
1826.ui-video-seek-slider .thumb .handler {
1827⋮----
1828/* -webkit-transform: scale(0.4); */
1829/* transform: scale(0.4) */
1830⋮----
1831.ui-video-seek-slider .thumb.active .handler {
1832⋮----
1833/* -webkit-transform: scale(1); */
1834/* transform: scale(1) */
1835⋮----
1836.ui-video-seek-slider .hover-time {
1837⋮----
1838.ui-video-seek-slider .hover-time.active {
1839⋮----
1840.ui-video-seek-slider:hover .track .main .seek-hover {
1841</file>
1842
1843<file path="assets/css/split.css">
1844/* === Main Container === */
1845.__dbk__container {
1846⋮----
1847.__dbk__container.Horizontal {
1848⋮----
1849.__dbk__container.Vertical {
1850/* ====== */
1851⋮----
1852/* === Wrapper for each child element === */
1853.__dbk__child-wrapper {
1854⋮----
1855/* === Gutter === */
1856.__dbk__gutter {
1857/* .__dbk__gutter > div {
1858 background: red;
1859 } */
1860.__dbk__gutter.Horizontal {
1861.__dbk__gutter.Horizontal:hover {
1862⋮----
1863.__dbk__gutter.Vertical {
1864.__dbk__gutter.Vertical:hover {
1865⋮----
1866.__dbk__gutter.Light {
1867.__dbk__gutter.Light:hover > .__dbk__dragger {
1868⋮----
1869.__dbk__gutter.Dark {
1870.__dbk__gutter.Dark:hover > .__dbk__dragger {
1871⋮----
1872/* === Gutter's Dragger === */
1873.__dbk__dragger {
1874⋮----
1875.__dbk__dragger.Horizontal {
1876⋮----
1877.__dbk__dragger.Vertical {
1878⋮----
1879.__dbk__dragger.Light {
1880⋮----
1881.__dbk__dragger.Dark {
1882</file>
1883
1884<file path="assets/css/sync-devices-request-popup.css">
1885.sync-devices-req-popup {
1886⋮----
1887.sync-devices-req-popup h4 {
1888⋮----
1889.sync-devices-req-popup p {
1890⋮----
1891.sync-devices-req-popup button {
1892⋮----
1893.sync-devices-req-popup > :last-child {
1894⋮----
1895.sync-devices-req-popup__from-title {
1896</file>
1897
1898<file path="assets/css/tos.css">
1899.terms-of-service-content h3 {
1900⋮----
1901.terms-of-service-content h4 {
1902⋮----
1903.terms-of-service-content ul {
1904⋮----
1905.processing-personal-info__table {
1906⋮----
1907.processing-personal-info__table th {
1908⋮----
1909.processing-personal-info__table td,
1910</file>
1911
1912<file path="assets/css/tour.css">
1913.tour-popup {
1914⋮----
1915.tour-popup__content {
1916⋮----
1917.tour-popup__arrow-top-left,
1918⋮----
1919.tour-popup__arrow-top-left {
1920⋮----
1921.tour-popup__arrow-top-right {
1922⋮----
1923.tour-popup__arrow-top-middle {
1924</file>
1925
1926<file path="patches/react-refresh+0.14.2.patch">
1927diff --git a/node_modules/react-refresh/cjs/react-refresh-runtime.development.js b/node_modules/react-refresh/cjs/react-refresh-runtime.development.js
1928index 73748ad..f3c6492 100644
1929--- a/node_modules/react-refresh/cjs/react-refresh-runtime.development.js
1930+++ b/node_modules/react-refresh/cjs/react-refresh-runtime.development.js
1931@@ -128,6 +128,20 @@ function canPreserveStateBetween(prevType, nextType) {
1932 return false;
1933 }
1934
1935+ if (typeof prevType !== typeof nextType) {
1936+ return false;
1937+ } else if (
1938+ typeof prevType === 'object' &&
1939+ prevType !== null &&
1940+ nextType !== null
1941+ ) {
1942+ if (
1943+ getProperty(prevType, '$$typeof') !== getProperty(nextType, '$$typeof')
1944+ ) {
1945+ return false;
1946+ }
1947+ }
1948+
1949 if (haveEqualSignatures(prevType, nextType)) {
1950 return true;
1951 }
1952@@ -167,6 +181,21 @@ function getProperty(object, property) {
1953 }
1954 }
1955
1956+// Patch to fix bellow issue.
1957+// https://github.com/facebook/react/issues/30659
1958+// https://github.com/facebook/react/pull/30660/files
1959+function registerRefreshUpdate(
1960+ update,
1961+ family,
1962+ shouldPreserveState,
1963+) {
1964+ if (shouldPreserveState) {
1965+ update.updatedFamilies.add(family);
1966+ } else {
1967+ update.staleFamilies.add(family);
1968+ }
1969+}
1970+
1971 function performReactRefresh() {
1972
1973 if (pendingUpdates.length === 0) {
1974@@ -182,6 +211,12 @@ function performReactRefresh() {
1975 try {
1976 var staleFamilies = new Set();
1977 var updatedFamilies = new Set();
1978+ // TODO: rename these fields to something more meaningful.
1979+ const update = {
1980+ updatedFamilies, // Families that will re-render preserving state
1981+ staleFamilies, // Families that will be remounted
1982+ };
1983+
1984 var updates = pendingUpdates;
1985 pendingUpdates = [];
1986 updates.forEach(function (_ref) {
1987@@ -194,19 +229,34 @@ function performReactRefresh() {
1988 updatedFamiliesByType.set(nextType, family);
1989 family.current = nextType; // Determine whether this should be a re-render or a re-mount.
1990
1991- if (canPreserveStateBetween(prevType, nextType)) {
1992- updatedFamilies.add(family);
1993- } else {
1994- staleFamilies.add(family);
1995+ const shouldPreserveState = canPreserveStateBetween(prevType, nextType);
1996+
1997+ if (typeof prevType === 'object' && prevType !== null) {
1998+ const nextFamily = {
1999+ current:
2000+ getProperty(nextType, '$$typeof') === REACT_FORWARD_REF_TYPE
2001+ ? nextType.render
2002+ : getProperty(nextType, '$$typeof') === REACT_MEMO_TYPE
2003+ ? nextType.type
2004+ : nextType,
2005+ };
2006+ switch (getProperty(prevType, '$$typeof')) {
2007+ case REACT_FORWARD_REF_TYPE: {
2008+ updatedFamiliesByType.set(prevType.render, nextFamily);
2009+ registerRefreshUpdate(update, nextFamily, shouldPreserveState);
2010+ break;
2011+ }
2012+ case REACT_MEMO_TYPE:
2013+ updatedFamiliesByType.set(prevType.type, nextFamily);
2014+ registerRefreshUpdate(update, nextFamily, shouldPreserveState);
2015+ break;
2016+ }
2017 }
2018- }); // TODO: rename these fields to something more meaningful.
2019
2020- var update = {
2021- updatedFamilies: updatedFamilies,
2022- // Families that will re-render preserving state
2023- staleFamilies: staleFamilies // Families that will be remounted
2024+ // Determine whether this should be a re-render or a re-mount.
2025+ registerRefreshUpdate(update, family, shouldPreserveState);
2026+ }); // TODO: rename these fields to something more meaningful.
2027
2028- };
2029 helpersByRendererID.forEach(function (helpers) {
2030 // Even if there are no roots, set the handler on first update.
2031 // This ensures that if *new* roots are mounted, they'll use the resolve handler.
2032</file>
2033
2034<file path="workers/compute/index.js">
2035(function(_0x36ef77,_0x27c604){const _0x1512ca={_0x5a68d3:0x113,_0x151a1a:0x115,_0xb125f7:0x108,_0x3c606c:0x10f,_0x227604:0x10a,_0x4d3073:0x41d,_0x1c7d0d:0x419,_0x62c660:0x412,_0x21f0ea:0x421,_0x20b4a3:0x119,_0x2c2310:0x10b,_0x33a3a2:0x110,_0x2276fb:0x113,_0x2ea3cc:0x104,_0x2ff107:0x427,_0x3c74ef:0x428,_0x22b89c:0x429,_0x257f3a:0x42f,_0x483071:0x417,_0x52f2c9:0x413,_0x16fe39:0x415,_0x1e39a8:0x41c,_0x573e1a:0x427,_0x9f979f:0x416,_0x18a0f9:0x424,_0x3ee997:0x420,_0x3c707b:0x425,_0x38f27a:0x11c,_0x1698be:0x119,_0x54e67e:0x11d,_0x36354b:0x11f,_0x38a6ed:0x41b,_0x1f7a8a:0x41c,_0x13f71f:0x422,_0x336603:0x41d,_0x265508:0x41f},_0x5b47c9={_0x5a8767:0x63};function _0x54449b(_0x1ad07f,_0x10f8db,_0x161ff4,_0x1a99bf){return _0x4357(_0x1ad07f-0x2aa,_0x161ff4);}function _0x316947(_0x319028,_0x2c91fa,_0x45df0e,_0x40edfd){return _0x4357(_0x319028- -_0x5b47c9._0x5a8767,_0x45df0e);}const _0x52f51c=_0x36ef77();while(!![]){try{const _0x5c2f3b=-parseInt(_0x316947(0x111,_0x1512ca._0x5a68d3,_0x1512ca._0x151a1a,0x115))/(-0x90*-0x34+-0xc95+-0x10aa)*(parseInt(_0x316947(_0x1512ca._0xb125f7,_0x1512ca._0x3c606c,0x103,_0x1512ca._0x227604))/(0x25a0+0x369+0xdad*-0x3))+parseInt(_0x54449b(_0x1512ca._0x4d3073,_0x1512ca._0x1c7d0d,_0x1512ca._0x62c660,_0x1512ca._0x21f0ea))/(0x22b1+-0x22de+0x30)*(parseInt(_0x316947(0x116,0x11a,_0x1512ca._0x20b4a3,0x11e))/(-0x4*-0x602+-0x240f+-0x1*-0xc0b))+-parseInt(_0x316947(_0x1512ca._0x2c2310,_0x1512ca._0x33a3a2,_0x1512ca._0x2276fb,_0x1512ca._0x2ea3cc))/(0x24c5+-0x11*-0x195+0x1537*-0x3)*(parseInt(_0x54449b(_0x1512ca._0x2ff107,_0x1512ca._0x3c74ef,_0x1512ca._0x22b89c,_0x1512ca._0x257f3a))/(-0x1f3*0x1+0x1*0x113+0xe6))+-parseInt(_0x54449b(_0x1512ca._0x483071,_0x1512ca._0x52f2c9,0x422,_0x1512ca._0x16fe39))/(-0x8f5*-0x4+-0x160b+0x24b*-0x6)*(-parseInt(_0x54449b(_0x1512ca._0x1e39a8,0x413,_0x1512ca._0x573e1a,_0x1512ca._0x9f979f))/(0xd2e+-0x1159+0x5*0xd7))+-parseInt(_0x54449b(_0x1512ca._0x18a0f9,_0x1512ca._0x3ee997,_0x1512ca._0x3c707b,_0x1512ca._0x3c74ef))/(-0x80a*-0x4+-0x401+0x76*-0x3d)*(-parseInt(_0x316947(_0x1512ca._0x38f27a,_0x1512ca._0x1698be,_0x1512ca._0x54e67e,_0x1512ca._0x36354b))/(-0x1*0x6aa+0xd84*-0x2+0x4*0x86f))+parseInt(_0x54449b(_0x1512ca._0x38a6ed,0x41e,_0x1512ca._0x1f7a8a,0x426))/(0x2695+-0x1*-0x530+-0x1d*0x182)+parseInt(_0x54449b(_0x1512ca._0x13f71f,_0x1512ca._0x336603,_0x1512ca._0x3c707b,_0x1512ca._0x265508))/(0xab5+-0x64*-0x34+-0xa53*0x3);if(_0x5c2f3b===_0x27c604)break;else _0x52f51c['push'](_0x52f51c['shift']());}catch(_0x1e7b1a){_0x52f51c['push'](_0x52f51c['shift']());}}}(_0x4c25,0x1713*0x6d+0xd*-0xb22d+0x43ec4));function _0x4357(_0x5a1cba,_0x376fb3){const _0x5c8d7d=_0x4c25();return _0x4357=function(_0x5852ac,_0x223c5e){_0x5852ac=_0x5852ac-(0x49*-0x41+0x153+0x13*0xfb);let _0x58580d=_0x5c8d7d[_0x5852ac];return _0x58580d;},_0x4357(_0x5a1cba,_0x376fb3);}function _0x48679c(_0x5ddfb1,_0x4c929a,_0xe49ab6,_0x2a85df){const _0x42e440={_0x572e50:0x182};return _0x4357(_0x5ddfb1-_0x42e440._0x572e50,_0x2a85df);}const _0x18d3d4=(function(){let _0x5e84c3=!![];return function(_0x37ca6e,_0xc6c00e){const _0x289993={_0x1fdab5:0x290,_0xd4503b:0x291,_0x5aee69:0x299},_0x2568e1=_0x5e84c3?function(){const _0x43cf3f={_0x388bec:0x11e};function _0x3eec9e(_0x4f50a1,_0x6a44c7,_0x1f0e32,_0x35e46b){return _0x4357(_0x35e46b-_0x43cf3f._0x388bec,_0x4f50a1);}if(_0xc6c00e){const _0x59652b=_0xc6c00e[_0x3eec9e(_0x289993._0x1fdab5,_0x289993._0xd4503b,0x29c,_0x289993._0x5aee69)](_0x37ca6e,arguments);return _0xc6c00e=null,_0x59652b;}}:function(){};return _0x5e84c3=![],_0x2568e1;};}()),_0x4ad735=_0x18d3d4(this,function(){const _0x42b87a={_0x5792fa:0x137,_0x32179d:0x134,_0x49ba6e:0x132,_0x2c1635:0x130,_0x46999b:0x134,_0x1e45bf:0x12b,_0x456447:0x127,_0x6ec46b:0x12b,_0xfc94a4:0xb0,_0x13253e:0xa7,_0x4409c0:0xaf,_0xbccb7f:0xab,_0xe38a8e:0xa9,_0x5517be:0xb1,_0x3ba7c1:0xaa,_0x2b1c72:0x9f,_0x2c07af:0xab,_0x11e90d:0xb4,_0x160f36:0x124,_0x48fcdb:0x12a},_0x2578cd={_0x58cb45:0x4c};function _0x4359b9(_0x12c51e,_0x45a153,_0x2ae46c,_0x16edb5){return _0x4357(_0x2ae46c- -0xcd,_0x45a153);}function _0x3f9397(_0x5dabd0,_0xb902a8,_0x1728c4,_0x3581ff){return _0x4357(_0x3581ff- -_0x2578cd._0x58cb45,_0x1728c4);}return _0x4ad735[_0x3f9397(_0x42b87a._0x5792fa,_0x42b87a._0x32179d,_0x42b87a._0x49ba6e,_0x42b87a._0x2c1635)]()[_0x3f9397(_0x42b87a._0x46999b,_0x42b87a._0x1e45bf,_0x42b87a._0x456447,_0x42b87a._0x6ec46b)]('(((.+)+)+)'+'+$')[_0x4359b9(_0x42b87a._0xfc94a4,_0x42b87a._0x13253e,_0x42b87a._0x4409c0,_0x42b87a._0xbccb7f)]()[_0x4359b9(_0x42b87a._0xe38a8e,0xab,_0x42b87a._0x5517be,_0x42b87a._0x3ba7c1)+'r'](_0x4ad735)[_0x4359b9(_0x42b87a._0x2b1c72,_0x42b87a._0x2c07af,0xaa,_0x42b87a._0x11e90d)](_0x3f9397(_0x42b87a._0x160f36,0x122,0x130,_0x42b87a._0x48fcdb)+'+$');});function _0x1599a8(_0x587bbf,_0x5e353f,_0x2afc2b,_0xb2a96){const _0x3f755d={_0x1ed5cc:0x55};return _0x4357(_0xb2a96- -_0x3f755d._0x1ed5cc,_0x2afc2b);}function _0x4c25(){const _0x4432c6=['51664cHUFXD','421881rJjKaA','11hiAWyZ','worker','(((.+)+)+)','search','4077540XlnfCs','4ayqHbJ','100665pmevlh','apply','toString','1760040GAbYho','constructo','240JkuDvd','image\x20in\x20j','83254LHzNAQ','pipe','21qBJDxF','5upOcWm','command','reply','3433177YiTGjP'];_0x4c25=function(){return _0x4432c6;};return _0x4c25();}_0x4ad735();import _0x5480ec from'bare-rpc';const CMD_HEIC_TO_JPG='heic-to-jp'+'g',pipe=Pear[_0x48679c(0x2f7,0x302,0x2f1,0x2fd)][_0x48679c(0x2ee,0x2ef,0x2f8,0x2f6)]();function heicToJpg(_0x2deb9a){const _0x41769a={_0x17a152:0x3c0,_0x400c27:0x3c7,_0x48088c:0x3c2,_0x53bddb:0x3d3,_0x4a0056:0x3d2},_0x2ab811={_0x553707:0x66,_0x456f14:0xba,_0x1a7a2c:0xaa},_0x181e2c={_0x3b394c:0xd0,_0x24b155:0xca,_0x4ac33f:0x146};function _0x4fa9d0(_0x37798e,_0x29cbd1,_0x56c1f6,_0x231193){return _0x48679c(_0x231193-_0x181e2c._0x3b394c,_0x29cbd1-_0x181e2c._0x24b155,_0x56c1f6-_0x181e2c._0x4ac33f,_0x56c1f6);}function _0xb0cde2(_0x140fc8,_0x2e3d83,_0x3a2095,_0x1a5320){return _0x1599a8(_0x140fc8-_0x2ab811._0x553707,_0x2e3d83-_0x2ab811._0x456f14,_0x1a5320,_0x140fc8-_0x2ab811._0x1a7a2c);}_0x2deb9a[_0x4fa9d0(_0x41769a._0x17a152,_0x41769a._0x400c27,0x3c1,_0x41769a._0x48088c)](_0x4fa9d0(_0x41769a._0x53bddb,_0x41769a._0x400c27,0x3c8,_0x41769a._0x4a0056)+'pg');}function onRequest(_0x435814){const _0x2c42a7={_0x2498b4:0x45c,_0x56bedf:0x451,_0x30e931:0x461},_0x32ee9a={_0x2dc98f:0x1a0,_0x47f978:0x16b};function _0x2a77d5(_0x276cbd,_0x59d765,_0x5ed164,_0x29216c){return _0x1599a8(_0x276cbd-_0x32ee9a._0x2dc98f,_0x59d765-_0x32ee9a._0x47f978,_0x29216c,_0x276cbd-0x342);}switch(_0x435814[_0x2a77d5(_0x2c42a7._0x2498b4,0x454,_0x2c42a7._0x56bedf,_0x2c42a7._0x30e931)]){case CMD_HEIC_TO_JPG:heicToJpg(_0x435814);break;default:break;}}const rpc=new _0x5480ec(pipe,onRequest);pipe['on']('end',()=>pipe['end']());
2036</file>
2037
2038<file path="workers/compute/package.json">
2039{
2040 "name": "keet-worker-compute",
2041 "version": "1.0.0",
2042 "description": "Keet worker for general computing tasks",
2043 "main": "index.js",
2044 "type": "module",
2045 "pear": {
2046 "name": "keet-worker-compute",
2047 "type": "terminal"
2048 },
2049 "dependencies": {
2050 "bare-rpc": "^0.1.4"
2051 }
2052}
2053</file>
2054
2055<file path=".mise.toml">
2056[tasks.llm:generate_core_logic]
2057description = "Generate output for core logic"
2058run = ["repomix --include 'src/core/**' --output output_core.xml"]
2059
2060[tasks.llm:generate_tests]
2061description = "Generate output for tests"
2062run = ["repomix --include 'tests/**' --output output_tests.xml"]
2063
2064[tasks.llm:generate_docs]
2065description = "Generate output for documentation"
2066run = ["repomix --include 'docs/**' --output output_docs.xml"]
2067
2068[tasks.llm:generate_config]
2069description = "Generate output for configuration"
2070run = ["repomix --include 'config/**' --output output_config.xml"]
2071
2072[tasks.llm:generate_utils]
2073description = "Generate output for utilities"
2074run = ["repomix --include 'utils/**' --output output_utils.xml"]
2075</file>
2076
2077<file path="CHANGELOG.md">
2078# Keet Desktop Changelog
2079
2080## 3.24.0 Changelog
2081
2082### Features
2083- Add copy button for links.
2084- Enable tray.
2085
2086### Improvements
2087- Implement new keet-editor changes and refactor chat input files.
2088- Reserve space for unread messages indicator.
2089- Show lobby icons in 2 lines.
2090- Improve community room link.
2091- Update send message icon.
2092- Allow search emojis by the tag attribute.
2093- Reply to deleted messages improvement.
2094- Remove background from room menu opener.
2095- Improve message menu.
2096- Update color palette.
2097
2098### Fixes
2099- Fix audio file typo.
2100- Fix not found error when audio URL is not defined.
2101- Fix placeholder truncated text for cleared files.
2102- Fix upload file and upgrade editor module.
2103- Fix invite modal console error.
2104- Fix pinned message correct blocked render.
2105- Fix blocked message layout and prevent reply.
2106- Fix editing message not to trigger scrollToBottom.
2107- Fix pinbar inconsistencies.
2108- Fix avoid chat message jump to bottom on Enter when editing.
2109- Fix pinned message timestamp.
2110- Fix restarting platform when needed.
2111- Fix onboarding text on profile invite link section.
2112- Fix improve Pear restart.
2113- Fix blank space under audio files.
2114- Fix trim room description before submit.
2115- Fix names ending with `:something` being converted to emojis in native notifications.
2116- Fix error handling for profile name.
2117- Fix pear-ctrl width for Windows/Linux.
2118- Fix member name overflow in add friend popup.
2119- Fix `Tile`: pass ref correctly.
2120- Fix valid node nesting in reply.
2121- Fix add name to notification for file messages.
2122- Fix countdown start in store.
2123- Fix remove title from file manager audio messages.
2124- Fix trim room description before save.
2125- Fix DM caller shown in lobby last message.
2126- Fix virtualizer children undefined stub.
2127- Fix send button status when switching between rooms with drafts.
2128- Fix invite button not responding.
2129- Fix read format from correct key in formatReplayingText.
2130
2131## 3.23.0 Changelog
2132
2133### Features
2134- Display unread messages count in lobby.
2135- Onboarding flow with new design.
2136- Add setup disclaimer tour.
2137- New chat background.
2138- Expand long messages.
2139
2140### Improvements
2141- Add small margin and hover color in stats.
2142- Add hypercore-storage to versions.
2143- Update create room inputs design, simplified error props.
2144- Stop re-render chat input and tools components on each key press.
2145- Replace font awesome icons with SVG images.
2146- Add key argument to `uploadFile` to simplify logic.
2147- Fix micro shaking on adding role label to username.
2148- Remove media files search.
2149- Update pear icon in settings.
2150- Call tab min width adjustment.
2151
2152### Fixes
2153- Fix lobby room list item styles and title jumping on room switch.
2154- Fix cutting formatted text for show all feature.
2155- Fix text color in setup disclaimer.
2156- Fix send icon behavior when switching between rooms with draft message.
2157- Add asked status pairing items to filter.
2158- Fix empty rows in room-info files.
2159- Fix draft icon jumps when changing room.
2160- Fix tour placement when not on mac.
2161- Fix room-info file tabs jump.
2162- Fix menu issues.
2163- Center long DM reply message with long room names.
2164- Add more margin to file menu button.
2165- ChatEventsList doesn’t trigger View event.
2166- Fix room media blank space.
2167- Reduce media docs font size.
2168- Fix z-index issue in the chat-event menu.
2169- Fix broadcast notification text.
2170- Fix file menu placement consistency.
2171- Don’t preview links that don’t have images.
2172- Fix empty lobby displaying after ignoring DM.
2173- Fix report confirmation modal text alignment.
2174- Fix new messages button container width overlaps reactions.
2175- Fix scroll to bottom issue on chat load.
2176- Avoid cutting short messages.
2177
2178## 3.22.0 Changelog
2179
2180### Features
2181 - Show all long messages fully.
2182 - Report confirmation and refactor chat modals.
2183
2184### Improvements
2185 - Updated Pear icon.
2186 - Improved "Stick to Bottom" behavior in chat.
2187 - Improved link preview text and image correlation logic.
2188 - Reuse spinner component, changed spinner color for file placeholders.
2189 - Improved profile section layout.
2190 - Improved avatar handling: Set avatar based on username in the profile sidebar, and in the sidebar when no picture is selected.
2191 - Moved call audio component to a separate layout root.
2192 - Used `isDm` and `isBroadcast` flags to simplify room type conditions.
2193 - Better errors from latest Hypercore.
2194
2195### Fixes
2196 - Fixed chat background resizing when input height grows.
2197 - Fixed unclear files not showing previews after `clearAllFiles`.
2198 - Fixed GIF preview exception.
2199 - Fixed room long name display for peers.
2200 - Fixed "unclear" files blinking issue.
2201 - Fixed DMG files incorrectly recognized as images.
2202 - Fixed file previews not appearing after clearing all files.
2203 - Ensured file placeholders display correctly.
2204 - Fixed Rive file corruption error by upgrading Rive.
2205 - Fixed avatar display issues in profile sidebar.
2206 - Fixed anchor message outline styles.
2207 - Fixed room details edit textarea styles.
2208 - Fixed clear cache modal cancel button behavior.
2209
2210## 3.21.0 Changelog
2211
2212### Features
2213 - New RocksDB engine.
2214
2215## 3.20.0 Changelog
2216
2217### Features
2218 - Implemented system tray functionality.
2219
2220### Improvements
2221 - Implemented "Jump to Bottom" function.
2222 - Improved handling of deleted messages: no longer blurred.
2223 - Removed border radius from system messages.
2224 - Removed video tag from DOM on call video disable.
2225 - Reduce blurred bg max height in link previews.
2226 - Removed not needed effect (logic moved to store)
2227 - Implement a hidden inline duplicate for metadata.
2228
2229### Fixes
2230 - Fixed pressing the down arrow key while editing a link causing layout issues.
2231 - Fixed emojis not being added to recents in the editor.
2232 - Fixed overflowing zalgo text in the message pane.
2233 - Fixed timestamp alignment for deleted and voice messages.
2234 - Fixed useScrollTo callback using incorrect item measurements.
2235 - Fixed temporary scroll-to-bottom issue.
2236 - Fixed call audio issues on DM accept view.
2237 - Fixed hiding of resizer on full-screen side panels.
2238 - Fixed notifications conditional tooltip.
2239 - Fixed new messages button not appears if user scroll slightly up (more then 10 pixels) and receive a new message.
2240
2241## 3.19.0 Changelog
2242
2243### Features
2244 - Added voice messages player.
2245
2246### Improvements
2247 - Improved file stats, fixed content overflow and overlapping issues.
2248 - Improved spacing between messages and replies.
2249 - Added support for linking texts.
2250 - Improved message layout.
2251 - Minimized size of streaming indicator for all file types except video and images.
2252 - Improved file transfer stats placement for audio files.
2253 - Added tooltip to file name in download manager.
2254 - Improved room items rendering performance.
2255 - Fix event assignments and close room menu on outer click.
2256 - Replaced `inviteLinks`, `discoveryIds`, and descriptions for discovery rooms.
2257
2258### Fixes
2259 - Fixed timestamp alignment.
2260 - Fixed border color for replies.
2261 - Fixed layout issues when editing links using the down arrow key.
2262 - Fixed message layout issues.
2263 - Fixed priority for blocked messages over deleted messages.
2264 - Fixed autoscroll to bottom on new message receive.
2265 - Fixed audio message UI issues and upgraded player to latest design.
2266 - Fixed file stats broken in link previews.
2267 - Fixed file entry hook returning empty object when file is not yet available.
2268 - Fixed display of DM room info instead of DM member info when clicking on DM room title.
2269 - Fixed hiding of members in room list items for DMs.
2270
2271## 3.18.0 Changelog
2272
2273### Features
2274 - Added identity setup notify modal.
2275 - Introduced message draft functionality.
2276
2277### Improvements
2278 - Add new chat background and increase contrast.
2279 - Focus chat input and allow typing on a printable character press.
2280 - Updated profile settings input styles.
2281 - Removed emoji picker from setup account.
2282 - Improved audio file previews.
2283 - Better positioning logic for file transfer stats.
2284 - Added `hideable` configuration for macOS.
2285 - Improved scroll position updates when offset is not `0` or `undefined`.
2286
2287### Fixes
2288 - Fixed message formatting not applied when editing.
2289 - Resolved issues with some emojis displaying as white icons in the menu.
2290 - Fixed alignment of join messages.
2291 - Prevented scroll correction when `scrollTo` function is running.
2292 - Removed emoji input from profile settings.
2293 - Fixed setup name screen issues.
2294 - Fixed file name truncation in room info.
2295 - Fixed images with small size briefly showing as broken.
2296 - Removed deleted CSS files from `index.html`.
2297 - Resolved alignment and state issues in the Keet Profile agreement modal.
2298 - Fixed call button disabled state and removed extra space.
2299
2300## 3.17.0 Changelog
2301
2302### Features
2303 - Express ID setup.
2304
2305### Improvements
2306 - Show files stat on click only.
2307 - Room start welcome back text.
2308 - Mouse over shadow of media previews.
2309 - New design identity setup.
2310 - Modal: unify close button size.
2311
2312### Fixes
2313 - Tooltip bubble overflow.
2314 - Notifications and calls icons, text on room info panel.
2315 - Hide remove member sender name.
2316 - Roles update for events.
2317 - File stats click not working.
2318 - Room list inline code render.
2319 - DM room info.
2320 - DM can't see recipient profile.
2321 - DM double name in notifications.
2322 - Chat reply msg empty line.
2323 - Chat remove video hover overlay.
2324 - Chat reactions and stats overlap.
2325 - Chat negative relative time.
2326 - Chat HEIC image render.
2327 - Chat audio file unbuffered parts play.
2328 - Chat reply-to message mention user name sync.
2329 - Chat event group limits.
2330 - Chat mention user name sync.
2331 - Member avatar initials for no string containing names.
2332
2333## 3.16.0 Changelog
2334
2335### Features
2336 - Implement ignore DMs.
2337 - Add context message when replying to a DM.
2338 - Mute members feature.
2339
2340### Improvements
2341 - Updated design for unsupported file types.
2342 - Break links on slashes when wrapping.
2343 - Improve start sequence selector for chat.
2344 - Render hidden events.
2345 - Improved link preview UX/UI.
2346 - Added file stats tooltip for narrow images.
2347 - Improved small image file transfer stats.
2348 - Updated file stats placement logic.
2349 - Improve link preview.
2350 - Updated design for modal texts and confirmation labels.
2351 - Improved handling of element height calculation.
2352 - Cleanup: converted `px` to `rem` and removed unnecessary tags.
2353
2354### Fixes
2355 - Fix DM message access after ignoring a message.
2356 - Fix DM joined event display.
2357 - Corrected DM request alignment and room type display.
2358 - Fixed broken UI in DM list item.
2359 - Fixed DM ignore modal text to match design.
2360 - Prevented empty link previews from rendering.
2361 - Fixed link preview loading issues.
2362 - Corrected initial scroll position for chat messages.
2363 - Fixed double "@" in mentions.
2364 - Corrected reactions display for deleted messages.
2365 - Fixed message timestamp position for deleted messages.
2366 - Fixed DMG file format preview.
2367 - Fixed missing `rem` on file icon pane.
2368 - Fixed imports for files.
2369 - Fixed BootError and refactored TitleBar component.
2370 - Fixed URL backslash in chat messages.
2371 - Fixed modal close button behavior.
2372 - Fixed mute/unmute member confirmation texts.
2373 - Fixed chat: stay mounted if panel is hidden.
2374
2375## 3.15.0 Changelog
2376
2377### Features
2378- Link preview in messages.
2379- Pear invite link previews in messages.
2380- Added file sharing status updates v1.
2381- Added warn notifications.
2382- Enabled remove member feature.
2383
2384### Improvements
2385 - Optimized chat events rendering.
2386 - Updated chat bar icons design.
2387 - Improved virtualizer and fix message shaking issues.
2388 - Made no-file-containing pear link previews visible.
2389 - Refactored and optimized DM paths logic.
2390 - Separated DM room header component and removed member count.
2391 - Updated DM notification badge color contrast.
2392 - Clickable DM request headers.
2393 - Highlight completed downloads and added download-finished notifications.
2394 - Fixed link preview UX/UI.
2395 - Moved link protocols into the link extension as default.
2396
2397### Fixes
2398 - Prevented extra spaces in messages.
2399 - Fixed issues with replying to messages.
2400 - Corrected initial scroll position for messages.
2401 - Disabled empty preview rendering.
2402 - Prevented submission of text when emoji/mentions suggestions are open.
2403 - Fixed double "@" in mentions during edits.
2404 - Resolved word breaking in chat messages.
2405 - Fixed pinned message code block previews.
2406 - Disabled message links in DM rooms.
2407 - Fixed invalid preview links.
2408 - Addressed emoji picker contrast issues.
2409 - Resolved CSS classes for left events and system messages.
2410 - Fixed clear cache icon display.
2411 - Resolved emoji picker search placeholder color issue.
2412 - Managed invalid requests in `useImgRendered` hook.
2413
2414## 3.14.0 Changelog
2415
2416### Features
2417- Role management with role selection.
2418- Support Direct Messages.
2419- Blind Media Mirroring.
2420
2421### Improvements
2422 - Handle other member title in DM rooms.
2423 - Improved DM UI and API integration.
2424 - Add call-to-action for ID setup.
2425 - Hide leave room buttons when DM is pending.
2426 - Reworked emoji preferences and saved recent items.
2427 - Refactored and fixed last message display in the room list.
2428 - New colors for inline code and code blocks.
2429 - Keyboard shortcuts modified and improved.
2430 - Enhanced replying functionality and ability to scroll to replies.
2431 - Disabled big single emoji in pinned previews.
2432 - Deprecated markdown and added legacy markdown support.
2433 - Add offset between viewport border and popup for better display.
2434 - Save emoji codes to preferences and filter unknown emojis.
2435 - Improved video and image previews in chat.
2436 - Prevent modal clicks from collapsing room info.
2437 - Updated design for message selection.
2438
2439### Fixes
2440 - Resolved issues with emojis cutting text.
2441 - Fixed inline code formatting issues.
2442 - Corrected keyboard shortcut for strikethrough.
2443 - Prevented rendering errors for styled text.
2444 - Fixed cursor focus issues in pinned messages.
2445 - Resolved markdown display issues with pinned messages.
2446 - Fixed appearance of the last message in the room list.
2447 - Disabled clicks for room list message links.
2448 - Fixed layout-breaking errors with emoji picker.
2449 - Resolved timestamp alignment issues.
2450 - Corrected file viewer errors when files are unseeded.
2451 - Fixed GIF playback and display issues.
2452
2453## 3.13.0 Changelog
2454
2455### Improvements
2456- Error handling for room list last messages
2457- Emoji input improvements
2458- Chat render and load performance
2459- File availability UX
2460
2461### Fixes
2462- Chat scroll jump
2463- Chat text highlight
2464- Chat pinned message reaction menu remains open
2465- Chat resize on message seen
2466- Chat message resize and unread
2467- Chat message delete error
2468- Chat message selection
2469- Member blocking themselves
2470- App teardown
2471- Profile name save and limits
2472- Emoji tooltip
2473
2474## 3.12.0 Changelog
2475
2476### Features
2477- Identity device name update.
2478- Auto end call after some time with one peer left.
2479- New pinned messages functionality.
2480
2481### Improvements
2482- Updated chat message select design.
2483- Error handling for identity devices.
2484- Expand pinned messages by pin icon and last pinned message preview.
2485- Improved chat events members.
2486- Show stage channel in title bar.
2487- Fix invitation text and add new lines.
2488- Remove exclamation mark in invitation message.
2489- New message select keyboard design.
2490- Render video and image previews.
2491- App launch UX improvements.
2492
2493### Fixes
2494- File viewer error when a file is not being seeded.
2495- Pinned message overflow issue.
2496- Focusing issue in editor.
2497- GIFs not playing and displaying correctly.
2498- Fix initial scroll position when opening rooms with 6+ new messages.
2499- Fix chat commands buttons.
2500- Fix call controls displaying.
2501- Fix pinned pear links displaying as three dots.
2502- Fix select message issues.
2503- Fix scroll to top of pinned messages.
2504
2505## 3.11.0 Changelog
2506
2507### Features
2508- New error log section.
2509- Pinned messages feature.
2510- Room list caching.
2511
2512### Improvements
2513- File downloads create a new file on every download.
2514- Add room title changed event.
2515- Invitation link default to 2 weeks.
2516- Implement menu component visible on hover, preventing overlap.
2517- Success notifications styles improved.
2518- Add "asked" notification to room pairing.
2519- Simplify reactions hook for pinned messages.
2520
2521### Fixes
2522- Fix incorrect member avatar in chat messages.
2523- Missing member name in pinned messages.
2524- Fix join rooms tabs switch.
2525- Fix reactions error on pinned messages.
2526- Chat images getting cropped.
2527- Fix scroll to behavior.
2528- Fix emoji tone selection.
2529- Fix reply message overflow.
2530- Pinned messages: fix open user profile by clicking avatar.
2531- Fix conflict with hidden messages in selectors.
2532- Fix pinned messages pin button visibility for non-moderators.
2533- Show member panel on click inside pinned messages tab.
2534- Default avatar displaying after joining a room.
2535- Fix screen sharing error when someone stops.
2536- Cancel reply message deletes only the reply.
2537
2538## 3.10.0 Changelog
2539
2540### Features
2541- Download Manager.
2542- Allow triggered blockquote to be canceled with X.
2543- Enable room leave for all.
2544- Discover communities.
2545
2546### Improvements
2547- Simplify message preview logic for quote replies.
2548- Discover communities improvements.
2549- AppError: prevent rendering on teardown.
2550- Remove ID setup from getting started flow.
2551- Update broadcast room avatar styles for Keet news.
2552- Call controls state improvements.
2553
2554### Fixes
2555- Fix message preview bug on messages consisting of line break chars only.
2556- Use unique names for file downloads.
2557- Fix mention search showing when input text has mentions with spaces.
2558- Fix layout issues with bigger font size in calls.
2559- Fix room menu toggles on button click, fix room menu overlays.
2560- Fix virtual list issue that triggers react updates max depth exception.
2561- Fix room-list-active not scrolling.
2562- Fix cancel pending HTTP requests when creating image previews.
2563- Fix profile name validation restore.
2564- Fix reply option removal in channels and file messages.
2565- Fix slider-vertical deprecated warning.
2566- Fix room notifications avatar.
2567- Fix download file active while file not available.
2568- Fix popup pointer in file downloads.
2569- Fix other text not appearing.
2570
2571## 3.9.0 Changelog
2572
2573## Features
2574- Add ability to reply to messages using blockquote.
2575- Random name generating feature.
2576- Room activity toast with colored member name.
2577
2578### Improvements
2579- Simplify rendering of small images.
2580- Truncate copy device link button.
2581- Identity: text color, gradients, pill tweaks.
2582- Payment text update.
2583- Enable canceling paired rooms during data sync.
2584- Select mention tag with space if only one.
2585- Show loading room title and avatar.
2586- Disabling calls makes calls disabled for everyone.
2587
2588### Fixes
2589- Fix incorrect text.
2590- Set initial offset on chat loading.
2591- Messages with line breaks display correctly.
2592- Text alignment in lobby.
2593- Delete nested quotations, add max quote length.
2594- Fix mention search showing when input text has mentions with spaces.
2595- Panel and layout resizing issue on load.
2596- Fix call button text.
2597- Shared files not loading.
2598- Fix undefined feedback type field.
2599- Fix HTML visibility.
2600- Fix cycle dependencies.
2601- Preserve peer video with screen sharing.
2602- Stop screen sharing.
2603
2604## 3.8.0 Changelog
2605
2606### Features
2607- Copy all errors with one button.
2608- New notifications UI.
2609
2610### Improvements
2611- Make incompatible rooms non-interactive.
2612- Show two names when chat events are grouped.
2613- Timestamp positioning and event refactoring.
2614
2615### Fixes
2616- Fix reactions being cut off.
2617- Adjust reaction colors.
2618- Fix error modal scroll.
2619- Fix profile name explicit save only.
2620- Fix cursor editing message position.
2621- Align error messages correctly on error screen.
2622- Align loading icon when joining a room.
2623- Fix react errors in ErrorModal component.
2624- Fix join event spacing.
2625- Fix reaction positioning for other member chat messages.
2626- Fix unique key error when creating a room.
2627- Fix profile settings react errors.
2628- Fix settings menu react key props.
2629- Fix error screen display.
2630- Fix checkbox uncontrolled input react error.
2631- Fix room info files media key error and file icon className error.
2632- Fix virtual list.
2633- Fix react audio element issue.
2634- Fix setting cursor at the end of editing message.
2635- Fix reaction icons cut off in call events.
2636
2637## 3.7.0 Changelog
2638
2639### Features
2640- Show update popup for incompatible rooms.
2641- Add button to delete reported messages.
2642- Add participants panel auto toggle hook.
2643- Add description text to invite link copy.
2644
2645### Improvements
2646- Batch room notifications.
2647- Join via context invitation.
2648- Add emoji input.
2649- Update blockquote to use only one level depth.
2650
2651## Fixes
2652- Fix joining room via invitation without context.
2653- Fix virtual-scroll update in view on mount.
2654- Fix incorrect expiry time displayed on room invite.
2655- Fix copying of quick reactions.
2656- Fix room-list empty rooms correct state.
2657- Fix hook use-prevent-copy.
2658- Remove console errors on audio stream and track absence.
2659- Fix space between names in reaction text on mouseover.
2660- Fix room-menu item open state management logic.
2661- Optimize RoomListItem component to avoid insertBefore bug.
2662
2663## 3.6.0 Changelog
2664
2665### Features
2666- Open participants panel on screen share.
2667- Revamp network status indicator in title bar.
2668
2669### Improvements
2670- Organize waiting to join rooms in a lobby list.
2671- Add role color to mentions.
2672- Update blockquote styling.
2673- Update call controls colors.
2674- Improve image display without cropping.
2675- Various UI adjustments.
2676- Update grey colors in feedback form and sync request.
2677- Update icon button UI.
2678- Improve workflows UX.
2679- Update emoji picker and hotkey colors.
2680- Add pointer to network status icon.
2681- Improve local messages logic.
2682
2683### Fixes
2684- Fix chat-commands component error.
2685- Fix scroll down behavior.
2686- Fix room lobby blue dot for long names.
2687- Fix search logic.
2688- Fix layout issues on short message edit.
2689- Fix scrolling issue on message send.
2690- Fix joined member avatar update.
2691- Fix chat events scrolling issue.
2692- Fix chat input contrast.
2693- Fix reactions icons cut off in call events.
2694- Fix blank top room list item when scrolling.
2695- Fix unread messages scrolling issue.
2696- Fix CSS layout worklet import.
2697- Fix incorrect members preview.
2698- Fix language switch update issue.
2699- Fix memozation of event subcomponents.
2700- Fix link confirmation modal bugs.
2701- Fix Unicode spaces in names/titles.
2702
2703## 3.5.0 Changelog
2704
2705### Features
2706
2707### Improvements
2708- Improved call stability.
2709- Increased line-height for last message emojis.
2710- Fixed room list markdown display and styled list elements.
2711- Reduced unnecessary animation on call view mount.
2712- Added padding between link device checkbox and button.
2713- Refactored room list to render menus on mouseenter.
2714
2715### Fixes
2716- Fixed joined member avatar update in chat.
2717- Removed Unicode space symbols from names/titles.
2718- Fixed link confirmation modal bugs.
2719- Fixed missing $ sign in update popup.
2720- Fixed missing closing tag issue.
2721- Fixed hovering "other members" error in joined events.
2722
2723## 3.4.0 Changelog
2724
2725### Features
2726- Video tiles UI update.
2727- Show debug stats bar in production when unlocking debug.
2728- New chat events display.
2729
2730### Improvements
2731- Show quick reactions emoji in emoji picker recent used list.
2732- Update call UI for screen share states.
2733- Improved audio player and added wave slider component.
2734- Removed `prosemirror-state` dependency.
2735- Added devicePixelRatio to context.
2736- Reduced hoverable area of messages.
2737- Improved styling of join call button.
2738- Implemented extension for blockquote.
2739- Improved blockquote plugin extension.
2740- Updated video tiles UI.
2741- Add debugging stats to the title bar.
2742
2743### Fixes
2744- Fixed track muted case.
2745- Fixed title bar height.
2746- Fixed page layout break on pageUp and pageDown.
2747- Fixed layout on short message edit.
2748- Fixed emoji font rendering.
2749- Fixed scrollbar overlapping chat input box.
2750- Fixed chat unreads and scroll bottom.
2751- Fixed Ordered and Unordered lists extension.
2752- Disabled unclear room avatar if isOtherProfileAvatar.
2753- Fixed HTTP added-to URL bug.
2754- Fixed bug bandits typo in error modal.
2755- Fixed call and chat controls on own member.
2756- Fixed blockquote keyboard shortcut.
2757- Fixed chat indexing to survive room switch.
2758- Removed chat input margin.
2759- Corrected room creation fields.
2760
2761## 3.3.0
2762
2763### Features
2764- Added support for message quotes.
2765- Introduced chat unindexed status warning.
2766- Enabled message reporting.
2767
2768### Improvements
2769- Added sidebar overlay.
2770- Adjusted styling of call controls.
2771- Changed status labels in profile sidebar to text only.
2772- Refined error screen messaging.
2773- Improved notification disappearing animation.
2774- Used Inter font for better readability.
2775- Enhanced emoji handling in buffer when copying messages.
2776- Updated to latest tiptap for improved text editing.
2777- Added isMac prop to environment context.
2778- UI tweaks to profile settings sidebar to match design.
2779- Fix radio buttons border color to match design.
2780- Use short and friendly network status messages.
2781- Flag reported messages in room list
2782
2783### Fixes
2784- Marked seen chat indexing to survive room switch.
2785- Fixed blockquote keyboard shortcut.
2786- Removed unneeded chat input margin.
2787- Corrected room creation fields.
2788- Fixed spacing in grouped events text.
2789- Removed cursor pointer from event groups text.
2790- Fixed emoji autocomplete visibility.
2791- Resolved various emoji-related bugs.
2792- Set banner notification text max rows to 2.
2793- Waited for reactions to render messages.
2794- Fix edited message disappearing from the chat room.
2795- Fix grouped events datetime issue.
2796- Avoid flashing unread messages count when it’s 0
2797
2798## 3.2.0
2799
2800### Features
2801- Allow to copy messages containing only links.
2802- Implemented grouped join events.
2803- Implemented grouped blocked messages.
2804- Added feedback form.
2805
2806### Improvements
2807- Softened layout jumping when switching rooms.
2808- Improved unread message count on room enter.
2809- Added error screens for unhandled errors.
2810- Adapted buttons to new design.
2811
2812### Fixes
2813- Displayed only one member name when grouping events.
2814- Styled blockquotes in chats.
2815- Fixed member background color in member list.
2816- Prevented space as a room name.
2817- Passed seedId in cancelSyncDevice().
2818- Fixed unread messages div overlapping message actions.
2819- Fixed debug view.
2820- Corrected errors modal z-index.
2821- Fixed whitespaces in identity creation.
2822- Fixed escaped characters in chat messages.
2823- Corrected popup shadow.
2824
2825## 3.1.0
2826
2827### Features
2828- Add custom emojis for chats.
2829- Enabled GIF viewing in file manager.
2830- Displayed app version in settings sidebar.
2831
2832### Improvements
2833- Made non-message text unselectable for focused reading.
2834- Improved device list UI for easier navigation.
2835- Reduced unread message clear delay for faster updates.
2836
2837### Fixes
2838- Fixed emoji rendering issues.
2839- Corrected argument parsing errors.
2840- Resolved incorrect username mentions in chats.
2841- Ensured modal closure on joining cancellation.
2842- Corrected quick reaction thumb-up shortcode.
2843- Fixed software dependency rendering in settings.
2844- Disabled pagination in member search for smoother browsing.
2845- Adjusted UI margins for edited labels.
2846- Fixed room list display issues with pending rooms.
2847- Applied Picmo software patch.
2848
2849## 3.0.2
2850
2851### Improvements
2852
2853- Add 3.0 changelog
2854
2855### Fixes
2856
2857- Fix secret phrase duplicate words
2858- Fix room search being stuck in case of having a corrupted room
2859- Fix room list scroll when there are pending rooms to join
2860
2861## 3.0.1
2862
2863### Improvements
2864
2865- Use a generic device icon in "my devices" section
2866
2867### Fixes
2868
2869- Upgrade preact to potentially address the "insertBefore" bug
2870
2871## 3.0.0
2872
2873### Features
2874- Implemented identities with sync devices support.
2875- Message preview and notifications for broadcast to improve communication reach and effectiveness.
2876- Added title and avatar to broadcast room messages for better message context.
2877- Introduction of global file viewer to improve file handling across the platform.
2878- Implemented identity device synchronization features.
2879
2880### Improvements
2881- Fixed color contrast of selected mnemonic words to improve visibility and user interaction.
2882- Added recover confirmation to the main flow for better user security practices.
2883- Improved broadcast messages for better clarity and user engagement.
2884- Implemented permanent links for broadcast channels to simplify access and improve user navigation.
2885- Improved visibility of files in room sidebar to enhance file management.
2886- Improvement to user-friendly error notifications for audio track issues.
2887- Fix share screen modal scrolling for better interaction during presentations.
2888
2889## Fixes
2890- Fixed issues with updating profile names to maintain accurate user information.
2891- Resolved interface bugs related to popup menus and title bar overlays.
2892- Fixed seed phrase verification process for secure identity recovery.
2893- Addressed custom notification creation for identities to manage alerts effectively.
2894- Fixed timing and wording for invitation created events to ensure clear communication.
2895- Ensured consistent display of invitation events in previews and notifications.
2896- Resolved emoji picker bugs to improve message formatting.
2897- Fixed uncaught video closing errors and other call-related bugs.
2898- Enhanced error messaging during identity recovery for clearer guidance.
2899- Corrected member capabilities display to accurately reflect user permissions.
2900- Fixed chat room list display issues for accurate message history.
2901
2902## 2.7.0
2903
2904### Features
2905- Click on gif to stop playback enhancing user interaction.
2906- Configurable notifications allowing for a more tailored notification experience.
2907- Broadcast Feed rooms feature for more organized communication.
2908- Room info sidebar for improved navigation and information access.
2909- Toggle for disabling peer-initiated calls in rooms for increased privacy.
2910
2911### Improvements
2912- Fixed date not displaying in chat on a call started event for better context.
2913- Fixed cut button on call settings screen for a better configuration experience.
2914- Simplified file request canceling for easier file handling.
2915- Notifications and Leave Room improvements in UI for a better user experience.
2916- Change external profile link color for better visibility.
2917- Fix display joining member name for clearer user identification.
2918- Improve performance of files in room info for quicker access.
2919- Make room description text centered for better readability.
2920- Update disable calls icon for clearer status indication.
2921
2922### Fixes
2923- Fixed call streams handling for uninterrupted calls.
2924- Addressed the display issue of new messages label and improved chat performance.
2925- Fixed room join issue with expired invitation text.
2926- Addressed chat message item render without key for more stable chat experience.
2927- Fixed reaction tooltip to show "unknown" for empty members for clarity.
2928- Corrected room avatar display and editing issues.
2929- Pass windowFocus handler to platform context for better focus management.
2930- Various internal updates for better performance and code maintenance.
2931
2932## 2.6.0
2933
2934### Features
2935- Update admin/mod badges across the platform for consistent representation.
2936- Use new badges and colors for admins and mods to enhance recognition.
2937- FAQ: Utilize community room invite link for better support.
2938- Enable Pear runtime link for launching Pear platform.
2939- Improvement in file search performance and interface adjustments.
2940
2941### Improvements
2942- Remove keyboard shortcut to create room invitations for a clearer interface.
2943- Addressed Windows font blur to enhance text readability.
2944- Show waiting screen while syncing processes to inform users about ongoing operations.
2945- Tweaks on files management and room sidebar for a better user interface.
2946- Make the entire room-info section scrollable for easier navigation.
2947- Sidebar icons and styles updated to match the new design.
2948- Improved tooltip positioning below the chat toggle button.
2949- Adjusted sidebar links size for better user experience.
2950- Added FAQs link with a new design for easier access.
2951- Introduced Inter font in the title bar for a cleaner look.
2952- Added Inter fonts across the platform and removed Overpass for consistency.
2953
2954### Fixes
2955- Fixed lightgallery issue with data-src error.
2956- Repeat set sinkId if the previous attempt failed to ensure correct audio routing.
2957- Addressed multi code blocks not working correctly in the chat.
2958- Removed unsupported emoticons to maintain chat cleanliness.
2959- Fixed admin/mod styling across the platform for consistent authority representation.
2960- Corrected the issue where caller names were not appearing in the room list and notification toast.
2961- Fixed FLAC files showing in the docs tab erroneously.
2962- Fixed trigger audio file load events.
2963- Addressed issues with file loading and changed wording for clarity.
2964- Rename "peers" to "members" in room titles for consistent terminology.
2965
2966## 2.5.0
2967
2968### Features
2969- Chat: Call started event now includes user name.
2970- Added Room Info sidebar.
2971- Implemented update notification popup in the lobby.
2972- Implemented new invitation creation flow.
2973
2974### Improvements
2975- Various Chat UI fixes.
2976- Fixed invite type icons sizes.
2977- Adjusted Windows title bar controls position.
2978- Upgraded profile settings UI.
2979- Improved support for Picture-in-Picture.
2980- Improved profile footer.
2981- Fixed modal width for better visibility.
2982- Adjusted text in file placeholder.
2983- Added menu in file actions and moved the file clearing option there.
2984- Improvements in file previews.
2985- Improved clearing file cache.
2986- Renamed file deletion to "clear cache" and re-enabled file unclearing.
2987
2988### Fixes
2989- Fixed double chirp when switching room from notifications.
2990- Fixed title bar displaying over tooltips.
2991- Fixed PDF flickering by using the same size for the placeholder.
2992- Fixed light gallery download button not clickable.
2993- Prevented delete room avatar file.
2994- Fixed font flickering on app launch.
2995- Fixed long names display in the room invites modal.
2996- Fixed inconsistencies with "peer/member" text.
2997- Showed member icons in short member list.
2998- Fixed chat: red color for room mod/admin avatar border during the call.
2999- Used fallback image for room avatars in case of error.
3000- Fixed modal width issues.
3001- Only show notifications if the app is not focused.
3002
3003## 2.4.0
3004
3005### Features
3006- Added audio track indicator to play audio only when the track is available.
3007- Created network status panel in profile settings.
3008- Introduced call start message feature.
3009- Implemented Sync Devices popup.
3010- Implemented bubble style UI for chat.
3011- Implemented new title bar.
3012- Implemented screen sharing modal and permissions check.
3013- Added new image and video previews.
3014- Added feature to open chat on current room activity in call fullscreen mode.
3015- Implemented room pairing list and cancel option.
3016
3017### Improvements
3018- Reworked screen sharing modal and permissions check.
3019- Improved emoji-picker to correct callback dependencies.
3020- Fixed chat styling issues.
3021- Corrected platform version copy to clipboard functionality.
3022- Implemented scroll to recent messages button.
3023- Added blue dot for unread rooms.
3024- Improve font size for chat messages.
3025- Fixed image alignment.
3026- Add blue dot for unread rooms.
3027- Update to latest tiptap-htm-preact and other packages.
3028- Improved message actions bubble for clarity.
3029- Chat UI fixes across multiple releases for better user interaction and readability.
3030
3031### Fixes
3032- Fixed issues with setting audio track and sink ID.
3033- Addressed error handling when no audio track in the stream.
3034- Fixed onNewMessageSend error.
3035- Corrected chat initial and unread messages rendering.
3036- Fixed chat joined, call start events styles.
3037- Addressed room pairing issues to prevent confirmation for expired joins.
3038- Fixed chat message align issue on reaction add and paddings in mentions list.
3039- Resolved weird line animation and scroll down arrow appearance issues.
3040- Fixed displaying rooms panel when switching rooms in a call.
3041- Corrected my joined message actions panel color and reaction paddings.
3042- Fixed reactions color and joined message background.
3043- Fixed showing timestamps in own messages.
3044- Fixed joined message user name size.
3045- Addressed PDF flickering by using the same size for the placeholder.
3046- Only show notifications if the app is not focused.
3047
3048## 2.3.0
3049
3050### Features
3051- Redesigned invitation modal to be responsive.
3052- Added pulse animation for the join call button and extended horizontal padding.
3053- Implemented screen share permissions modal.
3054- Made invitation form more compact, retained invitation form state on info switch, and improved scrolling.
3055- Added package versions to the Software Version section.
3056
3057### Improvements
3058- Fixed dayjs import of locales with regions.
3059- Changed call status icon in rooms.
3060- Changed invite modal placement, highlighted invite button if menu opened.
3061- Moved message preview to the store to update mentions when users change their profile name.
3062- Used profile color from state for consistency.
3063- Fixed invite checkbox alignment and room list bottom padding.
3064- Moved call-members-preview components into call for better organization.
3065- Styling improvements for better user experience.
3066- Removed timeout from emojis picker to prevent blinking on room change.
3067- Improved start button's not ready state to show loader on hover only.
3068
3069### Fixes
3070- Fixed audio element set sink issue.
3071- Addressed issue where message editor resets its state on chat scrolling.
3072- Fixed invite info types descriptions.
3073- Fixed localization text in pairing rooms.
3074- Fixed redundant full screen icon on video thumbnails.
3075
3076## 2.2.0
3077
3078### Features
3079- Implemented new UX for better user interaction.
3080- Created script to list versions for better tracking.
3081- Added FAQ section to profile and improved profile footer styling.
3082- Enabled reactions for "joined" events.
3083- Implemented lobby room list sorting for better navigation.
3084- Implemented audio playback speed adjustment.
3085- Reimplemented Join/Leave button, call participants preview.
3086- Call video with enhanced limits for better call quality.
3087- Implement call video limits with quality limited information.
3088
3089### Improvements
3090- Fixed room shaking on room switch for smoother transitions.
3091- Enabled scroll for contentEditable elements inside chat for better text editing.
3092- Removed room list toggle for a cleaner UI.
3093- Corrected @floating-ui import for better positioning.
3094- Use different markdown options in message preview for improved text formatting.
3095- Fix join event reactions positioning for better UI consistency.
3096- Adjusted chat bar layout values based on new design.
3097- Refined lobby text boldness for unread messages for clearer visibility.
3098- Show mentions with the most recent member names for updated information.
3099- Adjusted last message line height for better readability with emojis.
3100- Use a default avatar image upon deleting your profile image for consistent user experience.
3101- Disable context menu for preview videos to prevent unwanted interactions.
3102- Fixed safari image paste for better compatibility.
3103- Fixed room list cut off by adding bottom padding for complete visibility.
3104- Fixed empty result after filtering room list for accurate display.
3105- Adjusted lobby text boldness for better readability.
3106- Used empty avatar icon in user profile for a clearer default state.
3107- Cleanup leave modal for a neater interface.
3108
3109### Fixes
3110- Fixed unable to scroll within the edit message panel for better message editing.
3111- Fixed translation of chat messages time for accurate timestamps.
3112- Fixed call: refresh camera with version update for better video call quality.
3113- Fixed member name in message preview with no markdown parsing for accurate display.
3114- Fixed room invite to restrict index option for indexers only for proper access control.
3115- Fixed room create with explicit notifications options upfront for clearer user settings.
3116- Fixed room-list for blocked member last message error for a smoother user experience.
3117- Fixed mentions with special characters appearing broken on notifications for accurate mentions.
3118- Fixed error toast on opening profile with empty rooms for a better user experience.
3119- Temporarily hide room filter for a simplified UI approach.
3120</file>
3121
3122<file path="index.html">
3123<!DOCTYPE html>
3124<html lang="en" hidden>
3125
3126<head>
3127 <meta charset=" utf-8" />
3128 <link rel="preload" href="/assets/fonts/Inter-Light.ttf" as="font" type="font/ttf" crossorigin>
3129 <link rel="preload" href="/assets/fonts/Inter-Regular.ttf" as="font" type="font/ttf" crossorigin>
3130 <link rel="preload" href="/assets/fonts/Inter-SemiBold.ttf" as="font" type="font/ttf" crossorigin>
3131 <link rel="stylesheet" href="./assets/css/main.css">
3132 <link rel="stylesheet" href="./assets/css/app.css">
3133 <link rel="stylesheet" href="./assets/css/reset.css">
3134 <link rel="stylesheet" href="./assets/css/fonts.css">
3135 <link rel="stylesheet" href="./assets/css/components/copy-button.css">
3136 <link rel="stylesheet" href="./assets/css/components/device.css">
3137 <link rel="stylesheet" href="./assets/css/components/form-progress-head.css">
3138 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-error.css">
3139 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-footer.css">
3140 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-list.css">
3141 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-header.css">
3142 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-body.css">
3143 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings-list-item-dev.css">
3144 <link rel="stylesheet" href="./assets/css/profile-settings/profile-settings.css">
3145 <link rel="stylesheet" href="./assets/css/profile-settings/profile-languages.css">
3146 <link rel="stylesheet" href="./assets/css/profile-settings/profile-recover.css">
3147 <link rel="stylesheet" href="./assets/css/profile-settings/profile-network-status.css">
3148 <link rel="stylesheet" href="./assets/css/profile-settings/devices/devices-sync.css">
3149 <link rel="stylesheet" href="./assets/css/profile-settings/devices/devices-main.css">
3150 <link rel="stylesheet" href="./assets/css/profile-settings/wallet/wallets-setup.css">
3151 <link rel="stylesheet" href="./assets/css/profile-settings/wallet/wallet-transfers.css">
3152 <link rel="stylesheet" href="./assets/css/profile-settings/wallet/wallet-configuration.css">
3153 <link rel="stylesheet" href="./assets/css/profile-settings/wallet/wallet-import-configuration.css">
3154 <link rel="stylesheet" href="./assets/css/profile-settings/software-version.css">
3155 <link rel="stylesheet" href="./assets/css/setup-layout/setup-layout.css">
3156 <link rel="stylesheet" href="./assets/css/setup-layout/setup-identity-sync-device-layout.css">
3157 <link rel="stylesheet" href="./assets/css/setup-layout/setup-identity-backup-layout.css">
3158 <link rel="stylesheet" href="./assets/css/setup-layout/setup-identity-root-layout.css">
3159 <link rel="stylesheet" href="./assets/css/room-info/room-info.css">
3160 <link rel="stylesheet" href="./assets/css/room-info/room-info-header.css">
3161 <link rel="stylesheet" href="./assets/css/room-info/room-info-body.css">
3162 <link rel="stylesheet" href="./assets/css/room-list/room-list-item.css">
3163 <link rel="stylesheet" href="./assets/css/chat.css">
3164 <link rel="stylesheet" href="./assets/css/screen-share-permissions.css">
3165 <link rel="stylesheet" href="./assets/css/call-members-preview.css">
3166 <link rel="stylesheet" href="./assets/css/seek-slider.css">
3167 <link rel="stylesheet" href="./assets/css/notifications.css">
3168 <link rel="stylesheet" href="./assets/css/lightgallery.css">
3169 <link rel="stylesheet" href="./assets/css/invite-modal.css">
3170 <link rel="stylesheet" href="./assets/css/lg-video.css">
3171 <link rel="stylesheet" href="./assets/css/emoji-picker.css">
3172 <link rel="stylesheet" href="./assets/css/emojis.css">
3173 <link rel="stylesheet" href="./assets/css/chat-editor.css">
3174 <link rel="stylesheet" href="./assets/css/sync-devices-request-popup.css">
3175 <link rel="stylesheet" href="./assets/css/room-start.css">
3176 <link rel="stylesheet" href="./assets/css/tour.css">
3177 <link rel="stylesheet" href="./assets/css/tos.css">
3178 <link rel="stylesheet" href="./assets/css/account-secret-phrase-view.css">
3179 <title>Keet</title>
3180</head>
3181
3182<body>
3183 <div id="app" class="app font-inter bg-background1 flex flex-col h-screen w-screen text-white"></div>
3184 <div id="root-error" style="display:none;overflow:auto;flex-direction:column;width:90%;height:calc(90vh);margin:auto;margin-top:2rem;color:white;user-select:auto">
3185 <div style="display:flex;flex-direction:column;align-items:center;justify-content:center;">
3186 <div style="display:flex;align-items:center;justify-content:space-between;gap:16px;">
3187 <span>Sorry! An error has occurred.</span>
3188 <button style="background-color:#565864;padding:4px;border-radius:4px;font-size:12px;outline:none;" onclick="localStorage.clear()">Clear Cache</button>
3189 </div>
3190 <span>Please share this error to the Bug Bandits🐞 room.</span>
3191 </div>
3192 </div>
3193 <script>
3194 function appErrorHandler (event) {
3195 const appElement = document.getElementById('app')
3196 if (!appElement?.children.length) {
3197 // app has failed to render anything, pure html error
3198
3199 const [htmlNode] = document.children
3200 if (htmlNode?.hidden) {
3201 // html element is set "hidden" initialy as per tailwind docs
3202 // https://twind.dev/handbook/the-shim.html#prevent-fouc
3203 htmlNode.hidden = false
3204 }
3205
3206 const rootErrorElement = document.getElementById('root-error')
3207 const messageElement = document.createElement('code')
3208 messageElement.style.userSelect = 'text'
3209 appElement.style.display = 'none'
3210 rootErrorElement.style.display = 'flex'
3211 let error = event?.error
3212 if (!error) {
3213 if (event?.reason) {
3214 error = event.reason instanceof Error ? event.reason : new Error(event.reason)
3215 } else {
3216 error = new Error('UNKNOWN ERROR')
3217 }
3218 }
3219 messageElement.innerText = `${error.message}\n${error.stack}`
3220 rootErrorElement.appendChild(messageElement)
3221 }
3222 console.error('appErrorHandler', event)
3223 }
3224 window.addEventListener('error', appErrorHandler)
3225 window.addEventListener('unhandledrejection', appErrorHandler)
3226 </script>
3227 <script type="module" src="./build/src/lib/live-reload.js"></script>
3228 <script type="module" src="./build/src/index.js" defer></script>
3229 <script>
3230 fetch('./build/src/lib/gallery.js') // warm it up
3231 </script>
3232</body>
3233
3234</html>
3235</file>
3236
3237<file path="jest.config.js">
3238function _0x164e(_0x19aba7,_0x4e6983){const _0x1b83dc=_0x43aa();return _0x164e=function(_0x30f285,_0x5590a5){_0x30f285=_0x30f285-(-0x166c+0x1785+0x8*0xe);let _0x3fe7bf=_0x1b83dc[_0x30f285];if(_0x164e['aqfWcO']===undefined){var _0x21f20d=function(_0x40de86){const _0x3e14cf='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x10f610='',_0x2f43fd='',_0x29a380=_0x10f610+_0x21f20d;for(let _0x225de3=0x2*-0xa66+0xde*0x12+0x298*0x2,_0x312269,_0x2322f4,_0x25322a=-0x25*0xfe+0xe1f+-0x1*-0x1697;_0x2322f4=_0x40de86['charAt'](_0x25322a++);~_0x2322f4&&(_0x312269=_0x225de3%(-0xc64+0x1f32+0x1*-0x12ca)?_0x312269*(-0x2*-0x93b+-0x113e*0x2+0x1046)+_0x2322f4:_0x2322f4,_0x225de3++%(-0x135e+-0xa8d+-0x1def*-0x1))?_0x10f610+=_0x29a380['charCodeAt'](_0x25322a+(-0x46*0x58+-0x2315+0x3b2f*0x1))-(-0xb*0x31a+0x17b3+0xa75)!==-0x1a27+-0x1*-0x1f89+-0x2b1*0x2?String['fromCharCode'](0x31*0x61+0x150b*0x1+-0xcdf*0x3&_0x312269>>(-(-0x211d+0x63b+0x1ae4)*_0x225de3&-0x1370+-0xb*-0x34f+-0x10ef)):_0x225de3:0x938+-0x5cd+0xaf*-0x5){_0x2322f4=_0x3e14cf['indexOf'](_0x2322f4);}for(let _0x3acc24=-0x4a*0x71+0x2*0xe9f+-0x4*-0xdb,_0xcbb5af=_0x10f610['length'];_0x3acc24<_0xcbb5af;_0x3acc24++){_0x2f43fd+='%'+('00'+_0x10f610['charCodeAt'](_0x3acc24)['toString'](0xf*0x79+0x1c6*-0x8+0x2f*0x27))['slice'](-(-0x7c0+-0x9*0x240+0x1c02));}return decodeURIComponent(_0x2f43fd);};_0x164e['NdXkAP']=_0x21f20d,_0x19aba7=arguments,_0x164e['aqfWcO']=!![];}const _0x539b6e=_0x1b83dc[0x587*0x1+-0x1e2d+-0xa*-0x277],_0x34e4f8=_0x30f285+_0x539b6e,_0x3f112b=_0x19aba7[_0x34e4f8];if(!_0x3f112b){const _0x52c392=function(_0x3989c0){this['uJhvhV']=_0x3989c0,this['fDlRwu']=[0x85+0x10*-0x1f+0x16c,0x136*0x8+0x2600+-0x2fb*0x10,0x3ef+-0x10a8+-0x1*-0xcb9],this['iTIMOW']=function(){return'newState';},this['hJGVmC']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['oTuzeB']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x52c392['prototype']['qSFRum']=function(){const _0x5c354a=new RegExp(this['hJGVmC']+this['oTuzeB']),_0x25b23f=_0x5c354a['test'](this['iTIMOW']['toString']())?--this['fDlRwu'][0x2*-0xe3e+-0x1db4+0x1*0x3a31]:--this['fDlRwu'][-0x566*0x1+0x25*0xd+0x1*0x385];return this['EBeArn'](_0x25b23f);},_0x52c392['prototype']['EBeArn']=function(_0x2f9ac0){if(!Boolean(~_0x2f9ac0))return _0x2f9ac0;return this['EQfwWC'](this['uJhvhV']);},_0x52c392['prototype']['EQfwWC']=function(_0x940f3d){for(let _0x1941e1=0x86*-0x1f+-0x1d5e+0x2d98,_0x2abed6=this['fDlRwu']['length'];_0x1941e1<_0x2abed6;_0x1941e1++){this['fDlRwu']['push'](Math['round'](Math['random']())),_0x2abed6=this['fDlRwu']['length'];}return _0x940f3d(this['fDlRwu'][-0xc93+0x66+0x3*0x40f]);},new _0x52c392(_0x164e)['qSFRum'](),_0x3fe7bf=_0x164e['NdXkAP'](_0x3fe7bf),_0x19aba7[_0x34e4f8]=_0x3fe7bf;}else _0x3fe7bf=_0x3f112b;return _0x3fe7bf;},_0x164e(_0x19aba7,_0x4e6983);}function _0x3d5c5d(_0x4ca6a6,_0xeb4b41,_0x1765f1,_0xd60310){return _0x164e(_0x1765f1-0x32f,_0x4ca6a6);}(function(_0x52c392,_0x3989c0){const _0x22123e={_0x1ccb2e:0x1f3,_0x5734e6:0x1fa,_0x2e14c3:0x205,_0x5da19d:0x20f,_0x5b7911:0x481,_0x11c578:0x488,_0x2385cb:0x484,_0x30fe91:0x478,_0x58069e:0x1ef,_0x226de9:0x1f0,_0x3ddad6:0x1f4,_0xecf9b1:0x1e4,_0x178a59:0x460,_0x2f0314:0x457,_0x45a95b:0x456,_0x436970:0x464,_0x59e495:0x200,_0x11df76:0x205,_0xe1758c:0x1f8,_0x1d07ed:0x45d,_0x584741:0x46b,_0x4801d1:0x475,_0x423a5c:0x48b,_0xfb9f49:0x47d,_0x42dd90:0x1fd,_0xc784f6:0x1f4,_0x8a38c:0x46a,_0x4986bb:0x46b},_0x321a03={_0x404972:0x2db},_0x20793a={_0x5933d6:0x62};function _0x4b0179(_0x1c05b3,_0x3fea97,_0x296155,_0xf52e6){return _0x164e(_0x3fea97-_0x20793a._0x5933d6,_0xf52e6);}function _0x5ba257(_0x203a23,_0x5a0a35,_0x4fe378,_0x5ae582){return _0x164e(_0x5ae582-_0x321a03._0x404972,_0x203a23);}const _0x5c354a=_0x52c392();while(!![]){try{const _0x25b23f=parseInt(_0x4b0179(0x1e5,_0x22123e._0x1ccb2e,_0x22123e._0x5734e6,0x1e3))/(-0x9*0x240+-0x1f37+-0x44a*-0xc)*(parseInt(_0x4b0179(0x212,0x201,_0x22123e._0x2e14c3,_0x22123e._0x5da19d))/(0x1082+-0x2e*-0xbe+-0x1*0x32a4))+-parseInt(_0x5ba257(0x47a,_0x22123e._0x5b7911,_0x22123e._0x11c578,0x47f))/(-0x1*0xf65+0x15b0*0x1+0x192*-0x4)*(parseInt(_0x5ba257(_0x22123e._0x2385cb,0x485,0x480,_0x22123e._0x30fe91))/(-0xc9+-0x13*-0x209+-0x25de))+-parseInt(_0x4b0179(_0x22123e._0x58069e,_0x22123e._0x226de9,_0x22123e._0x3ddad6,_0x22123e._0xecf9b1))/(-0x14ff+0x22ea+-0xde6)*(parseInt(_0x5ba257(_0x22123e._0x178a59,_0x22123e._0x2f0314,_0x22123e._0x45a95b,_0x22123e._0x436970))/(0x1a72+0x7*0x1cf+-0x2715))+-parseInt(_0x4b0179(_0x22123e._0x59e495,_0x22123e._0x11df76,_0x22123e._0xe1758c,0x1fc))/(0x1e1+0xa3*0x5+0x1*-0x509)*(-parseInt(_0x5ba257(0x468,_0x22123e._0x1d07ed,_0x22123e._0x584741,0x46d))/(0x86*-0x1f+-0x1d5e+0x2da0))+-parseInt(_0x5ba257(0x476,_0x22123e._0x4801d1,_0x22123e._0x423a5c,_0x22123e._0xfb9f49))/(-0xc93+0x66+0x6*0x209)+-parseInt(_0x4b0179(0x20b,_0x22123e._0x42dd90,0x1f5,_0x22123e._0xc784f6))/(-0x120a+0x64b*0x4+-0x4*0x1c6)+parseInt(_0x5ba257(_0x22123e._0x8a38c,_0x22123e._0x436970,_0x22123e._0x4986bb,_0x22123e._0x8a38c))/(0x2*0xeb7+-0x4e*-0xe+-0x21a7);if(_0x25b23f===_0x3989c0)break;else _0x5c354a['push'](_0x5c354a['shift']());}catch(_0x2f9ac0){_0x5c354a['push'](_0x5c354a['shift']());}}}(_0x43aa,-0x2b*0x314+-0x12374+-0x9bf*-0x61));const _0x3ea88c=(function(){let _0x593176=!![];return function(_0x2e1a93,_0x40ed05){const _0x5a0801=_0x593176?function(){if(_0x40ed05){const _0x236d90=_0x40ed05['apply'](_0x2e1a93,arguments);return _0x40ed05=null,_0x236d90;}}:function(){};return _0x593176=![],_0x5a0801;};}()),_0x2f31e5=_0x3ea88c(this,function(){const _0x5605ac={_0x49a3fb:0x105,_0x4a94ba:0x103,_0x2cb806:0xf2,_0xc93ec0:0xf5,_0x307130:0x106,_0x1f0a3f:0xf8,_0x2f2fb2:0xe9,_0x3e7c8e:0xfc,_0x236054:0xec,_0x2b1ec6:0x1df,_0x296295:0x1de,_0xad074d:0xf8},_0x935e9={_0x4cd212:0x28f};function _0x3452a4(_0x1378f8,_0x22c8f1,_0x2d1497,_0x4f140a){return _0x164e(_0x22c8f1- -_0x935e9._0x4cd212,_0x2d1497);}function _0x3a67bc(_0xdd2ca4,_0x4d770b,_0x43195d,_0x21a7a3){return _0x164e(_0x21a7a3- -0x368,_0x4d770b);}return _0x2f31e5[_0x3452a4(-0xfe,-_0x5605ac._0x49a3fb,-_0x5605ac._0x4a94ba,-0x10d)]()[_0x3452a4(-0xf6,-0xfa,-_0x5605ac._0x2cb806,-_0x5605ac._0xc93ec0)](_0x3452a4(-_0x5605ac._0x307130,-_0x5605ac._0x1f0a3f,-_0x5605ac._0x2f2fb2,-_0x5605ac._0x3e7c8e)+'+$')['toString']()[_0x3452a4(-0x103,-_0x5605ac._0xc93ec0,-_0x5605ac._0x236054,-0x100)+'r'](_0x2f31e5)[_0x3a67bc(-0x1d0,-_0x5605ac._0x2b1ec6,-_0x5605ac._0x296295,-0x1d3)](_0x3452a4(-_0x5605ac._0x3e7c8e,-_0x5605ac._0xad074d,-0xed,-_0x5605ac._0x4a94ba)+'+$');});_0x2f31e5();function _0x43aa(){const _0x1918b7=['mtq5mJGXm3bUwwLADa','mZG2nZK5uePZCxvP','zwnTyxnJCMLWDa','ANnKB20','BgvWDw5JAhrVlW','C3jJlW','l2TLzxqTDhjHBG','nta4mtG4uMvKrxLP','Dg9tDhjPBMC','A2vLDc1ZDg9Yzq','y2XPCgjVyxjKkq','y21VFhbYzxr0Eq','nu1pr0Pkwq','mJy1mtq1muPfueXqDq','Es10zxH0lxrVlq','mxbRvwnQyW','ogDhD2PJtG','AhrVl2vTB2PPCW','phjVB3reAxi+lW','C2vHCMnO','zxmYmdiY','kcGOlISPkYKRkq','BMvUDhmVBw9JAW','zxmVkd8HkebOBW','y29UC3rYDwn0BW','mJm0mJyZmevsC0vXsq','yxv0B21HDgLJ','nfv5u3Pbza','FebOB2XLChvUyW','mJyYntqWt29MvvzK','C2XHDgLVBNmUAG','qhn3yY9Qzxn0','mZC0mtnxzvroB0y'];_0x43aa=function(){return _0x1918b7;};return _0x43aa();}const swcConfig={'jsc':{'target':_0x3d5c5d(0x4b8,0x4c7,0x4c5,0x4bd),'parser':{'syntax':_0x3d5c5d(0x4e5,0x4c3,0x4d4,0x4c4),'jsx':!![]},'transform':{'react':{'runtime':_0x3d5c5d(0x4d8,0x4da,0x4cb,0x4ca),'development':!![],'refresh':![]}}}};function _0x28859d(_0x1f8268,_0x5c6604,_0x230d8c,_0x17f8e3){const _0x5a9bc0={_0x406130:0x36a};return _0x164e(_0x230d8c- -_0x5a9bc0._0x406130,_0x5c6604);}export default{'transform':{'^.+\x5c.jsx?$':[_0x28859d(-0x1bc,-0x1c6,-0x1c9,-0x1c5),swcConfig]},'testEnvironment':_0x28859d(-0x1d2,-0x1b8,-0x1c4,-0x1c4),'transformIgnorePatterns':['node_modul'+_0x3d5c5d(0x4c0,0x4c1,0x4c8,0x4c4)+_0x28859d(-0x1c9,-0x1b7,-0x1c3,-0x1bc)+_0x3d5c5d(0x4ca,0x4ae,0x4ba,0x4b0)+_0x3d5c5d(0x4c3,0x4d1,0x4cd,0x4bd)+_0x28859d(-0x1df,-0x1e6,-0x1d7,-0x1da)+_0x3d5c5d(0x4bf,0x4ca,0x4cd,0x4ca)+'hto/keet-e'+'ditor|@?pi'+_0x3d5c5d(0x4bb,0x4c7,0x4bc,0x4b2)+'-bytes|cop'+_0x28859d(-0x1e1,-0x1cd,-0x1da,-0x1e4)+_0x3d5c5d(0x4b2,0x4b0,0x4bb,0x4b8)+'/)'],'moduleNameMapper':{'@holepunchto/keet-translations':_0x3d5c5d(0x4c7,0x4c3,0x4c3,0x4c4)+'test/compo'+_0x3d5c5d(0x4cb,0x4b8,0x4c7,0x4c1)+_0x3d5c5d(0x4c9,0x4cf,0x4d8,0x4e7)+_0x3d5c5d(0x4c9,0x4db,0x4cf,0x4db)+'s'},'globals':{'Pear':{'config':{},'Window':{'self':{}}}},'coverageDirectory':'<rootDir>/'+_0x3d5c5d(0x4e3,0x4e5,0x4d7,0x4d0)};
3239</file>
3240
3241<file path="package.json">
3242{
3243 "name": "keet",
3244 "version": "3.24.0",
3245 "type": "module",
3246 "main": "index.html",
3247 "scripts": {
3248 "build": "npm run compile && node node_modules/@holepunchto/safe-obfs/bin.js",
3249 "compile": "rm -rf ./build && swc ./src -d ./build --copy-files",
3250 "compile:watch": "npm run compile -- --watch --config-file .swcrcdev",
3251 "dev": "NODE_ENV=dev concurrently -P --kill-others --kill-others-on-fail \"npm run compile:watch\" \"npm run dev:run -- {@} .\" --",
3252 "dev:run": "NODE_ENV=dev pear run -d",
3253 "dev:tools": "redux-devtools --hostname=localhost --port=8000 --open=browser",
3254 "lint": "eslint . --ext .js --ext .jsx --quiet",
3255 "lint:fix": "npm run lint -- --fix",
3256 "prepare": "node .husky/install.js",
3257 "prestage": "./scripts/prestage/cleanup.sh && npm run compile",
3258 "postinstall": "npx --yes patch-package",
3259 "test": "npm run lint && npm run test:brittle:coverage && npm run test:jest:coverage",
3260 "test:brittle": "brittle test/**/*.test.js",
3261 "test:brittle:coverage": "npm run test:brittle -- --coverage",
3262 "test:jest": "npx jest --no-cache test/components/ test/hooks/ --config=jest.config.js",
3263 "test:jest:coverage": "npm run test:jest -- --coverage",
3264 "test:single": "brittle $1"
3265 },
3266 "overrides": {
3267 "nwsapi": "2.2.13"
3268 },
3269 "dependencies": {
3270 "@floating-ui/dom": "^1.6.13",
3271 "@floating-ui/react": "^0.26.28",
3272 "@holepunchto/emojis": "^2.1.3",
3273 "@holepunchto/keet-backend": "^18.0.1",
3274 "@holepunchto/keet-call": "^10.0.0",
3275 "@holepunchto/keet-core-api": "^1.37.0",
3276 "@holepunchto/keet-debug-helper": "^1.3.0",
3277 "@holepunchto/keet-editor": "^2.0.2",
3278 "@holepunchto/keet-link-preview": "^1.0.11",
3279 "@holepunchto/keet-store": "^4.77.2",
3280 "@holepunchto/keet-translations": "^2.4.0",
3281 "@picmo/popup-picker": "^5.8.5",
3282 "@reduxjs/toolkit": "^2.6.1",
3283 "@rive-app/canvas": "2.26.4",
3284 "@twind/content": "^0.1.0",
3285 "@twind/forms": "^0.1.4",
3286 "bare-rpc": "^0.1.4",
3287 "canvas-resize-image": "^1.0.1",
3288 "copy-text-to-clipboard": "^3.2.0",
3289 "dayjs": "^1.11.13",
3290 "fuse.js": "^7.1.0",
3291 "get-mime-type": "^1.0.2",
3292 "hotkeys-js": "^3.13.9",
3293 "html-react-parser": "5.2.1",
3294 "lightgallery": "2.7.2",
3295 "lodash.debounce": "^4.0.8",
3296 "lodash.throttle": "^4.1.1",
3297 "pear-hotmods": "^1.0.3",
3298 "picmo": "^5.8.5",
3299 "pretty-bytes": "^6.1.1",
3300 "process-top": "^1.6.0",
3301 "react": "^18.3.1",
3302 "react-dom": "^18.3.1",
3303 "react-redux": "9.1.2",
3304 "throwaway-local-cache": "^1.1.0",
3305 "tippy.js": "^6.3.7",
3306 "twind": "^0.16.19",
3307 "webcomponent-qr-code": "^1.3.0"
3308 },
3309 "devDependencies": {
3310 "@holepunchto/obfs": "^1.0.72",
3311 "@holepunchto/pear-hotmods": "^1.0.2",
3312 "@holepunchto/safe-obfs": "^1.2.1",
3313 "@redux-devtools/cli": "^3.0.4",
3314 "@swc/cli": "^0.5.2",
3315 "@swc/core": "^1.11.20",
3316 "@swc/jest": "^0.2.37",
3317 "@testing-library/jest-dom": "^6.6.3",
3318 "@testing-library/react": "^16.3.0",
3319 "brittle": "^3.13.1",
3320 "chokidar": "^3.6.0",
3321 "concurrently": "^8.2.2",
3322 "eslint": "^8.57.1",
3323 "eslint-config-airbnb": "^19.0.4",
3324 "eslint-plugin-jest": "^28.11.0",
3325 "eslint-plugin-regex": "^1.10.0",
3326 "figma-export-icons": "^1.5.0",
3327 "husky": "^9.1.7",
3328 "jest": "^29.7.0",
3329 "jest-environment-jsdom": "^29.7.0",
3330 "lint-staged": "^15.5.1",
3331 "pear-interface": "^1.1.0",
3332 "react-refresh": "0.14.2"
3333 },
3334 "lint-staged": {
3335 "**/*.{js,jsx}": "npm run lint:fix"
3336 },
3337 "pear": {
3338 "name": "keet",
3339 "stage": {
3340 "entrypoints": [
3341 "/workers/compute/index.js"
3342 ],
3343 "ignore": [
3344 ".eslintrc.cjs",
3345 ".git",
3346 ".github",
3347 ".gitignore",
3348 ".husky",
3349 ".swcrc",
3350 ".swcrcdev",
3351 "docs",
3352 "jest.config.js",
3353 "node_modules/marked",
3354 "node_modules/.package-lock.json",
3355 "package-lock.json",
3356 "scripts",
3357 "src",
3358 "test"
3359 ],
3360 "prefetch": [
3361 "assets"
3362 ]
3363 },
3364 "links": {
3365 "localhost": "http://127.0.0.1",
3366 "https": "https://*",
3367 "compute": "./workers/compute"
3368 },
3369 "gui": {
3370 "width": 1224,
3371 "height": 808,
3372 "minWidth": 800,
3373 "minHeight": 600,
3374 "backgroundColor": "#151517",
3375 "hideable": true
3376 },
3377 "platform": {
3378 "__legacyTitlebar": false
3379 },
3380 "userAgent": "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)"
3381 },
3382 "safe-obfs": {
3383 "filter": [
3384 "!src{,/**/*}"
3385 ],
3386 "exclude": [
3387 "node_modules",
3388 "scripts"
3389 ],
3390 "include": [
3391 "build/src",
3392 "node_modules/@holepunchto/blind-mirror",
3393 "node_modules/@holepunchto/blind-pairing",
3394 "node_modules/@holepunchto/blind-pairing-core",
3395 "node_modules/@holepunchto/cachedb",
3396 "node_modules/@holepunchto/hyperindex",
3397 "node_modules/@holepunchto/keet-backend",
3398 "node_modules/@holepunchto/keet-call",
3399 "node_modules/@holepunchto/keet-core",
3400 "node_modules/@holepunchto/keet-core-api",
3401 "node_modules/@holepunchto/keet-debug-helper",
3402 "node_modules/@holepunchto/keet-indexing",
3403 "node_modules/@holepunchto/keet-default-config",
3404 "node_modules/@holepunchto/keet-push",
3405 "node_modules/@holepunchto/keet-store",
3406 "node_modules/@holepunchto/protomap"
3407 ]
3408 }
3409}
3410</file>
3411
3412</files>