@kangsicj/nexussync 0.0.0-stage → 1.0.1

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 CHANGED
@@ -1,3 +1,139 @@
1
- # Temporary Holding Version
1
+ <div align="center">
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ <img src=".github/assets/banner.svg" alt="NexusSync — watch together, perfectly in sync" width="100%">
4
+
5
+ <br>
6
+
7
+ [![Version](https://img.shields.io/badge/version-1.0.1-7C4DFF?style=for-the-badge)](./CHANGELOG.md)
8
+ [![Tampermonkey](https://img.shields.io/badge/Tampermonkey-PC%20%C2%B7%20Android-00485B?style=for-the-badge&logo=tampermonkey&logoColor=white)](https://www.tampermonkey.net/)
9
+ [![iOS Safari](https://img.shields.io/badge/Userscripts-iPhone%20%C2%B7%20iPad-0A84FF?style=for-the-badge&logo=safari&logoColor=white)](https://apps.apple.com/app/userscripts/id1463298887)
10
+ [![Sponsor](https://img.shields.io/badge/Fairy-Sponsor-FF6FB5?style=for-the-badge&logo=githubsponsors&logoColor=white)](https://fairy.hada.io/@jinny)
11
+
12
+ ### Miles apart, same frame.
13
+
14
+ **NexusSync turns any web video into a shared movie night.**<br>
15
+ Press play on your phone — it plays on theirs. Pause to laugh — everyone pauses with you.
16
+
17
+ [Features](#-what-it-feels-like) · [Install](#-install) · [Quick start](#-start-in-30-seconds) · [Support](#-support) · [**한국어**](./README_ko.md)
18
+
19
+ </div>
20
+
21
+ ---
22
+
23
+ ## 🍿 What it feels like
24
+
25
+ <table>
26
+ <tr>
27
+ <td width="50%" valign="top">
28
+
29
+ ### 🎬 Truly together, down to the frame
30
+ Anyone can play, pause, seek or change speed — and every screen follows within a blink. Devices keep fine-tuning in the background so lips and laughter line up, even between a PC, an iPad and a phone. Bluetooth headphones lagging? Nudge your own device delay in a second.
31
+
32
+ </td>
33
+ <td width="50%" valign="top">
34
+
35
+ ### 🍿 A cinema on any site
36
+ One tap and the player fills the screen with clean, beautiful controls, a soft ambient glow and the site's subtitles drawn crisply on top. In landscape on a phone, slide the left edge for **brightness** and the right edge for **volume** — just like your favourite video app.
37
+
38
+ </td>
39
+ </tr>
40
+ <tr>
41
+ <td valign="top">
42
+
43
+ ### 💬 Talk without leaving the movie
44
+ Messages float up as speech bubbles and drift away on their own. Tap one to answer, or fire off a quick reply — offered in **your** language — and messages from friends abroad are translated for you automatically — in the bubbles and in the full chat.
45
+
46
+ </td>
47
+ <td valign="top">
48
+
49
+ ### 🙈 A curtain for the scary bits
50
+ Watching with kids? One tap gently covers the picture on **every** screen for a few seconds while sound and subtitles carry on. NexusSync remembers the scene, so it is covered again if you rewind or rewatch.
51
+
52
+ </td>
53
+ </tr>
54
+ <tr>
55
+ <td valign="top">
56
+
57
+ ### 🖍️ Point, doodle, react
58
+ Draw a quick circle around that actor and it glows on everyone's screen — on the exact same spot of the picture — then fades away. Burst emoji reactions from the edges, send a 💗 nudge, or start a 3-2-1 countdown together.
59
+
60
+ </td>
61
+ <td valign="top">
62
+
63
+ ### 🧠 Live AI subtitles
64
+ No subtitles on that video? Turn on live speech recognition with translation into your language, with a glossary for names and terms so characters are always spelled right.
65
+
66
+ </td>
67
+ </tr>
68
+ </table>
69
+
70
+ ## ✨ Little things that matter
71
+
72
+ - **Next episode, together** — move on to the next episode and you stay in the room; friends follow with one tap.
73
+ - **Make it yours** — pick your name and colour; your bubbles and doodles wear it on every screen.
74
+ - **Calm, never jumpy** — phones going to sleep, slow Wi-Fi or a player restarting on its own never pause the whole room.
75
+ - **No accidental pauses** — tapping the chat, a doodle or a reaction never nudges the video for anyone.
76
+ - **Invisible until needed** — the ⚙️ button appears only next to real videos, never on ordinary pages.
77
+ - **Private rooms** — everything you share in a room is end-to-end encrypted; only people with the PIN can join.
78
+
79
+ ## 📦 Install
80
+
81
+ <div align="center">
82
+
83
+ <img src="assets/icon.svg" width="88" alt="NexusSync icon">
84
+
85
+ ### [⬇️ Install NexusSync](https://cdn.jsdelivr.net/npm/@kangsicj/nexussync@latest/dist/NexusSync.user.js)
86
+
87
+ <sub>Opens the install page of your userscript manager · updates arrive automatically</sub>
88
+
89
+ </div>
90
+
91
+ | Device | App | How |
92
+ | --- | --- | --- |
93
+ | 🖥️ Windows · macOS · Linux | [Tampermonkey](https://www.tampermonkey.net/) | Click **Install NexusSync** and confirm. |
94
+ | 📱 iPhone · iPad | [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) for Safari | Open the install link in Safari and tap **Install**. |
95
+ | 🤖 Android | Tampermonkey (Firefox, Edge, Kiwi …) | Same as desktop. |
96
+
97
+ > [!TIP]
98
+ > Keep every device in a room on the **same version** for the smoothest experience.
99
+
100
+ ## 🚀 Start in 30 seconds
101
+
102
+ 1. Open the same video on each device and tap **⚙️ → 🔗 Connect**.
103
+ 2. One person taps **Create a room** and shares the 6-digit **PIN**.
104
+ 3. Everyone else types the PIN. Done — enjoy the show together.
105
+
106
+ <details>
107
+ <summary><b>⌨️ Keyboard shortcuts</b></summary>
108
+
109
+ | Keys | Action |
110
+ | --- | --- |
111
+ | <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>C</kbd> | Cinema mode |
112
+ | <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd> | AI subtitles |
113
+ | <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd> · <kbd>H</kbd> in cinema | Cover the picture for everyone |
114
+ | <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>N</kbd> | Open the menu |
115
+ | <kbd>Enter</kbd> | Chat bubble box (in a room) |
116
+ | <kbd>Space</kbd> / <kbd>K</kbd> | Play / pause (cinema) |
117
+ | <kbd>←</kbd> <kbd>→</kbd> · <kbd>J</kbd> <kbd>L</kbd> | Seek 5 s · 10 s |
118
+ | <kbd>↑</kbd> <kbd>↓</kbd> · <kbd>M</kbd> | Volume · mute |
119
+ | <kbd>F</kbd> · <kbd>Z</kbd> · <kbd>C</kbd> · <kbd>?</kbd> | Fullscreen · fit · subtitles · help |
120
+
121
+ On touch screens: tap for controls, double-tap a side to skip, drag sideways to scrub, long-press to point, and in landscape slide the edges for brightness and volume.
122
+
123
+ </details>
124
+
125
+ ## 🔐 Your privacy
126
+
127
+ - Room messages are encrypted on your device; only people in the room can read them.
128
+ - If you add your own AI key for subtitles, it stays in your userscript manager and goes only to that provider.
129
+ - NexusSync never collects personal data, and rooms are cleaned up automatically after everyone leaves.
130
+
131
+ ## 💖 Support
132
+
133
+ NexusSync is made with love in spare time. If it makes your movie nights a little warmer, you can buy the developer a coffee on **Fairy** — it keeps the servers running and the features coming.
134
+
135
+ <a href="https://fairy.hada.io/@jinny"><img src="https://img.shields.io/badge/%F0%9F%A7%9A%20Support%20on%20Fairy-FF6FB5?style=for-the-badge" alt="Support on Fairy"></a>
136
+
137
+ <sub>Maintainers: see <a href="docs/DEVELOPMENT.md">docs/DEVELOPMENT.md</a> · what's new in the <a href="CHANGELOG.md">changelog</a>.</sub>
138
+
139
+ <div align="right"><sub>Made with 🍿 by <a href="https://github.com/kangsicj">@kangsicj</a></sub></div>
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-label="NexusSync">
2
+ <defs>
3
+ <linearGradient id="nxbg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#5b2eff"/><stop offset="1" stop-color="#ff4fa3"/></linearGradient>
4
+ <radialGradient id="nxglow" cx="0.82" cy="0.14" r="0.7"><stop offset="0" stop-color="#7cf9ff" stop-opacity="0.55"/><stop offset="1" stop-color="#7cf9ff" stop-opacity="0"/></radialGradient>
5
+ <linearGradient id="nxplay" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#ffffff"/><stop offset="1" stop-color="#ffe3f1"/></linearGradient>
6
+ <clipPath id="nxr"><rect width="256" height="256" rx="58"/></clipPath>
7
+ </defs>
8
+ <g clip-path="url(#nxr)">
9
+ <rect width="256" height="256" fill="url(#nxbg)"/>
10
+ <rect width="256" height="256" fill="url(#nxglow)"/>
11
+ <!-- sync ring: two arcs chasing each other -->
12
+ <g fill="none" stroke="#ffffff" stroke-width="15" stroke-linecap="round">
13
+ <path d="M60 116 A70 70 0 0 1 178 72"/>
14
+ <path d="M196 140 A70 70 0 0 1 78 184"/>
15
+ </g>
16
+ <path d="M186 50 L200 92 L157 86 Z" fill="#ffffff"/>
17
+ <path d="M70 206 L56 164 L99 170 Z" fill="#ffffff"/>
18
+ <!-- play -->
19
+ <path d="M110 92 Q104 88 104 96 L104 160 Q104 168 110 164 L162 132 Q168 128 162 124 Z" fill="url(#nxplay)"/>
20
+ <circle cx="200" cy="200" r="0" fill="none"/>
21
+ </g>
22
+ </svg>
@@ -0,0 +1,36 @@
1
+ // ==UserScript==
2
+ // @name NexusSync Ultimate: CRDT Canvas & Media Sync
3
+ // @name:ko 넥서스싱크 얼티밋: 캔버스 및 미디어 동기화
4
+ // @name:nl-BE NexusSync Ultimate: Canvas & Media Synchronisatie
5
+ // @namespace https://github.com/kangsicj/NexusSync
6
+ // @author kangsicj
7
+ // @homepageURL https://github.com/kangsicj/NexusSync
8
+ // @supportURL https://fairy.hada.io/@jinny
9
+ // @icon https://cdn.jsdelivr.net/npm/@kangsicj/nexussync@latest/assets/icon.svg
10
+ // @updateURL https://cdn.jsdelivr.net/npm/@kangsicj/nexussync@latest/dist/NexusSync.meta.js
11
+ // @downloadURL https://cdn.jsdelivr.net/npm/@kangsicj/nexussync@latest/dist/NexusSync.user.js
12
+ // @version 1.0.1
13
+ // @description Watch any web video together in perfect sync: cinema mode, live AI subtitles & translation, chat bubbles with auto-translation, quick ink, cover, go-together to the next episode.
14
+ // @description:ko 어떤 웹 영상이든 완벽한 싱크로 함께 보기: 시네마 모드, 실시간 AI 자막·번역, 자동 번역 말풍선 채팅, 잠깐 그리기, 가리기, 다음 화도 함께.
15
+ // @match *://*/*
16
+ // @include *
17
+ // @allFrames true
18
+ // @run-at document-idle
19
+ // @grant GM_setValue
20
+ // @grant GM_getValue
21
+ // @grant GM_info
22
+ // @grant GM_xmlhttpRequest
23
+ // @grant GM_registerMenuCommand
24
+ // @grant GM.setValue
25
+ // @grant GM.getValue
26
+ // @grant GM.listValues
27
+ // @grant GM.xmlHttpRequest
28
+ // @connect translate.googleapis.com
29
+ // @connect nexussync-dd5b4-default-rtdb.asia-southeast1.firebasedatabase.app
30
+ // @connect api.openai.com
31
+ // @connect api.groq.com
32
+ // @connect api.anthropic.com
33
+ // @connect api-free.deepl.com
34
+ // @connect api.deepl.com
35
+ // @require https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js#sha256=95f4d1cbf099f57161b664bc048426ec3df92637801a4c79116e83315aa787e7
36
+ // ==/UserScript==