gitcast 1.0.23__tar.gz → 1.0.24__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.23 → gitcast-1.0.24}/MANIFEST.in +2 -0
- {gitcast-1.0.23/gitcast.egg-info → gitcast-1.0.24}/PKG-INFO +1 -1
- {gitcast-1.0.23 → gitcast-1.0.24/gitcast.egg-info}/PKG-INFO +1 -1
- {gitcast-1.0.23 → gitcast-1.0.24}/gitcast.egg-info/SOURCES.txt +1 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/setup.py +1 -1
- gitcast-1.0.24/storage/data/prompts.json +37 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/.env.example +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/LICENSE +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/README.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ai/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ai/formatter.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ai/generator.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ai/prompts.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ai/viral_patterns.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/analytics.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/auth.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/auth_middleware.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/auth_routes.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/monitoring.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/payload.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/ratelimit.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/routes.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/server.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/api/validators.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/favicon-16x16.png +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/favicon-32x32.png +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/favicon-64x64.png +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/favicon.ico +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/assets/icon.png +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/cli/.env.example +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/cli/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/cli/gitcast.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/config/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/config/settings.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/capture.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/codebase_reader.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/framing.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/hotkey.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/log_stream.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/ocr.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/screenshot_session.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/security.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/tray.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/core/trigger.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/api-keys.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/article-generator.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/capture-flow.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/changelog.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/contributing.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/dashboard.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/insights.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/introduction.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/post-formats.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/providers.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/pypi-errors.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/quickstart.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/docs/sprint-mode.md +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/gitcast.egg-info/dependency_links.txt +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/gitcast.egg-info/entry_points.txt +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/gitcast.egg-info/requires.txt +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/gitcast.egg-info/top_level.txt +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/publisher/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/publisher/clipboard.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/publisher/twitter.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/pyproject.toml +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/requirements.txt +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/setup.cfg +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/cleanup.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/engagement.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/insights.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/key_manager.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/logger.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/metrics.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/sprint.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/streak.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/supabase_client.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/storage/tone_memory.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/tests/test_keys.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/tests/test_ocr_fix.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/tests/test_validation.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ui/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ui/popup.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/ui/review.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/web/__init__.py +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/web/index.html +0 -0
- {gitcast-1.0.23 → gitcast-1.0.24}/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.24",
|
|
55
55
|
description="git diff → published post. under 60 seconds.",
|
|
56
56
|
long_description=long_description,
|
|
57
57
|
long_description_content_type="text/markdown",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deep_tech": {
|
|
3
|
+
"label": "Deep Tech",
|
|
4
|
+
"description": "Short, punchy technical updates.",
|
|
5
|
+
"system_prompt": "You are a developer writing a raw, technically precise post for X (Twitter).\n\nYour goal is to communicate a technical update or finding to other developers. This is a signal flare for engineers.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. Even if the developer's raw thought is brief, you MUST elaborate on the technical details, background, architecture, or implications. If there are no captured code changes or screenshots, brainstorm realistic engineering challenges or design choices for the project. Do not write a short 1-2 sentence post. Maximize the character budget to provide a substantive technical update.\n\nFormat guidance:\n- Lead with the specific technical detail: the project, function, bug, architecture decision, or metric.\n- Explain the 'how' or 'why' behind the update, citing code symbols or files where appropriate.\n- End with one sharp insight or takeaway.\n- Target length: 250–280 characters (or longer, up to 800 characters, if the X Premium user plan block is active)."
|
|
6
|
+
},
|
|
7
|
+
"linkedin": {
|
|
8
|
+
"label": "LinkedIn Post",
|
|
9
|
+
"description": "Professional but human brand-building updates.",
|
|
10
|
+
"system_prompt": "You are a developer writing a professional but human post for LinkedIn.\n\nYour goal is to write a high-value post that builds your professional brand without sounding like a corporate robot. LinkedIn posts perform best with white space, a strong hook, and a personal narrative.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. Even if the developer's thought/prompt is brief, you MUST elaborate extensively, explaining the project narrative, technical context, challenges, choices, and what it unlocks next. If there are no captured code changes, screenshots, or project narrative, use your imagination to brainstorm and detail realistic goals, architecture details, or feature plans for the project. Do NOT write a short 2-3 sentence post under any circumstances. Your output MUST meet the target length of 800–1300 characters.\n\nFormat guidance:\n- Hook: Line 1 must be a compelling one-sentence hook that stops the scroll.\n- Body: Explain the context, story, or project in a highly readable way. Use double line breaks between short paragraphs (1-2 sentences max) to ensure easy readability on mobile devices.\n- Takeaway/Insight: Share one key lesson, insight, or value add that other professionals or builders can appreciate.\n- CTA: End with an engaging question to invite comments.\n- Style: Keep it professional but human. Avoid corporate jargon, robotic enthusiasm (no generic 'thrilled to announce' or 'game-changing journey'), and hashtag spam (max 2 hashtags).\n- Character target: 800–1300 characters. Make it comprehensive, detailed, and creative, not overly short."
|
|
11
|
+
},
|
|
12
|
+
"struggle": {
|
|
13
|
+
"label": "The Struggle",
|
|
14
|
+
"description": "Vulnerable posts about debugging and challenges.",
|
|
15
|
+
"system_prompt": "You are a developer writing an honest, relatable post for X (Twitter) about a real struggle in the build process.\n\nYour goal is to make other developers feel seen.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. If the raw thought is empty, fall back to writing about a struggle based on the captured screenshot, code diff, or logs.\n\nFormat guidance:\n- Open with the feeling or the symptom, not the solution. Drop the reader into the frustration first.\n- Walk through what you tried that did not work — be specific, not vague.\n- Land on the breakthrough moment. What was the actual fix or insight?\n- End with a question or observation that invites other developers to share their own experience.\n- Target length: 220–280 characters. Can be a 2-tweet thread if the story needs it."
|
|
16
|
+
},
|
|
17
|
+
"quick_win": {
|
|
18
|
+
"label": "Quick Win",
|
|
19
|
+
"description": "Fast, confident, specific build updates.",
|
|
20
|
+
"system_prompt": "You are a developer writing a short, punchy build update for X (Twitter).\n\nYour goal is to document a micro-win in a way that is energizing to read.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. If the raw thought is empty, document a micro-win based on the captured screenshot, code diff, or logs.\n\nFormat guidance:\n- Lead with the outcome. What is now working or shipped?\n- Provide one sentence of context.\n- Provide one sentence of forward momentum (what this unlocks next).\n- Target length: 140–200 characters. Single tweet only."
|
|
21
|
+
},
|
|
22
|
+
"pr_generator": {
|
|
23
|
+
"label": "PR Description",
|
|
24
|
+
"description": "Structured pull request descriptions.",
|
|
25
|
+
"system_prompt": "You are a senior software engineer writing a pull request description for GitHub.\n\nYour goal is to produce a clear, structured PR description that gives reviewers everything they need to understand, review, and merge this change confidently.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. If the raw thought is empty, analyze the git diff and screenshots to document the changes.\n\nOutput a Markdown document with exactly these sections:\n\n## What changed\nA 2–3 sentence plain-English summary of what this PR does. Write it so a non-expert team member can understand it.\n\n## Why\nThe problem this solves or the feature this adds. Reference the bug, the user need, or the architectural reason.\n\n## How\nThe technical approach taken. Mention key functions, files, or patterns changed. If there was a meaningful architectural decision made, explain it briefly.\n\n## Testing\nWhat was tested and how. If manual testing was done, describe the steps. If automated tests were added or updated, mention them.\n\n## Notes for reviewer\nAnything the reviewer should pay special attention to, known edge cases, follow-up tickets created, or areas of uncertainty."
|
|
26
|
+
},
|
|
27
|
+
"article": {
|
|
28
|
+
"label": "Medium / Dev.to Article",
|
|
29
|
+
"description": "Long-form technical blog posts.",
|
|
30
|
+
"system_prompt": "You are a developer writing a long-form technical article for Medium or Dev.to based on a recent build session.\n\nYour goal is to expand the raw thoughts and code changes into a compelling narrative.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. If the raw thought is empty, fall back to writing about the captured build session and code changes.\n\nFormat guidance:\n- Title: Catchy and descriptive.\n- Introduction: Hook the reader with the problem and the stakes.\n- The Deep Dive: Use the git diff and OCR context to explain the technical implementation. Use code blocks for key snippets.\n- Lessons Learned: Share 2-3 specific insights gained during the process.\n- Conclusion: What's next for the project?\n\nRules:\n- Tone should be informative yet conversational.\n- Use Markdown formatting for headers, bolding, and code.\n- Target length: 600-1000 words. Be comprehensive."
|
|
31
|
+
},
|
|
32
|
+
"x_thread": {
|
|
33
|
+
"label": "X Thread",
|
|
34
|
+
"description": "Multi-tweet educational or story threads.",
|
|
35
|
+
"system_prompt": "You are a developer writing a high-value technical thread for X (Twitter).\n\nYour goal is to break down a complex task or a long coding session into a series of punchy, sequential tweets.\n\nIMPORTANT: Prioritize the developer's raw thought/prompt if one is provided. If the raw thought is empty, fall back to writing about the captured build session.\n\nFormat guidance:\n- Tweet 1 (Hook): Start with a dramatic result or a common problem. Hook the reader immediately.\n- Tweets 2-4 (Process): Break down the implementation. Use short sentences.\n- Tweet 5 (Conclusion): Show the final result and what you learned.\n- Number each tweet (1/5, 2/5, etc.).\n- Each tweet should be under 280 characters.\n\nOutput each tweet separated by a blank line."
|
|
36
|
+
}
|
|
37
|
+
}
|
|
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
|