Skip to content

Commit 4b6b520

Browse files
committed
Initial release
Confitty is a visual configuration builder for the Kitty terminal. Tweak fonts, cursor, colors, scrollback, mouse, performance, bell, window layout, tab bar, advanced shell, OS-specific, and keyboard shortcuts side-by-side with a live terminal preview, then export a clean kitty.conf that only includes values different from Kitty's defaults. Stack: Angular 21 (standalone components + signals), TypeScript 6, Tailwind 3, Bun. Deploys as a static site on Cloudflare Pages. Features: - Live terminal preview rendering background, opacity, blur, tint, font, padding, margins, border, cursor (block/beam/underline) with blink interval, selection colors, ANSI 16-color palette, tab bar in fade, slant, separator, powerline (angled/slanted/round) styles, and URL decoration that honours url_style and url_color - 47 color themes including Confitty, Catppuccin, Tokyo Night, Dracula, Gruvbox, Nord, Rosé Pine, Kanagawa, Solarized, Ayu, Material, Nightfox, One Dark, GitHub, IntelliJ, Cobalt2 and more, plus full presets for performance, minimal, gaming and power-user profiles - Smart diff export — only writes settings that differ from the corresponding Kitty default - Version selector for Kitty 0.15 → 0.47, with per-option availability gating and deprecation hints - Import and round-trip existing kitty.conf, preserving custom directives - Global fuzzy search across 200+ options with keyboard navigation - Mobile-first layout: full-screen preview overlay on small viewports, collapsible sidebar, accessible icon buttons with proper labels Highlights of the implementation: - Strict TypeScript (noUncheckedIndexedAccess, noPropertyAccessFromIndex Signature, strictTemplates, strictStandalone), zero `any` casts in src/ - Modular live-preview package: color-utils, terminal-session, terminal- chrome, terminal-tab-bar, terminal-screen, terminal-cursor, terminal- palette and a slim terminal-window orchestrator - Cloudflare Pages: SPA `_redirects`, HSTS preload, COOP / CORP, Permissions-Policy, long-cache for hashed assets, 0-cache for index.html - Hardened CSP via meta tag; Google Fonts loaded only when a preset requires a web font - Real PNG icon set (192, 512, maskable 512) and 1200x630 OG card for social previews; manifest.json references every shipped file - Two JSON-LD blocks (WebApplication + FAQPage) both validate - CI on GitHub Actions: pinned action SHAs, typecheck + production build, 10 minute timeout, concurrency cancel-in-progress - Issue templates (bug, feature, theme), pull-request template, SECURITY.md, FUNDING.yml Run locally: bun install bun start Build: bun run build:prod # output: dist/confitty/browser Live: https://confitty.app
0 parents  commit 4b6b520

90 files changed

Lines changed: 12967 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cloudflare-pages.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"build": {
3+
"command": "bun run build:prod",
4+
"output": "dist/confitty/browser",
5+
"node_version": "22"
6+
}
7+
}

.github/FUNDING.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ko_fi: xcutiboo
2+
github: [xcutiboo]
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Bug report
2+
description: Something in Confitty doesn't work the way it should.
3+
title: "bug: "
4+
labels: ["bug"]
5+
body:
6+
- type: textarea
7+
id: what-happened
8+
attributes:
9+
label: What happened
10+
description: What did you do, what did you expect, and what did you get instead?
11+
placeholder: |
12+
Steps:
13+
1. ...
14+
2. ...
15+
16+
Expected: ...
17+
Got: ...
18+
validations:
19+
required: true
20+
21+
- type: input
22+
id: browser
23+
attributes:
24+
label: Browser and version
25+
placeholder: "Firefox 132 / Chrome 130 / Safari 18"
26+
validations:
27+
required: true
28+
29+
- type: input
30+
id: os
31+
attributes:
32+
label: Operating system
33+
placeholder: "macOS 14.6 / Ubuntu 24.04 / Windows 11"
34+
validations:
35+
required: true
36+
37+
- type: dropdown
38+
id: area
39+
attributes:
40+
label: Area
41+
options:
42+
- Live preview
43+
- Config export / kitty.conf output
44+
- Config import
45+
- Forms / controls
46+
- Themes and presets
47+
- Search
48+
- Performance
49+
- Other
50+
validations:
51+
required: true
52+
53+
- type: textarea
54+
id: config
55+
attributes:
56+
label: Relevant config (optional)
57+
description: Paste the relevant slice of your kitty.conf or the exported output.
58+
render: ini
59+
60+
- type: textarea
61+
id: console
62+
attributes:
63+
label: Console errors (optional)
64+
description: Anything printed in the browser devtools console.
65+
render: shell

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Discord
4+
url: https://discord.gg/kxG674AadQ
5+
about: Questions, config help, theme suggestions, general chat.
6+
- name: Kitty Terminal docs
7+
url: https://sw.kovidgoyal.net/kitty/conf/
8+
about: Reference for the upstream config options Confitty exposes.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Feature request
2+
description: Suggest a new control, workflow improvement, or Kitty option Confitty doesn't cover yet.
3+
title: "feature: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: The problem
10+
description: What are you trying to do today that Confitty makes harder than it should be?
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: proposal
16+
attributes:
17+
label: Proposed change
18+
description: How would you like it to work? UI sketches and references welcome.
19+
validations:
20+
required: true
21+
22+
- type: input
23+
id: kitty-option
24+
attributes:
25+
label: Kitty option (if applicable)
26+
description: Name of the underlying kitty.conf directive, if this maps to one.
27+
placeholder: "e.g. background_image_layout"
28+
29+
- type: textarea
30+
id: alternatives
31+
attributes:
32+
label: Alternatives considered
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Theme suggestion
2+
description: Suggest a new color theme to ship with Confitty.
3+
title: "theme: "
4+
labels: ["theme"]
5+
body:
6+
- type: input
7+
id: theme-name
8+
attributes:
9+
label: Theme name
10+
placeholder: "e.g. Rosé Pine Moon"
11+
validations:
12+
required: true
13+
14+
- type: input
15+
id: source
16+
attributes:
17+
label: Source / author
18+
description: Where does this theme come from? Author site, repo, original kitty.conf, etc.
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: palette
24+
attributes:
25+
label: 16-color palette
26+
description: Full palette including foreground, background, selection, and color0..color15.
27+
render: ini
28+
placeholder: |
29+
foreground #...
30+
background #...
31+
selection_foreground #...
32+
selection_background #...
33+
color0 #...
34+
color1 #...
35+
...
36+
validations:
37+
required: true
38+
39+
- type: checkboxes
40+
id: confirmation
41+
attributes:
42+
label: Confirmation
43+
options:
44+
- label: I have permission (or this theme is openly licensed) to redistribute it.
45+
required: true
46+
- label: I cross-checked the hex values against the original source.
47+
required: true

.github/pull_request_template.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## Summary
2+
3+
<!-- One or two sentences. What does this change and why. -->
4+
5+
## Type
6+
7+
- [ ] Bug fix
8+
- [ ] Feature
9+
- [ ] Theme / preset
10+
- [ ] Refactor / chore
11+
- [ ] Documentation
12+
13+
## Checklist
14+
15+
- [ ] `bun run typecheck` passes
16+
- [ ] `bun run build:prod` passes
17+
- [ ] Verified visually in the dev server (live preview and export both behave correctly)
18+
- [ ] No unrelated changes bundled in
19+
- [ ] If this adds a Kitty option, it round-trips through parser and generator with the correct default
20+
21+
## Notes
22+
23+
<!-- Anything reviewers should be aware of: screenshots, follow-ups, known limitations. -->

.github/workflows/ci.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [confitty]
6+
pull_request:
7+
branches: [confitty]
8+
9+
concurrency:
10+
group: ci-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
permissions:
14+
contents: read
15+
16+
env:
17+
NX_CLOUD_ACCESS_TOKEN: ""
18+
NX_NO_CLOUD: "true"
19+
NX_DAEMON: "false"
20+
21+
jobs:
22+
build:
23+
name: Type check and production build
24+
runs-on: ubuntu-latest
25+
timeout-minutes: 10
26+
27+
steps:
28+
- name: Checkout
29+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
30+
31+
- name: Setup Bun
32+
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
33+
with:
34+
bun-version: 1.3.11
35+
36+
- name: Install dependencies
37+
run: bun install
38+
39+
- name: Type check
40+
run: bun run typecheck
41+
42+
- name: Production build
43+
run: bun run build:prod

.gitignore

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Build artifacts
2+
.angular
3+
dist
4+
5+
# Dependencies
6+
node_modules
7+
bun.lockb
8+
9+
# Environment
10+
.env
11+
.env.local
12+
.env.production
13+
14+
# Editors and IDEs
15+
.vscode/
16+
.idea/
17+
*.swp
18+
*.swo
19+
*~
20+
21+
# OS
22+
.DS_Store
23+
.DS_Store?
24+
._*
25+
.Spotlight-V100
26+
.Trashes
27+
ehthumbs.db
28+
Thumbs.db
29+
30+
# Logs
31+
*.log
32+
npm-debug.log*
33+
yarn-debug.log*
34+
yarn-error.log*
35+
bun.log
36+
37+
# Runtime
38+
pids
39+
*.pid
40+
*.seed
41+
*.pid.lock
42+
43+
# Coverage
44+
coverage
45+
*.lcov
46+
47+
# Scratch
48+
tmp/
49+
temp/
50+
DEPLOYMENT.md
51+
AGENTS.md
52+
53+
# Nx
54+
.nx/cache
55+
.nx/workspace-data
56+
.nx/polygraph
57+
58+
# Tooling caches not meant for VCS
59+
.cursorrules
60+
.claude/
61+
.github/agents/
62+
.github/prompts/
63+
.github/skills/
64+
.wrangler/

0 commit comments

Comments
 (0)