@kangsicj/dcinsideenhancer 1.3.4 → 1.3.6

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.en.md CHANGED
@@ -1,176 +1,97 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/banner.svg" alt="DCInside Enhancer" width="100%">
3
+ <img src=".github/assets/banner-en.svg" alt="DCInside Enhancer" width="100%">
4
4
 
5
- <br><br>
5
+ **A userscript for DCInside that adds blocking, infinite scroll, image filtering and encrypted cross-device sync.**
6
6
 
7
- <a href="https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js"><img src="https://img.shields.io/npm/v/%40kangsicj%2Fdcinsideenhancer?label=Install&color=3b4890&style=for-the-badge&logo=tampermonkey&logoColor=white&cacheSeconds=1800" alt="Install"></a>
8
- <img src="https://img.shields.io/badge/iPhone%20%C2%B7%20Android%20%C2%B7%20PC-supported-5865c7?style=for-the-badge" alt="iPhone · Android · PC">
9
- <img src="https://img.shields.io/badge/ads%20%26%20tracking-none-2e7d5b?style=for-the-badge" alt="No ads or tracking">
10
- <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-Support-ff6fb5?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="Support on Fairy"></a>
11
- <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-ffdd00?style=for-the-badge&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee"></a>
7
+ <a href="https://www.npmjs.com/package/@kangsicj/dcinsideenhancer"><img src="https://img.shields.io/npm/v/%40kangsicj%2Fdcinsideenhancer?style=flat-square&label=version" alt="Version"></a>
8
+ <img src="https://img.shields.io/badge/platform-iOS%20%C2%B7%20Android%20%C2%B7%20PC-555?style=flat-square" alt="Platform">
9
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0-blue?style=flat-square" alt="License"></a>
12
10
 
13
11
  [한국어](README.md) · **English**
14
12
 
15
- ### Hide what you don't want. Keep reading what you do.
16
- One userscript for DCInside on mobile and PC: smart blocking, endless lists, image cleanup and encrypted sync across devices.
17
-
18
13
  </div>
19
14
 
20
- ---
21
-
22
- ## 🎯 Why it exists
23
-
24
- - **App-like, without the app.** The DCInside app experience in any browser — including app-only features and ones you won't find anywhere else.
25
- - **Gentle on the site.** Only the requests it needs, spaced out. If DCInside throttles, it backs off and resumes on its own.
26
- - **Your data stays on your device.** Block lists, settings and scraps are stored locally. No ads, analytics or tracking.
27
- - **Sync only if you want it.** Off until you turn it on, and no account or sign-up. Everything is encrypted on your device before it leaves, so the server can read neither the content nor whose it is. Link phones, tablets and PCs with a short code and unlink everything at any time. Sync boxes nobody uses for a long time are deleted from the server automatically.
28
-
29
- ---
30
-
31
- ## ✨ At a glance
32
-
33
15
  <table>
34
16
  <tr>
35
- <td align="center" width="25%">
36
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/list-dark.png"><img src="assets/screenshots/list-light.png" alt="A list with a blocked post folded into one line" width="220"></picture>
37
- <br><b>A clean list</b><br><sub>Blocked posts disappear or fold into one line</sub>
38
- </td>
39
- <td align="center" width="25%">
40
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/menu-dark.png"><img src="assets/screenshots/menu-light.png" alt="The user menu that opens from a nickname" width="220"></picture>
41
- <br><b>Tap a nickname</b><br><sub>The familiar DCInside menu, with one-tap blocking</sub>
42
- </td>
43
- <td align="center" width="25%">
44
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/status-dark.png"><img src="assets/screenshots/status-light.png" alt="Blocking status for the current page" width="220"></picture>
45
- <br><b>See what was hidden</b><br><sub>Per-page status and a block history</sub>
46
- </td>
47
- <td align="center" width="25%">
48
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/sync-dark.png"><img src="assets/screenshots/sync-light.png" alt="Linking devices with a 6-digit code" width="220"></picture>
49
- <br><b>Phone ↔ PC sync</b><br><sub>Link with a 6-digit code and you're done</sub>
50
- </td>
17
+ <td align="center" width="25%"><img src=".github/assets/list.png" alt="Post list with blocked posts removed" width="200"><br><sub>Blocked posts removed from the list</sub></td>
18
+ <td align="center" width="25%"><img src=".github/assets/menu.png" alt="Nickname menu with a block action" width="200"><br><sub>Block from the nickname menu</sub></td>
19
+ <td align="center" width="25%"><img src=".github/assets/status.png" alt="Blocking status for the current page" width="200"><br><sub>Per-page block status</sub></td>
20
+ <td align="center" width="25%"><img src=".github/assets/settings.png" alt="Settings panel" width="200"><br><sub>Every feature can be toggled</sub></td>
51
21
  </tr>
52
22
  </table>
53
23
 
54
- ## 🧩 What it does
24
+ <sub>The script UI is in Korean. Sample posts and nicknames are fictional.</sub>
55
25
 
56
- <table>
57
- <tr>
58
- <td width="50%" valign="top">
59
-
60
- #### 🚫 Smarter blocking
61
- - Block **users** by nickname, IP or account ID — your choice
62
- - Block **words** in titles only, or in posts and comments too
63
- - Hide **post tags**, notices, polls, ads and sticker-only comments
64
- - Catches posts whose **body** contains a blocked word, right in the list
65
- - Blocked by mistake? **Undo** straight from the notification
66
- - A **cleanup helper** suggests blocks that never trigger and overlapping words
67
-
68
- </td>
69
- <td width="50%" valign="top">
70
-
71
- #### 📜 Keep reading
72
- - The next page **loads automatically** as you scroll
73
- - Gaps left by blocked posts are **refilled** from the next page
74
- - Come back from a post and you're **right where you left off**
75
- - Cleaner read-post colors and a back-to-top button
76
- - Keyboard shortcuts on PC: **J/K** next/previous post, Enter to open, P to preview, S to scrap, / to search
77
- - On PC, **press and hold** a title to preview the whole post, iPhone-style — blocked images and words stay hidden there too
78
- - **Pin the order** of recently visited galleries — it stays put wherever you go
79
-
80
- </td>
81
- </tr>
82
- <tr>
83
- <td valign="top">
26
+ ## Quick start
84
27
 
85
- #### 🖼 Images & data saving
86
- - The same image or GIF is **blocked in every post**
87
- - Blocked images are **never downloaded**, saving mobile data
88
- - Swipe through the zoom viewer, swipe down to close
28
+ 1. Install a userscript manager: [Tampermonkey](https://www.tampermonkey.net/) (PC, Android) or [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) (iOS).
29
+ 2. Open [`DCInsideEnhancer.user.js`](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js) and confirm **Install**.
30
+ 3. Open DCInside. The 🛡️ button at the bottom right indicates the script is active.
89
31
 
90
- </td>
91
- <td valign="top">
32
+ ## Features
92
33
 
93
- #### 🔄 Same setup on every device
94
- - Block lists, scraps, settings, **recently visited galleries** and mobile search history stay in sync automatically
95
- - Link over the same Wi-Fi, with a 6-digit code or a link
96
- - Data is **encrypted on your device** — only you can read it
97
- - Get notified about incoming changes, with **undo**
98
- - Galleries you open on your phone show up in DCInside's own **Recent** list on PC
34
+ | Area | What it does |
35
+ | --- | --- |
36
+ | Blocking | Users by nickname, IP or ID · words in titles, bodies or comments · post tags, notices, polls, sticker-only comments · undo from the notification |
37
+ | Reading | Infinite scroll · refills gaps left by blocked posts · restores scroll position · PC shortcuts `J` `K` `Enter` `P` `S` `/` · press-and-hold preview |
38
+ | Images | Blocks an image or GIF in every post · blocked images are never downloaded · swipe viewer |
39
+ | Sync | Block lists, scraps, settings and recent galleries · end-to-end encrypted · link by 6-digit code, link or same Wi-Fi · no account |
40
+ | Layout | Removes ad slots, partner news and promo pop-ups · full-width PC layout · follows system dark mode |
41
+ | Alerts | Comment and reply alerts as bubbles · unread count · optional desktop notifications on PC |
99
42
 
100
- </td>
101
- </tr>
102
- <tr>
103
- <td valign="top">
104
-
105
- #### 🧹 Cleaner pages
106
- - Posts dimmed by DCInside's own block list are **fully hidden**
107
- - Hide the floating write button, homepage sections and footer links
108
- - On PC the layout **fills your window** — on narrow windows the right column folds away so the list is never cut off
109
- - Hide partner news, comment ads, ad slots and trending-post promo popups
110
-
111
- </td>
112
- <td valign="top">
113
-
114
- #### 🔔 Alerts · 📌 Scraps · 🌓 Theme
115
- - Comment and reply alerts appear as **bubbles** by the button — tap to open, swipe to dismiss
116
- - Unread count on the button; past alerts and recent galleries in one view
117
- - On PC, optional **desktop notifications** while you're on another tab
118
- - Unlimited scraps, right in the floating menu
119
- - Follows your device's dark mode automatically
120
- - Every feature can be switched on or off
121
-
122
- </td>
123
- </tr>
124
- </table>
43
+ Every feature can be turned on or off individually.
125
44
 
126
- ## 📥 Install
45
+ | | DCInside Enhancer | DCInside site default |
46
+ | --- | :---: | :---: |
47
+ | Block by nickname / IP / ID | ✅ | Partial (dimmed, not hidden) |
48
+ | Block by body text | ✅ | ❌ |
49
+ | Per-image block | ✅ | ❌ |
50
+ | Infinite scroll | ✅ | ❌ |
51
+ | Cross-device sync | ✅ encrypted | ❌ |
52
+ | Ads and tracking | None | Yes |
127
53
 
128
- > When the 🛡️ button appears at the bottom right, you're all set. New versions update automatically.
54
+ ## Installation
129
55
 
130
- | Platform | How |
131
- |---|---|
132
- | **PC** (Chrome · Edge · Whale · Firefox) | Install [Tampermonkey](https://www.tampermonkey.net/) → open **[Install script](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** and click *Install* |
133
- | **iPhone · iPad** (Safari) | Install [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) from the App Store → enable it in Safari extensions → **[Install script](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** |
134
- | **Android** | Firefox or Kiwi Browser + Tampermonkey → **[Install script](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** |
56
+ | Platform | Manager | Steps |
57
+ | --- | --- | --- |
58
+ | Windows · macOS · Linux | [Tampermonkey](https://www.tampermonkey.net/) (Chrome, Edge, Whale, Firefox) | Open the [install link](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js) → **Install** |
59
+ | iPhone · iPad | [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) (Safari) | Enable in Safari extensions → open the install link → **Install** |
60
+ | Android | Tampermonkey (Firefox, Kiwi) | Same as PC |
135
61
 
136
- ## ❓ FAQ
62
+ Updates are installed automatically by the userscript manager.
63
+
64
+ ## FAQ
137
65
 
138
66
  <details>
139
- <summary><b>Where is my block list stored?</b></summary>
67
+ <summary>Where is the block list stored?</summary>
140
68
 
141
- Only in this browser. Unless you turn on sync, it never leaves your device.
142
- You can also export and import a backup file from Settings → Backup.
69
+ In the browser only. It leaves the device only when sync is enabled. Backup export and import are in **Settings → Backup**.
143
70
  </details>
144
71
 
145
72
  <details>
146
- <summary><b>Who can see my list when I use sync?</b></summary>
73
+ <summary>Who can read synced data?</summary>
147
74
 
148
- No one. Everything is encrypted on your device before it is sent, and only your linked devices hold the key.
149
- No sign-up or login is needed. Lost a device? Use **Disconnect all devices** in Settings.
75
+ Only linked devices. Data is encrypted on the device before upload; the server stores ciphertext only. **Settings → Disconnect all devices** revokes every link. Unused sync boxes are deleted automatically.
150
76
  </details>
151
77
 
152
78
  <details>
153
- <summary><b>Do I need a DCInside account?</b></summary>
79
+ <summary>Is a DCInside account required?</summary>
154
80
 
155
- No. Every feature works without logging in.
81
+ No.
156
82
  </details>
157
83
 
158
84
  <details>
159
- <summary><b>Something looks broken after a site update.</b></summary>
85
+ <summary>The page looks broken after a site update.</summary>
160
86
 
161
- Please open an [issue](https://github.com/kangsicj/DCInsideEnhancer/issues) with a screenshot and the page address.
162
- Meanwhile, **Show all** in the floating menu temporarily reveals everything.
87
+ Open an [issue](https://github.com/kangsicj/DCInsideEnhancer/issues) with a screenshot and the URL. **Show all** in the floating menu temporarily disables filtering.
163
88
  </details>
164
89
 
165
- ## 💖 Support
166
-
167
- This is a personal project, built and polished in spare time. Every feature is free and will stay that way.
168
- If it helps you, a coffee keeps the updates coming.
90
+ ## Support
169
91
 
170
- <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-Support-ff6fb5?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="Support on Fairy"></a>
171
- <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-ffdd00?style=for-the-badge&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee"></a>
92
+ <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-Support-ff6fb5?style=flat-square&logo=githubsponsors&logoColor=white" alt="Support on Fairy"></a>
93
+ <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-ffdd00?style=flat-square&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee"></a>
172
94
 
173
- ## 📄 License
95
+ ## License
174
96
 
175
- [GNU GPL v3.0](LICENSE) · An independent project, not affiliated with DCInside.
176
- If you modify or redistribute it, please share the source under the same GPL v3.0.
97
+ [GNU GPL v3.0](LICENSE). Not affiliated with DCInside.
package/README.md CHANGED
@@ -1,176 +1,97 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/banner.svg" alt="디시 인핸서 DCInside Enhancer" width="100%">
3
+ <img src=".github/assets/banner-ko.svg" alt="디시 인핸서 DCInside Enhancer" width="100%">
4
4
 
5
- <br><br>
5
+ **디시인사이드에 차단, 무한 스크롤, 이미지 차단, 암호화 기기 동기화를 더하는 유저스크립트.**
6
6
 
7
- <a href="https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js"><img src="https://img.shields.io/npm/v/%40kangsicj%2Fdcinsideenhancer?label=%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0&color=3b4890&style=for-the-badge&logo=tampermonkey&logoColor=white&cacheSeconds=1800" alt="설치하기"></a>
8
- <img src="https://img.shields.io/badge/iPhone%20%C2%B7%20Android%20%C2%B7%20PC-%EC%A7%80%EC%9B%90-5865c7?style=for-the-badge" alt="iPhone · Android · PC 지원">
9
- <img src="https://img.shields.io/badge/%EA%B4%91%EA%B3%A0%C2%B7%EC%B6%94%EC%A0%81-%EC%97%86%EC%9D%8C-2e7d5b?style=for-the-badge" alt="광고·추적 없음">
10
- <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ff6fb5?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="Fairy로 후원하기"></a>
11
- <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ffdd00?style=for-the-badge&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee로 후원하기"></a>
7
+ <a href="https://www.npmjs.com/package/@kangsicj/dcinsideenhancer"><img src="https://img.shields.io/npm/v/%40kangsicj%2Fdcinsideenhancer?style=flat-square&label=version" alt="버전"></a>
8
+ <img src="https://img.shields.io/badge/platform-iOS%20%C2%B7%20Android%20%C2%B7%20PC-555?style=flat-square" alt="플랫폼">
9
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0-blue?style=flat-square" alt="라이선스"></a>
12
10
 
13
11
  **한국어** · [English](README.en.md)
14
12
 
15
- ### 보기 싫은 글은 사라지고, 보고 싶은 글은 끊김 없이.
16
- 디시인사이드 모바일·PC에서 차단, 무한 스크롤, 이미지 정리, 기기 간 동기화를 한 번에.
17
-
18
13
  </div>
19
14
 
20
- ---
21
-
22
- ## 🎯 만든 이유
23
-
24
- - **앱 없이도 앱처럼.** 웹 브라우저만으로 디시인사이드 앱에서 쓰던 경험을 그대로, 앱에만 있던 기능과 여기에만 있는 기능까지 함께.
25
- - **사이트에 부담 주지 않기.** 필요한 요청만, 간격을 두고 보냅니다. 디시가 잠시 막으면 스스로 쉬었다가 다시 시작합니다.
26
- - **내 데이터는 내 기기에.** 차단 목록·설정·스크랩은 기기 안에만 저장됩니다. 광고·분석·추적 코드가 없습니다.
27
- - **동기화는 원하는 사람만.** 켜야만 동작하고, 계정이나 가입이 필요 없습니다. 내용은 기기에서 암호화된 뒤 보내므로 서버는 내용도, 누구의 것인지도 알 수 없습니다. 연결 코드만 있으면 휴대폰·태블릿·PC 어디든 연결되고, 언제든 모든 연결을 끊을 수 있습니다. 오래 쓰지 않은 동기화 보관함은 서버에서 저절로 지워집니다.
28
-
29
- ---
30
-
31
- ## ✨ 한눈에 보기
32
-
33
15
  <table>
34
16
  <tr>
35
- <td align="center" width="25%">
36
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/list-dark.png"><img src="assets/screenshots/list-light.png" alt="차단된 글이 한 줄로 접힌 목록" width="220"></picture>
37
- <br><b>깔끔한 목록</b><br><sub>차단한 글은 숨기거나 한 줄로 접어 둡니다</sub>
38
- </td>
39
- <td align="center" width="25%">
40
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/menu-dark.png"><img src="assets/screenshots/menu-light.png" alt="닉네임을 누르면 뜨는 이용자 메뉴" width="220"></picture>
41
- <br><b>닉네임 한 번 누르면</b><br><sub>디시 메뉴 그대로, 바로 차단까지</sub>
42
- </td>
43
- <td align="center" width="25%">
44
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/status-dark.png"><img src="assets/screenshots/status-light.png" alt="이 화면의 차단 현황" width="220"></picture>
45
- <br><b>무엇이 가려졌는지</b><br><sub>화면마다 차단 현황과 기록</sub>
46
- </td>
47
- <td align="center" width="25%">
48
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/screenshots/sync-dark.png"><img src="assets/screenshots/sync-light.png" alt="6자리 코드로 기기 연결" width="220"></picture>
49
- <br><b>휴대폰 ↔ PC 동기화</b><br><sub>6자리 코드로 연결하면 끝</sub>
50
- </td>
17
+ <td align="center" width="25%"><img src=".github/assets/list.png" alt="차단한 글이 빠진 목록" width="200"><br><sub>차단한 글은 목록에서 제거</sub></td>
18
+ <td align="center" width="25%"><img src=".github/assets/menu.png" alt="닉네임 메뉴의 차단 버튼" width="200"><br><sub>닉네임 메뉴에서 바로 차단</sub></td>
19
+ <td align="center" width="25%"><img src=".github/assets/status.png" alt="현재 페이지 차단 현황" width="200"><br><sub>페이지별 차단 현황</sub></td>
20
+ <td align="center" width="25%"><img src=".github/assets/settings.png" alt="설정 화면" width="200"><br><sub>모든 기능을 개별로 켜고 끄기</sub></td>
51
21
  </tr>
52
22
  </table>
53
23
 
54
- ## 🧩 이런 걸 해 줍니다
24
+ <sub>예시 화면의 글과 닉네임은 모두 가상의 데이터입니다.</sub>
55
25
 
56
- <table>
57
- <tr>
58
- <td width="50%" valign="top">
59
-
60
- #### 🚫 차단을 더 똑똑하게
61
- - **유저**는 닉네임 · IP · 식별 코드 중 원하는 기준으로
62
- - **단어**는 제목만, 또는 본문·댓글까지
63
- - **말머리**, 공지·설문·AD, 디시콘만 있는 댓글 숨김
64
- - 본문에만 금지어가 있는 글도 **목록에서 미리** 걸러 냄
65
- - 실수로 막았다면 알림에서 바로 **실행 취소**
66
- - **정리 도우미**가 오래 안 쓰인 차단·겹치는 단어를 골라 줌
67
-
68
- </td>
69
- <td width="50%" valign="top">
70
-
71
- #### 📜 끊김 없이 읽기
72
- - 아래로 내리면 다음 페이지가 **자동으로 이어짐**
73
- - 차단으로 빈 자리는 다음 페이지 글로 **채워 둠**
74
- - 글을 보고 돌아오면 **보던 위치 그대로**
75
- - 읽은 글 색 정리, 맨 위로 버튼
76
- - PC 키보드 단축키: **J/K** 다음·이전 글, Enter 열기, P 미리보기, S 스크랩, / 검색
77
- - PC는 아이폰처럼 제목을 **길게 누르면 글 전체 미리보기** — 차단 이미지·단어는 미리보기에서도 가림
78
- - 최근 방문 갤러리 **순서 고정** — 어디를 가도 정한 순서 그대로
79
-
80
- </td>
81
- </tr>
82
- <tr>
83
- <td valign="top">
26
+ ## 빠른 시작
84
27
 
85
- #### 🖼 이미지·데이터 절약
86
- - 같은 짤·움짤은 **다른 글에서도 함께 차단**
87
- - 차단한 이미지는 **아예 받지 않아** 데이터 절약
88
- - 확대 보기를 넘기고, 쓸어내려 닫기
28
+ 1. 유저스크립트 관리자 설치: [Tampermonkey](https://www.tampermonkey.net/)(PC·Android) 또는 [Userscripts](https://apps.apple.com/app/userscripts/id1463298887)(iOS)
29
+ 2. [`DCInsideEnhancer.user.js`](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)를 열고 **설치**
30
+ 3. 디시인사이드 접속. 오른쪽 아래 🛡️ 버튼이 보이면 동작 중입니다.
89
31
 
90
- </td>
91
- <td valign="top">
32
+ ## 기능
92
33
 
93
- #### 🔄 모든 기기에서 같은 설정
94
- - 차단 목록 · 스크랩 · 설정 · **최근 방문 갤러리** · 모바일 검색 기록을 자동으로 맞춤
95
- - 같은 와이파이, 6자리 코드, 연결 링크로 간단 연결
96
- - 기기에서 **암호화**해 보내므로 내용은 나만 볼 수 있음
97
- - 받은 변경은 알림으로 알려 주고 **되돌리기** 가능
98
- - 휴대폰에서 간 갤러리가 PC의 디시 **최근 방문** 목록에도 그대로
34
+ | 영역 | 내용 |
35
+ | --- | --- |
36
+ | 차단 | 닉네임·IP·식별코드로 유저 차단 · 제목/본문/댓글 단어 차단 · 말머리·공지·투표·디시콘 댓글 숨김 · 알림에서 바로 실행 취소 |
37
+ | 읽기 | 무한 스크롤 · 차단으로 빈 자리 자동 보충 · 돌아오면 보던 위치 복원 · PC 단축키 `J` `K` `Enter` `P` `S` `/` · 길게 눌러 미리보기 |
38
+ | 이미지 | 같은 이미지·GIF를 모든 글에서 차단 · 차단 이미지는 다운로드하지 않음 · 스와이프 뷰어 |
39
+ | 동기화 | 차단 목록·스크랩·설정·최근 방문 갤러리 · 종단간 암호화 · 6자리 코드/링크/같은 Wi-Fi로 연결 · 계정 불필요 |
40
+ | 화면 정리 | 광고 영역·제휴 뉴스·홍보 팝업 제거 · PC 전체 폭 레이아웃 · 시스템 다크 모드 연동 |
41
+ | 알림 | 댓글·답글 알림 말풍선 · 안 읽은 수 표시 · PC 데스크톱 알림(선택) |
99
42
 
100
- </td>
101
- </tr>
102
- <tr>
103
- <td valign="top">
104
-
105
- #### 🧹 화면 정리
106
- - 디시 자체 차단으로 흐리게 남던 글·댓글 **완전히 숨김**
107
- - 둥근 글쓰기 버튼, 홈의 신설갤·디시미디어, 하단 정보 줄 숨김
108
- - PC는 **창 크기에 꽉 차게** — 좁으면 오른쪽 칸을 접어 목록이 잘리지 않음
109
- - 제휴 뉴스 · 댓글돌이 · 광고 칸 · 실베 홍보 알림 숨김
110
-
111
- </td>
112
- <td valign="top">
113
-
114
- #### 🔔 알림 · 📌 스크랩 · 🌓 테마
115
- - 댓글·답글 알림을 버튼 곁 **말풍선**으로 — 누르면 이동, 밀면 닫힘
116
- - 읽지 않은 알림 수를 버튼에 표시, 지난 알림과 최근 갤러리는 한 화면에
117
- - PC는 다른 탭을 볼 때 **기기 알림**으로도 (선택)
118
- - 개수 제한 없는 스크랩, 플로팅 메뉴에서 바로 보기
119
- - 기기 다크 모드에 맞춰 사이트 야간 모드 자동 전환
120
- - 모든 설정은 켜고 끌 수 있음
121
-
122
- </td>
123
- </tr>
124
- </table>
43
+ 모든 기능은 개별로 켜고 끌 수 있습니다.
125
44
 
126
- ## 📥 설치
45
+ | | 디시 인핸서 | 디시인사이드 기본 |
46
+ | --- | :---: | :---: |
47
+ | 닉네임 / IP / 식별코드 차단 | ✅ | 일부 (흐리게 표시) |
48
+ | 본문 단어 차단 | ✅ | ❌ |
49
+ | 이미지 단위 차단 | ✅ | ❌ |
50
+ | 무한 스크롤 | ✅ | ❌ |
51
+ | 기기 간 동기화 | ✅ 암호화 | ❌ |
52
+ | 광고·추적 | 없음 | 있음 |
127
53
 
128
- > 오른쪽 아래 🛡️ 버튼이 보이면 설치 완료입니다. 새 판은 자동으로 업데이트됩니다.
54
+ ## 설치
129
55
 
130
- | 환경 | 방법 |
131
- |---|---|
132
- | **PC** (Chrome · Edge · Whale · Firefox) | [Tampermonkey](https://www.tampermonkey.net/) 설치 → **[스크립트 설치](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** 를 누르고 *설치* |
133
- | **iPhone · iPad** (Safari) | App Store에서 [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) 설치 → Safari 확장에서 켜기 → **[스크립트 설치](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** |
134
- | **Android** | Firefox 또는 Kiwi 브라우저 + Tampermonkey → **[스크립트 설치](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js)** |
56
+ | 플랫폼 | 관리자 | 방법 |
57
+ | --- | --- | --- |
58
+ | Windows · macOS · Linux | [Tampermonkey](https://www.tampermonkey.net/) (Chrome, Edge, 웨일, Firefox) | [설치 링크](https://cdn.jsdelivr.net/npm/@kangsicj/dcinsideenhancer@latest/dist/DCInsideEnhancer.user.js) 열기 → **설치** |
59
+ | iPhone · iPad | [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) (Safari) | Safari 확장 프로그램에서 켜기 → 설치 링크 열기 → **설치** |
60
+ | Android | Tampermonkey (Firefox, Kiwi) | PC와 동일 |
135
61
 
136
- ## ❓ 자주 묻는 질문
62
+ 업데이트는 유저스크립트 관리자가 자동으로 설치합니다.
63
+
64
+ ## FAQ
137
65
 
138
66
  <details>
139
- <summary><b>내 차단 목록은 어디에 저장되나요?</b></summary>
67
+ <summary>차단 목록은 어디에 저장되나요?</summary>
140
68
 
141
- 이 브라우저 안에만 저장됩니다. 동기화를 켜지 않으면 어디로도 나가지 않습니다.
142
- 설정 → 백업에서 파일로 내보내고 불러올 수도 있습니다.
69
+ 브라우저에만 저장됩니다. 동기화를 켜지 않으면 기기 밖으로 나가지 않습니다. 백업 내보내기·가져오기는 **설정 → 백업**에 있습니다.
143
70
  </details>
144
71
 
145
72
  <details>
146
- <summary><b>동기화하면 내 목록을 누가 볼 수 있나요?</b></summary>
73
+ <summary>동기화 데이터는 누가 볼 수 있나요?</summary>
147
74
 
148
- 아무도 볼 수 없습니다. 내용은 기기에서 암호화한 뒤에 보내고, 푸는 열쇠는 연결한 기기들만 가지고 있습니다.
149
- 가입이나 로그인도 필요 없습니다. 기기를 잃어버렸다면 설정의 **모든 기기 연결 끊기**로 바로 정리할 수 있습니다.
75
+ 연결된 기기만 볼 수 있습니다. 전송 전에 기기에서 암호화하며 서버에는 암호문만 저장됩니다. **설정 → 모든 기기 연결 끊기**로 전체 연결을 해제할 수 있고, 오래 쓰지 않은 동기화 데이터는 자동 삭제됩니다.
150
76
  </details>
151
77
 
152
78
  <details>
153
- <summary><b>디시 계정으로 로그인해야 하나요?</b></summary>
79
+ <summary>디시인사이드 로그인이 필요한가요?</summary>
154
80
 
155
- 아니요. 로그인하지 않아도 모든 기능을 쓸 수 있습니다.
81
+ 아니요.
156
82
  </details>
157
83
 
158
84
  <details>
159
- <summary><b>사이트가 바뀌어서 이상하게 보여요.</b></summary>
85
+ <summary>사이트 개편 후 화면이 이상합니다.</summary>
160
86
 
161
- [이슈](https://github.com/kangsicj/DCInsideEnhancer/issues)로 화면과 주소를 알려 주시면 빠르게 고치겠습니다.
162
- 그 사이에는 플로팅 메뉴의 **모두 보기**로 잠시 모든 글을 볼 수 있습니다.
87
+ [이슈](https://github.com/kangsicj/DCInsideEnhancer/issues)에 스크린샷과 주소를 남겨 주세요. 플로팅 메뉴의 **모두 보기**로 필터링을 잠시 끌 수 있습니다.
163
88
  </details>
164
89
 
165
- ## 💖 후원
166
-
167
- 틈틈이 만들고 다듬는 개인 프로젝트입니다. 모든 기능은 무료이며 앞으로도 그렇습니다.
168
- 도움이 되셨다면 커피 한 잔으로 응원해 주세요. 더 빠른 업데이트의 원동력이 됩니다.
90
+ ## 후원
169
91
 
170
- <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ff6fb5?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="Fairy로 후원하기"></a>
171
- <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ffdd00?style=for-the-badge&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee로 후원하기"></a>
92
+ <a href="https://fairy.hada.io/@kangsicj"><img src="https://img.shields.io/badge/Fairy-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ff6fb5?style=flat-square&logo=githubsponsors&logoColor=white" alt="Fairy로 후원하기"></a>
93
+ <a href="https://buymeacoffee.com/kangsicj"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-%ED%9B%84%EC%9B%90%ED%95%98%EA%B8%B0-ffdd00?style=flat-square&logo=buymeacoffee&logoColor=black" alt="Buy Me a Coffee로 후원하기"></a>
172
94
 
173
- ## 📄 라이선스
95
+ ## 라이선스
174
96
 
175
- [GNU GPL v3.0](LICENSE) · 디시인사이드와 관계없는 개인 프로젝트입니다.
176
- 고쳐 쓰거나 다시 배포할 때는 같은 GPL v3.0 으로 소스를 함께 공개해 주세요.
97
+ [GNU GPL v3.0](LICENSE). 디시인사이드와 관계없는 개인 프로젝트입니다.
@@ -2,7 +2,7 @@
2
2
  // @name DCInside Enhancer
3
3
  // @name:ko 디시 인핸서
4
4
  // @namespace https://github.com/kangsicj/DCInsideEnhancer
5
- // @version 1.3.4
5
+ // @version 1.3.6
6
6
  // @description DCInside filter & enhancer — mobile & PC. Block users/words/heads/notices/images & GIFs across posts, infinite list, zoom viewer, theme sync, encrypted multi-device sync (no account, no tracking).
7
7
  // @description:ko 디시인사이드 차단·편의 기능 (모바일·PC) - 유저·단어(제목/본문)·말머리·공지 차단, 같은/비슷한 이미지·움짤 모든 글 차단, 디시콘 제거, 차단 미디어 데이터 절약, 목록 자동 보충·무한 스크롤·뒤로 가기 위치 복원, 스크랩, 이미지 확대뷰 개선, 야간모드 자동 연동, 암호화 기기 간 동기화 (계정 없음·추적 없음)
8
8
  // @author kangsicj
@@ -2,7 +2,7 @@
2
2
  // @name DCInside Enhancer
3
3
  // @name:ko 디시 인핸서
4
4
  // @namespace https://github.com/kangsicj/DCInsideEnhancer
5
- // @version 1.3.4
5
+ // @version 1.3.6
6
6
  // @description DCInside filter & enhancer — mobile & PC. Block users/words/heads/notices/images & GIFs across posts, infinite list, zoom viewer, theme sync, encrypted multi-device sync (no account, no tracking).
7
7
  // @description:ko 디시인사이드 차단·편의 기능 (모바일·PC) - 유저·단어(제목/본문)·말머리·공지 차단, 같은/비슷한 이미지·움짤 모든 글 차단, 디시콘 제거, 차단 미디어 데이터 절약, 목록 자동 보충·무한 스크롤·뒤로 가기 위치 복원, 스크랩, 이미지 확대뷰 개선, 야간모드 자동 연동, 암호화 기기 간 동기화 (계정 없음·추적 없음)
8
8
  // @author kangsicj
@@ -37,7 +37,7 @@
37
37
  window.__dcInsideEnhancer = true;
38
38
  window.__dcRefinery = true;
39
39
 
40
- const SCRIPT_VERSION = '1.3.4';
40
+ const SCRIPT_VERSION = '1.3.6';
41
41
  const PROJECT_URL = 'https://github.com/kangsicj/DCInsideEnhancer';
42
42
  const DONATE_URL = 'https://fairy.hada.io/@kangsicj';
43
43
  const DONATE_URL_BMC = 'https://buymeacoffee.com/kangsicj';
@@ -3309,6 +3309,13 @@
3309
3309
  saveSettings();
3310
3310
  }
3311
3311
 
3312
+ const staleSettings = Object.keys(settings).filter(key => !(key in DEFAULT_SETTINGS) && key !== 'settingsRev');
3313
+
3314
+ if (staleSettings.length) {
3315
+ staleSettings.forEach(key => delete settings[key]);
3316
+ saveSettings();
3317
+ }
3318
+
3312
3319
  OBSOLETE_STORAGE.forEach(key => {
3313
3320
  try {
3314
3321
  localStorage.removeItem(key);
@@ -11973,6 +11980,18 @@
11973
11980
  return out;
11974
11981
  };
11975
11982
 
11983
+ const pickKnownSettings = (source = {}) => {
11984
+ const out = {};
11985
+
11986
+ Object.keys(source || {}).forEach(key => {
11987
+ if (key in DEFAULT_SETTINGS && !SYNC_SETTINGS_SKIP.includes(key)) {
11988
+ out[key] = source[key];
11989
+ }
11990
+ });
11991
+
11992
+ return out;
11993
+ };
11994
+
11976
11995
  const collectSyncData = () => ({
11977
11996
  users: [...blockedUsers],
11978
11997
  images: [...blockedMedia],
@@ -12132,7 +12151,7 @@
12132
12151
  if (after.scraps) diff('스크랩', (before.scraps || []).map(scrapKeyOf), after.scraps.map(scrapKeyOf));
12133
12152
 
12134
12153
  if (after.settings) {
12135
- const changed = Object.keys(after.settings).filter(key => JSON.stringify(after.settings[key]) !== JSON.stringify((before.settings || {})[key])).length;
12154
+ const changed = Object.keys(pickKnownSettings(after.settings)).filter(key => JSON.stringify(after.settings[key]) !== JSON.stringify((before.settings || {})[key])).length;
12136
12155
 
12137
12156
  if (changed) {
12138
12157
  parts.push(`설정 ${changed}개`);
@@ -12554,6 +12573,10 @@
12554
12573
  delete incoming.devices;
12555
12574
  skippedFields(conf.skip).forEach(field => delete incoming[field]);
12556
12575
 
12576
+ if (incoming.settings) {
12577
+ incoming.settings = pickKnownSettings(incoming.settings);
12578
+ }
12579
+
12557
12580
  const mine = {};
12558
12581
 
12559
12582
  Object.keys(incoming).forEach(field => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kangsicj/dcinsideenhancer",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "DCInside filter & enhancer userscript for mobile and PC (디시인사이드 차단·편의 유저스크립트)",
5
5
  "license": "GPL-3.0-only",
6
6
  "author": "kangsicj",
@@ -12,10 +12,10 @@
12
12
  "bugs": {
13
13
  "url": "https://github.com/kangsicj/DCInsideEnhancer/issues"
14
14
  },
15
- "funding": {
16
- "type": "individual",
17
- "url": "https://fairy.hada.io/@jinny"
18
- },
15
+ "funding": [
16
+ { "type": "individual", "url": "https://fairy.hada.io/@kangsicj" },
17
+ { "type": "individual", "url": "https://buymeacoffee.com/kangsicj" }
18
+ ],
19
19
  "keywords": [
20
20
  "userscript",
21
21
  "tampermonkey",