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.
- {gitcast-1.0.20/gitcast.egg-info → gitcast-1.0.22}/PKG-INFO +1 -1
- {gitcast-1.0.20 → gitcast-1.0.22/gitcast.egg-info}/PKG-INFO +1 -1
- {gitcast-1.0.20 → gitcast-1.0.22}/setup.py +1 -1
- {gitcast-1.0.20 → gitcast-1.0.22}/web/index.html +61 -55
- {gitcast-1.0.20 → gitcast-1.0.22}/.env.example +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/LICENSE +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/MANIFEST.in +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/README.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ai/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ai/formatter.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ai/generator.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ai/prompts.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ai/viral_patterns.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/analytics.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/auth.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/auth_middleware.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/auth_routes.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/monitoring.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/payload.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/ratelimit.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/routes.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/server.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/api/validators.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-16x16.png +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-32x32.png +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon-64x64.png +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/favicon.ico +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/assets/icon.png +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/cli/.env.example +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/cli/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/cli/gitcast.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/config/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/config/settings.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/capture.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/codebase_reader.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/framing.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/hotkey.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/log_stream.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/ocr.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/screenshot_session.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/security.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/tray.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/core/trigger.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/api-keys.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/article-generator.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/capture-flow.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/changelog.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/contributing.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/dashboard.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/insights.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/introduction.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/post-formats.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/providers.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/pypi-errors.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/quickstart.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/docs/sprint-mode.md +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/SOURCES.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/dependency_links.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/entry_points.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/requires.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/gitcast.egg-info/top_level.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/publisher/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/publisher/clipboard.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/publisher/twitter.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/pyproject.toml +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/requirements.txt +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/setup.cfg +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/cleanup.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/engagement.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/insights.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/key_manager.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/logger.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/metrics.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/sprint.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/streak.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/supabase_client.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/storage/tone_memory.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_keys.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_ocr_fix.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/tests/test_validation.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ui/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ui/popup.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/ui/review.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/web/__init__.py +0 -0
- {gitcast-1.0.20 → gitcast-1.0.22}/web/landing.html +0 -0
|
@@ -51,7 +51,7 @@ if os.path.exists(requirements_path):
|
|
|
51
51
|
|
|
52
52
|
setup(
|
|
53
53
|
name="gitcast",
|
|
54
|
-
version="1.0.
|
|
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.
|
|
2329
|
-
if (e.key === 'Enter')
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|