Repository navigation
Releases: dizziedbliss/SkillIssues
Release list
SkillIssues v1.6.0
Changed
- A new app icon, for the window, the installer and the Windows setup: the wordmark's "i" turned into a bang on a solid tile.
Download the file for your system below: SkillIssues-Installer.exe for Windows (or SkillIssues-Setup-*.exe, the full offline installer), *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
The Windows files aren't code-signed yet, so Windows may warn that it doesn't recognise them: choose More info → Run anyway.
SkillIssues v1.5.1
Security
- Electron 44.9.3, with the fixes for the advisories against 44.3.0.
- Safer issue descriptions: the sanitiser that cleans them (DOMPurify) is updated for two serious bypasses.
Download the file for your system below: SkillIssues-Installer.exe for Windows (or SkillIssues-Setup-*.exe, the full offline installer), *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
The Windows files aren't code-signed yet, so Windows may warn that it doesn't recognise them: choose More info → Run anyway.
SkillIssues v1.5.0
Added
- A new installer for Windows. One clean window with the SkillIssues look: agree to the terms, press Install, and watch it download (with its size and speed) and install. Cancelling asks first. Run it again when SkillIssues is installed to Update, Repair or Remove it. It downloads the newest version from GitHub and checks it against the release's checksum before running anything. The full offline installer is still on the releases page.
Changed
- A calmer, clearer app. Lines and chips are quiet now, and red is kept for what matters: the main button, where you are, what you've earned, and section headings. Light mode uses warmer, slightly dimmed paper and softer ink, easier on the eyes over a long session.
- Your profile, rebuilt. Your level sits large at the top with its bar, your merges, languages and streak beside it. Next up leads with what you're doing (pull requests in review with where they stand, issues you've claimed, your learning path), then the quests you're closest to finishing. Your pull requests are one list, each once, with the XP it earned. Hover a badge to see how you earned it.
- Your contributions show your numbers, your year, every pull request with All, Merged and Open, where your XP came from, and every quest.
- Finding issues is quicker. One search bar everywhere, with Filters beside it; filters are a row of pills that say what they mean when you open them; the levels and your languages sit in one row you can clear. Search (
/) opens as a palette with results as you type. - Tidier everywhere else: issue pages show six labels before "+ more", the learning path is a list you can start with one click, Settings is a row per setting with a shorter language list, themes appear as miniatures of themselves, and the menu holds what's about you while the top bar holds where you work.
Download the file for your system below: SkillIssues-Installer.exe for Windows (or SkillIssues-Setup-*.exe, the full offline installer), *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
The Windows files aren't code-signed yet, so Windows may warn that it doesn't recognise them: choose More info → Run anyway.
SkillIssues v1.3.0
Easier on the eyes. The Default and Midnight themes moved from pure white and pure black to warm paper and ink, with softer lines. The red is still fully saturated, now set for each mode so text on it and in it is easy to read: every pairing passes WCAG AA. Your own themes are unchanged; ones built on Default or Midnight pick up the new colours for anything they don't set.
The installer shows the wordmark alone. The mark stays the app's icon, nothing more.
Download the file for your system below: SkillIssues-Setup-*.exe for Windows, *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
SkillIssues v1.2.1
When your fork is deleted on GitHub, the app now says so, and Fork again makes a new one and points your folder at it. Your commits stay, ready to push.
Pull requests show where they stand on GitHub: open, merged, or closed. A closed one offers Open a new pull request, and Working on shows each state.
A new look for the Windows installer: dark, like the app, with the SkillIssues mark.
Download the file for your system below: SkillIssues-Setup-*.exe for Windows, *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
SkillIssues v1.2.0
Updates ask first. When a new version is out, the title bar says Update available. Open it to read what's new, then download it when you choose. Nothing downloads or restarts on its own; after the download you restart into it, or it installs when you close the app. And after an update, the app shows you what changed.
A proper installer on Windows. It now opens with what SkillIssues does, shows the license and terms, and lets you choose where to install it, for just you or everyone on the computer.
Working on. A new page in the menu lists every issue you've started in the app and what's next for each. Commit, push and the pull request are now separate steps:
- Commit takes a title and, if you like, a description.
- Push sends only your commits, never uncommitted changes.
- Pull request is yours to write. Tick Close #number when it's merged if your change fixes the issue.
For you. Explore's default list now picks issues that suit you (your languages, your level, what you've merged before), look likely to get merged, and have waited. Each card says why it's there.
Fixes
- Copying the sign-in code works, and says so.
- Connecting GitHub for pushing no longer says you're signed in as "nobody".
- Open in VS Code finds the folder on Windows.
- Giving up a path, releasing a claim and deleting a theme ask first.
- Explore keeps its filters and page when you open an issue and come back.
- Issue descriptions show attached images and colour their code.
- The app is smaller to download.
Download the file for your system below: SkillIssues-Setup-*.exe for Windows, *.dmg for macOS (Apple silicon), *.AppImage for Linux. Or get the newest from https://skillissues.dizziedbliss.lol/download.
SkillIssues v1.1.1
SkillIssues v1.1.1 Release
SkillIssues — the intelligent developer issue matching and desktop contribution engine.
Highlights
- Desktop App Suite: Native workspace creation, automated branch handling, live Git progress tracker, and VS Code 1-click launcher.
- Web-to-Desktop Deep Linking: Browse issues on the web and immediately start solving them inside the desktop client via
skillissues://. - Continuously Growing Catalog: Real open-source issues from eligible repositories, crawled continuously, with difficulty ratings and author metadata.
- Sandboxed Git Operations: Workspace isolation and subprocess safeguards around every fork/clone/branch/push.
Download Desktop Client
Download the installer for your operating system below!
SkillIssues v1.1.0
SkillIssues v1.1.0 Release
SkillIssues — the intelligent developer issue matching and desktop contribution engine.
Highlights
- Desktop App Suite: Native workspace creation, automated branch handling, live Git progress tracker, and VS Code 1-click launcher.
- Web-to-Desktop Deep Linking: Browse issues on the web and immediately start solving them inside the desktop client via
skillissues://. - Continuously Growing Catalog: Real open-source issues from eligible repositories, crawled continuously, with difficulty ratings and author metadata.
- Sandboxed Git Operations: Workspace isolation and subprocess safeguards around every fork/clone/branch/push.
Download Desktop Client
Download the installer for your operating system below!
SkillIssues v1.0.0 — Production Deployment & Unified Client Architecture
SkillIssues — an open-source issue discovery platform and desktop contribution engine. Browse real GitHub issues by difficulty, start working on one from the desktop app with one click (fork, clone, branch — all automatic), and track your contribution through to a merged PR.
Download the desktop client
- Windows:
SkillIssues.Setup.1.0.0.exe - macOS (Apple Silicon):
SkillIssues-1.0.0-arm64.dmg - Linux:
SkillIssues-1.0.0.AppImage
🚀 Production Deployment & Unified Client Architecture
1.0.0 is the release where SkillIssues actually went live, and where the web and desktop
clients stopped drifting apart. The app now runs on a real VPS behind CI-gated deploys, and
both clients share one typed API layer and one set of UI components instead of reimplementing
the product twice.
Added
Production deployment (first real deploy of this project)
- CI/CD pipeline:
.github/workflows/ci.ymlgates every push — backend (vet,gofmt,
build, test), web/desktop (typecheck and a real production build, not just a type check),
and abuildxbuild of all five Docker targets plusdocker compose configon both compose
files..github/workflows/deploy.ymlbuilds and pushes
ghcr.io/dizziedbliss/skillissues-{api,ingestd,migrate,web}on every push tomain, gated on
CI passing, then deploys to the VPS over SSH. Rollback is aworkflow_dispatchwith an older
immutablesha-tag. - One root
Dockerfilewith named targets (api,ingestd,migrate,web,
repoimport) built from the repo root, replacing four scattered Dockerfiles, so theweb
target can actually see the sharedpackages/*it imports. New root.dockerignorekeeps
the build context to tens of MB instead of shipping the multi-GB dataset. compose.prod.yaml: a from-scratch production compose file — Caddy as the only
internet-facing service (automatic TLS, same-origin/api/*routing so there's no CORS and
no cross-site cookie problem), Postgres/Redis sized for the 4GB/2vCPU VPS, explicit memory and
CPU limits and log rotation on every service,DB_MAX_CONNSmade configurable.- Disk guardrails:
ingest.max_pages_per_repocaps how deep the crawler paginates into any
one repository;ingest.max_db_size_mbpauses enqueuing/claiming once the database crosses a
configured size. Both live settings, both surfaced onGET /health/detailalongside current
DB size, so the ceiling is visible before it's hit. - Automated backups: a systemd timer running daily
pg_dumpwith 14-day retention on the
host. - The production repository catalog was populated for the first time: 287,998 eligible
repositories imported from the Kaggle metadata snapshot;ingestdhas been crawling live
since.
Shared client architecture
packages/api-client: one typed client for every API endpoint, used by both clients —
Issue/Contribution/Profiletypes,ApiErrorthat keepsstatusanddetailso a 401
is never confused with a 429 or a network failure,AbortController/cancellation support,
pluggable transport (fetchTransportfor web, an IPC-routed transport for desktop), and the
recommendations ETag/stale-cache fallback that used to be duplicated and drifting in both
clients.packages/ui: shared React components —Modal(body scroll lock, Escape-to-close,
focus trap, backdrop click — none of which either client had before),ConfirmDialog,
Toast,IssueCard/IssueList,WorkingList/SubmissionList,DifficultyTabs,
SectionTabs,Badge,ProgressBar,Skeleton.- Desktop renderer rewritten in React + TypeScript, replacing 1,780 lines of plain-JS
innerHTMLrebuilds. The old renderer blanked and refetched up to six endpoints from fifteen
call sites on nearly every interaction (including a single bookmark click) — the rewrite
moves to per-resource state with per-resource refetch, request sequencing so a fast
filter→page→search sequence can't let a stale response win, and real React reconciliation, so
scroll position now survives a list update. - Web's
App.tsxrebuilt onto the same shared packages, cut from 1,691 to roughly 1,100
lines of routing and web-specific glue — its hand-rolled issue card, login form, working/
submission lists, and detail modal are now the sharedpackages/uicomponents. - npm workspaces at the repo root (
web,desktop,packages/*) so@skillissues/*resolves
as a realnode_modulessymlink, with one lockfile for the whole tree.
Issue lifecycle
- Closed-issue detection, on demand only (no background sweep): the existing fork/clone
freshness check and a new GitHubissueswebhook handler persist a closed/reopened state
using GitHub's ownupdatedAt. A new batchedPOST /issues/freshnesslets a client check
only the handful of issues it's actually displaying. - Sticky saved issues carry their lifecycle (
none/working/submitted/merged) as a
badge; saved issues never disappear regardless of issue or contribution state. - Re-solve: starting a fresh attempt on an already-submitted or already-merged issue works
end to end in both clients, backed by the existing idempotent fork and partial-unique-index
contribution model. - Real
submitted_at, separate from the fork/start time (created_at) both clients were
previously mislabeling as the submission time. - A "View issue" action was added to working/submission cards on both clients (desktop's
working cards were missing it entirely).
Changed
- OAuth is now the only supported login path in both clients' UI; the legacy PAT-login
endpoint stays registered server-side but is disabled by default behind a live setting. FRONTEND_URLis parsed once as a proper multi-value list instead of being treated as a
single string everywhere, fixing cookieSecuredetection, the OAuth redirect target, and the
CORSAccess-Control-Allow-Originheader.- Issue-body "not ready yet" responses now carry a structured
{"status":"queued","reason":...}
instead of an ambiguous error shape, and the web client retries with real exponential backoff. - A failed
/saved,/working, or/contributionsfetch now keeps the previously loaded list
and shows a retry affordance instead of silently rendering empty — this previously made
real data look like it had disappeared whenever the client hit the unauthenticated rate limit. GET /recommendationsnow acceptsdifficulty/page/limitfilters through the shared
client, matching what the backend already supported.
Removed
- The co-contribution commit-trailer feature (
GET /github/co-contribution-trailerand both
clients' UI for it) — removed per product decision, not a regression. - The PAT login form from both clients' UI.
database/migrations/anddatabase/schema.sqlas a second, never-applied, out-of-sync
schema source — the embedded goose migrations underbackend/internal/migrate/migrations/
are the only schema source now.- The stale
k8s/manifests, which referenced images nothing built and committed a plaintext
database password.
Fixed
- The web production Docker image's
HEALTHCHECKalways failed: it resolvedlocalhostto
::1while nginx only listens on IPv4, so the check failed even while the container correctly
served real traffic. - CI never installed the shared
packages/markdownmodule's own dependencies, so every build
that exercised it was silently relying on a dev machine's leftovernode_modules. - The deploy workflow could run and attempt an SSH deploy even when its own CI job had failed,
caught only by an unrelated empty-tag guard; the condition now requires either an actual CI
success or an explicit manual rollback dispatch. cmd/ingestdlogging a prefix and length of the GitHub token at startup — removed outright;
credentials are never logged, not even partially.- A swallowed
QueryRowerror inGET /health/detailand a discardedUPDATEerror in
submitContribution, both now surfaced. - Account deletion (
authPurge) previously discarded its own delete errors and always reported
success; it now wraps the deletes in a transaction and returns the real error on failure.