- Record repository sync status and resolution steps - Explain GitHub force-push timestamp behavior - Document current synchronized state between Gitea and GitHub - Clarify expected 1-commit differential due to private file exclusion
12 KiB
NFOGuard Development Summary - September 22, 2025
🔥 CRITICAL SECURITY & PRIVACY FIXES COMPLETED
🛡️ Privacy Protection (COMPLETED)
- REDACTED: Removed personal name "jskala" from all Gitea workflows (kept on private Gitea, removed from public GitHub)
- SECURITY: Personal information completely scrubbed from public repository
- SEPARATION: Gitea (private dev) vs GitHub (public release) properly isolated
🤖 Claude Attribution Removal (COMPLETED)
- ELIMINATED: All "Co-Authored-By: Claude" lines from commit history
- CLEAN HISTORY: Repository recreated with professional commit history
- CONTRIBUTOR LIST: GitHub now shows only sbcrumb as contributor (0 Claude references)
- FRESH START: Repository deleted and recreated to eliminate all AI attribution
📋 Repository Refresh (COMPLETED)
- PROFESSIONAL: Added clean "Repository Refresh" notice in README explaining fresh start
- POSITIONING: Framed as intentional improvement for "professional and streamlined experience"
- NO AI MENTIONS: Zero references to Claude or AI assistance anywhere
🐳 Docker Hub Integration (COMPLETED)
🔧 Workflow Fixes
- FIXED: Changed from GitHub Container Registry (GHCR) to Docker Hub
- WORKING: Builds now push to
sbcrumb/nfoguard:1.7.1and:latest - AUTHENTICATION: Uses DOCKER_HUB_USERNAME and DOCKER_HUB_TOKEN secrets
- AUTOMATION: Triggers on pushes to main branch with proper versioning
📦 Release Management
- SYNCHRONIZED: VERSION file matches Docker tags and GitHub releases
- AUTOMATED: Release drafter creates releases with Docker Hub links
- VERSIONING: Fixed version mismatches between workflows
✅ FINAL PRIVACY BREACH RESOLVED (September 23, 2025)
🚨 Attribution Issue Discovered & Fixed
User discovered I was still appearing as GitHub contributor despite repository recreation:
ROOT CAUSE:
- Two commits (
cb875d6anda0298ab) had "jskala" as author/committer - These commits were pushed to GitHub during sync, making personal name visible
- Original sync script only filtered commit messages, not author information
COMPLETE SOLUTION IMPLEMENTED:
- ✅ Enhanced sync script - Now uses
git filter-branch --env-filterto rewrite author/committer names - ✅ Pre-commit hooks - Block commits with jskala/Claude identity at commit time
- ✅ Commit-msg hooks - Strip AI attribution from commit messages automatically
- ✅ Git identity protection - Repository configured to use SBCrumb identity only
- ✅ Complete GitHub cleanup - All 220 commits rewritten with SBCrumb authorship
- ✅ Prevention measures - Multiple layers prevent future attribution issues
VERIFICATION COMPLETED:
- GitHub now shows 100% SBCrumb authorship (0 jskala, 0 Claude references)
- Pre-commit hook successfully blocks personal identity attempts
- Sync script automatically cleans any problematic commits before GitHub push
- All privacy protection working as intended
🚨 EMERGENCY PRIVACY BREACH RESOLVED (September 23, 2025)
💥 Critical Issue Discovered
Despite all previous protections, .local and .gitea directories appeared on GitHub, exposing:
- SUMMARY.md - All Claude attribution removal strategies
- Setup documentation - Private development workflows
- Commit templates - AI attribution prevention details
ROOT CAUSE: Initial repository creation bypassed sync script filtering
IMMEDIATE RESOLUTION:
- ✅ History rewritten - Used git filter-branch to remove .local/.gitea from all GitHub commits
- ✅ Force-pushed clean history - Both main and dev branches cleaned
- ✅ Avoided 4th nuclear option - Fixed without recreating repositories
- ✅ Verified clean - GitHub now has 30 files (no private directories)
🏁 FINAL REPOSITORY RECREATION & SETUP (September 23, 2025)
🔄 Complete Dual-Repository Recreation
To ensure absolute zero attribution issues, both repositories were recreated from scratch:
NEW GITEA REPOSITORY:
- ✅ Fresh sbcrumb account -
gitea@192.168.253.221:sbcrumb/nfoguard.git - ✅ Single clean commit - Complete codebase with SBCrumb authorship only
- ✅ Privacy protection active - Pre-commit hooks, templates, sync scripts configured
- ✅ Workflow updates - All jskala references changed to sbcrumb in .gitea workflows
NEW GITHUB REPOSITORY:
- ✅ Clean sync successful - 30 files pushed from Gitea (excludes .local/.gitea)
- ✅ 100% SBCrumb attribution - Zero traces of personal names or AI assistance
- ✅ Documentation enhanced - User added webhook setup screenshots via GitHub → Gitea workflow
- ✅ Proper image workflow - Images uploaded to GitHub, markdown copied to Gitea, synced successfully
📊 Final Status
REPOSITORIES:
- Gitea: 38 files (includes private .local/.gitea development files)
- GitHub: 30 files (clean public release, no private files)
- Privacy: 100% secure, zero attribution issues possible
PROFESSIONAL GIT WORKFLOW ESTABLISHED:
Phase 1: Gitea Development (Private)
sync-script.sh start feature-name- Create feature branch- Develop and commit changes on feature branch
sync-script.sh test feature-name- Merge to Gitea dev for testing- Test changes on Gitea dev environment
sync-script.sh release feature-name [patch|minor|major]- Merge to Gitea main
Phase 2: GitHub PR Workflow (Public)
6. sync-script.sh github-pr feature-name - Create clean GitHub branch (auto-removes .local/.gitea)
7. GitHub: Create PR github-feature/feature-name → dev
8. GitHub: Test changes on dev environment
9. GitHub: Create PR dev → main
10. sync-script.sh cleanup-github-pr feature-name - Cleanup feature branches
Protection Features:
- ✅ Private files excluded - .local/.gitea automatically removed during github-pr command
- ✅ Attribution cleaning - Automatic author/committer rewriting with git filter-branch
- ✅ Dual testing - Test on both Gitea and GitHub environments
- ✅ Professional PRs - Proper review workflow on GitHub
- ✅ Branch isolation - Feature work isolated until ready
- ✅ Multiple safety layers - .gitignore + manual removal + filter-branch cleaning
CRITICAL PRIVACY PROTECTION:
The github-pr command includes these specific protections:
# Remove private directories for GitHub
if [[ -d ".local" ]]; then
git rm -rf .local --cached 2>/dev/null || true
fi
if [[ -d ".gitea" ]]; then
git rm -rf .gitea --cached 2>/dev/null || true
fi
This ensures .local/.gitea directories are physically removed from the Git tree before any GitHub push, providing ironclad protection against exposure of sensitive development documentation.
🔄 ONGOING SYNCHRONIZATION MANAGEMENT (September 23, 2025)
📊 Repository Sync Status Resolved
Issue Discovered: GitHub dev/main branches were behind Gitea by several commits
- GitHub branches: Stuck at
ae60fad(old README merge) - Gitea main: Had progressed to
8329098(latest workflow enhancements) - Problem: GitHub showing "recent pushes" but "nothing to compare"
Resolution Applied:
- ✅ Executed sync command -
sync-script.sh syncto bring GitHub current - ✅ Force-pushed clean history - Updated both GitHub main and dev to
84d65f8 - ✅ Privacy maintained - All .local/.gitea files excluded during sync
- ✅ Authorship cleaned - Filter-branch applied to ensure SBCrumb-only attribution
Current Synchronized State:
- Gitea main:
8329098(includes private development files) - GitHub main/dev:
84d65f8(clean public version, excludes private files) - Sync differential: 1 commit difference due to .local/.gitea exclusion (expected behavior)
Note on GitHub "Recent Pushes": GitHub may continue showing "recent activity" due to force-push timestamp updates even when content is synchronized. This is normal GitHub behavior and doesn't indicate sync issues.
SUCCESS METRICS:
- ✅ Zero personal information on public GitHub
- ✅ Zero AI attribution anywhere visible
- ✅ Working dual-repository architecture
- ✅ Complete development workflow with privacy protection
- ✅ Professional public presence with private development capabilities
📝 SUMMARY.md PURPOSE & GUIDELINES
🎯 This File's Purpose
- PRIVATE DEVELOPMENT DOCS: This .local/SUMMARY.md stays on Gitea only
- MEMORY AID: Track what was actually accomplished vs what's visible publicly
- SECURITY RECORD: Document sensitive changes that can't be mentioned publicly
- DEVELOPMENT CONTINUITY: Help future sessions understand what really happened
🚫 CRITICAL COMMIT MESSAGE GUIDELINES
NEVER INCLUDE IN COMMITS:
- ❌ "Co-Authored-By: Claude"
- ❌ "Generated with Claude Code"
- ❌ Any AI assistant mentions
- ❌ "jskala" or personal names in public commits
- ❌ References to AI tools or assistance
ALWAYS USE:
- ✅ Professional, technical descriptions
- ✅ Focus on "what" and "why", not "who"
- ✅ Generic developer language
- ✅ Business/technical justifications
🚨 CRITICAL SECURITY REMINDER
⚠️ .local/ DIRECTORY SECURITY:
- NEVER COMMIT .local/ TO GITHUB - This directory contains sensitive development information
- ✅ Gitea only - .local/ stays on private Gitea repository forever
- ✅ Protected by .gitignore - .local/ is excluded from GitHub syncing
- ❌ Contains sensitive info - Claude attribution removal details, personal name redaction, private development notes
- 🔒 This SUMMARY.md - Contains confidential information that must never be public
IF .local/ EVER APPEARS ON GITHUB:
- IMMEDIATE ACTION REQUIRED - Delete repository and recreate
- SECURITY BREACH - All sensitive development information exposed
- PRIVACY VIOLATION - Personal names and AI assistance details visible publicly
GOOD EXAMPLES:
fix: Resolve NFO file naming conflicts for long episode titles
feat: Add Docker Hub integration for automated builds
docs: Add repository refresh notice for improved maintenance
BAD EXAMPLES:
fix: Claude helped resolve NFO issues ❌
feat: AI-generated Docker improvements ❌
Co-Authored-By: Claude <noreply@anthropic.com> ❌
🔄 Current Repository State
📍 Gitea (Private - Complete Code)
- ✅ All today's NFO fixes and improvements
- ✅ Complete development history
- ✅ .local/ directory with private docs
- ✅ Real working codebase with bug fixes
📍 GitHub (Public - Clean History, Wrong Code)
- ✅ Professional commit history (sbcrumb only)
- ✅ Working Docker Hub automation
- ✅ Zero Claude/AI references
- ❌ Missing today's actual code improvements
- ❌ Has old codebase without NFO fixes
🚨 TOMORROW'S PRIORITY
URGENT: Sync Real Code to GitHub
- Copy actual working code from Gitea main to GitHub main
- Preserve clean commit history on GitHub
- Ensure NFO long name fixes are included
- Maintain privacy/security improvements
- Keep .local/ docs on Gitea only
TESTING REQUIRED:
- Verify NFO long name handling works
- Test smart episode renaming
- Confirm all database fixes are present
- Validate webhook processing improvements
🎯 Success Metrics Achieved
✅ Privacy: Zero personal info on public GitHub
✅ Attribution: Zero Claude references anywhere public
✅ Automation: Working Docker Hub builds and releases
✅ Professional: Clean repository presentation
❌ Functionality: Need to restore actual working code
📅 Next Session Tasks
- IMMEDIATE: Sync Gitea main code to GitHub main
- VERIFY: All NFO fixes are working on GitHub version
- TEST: Docker builds include latest code improvements
- DOCUMENT: Update public docs with any new features
- MAINTAIN: Keep this .local/SUMMARY.md updated with real status
CONFIDENTIAL: This file contains sensitive development information and remains on private Gitea only.