gitcast 1.0.20__tar.gz → 1.0.22__tar.gz

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.
Files changed (89) hide show
  1. {gitcast-1.0.20/gitcast.egg-info → gitcast-1.0.22}/PKG-INFO +1 -1
  2. {gitcast-1.0.20 → gitcast-1.0.22/gitcast.egg-info}/PKG-INFO +1 -1
  3. {gitcast-1.0.20 → gitcast-1.0.22}/setup.py +1 -1
  4. {gitcast-1.0.20 → gitcast-1.0.22}/web/index.html +61 -55
  5. {gitcast-1.0.20 → gitcast-1.0.22}/.env.example +0 -0
  6. {gitcast-1.0.20 → gitcast-1.0.22}/LICENSE +0 -0
  7. {gitcast-1.0.20 → gitcast-1.0.22}/MANIFEST.in +0 -0
  8. {gitcast-1.0.20 → gitcast-1.0.22}/README.md +0 -0
  9. {gitcast-1.0.20 → gitcast-1.0.22}/ai/__init__.py +0 -0
  10. {gitcast-1.0.20 → gitcast-1.0.22}/ai/formatter.py +0 -0
  11. {gitcast-1.0.20 → gitcast-1.0.22}/ai/generator.py +0 -0
  12. {gitcast-1.0.20 → gitcast-1.0.22}/ai/prompts.py +0 -0
  13. {gitcast-1.0.20 → gitcast-1.0.22}/ai/viral_patterns.py +0 -0
  14. {gitcast-1.0.20 → gitcast-1.0.22}/api/__init__.py +0 -0
  15. {gitcast-1.0.20 → gitcast-1.0.22}/api/analytics.py +0 -0
  16. {gitcast-1.0.20 → gitcast-1.0.22}/api/auth.py +0 -0
  17. {gitcast-1.0.20 → gitcast-1.0.22}/api/auth_middleware.py +0 -0
  18. {gitcast-1.0.20 → gitcast-1.0.22}/api/auth_routes.py +0 -0
  19. {gitcast-1.0.20 → gitcast-1.0.22}/api/monitoring.py +0 -0
  20. {gitcast-1.0.20 → gitcast-1.0.22}/api/payload.py +0 -0
  21. {gitcast-1.0.20 → gitcast-1.0.22}/api/ratelimit.py +0 -0
  22. {gitcast-1.0.20 → gitcast-1.0.22}/api/routes.py +0 -0
  23. {gitcast-1.0.20 → gitcast-1.0.22}/api/server.py +0 -0
  24. {gitcast-1.0.20 → gitcast-1.0.22}/api/validators.py +0 -0
  25. {gitcast-1.0.20 → gitcast-1.0.22}/assets/__init__.py +0 -0
  26. {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-16x16.png +0 -0
  27. {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-32x32.png +0 -0
  28. {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-64x64.png +0 -0
  29. {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon.ico +0 -0
  30. {gitcast-1.0.20 → gitcast-1.0.22}/assets/icon.png +0 -0
  31. {gitcast-1.0.20 → gitcast-1.0.22}/cli/.env.example +0 -0
  32. {gitcast-1.0.20 → gitcast-1.0.22}/cli/__init__.py +0 -0
  33. {gitcast-1.0.20 → gitcast-1.0.22}/cli/gitcast.py +0 -0
  34. {gitcast-1.0.20 → gitcast-1.0.22}/config/__init__.py +0 -0
  35. {gitcast-1.0.20 → gitcast-1.0.22}/config/settings.py +0 -0
  36. {gitcast-1.0.20 → gitcast-1.0.22}/core/__init__.py +0 -0
  37. {gitcast-1.0.20 → gitcast-1.0.22}/core/capture.py +0 -0
  38. {gitcast-1.0.20 → gitcast-1.0.22}/core/codebase_reader.py +0 -0
  39. {gitcast-1.0.20 → gitcast-1.0.22}/core/framing.py +0 -0
  40. {gitcast-1.0.20 → gitcast-1.0.22}/core/hotkey.py +0 -0
  41. {gitcast-1.0.20 → gitcast-1.0.22}/core/log_stream.py +0 -0
  42. {gitcast-1.0.20 → gitcast-1.0.22}/core/ocr.py +0 -0
  43. {gitcast-1.0.20 → gitcast-1.0.22}/core/screenshot_session.py +0 -0
  44. {gitcast-1.0.20 → gitcast-1.0.22}/core/security.py +0 -0
  45. {gitcast-1.0.20 → gitcast-1.0.22}/core/tray.py +0 -0
  46. {gitcast-1.0.20 → gitcast-1.0.22}/core/trigger.py +0 -0
  47. {gitcast-1.0.20 → gitcast-1.0.22}/docs/api-keys.md +0 -0
  48. {gitcast-1.0.20 → gitcast-1.0.22}/docs/article-generator.md +0 -0
  49. {gitcast-1.0.20 → gitcast-1.0.22}/docs/capture-flow.md +0 -0
  50. {gitcast-1.0.20 → gitcast-1.0.22}/docs/changelog.md +0 -0
  51. {gitcast-1.0.20 → gitcast-1.0.22}/docs/contributing.md +0 -0
  52. {gitcast-1.0.20 → gitcast-1.0.22}/docs/dashboard.md +0 -0
  53. {gitcast-1.0.20 → gitcast-1.0.22}/docs/insights.md +0 -0
  54. {gitcast-1.0.20 → gitcast-1.0.22}/docs/introduction.md +0 -0
  55. {gitcast-1.0.20 → gitcast-1.0.22}/docs/post-formats.md +0 -0
  56. {gitcast-1.0.20 → gitcast-1.0.22}/docs/providers.md +0 -0
  57. {gitcast-1.0.20 → gitcast-1.0.22}/docs/pypi-errors.md +0 -0
  58. {gitcast-1.0.20 → gitcast-1.0.22}/docs/quickstart.md +0 -0
  59. {gitcast-1.0.20 → gitcast-1.0.22}/docs/sprint-mode.md +0 -0
  60. {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/SOURCES.txt +0 -0
  61. {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/dependency_links.txt +0 -0
  62. {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/entry_points.txt +0 -0
  63. {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/requires.txt +0 -0
  64. {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/top_level.txt +0 -0
  65. {gitcast-1.0.20 → gitcast-1.0.22}/publisher/__init__.py +0 -0
  66. {gitcast-1.0.20 → gitcast-1.0.22}/publisher/clipboard.py +0 -0
  67. {gitcast-1.0.20 → gitcast-1.0.22}/publisher/twitter.py +0 -0
  68. {gitcast-1.0.20 → gitcast-1.0.22}/pyproject.toml +0 -0
  69. {gitcast-1.0.20 → gitcast-1.0.22}/requirements.txt +0 -0
  70. {gitcast-1.0.20 → gitcast-1.0.22}/setup.cfg +0 -0
  71. {gitcast-1.0.20 → gitcast-1.0.22}/storage/__init__.py +0 -0
  72. {gitcast-1.0.20 → gitcast-1.0.22}/storage/cleanup.py +0 -0
  73. {gitcast-1.0.20 → gitcast-1.0.22}/storage/engagement.py +0 -0
  74. {gitcast-1.0.20 → gitcast-1.0.22}/storage/insights.py +0 -0
  75. {gitcast-1.0.20 → gitcast-1.0.22}/storage/key_manager.py +0 -0
  76. {gitcast-1.0.20 → gitcast-1.0.22}/storage/logger.py +0 -0
  77. {gitcast-1.0.20 → gitcast-1.0.22}/storage/metrics.py +0 -0
  78. {gitcast-1.0.20 → gitcast-1.0.22}/storage/sprint.py +0 -0
  79. {gitcast-1.0.20 → gitcast-1.0.22}/storage/streak.py +0 -0
  80. {gitcast-1.0.20 → gitcast-1.0.22}/storage/supabase_client.py +0 -0
  81. {gitcast-1.0.20 → gitcast-1.0.22}/storage/tone_memory.py +0 -0
  82. {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_keys.py +0 -0
  83. {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_ocr_fix.py +0 -0
  84. {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_validation.py +0 -0
  85. {gitcast-1.0.20 → gitcast-1.0.22}/ui/__init__.py +0 -0
  86. {gitcast-1.0.20 → gitcast-1.0.22}/ui/popup.py +0 -0
  87. {gitcast-1.0.20 → gitcast-1.0.22}/ui/review.py +0 -0
  88. {gitcast-1.0.20 → gitcast-1.0.22}/web/__init__.py +0 -0
  89. {gitcast-1.0.20 → gitcast-1.0.22}/web/landing.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitcast
3
- Version: 1.0.20
3
+ Version: 1.0.22
4
4
  Summary: git diff → published post. under 60 seconds.
5
5
  Home-page: https://github.com/drizzy765/gitcast
6
6
  Author: Timilehin Agoro
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitcast
3
- Version: 1.0.20
3
+ Version: 1.0.22
4
4
  Summary: git diff → published post. under 60 seconds.
5
5
  Home-page: https://github.com/drizzy765/gitcast
6
6
  Author: Timilehin Agoro
@@ -51,7 +51,7 @@ if os.path.exists(requirements_path):
51
51
 
52
52
  setup(
53
53
  name="gitcast",
54
- version="1.0.20",
54
+ version="1.0.22",
55
55
  description="git diff → published post. under 60 seconds.",
56
56
  long_description=long_description,
57
57
  long_description_content_type="text/markdown",
@@ -2206,6 +2206,55 @@
2206
2206
  pollingTimer: null
2207
2207
  };
2208
2208
 
2209
+ const tabState = {
2210
+ x_post: { content: '', history: [] },
2211
+ linkedin: { content: '', history: [] },
2212
+ pr_desc: { content: '', history: [] },
2213
+ quick_win: { content: '', history: [] },
2214
+ article: { content: '', history: [] },
2215
+ };
2216
+
2217
+ const TAB_CHIPS = {
2218
+ x_post: [
2219
+ "make it viral",
2220
+ "add a hook",
2221
+ "turn into thread",
2222
+ "more punchy",
2223
+ "rage bait",
2224
+ "deep tech version",
2225
+ ],
2226
+ linkedin: [
2227
+ "corporate tone",
2228
+ "make it viral",
2229
+ "add statistics",
2230
+ "thought leadership",
2231
+ "shorter hook",
2232
+ "add emojis",
2233
+ ],
2234
+ pr_desc: [
2235
+ "more technical",
2236
+ "add test details",
2237
+ "simplify language",
2238
+ "add risk notes",
2239
+ "add screenshots section",
2240
+ ],
2241
+ quick_win: [
2242
+ "punchier",
2243
+ "add emoji",
2244
+ "more confident",
2245
+ "shorter",
2246
+ "add a number",
2247
+ ],
2248
+ article: [
2249
+ "make it longer",
2250
+ "expand intro",
2251
+ "add code examples",
2252
+ "make it conversational",
2253
+ "add conclusion",
2254
+ "add TL;DR",
2255
+ ],
2256
+ };
2257
+
2209
2258
  const KEY_PROVIDERS = ['groq', 'gemini', 'kimi', 'cerebras', 'openrouter'];
2210
2259
  const LOG_LEVEL_CLASS = {
2211
2260
  OK: 'ok',
@@ -2325,12 +2374,13 @@
2325
2374
 
2326
2375
  const inputEl = document.getElementById('ai-refine-input');
2327
2376
  if (inputEl) {
2328
- inputEl.onkeypress = (e) => {
2329
- if (e.key === 'Enter') sendRefinement();
2330
- };
2331
- inputEl.onkeydown = (e) => {
2332
- if (e.key === 'Enter') sendRefinement();
2333
- };
2377
+ inputEl.addEventListener('keydown', function(e) {
2378
+ if (e.key === 'Enter' && !e.shiftKey) {
2379
+ e.preventDefault();
2380
+ e.stopPropagation();
2381
+ sendRefinement();
2382
+ }
2383
+ });
2334
2384
  }
2335
2385
 
2336
2386
  // Setup input event listeners for each tab's editor
@@ -3268,13 +3318,7 @@
3268
3318
  }
3269
3319
 
3270
3320
  // --- Logic Handlers ---
3271
- const tabState = {
3272
- x_post: { content: '', history: [] },
3273
- linkedin: { content: '', history: [] },
3274
- pr_desc: { content: '', history: [] },
3275
- quick_win: { content: '', history: [] },
3276
- article: { content: '', history: [] },
3277
- };
3321
+
3278
3322
 
3279
3323
  function getActiveTab() {
3280
3324
  if (state.view === 'article') return 'article';
@@ -3436,46 +3480,7 @@
3436
3480
  if (el) el.style.display = 'block';
3437
3481
  }
3438
3482
 
3439
- const TAB_CHIPS = {
3440
- x_post: [
3441
- "make it viral",
3442
- "add a hook",
3443
- "turn into thread",
3444
- "more punchy",
3445
- "rage bait",
3446
- "deep tech version",
3447
- ],
3448
- linkedin: [
3449
- "corporate tone",
3450
- "make it viral",
3451
- "add statistics",
3452
- "thought leadership",
3453
- "shorter hook",
3454
- "add emojis",
3455
- ],
3456
- pr_desc: [
3457
- "more technical",
3458
- "add test details",
3459
- "simplify language",
3460
- "add risk notes",
3461
- "add screenshots section",
3462
- ],
3463
- quick_win: [
3464
- "punchier",
3465
- "add emoji",
3466
- "more confident",
3467
- "shorter",
3468
- "add a number",
3469
- ],
3470
- article: [
3471
- "make it longer",
3472
- "expand intro",
3473
- "add code examples",
3474
- "make it conversational",
3475
- "add conclusion",
3476
- "add TL;DR",
3477
- ],
3478
- };
3483
+
3479
3484
 
3480
3485
  function updateAiChips(tabKey) {
3481
3486
  const chips = TAB_CHIPS[tabKey] || [];
@@ -3486,11 +3491,12 @@
3486
3491
  const btn = document.createElement('button');
3487
3492
  btn.className = 'chip-btn chip';
3488
3493
  btn.textContent = `[${chip.toUpperCase().replace(/ /g, '_')}]`;
3489
- btn.onclick = () => {
3494
+ btn.onclick = async () => {
3490
3495
  const input = document.getElementById('ai-refine-input');
3491
3496
  if (input) {
3492
3497
  input.value = chip;
3493
- sendRefinement();
3498
+ await sendRefinement();
3499
+ input.value = '';
3494
3500
  }
3495
3501
  };
3496
3502
  container.appendChild(btn);
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes