Skip to content
buning-softwarePublic

About

A native WinUI 3 app that connects GitHub boards to isolated Git worktrees with embedded Claude Code CLI sessions for context-driven AI development.

Topics

Resources

Code of conduct

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Contributors Forks Stargazers Issues GNU Affero General Public License v3.0 License

Kontext logo

Kontext

Mission control for AI-assisted development on Windows: GitHub issues, isolated git worktrees and embedded Claude Code terminals in one app.
Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Contributing
  4. License

About The Project

Kontext lets you work on all your repositories' issues at once and leave Claude running. Pick an issue and Kontext gives it its own git worktree and an embedded Claude Code terminal, lets you open that worktree in your own tools, and lets you switch between issues instantly. The sidebar shows at a glance which issues are idle, working or waiting for you.

Features

  • Every issue in one list. Open issues from all your repositories, grouped by repository, searchable, with a status circle per issue.
  • One worktree per issue. Selecting an issue clones the repository when needed, creates a features/{number}-{title} branch in its own worktree, and opens an empty Claude Code session there. Nothing is asked of you, and nothing is shared between issues.
  • Know when Claude needs you. Claude Code hooks report whether a session is working or waiting for input; the circle in the sidebar changes accordingly.
  • Resume where you left off. Sessions are remembered per issue and continued with claude --resume after a restart.
  • Open it anywhere. Open a worktree in File Explorer, Windows Terminal or its solution file (.slnx or .sln, in whatever app is registered for it) from the issue's header.
  • Clean up when done. For a closed issue, Clear session removes the worktree and its branch.
  • Modern Architecture: Built with SOLID principles and design patterns for maximum maintainability: a modular monolith with compiler-enforced module boundaries.
  • Native Windows look. WinUI 3 with Mica, light and dark themes, and a terminal with zoom and mouse support.

Built With

Three small shared projects hold what the modules exchange (Kontext.Kernel the basics, Kontext.Domain the data types, Kontext.Contracts the interfaces). Each feature module (GitHub, GitAutomation, TerminalHost, Claude, ExternalTools, Sessions, Presentation) references only those, and only the WinUI project Kontext references them all and wires them together.

Getting Started

Setting up this solution on your local machine is straightforward and will enable you to fully utilize its capabilities. This guide will walk you through the necessary steps to get everything running smoothly.

Before beginning, ensure that your development environment is properly configured. Having the required software and dependencies installed will prevent common issues and streamline the process.

Requirements

  • Windows 10 version 1809 or later (Windows 11 recommended)
  • .NET 10 SDK
  • Git for Windows on your PATH
  • The Claude Code CLI (claude) on your PATH
  • A GitHub account; you sign in with it on first start (GitHub device flow) and Kontext stores the resulting token in Windows Credential Locker

Configuration

Sign-in needs a GitHub OAuth App with Device Flow enabled. For local development, copy src/Kontext/appsettings.local.example.json to src/Kontext/appsettings.local.json (git-ignored) and set GitHub:ClientId to the app's client id (the client id is not a secret). CI writes the repository variable KONTEXT_GITHUB_CLIENT_ID into appsettings.json before building. Organisations that restrict OAuth apps must approve the app before their repositories and issues become available.

Build and run

dotnet build Kontext.slnx -c Release
.\src\Kontext\bin\Release\net10.0-windows10.0.19041.0\win-x64\Kontext.exe

Stop a running instance before building again, because it locks the build output. Kontext keeps its clones, worktrees and state under %LOCALAPPDATA%\Kontext; set KONTEXT_DATA_DIR to use another folder, for example when trying things out.

Test

dotnet test Kontext.slnx -c Release

Warnings are treated as errors. Tests are split by kind, one project per kind and module:

  • Kontext.*.UnitTests are fast and in-memory: no filesystem, processes or network.
  • Kontext.*.IntegrationTests touch the real world: the filesystem, a loopback HTTP server, or real git against a temporary repository.
  • Kontext.ArchitectureTests and Kontext.CompositionTests check the module boundaries and the dependency injection wiring.

To run only the unit tests:

Get-ChildItem tests -Recurse -Filter *.UnitTests.csproj | ForEach-Object { dotnet test $_.FullName -c Release }

Release

Publishing a GitHub release tagged like v1.2.3 runs the tests, then builds a signed, self-contained x64 MSIX and attaches it to the release together with Kontext.cer, the public certificate. The tag sets the package version. ARM64 is not built because the embedded terminal control only ships x64 binaries.

One-time setup:

  • Signing uses the CERTIFICATE_BASE64 (the .pfx, base64 encoded) and CERTIFICATE_PASSWORD secrets. They are organization secrets of buning-software, shared with the other Buning Software apps, and this repository has to be allowed to use them (organization Settings, Secrets and variables, Actions). The certificate subject must equal Publisher in src/Kontext/Package.appxmanifest (CN=BuningSoftware). To create a new certificate, for example when it expires, use generate_certificate.ps1 in the Surveil repository, update both organization secrets, and never commit the .pfx.
  • Set the repository variable KONTEXT_GITHUB_CLIENT_ID. An installed MSIX is read-only, so the client id has to be built in; the release fails without it.

To install a release, first trust Kontext.cer once (open it, choose Install Certificate, Local Machine, Trusted People), then open the .msix. Kontext still keeps its data under %LOCALAPPDATA%\Kontext: the package turns off file redirection so your clones and worktrees stay visible to Explorer, terminals and IDEs.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b features/feature-title)
  3. Commit your Changes (git commit -m 'Added feature')
  4. Push to the Branch (git push origin features/feature-title)
  5. Open a Pull Request

Keep the module boundaries described under Built With: every module references only the shared projects, and tests/Kontext.ArchitectureTests enforces it.

License

Distributed under the GNU Affero General Public License v3.0 License. See LICENSE for more information.

(back to top)

About

A native WinUI 3 app that connects GitHub boards to isolated Git worktrees with embedded Claude Code CLI sessions for context-driven AI development.

Topics

Resources

Code of conduct

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages