ming103 downloadsSync GitCode issues, classifications, and daily reports into Obsidian.
IssueTracker is a local Obsidian plugin workspace for syncing issues from Git-compatible hosts into your vault.
The current implementation is verified against GitCode and GitLab-style issue APIs, including GitLab API v4 and GitCode API v5. It also includes compatibility paths for GitHub and Gitee host layouts, but those paths have not been fully tested yet. If you hit a bug on any host, please open an issue.
IR / SR reference or a default workflow marker (【fix】, 【bug】, 【门禁测试】, 门禁测试, 【release】, 【next】, 【需求】), even when the account is not yet in the confirmed directory. Historical closed Issues do not receive first-time ledger rows, but their internal evidence identifies later Issues from the same account.bug, requirement, or unknown using configurable prefix, keyword, and label rules.GitCode Issues/issues/*.mdGitCode Issues/meta/internal-members.jsonGitCode Issues/meta/issue-closure-state.jsonGitCode Issues/meta/issue-ledger-state.jsonGitCode Issues/meta/issue-notification-state.jsonGitCode Issues/meta/sync-state.jsonGitCode Issues/reports/issue-ledger.xlsxGitCode Issues/reports/internal-member-identity-review.mdGitCode Issues/reports/issue-close-reminders.mdGitCode Issues/reports/daily/YYYY-MM-DD.mdGitCode Issues/reports/daily-brief/YYYY-MM-DD-brief.mdThe default output layout still uses GitCode Issues for backward compatibility, but you can change it in settings if you want a host-specific folder name.
For the release ZIP, extract the issuetracker folder into your vault's .obsidian/plugins/ directory, then enable IssueTracker in Obsidian. The ZIP deliberately does not include data.json; configure your own token and settings in the plugin settings page.
For source-workspace builds:
npm install once if dependencies are not installed yet.npm run build..obsidian/plugins/issuetracker/:manifest.jsonmain.jsstyles.cssversions.jsonIssueTracker in Obsidian.Open the IssueTracker settings tab and configure:
Git Host URL: historical field name in code, used as the base URL for the configured host; defaults to https://gitcode.comAPI Base URL: defaults to https://gitcode.com/api/v5; override it to match the configured host's API rootPersonal Access Token: token used for API requests against the configured hostOrganization Name: the organization, group, or owner that owns the repositoriesRepository List: one repository per line when you do not sync the whole organization or groupSync all organization repositories: automatically discover repositories under the configured organization or groupInternal User Whitelist: fallback usernames to treat as internal even if collaborator sync is incompleteInternal Member Directory: authoritative JSON account-to-name mapping used by ledgers, daily reports, and roster-gap review; listed accounts are confirmed internalIssue Ledger Start Month: optional YYYY-MM cutoff. Only issues created in that month or later enter the ledger; changing it resets ledger serial allocationClassification Rules: JSON rules for mapping titles or labels into bug / requirementIssues Folder, Meta Folder, Reports Folder: output locations inside the vaultGenerate daily reports: write daily summaries and AI briefs after syncShow local notifications for new Issues?: show an Obsidian notice for newly discovered internal and external Issues; each Issue is labelled with its author type; enabled by defaultFeishu Bot Webhook: optional Feishu group-bot URL. The plugin posts newly discovered internal and external Issues directly from Obsidian, with the author type on every item; successful delivery is recorded per Issue and pending deliveries retry after later successful syncs. Leave empty for local notices onlyThe settings page still keeps a legacy API-scope compatibility section from the original importer code path. The primary workflow in this fork is the repository sync path described above.
IssueTracker icon to trigger a sync.Sync IssueTracker.Refresh issues on startup is enabled, the plugin waits 30 seconds after launch before the first automatic sync.Issue notes are generated artifacts. The current sync flow rewrites normalized issue files and derived reports, so manual edits inside generated notes should be treated as disposable unless you change the output process.
Each normalized issue note includes frontmatter such as:
createdAtupdatedAtprojectPathsourceRepoauthorUsernameisInternalAuthorrequestKindrequestKindMatchedBylabelsTABLE requestKind, isInternalAuthor, authorUsername, sourceRepo
FROM "GitCode Issues/issues"
SORT createdAt DESC
API details vary by host. Consult the official REST API documentation for the provider you are configuring:
The plugin code is released under the MIT license. See LICENSE.txt.
This workspace is adapted from the upstream obsidian-gitlab-issues plugin and reoriented around a multi-host issue workflow.
IssueTracker 是一个本地 Obsidian 插件工作区,用来把 Git 代码托管平台上的 issue 同步到你的知识库。
当前实现已经验证了 GitCode 和 GitLab 风格的 issue API,包括 GitLab API v4 和 GitCode API v5。同时也补了 GitHub 和 Gitee 的兼容路径,但这两条路径还没有完整测过;如果你遇到 bug,可以直接提 issue。
IR / SR 内部编号,或默认内部工作标记 【fix】、【bug】、【门禁测试】、门禁测试、【release】、【next】、【需求】 时,即使作者账号尚未进入成员目录,也按内部人员处理。历史关闭 Issue 不会首次写入台账,但其内部证据会用于识别同一账号后续的 Issue。bug、requirement 或 unknown。GitCode Issues/issues/*.mdGitCode Issues/meta/internal-members.jsonGitCode Issues/meta/issue-closure-state.jsonGitCode Issues/meta/issue-ledger-state.jsonGitCode Issues/meta/issue-notification-state.jsonGitCode Issues/meta/sync-state.jsonGitCode Issues/reports/issue-ledger.xlsxGitCode Issues/reports/internal-member-identity-review.mdGitCode Issues/reports/issue-close-reminders.mdGitCode Issues/reports/daily/YYYY-MM-DD.mdGitCode Issues/reports/daily-brief/YYYY-MM-DD-brief.md默认输出结构仍然沿用 GitCode Issues 作为兼容默认值,但你可以在设置里改成适合当前主机的目录名。
使用发布 ZIP 时,将其中的 issuetracker 文件夹解压到你的 vault 的 .obsidian/plugins/ 目录,然后在 Obsidian 中启用 IssueTracker。ZIP 不会包含 data.json,请在插件设置页填写你自己的 token 和同步配置。
从源码工作区构建时:
npm install。npm run build 构建插件。.obsidian/plugins/issuetracker/:manifest.jsonmain.jsstyles.cssversions.jsonIssueTracker。打开 IssueTracker 的设置页,配置以下内容:
Git Host URL:代码里沿用的历史字段名,本质上表示当前主机地址;默认是 https://gitcode.comAPI Base URL:默认是 https://gitcode.com/api/v5;需要时可按当前主机的 API 根路径覆盖Personal Access Token:用于当前主机 API 请求的 tokenOrganization Name:拥有目标仓库的组织、group 或 ownerRepository List:当你不想同步整个组织或 group 时,每行填写一个仓库Sync all organization repositories:自动发现并同步该组织或 group 下的所有仓库Internal User Whitelist:当协作者同步不完整时,仍要视为内部成员的用户名白名单Internal Member Directory:账号到姓名的权威 JSON 映射,用于台账、日报和名单待补全报告;目录中的账号均视为已确认内部人员Issue Ledger Start Month:可选 YYYY-MM 截止月份,只会将该月及之后创建的 issue 写入台账;修改该值会重建台账序号Classification Rules:把标题或标签映射到 bug / requirement 的 JSON 规则Issues Folder、Meta Folder、Reports Folder:vault 内的输出目录Generate daily reports:同步完成后生成日报和 AI 摘要新增 Issue 时本机提醒?:默认开启;对新增的内部和外部 Issue 显示 Obsidian 提示,并标明类型飞书群机器人 Webhook:可选的飞书群机器人地址。插件会从 Obsidian 直接发送本次新增的内部和外部 Issue,并在每条中标明类型;每条成功投递都会记录,未成功投递会在后续成功同步时重试;留空则只保留本机提示设置页里仍保留了原始导入器路径中的旧 API scope 兼容区块。这个分支当前的主要工作流是上面这套仓库同步模型。
IssueTracker 图标触发同步。Sync IssueTracker。Refresh issues on startup,插件会在 Obsidian 启动 30 秒后执行第一次自动同步。issue 笔记属于生成产物。当前同步流程会重写规范化的 issue 文件和派生报表,所以除非你同时修改输出流程,否则对生成笔记的手工编辑都应视为可丢弃内容。
每条规范化 issue 笔记都会包含类似下面这些 frontmatter:
createdAtupdatedAtprojectPathsourceRepoauthorUsernameisInternalAuthorrequestKindrequestKindMatchedBylabelsTABLE requestKind, isInternalAuthor, authorUsername, sourceRepo
FROM "GitCode Issues/issues"
SORT createdAt DESC
不同主机的 API 细节不一样,请查看你配置的平台官方 REST API 文档:
插件代码基于 MIT 协议发布。见 LICENSE.txt。
本工作区是在上游 obsidian-gitlab-issues 插件基础上改造的,并重新聚焦到多主机 issue 工作流。