Skip to content

Commit 4f642ad

Browse files
authored
Add files via upload
1 parent 65ccfae commit 4f642ad

9 files changed

Lines changed: 640 additions & 207 deletions

File tree

PRIVACY.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Privacy Policy for StyleCraft
2+
3+
**Last updated:** February 14, 2026
4+
5+
## Overview
6+
7+
StyleCraft is a browser extension that allows users to customize the appearance of websites by applying custom CSS styles. Your privacy is important to us. This policy explains what data StyleCraft handles and how it is used.
8+
9+
## Data Collection
10+
11+
**StyleCraft does not collect, transmit, or share any personal data.**
12+
13+
All data created and used by StyleCraft is stored entirely on your device using Chrome's local storage API (`chrome.storage.local`). No data ever leaves your browser.
14+
15+
## Data Stored Locally
16+
17+
StyleCraft stores the following data locally on your device:
18+
19+
- **Custom CSS styles** you create for websites
20+
- **Theme preferences** (UI theme selection, readability settings)
21+
- **Installed community styles** downloaded from UserStyles.world
22+
- **Auto-backup snapshots** (up to 3 rotating backups of your styles)
23+
- **Extension settings** (badge counter preference, sort/filter state)
24+
25+
## Network Requests
26+
27+
StyleCraft makes network requests only in the following situations:
28+
29+
- **UserStyles.world search:** When you search for community styles, StyleCraft sends search queries to `userstyles.world` to retrieve publicly available style listings. No personal data is included in these requests.
30+
- **Style installation:** When you install a community style, StyleCraft fetches the style's CSS from the UserStyles.world API.
31+
- **Update checks:** StyleCraft periodically checks UserStyles.world for updates to installed community styles.
32+
33+
No analytics, tracking, telemetry, or advertising services are used.
34+
35+
## Permissions Justification
36+
37+
- **storage:** Save your custom styles and settings locally
38+
- **scripting:** Inject your custom CSS into web pages
39+
- **tabs:** Detect the active tab's URL to apply site-specific styles
40+
- **contextMenus:** Provide right-click options to style or hide elements
41+
- **alarms:** Schedule daily automatic backups of your styles
42+
- **host_permissions (\<all_urls\>):** Apply user-created CSS styles to any website the user chooses to customize
43+
44+
## Third-Party Services
45+
46+
StyleCraft integrates with [UserStyles.world](https://userstyles.world), a public community repository of user-created website styles. When you search for or install community styles, requests are made to UserStyles.world's public website and API. No account or personal information is required or transmitted.
47+
48+
## Data Sharing
49+
50+
StyleCraft does not share any data with any third party. No data is sold, transferred, or used for advertising, analytics, or any purpose other than providing the extension's functionality.
51+
52+
## Limited Use Disclosure
53+
54+
StyleCraft's use of information received from Google APIs adheres to the [Chrome Web Store User Data Policy](https://developer.chrome.com/docs/webstore/program-policies/user-data-faq), including the Limited Use requirements.
55+
56+
## Changes to This Policy
57+
58+
If this privacy policy is updated, the changes will be reflected in this document with an updated date.
59+
60+
## Contact
61+
62+
For questions about this privacy policy, please open an issue on the [StyleCraft GitHub repository](https://github.com/SysAdminDoc/StyleCraft).

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
![Manifest](https://img.shields.io/badge/manifest-v3-orange)
77
![Status](https://img.shields.io/badge/status-active-success)
88

9-
<img width="96" height="96" alt="icon96" src="https://github.com/user-attachments/assets/88958220-5867-47af-9363-c66377b91588" />
9+
> A full-featured CSS style manager for Chromium browsers. Create, edit, import, and manage custom styles for any website with a professional dark-themed interface, visual element picker, full CSS editor, and UserStyles.world integration.
1010
11-
> A full-featured CSS style editor and manager for Chromium browsers. Create, edit, import, and manage custom styles for any website with a professional dark-themed interface, visual element picker, full CSS editor, and UserStyles.world integration.
11+
![Screenshot](screenshot.png)
1212

1313
## Installation
1414

background.js

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -378,40 +378,6 @@ chrome.runtime.onInstalled.addListener(() => {
378378
chrome.contextMenus.create({ id: 'stylecraft-hide', title: 'Hide this element', contexts: ['all'] });
379379
});
380380

381-
/* ─── Open popup as tall panel window (bypasses 600px popup cap) ─── */
382-
let popupWindowId = null;
383-
384-
chrome.action.onClicked.addListener(async (tab) => {
385-
// If popup window already exists, focus it
386-
if (popupWindowId !== null) {
387-
try {
388-
const w = await chrome.windows.get(popupWindowId);
389-
if (w) { chrome.windows.update(popupWindowId, { focused: true }); return; }
390-
} catch { popupWindowId = null; }
391-
}
392-
393-
const display = await chrome.system.display.getInfo();
394-
const screen = display[0] || { workArea: { width: 1920, height: 1080, left: 0, top: 0 } };
395-
const wa = screen.workArea;
396-
const panelW = 440;
397-
const panelH = Math.min(wa.height - 40, 1200);
398-
const left = wa.left + wa.width - panelW - 8;
399-
const top = wa.top + 8;
400-
401-
const w = await chrome.windows.create({
402-
url: chrome.runtime.getURL('popup.html'),
403-
type: 'popup',
404-
width: panelW,
405-
height: panelH,
406-
left,
407-
top
408-
});
409-
popupWindowId = w.id;
410-
});
411-
412-
chrome.windows.onRemoved.addListener((id) => {
413-
if (id === popupWindowId) popupWindowId = null;
414-
});
415381
chrome.contextMenus.onClicked.addListener((info, tab) => {
416382
if (!tab?.id) return;
417383
if (info.menuItemId === 'stylecraft-open') injectAndSend(tab.id, { action: 'sc-open-editor-pick' });

0 commit comments

Comments
 (0)