Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# github-issue-ops

<img src="docs/public/logo.svg" alt="github-issue-ops logo" width="80" align="right">

[![Docs](https://img.shields.io/badge/docs-fulll.github.io%2Fgithub--issue--ops-blue)](https://fulll.github.io/github-issue-ops/)
[![Latest release](https://img.shields.io/github/v/release/fulll/github-issue-ops)](https://github.com/fulll/github-issue-ops/releases/latest)
[![CI](https://github.com/fulll/github-issue-ops/actions/workflows/ci.yaml/badge.svg)](https://github.com/fulll/github-issue-ops/actions/workflows/ci.yaml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)

CLI to industrialize GitHub issue campaigns (tech debt, security, migration, compliance) from code search results — create EPICs, refresh checklists, dispatch sub-issues per repo.

→ **Full documentation: https://fulll.github.io/github-issue-ops/**

## What it does

`github-issue-ops` takes the output of [`github-code-search`](https://github.com/fulll/github-code-search) (or any markdown/JSON input) and turns it into a structured GitHub issue campaign:
Expand Down Expand Up @@ -44,10 +50,6 @@ github-issue-ops issue dispatch --epic myorg/tech-debt#42 --mode apply
github-issue-ops upgrade
```

## Documentation

Full documentation: <https://fulll.github.io/github-issue-ops/>

## License

[MIT](LICENSE.md) — Copyright (c) 2026 Fulll
18 changes: 6 additions & 12 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,17 @@ export default defineConfig({
],
[
"link",
{ rel: "apple-touch-icon", sizes: "114x114", href: "/github-issue-ops/apple-touch-icon.png" },
{ rel: "apple-touch-icon", sizes: "180x180", href: "/github-issue-ops/apple-touch-icon.png" },
],
// fulll dark blue as browser theme colour
["meta", { name: "theme-color", content: "#0000CC" }],
// brand blue as browser theme colour
["meta", { name: "theme-color", content: "#0033DD" }],
],

themeConfig: {
logo: "/logo.svg",

nav: [
{ text: "Getting Started", link: "/getting-started/", activeMatch: "^/getting-started/" },
{ text: "Guide", link: "/guide/how-it-works", activeMatch: "^/guide/" },
{ text: "Reference", link: "/reference/create", activeMatch: "^/reference/" },
{ text: "Architecture", link: "/architecture/overview", activeMatch: "^/architecture/" },
{ text: "What's New", link: "/whats-new/", activeMatch: "^/whats-new/" },
Expand All @@ -40,17 +39,12 @@ export default defineConfig({
{
text: "Getting Started",
items: [
{ text: "Installation", link: "/getting-started/#installation" },
{ text: "Quickstart", link: "/getting-started/#quickstart" },
{ text: "Prerequisites", link: "/getting-started/" },
{ text: "Installation", link: "/getting-started/installation" },
{ text: "Quickstart", link: "/getting-started/quickstart" },
],
},
],
"/guide/": [
{
text: "Guide",
items: [{ text: "How it works", link: "/guide/how-it-works" }],
},
],
"/reference/": [
{
text: "CLI Reference",
Expand Down
281 changes: 281 additions & 0 deletions docs/.vitepress/theme/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,287 @@ body::before {
);
}

/* ── Home page sections (after the fold) ────────────────────────────────── */

/* Shared section wrapper */
.VPHome .home-section {
max-width: 1152px;
margin: 0 auto;
padding: 56px 24px;
}

.VPHome .home-section h2 {
font-size: 1.75rem;
font-weight: 700;
letter-spacing: -0.02em;
margin-bottom: 2rem;
color: var(--vp-c-text-1);
border-top: none;
padding-top: 0;
}

/* ── Use Cases section ───────────────────────────────────────────────────── */
.use-cases-section {
border-top: 1px solid var(--vp-c-divider);
}

.use-cases-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 16px;
margin-bottom: 1.5rem;
}

.use-case-card {
display: flex;
gap: 16px;
align-items: flex-start;
padding: 20px;
border-radius: 12px;
border: 1px solid rgba(0, 0, 204, 0.12);
background: linear-gradient(145deg, var(--vp-c-bg-soft), rgba(0, 0, 204, 0.03));
transition:
border-color 0.2s,
box-shadow 0.2s,
transform 0.2s;
}

.use-case-card:hover {
border-color: rgba(0, 0, 204, 0.3);
box-shadow: 0 4px 20px rgba(0, 0, 204, 0.08);
transform: translateY(-2px);
}

.dark .use-case-card {
border-color: rgba(102, 153, 255, 0.1);
background: linear-gradient(145deg, var(--vp-c-bg-soft), rgba(0, 0, 204, 0.06));
}

.dark .use-case-card:hover {
border-color: rgba(102, 153, 255, 0.28);
box-shadow: 0 4px 24px rgba(102, 153, 255, 0.12);
}

.uc-icon {
line-height: 1;
flex-shrink: 0;
margin-top: 2px;
display: flex;
align-items: flex-start;
}

.uc-icon svg {
width: 24px;
height: 24px;
color: var(--vp-c-brand-1);
stroke: currentColor;
flex-shrink: 0;
}

.uc-body strong {
display: block;
font-size: 0.95rem;
font-weight: 600;
color: var(--vp-c-text-1);
margin-bottom: 4px;
}

.uc-body p {
margin: 0;
font-size: 0.875rem;
line-height: 1.6;
color: var(--vp-c-text-2);
}

/* ── Agentic AI section ──────────────────────────────────────────────────── */
@keyframes shimmer-bg {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}

.agentic-section {
position: relative;
border-radius: 20px;
padding: 56px 48px !important;
margin: 0 24px 48px !important;
overflow: hidden;
background: linear-gradient(
135deg,
rgba(0, 0, 204, 0.06) 0%,
rgba(68, 136, 255, 0.08) 40%,
rgba(102, 204, 255, 0.06) 70%,
rgba(255, 204, 51, 0.05) 100%
);
border: 1px solid rgba(0, 0, 204, 0.14);
}

.dark .agentic-section {
background: linear-gradient(
135deg,
rgba(0, 0, 204, 0.12) 0%,
rgba(68, 136, 255, 0.14) 40%,
rgba(102, 204, 255, 0.1) 70%,
rgba(255, 204, 51, 0.07) 100%
);
border-color: rgba(102, 153, 255, 0.18);
}

/* Animated glow blob behind the section */
.agentic-section::before {
content: "";
position: absolute;
Comment on lines +325 to +336
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The animated background (animation: shimmer-bg ... infinite) doesn’t currently respect prefers-reduced-motion. Please add a reduced-motion media query to disable/limit this animation (and optionally the hover transforms/transitions) for users who have motion reduction enabled.

Copilot uses AI. Check for mistakes.
inset: -40%;
background: radial-gradient(
ellipse 60% 60% at 50% 50%,
rgba(0, 0, 204, 0.07) 0%,
transparent 70%
);
background-size: 200% 200%;
animation: shimmer-bg 8s ease infinite;
pointer-events: none;
z-index: 0;
}

.agentic-section > * {
position: relative;
z-index: 1;
}

.agentic-lead {
font-size: 1.125rem;
line-height: 1.75;
color: var(--vp-c-text-1);
margin-bottom: 1rem;
}

.agentic-problem {
display: inline-block;
font-size: 1rem;
color: var(--vp-c-text-1);
background: rgba(0, 0, 204, 0.07);
border-left: 3px solid var(--vp-c-brand-1);
border-radius: 0 8px 8px 0;
padding: 10px 16px;
margin-bottom: 1.25rem;
}

.dark .agentic-problem {
background: rgba(102, 153, 255, 0.1);
}

.agentic-pillars {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
margin: 1.5rem 0;
}

.pillar {
display: grid;
grid-template-areas:
"icon label"
"icon desc";
grid-template-columns: 2rem 1fr;
column-gap: 10px;
row-gap: 2px;
align-items: start;
padding: 14px 16px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.5);
border: 1px solid rgba(0, 0, 204, 0.1);
backdrop-filter: blur(4px);
transition:
transform 0.2s,
box-shadow 0.2s;
}

.pillar:hover {
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(0, 0, 204, 0.1);
}

.dark .pillar {
background: rgba(0, 0, 0, 0.25);
border-color: rgba(102, 153, 255, 0.12);
}

.pillar-icon {
grid-area: icon;
display: flex;
align-items: flex-start;
padding-top: 2px;
}

.pillar-icon svg {
width: 20px;
height: 20px;
color: var(--vp-c-brand-1);
stroke: currentColor;
flex-shrink: 0;
}

.pillar-label {
grid-area: label;
font-size: 0.875rem;
color: var(--vp-c-text-1);
}

.pillar-desc {
grid-area: desc;
font-size: 0.8rem;
color: var(--vp-c-text-2);
line-height: 1.5;
}

.agentic-quote {
margin-top: 1.75rem;
padding: 20px 24px;
border-radius: 12px;
background: linear-gradient(135deg, rgba(0, 0, 204, 0.08), rgba(68, 136, 255, 0.06));
border: 1px solid rgba(0, 0, 204, 0.16);
font-size: 1rem;
line-height: 1.7;
color: var(--vp-c-text-1);
text-align: center;
font-style: italic;
}

.dark .agentic-quote {
background: linear-gradient(135deg, rgba(0, 0, 204, 0.15), rgba(68, 136, 255, 0.1));
border-color: rgba(102, 153, 255, 0.2);
}

/* ── Used in production section ─────────────────────────────────────────── */
.production-section {
border-top: 1px solid var(--vp-c-divider);
text-align: center;
padding-bottom: 72px !important;
}

.production-section h2 {
margin-bottom: 1rem !important;
}

/* Mobile adjustments */
@media (max-width: 768px) {
.agentic-section {
padding: 36px 24px !important;
margin: 0 12px 36px !important;
border-radius: 14px;
}

.use-cases-grid {
grid-template-columns: 1fr;
}
}

/* ── Footer (black — fulll.fr style) ─────────────────────────────────────── */
.VPFooter {
border-top: none !important;
Expand Down
Loading