Dev Meeting

Hearthstone Realty & Kalayjian Projects

May 28–29, 2026
Dev Session Notes
May 29, 2026
🚀 Google Play Build Day
🏰

Realm Estate

Fantasy real estate strategy · Medieval → Maritime → Modern
🌐 realmestate.netlify.app
A fantasy strategy game teaching real estate investing. Buy properties, collect rent, survive rivals and disasters across three eras. Playable on web and mobile (PWA), with Google Play and Microsoft Store packaging in progress.
⚔️ Medieval — Live ⚓ Maritime — Post-launch 🏙 Modern — Post-launch
🚀 Store Launch Roadmap — Google Play & Microsoft Store
Game is complete and live on web. These 9 sessions get it into both app stores.
S3–4 Capacitor wrapper build ✅ DONE — App packaged, signed AAB built and uploaded to Play Console internal testing. Running on Android phone. v2.6 in internal testing as of May 29.
S5–6 Google Play Billing API ✅ DONE — RevenueCat integrated. All 6 products live in Play Console and RevenueCat. Entitlements and default offering configured. Stripe remains for web.
✅ Live & Complete
⚔️Medieval hex map — terrain textures (plains, forest, mountain), property purchase, tenants, lease system, eviction & sob stories
💎Gem economy — earn free gems & spend on property upgrades, disaster protection, condition boosts
Disaster events with gem protection options
🤝Multiple offer / rival bidding on purchases + Negotiation modal (3 offer tiers + walk away)
🔊Sound system — era music & sound effects with volume control
💳Stripe payments live & tested — gem packs ($4.99 / $7.99 / $14.99), Lord's Charter ($12.99 one-time founder pack), Apprentice Pass ($4.99/mo) & Realm Pass ($9.99/mo)
🏆Gem Shop — Lord's Charter & Monthly Pass buy/status screens. Monthly passes non-auto-recurring (player opts in each month — no surprise billing)
🤖AI Advisor — era-appropriate sage, navigator, or analyst
📲Cross-platform save — device transfer via text code, no account needed. PWA ready — installable on iOS & Android, works offline
🖼️17 unique portrait artworks — rivals, tenants, advisors
💎Free gem earning: +5 on first startup · +1 every 15 turns · +1 on level-up · weekly drip while a pass is active
🐛Crash fix deployed (May 28) — manage modal null guards added for condition repair block & tenant status display; resolves round-5 crash when viewing owned property upgrades
🛒"Buy Gems" button (May 28) — gem shop entry button label updated from "Tap to Shop" → "Buy Gems" for clearer call-to-action. Deployed.
📱Capacitor Android build (May 29) — App packaged with Ionic Capacitor, signed release AAB built, uploaded to Google Play internal testing track. App ID: com.kalayjianenterprises.realmestate
💳Google Play Billing (May 29) — RevenueCat integrated (proj0f83e17). All 6 products created in Play Console and RevenueCat: Gem Pouch $4.99, Gem Satchel $7.99, Gem Chest $14.99, Lord's Charter $12.99, Apprentice Pass $4.99/mo, Realm Pass $9.99/mo. Entitlements and offerings configured.
📊Property preview screen (May 29) — Financials (GRM, Cap Rate, Merindal's Analysis) now shown BEFORE the player makes an offer, not after. Addresses Jason's feedback. Visible [?] help button explains both metrics.
🎨UI overhaul (May 29) — Lighter background, cream property cards throughout, color-coded property detail sections (amber ledger, navy mortgage, green condition, burgundy tenant management, blue disaster protection), bolder fonts globally, 2-column mortgage grid for mobile.
📌Reserve button labeled (May 29) — Market card reserve button now reads "RESERVE — 1💎" instead of just icon, making it obvious.
🧙Merindal AI advisor fixed (May 29) — Fixed model name, CORS preflight, absolute URL for native app. Static fallback pool added so advisor always has wisdom even if API is unreachable.
📲Status bar overlap fixed (May 29) — Android status bar no longer overlaps game header. Safe area insets applied.
💬 Discussion — Voluntary Rewarded Video Ads (Mobile Only)
📺 Philosophy: Forced ads kill games. Voluntary rewarded ads — where the player actively chooses to watch for a reward — are a completely different experience. Player feels in control; the ad becomes a feature. Web version stays 100% ad-free; Google Play mobile gets opt-in AdMob rewards.
🎮 How it works: A windfall event is discovered on a property → banner appears: "Ancient artifact found at Willowfen! Watch a short video to claim your reward." → Player taps Watch & Claim (15–30 sec ad plays) OR taps Skip (no penalty, event passes). Max 2–3 prompts per session.
🗺️ Web/laptop — NO ads. Bigger screen stays clean and premium. Google Play mobile — voluntary rewarded ads via AdMob, fully opt-in.
Windfall Events — Already in Game
Gem deposit found (+1 gem) Broken warding rune — cheap disaster protection Sunken treasure (gold windfall — maritime) Pearl bed (+1 gem — maritime) Hidden safe (gold windfall — modern) Old sprinkler / flood barrier (discounted upgrade — modern)
Proposed New Windfall Events
Ancient artifact — sell for gold haul Traveling fair — bonus rent this turn Royal tax exemption scroll Old ledger — rival loses gold Dragon's hoard (+2 gems) Enchanted spring (+1 gem/turn × 3) Mystic relic — choose gems OR gold Treasure map — off-market at 20% off Skeleton key — reserve listing free Crystal ball — preview next 3 listings Ancient deed — claim vacant hex free Celebrity tenant — double rent one lease Wizard lodger — pays in gems Alchemist's workshop — convert gold to gems Pre-built fortification — free disaster upgrade
Decisions Needed
Confirm voluntary-only ad policy officially
Choose which windfall events get the "Watch to Claim" option (suggest 6–8 to start)
Build event system now with a placeholder, or wait until Google Play packaging?
💬 Jason's Feedback — May 28 Session
Seller pic & statement — Confirmed good as-is. No changes needed to the current negotiation intro screen.
Crash fix — Round-5 crash when clicking an owned property (manage modal) identified and fixed. Root cause: condition repair block assumed a valid condition index; added null guards for condition repair and tenant status. Deployed.
"Buy Gems" label — Gem shop button now reads "Buy Gems" instead of "Tap to Shop." Deployed.
📊 Advisor financials at asking price — When the AI advisor gives its advice, show the actual numbers for the property at its current asking price (GRM, cap rate, monthly cash flow). Currently text-only. Build: add a small stats panel below the advice text in the property examine / negotiate flow — same numbers the Investor Calculator outputs.
💰 Financials by purchase type — Jason observed the numbers should reflect how you finance it. Clarification: GRM and cap rate are property-level metrics — they stay the same regardless of financing. What does change: cash-on-cash return and monthly cash flow (because debt service changes). Proposed fix: show all three financing scenarios side-by-side (Cash / Royal Bank mortgage / Grimdar loan shark) so the player can see exactly how each choice affects their monthly pocket and return on invested capital. Discuss: all three options shown simultaneously, or just the one the player selects in the finance tab?
🗺️ Map animations — More animation and better graphics on the people and property cards moving across the hex map. Current movement is minimal. Options to discuss: CSS transition upgrades (smoother card slides), sprite-based walking character frames, or animated purchase/sale "pop" effects on the hex tiles.
🎭 NPC Cinematic Negotiation System — May 28 Design
💡 Concept: Every property for sale has a named NPC seller — Lord Aldric, Widow Maren, Brother Ossian, etc. — assigned by property type. Instead of clicking straight to a bid form, you get a short cinematic story moment: the seller's portrait fills the screen, they deliver 2–3 lines of dialogue revealing their situation (desperate, shrewd, sentimental, impatient, or greedy), and then you choose your offer. Modeled on the shop negotiation screens from Shop Titans and similar mobile games. Uses the existing 17 portrait artworks — no new art budget needed.
How It Flows

Phase 1 — Story Hook

Seller portrait fills screen Name + personality label shown 2–3 taps of dialogue (Tap to continue) Context: why they're selling

Phase 2 — Bid

Offer Low (–15%) — risky, may offend Offer Fair (asking) — safe Offer High (+10%) — impresses seller Walk Away — free, no commitment

Phase 3 — Counter

Seller responds by personality Names a specific counter-price Accept · Counter · Walk Away Seller portrait reacts (pleased / offended)

Personality Types

🙏 Desperate — accepts any offer 🦊 Shrewd — haggles hard, won't budge far 💔 Sentimental — cares who buys it ⏳ Impatient — take it or leave it fast 💰 Greedy — always wants more
Portrait Assignment by Property Type
🏰 Noble/Manor → Lord or Lady portrait 🏡 Cottage/Farm → Farmer or Widow portrait 🏪 Shop/Inn → Merchant portrait ⛪ Temple/Keep → Clergy or Knight portrait Uses existing face1–face17 portrait art pool
Decisions Needed
Build now vs. post-launch? (Core loop is solid; this is a polish feature)
Lowball behavior: does a lowball offer to a Shrewd or Greedy seller cause them to walk away entirely, or always counter? (Walk-away = more realistic; counter = better UX)
Story taps: 2 taps of dialogue before the bid, or 3? (2 is faster-paced; 3 tells a better story)
🔧 In Progress / Pending
📸ASO store assets — Play Store requires phone & tablet screenshots, feature graphic (1024×500px), short description (80 chars), long description (4,000 chars), content rating questionnaire
📤Google Play production submission — Move from internal testing to production track. Complete store listing, fill IARC content rating, submit for review (3–7 day turnaround)
💰Financing comparison panel — show cash-on-cash return & monthly cash flow for Cash / Royal Bank / Grimdar side-by-side on the buy screen
🗺️Map sprite animations — travelers and wagon removed pending proper sprite assets. Roads draw between towns. Need vendor for Elvenar-quality medieval sprites.
🎬D-ID animated advisor — post-launch premium feature. Option A: pre-recorded loops (free tier). Option B: live API lip-sync (~$11–15/mo combined D-ID + ElevenLabs)
🏪Microsoft Store submission — Reuses Capacitor build (MSIX). Post Google Play launch.
Maritime era — removed for now, rebuilt post-launch
🏙Modern era — removed for now, rebuilt post-launch
📅 May 29 Session — What Got Done
Full Google Play launch pipeline completed in a single session — Capacitor build, RevenueCat billing, all 6 products, internal testing live on Android phone
🔑RevenueCat service account: created Google Cloud project RealmEstate under personal Gmail (org policy blocked sisqrealtor.com account). Pub/Sub API enabled, service account granted Play Console access.
🏪Products in Play Console: Gem Pouch, Gem Satchel, Gem Chest (consumable), Lord's Charter (non-consumable), Apprentice Pass, Realm Pass (prepaid monthly, allow extensions)
🎨Major UI refresh: cream card backgrounds, color-coded sections, bold typography globally, 2-column grids for mobile, status bar safe area fix
🧙Merindal advisor: fixed invalid model name (was claude-sonnet-4-20250514 → now claude-3-5-haiku-20241022), CORS preflight, hardcoded absolute URL, static fallback pool of 5 responses
📊Property preview screen: GRM + Cap Rate + Merindal analysis shown BEFORE offer, with [?] help button explaining both metrics
⚠️Keystore saved at: C:\Projects\realmestate\realmestate-release.keystore · Password: RealmEstate2024! · DO NOT LOSE THIS — required for every future update
📦Build command (for future updates): Run from C:\Projects\realmestate\android — gradlew bundleRelease with JAVA_HOME set to Android Studio JBR (Java 21)
🏡

Hearthstone Realty App

Client-facing web app · Netlify · React/JSX
🌐 sisqrealtor.com
Note: This is the same app as Home Finder (sisqrealtor.com). Both entries refer to the single Preact PWA deployed on Netlify. Fully restructured May 28 — see Home Finder tab for complete status.

Live Features

AI Valuation CMA (Sellers) Buyers Affordability Offer Strategy Closing Costs Est. Sellers Net Sheet Live MLS Search Community Profiles Netlify Contact Forms Listing Alerts Modal Home Carousel Team Bios

Pending / In Progress

IDX Integration Recently Sold (RETS debug) Address Search Field Multi-property Checklist Save BPO Module
✅ What's Done — as of May 28
🗂️Full nav restructure: Home · Our Listings · Search · Buyers · Sellers · Communities · Contact
🎠Home carousel — pocket listings + MLS photos, 5s auto-advance, overlay with price/address/beds
🏦Buyers tab — affordability calc (43%/28% DTI), real First American Title closing costs, AI offer strategy
💰Sellers tab — CMA + net sheet, commission tiers, Siskiyou transfer tax
🔔Listing Alerts modal — next to Search button, pre-fills last search, collects contact info
📊Sortable search result headers
🧮PITI mortgage calculator on listing detail (3.5% down, 1.1% tax, $417/mo CA Fair Plan)
👨‍👩‍👦Full team bios — Donna, Jason, John Kalayjian
Real client testimonials (4 reviews)
🖼️Favicon fixed — Hearthstone icon (was showing Homes.com)
📋Netlify Forms — review + alert forms working (no Outlook popup)
🤖AI-powered property valuation, CMA, offer analysis via Anthropic API
🗺️Community profiles, interactive map, traffic layer
🔧 In Progress
📍Recently Sold — RETS agent filter returning empty; county-wide fallback active; needs debug
🔗IDX integration — pending provider setup
💾Transaction checklist: multi-property save & Google Drive upload
📋

TC Checklist App

CAR-compliant transaction checklists · Residential & Vacant Land
🌐 hearthstonetransactions.netlify.app
Full compliance review completed May 28, 2026. Checklist data audited against current CAR forms library, California state law, AB 2992, and NAR Clear Cooperation Policy. All 6 corrections applied to source and deploy file. Deploy file rebuilt — ready to go live.
✅ Corrections Made — Deploy File Updated
📄 BRBC — changed from Conditional to Required. AB 2992 (eff. 1/1/2025): required for ALL buyer-side representation before showing or concurrent with offer; 90-day max. Applies to Res & Land.
📄 WDA → WFDA (Wildfire Disaster Advisory) — corrected CAR form code. Required on ALL CA transactions. Applies to Purchase Disclosures — Res & Land.
📄 BIA-INS → BHIA (Buyer Homeowners' Insurance Advisory) — corrected CAR form code (revised June 2024). Applies to Purchase Disclosures — Res & Land.
📄 TE → TEC (Tenant Estoppel Certificate) — corrected CAR form code. Applies to Listing Disclosures — Res.
📄 WFA added to Listing Disclosures — Residential. Wire Fraud & Electronic Funds Transfer Advisory was missing from Res listing (was present in Land version).
📄 FHDS notes updated (3 locations) — June 2025 CAR revision adds 12 retrofit disclosure checkboxes. Note added to ensure current version is used.
⚠️ Flagged for Donna's Verification
IEW — Inspection Election or Waiver. Possibly BIE, or a local form — needs confirmation.
RR — "Receipt of Reports" conflicts with CAR's RR = Request for Repair. May need to be relabeled as a workflow item rather than a form.
SBD — Window Security Bar Disclosure. Not confirmed as a current CAR form code.
TOA — Tenant/Owner-Occupied Addendum. CAR's TOA = Text Overflow Addendum; tenant form may be TIP.
LOCAL — Siskiyou County Advisory. Confirm it's labeled as a local/brokerage supplement, not as a CAR form.
CDA — Brokerage-generated form. DRE issued advisory June 2025 on improper CDA use — worth reviewing current practices.
RLAA vs RLA — Confirm whether office uses RLAA (Agency) or RLA (Exclusive Listing Agreement).
Deploy file rebuilt — May 28 session
🚀 Priority 1 Features (Crew Meeting)
📝Notes field per transaction
📅Days on Market tracking
💰Price History Log
🖼️Property Photo
🖨️Print / PDF Cover Sheet
📋Duplicate Property function
🏡

Hearthstone Home Finder

Live MLS search · PWA · Microsoft Store · Google Play
🌐 hearthstonerealty.netlify.app
🪟 Microsoft Store — Live but 0 downloads 🤖 Google Play — Still Under Review (May 28) 🌐 Web PWA — Live
Live MLS property search PWA at sisqrealtor.com — pulling 200+ active listings from SAOR. Fully restructured May 28: new 7-tab nav (Home · Our Listings · Search · Buyers · Sellers · Communities · Contact), home carousel, Buyers affordability + closing costs + offer analysis, Sellers CMA + net sheet, listing alert modal, and sortable search results. Available on web and Microsoft Store; Google Play still under review.
🏪 App Store Status — May 28 Update
🤖 Google Play — Still under review. Submitted May 25 (version 3), no update as of May 28. Reviews typically take 3–7 days — could come any day. Once approved: do keyword/description updates and print QR yard sign riders.
🪟 Microsoft Store — Live but zero downloads. Keyword optimization still needed (see action items below).
🔍 Making the App More Searchable — Action Items
Microsoft Store — ✅ Completed May 28
Keywords field — Added: real estate, homes for sale, MLS listings, property search, Siskiyou County, California real estate, home values, CMA, mortgage calculator, Yreka, Mount Shasta
Description — Keywords front-loaded in first 2 sentences. Done.
Category — Confirmed under Real Estate.
Screenshots — Updated with Search, Listing Detail, Map, and Mortgage Calculator screens.
Google Play — Set Up Before It Goes Live
🔑Same keyword and description updates as Microsoft Store — do once approved
💰$500 Google Ads credit — reserved for game app launch, not Home Finder
Outside the Stores
🌐sisqrealtor.com — Add "Download the App" buttons linking to both stores on the main website
📧Email signatures — Add app download link to all three agents' signatures
🪧Yard sign QR riders — Print once Google Play URL is confirmed
📱Social media — Facebook / Instagram / Nextdoor post announcing the app with a direct download link
🤝At appointments — Show clients the app in person; ask them to install and leave a review (reviews directly boost store search ranking)
✅ Completed — May 27–28 Sprint
🗂️Full app restructure — new 7-tab nav: Home · Our Listings · Search · Buyers · Sellers · Communities · Contact. Mortgage and Property Analysis tabs absorbed into Buyers/Sellers.
🎠Home page listing carousel — pocket listings + MLS listings with photos, auto-advance 5s, price/address/beds/acres overlay, dot nav
🏦Buyers tab — Affordability calculator (43%/28% DTI), real First American Title closing costs (cash vs. financing toggle, property type selector), offer strategy CMA powered by AI
💰Sellers tab — Full CMA tool + net sheet with Siskiyou transfer tax ($1.10/$1k) and commission tiers (residential 3% min $2,500 · land 5% min $1,000 · commercial 5% min $2,500)
💲Real First American Title fee data — piecewise interpolation from actual quotes at $5k/$50k/$250k/$600k, used in both Buyers and Sellers tabs
🔔Listing Alerts modal — "Set Up My Alerts" button next to Search, pre-fills last search params, collects name/email/phone, posts to Netlify Forms
📊Sortable search results — click column headers to sort by price, address, beds, city, type
🧮Mortgage calculator popup — on listing detail, full PITI (3.5% down default, 1.1% property tax, $417/mo CA Fair Plan insurance)
👨‍👩‍👦Full team bios — Donna, Jason, and John Kalayjian from Bio PDF; Contact tab titled "Meet the Kalayjian Family"
Real client testimonials — Holly & Robert, Jacob, Breton, Cheryl & Mike (replaced placeholder seeds)
🖼️Favicon fixed — Hearthstone icon now shows on sisqrealtor.com (was displaying Homes.com logo from previous DNS pointing)
📋Netlify Forms — Review submission and listing alert forms now POST to Netlify (no Outlook popup for users without email client)
📍Recently Sold section — on Contact tab, queries RETS for Hearthstone closed transactions; fallback to county-wide recent closings if agent filter returns empty
✅ Previously Completed
IDX compliance (SAOR Section 12.16) — attribution, MLS#, timestamps, non-commercial notice, full disclaimer
🏠Expanded property details — heating, water, road, flooring, appliances, roof, garage, view, foundation, laundry & more (on-demand fetch)
🗺️Map heat layers — live traffic (Google) + Siskiyou County population density
❤️Save & share listings
🪟Microsoft Store — live. Search "Hearthstone Home Finder."
🔧Google Play icon mismatch fixed — dark navy "HS" logo, version 3 resubmitted May 25.
🔮 Future — "Hearth" (Several Months Out)
🏢 White-label version licensed one agent per zip code — each agent gets their own branding, MLS connection, and lead routing. SaaS model. Working name: Hearth.
📇

Hearthstone CRM

Client relationship manager · SMS · Email · Push notifications
🌐 hearthstonecrm.netlify.app
Full-featured CRM built for the Hearthstone team. Text clients directly, draft AI-powered emails, track full conversation history, and get push notifications when someone texts in — all in one place.
✅ What's Built
📱 SMS texting — text clients from their contact page; full sent & received history as chat bubbles; uses Twilio number (530) 435-7658; inbound webhook fixed (was still pointing to Realty Juggler — now routes to CRM). ⚠️ A2P campaign resubmitted (3rd attempt) — awaiting carrier approval.
💬 Text Inbox — nav bar 💬 button glows gold on incoming; lists all contacts with unread texts; tap a name → goes straight to their SMS thread; unknown numbers auto-create a new contact
🔔 Push notifications — phone buzzes on new texts even when app is closed; tap notification → opens straight to Text Inbox; each agent opens app in Chrome and taps Allow to register
📧 Email — AI Draft button writes personalized emails in seconds; attach files to outbound emails; full thread history per contact
🗂️ Contact list — new "New" filter tab catches any contacts without a status (imports, email/SMS leads); tab counts always add up correctly
🔒 Privacy Policy & Terms pages — live at hearthstonecrm.netlify.app/privacy and /terms; required for Twilio A2P registration
✍️ Email signature — HTML built with team photo (all 3 agents), new logo, Google review stars link, sisqrealtor.com link; images hosted on Netlify. Ready to paste into Gmail.
🔧 Action Items — Team
👥 Everyone — open the app in Chrome on your phone and tap Allow when it asks for notifications. Inbound texts are working now — outbound waiting on A2P approval.
📲 John & Jason — update your contact in the CRM with your correct phone numbers: John (530) 239-1392 · Jason (530) 859-5446. Once Twilio approves, test outbound delivery.
📬 Donna — watch for Twilio A2P approval email (check spam). Also paste email signature HTML into Gmail settings.
🎲

AD&D 1e Character Sheet

Browser-based · Firebase · Google Auth · Cloud save
🌐 add-1e-character-sheet.web.app
Fully browser-based character sheet for AD&D 1st Edition. Open the link, sign in with Google, and play — no install required. Characters save to the cloud and load from any device. Content strictly PHB + DMG + Unearthed Arcana (1985) + White Plume Mountain. No 2e content.

Core Features

Auto-calc Stats Saves & Skills Cloud Save/Load Google Sign-in Equipment & Encumbrance

Content Database

498 Spells (6 classes) 315 Magic Items 22 Artifacts & Relics PHB + UA (1985) White Plume Mountain
✅ Completed This Round
🐛Three broken function calls causing JS errors on every page load — resolved
🌐Languages tab — auto-populates racial languages by race (locked, per PHB); bonus slots calculated from INT; player checks optional languages up to INT limit
🧍Appearance tab — height, weight, eye & hair color suggestion ranges auto-fill from race and sex (PHB tables)
📖Unearthed Arcana spell update — 30+ UA spells added across Magic-User (levels 1–7), Illusionist, Cleric, Druid; Illusionist level 4 duplicates fixed; list now current with PHB + UA 1985
⚔️Magic item database cleanup — weapons, instruments, misc moved to correct categories; duplicates removed; Greyhawk Legendaries & Cursed Items filters now work correctly
💀 Artifacts & Relics — full 1e rules added for all 22 items (DMG + White Plume Mountain): powers, malevolent effects, and means of destruction. Covers Eye/Hand/Skull of Vecna, Sword of Kas, Ring of Gaxx, Wand of Orcus, Orb of Dragonkind, Blackrazor, Wave, Whelm, and more.
💰

Hearthstone Investor Calculator

Built May 21, 2026 · Single-file React · Claude API · Netlify
🌐 invenstorcalculator.netlify.app
Three-tab investor tool built as a single-file React app deployable to Netlify. Combines a full deal analyzer, AI-powered photo repair estimator, and inspection report analyzer — all calibrated for Siskiyou County / rural NorCal. Built and deployed today.
✅ What's Built — Three Tabs
🧮 Tab 1 — Investment Calculator
Purchase price, down %, rate, term → auto mortgage payment. Up to 4 rental units with vacancy rate. Full expense breakdown (taxes, insurance, HOA, mgmt %, maintenance & CapEx, utilities). Outputs: Cap Rate, Cash-on-Cash Return, Monthly Cash Flow, GRM — color-coded green/yellow/red. Fix & flip section: ARV + repair cost → projected equity. Auto deal score: Strong Deal / Borderline / Needs Work.
📸 Tab 2 — Photo Repair Estimator
Drag & drop up to 24 photos (up to 20 analyzed by AI — auto-compressed, no prep needed). Inputs: address, property type, sq ft. AI returns: condition rating, itemized repair list by severity (Critical / Moderate / Minor / Cosmetic), low/high cost ranges, overall total, investor recommendation. Costs calibrated for Siskiyou County / rural NorCal contractor rates.
📄 Tab 3 — Inspection Report Analyzer
Upload any PDF (home inspection, pest/WDO, roof, septic, well). AI returns: risk level, critical/moderate/minor breakdown with costs, negotiation points, deal breakers, investor verdict. Includes built-in note that CA pest reports are NOT public record.
💾 Save Bar (every tab) — Download as JSON (drag to Google Drive or OneDrive) or copy to clipboard
✅ Completed — May 28 Session
Streaming edge function — Converted Claude proxy from a Netlify Lambda (26s timeout → always failing) to a Netlify Edge Function that streams Claude's SSE response directly to the browser. No more timeouts on Photo and Inspection tabs.
📸Photo limit 4 → 20 — App now accepts up to 24 photos, sends up to 20 to Claude. Auto-compressed to 600px client-side — no prep needed. Same single API call, no extra cost.
🚀Netlify CLI deployment — Switched from drag-and-drop zip to netlify deploy --prod one-command deploys. Handles build + edge functions + regular functions correctly every time.
👹

Orc King's Raiders

Mobile dungeon explorer · Dungeon Keeper meets cozy — working title
🎮 Play Combat Prototype v0.1
You are the Orc King's expedition crew — a bickering band of monsters sent out to explore unknown dungeons, bring back loot and supplies, and build up the Hold. Tap to move through procedurally generated rooms, discover what's there, and return home to a grumbling but grateful King. Designed for relaxed 5–10 minute sessions — dentist waiting room, couch time, kids in bed. Personality and charm over grinding and stress.

🗺️ The Dungeon (Exploration)

Tap-to-move through connected rooms Fog of war — rooms revealed as you enter Procedurally generated each run Random room events — loot, traps, monsters, NPCs Mission goal set by the Orc King Light combat — quick resolution, not the main event Always able to retreat to the Hold

🏰 The Hold (Home Base)

Orc King — mission giver, comic relief, upgrades Hold with loot Armory — upgrade gear with recovered materials Larder — turn gathered food/herbs into useful items Trophy Room — rare finds on display Barracks — recruit rescued dungeon characters Hold visually improves as you bring back more loot Seasonal events — what the King wants changes over time
🎮 Design Inspiration
👁️ Dungeon Keeper DNA — monster archetypes with personality contradictions, dark humor, the "your creatures are employees who complain" energy. We flip the formula: instead of building the dungeon and defending it, we send our monsters out to raid the world above and bring home the spoils.
🌾 Stardew Valley rhythm — the Hold is the heart of the game, not the dungeon. The dungeon is the errand. Coming home, upgrading, watching the Hold grow warmer and more alive — that's the satisfaction loop.
📱 Mobile-first reality — portrait screen, one-handed, one tap to act. No tiny grids, no complex menus. Each session is a complete errand — go out, find stuff, come back. Perfectly interruptible.
👹 Starting Cast — The Raider Types
You begin with one loyal Orc Warrior. Additional characters are unlocked by rescuing or recruiting them during dungeon runs — natural progression that answers the party size question organically.
🪓 Orc Warrior — tough, loyal, not very bright. Your starting companion and front-liner. Secretly terrified of spiders.
💀 Skeleton — stupidly brave, relentlessly cheerful. Falls apart at inconvenient moments, literally. Inspired by Dungeon Keeper's lovable bone crew.
👺 Goblin Thief — sneaky, greedy, genuinely useful. Cannot stop talking. Unlocks chests, disarms traps, finds secret doors.
🏹 Dark Elf Archer — cool, precise, aloof. Secretly enjoys the chaos more than she admits. Ranged attacks, high single-target damage.
🔮 Troll Mage — surprisingly powerful, spells never quite work as intended. Area effects, crowd control, occasional spectacular backfire.
⚙️ Kobold Tinkerer — enthusiastic inventor, everything held together with string. Crafts items from dungeon junk, sets traps, fixes gear in the field.
✅ What's Already Built
🗺️Maze prototype v0.2 live — tap-to-explore procedurally generated dungeon, fog of war, loot/enemy/trap rooms, retreat mechanic. Deployed at hsdungeoncrawler.netlify.app
🎨37 game assets generated (Gemini AI, painted fantasy RPG style) — 10 floor tile variants, fog of war, stairs, pit trap, 2 chest states, 8 loot types, 6 enemy sprites, player raider, Orc King portrait, 7 decorations
👹Full enemy roster wired in — Giant Rat, Goblin Scout, Skeleton, Cave Spider, Orc Guard, Zombie
💰Loot system — gold, iron ore, mushrooms, potions, scrolls, gems each with unique tile and flavor text
🏰Orc King title screen with portrait — mission assignment, floor progression, return-to-Hold loop
⚔️Combat prototype v0.1 also preserved — THAC0 system, Fighter/Magic-User/Cleric, full bug scrub complete
🎨 Art Pipeline — In Progress
Style established — painted fantasy RPG (not pixel art). Gemini AI generating individual 128×128 PNG assets with transparent backgrounds
🧱Wall tiles still needed — top-down stone wall and cave wall surface. Gemini struggles with these; plan is to use reference image from original spritesheet to guide generation
🎭Character sprites are JPG (lost transparency on save) — need to re-save originals as PNG or generate fresh with transparency intact
✋ Questions for the Dev Meeting
👥 Party size — Do you control one character at a time (others follow), or actively manage a small group? One character is simpler and more readable on a phone screen. A small party (2–3) gives more tactical variety. This decision shapes UI, balance, and complexity throughout.
⚔️ Combat depth — How much do we want? Options: (A) one-tap auto-resolve with a result log, (B) choose attack vs. ability each round (current prototype style), (C) no combat — just encounter events with pass/fail checks. The "relaxed explorer" tone suggests (A) or (B) with simple choices.
🎮 Tech stack — React (same as all our other projects, existing prototype in hand) vs. GDevelop (no-code, exports to Android directly, steeper learning curve for us). React keeps the team in familiar territory; GDevelop may be faster for a grid-based game in the long run.
🎨 Art direction — Chunky pixel art (many affordable asset packs), hand-drawn illustrated style (warmer, more original, moderate cost), or continue the current CSS/emoji approach for the prototype phase. No art budget needed to validate the loop — but what's the target feel?
📛 Title — "Orc King's Raiders" is a working title from this session. Does it stick, or is there a better name? Should "Hearthstone" appear in the title at all given the Blizzard trademark risk?
🏰 The Hold vs. Hearthstone — The original concept used "Hearthstone" as the home base name. For a monster faction game, "The Hold" or "The Lair" fits better thematically. Confirm the shift — or find something everyone loves more.
💰 Monetization (Preliminary)
🆓Free tier — first dungeon zone, Orc Warrior + 2 recruitable characters, basic Hold
🔓Premium unlock ~$4.99 — additional zones, full character roster, story missions
🎨Cosmetic packs — Hold decor themes, character skins (no gameplay impact)
📺Optional rewarded ads — watch ad = one-run item boost or extra carry capacity (never forced, never mid-run)
🌸

Bloomscape

Sandbox garden + pixel art mobile game · Android (Google Play) · Browser prototype first
🌐 hsbloomscape.netlify.app
Grow flowers in a living garden to unlock art styles, then use those styles as pixel stamps to paint on a separate studio canvas. Inspired by the MySpace flower-pixel-art games of the late 2000s — people arranged flower icons like pixels to paint portraits and famous artwork. Bloomscape builds on that with breeding, rarities, a Bloomdex collection, and a social gallery. Free-to-play, cosmetic IAP, optional rewarded ads. Android target; browser prototype running now.
🔄 Core Loop
🌱 Plant seed 🌸 Bloom → unlock style 🎨 Paint with stamp 🖼️ Share → earn votes & seeds 🌱 Grow more → repeat

Garden Mode

Freeform placement Grow/bloom mechanic Rarity-based timers Botanical art style Sway animation (toggleable ✅) Pan + pinch-to-zoom Greenhouse (cross-pollination — Phase 2)

Studio Mode

Pixel art stamp canvas Dark theme + grid 5 painting slots Pan + pinch-to-zoom Undo / redo PNG export (bounding-box ✅)

Flower Rarities & Bloom Times (prototype uses shortened timers for testing)

⚪ Common — 15 min 🟢 Uncommon — 2 hr 🔵 Rare — 8 hr 🟣 Epic — 1 day 🟡 Legendary — 3 days
✅ Completed — May 29 Session
🐛Pinch zoom math fixed — both Garden and Studio had a double-pan offset bug during two-finger pinch. Now uses the same correct anchor formula as the scroll wheel. Zooming in/out on mobile will no longer drift.
🐛PNG export now crops to content (Step 6 ✅) — Export calculates the bounding box of all your stamps and crops tightly around them at 2× resolution. Empty-canvas export shows a friendly warning. Previously exported a fixed 800×800 centered at world origin, which often produced blank images.
🐛Animation toggle added (Step 7 ✅) — 🌿 button in the tool bar turns flower sway on/off. State persists across sessions. Allows players to reduce motion if preferred.
🐛Stamp ID persistence fixed — Studio stamp IDs now save and restore correctly; previously reset to 1 on every load, which could cause ID collisions when features like the Bloomdex track stamp history.
🐛Context menu edge clamp fixed — Long-press menu was clamping to canvas width; now clamps to window width so it stays on screen near any screen edge on mobile.
🐛Save error feedback — Silent catch block now shows a toast if localStorage is full, so the player isn't left wondering why their garden isn't saving.
✅ Phase 1 Build Status — Steps 1–7 Complete
Step 1 — Garden canvas: place, drag, delete, undo/redo
Step 2 — Pan and pinch-to-zoom (bug-fixed May 29)
Step 3 — Local save: auto-saves, persists on refresh
Step 4 — Seed shop, grow/bloom mechanic, wiggle-burst bloom animation
Step 5 — Studio canvas: pixel stamps, 5 painting slots, undo/redo
Step 6 — PNG export: bounding-box crop, 2× resolution (fixed May 29)
Step 7 — Animation toggle: 🌿 button, persists across sessions (added May 29)
Step 8 — Real art assets: botanical SVGs (Garden) + pixel art PNGs 32×32 (Studio)
🌿 Design Discussion — Greenhouse Mechanic (Phase 2)
💡 Concept: Rather than cross-pollination happening automatically in the open garden (too passive), breeding happens in a dedicated Greenhouse — a special third tab or overlay. You bring two flowers you own into the Greenhouse, initiate the cross, and a mystery seed grows over time. This gives the mechanic its own space, makes it feel intentional and special, and keeps the garden canvas from getting cluttered with "breeding zones." Think of it like a dedicated crafting station.

How It Could Work

Select two flowers from your collection Place them in the Greenhouse slots Timer runs (scales with result rarity) Mystery seed revealed on completion Plant it in Garden → bloom → unlock in Studio Some hybrids chain-breed for rarer results

Rarity Escalation

Common + Common → Common or Uncommon hybrid Common + Uncommon → Uncommon or Rare Uncommon + Uncommon → Rare Rare + Rare → Epic Any + Epic/Legendary → chance at Legendary Hybrid + Hybrid → high variance, anything possible
Bloomdex — The Collection Hook
📖 Every flower species (base + hybrid) has a Bloomdex entry. Undiscovered entries appear as silhouettes with a "?" — tantalizing but unnamed. Discovered when you grow that flower for the first time. First Discovery Badge: the first player globally to discover a hybrid has their username permanently credited in that entry for all players. Bloomdex progress shown on profile (e.g., "142 / 300 discovered"). This is the single highest retention feature planned — it drives curiosity, long-term play, and social competition.
Decisions Needed — Greenhouse
Third tab or overlay? — Greenhouse as a permanent tab (Garden · Studio · Greenhouse · Seeds), or a modal/drawer launched from the Garden tab? A tab feels more like a first-class feature. An overlay keeps the nav simpler until Phase 2 is built.
How many Greenhouse slots? — Start with one breeding pair at a time (simple, focused), or two pairs simultaneously (faster progression, more to check back for)?
When to build it? — After real art assets (Step 8), or do you want to prototype the mechanic now with placeholder art so it can be tested before art is finalized?
Bloomdex before or with Greenhouse? — Bloomdex needs backend (user accounts) to track First Discovery globally. Build the local version first (shows your own collection, silhouettes for unknowns) and add the global credit system later with Firebase?
🎨 Step 8 — Art Assets (Phase 1 Final Step)
🌺Garden Mode → Botanical SVGs — 10 starter flowers. Detailed petals, subtle gradients, natural proportions. Tools: Inkscape (free), Adobe Illustrator, or AI-generate → vectorize → clean up.
🕹️Studio Mode → Pixel PNGs 32×32 — Same 10 flowers as crisp pixel sprites. Bold flat color, no gradients, black or transparent outline. Tools: Aseprite ($20, best option), Pixilart.com (free, browser-based), or purchase packs from itch.io / Craftpix.
Decision Needed — Art Source
DIY, commission, or purchase? — DIY (Inkscape + Aseprite) = most control, most time. Commission on Fiverr = ~$50–150 for a full pack. Purchase pre-made packs from itch.io/Craftpix = fastest, ~$10–30, but less unique. AI-generated + vectorized = fast and free but may need cleanup. What matters most — uniqueness, speed, or budget?
🌸

Garden Bloom (name TBD — see decisions)

Block puzzle · Google Play · React + Vite · Prototype playable · Code-reviewed May 29
🌐 hsgardenbloom.netlify.app

Concept

Block Puzzle

Platform

Google Play

Levels Built

7

Status

Playable ✔
An 8×8 block puzzle with a flower garden theme. Place pieces until nothing fits — clear rows and columns to score. Five flower-type block sets (Rose, Sunflower, Lavender, Daisy, Lily), weed obstacle cells that force strategic play, and a 7-level progression system. Built in React + Vite JSX, deployable to Netlify. New this session: full code review completed; new mechanic proposed — card-based cosmetic unlock system that lets players collect and swap tile sets, backgrounds, and board frames as they play.
✅ Built — Prototype Complete
🖱️Drag-and-drop piece placement — centered ghost piece, live grid preview, green/red border for valid/invalid drops
8×8 grid with row and column clear mechanic — place pieces until nothing fits
🌺5 flower block types (Rose, Sunflower, Lavender, Daisy, Lily) with color gradients and emoji
📊7-level progression — score targets, animated progress bar, level-up overlay
🌿Weed obstacle cells (0 → 12 per level) — block placement and can't be cleared, force strategic play
🎯3 piece difficulty pools (easy / medium / hard) unlocking progressively across levels
🔍Code review completed May 29 — 6 issues identified, 3 are fix-before-ship (see below)
🗺️ Level Map
1 · Seedling 0 weeds · small pieces · 200 pts
2 · Sprout 2 weeds · small · 400 pts
3 · Budding 4 weeds · small+med · 700 pts
4 · Blooming 6 weeds · small+med · 1,100 pts
5 · Flourishing 8 weeds · medium · 1,600 pts
6 · Garden Master 10 weeds · med+hard · 2,200 pts
7 · Royal Garden 12 weeds · hard only · 3,000 pts
🔍 Code Review — Issues Found (May 29)
🚨 FIX Unwinnable board at Level 7makeGridWithWeeds() places 12 weeds randomly with no validation. On a 64-cell board, rare but possible to generate a start where no tray piece fits anywhere. Add a validateBoard() check before returning.
🚨 FIX Misleading score toast — The "Lines Cleared! +X" message includes the piece placement points (cells × 10) in the total, not just the line-clear bonus. Player sees +220 and assumes 2 lines = 220pts, but it's actually 200 for lines + 20 for the piece. Separate the messaging.
🚨 FIX Fragile shape reference equalityLevelUpOverlay checks levelConfig.shapes === PIECE_SHAPES_HARD using JS reference equality. Works now because the constant is never copied, but will silently break if a level ever spreads the array. Replace with a named flag or includes() check.
🃏 New Direction — Cosmetic Card System
Concept: As you play, every N points (or every line clear) awards a Bloom Card. Collect a set of cards (e.g. 10) to unlock a cosmetic theme pack. Three unlockable categories:
  • Tile Sets — swap the flower emoji/color palette (Cherry Blossom, Underwater Reef, Autumn Harvest, Space Garden, Candy…)
  • Backgrounds — swap the gradient/ambient background behind the board
  • Board Frames — decorative border/overlay around the 8×8 grid
Cards are purely cosmetic — no pay-to-win. Unlocks are permanent per device. This also sets up the IAP path: coin packs can buy card bundles to accelerate unlocks.
✏️ Rename Discussion
With a card-based theme-unlock mechanic, "Garden Bloom" is still descriptive but may be too generic for Play Store discoverability. Names under consideration — bring to meeting for decision:
🎯 Decisions Needed at This Meeting
D1 Rename or keep? Finalize the game name before committing to Play Store assets, app ID, and Netlify URL. Changing later is painful.
D2 Card system scope for next sprint — build the full card UI + unlock system now, or ship the fixes + combo multiplier first and add cards in the sprint after?
D3 Card earn rate — per line-clear, per level-up, or per score milestone? This affects how fast players reach the first unlock and shapes the session length.
D4 Fix priority order — all 3 bug-flagged items (board validation, score toast, shape equality) are pre-ship but can be batched. Do we fix in current JSX file or begin a component refactor first?
🏨

Grand Mystique Hotel

Browser hotel builder · Inspired by Hotel City / Playfish · React JSX → Google Play
🌐 mistiquehotel.netlify.app
A browser-first idle hotel builder — place rooms, earn gold every 8 seconds, level up, unlock themes and amenities, and build a full-service hotel. Single-file React + Babel (no build step), hosted on Netlify. Google Play via React Native is the long-term target.
✅ Session 1 — Core Systems
💰Idle income system — rooms earn gold every 8 seconds (one "day")
XP & leveling — earn XP from income; level up grants +2 gems
💎Gem trickle — ~1 gem earned randomly every ~3 days
🏅Reputation system — driven by amenities placed; stacks as guest multiplier and boosts all room income
🏗️12-column × 9-floor grid — tower zone (10 cols), lobby overhang (2 cols), protected entrance plaza, floor numbers on left edge
🛏️10 room types — Standard, Deluxe, Suite, Double Decker Suite (gem), Lobby, Laundry, Bar, Restaurant, Pool, Gym
🎨9 themes — Classic (free default), Gothic, Hippie, Tropical, Royal, Sci-Fi, Haunted, Retro 80s, Woodland — each adds an income % bonus; unlocked with gold
🏁Game launches with Lobby and Laundry pre-placed on the ground floor
✅ Session 2 — New This Session (May 28, 2026)
💾Save / Load — localStorage persistence with 800ms debounced auto-save. Progress survives page refresh. Save key: grand_mystique_v1. Reset button clears all data.
🏨Classic theme as default — "Classic" is now the free starting theme (neutral Comfort Inn look). Gothic moved to a purchasable theme at $600. INIT updated to selectedTheme:"classic".
🔀Move rooms — clicking a placed room now shows Move + Demolish options. Move enters a re-placement mode; the room is lifted from the grid and the player clicks a new valid location to drop it.
🔍Zoom in / out — ± buttons (0.4× – 2.5× range, 0.25 steps) plus Ctrl+scroll. Outer spacer div sized to totalW*zoom gives correct scrollbars. Scroll wheel uses non-passive listener to prevent page scroll hijack.
🔗Adjacency rule — new rooms (and moved rooms) must share an edge with an existing room. Pre-placed Lobby + Laundry serve as the seed. Own footprint is excluded from neighbor check to avoid false positives.
🎨Fully themed CSS room interiorsGuestRoomInterior replaced with per-theme CSS scenes. Each theme has unique furniture, lighting, window, curtains, bedding, and props — all pure CSS shapes + emoji, no images:
🏨Classic — beige walls, burgundy curtains, wood headboard, warm lamp, TV on dresser
🦇Gothic — dark purple stone, stained-glass arch, canopy bed, 3-flame candelabra, skull + bat emoji
☮️Hippie — yellow walls, shag carpet, peace-sign window, beaded curtains, lava lamp with animated blobs
🌲Woodland — green walls, pine floor, plaid curtains, log headboard, lantern glow
🌴Tropical — teal walls, sandy floor, open window, rainbow tropical bedding, spinning ceiling fan
📼Retro 80s — dark purple, checkerboard floor, neon window rod, ★RETRO neon sign, boxy 80s TV
👻Haunted — very dark stone, arched moonlit window, tattered curtains, flickering candle, cobweb
👑Royal / Medieval — warm beige stone, arched stained glass, velvet curtains, four-poster bed, gold torch with animated flame
🚀Sci-Fi — dark blue, circuit floor, porthole window, sleep pod bed, holographic display with scan lines, pulsing status lights
💤All themed rooms share: floating ZZZ sleep animation, floor divider for Double Decker (h≥2)
🛏️ Room Types
Room Size Cost Notes
Standard Room1×1$80Free from start
Deluxe Room2×1$200Unlock $400
Suite3×1$500Unlock $1,000
Double Decker Suite3×25 💎Unlock 3 💎 — premium gem room
Lobby4×1FREEPre-placed; seeds adjacency
Laundry1×1FREEPre-placed; seeds adjacency
Bar2×1$350Unlock $500
Restaurant3×1$600Unlock $800
Pool3×1$700Unlock $900
Gym2×1$400Unlock $600
🎨 Themes (9 total)
Theme Bonus Price Notes
🏨 Classic+5%FREEDefault starting theme — neutral hotel look
🦇 Gothic+10%$600Dark elegance
☮️ Hippie+8%$700Peace, love & room service
🌲 Woodland+10%$900Nature-inspired calm
🌴 Tropical+15%$1,000Sun, sand, room upgrades
🕹️ Retro 80s+12%$1,100Totally rad
👻 Haunted+12%$1,200Do they check out?
👑 Royal+20%$1,500Fit for a king
🚀 Sci-Fi+18%$1,700Beam guests up to 5-star
💡 Suggestions & Ideas to Consider
🧲Smart hover snap — hover footprint currently places anywhere valid; could auto-snap to nearest valid cell to reduce frustrating missed placements.
🏛️Resizable Lobby — currently fixed at 4 wide. Could allow expanding to 6 or 8 wide for a grander entrance feel (premium unlock).
💎Gem economy balancing — trickle rate and gem room costs need tuning once Spa / Rooftop / Observatory exist. Current 3-day trickle may be too slow for casual players.
🏆Guest satisfaction meter — individual room happiness scores that decay if amenities aren't nearby. Adds strategic depth to room placement.
📸Hotel postcard / share — screenshot your hotel to share with friends. Easy Netlify social hook.
🌙Day/night cycle — visual sky shift (sunrise to sunset to night) tied to the 8-second day ticker. Night mode makes haunted rooms extra spooky.
🏗️Floor elevator — animated elevator car between floors; visual only, but gives vertical movement and life to the building facade.
⚠️ Known Issues
🖱️Room hover footprint works but could be smarter — snap to valid position
🎯No win condition or progression goals yet — mid/late game loop undefined
💎Gem economy needs balancing once more gem rooms exist
📱Not mobile-optimized yet — cells are 66×58px at 1× zoom, cramped on phone; zoom helps but layout not responsive
🪐

Planet Forge

Mobile puzzle game · HTML5 Canvas · Single file · Netlify · Android Chrome
🌐 hsplanetforge.netlify.app
Forge a habitable planet before a colony ship arrives. Colored element blocks fly in from random directions — spin a wheel to redirect them, fill rings to clear them, and balance Water / Air / Earth to determine what kind of planet you build. The colonists survive or perish based on how well you did. Single HTML5 Canvas file, no frameworks, no build tools.
✅ Core Systems Built
🎡Spinning wheel with ◀ ▶ tap buttons — hold longer = momentum builds; easy to overshoot
🧱Three element blocks (💧 Water · 💨 Air · 🌍 Earth) fly in from random directions with glowing trails; auto-land and slide inward to deepest open slot
Red destroyer gap — spin over an incoming block to ZAP it (+5 pts); only destroys if slot behind is already occupied
💫Ring mechanics — fill all 12 slots → ring clears + big bonus; 5 same-color in a row → bonus + fills element beaker; new ring only grows when a block lands on occupied slot
☄️Comets (3 per level) — screen flashes amber 3s before arrival; land on a 5-same-color cluster to seed life (🐟 / 🐦 / 🌲) for +500 pts + colonist bonus
🌌Galaxy map — all forged planets shown between levels with type, level, survivor count; total universe population tracked; localStorage auto-save
🚀Colony ship arrival animation — detailed ship with wings, cockpit, engine glow, blue thrust trail; outcome calculated at timer end
🔊Full Web Audio sound design — 11 distinct sounds, no audio files required
🌍Evolving planet hub — starts as grey rock, grows oceans, landmasses, clouds, and ice caps as elements fill; 120 twinkling stars + nebula glow
🪐 Planet Outcomes
🌍 Class M — Habitable All 3 elements 25%+ → 100% survival · Advances level
🌊 Ocean World Water > 60% → 30% survival
🏜️ Desert World Earth > 60% → 30% survival
🌀 Gas Giant Air > 60% → 0% survival
🪨 Barren Rock Total elements < 20% → 0%
💥 Gravity Collapse Too many rings stacked → 0%
🪐 Marginal World Unbalanced but partial → 50% survival
🐛 Bugs Fixed This Session
🔧ctx.roundRect() replaced — not supported on older Android Chrome
🔧Orphaned canvasOffsetX() method body causing full crash on load — now monitored
🔧Double game loop on restart — old animation frame now cancelled before new one starts
🔧Blocks incorrectly triggering new ring on every hit — slot calculation rewritten
🔧Gap permanently blocking inner ring slots
🔧Hub radius was a live getter growing each frame — caused fat ring glitch; now fixed at game start
🔧Ship animation blocking main update guard — separated into own updateShip() method
🗓️ May 28, 2026 — Morning Discussion
Destroyer gap slot removed. Slot 0 is now a normal landing slot. ZAP mechanic, gap indicator, and red glow all gone.
🔭Porthole redesign decided. Player looks out a spaceship porthole. Porthole overlay with riveted rim and LED instrument panel. Top HUD kept. Element bars deferred to porthole circumference arc gauges (next session).
☄️Comet mechanic: Option A chosen. Seed life on 3+ same-color touching blocks. 5-in-a-row bonus removed entirely.
🛠️ May 28, 2026 — Evening Build Session
🎨Full Gemini sprite integration. All art generated by Gemini AI, sliced/cleaned with Python, base64-embedded. Sprites: 12-variant trapezoid ring tiles (water/earth/air), 6 planet formation stages, 3 element blocks (water crystal / earth rock / air cloud), comet with fire tail, 3-frame ship animation, porthole overlay with LED panel.
🪐Planet formation stages live. Hub cycles through 6 Gemini-art stages from barren cratered moon → Class M Earth as element beakers fill. Life icons appear on planet surface when seeded.
💎Trapezoid ring tiles. Ring slots now use Gemini trapezoid sprites (wider outer edge, narrower inner edge) with ctx.clip() to prevent slot overflow. 5 style variants per element — randomly assigned by ring index × slot.
🚀Ship animation upgraded. 3 sprite frames (small/medium/large) scale up as ship approaches. Fallback canvas ship kept if sprites unloaded.
☄️Comet sprite live. Gemini fiery comet with ice-blue core and golden tail, rotates to match travel angle. 3+ cluster detection implemented.
🎬Title screen — Split layout. Cockpit hero shot (Gemini image) fills top 45–52%, "PLANET FORGE" title + Launch button in dark panel below. "HEARTHSTONE GAMES" byline. Desktop constrained to 420px width, centered.
🌑Hull mask. Dark hull-colored fill (#111318) covers canvas outside porthole ring radius — stars no longer visible in corners outside the porthole.
📉Planet shrinks under pressure. When rings stack to 4, planet hub shrinks to 75%. At 5 rings, 50%. Recovers when rings clear. Gives visual "danger" signal and makes room.
⌨️Desktop keyboard controls. Arrow keys + A/D spin the wheel. retryLevel() function added (was referenced in HTML but never defined — bug fixed).
When rings are lopsided (filled unevenly), the filled slots' visual weight makes the planet look off-center. Partially addressed by adding ctx.clip() back to trapezoid sprites. May need further investigation if still visible after clip fix.
🍓

Strawberry Valley

Cozy idle village builder · Google Play · Desktop + Mobile · v6 playable
🌐 strawberryvalley.netlify.app
A cozy idle village builder with an aerial/satellite view and painted ground texture. Buy grid squares one at a time, place and upgrade buildings, collect wandering neighbors and critters, and click resource nodes for bonus coins. Slow, intentional idle income — not overwhelming. Prototype v6 complete and playable on desktop.
✅ Design Decisions Finalized
🗺️Aerial/satellite map view — canvas-drawn painted ground (dirt path, stream, grass patches)
Grid system — individual squares purchased one at a time, must be adjacent to owned land; vacant lots earn 0.1🪙/min passively
🛖Starter package — free 2×2 patch + free starter cabin (1×1, top-left); cabin is one-time only
🍄Clickable resource nodes — flowers, mushrooms, berries scattered on map for bonus coins while actively playing
🖱️Right-click context menu — Upgrade / Move / Info on any building; Move mode shows blue valid placement tiles
🏗️Three interaction modes — Build / Buy / Browse
🛖 Cabin Upgrade Path
Level Size Income Notes
Lv 1 🛖1×10.5/minFree starter
Lv 2 🛖1×11/minRenovation
Lv 3 🏠2×11.8/minGrows sideways
Lv 4 🏠2×12.5/minRenovation
Lv 5 🏡2×24/minFull family home · 2nd Neighbor unlocked
✅ Prototype v6 — Complete & Playable
Aerial map with canvas-drawn ground
Individual square purchasing
Cabin upgrades Lv1–5
Right-click context menu (Upgrade / Move / Info)
Free move mode with blue valid-placement tiles
Quest system (10 quests) + Village log
Wandering Neighbors + critters
Clickable resource nodes
Speed controls (1× / 2× / 5×)

Current Building Roster

🛖 Cabin (1×1, free) 🌲 Tree (1×1) 🌱 Garden Box (1×1) 🔧 Tool Shed (1×2) 🪣 Wishing Well (1×1) 🏡 Cottage (2×2) 🏪 Village Shop (2×2) 🏘️ Family House (3×3)
🎨 Visual Goal — Addendum
🌅 Target aesthetic: warm golden-hour lighting · 2.5D buildings with real depth and shadow · animals tied to structures (cow shed = cows, coop = chickens) · visible crop growth stages · seasonal trees · water feature. Current HTML prototype captures game logic but cannot reach this visual fidelity — requires game engine + proper assets.
Target visual aesthetic for Strawberry Valley — cozy farm with golden-hour lighting, 3D buildings, animals, crops
Reference screenshot — target visual aesthetic
⚙️ Engine Decision — Godot vs Unity
Godot — Recommended. Completely free, open-source, forever. 0% revenue cut. Native Android/Google Play export. Strong 2.5D support ideal for cozy village games. Fastest-growing indie engine in 2026. No licensing risk.
⚠️ Unity — Consider later. Free under $200K annual revenue. Scales to $2,310/seat/yr at Pro. Runtime fee was cancelled in 2024. More learning resources but larger overhead for a solo/small project.
📋

Add a Project

This tab is ready for your next agenda item.

🏠

Hearthstone Property Management

Multi-role tenant/owner/admin portal · Supabase · Stripe · Netlify
🌐 manage.sisqrealtor.com
Full-stack property management platform for Hearthstone Realty's PM division. Three-role auth system (Admin/PM Staff, Property Owners, Tenants). Stripe card + ACH payments routing to trust account, Mailgun email notifications, document storage, maintenance requests, owner statements, and a marketing AI listing generator — all deployed on Netlify with Supabase as the backend.
⭐ Live — manage.sisqrealtor.com 🔧 Populating Real Data 💳 Stripe Live Keys Ready
✅ Completed This Session
🔧Fixed Supabase 503 error — PostgREST Data API toggle was disabled; enabled + saved. Login now works.
🌐Custom domain live — manage.sisqrealtor.com via Squarespace CNAME → hearthstone-pm.netlify.app. SSL auto-provisioned.
💳Stripe fully configured — test keys active in app, live keys saved for go-live. Payout schedule set to Manual → trust account linked.
🪝Stripe webhook wired — endpoint at /.netlify/functions/stripe-webhook, signing secret set. Fires on payment_intent.succeeded + payment_intent.payment_failed.
📧Mailgun email wired — mg.sisqrealtor.com domain added, 5 DNS records added in Squarespace (SPF, DKIM, MX x2, CNAME tracking). Verification in progress.
📁Supabase Storage bucket — 'documents' bucket created (private) with RLS policies for admin/owner/tenant access tiers.
📬Admin email separated — donnakalayjian@gmail.com for PM notifications; info@sisqrealtor.com kept clean for real estate business only.
⚙️All Netlify env vars set — STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, MAILGUN_API_KEY, MAILGUN_DOMAIN, ADMIN_EMAIL, Supabase keys all live in Netlify environment.
⏳ Waiting / In Progress
📧Mailgun DNS verification — records added, propagation in progress (~15–60 min). Check mg.sisqrealtor.com status in Mailgun dashboard.
🏦Stripe trust account verification — micro-deposits sent to trust account, ETA 1–2 business days. Confirm amounts in Stripe dashboard when they arrive.
🔧Supabase helper function fix SQL — supabase-fix-functions.sql ready to run. Removes SET search_path from SECURITY DEFINER functions for long-term PostgREST stability. 2-minute task.