friend-assistant 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/BUILD.json +2 -2
- package/dist/chrome-control/extension/popup.html +1 -1
- package/dist/chrome-control/extension/popup.js +4 -1
- package/dist/friend.mjs +4544 -3243
- package/dist/web/assets/{index-B5L9wvda.js → index-Cg-1ZV_2.js} +60 -60
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -357,6 +357,7 @@ Friend's screen has a media player and four widgets drawn in a HUD style (angled
|
|
|
357
357
|
- **Files and pictures to your Telegram or WhatsApp.** Ask Friend to send you a photo, a clip, a song or a document that is on the PC (`message.send_file`). You approve every file after seeing its name, every time. Telegram takes up to 50 MB; WhatsApp up to 16 MB and needs Friend's public address (Twilio fetches the file from a link that works for ten minutes). Only to you, never as SMS; programs (.exe, scripts) and Friend's own data folder are never sent.
|
|
358
358
|
- **Voice messages in Telegram and WhatsApp.** Send Friend a voice message from your own linked Telegram chat or your own WhatsApp number and it is understood and answered like a typed one (the reply starts with what it heard). It uses the same voice engine as the PC microphone, so that must be running; if not, you are told. Up to 5 minutes or 8 MB; from anyone else voice messages are ignored.
|
|
359
359
|
- **Audius (plugin).** Free music from Audius, an open music service: no account, no key, no payment. Install it from Plugins and switch it on; the assistant and the player can then search and play it, on the screen or from the PC. See `docs/guides/audius-setup.md`.
|
|
360
|
+
- **Web video (plugin).** Ask Friend to play a video or a song from YouTube or almost any video site: "play lofi hip hop on YouTube", or give it a link. It plays inside Friend, in a card on your Friend screen (a browser, also a phone) or in a window on the PC, as you choose in the plugin's Configure page; Friend can pause, jump to a time, change the volume and stop it, and it never opens YouTube in your Chrome. **Nothing to install**: when you turn the plugin on, Friend downloads the two free programs it needs (**yt-dlp** and **ffmpeg**) by itself from their projects' own release pages, checks them against the published checksums, keeps them in its own folder and keeps yt-dlp up to date. (**mpv** is optional, for a window of its own on the PC; without it a browser window is used.) Safety: only public http and https links, never an address on your own network, a limit on length and an optional list of allowed sites; nothing is saved to your disk. See [docs/guides/web-video.md](docs/guides/web-video.md).
|
|
360
361
|
- **Play from the PC's speakers.** Settings → Widgets → *Where the sound comes out*: the screen's browser (default) or the PC that runs Friend, with no browser open. The folder's music is played by mpv (free; "Check mpv" finds it or shows the install command for your system) and Spotify on a Spotify device you name. The screen then shows what the PC plays and controls it. See [docs/guides/host-output.md](docs/guides/host-output.md).
|
|
361
362
|
- **Control by the assistant.** Say or type "play something by ...", "next", "turn it down", "shuffle", "what's playing". The assistant can play, pause, skip, seek, change volume, shuffle, repeat and edit the queue, and search the library; it cannot change the folder or any widget setting. Over Alexa the music tools are off unless you add them to the voice tools yourself.
|
|
362
363
|
- **Quick launch.** Up to 12 buttons, each opening an address (http or https only), asking the assistant something, opening a panel (chat, tasks, plugins, settings, music) or controlling the music.
|
package/dist/BUILD.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
<input id="name" type="text" maxlength="40" autocomplete="off" spellcheck="false" placeholder="tells your Chromes apart, for example office-pc">
|
|
85
85
|
</label>
|
|
86
86
|
<label>SERVER HOST
|
|
87
|
-
<input id="host" type="text" autocomplete="off" spellcheck="false" placeholder="empty = this PC
|
|
87
|
+
<input id="host" type="text" autocomplete="off" spellcheck="false" placeholder="empty = this PC. or an IP / domain, or wss://friend.example.com/chrome/ws">
|
|
88
88
|
</label>
|
|
89
89
|
<label>PORT
|
|
90
90
|
<input id="port" type="number" min="1" max="65535" placeholder="8765">
|
|
@@ -47,7 +47,10 @@ function render() {
|
|
|
47
47
|
$("engage").setAttribute("aria-checked", String(on));
|
|
48
48
|
$("engageLbl").textContent = on ? "DISENGAGE LINK" : "ENGAGE LINK";
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
// an address with a path (wss://name/chrome/ws) carries its own port, so the port box does not apply to it
|
|
51
|
+
const hasPath = hostName(state.host).includes("/");
|
|
52
|
+
$("tPort").textContent = hasPath ? "IN ADDRESS" : state.port || 8765;
|
|
53
|
+
$("port").disabled = hasPath;
|
|
51
54
|
const key = $("tKey");
|
|
52
55
|
key.className = "";
|
|
53
56
|
if (!state.token) {
|