fix: prepare 0.1.3 review warning cleanup

This commit is contained in:
EmberSparks 2026-06-03 16:34:00 +08:00
parent 2a368a1c04
commit ed01265860
9 changed files with 681 additions and 1161 deletions

View file

@ -1 +1 @@
npx lint-staged
OBSIDIAN_PLUGIN_DIR= npm run build

447
README.md
View file

@ -1,234 +1,235 @@
# GitHub Stars Manager
[![GitHub release](https://img.shields.io/github/release/EmberSparks/obsidian-github-stars-manager.svg)](https://github.com/EmberSparks/obsidian-github-stars-manager/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Obsidian Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&color=%23483699&label=downloads&query=%24%5B%22github-stars-manager%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://obsidian.md/plugins?id=github-stars-manager)
[English README](README_en.md) | [使用指南](USAGE_GUIDE.md) | [English Guide](USAGE_GUIDE_EN.md)
一个功能强大的 Obsidian 插件,让您可以直接在 Obsidian 中管理和查看 GitHub 星标仓库,支持多账号管理、自定义标签、智能搜索和精美主题。
## ✨ 核心功能
### 📊 仓库管理
- 📋 在 Obsidian 中查看所有已加星标的 GitHub 仓库
- 👥 **多账号支持**:同时管理多个 GitHub 账号的星标
- ⭐ **星标统计**:实时显示仓库总数和星标数量
- 🔄 智能同步:自动或手动同步星标仓库
- 🔄 **账号管理**:可单独启用/禁用特定账号的同步
### 🏷️ 个性化标注
- 🏷️ **Tag Chips 组件**:直观的标签芯片输入,支持快速选择已有标签
- 📝 为仓库添加自定义标签和笔记
- 🔗 关联仓库到 Obsidian 笔记文件
- 💾 所有标注数据本地存储,保护隐私
### 🔍 智能搜索与筛选
- 🔎 通过名称、描述、语言、标签进行实时搜索
- 🎯 支持正则表达式和模糊匹配
- 📊 按星标时间、名称、语言、星标数等多维度排序
- 🏷️ 基于标签的高级筛选
### 🎨 精美主题
- 🎨 **默认主题**:简洁的卡片布局,与 Obsidian 原生主题完美融合
- 🌊 **液态玻璃主题**iOS 风格的毛玻璃效果,支持动态背景和光泽动画
- 📱 响应式瀑布流布局:类似 Pinterest 的卡片展示方式
- ✨ 平滑动画和悬停效果
### 🔒 安全与隐私
- 🔐 使用 GitHub Personal Access Token 进行安全认证
- 💾 GitHub 令牌、仓库缓存、标签和笔记均保存在本地插件数据中
- 🌐 仅在同步或校验令牌时访问 GitHub 官方服务
- ✅ 通过 eslint-plugin-obsidianmd 全部规则验证
# GitHub Stars Manager
## 安全与隐私
[![GitHub release](https://img.shields.io/github/release/EmberSparks/obsidian-github-stars-manager.svg)](https://github.com/EmberSparks/obsidian-github-stars-manager/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Obsidian Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&color=%23483699&label=downloads&query=%24%5B%22github-stars-manager%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://obsidian.md/plugins?id=github-stars-manager)
GitHub Stars Manager 是本地优先的 GitHub 集成插件。插件只会在用户配置账号、校验令牌、手动同步或触发相关操作时访问 GitHub 服务。
[简体中文 README](README_zh.md) | [Usage Guide](USAGE_GUIDE_EN.md) | [使用指南](USAGE_GUIDE.md)
运行时可能访问的外部服务:
A powerful Obsidian plugin that allows you to manage and view your GitHub starred repositories directly within Obsidian, with multi-account support, custom tags, smart search, and beautiful themes.
- `api.github.com`:校验 GitHub 令牌、读取当前用户信息、获取已加星标仓库和仓库详情
- `github.com`:用户点击仓库链接时在浏览器中打开 GitHub 页面
- `avatars.githubusercontent.com` 或其他 GitHub 头像域名:显示 GitHub 用户和仓库所有者头像
## ✨ Core Features
插件不会:
### 📊 Repository Management
- 📋 View all your starred GitHub repositories within Obsidian
- 👥 **Multi-account support**: Manage stars from multiple GitHub accounts simultaneously
- ⭐ **Star statistics**: Real-time display of total repository count and stars
- 🔄 Smart sync: Automatic or manual synchronization of starred repositories
- 🔄 **Account management**: Enable/disable sync for specific accounts individually
- 上传保险库内容或笔记正文
- 收集分析数据或遥测数据
- 跟踪用户行为
- 下载或执行远程代码
- 将 GitHub 令牌发送到 GitHub 以外的服务
### 🏷️ Personalization
- 🏷️ **Tag Chips Component**: Intuitive tag chip input with quick selection of existing tags
- 📝 Add custom tags and notes to repositories
- 🔗 Link repositories to Obsidian note files
- 💾 All annotation data stored locally for privacy protection
GitHub 个人访问令牌会保存在 Obsidian 插件设置数据中。该数据位于本地保险库配置内,不会由插件主动上传;但它不是加密密码库。建议为令牌设置过期时间,并尽量使用满足需求的最小权限。
### 🔍 Smart Search & Filter
- 🔎 Real-time search by name, description, language, tags
- 🎯 Support for regular expressions and fuzzy matching
- 📊 Multi-dimensional sorting: by star time, name, language, star count, etc.
- 🏷️ Advanced filtering based on tags
## 配置
### 🎨 Beautiful Themes
- 🎨 **Default Theme**: Clean card layout that integrates seamlessly with Obsidian's native theme
- 🌊 **Liquid Glass Theme**: iOS-style frosted glass effect with dynamic backgrounds and shimmer animations
- 📱 Responsive waterfall layout: Pinterest-style card display
- ✨ Smooth animations and hover effects
要使用此插件,您需要提供一个具有必要权限的 GitHub 个人访问令牌 (PAT),以便读取您已加星标的仓库。
**如何获取 GitHub 个人访问令牌 (PAT):**
1. **登录 GitHub:** 访问 [github.com](https://github.com) 并登录您的账户。
2. **访问设置:** 点击页面右上角的个人头像,然后选择 "Settings"。
3. **开发者设置:** 在左侧菜单栏中,滚动到底部,点击 "Developer settings"。
4. **个人访问令牌:** 在左侧菜单中,选择 "Personal access tokens",然后选择 "Tokens (classic)"。 *(注意:请选择 Classic TokenFine-grained tokens 可能需要更复杂的权限设置)*
5. **生成新令牌:** 点击 "Generate new token" 按钮,然后选择 "Generate new token (classic)"。
6. **令牌描述:** 在 "Note" 字段中,为您的令牌添加一个描述性的名称,例如 "Obsidian Stars Manager"。
7. **设置过期时间:** 选择一个合适的过期时间 (Expiration)。为了安全起见,建议不要选择 "No expiration"。
8. **选择范围 (Scopes):** 建议优先使用最小权限。读取公开星标仓库通常使用 `read:user``public_repo` 即可;只有在确实需要访问私有仓库相关数据时,才考虑使用更宽泛的 `repo` 权限。
9. **生成令牌:** 点击页面底部的 "Generate token" 按钮。
10. **复制令牌:** **重要!** GitHub 只会显示一次完整的令牌。请立即点击复制按钮将其复制下来,并妥善保管。**离开此页面后将无法再次看到完整的令牌。**
11. **在插件中使用:** 将复制的令牌粘贴到 Obsidian 中 "GitHub Stars Manager" 插件设置选项卡里的 "GitHub 个人访问令牌 (PAT)" 字段中。
## 使用说明
1. 安装并启用插件后,在左侧面板会出现一个 GitHub 星标图标
2. 点击图标打开星标仓库视图
3. 首次使用需要在设置中配置您的 GitHub PAT
4. 点击"同步"按钮获取您的星标仓库
5. 您可以为每个仓库添加个人笔记、标签,或关联到现有的 Obsidian 笔记
📖 **[查看详细使用指南](USAGE_GUIDE.md)** | [English Guide](USAGE_GUIDE_EN.md)
### 主题切换
插件提供两种视觉主题:
- **默认主题**:简洁的卡片布局,与 Obsidian 原生主题保持一致
- **液态玻璃主题**iOS 风格的毛玻璃效果,具有以下特性:
- 🌈 彩色渐变背景,提供更好的视觉对比度
- ✨ 动态浮动动画背景效果
- 🔍 增强的毛玻璃模糊效果
- 💫 卡片悬停时的光泽扫过动画
- 📱 瀑布流布局,类似小红书的卡片展示
- 🎯 优化的字体渲染,避免悬停时的模糊问题
在插件界面顶部可以通过主题按钮快速切换。
## 安装
### 从 Obsidian 社区插件安装(推荐)
1. 打开 Obsidian 设置
2. 转到"社区插件"选项卡
3. 搜索 "GitHub Stars Manager"
4. 点击安装并启用插件
### 手动安装
1. 下载最新版本的 `main.js`、`manifest.json` 和 `styles.css`
2. 将这些文件复制到您的保险库文件夹:`VaultFolder/.obsidian/plugins/github-stars-manager/`
3. 重启 Obsidian
4. 在设置中启用插件
## 开发
### 环境要求
- Node.js 16+
- npm 或 yarn
### 开发命令
```bash
# 安装依赖
npm install
# 开发模式(监听文件变化)
npm run dev
# 生产构建
npm run build
# 版本升级
npm run version
```
### 技术栈
- **TypeScript**: 类型安全的 JavaScript 超集
- **Obsidian API**: 插件开发框架
- **GitHub REST API**: 通过 @octokit/rest 访问 GitHub 数据
- **CSS3**: 现代样式和动画效果
- **esbuild**: 快速的 JavaScript 打包工具
### 本地开发环境配置
为了在本地开发和调试插件,您需要配置一个环境变量,指向您的 Obsidian 插件目录。这样,当您运行 `npm run dev``npm run build` 时,插件文件会自动部署到您的 Obsidian Vault 中。
1. **创建 `.env` 文件**: 复制项目根目录下的 `.env.example` 文件,并将其重命名为 `.env`
2. **配置插件目录**: 打开 `.env` 文件,将 `OBSIDIAN_PLUGIN_DIR` 的值修改为您本地的 Obsidian 插件目录的绝对路径。例如:
```
OBSIDIAN_PLUGIN_DIR="D:/MyObsidianVault/.obsidian/plugins"
```
3. **重启开发服务器**: 如果您正在运行 `npm run dev`,请重新启动它以加载新的环境变量。
### 项目结构
```
├── src/
│ ├── main.ts # 主插件类
│ ├── view.ts # 星标仓库视图
│ ├── settings.ts # 插件设置
│ ├── modal.ts # 编辑对话框
│ ├── githubService.ts # GitHub API 服务
│ └── types.ts # TypeScript 类型定义
├── main.ts # 插件入口点
├── manifest.json # 插件清单
├── styles.css # 样式文件
└── README.md # 说明文档
```
## 更新日志
### v0.1.2 (当前版本)
- 🛡️ 将最低 Obsidian 版本声明更新为 1.7.2,匹配当前使用的官方 API 要求
- 🔒 补充安全与隐私说明,明确运行时访问的 GitHub 服务和本地数据存储方式
- 🔑 将 GitHub 令牌说明调整为最小权限优先,推荐 `read:user``public_repo`
- 📦 优化 Release 工作流,仅发布 Obsidian 支持的插件文件并生成构建来源证明
- 🔧 移除构建脚本中的 `builtin-modules``dotenv` 依赖,降低审核警告
### 🔒 Security & Privacy
- 🔐 Secure authentication using GitHub Personal Access Token
- 💾 GitHub tokens, repository cache, tags, and notes are stored in local plugin data
- 🌐 Only connects to official GitHub services when syncing or validating tokens
- ✅ Passed all eslint-plugin-obsidianmd rule validations
## Security & Privacy
GitHub Stars Manager is a local-first GitHub integration. It only connects to GitHub services when you configure an account, validate a token, sync repositories, or open GitHub-related links.
Runtime external services:
- `api.github.com`: validates GitHub tokens, reads the current user, fetches starred repositories, and fetches repository details
- `github.com`: opens repository pages when you click repository links
- `avatars.githubusercontent.com` or other GitHub avatar hosts: displays GitHub user and repository owner avatars
Runtime Obsidian capabilities:
- Vault file enumeration: used only to let you choose an existing Markdown note when linking a repository to a note
- Vault write access: used only when exporting selected starred repositories to Markdown files in the export folder you configure
- Clipboard write access: used only when you click the copy URL action for a repository link
This plugin does not:
- upload vault content or note bodies
- collect analytics or telemetry
- track users
- download or execute remote code
- read clipboard content
- send your GitHub token to any service other than GitHub
GitHub Personal Access Tokens are stored in local Obsidian plugin settings data inside your vault configuration. The plugin does not upload this data, but it is not an encrypted password vault. Use token expiration and the minimum scopes needed for your use case.
## Configuration
To use this plugin, you need to provide a GitHub Personal Access Token (PAT) with the necessary permissions to read your starred repositories.
**How to get a GitHub Personal Access Token (PAT):**
1. **Login to GitHub:** Visit [github.com](https://github.com) and log in to your account.
2. **Access Settings:** Click your profile picture in the top-right corner, then select "Settings".
3. **Developer Settings:** In the left sidebar, scroll down and click "Developer settings".
4. **Personal Access Tokens:** In the left sidebar, select "Personal access tokens", then choose "Tokens (classic)". *(Note: Please select Classic Token, as Fine-grained tokens might require more complex permission setup).*
5. **Generate New Token:** Click the "Generate new token" button, then select "Generate new token (classic)".
6. **Token Description:** In the "Note" field, give your token a descriptive name, e.g., "Obsidian Stars Manager".
7. **Set Expiration:** Choose an appropriate expiration duration. For security, "No expiration" is not recommended.
8. **Select Scopes:** Prefer the minimum required scopes. Reading public starred repositories usually only requires `read:user` and `public_repo`. Only use the broader `repo` scope if you specifically need access to private repository-related data.
9. **Generate Token:** Click the "Generate token" button at the bottom of the page.
10. **Copy Token:** **Important!** GitHub will only show the full token once. Click the copy icon immediately to copy it and store it securely. **You won't be able to see the full token again after leaving this page.**
11. **Use in Plugin:** Paste the copied token into the "GitHub Personal Access Token (PAT)" field in the "GitHub Stars Manager" settings tab within Obsidian.
## Usage
1. After installing and enabling the plugin, a GitHub star icon will appear in the left panel
2. Click the icon to open the starred repositories view
3. Configure your GitHub PAT in the plugin settings on first use
4. Click the "Sync" button to fetch your starred repositories
5. You can add personal notes, tags, or link repositories to existing Obsidian notes
📖 **[View Detailed Usage Guide](USAGE_GUIDE_EN.md)** | [中文指南](USAGE_GUIDE.md)
### Theme Switching
The plugin provides two visual themes:
- **Default Theme**: Clean card layout that maintains consistency with Obsidian's native themes
- **iOS Glass Theme**: iOS-style frosted glass effect with the following features:
- 🌈 Colorful gradient backgrounds for better visual contrast
- ✨ Dynamic floating animation background effects
- 🔍 Enhanced frosted glass blur effects
- 💫 Shimmer sweep animation on card hover
- 📱 Waterfall layout similar to Xiaohongshu's card display
- 🎯 Optimized font rendering to avoid blur issues on hover
You can quickly switch themes using the theme button at the top of the plugin interface.
## Installation
### From Obsidian Community Plugins (Recommended)
1. Open Obsidian Settings
2. Go to "Community plugins" tab
3. Search for "GitHub Stars Manager"
4. Click Install and enable the plugin
### Manual Installation
1. Download the latest `main.js`, `manifest.json`, and `styles.css`
2. Copy these files to your vault: `VaultFolder/.obsidian/plugins/github-stars-manager/`
3. Restart Obsidian
4. Enable the plugin in settings
## Development
### Requirements
- Node.js 16+
- npm or yarn
### Development Commands
```bash
# Install dependencies
npm install
# Development mode (watch for changes)
npm run dev
# Production build
npm run build
# Version bump
npm run version
```
### Tech Stack
- **TypeScript**: Type-safe JavaScript superset
- **Obsidian API**: Plugin development framework
- **GitHub REST API**: Access GitHub data via @octokit/rest
- **CSS3**: Modern styling and animation effects
- **esbuild**: Fast JavaScript bundler
### Project Structure
```
├── src/
│ ├── main.ts # Main plugin class
│ ├── view.ts # Starred repositories view
│ ├── settings.ts # Plugin settings
│ ├── modal.ts # Edit modal dialogs
│ ├── githubService.ts # GitHub API service
│ └── types.ts # TypeScript type definitions
├── main.ts # Plugin entry point
├── manifest.json # Plugin manifest
├── styles.css # Stylesheet
└── README.md # Documentation
```
## Changelog
### v0.1.3 (Current Version)
- 📝 Made the root README English-first for Obsidian Community review, while keeping the Simplified Chinese README in `README_zh.md`
- 🔒 Added explicit runtime capability disclosures for vault file enumeration, vault writes, and clipboard writes
- 🔧 Removed direct `eslint-plugin-import` and `lint-staged` development dependencies that triggered source review warnings
### v0.1.2
- 🛡️ Updated the minimum Obsidian version to 1.7.2 to match the official API requirements used by the plugin
- 🔒 Added clearer security and privacy disclosures for GitHub services and local data storage
- 🔑 Changed GitHub token guidance to prefer the minimum `read:user` and `public_repo` scopes
- 📦 Improved the Release workflow to publish only Obsidian-supported plugin files and generate build provenance attestations
- 🔧 Removed `builtin-modules` and `dotenv` from the build script to reduce review warnings
### v0.1.1
- 🏷️ 新增 Tag Chips 输入组件,支持快速选择标签
- ⭐ 添加星标总数显示功能
- 🎨 增强笔记卡片可见性和 UI 样式
- 🔧 启用全部 25 个 eslint-plugin-obsidianmd 规则
- 🐛 修复 token 错误处理和提示信息
- 🛡️ 补充安全与隐私说明,便于 Obsidian Community 审核识别网络与数据行为
- 🤖 配置 pre-commit hook 和 GitHub Actions CI/CD
### v0.1.0
- ✨ 初始版本发布
- 🎯 多账号 GitHub Stars 管理
- 🎨 液态玻璃主题支持
- 📱 响应式瀑布流布局
- 🔍 高级搜索和筛选功能
- 🏷️ 自定义标签和笔记功能
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 支持
如果您觉得这个插件对您有帮助,可以考虑:
- ⭐ 给项目点个星标
- 🐛 报告 Bug 或提出改进建议
- 💡 分享给其他 Obsidian 用户
- 💖 [赞助开发者](https://github.com/sponsors/EmberSparks)
## 相关链接
- [Obsidian 官网](https://obsidian.md)
- [GitHub API 文档](https://docs.github.com/en/rest)
- [插件开发文档](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)
- 🏷️ Added Tag Chips input component with quick tag selection
- ⭐ Added total stars count display feature
- 🎨 Enhanced note card visibility and UI styling
- 🔧 Enabled all 25 eslint-plugin-obsidianmd rules
- 🐛 Fixed token error handling and error messages
- 🛡️ Added clearer security and privacy disclosures for Obsidian Community review
- 🤖 Configured pre-commit hooks and GitHub Actions CI/CD
### v0.1.0
- ✨ Initial release
- 🎯 Multi-account GitHub Stars management
- 🎨 Liquid Glass theme support
- 📱 Responsive waterfall layout
- 🔍 Advanced search and filtering
- 🏷️ Custom tags and notes functionality
## License
MIT License - see [LICENSE](LICENSE) file for details
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## Support
If you find this plugin helpful, consider:
- ⭐ Starring the project
- 🐛 Reporting bugs or suggesting improvements
- 💡 Sharing it with other Obsidian users
- 💖 [Sponsor the developer](https://github.com/sponsors/EmberSparks)
## Related Links
- [Obsidian Official Website](https://obsidian.md)
- [GitHub API Documentation](https://docs.github.com/en/rest)
- [Plugin Development Documentation](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)

View file

@ -1,40 +1,40 @@
# GitHub Stars Manager
[![GitHub release](https://img.shields.io/github/release/EmberSparks/obsidian-github-stars-manager.svg)](https://github.com/EmberSparks/obsidian-github-stars-manager/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Obsidian Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&color=%23483699&label=downloads&query=%24%5B%22github-stars-manager%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://obsidian.md/plugins?id=github-stars-manager)
[简体中文 README](README.md) | [Usage Guide](USAGE_GUIDE_EN.md) | [使用指南](USAGE_GUIDE.md)
A powerful Obsidian plugin that allows you to manage and view your GitHub starred repositories directly within Obsidian, with multi-account support, custom tags, smart search, and beautiful themes.
## ✨ Core Features
### 📊 Repository Management
- 📋 View all your starred GitHub repositories within Obsidian
- 👥 **Multi-account support**: Manage stars from multiple GitHub accounts simultaneously
- ⭐ **Star statistics**: Real-time display of total repository count and stars
- 🔄 Smart sync: Automatic or manual synchronization of starred repositories
- 🔄 **Account management**: Enable/disable sync for specific accounts individually
### 🏷️ Personalization
- 🏷️ **Tag Chips Component**: Intuitive tag chip input with quick selection of existing tags
- 📝 Add custom tags and notes to repositories
- 🔗 Link repositories to Obsidian note files
- 💾 All annotation data stored locally for privacy protection
### 🔍 Smart Search & Filter
- 🔎 Real-time search by name, description, language, tags
- 🎯 Support for regular expressions and fuzzy matching
- 📊 Multi-dimensional sorting: by star time, name, language, star count, etc.
- 🏷️ Advanced filtering based on tags
### 🎨 Beautiful Themes
- 🎨 **Default Theme**: Clean card layout that integrates seamlessly with Obsidian's native theme
- 🌊 **Liquid Glass Theme**: iOS-style frosted glass effect with dynamic backgrounds and shimmer animations
- 📱 Responsive waterfall layout: Pinterest-style card display
- ✨ Smooth animations and hover effects
# GitHub Stars Manager
[![GitHub release](https://img.shields.io/github/release/EmberSparks/obsidian-github-stars-manager.svg)](https://github.com/EmberSparks/obsidian-github-stars-manager/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Obsidian Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&color=%23483699&label=downloads&query=%24%5B%22github-stars-manager%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://obsidian.md/plugins?id=github-stars-manager)
[简体中文 README](README_zh.md) | [Usage Guide](USAGE_GUIDE_EN.md) | [使用指南](USAGE_GUIDE.md)
A powerful Obsidian plugin that allows you to manage and view your GitHub starred repositories directly within Obsidian, with multi-account support, custom tags, smart search, and beautiful themes.
## ✨ Core Features
### 📊 Repository Management
- 📋 View all your starred GitHub repositories within Obsidian
- 👥 **Multi-account support**: Manage stars from multiple GitHub accounts simultaneously
- ⭐ **Star statistics**: Real-time display of total repository count and stars
- 🔄 Smart sync: Automatic or manual synchronization of starred repositories
- 🔄 **Account management**: Enable/disable sync for specific accounts individually
### 🏷️ Personalization
- 🏷️ **Tag Chips Component**: Intuitive tag chip input with quick selection of existing tags
- 📝 Add custom tags and notes to repositories
- 🔗 Link repositories to Obsidian note files
- 💾 All annotation data stored locally for privacy protection
### 🔍 Smart Search & Filter
- 🔎 Real-time search by name, description, language, tags
- 🎯 Support for regular expressions and fuzzy matching
- 📊 Multi-dimensional sorting: by star time, name, language, star count, etc.
- 🏷️ Advanced filtering based on tags
### 🎨 Beautiful Themes
- 🎨 **Default Theme**: Clean card layout that integrates seamlessly with Obsidian's native theme
- 🌊 **Liquid Glass Theme**: iOS-style frosted glass effect with dynamic backgrounds and shimmer animations
- 📱 Responsive waterfall layout: Pinterest-style card display
- ✨ Smooth animations and hover effects
### 🔒 Security & Privacy
- 🔐 Secure authentication using GitHub Personal Access Token
- 💾 GitHub tokens, repository cache, tags, and notes are stored in local plugin data
@ -51,125 +51,137 @@ Runtime external services:
- `github.com`: opens repository pages when you click repository links
- `avatars.githubusercontent.com` or other GitHub avatar hosts: displays GitHub user and repository owner avatars
Runtime Obsidian capabilities:
- Vault file enumeration: used only to let you choose an existing Markdown note when linking a repository to a note
- Vault write access: used only when exporting selected starred repositories to Markdown files in the export folder you configure
- Clipboard write access: used only when you click the copy URL action for a repository link
This plugin does not:
- upload vault content or note bodies
- collect analytics or telemetry
- track users
- download or execute remote code
- read clipboard content
- send your GitHub token to any service other than GitHub
GitHub Personal Access Tokens are stored in local Obsidian plugin settings data inside your vault configuration. The plugin does not upload this data, but it is not an encrypted password vault. Use token expiration and the minimum scopes needed for your use case.
## Configuration
To use this plugin, you need to provide a GitHub Personal Access Token (PAT) with the necessary permissions to read your starred repositories.
**How to get a GitHub Personal Access Token (PAT):**
1. **Login to GitHub:** Visit [github.com](https://github.com) and log in to your account.
2. **Access Settings:** Click your profile picture in the top-right corner, then select "Settings".
3. **Developer Settings:** In the left sidebar, scroll down and click "Developer settings".
4. **Personal Access Tokens:** In the left sidebar, select "Personal access tokens", then choose "Tokens (classic)". *(Note: Please select Classic Token, as Fine-grained tokens might require more complex permission setup).*
5. **Generate New Token:** Click the "Generate new token" button, then select "Generate new token (classic)".
6. **Token Description:** In the "Note" field, give your token a descriptive name, e.g., "Obsidian Stars Manager".
7. **Set Expiration:** Choose an appropriate expiration duration. For security, "No expiration" is not recommended.
To use this plugin, you need to provide a GitHub Personal Access Token (PAT) with the necessary permissions to read your starred repositories.
**How to get a GitHub Personal Access Token (PAT):**
1. **Login to GitHub:** Visit [github.com](https://github.com) and log in to your account.
2. **Access Settings:** Click your profile picture in the top-right corner, then select "Settings".
3. **Developer Settings:** In the left sidebar, scroll down and click "Developer settings".
4. **Personal Access Tokens:** In the left sidebar, select "Personal access tokens", then choose "Tokens (classic)". *(Note: Please select Classic Token, as Fine-grained tokens might require more complex permission setup).*
5. **Generate New Token:** Click the "Generate new token" button, then select "Generate new token (classic)".
6. **Token Description:** In the "Note" field, give your token a descriptive name, e.g., "Obsidian Stars Manager".
7. **Set Expiration:** Choose an appropriate expiration duration. For security, "No expiration" is not recommended.
8. **Select Scopes:** Prefer the minimum required scopes. Reading public starred repositories usually only requires `read:user` and `public_repo`. Only use the broader `repo` scope if you specifically need access to private repository-related data.
9. **Generate Token:** Click the "Generate token" button at the bottom of the page.
10. **Copy Token:** **Important!** GitHub will only show the full token once. Click the copy icon immediately to copy it and store it securely. **You won't be able to see the full token again after leaving this page.**
11. **Use in Plugin:** Paste the copied token into the "GitHub Personal Access Token (PAT)" field in the "GitHub Stars Manager" settings tab within Obsidian.
## Usage
1. After installing and enabling the plugin, a GitHub star icon will appear in the left panel
2. Click the icon to open the starred repositories view
3. Configure your GitHub PAT in the plugin settings on first use
4. Click the "Sync" button to fetch your starred repositories
5. You can add personal notes, tags, or link repositories to existing Obsidian notes
📖 **[View Detailed Usage Guide](USAGE_GUIDE_EN.md)** | [中文指南](USAGE_GUIDE.md)
### Theme Switching
The plugin provides two visual themes:
- **Default Theme**: Clean card layout that maintains consistency with Obsidian's native themes
- **iOS Glass Theme**: iOS-style frosted glass effect with the following features:
- 🌈 Colorful gradient backgrounds for better visual contrast
- ✨ Dynamic floating animation background effects
- 🔍 Enhanced frosted glass blur effects
- 💫 Shimmer sweep animation on card hover
- 📱 Waterfall layout similar to Xiaohongshu's card display
- 🎯 Optimized font rendering to avoid blur issues on hover
You can quickly switch themes using the theme button at the top of the plugin interface.
## Installation
### From Obsidian Community Plugins (Recommended)
1. Open Obsidian Settings
2. Go to "Community plugins" tab
3. Search for "GitHub Stars Manager"
4. Click Install and enable the plugin
### Manual Installation
1. Download the latest `main.js`, `manifest.json`, and `styles.css`
9. **Generate Token:** Click the "Generate token" button at the bottom of the page.
10. **Copy Token:** **Important!** GitHub will only show the full token once. Click the copy icon immediately to copy it and store it securely. **You won't be able to see the full token again after leaving this page.**
11. **Use in Plugin:** Paste the copied token into the "GitHub Personal Access Token (PAT)" field in the "GitHub Stars Manager" settings tab within Obsidian.
## Usage
1. After installing and enabling the plugin, a GitHub star icon will appear in the left panel
2. Click the icon to open the starred repositories view
3. Configure your GitHub PAT in the plugin settings on first use
4. Click the "Sync" button to fetch your starred repositories
5. You can add personal notes, tags, or link repositories to existing Obsidian notes
📖 **[View Detailed Usage Guide](USAGE_GUIDE_EN.md)** | [中文指南](USAGE_GUIDE.md)
### Theme Switching
The plugin provides two visual themes:
- **Default Theme**: Clean card layout that maintains consistency with Obsidian's native themes
- **iOS Glass Theme**: iOS-style frosted glass effect with the following features:
- 🌈 Colorful gradient backgrounds for better visual contrast
- ✨ Dynamic floating animation background effects
- 🔍 Enhanced frosted glass blur effects
- 💫 Shimmer sweep animation on card hover
- 📱 Waterfall layout similar to Xiaohongshu's card display
- 🎯 Optimized font rendering to avoid blur issues on hover
You can quickly switch themes using the theme button at the top of the plugin interface.
## Installation
### From Obsidian Community Plugins (Recommended)
1. Open Obsidian Settings
2. Go to "Community plugins" tab
3. Search for "GitHub Stars Manager"
4. Click Install and enable the plugin
### Manual Installation
1. Download the latest `main.js`, `manifest.json`, and `styles.css`
2. Copy these files to your vault: `VaultFolder/.obsidian/plugins/github-stars-manager/`
3. Restart Obsidian
4. Enable the plugin in settings
## Development
### Requirements
- Node.js 16+
- npm or yarn
### Development Commands
```bash
# Install dependencies
npm install
# Development mode (watch for changes)
npm run dev
# Production build
npm run build
# Version bump
npm run version
```
### Tech Stack
- **TypeScript**: Type-safe JavaScript superset
- **Obsidian API**: Plugin development framework
- **GitHub REST API**: Access GitHub data via @octokit/rest
- **CSS3**: Modern styling and animation effects
- **esbuild**: Fast JavaScript bundler
### Project Structure
```
├── src/
│ ├── main.ts # Main plugin class
│ ├── view.ts # Starred repositories view
│ ├── settings.ts # Plugin settings
│ ├── modal.ts # Edit modal dialogs
│ ├── githubService.ts # GitHub API service
│ └── types.ts # TypeScript type definitions
├── main.ts # Plugin entry point
├── manifest.json # Plugin manifest
├── styles.css # Stylesheet
└── README.md # Documentation
```
## Changelog
### v0.1.2 (Current Version)
3. Restart Obsidian
4. Enable the plugin in settings
## Development
### Requirements
- Node.js 16+
- npm or yarn
### Development Commands
```bash
# Install dependencies
npm install
# Development mode (watch for changes)
npm run dev
# Production build
npm run build
# Version bump
npm run version
```
### Tech Stack
- **TypeScript**: Type-safe JavaScript superset
- **Obsidian API**: Plugin development framework
- **GitHub REST API**: Access GitHub data via @octokit/rest
- **CSS3**: Modern styling and animation effects
- **esbuild**: Fast JavaScript bundler
### Project Structure
```
├── src/
│ ├── main.ts # Main plugin class
│ ├── view.ts # Starred repositories view
│ ├── settings.ts # Plugin settings
│ ├── modal.ts # Edit modal dialogs
│ ├── githubService.ts # GitHub API service
│ └── types.ts # TypeScript type definitions
├── main.ts # Plugin entry point
├── manifest.json # Plugin manifest
├── styles.css # Stylesheet
└── README.md # Documentation
```
## Changelog
### v0.1.3 (Current Version)
- 📝 Made the root README English-first for Obsidian Community review, while keeping the Simplified Chinese README in `README_zh.md`
- 🔒 Added explicit runtime capability disclosures for vault file enumeration, vault writes, and clipboard writes
- 🔧 Removed direct `eslint-plugin-import` and `lint-staged` development dependencies that triggered source review warnings
### v0.1.2
- 🛡️ Updated the minimum Obsidian version to 1.7.2 to match the official API requirements used by the plugin
- 🔒 Added clearer security and privacy disclosures for GitHub services and local data storage
- 🔑 Changed GitHub token guidance to prefer the minimum `read:user` and `public_repo` scopes
@ -180,44 +192,44 @@ npm run version
- 🏷️ Added Tag Chips input component with quick tag selection
- ⭐ Added total stars count display feature
- 🎨 Enhanced note card visibility and UI styling
- 🔧 Enabled all 25 eslint-plugin-obsidianmd rules
- 🐛 Fixed token error handling and error messages
- 🔧 Enabled all 25 eslint-plugin-obsidianmd rules
- 🐛 Fixed token error handling and error messages
- 🛡️ Added clearer security and privacy disclosures for Obsidian Community review
- 🤖 Configured pre-commit hooks and GitHub Actions CI/CD
### v0.1.0
- ✨ Initial release
- 🎯 Multi-account GitHub Stars management
- 🎨 Liquid Glass theme support
- 📱 Responsive waterfall layout
- 🔍 Advanced search and filtering
- 🏷️ Custom tags and notes functionality
## License
MIT License - see [LICENSE](LICENSE) file for details
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## Support
If you find this plugin helpful, consider:
- ⭐ Starring the project
- 🐛 Reporting bugs or suggesting improvements
- 💡 Sharing it with other Obsidian users
- 💖 [Sponsor the developer](https://github.com/sponsors/EmberSparks)
## Related Links
- [Obsidian Official Website](https://obsidian.md)
- [GitHub API Documentation](https://docs.github.com/en/rest)
- [Plugin Development Documentation](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)
- 🤖 Configured pre-commit hooks and GitHub Actions CI/CD
### v0.1.0
- ✨ Initial release
- 🎯 Multi-account GitHub Stars management
- 🎨 Liquid Glass theme support
- 📱 Responsive waterfall layout
- 🔍 Advanced search and filtering
- 🏷️ Custom tags and notes functionality
## License
MIT License - see [LICENSE](LICENSE) file for details
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## Support
If you find this plugin helpful, consider:
- ⭐ Starring the project
- 🐛 Reporting bugs or suggesting improvements
- 💡 Sharing it with other Obsidian users
- 💖 [Sponsor the developer](https://github.com/sponsors/EmberSparks)
## Related Links
- [Obsidian Official Website](https://obsidian.md)
- [GitHub API Documentation](https://docs.github.com/en/rest)
- [Plugin Development Documentation](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)

246
README_zh.md Normal file
View file

@ -0,0 +1,246 @@
# GitHub Stars Manager
[![GitHub release](https://img.shields.io/github/release/EmberSparks/obsidian-github-stars-manager.svg)](https://github.com/EmberSparks/obsidian-github-stars-manager/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Obsidian Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&color=%23483699&label=downloads&query=%24%5B%22github-stars-manager%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://obsidian.md/plugins?id=github-stars-manager)
[English README](README.md) | [使用指南](USAGE_GUIDE.md) | [English Guide](USAGE_GUIDE_EN.md)
一个功能强大的 Obsidian 插件,让您可以直接在 Obsidian 中管理和查看 GitHub 星标仓库,支持多账号管理、自定义标签、智能搜索和精美主题。
## ✨ 核心功能
### 📊 仓库管理
- 📋 在 Obsidian 中查看所有已加星标的 GitHub 仓库
- 👥 **多账号支持**:同时管理多个 GitHub 账号的星标
- ⭐ **星标统计**:实时显示仓库总数和星标数量
- 🔄 智能同步:自动或手动同步星标仓库
- 🔄 **账号管理**:可单独启用/禁用特定账号的同步
### 🏷️ 个性化标注
- 🏷️ **Tag Chips 组件**:直观的标签芯片输入,支持快速选择已有标签
- 📝 为仓库添加自定义标签和笔记
- 🔗 关联仓库到 Obsidian 笔记文件
- 💾 所有标注数据本地存储,保护隐私
### 🔍 智能搜索与筛选
- 🔎 通过名称、描述、语言、标签进行实时搜索
- 🎯 支持正则表达式和模糊匹配
- 📊 按星标时间、名称、语言、星标数等多维度排序
- 🏷️ 基于标签的高级筛选
### 🎨 精美主题
- 🎨 **默认主题**:简洁的卡片布局,与 Obsidian 原生主题完美融合
- 🌊 **液态玻璃主题**iOS 风格的毛玻璃效果,支持动态背景和光泽动画
- 📱 响应式瀑布流布局:类似 Pinterest 的卡片展示方式
- ✨ 平滑动画和悬停效果
### 🔒 安全与隐私
- 🔐 使用 GitHub Personal Access Token 进行安全认证
- 💾 GitHub 令牌、仓库缓存、标签和笔记均保存在本地插件数据中
- 🌐 仅在同步或校验令牌时访问 GitHub 官方服务
- ✅ 通过 eslint-plugin-obsidianmd 全部规则验证
## 安全与隐私
GitHub Stars Manager 是本地优先的 GitHub 集成插件。插件只会在用户配置账号、校验令牌、手动同步或触发相关操作时访问 GitHub 服务。
运行时可能访问的外部服务:
- `api.github.com`:校验 GitHub 令牌、读取当前用户信息、获取已加星标仓库和仓库详情
- `github.com`:用户点击仓库链接时在浏览器中打开 GitHub 页面
- `avatars.githubusercontent.com` 或其他 GitHub 头像域名:显示 GitHub 用户和仓库所有者头像
运行时使用的 Obsidian 能力:
- 枚举保险库文件:仅用于在关联仓库到笔记时,让用户选择现有 Markdown 笔记
- 写入保险库文件:仅用于将用户选中的星标仓库导出为 Markdown 文件,保存到用户配置的导出目录
- 写入剪贴板:仅用于用户点击复制仓库链接操作
插件不会:
- 上传保险库内容或笔记正文
- 收集分析数据或遥测数据
- 跟踪用户行为
- 下载或执行远程代码
- 读取剪贴板内容
- 将 GitHub 令牌发送到 GitHub 以外的服务
GitHub 个人访问令牌会保存在 Obsidian 插件设置数据中。该数据位于本地保险库配置内,不会由插件主动上传;但它不是加密密码库。建议为令牌设置过期时间,并尽量使用满足需求的最小权限。
## 配置
要使用此插件,您需要提供一个具有必要权限的 GitHub 个人访问令牌 (PAT),以便读取您已加星标的仓库。
**如何获取 GitHub 个人访问令牌 (PAT):**
1. **登录 GitHub:** 访问 [github.com](https://github.com) 并登录您的账户。
2. **访问设置:** 点击页面右上角的个人头像,然后选择 "Settings"。
3. **开发者设置:** 在左侧菜单栏中,滚动到底部,点击 "Developer settings"。
4. **个人访问令牌:** 在左侧菜单中,选择 "Personal access tokens",然后选择 "Tokens (classic)"。 *(注意:请选择 Classic TokenFine-grained tokens 可能需要更复杂的权限设置)*
5. **生成新令牌:** 点击 "Generate new token" 按钮,然后选择 "Generate new token (classic)"。
6. **令牌描述:** 在 "Note" 字段中,为您的令牌添加一个描述性的名称,例如 "Obsidian Stars Manager"。
7. **设置过期时间:** 选择一个合适的过期时间 (Expiration)。为了安全起见,建议不要选择 "No expiration"。
8. **选择范围 (Scopes):** 建议优先使用最小权限。读取公开星标仓库通常使用 `read:user``public_repo` 即可;只有在确实需要访问私有仓库相关数据时,才考虑使用更宽泛的 `repo` 权限。
9. **生成令牌:** 点击页面底部的 "Generate token" 按钮。
10. **复制令牌:** **重要!** GitHub 只会显示一次完整的令牌。请立即点击复制按钮将其复制下来,并妥善保管。**离开此页面后将无法再次看到完整的令牌。**
11. **在插件中使用:** 将复制的令牌粘贴到 Obsidian 中 "GitHub Stars Manager" 插件设置选项卡里的 "GitHub 个人访问令牌 (PAT)" 字段中。
## 使用说明
1. 安装并启用插件后,在左侧面板会出现一个 GitHub 星标图标
2. 点击图标打开星标仓库视图
3. 首次使用需要在设置中配置您的 GitHub PAT
4. 点击"同步"按钮获取您的星标仓库
5. 您可以为每个仓库添加个人笔记、标签,或关联到现有的 Obsidian 笔记
📖 **[查看详细使用指南](USAGE_GUIDE.md)** | [English Guide](USAGE_GUIDE_EN.md)
### 主题切换
插件提供两种视觉主题:
- **默认主题**:简洁的卡片布局,与 Obsidian 原生主题保持一致
- **液态玻璃主题**iOS 风格的毛玻璃效果,具有以下特性:
- 🌈 彩色渐变背景,提供更好的视觉对比度
- ✨ 动态浮动动画背景效果
- 🔍 增强的毛玻璃模糊效果
- 💫 卡片悬停时的光泽扫过动画
- 📱 瀑布流布局,类似小红书的卡片展示
- 🎯 优化的字体渲染,避免悬停时的模糊问题
在插件界面顶部可以通过主题按钮快速切换。
## 安装
### 从 Obsidian 社区插件安装(推荐)
1. 打开 Obsidian 设置
2. 转到"社区插件"选项卡
3. 搜索 "GitHub Stars Manager"
4. 点击安装并启用插件
### 手动安装
1. 下载最新版本的 `main.js`、`manifest.json` 和 `styles.css`
2. 将这些文件复制到您的保险库文件夹:`VaultFolder/.obsidian/plugins/github-stars-manager/`
3. 重启 Obsidian
4. 在设置中启用插件
## 开发
### 环境要求
- Node.js 16+
- npm 或 yarn
### 开发命令
```bash
# 安装依赖
npm install
# 开发模式(监听文件变化)
npm run dev
# 生产构建
npm run build
# 版本升级
npm run version
```
### 技术栈
- **TypeScript**: 类型安全的 JavaScript 超集
- **Obsidian API**: 插件开发框架
- **GitHub REST API**: 通过 @octokit/rest 访问 GitHub 数据
- **CSS3**: 现代样式和动画效果
- **esbuild**: 快速的 JavaScript 打包工具
### 本地开发环境配置
为了在本地开发和调试插件,您需要配置一个环境变量,指向您的 Obsidian 插件目录。这样,当您运行 `npm run dev``npm run build` 时,插件文件会自动部署到您的 Obsidian Vault 中。
1. **创建 `.env` 文件**: 复制项目根目录下的 `.env.example` 文件,并将其重命名为 `.env`
2. **配置插件目录**: 打开 `.env` 文件,将 `OBSIDIAN_PLUGIN_DIR` 的值修改为您本地的 Obsidian 插件目录的绝对路径。例如:
```
OBSIDIAN_PLUGIN_DIR="D:/MyObsidianVault/.obsidian/plugins"
```
3. **重启开发服务器**: 如果您正在运行 `npm run dev`,请重新启动它以加载新的环境变量。
### 项目结构
```
├── src/
│ ├── main.ts # 主插件类
│ ├── view.ts # 星标仓库视图
│ ├── settings.ts # 插件设置
│ ├── modal.ts # 编辑对话框
│ ├── githubService.ts # GitHub API 服务
│ └── types.ts # TypeScript 类型定义
├── main.ts # 插件入口点
├── manifest.json # 插件清单
├── styles.css # 样式文件
└── README.md # 说明文档
```
## 更新日志
### v0.1.3 (当前版本)
- 📝 将根目录 README 调整为英文优先,便于 Obsidian Community 审核识别,同时保留中文 README 到 `README_zh.md`
- 🔒 补充保险库文件枚举、保险库写入、剪贴板写入的运行时能力说明
- 🔧 移除直接触发源码审核警告的 `eslint-plugin-import``lint-staged` 开发依赖
### v0.1.2
- 🛡️ 将最低 Obsidian 版本声明更新为 1.7.2,匹配当前使用的官方 API 要求
- 🔒 补充安全与隐私说明,明确运行时访问的 GitHub 服务和本地数据存储方式
- 🔑 将 GitHub 令牌说明调整为最小权限优先,推荐 `read:user``public_repo`
- 📦 优化 Release 工作流,仅发布 Obsidian 支持的插件文件并生成构建来源证明
- 🔧 移除构建脚本中的 `builtin-modules``dotenv` 依赖,降低审核警告
### v0.1.1
- 🏷️ 新增 Tag Chips 输入组件,支持快速选择标签
- ⭐ 添加星标总数显示功能
- 🎨 增强笔记卡片可见性和 UI 样式
- 🔧 启用全部 25 个 eslint-plugin-obsidianmd 规则
- 🐛 修复 token 错误处理和提示信息
- 🛡️ 补充安全与隐私说明,便于 Obsidian Community 审核识别网络与数据行为
- 🤖 配置 pre-commit hook 和 GitHub Actions CI/CD
### v0.1.0
- ✨ 初始版本发布
- 🎯 多账号 GitHub Stars 管理
- 🎨 液态玻璃主题支持
- 📱 响应式瀑布流布局
- 🔍 高级搜索和筛选功能
- 🏷️ 自定义标签和笔记功能
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 支持
如果您觉得这个插件对您有帮助,可以考虑:
- ⭐ 给项目点个星标
- 🐛 报告 Bug 或提出改进建议
- 💡 分享给其他 Obsidian 用户
- 💖 [赞助开发者](https://github.com/sponsors/EmberSparks)
## 相关链接
- [Obsidian 官网](https://obsidian.md)
- [GitHub API 文档](https://docs.github.com/en/rest)
- [插件开发文档](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)

View file

@ -1,9 +1,8 @@
import tseslint from "typescript-eslint";
import tsparser from "@typescript-eslint/parser";
import obsidianmd from "eslint-plugin-obsidianmd";
import sdl from "@microsoft/eslint-plugin-sdl";
import importPlugin from "eslint-plugin-import";
import globals from "globals";
import tseslint from "typescript-eslint";
import tsparser from "@typescript-eslint/parser";
import obsidianmd from "eslint-plugin-obsidianmd";
import sdl from "@microsoft/eslint-plugin-sdl";
import globals from "globals";
export default [
// 忽略不需要检查的文件
@ -22,10 +21,9 @@ export default [
{
files: ["src/**/*.ts"],
plugins: {
"@typescript-eslint": tseslint.plugin,
"@microsoft/sdl": sdl,
"import": importPlugin,
obsidianmd: obsidianmd
"@typescript-eslint": tseslint.plugin,
"@microsoft/sdl": sdl,
obsidianmd: obsidianmd
},
languageOptions: {
parser: tsparser,
@ -113,10 +111,7 @@ export default [
"@microsoft/sdl/no-document-write": "error",
"@microsoft/sdl/no-inner-html": "error",
// Import 插件规则
"import/no-extraneous-dependencies": "error",
// Obsidian 插件专用规则(完整的 23 个推荐规则)
// Obsidian 插件专用规则(完整的 23 个推荐规则)
"obsidianmd/commands/no-command-in-command-id": "error",
"obsidianmd/commands/no-command-in-command-name": "error",
"obsidianmd/commands/no-default-hotkeys": "error",

View file

@ -1,7 +1,7 @@
{
"id": "github-stars-manager",
"name": "GitHub Stars Manager",
"version": "0.1.2",
"version": "0.1.3",
"minAppVersion": "1.7.2",
"description": "Manage your GitHub starred repositories.",
"author": "EmberSparks",

732
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "github-stars-manager",
"version": "0.1.2",
"version": "0.1.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "github-stars-manager",
"version": "0.1.2",
"version": "0.1.3",
"license": "MIT",
"dependencies": {
"@octokit/rest": "^22.0.0",
@ -19,11 +19,9 @@
"@typescript-eslint/parser": "^8.0.0",
"esbuild": "^0.19.0",
"eslint": "^9.39.1",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-obsidianmd": "^0.1.9",
"globals": "^16.5.0",
"husky": "^9.0.0",
"lint-staged": "^15.0.0",
"obsidian": "latest",
"tslib": "^2.6.0",
"typescript": "^5.0.0"
@ -1197,22 +1195,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ansi-escapes": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz",
"integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==",
"dev": true,
"license": "MIT",
"dependencies": {
"environment": "^1.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
@ -1441,19 +1423,6 @@
"balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/call-bind": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
@ -1530,39 +1499,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/cli-cursor": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
"integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
"dev": true,
"license": "MIT",
"dependencies": {
"restore-cursor": "^5.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cli-truncate": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
"integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
"dev": true,
"license": "MIT",
"dependencies": {
"slice-ansi": "^5.0.0",
"string-width": "^7.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
@ -1581,23 +1517,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true,
"license": "MIT"
},
"node_modules/commander": {
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
"integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
@ -1772,13 +1691,6 @@
"node": ">= 0.4"
}
},
"node_modules/emoji-regex": {
"version": "10.6.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
"dev": true,
"license": "MIT"
},
"node_modules/empathic": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
@ -1803,19 +1715,6 @@
"node": ">=10.13.0"
}
},
"node_modules/environment": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
"integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/es-abstract": {
"version": "1.24.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
@ -2698,37 +2597,6 @@
"node": ">=0.10.0"
}
},
"node_modules/eventemitter3": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"dev": true,
"license": "MIT"
},
"node_modules/execa": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
"human-signals": "^5.0.0",
"is-stream": "^3.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^5.1.0",
"onetime": "^6.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^3.0.0"
},
"engines": {
"node": ">=16.17"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/fast-content-type-parse": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
@ -2794,19 +2662,6 @@
"node": ">=16.0.0"
}
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
@ -2911,19 +2766,6 @@
"node": ">= 0.4"
}
},
"node_modules/get-east-asian-width": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
"integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@ -2963,19 +2805,6 @@
"node": ">= 0.4"
}
},
"node_modules/get-stream": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-symbol-description": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
@ -3169,16 +2998,6 @@
"node": ">= 0.4"
}
},
"node_modules/human-signals": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=16.17.0"
}
},
"node_modules/husky": {
"version": "9.1.7",
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
@ -3405,19 +3224,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
"integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-generator-function": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
@ -3476,16 +3282,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-object": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
@ -3551,19 +3347,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-string": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
@ -3837,78 +3620,6 @@
"node": ">= 0.8.0"
}
},
"node_modules/lilconfig": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/antonk52"
}
},
"node_modules/lint-staged": {
"version": "15.5.2",
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz",
"integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^5.4.1",
"commander": "^13.1.0",
"debug": "^4.4.0",
"execa": "^8.0.1",
"lilconfig": "^3.1.3",
"listr2": "^8.2.5",
"micromatch": "^4.0.8",
"pidtree": "^0.6.0",
"string-argv": "^0.3.2",
"yaml": "^2.7.0"
},
"bin": {
"lint-staged": "bin/lint-staged.js"
},
"engines": {
"node": ">=18.12.0"
},
"funding": {
"url": "https://opencollective.com/lint-staged"
}
},
"node_modules/lint-staged/node_modules/chalk": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/listr2": {
"version": "8.3.3",
"resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz",
"integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"cli-truncate": "^4.0.0",
"colorette": "^2.0.20",
"eventemitter3": "^5.0.1",
"log-update": "^6.1.0",
"rfdc": "^1.4.1",
"wrap-ansi": "^9.0.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
@ -3930,101 +3641,6 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
"node_modules/log-update": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
"integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-escapes": "^7.0.0",
"cli-cursor": "^5.0.0",
"slice-ansi": "^7.1.0",
"strip-ansi": "^7.1.0",
"wrap-ansi": "^9.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-update/node_modules/ansi-regex": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/log-update/node_modules/ansi-styles": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/log-update/node_modules/is-fullwidth-code-point": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
"integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-east-asian-width": "^1.3.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-update/node_modules/slice-ansi": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
"integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
"is-fullwidth-code-point": "^5.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
"node_modules/log-update/node_modules/strip-ansi": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@ -4048,53 +3664,6 @@
"node": ">= 0.4"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true,
"license": "MIT"
},
"node_modules/micromatch": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/mimic-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/mimic-function": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
"integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
@ -4149,35 +3718,6 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
"node_modules/npm-run-path": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm-run-path/node_modules/path-key": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@ -4315,22 +3855,6 @@
"@codemirror/view": "^6.0.0"
}
},
"node_modules/onetime": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"mimic-fn": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz",
@ -4434,32 +3958,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pidtree": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
"integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
"dev": true,
"license": "MIT",
"bin": {
"pidtree": "bin/pidtree.js"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
@ -4613,39 +4111,6 @@
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
"node_modules/restore-cursor": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
"integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
"dev": true,
"license": "MIT",
"dependencies": {
"onetime": "^7.0.0",
"signal-exit": "^4.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/restore-cursor/node_modules/onetime": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
"integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"mimic-function": "^5.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
@ -4656,13 +4121,6 @@
"node": ">=0.12"
}
},
"node_modules/rfdc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
"dev": true,
"license": "MIT"
},
"node_modules/safe-array-concat": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
@ -4907,49 +4365,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/slice-ansi": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
"integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.0.0",
"is-fullwidth-code-point": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
"node_modules/slice-ansi/node_modules/ansi-styles": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/stop-iteration-iterator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
@ -4964,63 +4379,6 @@
"node": ">= 0.4"
}
},
"node_modules/string-argv": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
"integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.6.19"
}
},
"node_modules/string-width": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"emoji-regex": "^10.3.0",
"get-east-asian-width": "^1.0.0",
"strip-ansi": "^7.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/string.prototype.matchall": {
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
@ -5129,19 +4487,6 @@
"node": ">=4"
}
},
"node_modules/strip-final-newline": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@ -5266,19 +4611,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/toml-eslint-parser": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/toml-eslint-parser/-/toml-eslint-parser-0.9.3.tgz",
@ -5792,66 +5124,6 @@
"node": ">=0.10.0"
}
},
"node_modules/wrap-ansi": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
"integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
"string-width": "^7.0.0",
"strip-ansi": "^7.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/yaml": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",

View file

@ -1,6 +1,6 @@
{
"name": "github-stars-manager",
"version": "0.1.2",
"version": "0.1.3",
"description": "Obsidian plugin for managing and viewing your GitHub starred repositories with multi-account support and custom themes",
"main": "main.js",
"scripts": {
@ -27,11 +27,9 @@
"@typescript-eslint/parser": "^8.0.0",
"esbuild": "^0.19.0",
"eslint": "^9.39.1",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-obsidianmd": "^0.1.9",
"globals": "^16.5.0",
"husky": "^9.0.0",
"lint-staged": "^15.0.0",
"obsidian": "latest",
"tslib": "^2.6.0",
"typescript": "^5.0.0"
@ -39,10 +37,5 @@
"dependencies": {
"@octokit/rest": "^22.0.0",
"dexie": "^4.3.0"
},
"lint-staged": {
"src/**/*.ts": [
"eslint --fix"
]
}
}

View file

@ -1,5 +1,6 @@
{
"0.1.0": "1.0.0",
"0.1.1": "1.7.2",
"0.1.2": "1.7.2"
"0.1.2": "1.7.2",
"0.1.3": "1.7.2"
}