code-squad-cli 1.2.3 → 1.2.4

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.
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Flip</title>
7
- <script type="module" crossorigin src="/assets/index-CgNq-jV5.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BqoCRrTA.css">
7
+ <script type="module" crossorigin src="/assets/index-DmJdj9bX.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-DTf1sRAX.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
package/dist/index.js CHANGED
@@ -433,9 +433,34 @@ var DEFAULT_IGNORES = [
433
433
  "yarn.lock",
434
434
  ".DS_Store"
435
435
  ];
436
+ var VISIBLE_DOTFILES = /* @__PURE__ */ new Set([
437
+ ".gitignore",
438
+ ".gitattributes",
439
+ ".env.example",
440
+ ".env.local.example",
441
+ ".eslintrc",
442
+ ".eslintrc.js",
443
+ ".eslintrc.cjs",
444
+ ".eslintrc.json",
445
+ ".eslintrc.yml",
446
+ ".prettierrc",
447
+ ".prettierrc.js",
448
+ ".prettierrc.cjs",
449
+ ".prettierrc.json",
450
+ ".prettierrc.yml",
451
+ ".editorconfig",
452
+ ".npmrc",
453
+ ".nvmrc",
454
+ ".node-version",
455
+ ".dockerignore",
456
+ ".browserslistrc",
457
+ ".babelrc",
458
+ ".babelrc.js",
459
+ ".babelrc.json"
460
+ ]);
436
461
  function shouldIgnore(name) {
437
- if (name.startsWith(".") && name !== ".gitignore" && name !== ".env.example") {
438
- return true;
462
+ if (name.startsWith(".")) {
463
+ return !VISIBLE_DOTFILES.has(name);
439
464
  }
440
465
  return DEFAULT_IGNORES.includes(name);
441
466
  }
@@ -510,42 +535,126 @@ import { Router as Router2 } from "express";
510
535
  import fs3 from "fs";
511
536
  import path3 from "path";
512
537
  var router2 = Router2();
538
+ var extensionMap = {
539
+ // JavaScript/TypeScript
540
+ js: "javascript",
541
+ mjs: "javascript",
542
+ cjs: "javascript",
543
+ ts: "typescript",
544
+ mts: "typescript",
545
+ cts: "typescript",
546
+ tsx: "tsx",
547
+ jsx: "jsx",
548
+ // Systems languages
549
+ rs: "rust",
550
+ go: "go",
551
+ c: "c",
552
+ cpp: "cpp",
553
+ cc: "cpp",
554
+ cxx: "cpp",
555
+ h: "cpp",
556
+ hpp: "cpp",
557
+ hxx: "cpp",
558
+ // JVM languages
559
+ java: "java",
560
+ kt: "kotlin",
561
+ kts: "kotlin",
562
+ scala: "scala",
563
+ groovy: "groovy",
564
+ // Scripting languages
565
+ py: "python",
566
+ rb: "ruby",
567
+ php: "php",
568
+ pl: "perl",
569
+ lua: "lua",
570
+ // Mobile
571
+ swift: "swift",
572
+ m: "objective-c",
573
+ mm: "objective-cpp",
574
+ dart: "dart",
575
+ // Web
576
+ html: "html",
577
+ htm: "html",
578
+ css: "css",
579
+ scss: "scss",
580
+ sass: "sass",
581
+ less: "less",
582
+ vue: "vue",
583
+ svelte: "svelte",
584
+ astro: "astro",
585
+ // Data formats
586
+ json: "json",
587
+ jsonc: "jsonc",
588
+ yaml: "yaml",
589
+ yml: "yaml",
590
+ toml: "toml",
591
+ xml: "xml",
592
+ csv: "csv",
593
+ // Documentation
594
+ md: "markdown",
595
+ mdx: "mdx",
596
+ rst: "rst",
597
+ tex: "latex",
598
+ // Shell
599
+ sh: "bash",
600
+ bash: "bash",
601
+ zsh: "bash",
602
+ fish: "fish",
603
+ ps1: "powershell",
604
+ bat: "batch",
605
+ cmd: "batch",
606
+ // Database
607
+ sql: "sql",
608
+ prisma: "prisma",
609
+ graphql: "graphql",
610
+ gql: "graphql",
611
+ // Config
612
+ ini: "ini",
613
+ conf: "ini",
614
+ cfg: "ini",
615
+ env: "dotenv",
616
+ // Other
617
+ dockerfile: "dockerfile",
618
+ makefile: "makefile",
619
+ cmake: "cmake",
620
+ diff: "diff",
621
+ patch: "diff"
622
+ };
623
+ var filenameMap = {
624
+ "Makefile": "makefile",
625
+ "makefile": "makefile",
626
+ "GNUmakefile": "makefile",
627
+ "Dockerfile": "dockerfile",
628
+ "dockerfile": "dockerfile",
629
+ "Containerfile": "dockerfile",
630
+ "Jenkinsfile": "groovy",
631
+ "Vagrantfile": "ruby",
632
+ "Gemfile": "ruby",
633
+ "Rakefile": "ruby",
634
+ "Brewfile": "ruby",
635
+ "Podfile": "ruby",
636
+ "Fastfile": "ruby",
637
+ "Guardfile": "ruby",
638
+ ".gitignore": "gitignore",
639
+ ".gitattributes": "gitattributes",
640
+ ".editorconfig": "editorconfig",
641
+ ".bashrc": "bash",
642
+ ".zshrc": "bash",
643
+ ".bash_profile": "bash",
644
+ ".profile": "bash",
645
+ "CMakeLists.txt": "cmake",
646
+ "CODEOWNERS": "gitignore"
647
+ };
513
648
  function detectLanguage(filePath) {
649
+ const basename2 = path3.basename(filePath);
650
+ if (filenameMap[basename2]) {
651
+ return filenameMap[basename2];
652
+ }
514
653
  const ext = path3.extname(filePath).slice(1).toLowerCase();
515
- const languageMap = {
516
- rs: "rust",
517
- js: "javascript",
518
- ts: "typescript",
519
- tsx: "tsx",
520
- jsx: "jsx",
521
- py: "python",
522
- go: "go",
523
- java: "java",
524
- c: "c",
525
- cpp: "cpp",
526
- cc: "cpp",
527
- cxx: "cpp",
528
- h: "cpp",
529
- hpp: "cpp",
530
- md: "markdown",
531
- json: "json",
532
- yaml: "yaml",
533
- yml: "yaml",
534
- toml: "toml",
535
- html: "html",
536
- css: "css",
537
- scss: "scss",
538
- sh: "bash",
539
- bash: "bash",
540
- sql: "sql",
541
- rb: "ruby",
542
- swift: "swift",
543
- kt: "kotlin",
544
- kts: "kotlin",
545
- xml: "xml",
546
- vue: "vue"
547
- };
548
- return languageMap[ext] || "plaintext";
654
+ if (extensionMap[ext]) {
655
+ return extensionMap[ext];
656
+ }
657
+ return "text";
549
658
  }
550
659
  router2.get("/", (req, res) => {
551
660
  const state = req.app.locals.state;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-squad-cli",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "csq": "./dist/index.js"
@@ -1 +0,0 @@
1
- *{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-hover: #30363d;--bg-selected: #1f6feb26;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--border-color: #30363d;--border-subtle: #21262d;--accent-primary: #238636;--accent-primary-hover: #2ea043;--accent-secondary: #1f6feb;--git-modified: #d29922;--git-untracked: #3fb950;--git-deleted: #f85149;--git-added: #3fb950;--line-number-color: #6e7681;--selection-bg: #264f78;--diff-add-bg: rgba(46, 160, 67, .15);--diff-add-text: #7ee787;--diff-add-border: rgba(46, 160, 67, .4);--diff-delete-bg: rgba(248, 81, 73, .15);--diff-delete-text: #ffa198;--diff-delete-border: rgba(248, 81, 73, .4);--diff-hunk-bg: rgba(56, 139, 253, .1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--font-mono: "SF Mono", "Menlo", "Monaco", "Consolas", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--transition-fast: .15s ease;--transition-normal: .2s ease}body{font-family:var(--font-sans);font-size:14px;background-color:var(--bg-primary);color:var(--text-primary);height:100vh;overflow:hidden}#root{height:100%}.app{display:flex;flex-direction:column;height:100%}.main-content{display:flex;flex:1;overflow:hidden}.toolbar{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 var(--space-3);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.toolbar-left,.toolbar-center,.toolbar-right{display:flex;align-items:center;gap:var(--space-2)}.toolbar-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-1);height:28px;padding:0 var(--space-2);border:none;background:transparent;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.toolbar-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.toolbar-btn.active{background-color:var(--bg-tertiary);color:var(--text-primary)}.toolbar-btn svg{flex-shrink:0}.diff-toggle{min-width:100px}.diff-mode-label{font-size:12px}.sidebar{width:280px;background-color:var(--bg-secondary);border-right:1px solid var(--border-subtle);overflow:hidden;display:flex;flex-direction:column;transition:width var(--transition-normal),opacity var(--transition-fast)}.sidebar.collapsed{width:0;opacity:0;border-right:none}.content{flex:1;overflow:hidden;display:flex;flex-direction:column;min-width:0}.staging-panel{width:320px;background-color:var(--bg-secondary);border-left:1px solid var(--border-subtle);overflow:hidden;display:flex;flex-direction:column;transition:width var(--transition-normal),opacity var(--transition-fast)}.staging-panel.collapsed{width:0;opacity:0;border-left:none}.footer{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background-color:var(--bg-secondary);border-top:1px solid var(--border-subtle);gap:var(--space-4)}.footer-actions{display:flex;gap:var(--space-2)}.file-tree{display:flex;flex-direction:column;height:100%}.file-tree-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.file-tree-header-actions{display:flex;gap:var(--space-1)}.filter-btn{display:flex;align-items:center;gap:var(--space-1);padding:2px 8px;border:none;background:transparent;border-radius:4px;color:var(--text-muted);font-size:10px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.filter-btn:hover{background-color:var(--bg-hover);color:var(--text-secondary)}.filter-btn.active{background-color:var(--accent-secondary);color:#fff}.filter-btn .count{background-color:var(--bg-hover);padding:0 4px;border-radius:3px;font-size:9px}.filter-btn.active .count{background-color:#fff3}.file-tree-content{flex:1;overflow-y:auto;padding:var(--space-1) 0}.tree-item{display:flex;align-items:center;padding:var(--space-1) var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px}.tree-item:hover{background-color:var(--bg-hover)}.tree-icon{font-size:10px;width:14px;text-align:center;color:var(--text-secondary)}.tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-badge{font-size:10px;font-weight:600;padding:1px 4px;border-radius:3px}.git-badge-modified{color:var(--git-modified);background-color:#d2992226}.git-badge-untracked{color:var(--git-untracked);background-color:#3fb95026}.git-badge-deleted{color:var(--git-deleted);background-color:#f8514926}.git-badge-added{color:var(--git-added);background-color:#3fb95026}.code-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.code-viewer-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);gap:var(--space-2)}.code-viewer-empty .hint{font-size:12px;color:var(--text-muted)}.code-viewer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.file-path{font-size:13px;font-family:var(--font-mono)}.file-language{font-size:11px;color:var(--text-secondary);text-transform:uppercase}.code-viewer-content{flex:1;overflow:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.code-line{display:flex;min-height:20px;cursor:pointer}.code-line:hover{background-color:var(--bg-hover)}.code-line-selected{background-color:var(--selection-bg)!important}.code-line-added{background-color:var(--diff-add-bg)!important}.code-line-added:hover{background-color:#2ea04340!important}.code-line-deleted{background-color:var(--diff-delete-bg)!important}.code-line-deleted:hover{background-color:#f8514940!important}.line-number{display:inline-block;min-width:50px;padding:0 var(--space-3);text-align:right;color:var(--line-number-color);-webkit-user-select:none;user-select:none;background-color:var(--bg-tertiary);border-right:1px solid var(--border-subtle)}.code-line code{flex:1;padding:0 var(--space-3);white-space:pre;background:transparent}.code-line code.hljs{background:transparent;padding:0 var(--space-3)}.code-content{flex:1;padding:0 var(--space-3);white-space:pre}.staging-list{display:flex;flex-direction:column;height:100%}.staging-list-empty{padding:var(--space-4)}.staging-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.staging-hint{font-size:12px;color:var(--text-muted);line-height:1.5}.staging-items{flex:1;overflow-y:auto;padding:var(--space-2)}.staging-item{background-color:var(--bg-tertiary);border-radius:6px;padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2)}.staging-item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-1)}.staging-location{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.staging-comment{font-size:13px;line-height:1.4}.comment-input{display:flex;align-items:center;gap:var(--space-3);flex:1}.comment-selection{font-family:var(--font-mono);font-size:12px;color:var(--accent-secondary);white-space:nowrap}.comment-field{flex:1;padding:var(--space-2) var(--space-3);background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px;transition:border-color var(--transition-fast)}.comment-field:focus{outline:none;border-color:var(--accent-secondary)}.comment-hint{color:var(--text-muted);font-size:13px}.fuzzy-finder-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0009;display:flex;justify-content:center;padding-top:80px;z-index:100}.fuzzy-finder{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 16px 48px #00000080;width:600px;max-height:400px;display:flex;flex-direction:column;overflow:hidden}.fuzzy-finder-input{padding:var(--space-4);background-color:var(--bg-tertiary);border:none;border-bottom:1px solid var(--border-subtle);color:var(--text-primary);font-size:16px}.fuzzy-finder-input:focus{outline:none}.fuzzy-finder-results{flex:1;overflow-y:auto}.fuzzy-finder-item{padding:var(--space-3) var(--space-4);cursor:pointer;font-family:var(--font-mono);font-size:13px}.fuzzy-finder-item:hover,.fuzzy-finder-item-selected{background-color:var(--bg-selected)}.fuzzy-finder-empty{padding:var(--space-4);color:var(--text-muted);text-align:center}.btn{padding:var(--space-2) var(--space-4);border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background-color var(--transition-fast)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--accent-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--accent-primary-hover)}.btn-secondary{background-color:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-hover)}.btn-small{padding:var(--space-1) var(--space-3)}.btn-link{background:none;border:none;color:var(--accent-secondary);cursor:pointer;font-size:11px}.btn-link:hover{text-decoration:underline}.btn-icon{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:2px 6px}.btn-icon:hover{color:var(--text-primary)}.diff-side-by-side{display:flex;height:100%;overflow:hidden}.diff-pane{flex:1;overflow:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.diff-pane-left{border-right:1px solid var(--border-color)}.diff-pane-header{padding:var(--space-2) var(--space-3);background-color:var(--bg-tertiary);border-bottom:1px solid var(--border-subtle);font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.code-viewer-loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#484f58}::-webkit-scrollbar-corner{background:transparent}