2026-05-31

cybrvillain:~$ cat terminal_ghost.plan
Terminal Ghost

Started documenting the initial concept for Terminal Ghost today.

It's still very early, but this is one of those rare ideas where the name, theme, and overall vision appeared almost instantly. For now I'm keeping most of the details private while I explore feasibility and define the proof of concept.

All I'll say for now is:

TERMINAL GHOST

*Reach The Gibson.*

Terminal Ghost

2026-05-30

cybrvillain:~$ cat streamerlift_detected_two_additional_affiliate_conversions_today.plan
StreamerLift detected two additional Affiliate conversions today.

Byte2022 raided demonangel2738 on May 12 and persephone3999 on May 29. Affiliate status was detected for both channels today.

That brings the total to three verified Affiliate conversions connected to StreamerLift recommendations.

Part of me is excited because three conversions starts to look like a pattern rather than a coincidence. The entire purpose of StreamerLift is helping streamers discover channels worth supporting, and seeing measurable success stories validates the core idea.

At the same time, I would be lying if I said I wasn't feeling a little frustrated. None of my own raids have resulted in an Affiliate conversion yet. Watching another streamer generate multiple success stories using a tool I built creates a strange mix of pride and disappointment.

Still, the data doesn't care about feelings. Three conversions are three conversions. StreamerLift appears to be working.

StreamerLift

2026-05-29

cybrvillain:~$ cat neon_chain_improvements.plan
Neon Chain - Improvements

Today was a busy day. Added Firebase Analytics and had a hell of a time getting it to work the way I wanted it to.

  • Added Firebase Analytics to the project — full setup including google-services.json placement, Gradle dependency wiring, and Custom Android Build integration
  • Added AnalyticsManager.gd autoload — calls Firebase directly via JavaClassWrapper, silently no-ops if Firebase is unavailable, never crashes the game
  • Tracking 15 custom events: app_open, mode_selected, game_start, game_over, score_submitted, leaderboard_opened, share_png_created, reward_ad_offered, reward_ad_started, reward_ad_completed, extra_life_used, timed_bonus_used, ad_failed, settings_opened, credits_opened
  • Key events carry parameters — game_over includes mode, score, combo, run time, and whether a rewarded ad was used; ad_failed carries failure reason
  • Added log_settings_opened() call in ModeSelect.gd when gear is tapped and log_mode_selected() call when a mode is launched — only two files changed from the original
  • Confirmed 42 total events flowing into Firebase DebugView in real time — all 15 custom events verified working end to end on device
  • Completed pre-release build audit — identified and resolved all release blockers: internet permission, test ad flag, placeholder production ad IDs, debug overlay, debug flags, stale APK name, fake interstitial draw, and dead SFX references
  • Removed dead SFX player infrastructure from Main.gd — six unreferenced .wav var declarations, _build_audio_players(), _play_sfx(), the _ready() call, and all call sites removed cleanly
  • Removed all debug prints from PromoBannerManager.gd — console is now silent on startup
Neon Chain

2026-05-28

cybrvillain:~$ cat synext_parent_app_proof_of_concept_complete.plan
Synext Parent App Proof of Concept Complete

Today marks a major milestone for Synext.

The Parent App proof of concept is now functional and running. What started as a conversation about helping The Pixel Mancer manage routines, chores, meals, and school readiness has become an actual working application.

This is far from a finished product, but the core idea has successfully moved from concept to software. Parents can now interact with a working prototype that demonstrates the foundation of what Synext could become.

The next phase is building the Child App, which is where the real challenge begins. The parent side proves the concept. The child side will determine whether the vision can become a practical solution for families dealing with the same struggles that inspired the idea in the first place.

For now, I'm calling this a win. Synext is no longer just an idea.

SyNext

2026-05-27

cybrvillain:~$ cat streamerlift_recorded_its_first_verified_affiliate_conversion.plan
StreamerLift recorded its first verified Affiliate conversion.

Byte2022 raided liabug97 on May 19. Today StreamerLift detected that liabug97 achieved Twitch Affiliate status.

This is the first time I've been able to directly connect a StreamerLift raid recommendation to an Affiliate conversion. One conversion doesn't prove anything yet, but it does prove the entire concept is possible. StreamerLift exists to help smaller streamers discover other smaller streamers worth supporting, and today I have evidence that it can make a measurable difference.

For the first time, StreamerLift feels less like an idea and more like a real product.

StreamerLift

2026-05-26

cybrvillain:~$ cat neon_chain_fixes_and_improvements.plan
Neon Chain - Fixes and Improvements

Fixes

  • Fixed AdMob plugin missing causing silent failure — AdManager now prints a loud error with exact steps to resolve (install plugin, enable it, rebuild with Custom Build) and does nothing further
  • Fixed options slider label and percentage text shifting layout when percentage value changed width — percentage column now uses a fixed left edge based on the widest value ("100%")
  • Fixed hit rects not matching slider visuals — _layout_options_panel and _draw_options_overlay now use identical track calculations so dragging registers correctly across the full drawn track

Improvements

  • Built full production ad architecture — AdConfig.gd, AdManager.gd, AdCoordinator.gd, PromoBannerManager.gd, AdFooterSlot.gd, RewardedAdButton.gd, and AUTOLOAD_SETUP.md
  • AdConfig.gd is the single source of truth for all ad unit IDs — Google test IDs and production IDs are clearly separated with a single USE_TEST_ADS switch
  • AdManager.gd handles only real AdMob ads — banner and rewarded lifecycle, plugin wiring, and signals — never substitutes house promos for rewarded ads
  • PromoBannerManager.gd handles only house promos (CybrThugs, Shadow Swag, Lonely Ranch Games) — rotation timer, texture loading, tap-to-URL, and dark placeholder fallback on missing assets
  • AdCoordinator.gd owns the banner slot-switching decision — counter-based ratio via HOUSE_PROMO_EVERY_N_BANNERS constant, prevents unnecessary banner destroy/recreate churn
  • Rewarded ad rewards are mode-aware via top-level constants — REWARD_ARCADE_LIVES = 1 and REWARD_TIMED_SECONDS = 30 — carried by the rewarded_ad_earned(type, value) signal
  • Added AdDiagnostics.gd scene — prints plugin presence, AdConfig, AdManager, AdCoordinator, and PromoBannerManager status to console for quick setup verification
  • Increased MUSIC and SFX label and percentage text size by 25% in the options overlay and adjusted slider track bounds to fit cleanly between the text without overlap or clipping
  • Increased gap_back from 52px to 82px for more breathing room above the BACK button
  • Reduced pad_bottom to remove excess space below the BACK button
  • Slider track now spans from the right edge of the label to a fixed right column, keeping the percentage value at a stable position regardless of the number shown
Neon Chain

2026-05-25

cybrvillain:~$ cat neon_chain_fixes.plan
Neon Chain fixes

I made a lot of improvements and fixes to Neon Chain today. I feel like I am getting closer to release.

  • Fixed gear invisible on Android — it was drawing at alpha * 0.85 opacity tied to the menu fade-in timer; now draws at a fixed 0.90 opacity from the first frame
  • Fixed options overlay opening and immediately closing on Android — the tap release event was triggering the outside-panel close logic before a single frame was drawn; resolved with options_just_opened flag and set_input_as_handled()
  • Fixed gear too small on Android — GEAR_SIZE_PCT of 0.055 produced ~30px on a 540px viewport; changed to clampf(screen_size.x * 0.085, 56.0, 96.0) enforcing a 56px minimum
  • Fixed sfx_vol type inference error — variable lacked an explicit type annotation causing a GDScript parse error at line 801
  • Fixed duplicate redirect_ding.ogg reference — consolidated to a single path in the node sound constants block
Neon Chain