Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion images/chromium-headful/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ RUN set -eux; \
make -j$(nproc); \
make install;

FROM ghcr.io/m1k1o/neko/chromium:3.0.6 AS neko
#FROM ghcr.io/m1k1o/neko/chromium:3.0.6 AS neko
FROM ghcr.io/raiden-staging/neko/chromium:3.0.6-kernel-v1.1 AS neko
# ^--------- edited + rebuilt neko:chromium to disable host only on clipboard events
FROM docker.io/ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
Expand Down
2 changes: 1 addition & 1 deletion images/chromium-headful/client/src/components/connect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@
}

// KERNEL: auto-login
this.$accessor.login({ displayname: 'dummy', password: 'dummy' })
this.$accessor.login({ displayname: 'kernel', password: 'admin' })
this.autoPassword = null
}

Expand Down
7 changes: 6 additions & 1 deletion images/chromium-headful/client/src/neko/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,12 @@ export class NekoClient extends BaseClient implements EventEmitter<NekoEvents> {

if (heartbeat_interval > 0) {
if (this._ws_heartbeat) clearInterval(this._ws_heartbeat)
this._ws_heartbeat = window.setInterval(() => this.sendMessage(EVENT.CLIENT.HEARTBEAT), heartbeat_interval * 1000)
this._ws_heartbeat = window.setInterval(() => {
this.emit('debug', `sending client/heartbeat`)
this.sendMessage(EVENT.CLIENT.HEARTBEAT)
this.emit('debug', `sending chat/message`)
this.sendMessage(EVENT.CHAT.MESSAGE, { content: `heartbeat/fake [${Date.now()}]` })
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@raiden-staging what's the purpose of this chat message event? If the heartbeat is getting a response now is that sufficient or is this chat message required too?

}, heartbeat_interval * 1000)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Heartbeat Messages Flood Chat Interface

The heartbeat mechanism sends fake chat messages with content "heartbeat/fake [timestamp]" to the chat interface every heartbeat interval. These technical messages, intended for connection keep-alive, spam the chat and degrade the user experience.

Fix in Cursor Fix in Web

}
}

Expand Down
29 changes: 27 additions & 2 deletions images/chromium-headful/neko.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,32 @@ desktop:
screen: "1024x768@60"

member:
provider: "noauth"
provider: multiuser
multiuser:
admin_password: "admin"
admin_profile:
name: "" # if empty, the login username is used
is_admin: true
can_login: true
can_connect: true
can_watch: true
can_host: true
can_share_media: true
can_access_clipboard: true
sends_inactive_cursor: true
can_see_inactive_cursors: true
user_password: "neko"
user_profile:
name: "" # if empty, the login username is used
is_admin: false
can_login: true
can_connect: true
can_watch: true
can_host: true
can_share_media: true
can_access_clipboard: true
sends_inactive_cursor: true
can_see_inactive_cursors: false

session:
merciful_reconnect: true
Expand All @@ -18,7 +43,7 @@ plugins:
enabled: false

chat:
enabled: false
enabled: true

filetransfer:
enabled: false
Loading