forgedock 1.0.16 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -3
- package/bin/cross-publish.mjs +344 -0
- package/bin/forgedock.mjs +2205 -541
- package/bin/github-app-manifest.json.license +2 -0
- package/bin/hooks/session-start.mjs +4 -5
- package/bin/registry.mjs +20 -0
- package/bin/tui.mjs +172 -96
- package/commands/adopt.md +433 -0
- package/commands/analytics.md +2 -0
- package/commands/audit-agents.md +2 -0
- package/commands/audit.md +2 -0
- package/commands/autopilot.md +77 -0
- package/commands/changelog.md +354 -0
- package/commands/cleanup.md +2 -0
- package/commands/compat-audit.md +330 -0
- package/commands/deploy-info.md +6 -5
- package/commands/design-bench.md +176 -0
- package/commands/design-render-critique-loop.md +103 -0
- package/commands/design.md +259 -0
- package/commands/diagnose.md +483 -0
- package/commands/explain.md +349 -0
- package/commands/forge-stats.md +2 -0
- package/commands/forgedock-init.md +2 -0
- package/commands/geo-audit.md +2 -0
- package/commands/incident-response.md +2 -0
- package/commands/issue.md +9 -3
- package/commands/milestone.md +2 -0
- package/commands/optimize.md +411 -0
- package/commands/orchestrate.md +239 -0
- package/commands/pipeline-health.md +60 -1
- package/commands/qa-sweep.md +39 -2
- package/commands/quality-gate.md +67 -0
- package/commands/replay.md +263 -0
- package/commands/resume.md +264 -0
- package/commands/review-pr-agents.md +5 -1
- package/commands/review-pr-staging.md +160 -2
- package/commands/review-pr.md +85 -3
- package/commands/rollback.md +2 -0
- package/commands/scope.md +280 -0
- package/commands/security-audit.md +2 -0
- package/commands/status.md +262 -0
- package/commands/sync-ecosystem.md +2 -0
- package/commands/test-gate.md +929 -0
- package/commands/validate.md +2 -0
- package/commands/work-on/build/architect.md +128 -18
- package/commands/work-on/build/context.md +130 -17
- package/commands/work-on/build/implement.md +7 -3
- package/commands/work-on/build/validate.md +2 -0
- package/commands/work-on/build.md +32 -7
- package/commands/work-on/close.md +85 -0
- package/commands/work-on/decompose.md +2 -0
- package/commands/work-on/investigate.md +30 -3
- package/commands/work-on/review.md +13 -1
- package/commands/work-on-monolithic.md +2 -0
- package/commands/work-on.md +676 -38
- package/docs/BRAND.md +51 -0
- package/docs/CI.md +177 -0
- package/docs/CONFIG.md +94 -0
- package/docs/FORGE-PROTOCOL.md +324 -0
- package/docs/articles/b-vs-c-baseline.md +210 -0
- package/docs/articles/full-abc-benchmark.md +205 -0
- package/docs/articles/per-repo-adaptive-scripts-token-savings.md +174 -0
- package/docs/articles/selective-spec-loading-token-savings.md +140 -0
- package/docs/claude-breakpoints.json +47 -0
- package/docs/design/abc-benchmark.md +195 -0
- package/docs/design/design-architect-rationale.md +123 -0
- package/docs/design/design-memory.md +61 -0
- package/docs/design/design-spec-schema.md +248 -0
- package/docs/design/design-system-lint.md +150 -0
- package/docs/design/divergent-generation.md +106 -0
- package/docs/design/effects-appropriateness.md +133 -0
- package/docs/design/fixtures/briefs/README.md +47 -0
- package/docs/design/fixtures/briefs/cadence.md +39 -0
- package/docs/design/fixtures/briefs/plume.md +39 -0
- package/docs/design/fixtures/briefs/slipstream.md +39 -0
- package/docs/design/fixtures/briefs/tender.md +39 -0
- package/docs/design/fixtures/briefs/voltage.md +39 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
- package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
- package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
- package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
- package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
- package/docs/design/foundations/brutalist.css +294 -0
- package/docs/design/foundations/editorial.css +300 -0
- package/docs/design/foundations/minimal-luxury.css +295 -0
- package/docs/design/foundations/technical.css +293 -0
- package/docs/design/foundations/warm-photo.css +299 -0
- package/docs/design/reference-corpus.md +1726 -0
- package/docs/design/render-critique-loop.md +57 -0
- package/docs/site/getting-started.md +21 -0
- package/docs/spec-graph-schema.md +397 -0
- package/package.json +3 -3
- package/scripts/bench-scorecard.mjs +239 -0
- package/scripts/build-spec-graph.mjs +509 -0
- package/scripts/classify-lane.sh +138 -0
- package/scripts/design-system-lint.mjs +993 -0
- package/scripts/graph-query.sh +486 -0
- package/scripts/transition-label.sh +169 -0
- package/scripts/validate-pr-target.sh +30 -0
- package/scripts/validate-spec-graph.sh +423 -0
- package/templates/devdocs/README.md +72 -0
- package/templates/devdocs/agent/using-forgedock.md +3 -0
- package/templates/devdocs/agent/using-github.md +3 -0
- package/templates/devdocs/index.yaml +162 -0
- package/templates/devdocs/project/architecture.md +3 -0
- package/templates/devdocs/project/conventions.md +3 -0
- package/templates/devdocs/project/custom-instructions.md +3 -0
- package/templates/devdocs/project/glossary.md +3 -0
- package/templates/devdocs/project/stack.md +3 -0
- package/templates/devdocs/templates/commit-convention.md +3 -0
- package/templates/devdocs/templates/issue.md +3 -0
- package/templates/devdocs/templates/pull-request.md +3 -0
- package/templates/devdocs/templates/review-finding.md +3 -0
- package/templates/workflows/forgedock-review.yml +96 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" class="scroll-smooth">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Plume — Issue tracking for teams who ship</title>
|
|
7
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
8
|
+
<script>
|
|
9
|
+
tailwind.config = {
|
|
10
|
+
theme: {
|
|
11
|
+
extend: {
|
|
12
|
+
fontFamily: {
|
|
13
|
+
sans: ['"Inter"', 'system-ui', 'sans-serif'],
|
|
14
|
+
mono: ['"JetBrains Mono"', '"Fira Code"', 'monospace'],
|
|
15
|
+
},
|
|
16
|
+
colors: {
|
|
17
|
+
plume: {
|
|
18
|
+
50: '#f0f4ff',
|
|
19
|
+
100: '#dde6ff',
|
|
20
|
+
200: '#c3d1ff',
|
|
21
|
+
300: '#9eb3ff',
|
|
22
|
+
400: '#768aff',
|
|
23
|
+
500: '#5060f5',
|
|
24
|
+
600: '#3d47e8',
|
|
25
|
+
700: '#3237cc',
|
|
26
|
+
800: '#2b2fa6',
|
|
27
|
+
900: '#272d84',
|
|
28
|
+
950: '#18194d',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
36
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
37
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
38
|
+
<style>
|
|
39
|
+
body { background: #09090f; color: #e8e8f0; }
|
|
40
|
+
.glow-ring { box-shadow: 0 0 0 1px rgba(80,96,245,0.3), 0 0 40px rgba(80,96,245,0.12); }
|
|
41
|
+
.gradient-text {
|
|
42
|
+
background: linear-gradient(135deg, #c3d1ff 0%, #5060f5 50%, #9eb3ff 100%);
|
|
43
|
+
-webkit-background-clip: text;
|
|
44
|
+
-webkit-text-fill-color: transparent;
|
|
45
|
+
background-clip: text;
|
|
46
|
+
}
|
|
47
|
+
.card-glass {
|
|
48
|
+
background: rgba(255,255,255,0.03);
|
|
49
|
+
border: 1px solid rgba(255,255,255,0.07);
|
|
50
|
+
}
|
|
51
|
+
.kbd {
|
|
52
|
+
background: rgba(255,255,255,0.08);
|
|
53
|
+
border: 1px solid rgba(255,255,255,0.12);
|
|
54
|
+
border-bottom-width: 2px;
|
|
55
|
+
font-family: 'JetBrains Mono', monospace;
|
|
56
|
+
font-size: 0.7rem;
|
|
57
|
+
padding: 2px 6px;
|
|
58
|
+
border-radius: 4px;
|
|
59
|
+
color: #9eb3ff;
|
|
60
|
+
}
|
|
61
|
+
.status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
|
|
62
|
+
.noise {
|
|
63
|
+
position: fixed; inset: 0; pointer-events: none; z-index: 0;
|
|
64
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
|
65
|
+
opacity: 0.4;
|
|
66
|
+
}
|
|
67
|
+
.grid-bg {
|
|
68
|
+
background-image:
|
|
69
|
+
linear-gradient(rgba(80,96,245,0.04) 1px, transparent 1px),
|
|
70
|
+
linear-gradient(90deg, rgba(80,96,245,0.04) 1px, transparent 1px);
|
|
71
|
+
background-size: 48px 48px;
|
|
72
|
+
}
|
|
73
|
+
</style>
|
|
74
|
+
</head>
|
|
75
|
+
<body class="antialiased font-sans">
|
|
76
|
+
<div class="noise"></div>
|
|
77
|
+
|
|
78
|
+
<!-- Nav -->
|
|
79
|
+
<nav class="fixed top-0 left-0 right-0 z-50 border-b border-white/5 backdrop-blur-xl bg-black/40">
|
|
80
|
+
<div class="max-w-6xl mx-auto px-6 h-14 flex items-center justify-between">
|
|
81
|
+
<div class="flex items-center gap-2">
|
|
82
|
+
<div class="w-7 h-7 rounded-lg bg-plume-500 flex items-center justify-center">
|
|
83
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
|
|
84
|
+
<path d="M2 7C2 4.24 4.24 2 7 2s5 2.24 5 5-2.24 5-5 5" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
|
|
85
|
+
<circle cx="7" cy="7" r="1.5" fill="white"/>
|
|
86
|
+
</svg>
|
|
87
|
+
</div>
|
|
88
|
+
<span class="font-semibold text-sm tracking-tight text-white">Plume</span>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="hidden md:flex items-center gap-8 text-sm text-white/50">
|
|
91
|
+
<a href="#features" class="hover:text-white/80 transition-colors">Features</a>
|
|
92
|
+
<a href="#workflow" class="hover:text-white/80 transition-colors">Workflow</a>
|
|
93
|
+
<a href="#pricing" class="hover:text-white/80 transition-colors">Pricing</a>
|
|
94
|
+
<a href="#changelog" class="hover:text-white/80 transition-colors">Changelog</a>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="flex items-center gap-3">
|
|
97
|
+
<a href="#" class="text-sm text-white/50 hover:text-white/80 transition-colors">Sign in</a>
|
|
98
|
+
<a href="#signup" class="text-sm bg-plume-500 hover:bg-plume-400 text-white px-4 py-1.5 rounded-lg font-medium transition-colors">Get started</a>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</nav>
|
|
102
|
+
|
|
103
|
+
<!-- Hero -->
|
|
104
|
+
<section class="relative pt-32 pb-24 px-6 grid-bg overflow-hidden">
|
|
105
|
+
<div class="absolute inset-0 bg-gradient-to-b from-plume-950/20 via-transparent to-transparent pointer-events-none"></div>
|
|
106
|
+
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full bg-plume-500/5 blur-3xl pointer-events-none"></div>
|
|
107
|
+
|
|
108
|
+
<div class="relative max-w-4xl mx-auto text-center">
|
|
109
|
+
<div class="inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-plume-500/30 bg-plume-500/10 text-plume-300 text-xs font-medium mb-8">
|
|
110
|
+
<span class="status-dot bg-plume-400"></span>
|
|
111
|
+
Now in public beta — free for teams under 10
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<h1 class="text-6xl md:text-7xl font-bold tracking-tight leading-none mb-6">
|
|
115
|
+
<span class="text-white">Issue tracking</span><br/>
|
|
116
|
+
<span class="gradient-text">built for speed.</span>
|
|
117
|
+
</h1>
|
|
118
|
+
|
|
119
|
+
<p class="text-lg text-white/50 max-w-xl mx-auto leading-relaxed mb-10">
|
|
120
|
+
Plume is the project management tool that gets out of your way. Keyboard-native, opinionated, and built for software teams who measure success by what ships.
|
|
121
|
+
</p>
|
|
122
|
+
|
|
123
|
+
<div class="flex flex-col sm:flex-row items-center justify-center gap-3">
|
|
124
|
+
<a href="#signup" class="group w-full sm:w-auto flex items-center justify-center gap-2 bg-plume-500 hover:bg-plume-400 text-white px-6 py-3 rounded-xl font-semibold text-sm transition-all duration-200 glow-ring">
|
|
125
|
+
Get started free
|
|
126
|
+
<svg class="w-4 h-4 group-hover:translate-x-0.5 transition-transform" viewBox="0 0 16 16" fill="none">
|
|
127
|
+
<path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
128
|
+
</svg>
|
|
129
|
+
</a>
|
|
130
|
+
<a href="#demo" class="w-full sm:w-auto flex items-center justify-center gap-2 card-glass hover:bg-white/5 text-white/70 hover:text-white px-6 py-3 rounded-xl font-medium text-sm transition-all duration-200">
|
|
131
|
+
<svg class="w-4 h-4" viewBox="0 0 16 16" fill="none">
|
|
132
|
+
<path d="M5 3.5l8 4.5-8 4.5V3.5z" fill="currentColor"/>
|
|
133
|
+
</svg>
|
|
134
|
+
Watch demo
|
|
135
|
+
</a>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<!-- Keyboard shortcuts teaser -->
|
|
139
|
+
<div class="mt-14 flex flex-wrap items-center justify-center gap-x-6 gap-y-3 text-xs text-white/30">
|
|
140
|
+
<span class="flex items-center gap-1.5"><span class="kbd">C</span> Create issue</span>
|
|
141
|
+
<span class="flex items-center gap-1.5"><span class="kbd">P</span> Change priority</span>
|
|
142
|
+
<span class="flex items-center gap-1.5"><span class="kbd">A</span> Assign</span>
|
|
143
|
+
<span class="flex items-center gap-1.5"><span class="kbd">M</span> Move to cycle</span>
|
|
144
|
+
<span class="flex items-center gap-1.5"><span class="kbd">⌘K</span> Command palette</span>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<!-- App screenshot / UI mockup -->
|
|
149
|
+
<div class="relative max-w-5xl mx-auto mt-16">
|
|
150
|
+
<div class="glow-ring rounded-2xl overflow-hidden card-glass">
|
|
151
|
+
<!-- Fake app chrome -->
|
|
152
|
+
<div class="bg-black/60 border-b border-white/5 px-4 h-10 flex items-center gap-2">
|
|
153
|
+
<div class="flex gap-1.5">
|
|
154
|
+
<div class="w-3 h-3 rounded-full bg-red-500/70"></div>
|
|
155
|
+
<div class="w-3 h-3 rounded-full bg-yellow-500/70"></div>
|
|
156
|
+
<div class="w-3 h-3 rounded-full bg-green-500/70"></div>
|
|
157
|
+
</div>
|
|
158
|
+
<div class="flex-1 flex items-center justify-center">
|
|
159
|
+
<span class="text-xs text-white/20 font-mono">app.plume.dev / acme / issues</span>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<div class="flex" style="min-height: 420px;">
|
|
164
|
+
<!-- Sidebar -->
|
|
165
|
+
<div class="w-52 bg-black/40 border-r border-white/5 p-3 flex-shrink-0">
|
|
166
|
+
<div class="mb-4">
|
|
167
|
+
<div class="flex items-center gap-2 px-2 py-1.5 rounded-lg bg-plume-500/15 text-plume-300 text-xs font-medium">
|
|
168
|
+
<svg class="w-3.5 h-3.5" viewBox="0 0 16 16" fill="none"><rect x="2" y="2" width="5" height="5" rx="1" fill="currentColor" opacity="0.7"/><rect x="9" y="2" width="5" height="5" rx="1" fill="currentColor"/><rect x="2" y="9" width="5" height="5" rx="1" fill="currentColor" opacity="0.5"/><rect x="9" y="9" width="5" height="5" rx="1" fill="currentColor" opacity="0.3"/></svg>
|
|
169
|
+
Issues
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
<div class="space-y-0.5 text-xs text-white/40">
|
|
173
|
+
<div class="flex items-center justify-between px-2 py-1.5 hover:text-white/70 rounded cursor-pointer">
|
|
174
|
+
<span>My issues</span><span class="text-white/20">4</span>
|
|
175
|
+
</div>
|
|
176
|
+
<div class="flex items-center justify-between px-2 py-1.5 hover:text-white/70 rounded cursor-pointer">
|
|
177
|
+
<span>All issues</span><span class="text-white/20">47</span>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="flex items-center justify-between px-2 py-1.5 text-white/60 rounded cursor-pointer">
|
|
180
|
+
<span>Active cycle</span><span class="bg-plume-500/20 text-plume-400 px-1.5 rounded text-[10px]">Sprint 12</span>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
<div class="mt-4 pt-4 border-t border-white/5 space-y-0.5 text-xs text-white/40">
|
|
184
|
+
<div class="px-2 py-1 text-white/20 text-[10px] font-medium uppercase tracking-wider">Projects</div>
|
|
185
|
+
<div class="flex items-center gap-2 px-2 py-1.5 hover:text-white/70 rounded cursor-pointer">
|
|
186
|
+
<span class="w-2 h-2 rounded-sm bg-blue-400"></span> API v3
|
|
187
|
+
</div>
|
|
188
|
+
<div class="flex items-center gap-2 px-2 py-1.5 hover:text-white/70 rounded cursor-pointer">
|
|
189
|
+
<span class="w-2 h-2 rounded-sm bg-purple-400"></span> Dashboard
|
|
190
|
+
</div>
|
|
191
|
+
<div class="flex items-center gap-2 px-2 py-1.5 hover:text-white/70 rounded cursor-pointer">
|
|
192
|
+
<span class="w-2 h-2 rounded-sm bg-emerald-400"></span> Mobile
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<!-- Main content -->
|
|
198
|
+
<div class="flex-1 p-4 overflow-hidden">
|
|
199
|
+
<div class="flex items-center justify-between mb-4">
|
|
200
|
+
<div class="flex items-center gap-3">
|
|
201
|
+
<h3 class="text-sm font-semibold text-white">All issues</h3>
|
|
202
|
+
<span class="text-xs text-white/30 bg-white/5 px-2 py-0.5 rounded">47</span>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="flex items-center gap-2">
|
|
205
|
+
<button class="text-xs text-white/40 hover:text-white/70 flex items-center gap-1 px-2 py-1 rounded border border-white/5">
|
|
206
|
+
<svg class="w-3 h-3" viewBox="0 0 12 12" fill="none"><path d="M1 3h10M3 6h6M5 9h2" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>
|
|
207
|
+
Filter
|
|
208
|
+
</button>
|
|
209
|
+
<button class="text-xs text-white/40 hover:text-white/70 flex items-center gap-1 px-2 py-1 rounded border border-white/5">Group</button>
|
|
210
|
+
</div>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<!-- Issue rows -->
|
|
214
|
+
<div class="space-y-0.5">
|
|
215
|
+
<!-- Header -->
|
|
216
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-1 text-[10px] text-white/20 font-medium uppercase tracking-wider border-b border-white/5 mb-1">
|
|
217
|
+
<div class="col-span-1">Pri</div>
|
|
218
|
+
<div class="col-span-1">ID</div>
|
|
219
|
+
<div class="col-span-5">Title</div>
|
|
220
|
+
<div class="col-span-2">Status</div>
|
|
221
|
+
<div class="col-span-2">Assignee</div>
|
|
222
|
+
<div class="col-span-1">Cycle</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<!-- Issues -->
|
|
226
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-2 rounded-lg hover:bg-white/3 cursor-pointer group items-center">
|
|
227
|
+
<div class="col-span-1"><svg class="w-3 h-3 text-red-400" viewBox="0 0 12 12" fill="currentColor"><path d="M6 1l1.5 3.5H11l-2.8 2 1 3.5L6 8.5l-3.2 1.5 1-3.5L1 4.5h3.5z"/></svg></div>
|
|
228
|
+
<div class="col-span-1 text-[10px] text-white/20 font-mono">PLM-47</div>
|
|
229
|
+
<div class="col-span-5 text-xs text-white/80 truncate group-hover:text-white">Fix rate limiting on GraphQL subscriptions</div>
|
|
230
|
+
<div class="col-span-2"><span class="inline-flex items-center gap-1 text-[10px] text-amber-400"><span class="status-dot bg-amber-400"></span>In progress</span></div>
|
|
231
|
+
<div class="col-span-2"><span class="text-[10px] text-white/30">@jlin</span></div>
|
|
232
|
+
<div class="col-span-1"><span class="text-[10px] text-white/20">S12</span></div>
|
|
233
|
+
</div>
|
|
234
|
+
|
|
235
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-2 rounded-lg hover:bg-white/3 cursor-pointer group items-center bg-plume-500/5 border border-plume-500/10">
|
|
236
|
+
<div class="col-span-1"><svg class="w-3 h-3 text-orange-400" viewBox="0 0 12 12" fill="currentColor"><path d="M6 1v10M1 6h10" stroke="currentColor" stroke-width="2" fill="none"/></svg></div>
|
|
237
|
+
<div class="col-span-1 text-[10px] text-white/20 font-mono">PLM-46</div>
|
|
238
|
+
<div class="col-span-5 text-xs text-white/80 truncate group-hover:text-white">Keyboard shortcut conflicts in issue modal</div>
|
|
239
|
+
<div class="col-span-2"><span class="inline-flex items-center gap-1 text-[10px] text-blue-400"><span class="status-dot bg-blue-400"></span>In review</span></div>
|
|
240
|
+
<div class="col-span-2"><span class="text-[10px] text-white/30">@sarah</span></div>
|
|
241
|
+
<div class="col-span-1"><span class="text-[10px] text-white/20">S12</span></div>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-2 rounded-lg hover:bg-white/3 cursor-pointer group items-center">
|
|
245
|
+
<div class="col-span-1"><svg class="w-3 h-3 text-white/20" viewBox="0 0 12 12" fill="none"><rect x="2" y="2" width="8" height="8" rx="1" stroke="currentColor" stroke-width="1.5"/></svg></div>
|
|
246
|
+
<div class="col-span-1 text-[10px] text-white/20 font-mono">PLM-45</div>
|
|
247
|
+
<div class="col-span-5 text-xs text-white/50 truncate group-hover:text-white/80">Add bulk reassign to triage view</div>
|
|
248
|
+
<div class="col-span-2"><span class="inline-flex items-center gap-1 text-[10px] text-white/30"><span class="status-dot bg-white/20"></span>Backlog</span></div>
|
|
249
|
+
<div class="col-span-2"><span class="text-[10px] text-white/20">unassigned</span></div>
|
|
250
|
+
<div class="col-span-1"><span class="text-[10px] text-white/20">—</span></div>
|
|
251
|
+
</div>
|
|
252
|
+
|
|
253
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-2 rounded-lg hover:bg-white/3 cursor-pointer group items-center">
|
|
254
|
+
<div class="col-span-1"><svg class="w-3 h-3 text-white/20" viewBox="0 0 12 12" fill="none"><rect x="2" y="2" width="8" height="8" rx="1" stroke="currentColor" stroke-width="1.5"/></svg></div>
|
|
255
|
+
<div class="col-span-1 text-[10px] text-white/20 font-mono">PLM-44</div>
|
|
256
|
+
<div class="col-span-5 text-xs text-white/50 truncate group-hover:text-white/80">Roadmap quarter view rendering on Safari</div>
|
|
257
|
+
<div class="col-span-2"><span class="inline-flex items-center gap-1 text-[10px] text-emerald-400"><span class="status-dot bg-emerald-400"></span>Done</span></div>
|
|
258
|
+
<div class="col-span-2"><span class="text-[10px] text-white/30">@mikko</span></div>
|
|
259
|
+
<div class="col-span-1"><span class="text-[10px] text-white/20">S11</span></div>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div class="grid grid-cols-12 gap-2 px-2 py-2 rounded-lg hover:bg-white/3 cursor-pointer group items-center">
|
|
263
|
+
<div class="col-span-1"><svg class="w-3 h-3 text-red-400" viewBox="0 0 12 12" fill="currentColor"><path d="M6 1l1.5 3.5H11l-2.8 2 1 3.5L6 8.5l-3.2 1.5 1-3.5L1 4.5h3.5z"/></svg></div>
|
|
264
|
+
<div class="col-span-1 text-[10px] text-white/20 font-mono">PLM-43</div>
|
|
265
|
+
<div class="col-span-5 text-xs text-white/80 truncate group-hover:text-white">Webhook delivery retries exceed queue limit</div>
|
|
266
|
+
<div class="col-span-2"><span class="inline-flex items-center gap-1 text-[10px] text-amber-400"><span class="status-dot bg-amber-400"></span>In progress</span></div>
|
|
267
|
+
<div class="col-span-2"><span class="text-[10px] text-white/30">@jlin</span></div>
|
|
268
|
+
<div class="col-span-1"><span class="text-[10px] text-white/20">S12</span></div>
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
</section>
|
|
276
|
+
|
|
277
|
+
<!-- Logos -->
|
|
278
|
+
<section class="py-14 px-6 border-y border-white/5">
|
|
279
|
+
<div class="max-w-5xl mx-auto text-center">
|
|
280
|
+
<p class="text-xs text-white/20 uppercase tracking-widest font-medium mb-8">Trusted by teams at</p>
|
|
281
|
+
<div class="flex flex-wrap items-center justify-center gap-8 md:gap-12">
|
|
282
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Vercel</span>
|
|
283
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Supabase</span>
|
|
284
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Railway</span>
|
|
285
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Liveblocks</span>
|
|
286
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Resend</span>
|
|
287
|
+
<span class="text-white/20 text-sm font-semibold tracking-tight">Trigger.dev</span>
|
|
288
|
+
</div>
|
|
289
|
+
</div>
|
|
290
|
+
</section>
|
|
291
|
+
|
|
292
|
+
<!-- Features -->
|
|
293
|
+
<section id="features" class="py-24 px-6">
|
|
294
|
+
<div class="max-w-5xl mx-auto">
|
|
295
|
+
<div class="text-center mb-16">
|
|
296
|
+
<h2 class="text-4xl font-bold text-white tracking-tight mb-4">Everything your team needs.<br/><span class="text-white/40">Nothing it doesn't.</span></h2>
|
|
297
|
+
<p class="text-white/40 max-w-md mx-auto">We removed every feature that slows teams down and kept everything that makes them faster.</p>
|
|
298
|
+
</div>
|
|
299
|
+
|
|
300
|
+
<div class="grid md:grid-cols-3 gap-4">
|
|
301
|
+
<!-- Feature 1 -->
|
|
302
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
303
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
304
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
305
|
+
<rect x="3" y="3" width="6" height="6" rx="1.5" fill="currentColor" opacity="0.8"/>
|
|
306
|
+
<rect x="11" y="3" width="6" height="6" rx="1.5" fill="currentColor" opacity="0.4"/>
|
|
307
|
+
<rect x="3" y="11" width="6" height="6" rx="1.5" fill="currentColor" opacity="0.4"/>
|
|
308
|
+
<rect x="11" y="11" width="6" height="6" rx="1.5" fill="currentColor" opacity="0.2"/>
|
|
309
|
+
</svg>
|
|
310
|
+
</div>
|
|
311
|
+
<h3 class="text-white font-semibold mb-2">Issues that stay focused</h3>
|
|
312
|
+
<p class="text-white/40 text-sm leading-relaxed">Statuses, priorities, labels, and assignees — all navigable without touching the mouse. The issue is the unit of work, kept clean.</p>
|
|
313
|
+
</div>
|
|
314
|
+
|
|
315
|
+
<!-- Feature 2 -->
|
|
316
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
317
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
318
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
319
|
+
<circle cx="10" cy="10" r="7" stroke="currentColor" stroke-width="1.5"/>
|
|
320
|
+
<path d="M10 6v4l3 2" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
321
|
+
</svg>
|
|
322
|
+
</div>
|
|
323
|
+
<h3 class="text-white font-semibold mb-2">Cycles, not ceremonies</h3>
|
|
324
|
+
<p class="text-white/40 text-sm leading-relaxed">Time-boxed sprints with automatic carry-over. Start a cycle in seconds. See exactly what's in scope and what's blocking you.</p>
|
|
325
|
+
</div>
|
|
326
|
+
|
|
327
|
+
<!-- Feature 3 -->
|
|
328
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
329
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
330
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
331
|
+
<path d="M3 14l4-4 3 3 4-5 3 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
332
|
+
</svg>
|
|
333
|
+
</div>
|
|
334
|
+
<h3 class="text-white font-semibold mb-2">Roadmap that reflects reality</h3>
|
|
335
|
+
<p class="text-white/40 text-sm leading-relaxed">Quarter and year views for leads. Progress rolls up automatically from issues. No manual status updates.</p>
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
<!-- Feature 4 -->
|
|
339
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
340
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
341
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
342
|
+
<path d="M8 3H5a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2V9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
343
|
+
<path d="M14 2l4 4-6 6H8v-4l6-6z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
344
|
+
</svg>
|
|
345
|
+
</div>
|
|
346
|
+
<h3 class="text-white font-semibold mb-2">Keyboard-first, always</h3>
|
|
347
|
+
<p class="text-white/40 text-sm leading-relaxed">Every action in Plume has a keyboard shortcut. Open the command palette, navigate issues, reassign, prioritize — without leaving the keys.</p>
|
|
348
|
+
</div>
|
|
349
|
+
|
|
350
|
+
<!-- Feature 5 -->
|
|
351
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
352
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
353
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
354
|
+
<circle cx="6" cy="6" r="3" stroke="currentColor" stroke-width="1.5"/>
|
|
355
|
+
<circle cx="14" cy="14" r="3" stroke="currentColor" stroke-width="1.5"/>
|
|
356
|
+
<path d="M9 6h5v5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
357
|
+
</svg>
|
|
358
|
+
</div>
|
|
359
|
+
<h3 class="text-white font-semibold mb-2">GitHub, GitLab, Bitbucket</h3>
|
|
360
|
+
<p class="text-white/40 text-sm leading-relaxed">Link PRs to issues automatically. Status updates when branches open, merge, or fail CI. Your issue list knows when code ships.</p>
|
|
361
|
+
</div>
|
|
362
|
+
|
|
363
|
+
<!-- Feature 6 -->
|
|
364
|
+
<div class="card-glass rounded-2xl p-6 hover:bg-white/5 transition-colors group">
|
|
365
|
+
<div class="w-10 h-10 rounded-xl bg-plume-500/20 flex items-center justify-center mb-4 group-hover:bg-plume-500/30 transition-colors">
|
|
366
|
+
<svg class="w-5 h-5 text-plume-400" viewBox="0 0 20 20" fill="none">
|
|
367
|
+
<rect x="2" y="5" width="16" height="11" rx="2" stroke="currentColor" stroke-width="1.5"/>
|
|
368
|
+
<path d="M6 5V4a2 2 0 014 0v1" stroke="currentColor" stroke-width="1.5"/>
|
|
369
|
+
<path d="M6 10h8M6 13h5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
370
|
+
</svg>
|
|
371
|
+
</div>
|
|
372
|
+
<h3 class="text-white font-semibold mb-2">Projects, not folders</h3>
|
|
373
|
+
<p class="text-white/40 text-sm leading-relaxed">Group long-running efforts into projects with milestones. Issues can belong to a project and a cycle simultaneously. No duplication.</p>
|
|
374
|
+
</div>
|
|
375
|
+
</div>
|
|
376
|
+
</div>
|
|
377
|
+
</section>
|
|
378
|
+
|
|
379
|
+
<!-- Workflow section -->
|
|
380
|
+
<section id="workflow" class="py-24 px-6 border-t border-white/5">
|
|
381
|
+
<div class="max-w-5xl mx-auto grid md:grid-cols-2 gap-16 items-center">
|
|
382
|
+
<div>
|
|
383
|
+
<div class="text-xs text-plume-400 font-medium uppercase tracking-widest mb-4">The Plume way</div>
|
|
384
|
+
<h2 class="text-4xl font-bold text-white tracking-tight mb-6">Plan and ship<br/>in one place.</h2>
|
|
385
|
+
<p class="text-white/40 leading-relaxed mb-8">Most teams use three tools to do what Plume does in one. Your backlog, your sprint, and your roadmap are all the same data, just different views. No syncing. No drift.</p>
|
|
386
|
+
|
|
387
|
+
<div class="space-y-4">
|
|
388
|
+
<div class="flex items-start gap-3">
|
|
389
|
+
<div class="w-6 h-6 rounded-full bg-plume-500/20 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
390
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
391
|
+
</div>
|
|
392
|
+
<div>
|
|
393
|
+
<div class="text-white text-sm font-medium">Create issues from anywhere</div>
|
|
394
|
+
<div class="text-white/40 text-sm">Global shortcut, API, Slack, GitHub PR — issues land in the right place.</div>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
<div class="flex items-start gap-3">
|
|
398
|
+
<div class="w-6 h-6 rounded-full bg-plume-500/20 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
399
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
400
|
+
</div>
|
|
401
|
+
<div>
|
|
402
|
+
<div class="text-white text-sm font-medium">Triage into cycles</div>
|
|
403
|
+
<div class="text-white/40 text-sm">Drag, keyboard assign, or auto-schedule based on priority.</div>
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
<div class="flex items-start gap-3">
|
|
407
|
+
<div class="w-6 h-6 rounded-full bg-plume-500/20 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
408
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
409
|
+
</div>
|
|
410
|
+
<div>
|
|
411
|
+
<div class="text-white text-sm font-medium">Track via code integrations</div>
|
|
412
|
+
<div class="text-white/40 text-sm">PRs auto-link, CI status propagates, issues close when code merges.</div>
|
|
413
|
+
</div>
|
|
414
|
+
</div>
|
|
415
|
+
<div class="flex items-start gap-3">
|
|
416
|
+
<div class="w-6 h-6 rounded-full bg-plume-500/20 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
417
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
418
|
+
</div>
|
|
419
|
+
<div>
|
|
420
|
+
<div class="text-white text-sm font-medium">Report on the roadmap</div>
|
|
421
|
+
<div class="text-white/40 text-sm">Progress is live. No one has to update a slide deck the night before planning.</div>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
</div>
|
|
425
|
+
</div>
|
|
426
|
+
|
|
427
|
+
<!-- Code block -->
|
|
428
|
+
<div class="card-glass rounded-2xl overflow-hidden">
|
|
429
|
+
<div class="bg-black/40 border-b border-white/5 px-4 py-2.5 flex items-center gap-2">
|
|
430
|
+
<div class="flex gap-1.5">
|
|
431
|
+
<div class="w-2.5 h-2.5 rounded-full bg-white/10"></div>
|
|
432
|
+
<div class="w-2.5 h-2.5 rounded-full bg-white/10"></div>
|
|
433
|
+
<div class="w-2.5 h-2.5 rounded-full bg-white/10"></div>
|
|
434
|
+
</div>
|
|
435
|
+
<span class="text-xs text-white/20 font-mono ml-2">github integration</span>
|
|
436
|
+
</div>
|
|
437
|
+
<div class="p-5 font-mono text-xs leading-relaxed">
|
|
438
|
+
<div class="text-white/20 mb-3"># Open a PR and watch Plume update</div>
|
|
439
|
+
<div class="text-white/60">git checkout -b <span class="text-plume-300">feat/plm-47-rate-limiting</span></div>
|
|
440
|
+
<div class="mt-2 text-white/60">git push origin <span class="text-plume-300">feat/plm-47-rate-limiting</span></div>
|
|
441
|
+
<div class="mt-4 text-white/20"># PR opened — Plume detects branch name</div>
|
|
442
|
+
<div class="mt-2 p-3 rounded-lg bg-amber-500/10 border border-amber-500/20">
|
|
443
|
+
<div class="text-amber-300 text-[10px] font-medium mb-1">PLM-47 status changed</div>
|
|
444
|
+
<div class="text-white/50 text-[10px]">Backlog → <span class="text-amber-400">In Progress</span></div>
|
|
445
|
+
<div class="text-white/30 text-[10px] mt-1">PR #238 linked automatically</div>
|
|
446
|
+
</div>
|
|
447
|
+
<div class="mt-4 text-white/20"># Merge the PR</div>
|
|
448
|
+
<div class="mt-2 p-3 rounded-lg bg-emerald-500/10 border border-emerald-500/20">
|
|
449
|
+
<div class="text-emerald-300 text-[10px] font-medium mb-1">PLM-47 closed</div>
|
|
450
|
+
<div class="text-white/50 text-[10px]">In Progress → <span class="text-emerald-400">Done</span></div>
|
|
451
|
+
<div class="text-white/30 text-[10px] mt-1">Merged by @jlin · 2 hours ago</div>
|
|
452
|
+
</div>
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
</section>
|
|
457
|
+
|
|
458
|
+
<!-- Testimonials -->
|
|
459
|
+
<section class="py-24 px-6 border-t border-white/5">
|
|
460
|
+
<div class="max-w-5xl mx-auto">
|
|
461
|
+
<div class="grid md:grid-cols-3 gap-4">
|
|
462
|
+
<div class="card-glass rounded-2xl p-6">
|
|
463
|
+
<div class="flex gap-0.5 mb-4">
|
|
464
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
465
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
466
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
467
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
468
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
469
|
+
</div>
|
|
470
|
+
<p class="text-white/60 text-sm leading-relaxed mb-4">"We switched from Jira two months ago. The time we recovered from status meetings alone paid for the subscription."</p>
|
|
471
|
+
<div class="flex items-center gap-3">
|
|
472
|
+
<div class="w-7 h-7 rounded-full bg-gradient-to-br from-blue-400 to-purple-500 flex items-center justify-center text-white text-xs font-semibold">A</div>
|
|
473
|
+
<div>
|
|
474
|
+
<div class="text-white text-xs font-medium">Ana Sokolović</div>
|
|
475
|
+
<div class="text-white/30 text-xs">Engineering Lead, Loom</div>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
</div>
|
|
479
|
+
|
|
480
|
+
<div class="card-glass rounded-2xl p-6">
|
|
481
|
+
<div class="flex gap-0.5 mb-4">
|
|
482
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
483
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
484
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
485
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
486
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
487
|
+
</div>
|
|
488
|
+
<p class="text-white/60 text-sm leading-relaxed mb-4">"Keyboard shortcuts are genuinely great. I haven't clicked a priority dropdown in weeks. The product feels designed by people who actually write code."</p>
|
|
489
|
+
<div class="flex items-center gap-3">
|
|
490
|
+
<div class="w-7 h-7 rounded-full bg-gradient-to-br from-emerald-400 to-teal-500 flex items-center justify-center text-white text-xs font-semibold">T</div>
|
|
491
|
+
<div>
|
|
492
|
+
<div class="text-white text-xs font-medium">Thomas Müller</div>
|
|
493
|
+
<div class="text-white/30 text-xs">Staff Engineer, Deno</div>
|
|
494
|
+
</div>
|
|
495
|
+
</div>
|
|
496
|
+
</div>
|
|
497
|
+
|
|
498
|
+
<div class="card-glass rounded-2xl p-6">
|
|
499
|
+
<div class="flex gap-0.5 mb-4">
|
|
500
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
501
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
502
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
503
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
504
|
+
<svg class="w-3.5 h-3.5 text-plume-400" viewBox="0 0 14 14" fill="currentColor"><path d="M7 1l1.5 3.5H12l-2.8 2 1 3.5L7 8.5l-3.2 1.5 1-3.5L2 4.5h3.5z"/></svg>
|
|
505
|
+
</div>
|
|
506
|
+
<p class="text-white/60 text-sm leading-relaxed mb-4">"Product, design, and engineering all live in the same tool now. Our retros take 15 minutes because everything is already documented in Plume."</p>
|
|
507
|
+
<div class="flex items-center gap-3">
|
|
508
|
+
<div class="w-7 h-7 rounded-full bg-gradient-to-br from-orange-400 to-pink-500 flex items-center justify-center text-white text-xs font-semibold">P</div>
|
|
509
|
+
<div>
|
|
510
|
+
<div class="text-white text-xs font-medium">Priya Nair</div>
|
|
511
|
+
<div class="text-white/30 text-xs">Head of Product, Basehub</div>
|
|
512
|
+
</div>
|
|
513
|
+
</div>
|
|
514
|
+
</div>
|
|
515
|
+
</div>
|
|
516
|
+
</div>
|
|
517
|
+
</section>
|
|
518
|
+
|
|
519
|
+
<!-- Pricing -->
|
|
520
|
+
<section id="pricing" class="py-24 px-6 border-t border-white/5">
|
|
521
|
+
<div class="max-w-4xl mx-auto">
|
|
522
|
+
<div class="text-center mb-14">
|
|
523
|
+
<h2 class="text-4xl font-bold text-white tracking-tight mb-4">Simple pricing</h2>
|
|
524
|
+
<p class="text-white/40">No seats-per-feature nonsense. One price, full access.</p>
|
|
525
|
+
</div>
|
|
526
|
+
<div class="grid md:grid-cols-3 gap-4">
|
|
527
|
+
<!-- Free -->
|
|
528
|
+
<div class="card-glass rounded-2xl p-6">
|
|
529
|
+
<div class="text-white/40 text-xs font-medium uppercase tracking-wider mb-4">Starter</div>
|
|
530
|
+
<div class="text-white text-4xl font-bold mb-1">$0</div>
|
|
531
|
+
<div class="text-white/30 text-sm mb-6">Up to 10 members</div>
|
|
532
|
+
<a href="#signup" class="block text-center text-sm font-medium text-plume-400 border border-plume-500/30 hover:bg-plume-500/10 py-2.5 rounded-xl transition-colors mb-6">Get started</a>
|
|
533
|
+
<ul class="space-y-2.5 text-sm text-white/50">
|
|
534
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Unlimited issues</li>
|
|
535
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>3 active cycles</li>
|
|
536
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>GitHub integration</li>
|
|
537
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Roadmap view</li>
|
|
538
|
+
</ul>
|
|
539
|
+
</div>
|
|
540
|
+
|
|
541
|
+
<!-- Pro -->
|
|
542
|
+
<div class="rounded-2xl p-6 relative overflow-hidden" style="background: linear-gradient(135deg, rgba(80,96,245,0.15) 0%, rgba(80,96,245,0.05) 100%); border: 1px solid rgba(80,96,245,0.4);">
|
|
543
|
+
<div class="absolute top-0 right-0 px-3 py-1 text-xs font-medium bg-plume-500 text-white rounded-bl-xl rounded-tr-2xl">Popular</div>
|
|
544
|
+
<div class="text-plume-300 text-xs font-medium uppercase tracking-wider mb-4">Pro</div>
|
|
545
|
+
<div class="text-white text-4xl font-bold mb-1">$12<span class="text-lg text-white/40 font-normal">/user/mo</span></div>
|
|
546
|
+
<div class="text-white/30 text-sm mb-6">Billed annually</div>
|
|
547
|
+
<a href="#signup" class="block text-center text-sm font-semibold bg-plume-500 hover:bg-plume-400 text-white py-2.5 rounded-xl transition-colors mb-6">Start free trial</a>
|
|
548
|
+
<ul class="space-y-2.5 text-sm text-white/60">
|
|
549
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Everything in Starter</li>
|
|
550
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Unlimited cycles & projects</li>
|
|
551
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Priority support</li>
|
|
552
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>GitLab + Bitbucket</li>
|
|
553
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Advanced analytics</li>
|
|
554
|
+
</ul>
|
|
555
|
+
</div>
|
|
556
|
+
|
|
557
|
+
<!-- Enterprise -->
|
|
558
|
+
<div class="card-glass rounded-2xl p-6">
|
|
559
|
+
<div class="text-white/40 text-xs font-medium uppercase tracking-wider mb-4">Enterprise</div>
|
|
560
|
+
<div class="text-white text-4xl font-bold mb-1">Custom</div>
|
|
561
|
+
<div class="text-white/30 text-sm mb-6">100+ members</div>
|
|
562
|
+
<a href="mailto:sales@plume.dev" class="block text-center text-sm font-medium text-white/70 border border-white/10 hover:bg-white/5 py-2.5 rounded-xl transition-colors mb-6">Talk to sales</a>
|
|
563
|
+
<ul class="space-y-2.5 text-sm text-white/50">
|
|
564
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Everything in Pro</li>
|
|
565
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>SSO / SAML</li>
|
|
566
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Audit logs</li>
|
|
567
|
+
<li class="flex items-center gap-2"><svg class="w-3.5 h-3.5 text-plume-400 flex-shrink-0" viewBox="0 0 14 14" fill="none"><path d="M2 7l3.5 3.5L12 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>SLA & dedicated support</li>
|
|
568
|
+
</ul>
|
|
569
|
+
</div>
|
|
570
|
+
</div>
|
|
571
|
+
</div>
|
|
572
|
+
</section>
|
|
573
|
+
|
|
574
|
+
<!-- CTA -->
|
|
575
|
+
<section id="signup" class="py-24 px-6 border-t border-white/5">
|
|
576
|
+
<div class="max-w-2xl mx-auto text-center">
|
|
577
|
+
<h2 class="text-5xl font-bold text-white tracking-tight mb-4">Ship faster.<br/><span class="gradient-text">Start today.</span></h2>
|
|
578
|
+
<p class="text-white/40 mb-10">Free for teams under 10. No credit card required. Set up in under two minutes.</p>
|
|
579
|
+
<div class="flex flex-col sm:flex-row gap-3 max-w-sm mx-auto">
|
|
580
|
+
<input type="email" placeholder="you@company.com" class="flex-1 bg-white/5 border border-white/10 rounded-xl px-4 py-3 text-sm text-white placeholder-white/20 focus:outline-none focus:border-plume-500/60" />
|
|
581
|
+
<button class="bg-plume-500 hover:bg-plume-400 text-white px-6 py-3 rounded-xl font-semibold text-sm transition-colors whitespace-nowrap">Get started</button>
|
|
582
|
+
</div>
|
|
583
|
+
<p class="text-white/20 text-xs mt-4">By signing up you agree to our Terms of Service and Privacy Policy.</p>
|
|
584
|
+
</div>
|
|
585
|
+
</section>
|
|
586
|
+
|
|
587
|
+
<!-- Footer -->
|
|
588
|
+
<footer class="border-t border-white/5 py-10 px-6">
|
|
589
|
+
<div class="max-w-5xl mx-auto flex flex-col md:flex-row items-start md:items-center justify-between gap-6">
|
|
590
|
+
<div class="flex items-center gap-2">
|
|
591
|
+
<div class="w-6 h-6 rounded-md bg-plume-500 flex items-center justify-center">
|
|
592
|
+
<svg width="12" height="12" viewBox="0 0 14 14" fill="none">
|
|
593
|
+
<path d="M2 7C2 4.24 4.24 2 7 2s5 2.24 5 5-2.24 5-5 5" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
|
|
594
|
+
<circle cx="7" cy="7" r="1.5" fill="white"/>
|
|
595
|
+
</svg>
|
|
596
|
+
</div>
|
|
597
|
+
<span class="text-white/60 text-sm font-medium">Plume</span>
|
|
598
|
+
<span class="text-white/20 text-sm">— built for teams who ship</span>
|
|
599
|
+
</div>
|
|
600
|
+
<div class="flex flex-wrap gap-6 text-sm text-white/30">
|
|
601
|
+
<a href="#" class="hover:text-white/60 transition-colors">Privacy</a>
|
|
602
|
+
<a href="#" class="hover:text-white/60 transition-colors">Terms</a>
|
|
603
|
+
<a href="#" class="hover:text-white/60 transition-colors">Changelog</a>
|
|
604
|
+
<a href="#" class="hover:text-white/60 transition-colors">Status</a>
|
|
605
|
+
<a href="#" class="hover:text-white/60 transition-colors">API</a>
|
|
606
|
+
<a href="mailto:hi@plume.dev" class="hover:text-white/60 transition-colors">Contact</a>
|
|
607
|
+
</div>
|
|
608
|
+
</div>
|
|
609
|
+
</footer>
|
|
610
|
+
</body>
|
|
611
|
+
</html>
|