Architecture

Components

Component Binary Role

Library (issuesbrowser)

Paths, SQLite schema, forge SDL profiles, sync engine, monitor store, IPC helpers

CLI

issues-browser

Sync/list/monitor + ProHelp intercept (help.sdl)

GUI

issues-browser-gui

DlangUI offline browser

Daemon

issuesd

Poll monitored repos; localhost HTTP JSON IPC (127.0.0.1:17365)

Tray

issues-browser-tray

Win32 tray client for the daemon (Qt wrapper planned for settings)

Storage

Central root (not inside each project clone):

<archive-root>/index/index.sqlite                 # lightweight cross-repo index (default)
<archive-root>/archives/<host>/<owner>/<repo>/database.sqlite  # opt-in full backup
<archive-root>/archives/<host>/<owner>/<repo>/contents/   # reserved
<archive-root>/monitor.sdl                        # backup=true|false per repo
<archive-root>/pending-open.json                  # open-repo IPC/GUI handoff

Legacy paths (<repo>/.issues/database.sqlite and parent/.issues/<name>.sqlite) migrate on backup sync. Existing archive DBs are treated as backup=true on upgrade.

Schema highlights

  • issues with is_pr, updated_at

  • pull_requests + issue_pr_links

  • discussions / discussion_comments

  • sync_meta watermarks: issues_updated_at, prs_updated_at, discussions_cursor

Forge profiles (SDL)

profiles/forge-profiles.sdl declares matchers, CLI tool, list commands, GraphQL flag, and rate limits. Shared schema also lands in dlang-supplemental/repo-get (getForge).

  • AMDphreak/ver — no CI/releases; multi-VCS UX mostly stubs — not a dependency

  • dev-centr/rules-manager — IPC pattern reused; Electron tray not adopted; no published releases

  • dlang-supplemental/dqt (git dep, pinned commit) — QSystemTrayIcon for the tray app; upstream PR pending on tim-dlang/dqt

  • repo-get (DUB ~>0.3.0) — forge profile schema (getForge / forge-profiles.sdl)

  • repo-get — Linux release artifacts only; forge profiles added for metadata tooling