nekostream 2026.2.2 → 2026.2.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/player.html +64 -41
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nekostream",
3
- "version": "2026.2.2",
3
+ "version": "2026.2.3",
4
4
  "description": "Bettter version of NekoStream ",
5
5
  "keywords": [
6
6
  "anime",
package/player.html CHANGED
@@ -28,61 +28,86 @@
28
28
  top: 0;
29
29
  left: 0;
30
30
  right: 0;
31
- height: 44px;
31
+ height: 34px;
32
32
  z-index: 10000;
33
- display: flex;
34
- align-items: center;
35
- justify-content: space-between;
36
- background: linear-gradient(to bottom, rgba(5, 8, 13, 0.82), rgba(5, 8, 13, 0.22), rgba(5, 8, 13, 0));
37
- color: rgba(255, 255, 255, 0.92);
33
+ background: transparent;
38
34
  -webkit-app-region: drag;
39
35
  user-select: none;
40
36
  pointer-events: auto;
41
37
  }
42
- .nav-title {
43
- min-width: 0;
44
- padding-left: 16px;
45
- font-size: 13px;
46
- font-weight: 600;
47
- letter-spacing: 0.01em;
48
- color: rgba(255, 255, 255, 0.88);
49
- text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
50
- overflow: hidden;
51
- text-overflow: ellipsis;
52
- white-space: nowrap;
53
- }
54
38
  .window-controls {
39
+ position: absolute;
40
+ top: 8px;
41
+ right: 10px;
55
42
  display: flex;
56
- height: 32px;
57
- margin-right: 10px;
58
- overflow: hidden;
59
- border: 1px solid rgba(255, 255, 255, 0.12);
60
- border-radius: 6px;
61
- background: rgba(8, 12, 20, 0.38);
62
- backdrop-filter: blur(10px);
43
+ flex-direction: row-reverse;
44
+ align-items: center;
45
+ gap: 0;
46
+ min-width: 28px;
47
+ height: 28px;
63
48
  pointer-events: auto;
64
49
  -webkit-app-region: no-drag;
65
50
  }
51
+ .window-dot {
52
+ width: 12px;
53
+ height: 12px;
54
+ padding: 0;
55
+ border: 1px solid rgba(255, 255, 255, 0.58);
56
+ border-radius: 999px;
57
+ background: rgba(255, 255, 255, 0.86);
58
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
59
+ cursor: pointer;
60
+ transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease;
61
+ }
62
+ .window-controls:hover .window-dot,
63
+ .window-controls:focus-within .window-dot {
64
+ transform: scale(0.74);
65
+ background: rgba(255, 255, 255, 0.55);
66
+ border-color: rgba(255, 255, 255, 0.75);
67
+ }
66
68
  .window-btn {
67
- width: 42px;
68
- height: 32px;
69
+ width: 0;
70
+ height: 28px;
71
+ margin-right: 0;
72
+ padding: 0;
69
73
  display: inline-flex;
70
74
  align-items: center;
71
75
  justify-content: center;
72
76
  border: 0;
73
- border-right: 1px solid rgba(255, 255, 255, 0.1);
74
- background: transparent;
77
+ border-radius: 999px;
78
+ background: rgba(8, 12, 20, 0.58);
75
79
  color: rgba(255, 255, 255, 0.82);
76
- font-size: 16px;
80
+ backdrop-filter: blur(10px);
81
+ box-shadow: 0 4px 18px rgba(0, 0, 0, 0.38);
82
+ font-size: 14px;
77
83
  line-height: 1;
78
84
  cursor: pointer;
79
- transition: background 0.15s ease, color 0.15s ease;
85
+ opacity: 0;
86
+ overflow: hidden;
87
+ transform: translateX(12px) scale(0.82);
88
+ transition: width 0.2s ease, margin-right 0.2s ease, opacity 0.16s ease, transform 0.2s ease, background 0.15s ease, color 0.15s ease;
89
+ }
90
+ .window-controls:hover .window-btn,
91
+ .window-controls:focus-within .window-btn {
92
+ width: 28px;
93
+ margin-right: 7px;
94
+ opacity: 1;
95
+ transform: translateX(0) scale(1);
96
+ }
97
+ .window-controls:hover #window-minimize,
98
+ .window-controls:focus-within #window-minimize {
99
+ transition-delay: 0.02s;
80
100
  }
81
- .window-btn:last-child {
82
- border-right: 0;
101
+ .window-controls:hover #window-maximize,
102
+ .window-controls:focus-within #window-maximize {
103
+ transition-delay: 0.05s;
104
+ }
105
+ .window-controls:hover #window-close,
106
+ .window-controls:focus-within #window-close {
107
+ transition-delay: 0.08s;
83
108
  }
84
109
  .window-btn:hover {
85
- background: rgba(255, 255, 255, 0.14);
110
+ background: rgba(255, 255, 255, 0.18);
86
111
  color: #fff;
87
112
  }
88
113
  .window-btn.close:hover {
@@ -128,11 +153,11 @@
128
153
  </head>
129
154
  <body>
130
155
  <header id="top-nav">
131
- <div class="nav-title" id="nav-title">NekoStream Player</div>
132
156
  <div class="window-controls">
133
- <button class="window-btn" id="window-minimize" title="Minimize">-</button>
134
- <button class="window-btn" id="window-maximize" title="Maximize">□</button>
135
157
  <button class="window-btn close" id="window-close" title="Close">×</button>
158
+ <button class="window-btn" id="window-maximize" title="Maximize">□</button>
159
+ <button class="window-btn" id="window-minimize" title="Minimize">-</button>
160
+ <button class="window-dot" title="Window controls" aria-label="Window controls"></button>
136
161
  </div>
137
162
  </header>
138
163
  <div id="loading-overlay">
@@ -165,10 +190,8 @@
165
190
 
166
191
  window.initPlayer = function(streamInfo, baseDir, cleanUA) {
167
192
  const container = document.getElementById('player-container');
168
- const navTitle = document.getElementById('nav-title');
169
- navTitle.textContent = streamInfo.provider ? `NekoStream · ${streamInfo.provider}` : 'NekoStream Player';
170
-
171
- if (streamInfo.type === 'iframe') {
193
+
194
+ if (streamInfo.type === 'iframe') {
172
195
  const overlay = document.getElementById('loading-overlay');
173
196
  overlay.style.display = 'flex';
174
197