Development Log
2026-08-18 - Dev Garden Published for Sharing
- Creator asked to get the design/doc site itself (not just one log file) accessible by URL, to share read-only with one collaborator (Dandan).
- First attempt used Netlify (
sites:create+deploy --dir dev), matching how the game itself was hosted earlier. Both--proddeploys to the new site failed with a bareJSONHTTPError: Forbidden, including from a clean directory with no conflictingnetlify.toml; a same-account draft (non-prod) deploy to the same new site succeeded, which points at a production-deploy-specific gate rather than a config problem. Creator then confirmed Netlify credits are exhausted on this account and the project already moved primary hosting to Cloudflare Pages (seeDEPLOYMENT.md"Cloudflare Production") — this fully explains the prod-only failure. Deleted the unused Netlify site (greenhouse-notes-devgarden) to avoid leaving cruft. - Switched to Cloudflare Pages, matching the game's own current host.
npx wrangler pages project create greenhouse-notes-devgardenthennpx wrangler pages deploy dev --project-name greenhouse-notes-devgardenpublished the entiredev/folder (the generated Dev Garden dashboard plus every doc page underdev/docs/) as its own separate Pages project, independent from the player-facinggreenhouse-notes-playtestproject. Nofunctions//D1 wiring needed since this is pure static content, unlike the main game. - Hit one unrelated environment issue along the way:
npx wranglerinitially failed with aworkerdnative-binary load error (generateBinPath) — a corrupted/incomplete npx cache entry for the platform-specific binary, not a real incompatibility. Deleting that one~/.npm/_npx/<hash>directory and re-running fixed it. - Verified the deploy live: dashboard loads at the project root,
docs/notes/dev-log.htmlrenders full content, internaldocs/...navigation links work (they were always plain relative<a href>, notfetch(), so no CORS/base-path concerns), no console errors. - Live: greenhouse-notes-devgarden.pages.dev. Same privacy model as the main game's Cloudflare/Netlify hosting — unlisted by URL, not access-controlled or password-protected. Fine for sharing with one trusted person; not for broad distribution.
- Not wired into any deploy routine yet — this is a manual snapshot. Whoever updates
notes/*.mdordesign/*.mdlater should rerunnode dev/build-docs.cjs(already project convention) and thennpx wrangler pages deploy dev --project-name greenhouse-notes-devgardenagain to refresh this site; nothing does that automatically today.
2026-08-17 - Next-session design handoff
- Recorded Dandan's external UI review as the next session's first design discussion: an idle-game information-hierarchy audit focused on dominant rewards, visible autonomous activity, return payoff, quieter normal states, resource semantics, and reduced borders.
- Kept the review as evidence and hypotheses rather than an automatic feature list. Existing systems such as return summaries, resource collapse, mobile workspaces, and pot-local actions must be audited before adding parallel UI.
2026-08-17 - Phase 7 setup, music, and art pipeline
- Recorded the creator's two original melody phrases and a first arrangement exercise in
design/music-direction.md. - Added a scoped pixel-art production list in
design/art-asset-plan.md: mint and butterfly orchid form the first visual vertical slice. - Began Phase 7 with an isolated butterfly-orchid specimen and two QA checkpoints. It grows on an approximately twenty-minute healthy baseline and is not yet part of normal progression.
- Split the orchid from ordinary production cards with a full-width specimen presentation, a dedicated tall pot and backdrop, a persistent identity banner, and lifecycle-specific copy. The distinction remains responsive rather than becoming a separate management screen.
- Replaced the flat research list with a four-branch capability tree.
个体培育is the first cultivation node and now awards one orchid specimen in ordinary saves after three readable prerequisites and an 18-note research cost. - Corrected the first tree presentation after it still felt like a research list attached below tasks. Growth route and research now occupy separate tabbed views; research receives a wider four-lane canvas and shorter nodes.
- Added the orchid's first bounded cultivation result. Natural waiting still flowers successfully; two distinct effective care types produce a persistent branched-spike record and two additional flowers under equal conditions. Added natural and branched bloom QA checkpoints.
- Expanded the creator learning board with orchid lifecycle, pixel growth-stage, and loop-arrangement studies.
- Completed the first butterfly-orchid care language in
0.10.0-beta.9. Hold-to-water remains one continuous action; translucent roots shift from silver to green, leaves change posture, excess water drains visibly, and one short sensory line explains only the current state. - Kept specimen mistakes gentle. Dry and wet conditions slow growth but remain recoverable, and the ordinary greenhouse master never harvests the orchid.
- Added the adopted
V0.4greenhouse theme to the playable prototype with an explicit play/pause control, remembered volume, and no autoplay. The original recording, written notes, and all arrangement iterations remain archived in the Dev Garden music room. - Verified the release candidate at desktop and 390-pixel phone width. The orchid states, music asset, and responsive layout load without horizontal overflow; both smoke suites pass.
- Follow-up
0.10.0-beta.10replaces the ambiguous standalone music note with an explicit播放音乐 / 暂停音乐command. The text remains visible on phones while only the volume slider collapses. 0.10.0-beta.11adds a bounded fertilizer research ladder. Ten harvests and 16 notes unlock超级鸡肥at 54 coins for roughly four minutes of 3x growth; the late金坷垃node requires that research, 30 harvests, and 45 notes, then offers a 180-coin two-minute 6x dose.- Kept one fertilizer inventory and one pot action instead of adding three item stacks. Research upgrades future purchases and uses; direct QA checkpoints cover both new tiers. Pest resistance and mutation formulas remain separate future specializations.
0.10.0-beta.12raises the untouched music default from 36% to 55%, attempts autoplay, and keeps retrying after ordinary player gestures when browser policy blocks load-time audio. A deliberate pause is remembered and never overridden.- Reduced competition around the idle entry instead of adding another notice.
安心挂机now appears immediately below the greenhouse heading and before mobile seed/shop tools, occupies the primary width, and explicitly says it enters the viewing mode. The commercial master is a smaller secondary command. 0.10.0-beta.13starts an icon-first cleanup. The four persistent resources now show a temporary visual symbol and value while retaining full hover and screen-reader names. Installed drippers show a water-drop icon plus remaining uses, with a short drop animation when they refill a pot.- Removed whole-card hover and selected-state translation, which combined with periodic rendering and plant motion to feel like pot jitter. Hover now changes only border and shadow; plant sway remains at less than half its prior angle.
0.10.0-beta.14replaces the low-level in-game MP3 with a 12dB louder mastered copy. It retains about 7dB peak headroom, resets untouched volume preferences to 40%, and keeps manually chosen levels unchanged.- Replaced both sticky desktop and fixed mobile pot controls with one pot-local action dock. The selected pot spans the grid, contains its own complete actions, and returns to normal layout when dismissed or replaced. Phone actions may scroll horizontally inside the card but no longer cover the viewport.
- Reduced persistent care and fertilizer banners to compact status pills with close buttons. Dismissal lasts for the current effect; a later, newly triggered effect may appear again.
0.10.0-beta.15turns the persistent resource cards into a compact resource shelf. It starts collapsed, expands on demand, remembers the player's choice, and never derives that choice from periodic game rendering. This specifically guards against the earlier pattern where an opened panel closed itself on the next update.0.10.0-beta.16makes the pot action dock easier to dismiss. Its close control is a conventional, larger top-right target; clicking outside the selected pot or pressing Escape also closes it, while clicking another pot switches selection directly.0.10.0-beta.17centers a pot in the viewport after the player deliberately opens it. The focus happens only on selection; controls inside the enlarged card no longer retrigger selection or pull the page while watering, feeding, or harvesting.0.10.0-beta.18gives action feedback a readable causal rhythm: a short entrance, roughly 1.7 seconds of stable confirmation, and a soft exit. Up to four rapid messages now queue instead of overwriting one another; major route rewards receive the same slower entrance-hold-exit structure.0.10.0-beta.19removes repeated pot information identified in playtesting: placeholder initials, duplicate header water values, healthy-state care labels, and the passive stable-garden summary. The care summary now appears only for actionable conditions, while dense grid placement closes holes around a full-width selected pot without moving its controls outside the tile.
2026-08-17 - Phase 6 closeout and mixed ecology
- Confirmed and clarified the ordinary 4 -> 6 -> 8 pot expansion path; the catalog now shows whether another tier remains.
- Kept caretaker profitability as something learned after a shift instead of adding a precise pre-hire forecast.
- Added the first expanded-greenhouse companion condition: calendula and cornflower blooming together can attract a swallowtail, which may bring borage seed.
- The new visitor records automatically and adds no recurring care action.
2026-08-17 - Phase 6 first slice: Greenhouse Master
- Added a single paid commercial caretaker,
温室大师: 750 coins for a 20-minute, 3x-efficiency shift. The price was calibrated against deterministic scale tests so four pots lose 372, six pots gain 48, and eight pots gain 300. - Kept hiring next to
安心离开; the details appear only in a compact confirmation sheet, including a phone bottom-sheet layout. - The master harvests, sells, and replants mint and calendula. Rare plants, Spring Cup plants, and reserved seed heads are protected by default.
- Extended the existing return report with harvest count, sales, service fee, water cost, and net profit.
- Added
nurture-caretaker-returnfor immediate QA of a completed shift. - Fixed the small-screen water utility shortcut so it occupies a full row in the resource strip instead of overlapping the fixed workspace navigation.
- Made caretaker shifts operate in real time instead of only during reload-based offline settlement. An active master now waters, feeds, removes aphids, accelerates growth, harvests, and replants while the page remains open.
- Added a persistent
温室大师操作中banner and read-only pot context. Equipment upgrades, shopping, orders, research, and navigation remain usable during the shift. - Normalized the master's 3x rate against the player's visual speed control, preventing 4x display mode from multiplying commercial output to 12x.
- Added
nurture-caretaker-activeto verify immediate rescue of a dry, aphid-affected pot. - Replaced the master's naive direct-sale loop with a first profit planner. Mint and calendula harvests now enter inventory, complete
日常花束orders are delivered automatically, and subsequent planting follows the current ingredient shortage. - Empty ordinary pots can join the plan using owned basic seeds. Partial order materials remain with the player when the shift ends.
- The live banner names the active order shortage; the return report separates completed orders and order revenue.
- Added six- and eight-pot caretaker return checkpoints. Measured gross order income was 378, 798, and 1050 coins at four, six, and eight pots; the fee moved from 500 to 750 to create the intended loss / break-even / profit curve.
Short progress notes live here. Durable reasoning belongs in the linked design documents; final decisions also go into decision-log.md.
2026-08-17 - Retained plant pacing
- Slowed retained calendula regrowth from 78% to 35% after cutting, so keeping a plant saves the seedling phase without producing another bloom almost immediately.
- Added a distinct regrowth sequence:
修剪恢复->新枝生长->再次孕蕾->再次含苞. - Retained plants keep a mature silhouette during recovery instead of visually reverting to a seedling.
- Rebalanced the two quiet-growth starters after their growth times converged. Mint now starts from four flowers and an eight-coin baseline, making it the high-volume foundation crop; calendula retains lower volume, higher per-stem value, and repeat blooming.
- The daily bouquet now uses six mint and two calendula for 42 coins. Its reference material value is 20 coins and its visible order premium remains 22 coins. The night sachet also uses six mint so later rare flowers do not retire the starter crop.
- Extended quiet growth to moonflower in
0.10.0-beta.2. It uses a twelve-minute healthy curve, remains safe when unattended, and keeps care as optional acceleration rather than required maintenance. - Corrected offline bloom yield so mint, calendula, and moonflower retain their species-specific volume and cultivation bonuses after a return.
- Connected the showcase to offline growth in
0.10.0-beta.3:安心离开opens the clean garden scene, explains safe unattended slowdown once, keeps a compact always-visible status, and returns to management through an explicit command. The return notice now summarizes the whole garden rather than only the first changed pot. - In
0.10.0-beta.4, moved安心离开directly above the pots and made its subtitle reflect the current number of growing, blooming, and slowed plants. - Replaced the partial three-species allowlist with explicit safe-idle profiles for all ordinary greenhouse species. Slower wildberry and hydrangea preserve environmental weight; Spring Cup cultivation remains independent.
- Fixed ambiguous small-screen showcase overflow in
0.10.0-beta.5. Four slots now auto-fit in one viewport; six slots show roughly three at a time, expose the next slot, and explicitly say to swipe. Added a six-pot QA checkpoint. - Completed nurturing-idle Phase 5 in
0.10.0-beta.6. True offline progress now runs purchased central watering, dripper durability, automatic soil feeding, water-bill accumulation, and eligible automatic payment rather than silently bypassing automation. - Expanded the return summary with water refills, dripper uses, soil feeds, and paid water cost. Added a deterministic six-species twenty-minute return scenario and automated coverage for safe growth and operating expenses.
2026-07-20 — House Jam Started
- Established the private, local-only project boundary.
- Chose a static HTML/CSS/JavaScript prototype.
- Defined the seed-to-bloom core loop.
- See: Jam Charter, Core Loop
2026-07-29 — Ecology, Economy, and Soft Failure
- Added finite plant life, water ranges, soil nutrients, compost, visitors, rare carried seeds, and automatic visitor records.
- Replaced petals with coins and introduced limited-duration automatic watering.
- Added flower quantity, freshness, direct sale, persistent flower materials, and orders.
- External playtesting led to one-action watering, immediate aphid treatment, expansion, stronger feedback, and the first central automation tool.
- See: Core Loop, Progression Flows, Playtest 01
2026-07-31 — Soil Experiment and Cleanup
- Added hydrangea color variants and specialist soil.
- Playtesting found repeated pH controls visually and cognitively messy.
- Reframed soil as concrete acidic substrate or garden lime applied in a separate lab for three completed harvests.
- Connected freshness to both direct sale price and usable stocked material.
- See: Core Loop — Soil Depth, Decision Log
2026-08-05 — Vision and Event Direction
- Recorded the personal origin: approaching real plant knowledge through safe, satisfying care loops.
- Clarified that fast pleasure loops are primary; quiet plant research is a supporting long loop.
- Chose cultivation competitions as the next arc layer before adding more species.
- Accepted a dedicated event pavilion, persistent reminders, explicit stages, explainable judging, bounded gambling, and failure that returns knowledge or recovery value.
- Separated the future shop loop from the first event experiment. Full loans, rent, employees, branding, and bankruptcy remain research topics.
- Added a structured backlog, research board, and separate local Dev Garden dashboard.
- Added an offline document reader and first-class document library. Markdown remains the editable source, while generated local pages provide navigation, typography, tables, task lists, and readable loop diagrams.
- Implemented the first Spring Grower's Cup slice: persistent invitation, visible risk briefing, two event pots, four planting rounds, two random prompts, optional judge research, candidate score estimates, locked submission, automatic category reveal, medal rewards, participation recovery, and bloom-duration ribbons.
- See: Vision, Event System, System Backlog, Learning Board
2026-08-05 — Tiny Beta Preparation
- Prepared a no-player-login static beta while keeping saves local to each browser and device.
- Added feature-targeted feedback for the overall game, core loop, greenhouse, seeds, soil lab, orders, and Spring Grower's Cup. Reports include version, viewport, and a small progression summary, not email or full save data.
- Selected Netlify static hosting plus Netlify Forms for the first feedback collection pass; a free database and cross-device save remain deferred.
- Ran two read-only QA reviews covering mobile usability and event economy.
- Moved the greenhouse ahead of seeds on narrow screens, compacted the loop overview, enlarged touch controls, and made greenhouse and event actions into fixed mobile bottom docks.
- Made the mobile event pavilion a focused view so it no longer shares one long page with the normal greenhouse.
- Added a six-normal-harvest cooldown between rewarded Cup entries, isolated event visitor rewards from the main economy, gave event bee observation a seed-return benefit, and hardened malformed event-save migration.
- Both automated smoke-test suites pass. Screenshot-level local browser QA was blocked by
file://policy, so iPhone Safari and Android Chrome remain required beta checks. - See: Event System, Playtest 01
2026-08-05 — Pace Adjustment
- Playtest feedback still described the greenhouse as too frantic after the mobile-control pass.
- Slowed the shared simulation tick from one second to 1.35 seconds. Growth, water loss, nutrients, bloom freshness, visitor timing, and event cultivation now move together at 74% of the previous speed.
- Kept immediate button feedback and judging reveal timing unchanged so the interface still responds crisply.
2026-08-06 — First Shared Beta Live
- Pushed the project history to the private
rubbishbean/greenhouse-notesGitHub repository. - Published beta
0.5.1-beta.1athttps://greenhouse-notes-playtest.netlify.app/with production visibility set to public. Players do not need Netlify or GitHub accounts. - Enabled Netlify Forms and confirmed that
playtest-feedbackdetects all seven intended fields. - Submitted and read back one clearly labeled
[QA TEST]entry, proving that the in-game feedback path reaches the server-side inbox. - Confirmed anonymous HTTP access returns
200and the production page uses the expected security and no-cache headers. - Tested live responsive layout at 390×844, 768×1024, and desktop width. No horizontal overflow or out-of-bounds controls were found; the mobile greenhouse precedes the seed box and its contextual action dock remains fixed above the bottom safe area.
- Verified the mobile feedback sheet, five feedback categories, body scroll lock, console output, and public deployment. No browser console errors were observed.
2026-08-06 — Player Copy and Maintenance Pass
- Added a dedicated deployment and maintenance guide covering releases, Netlify linking, feedback retrieval, rollback, and browser-save compatibility.
- Added the guide to the Dev Garden document library and generated reading pages.
- Reframed the visible Core Loop as a player-facing garden schedule and removed prototype, loop, and phase language from ordinary greenhouse messages.
- Released the copy cleanup as
0.5.2-beta.1after smoke and responsive checks.
2026-08-06 — Save Reliability Queued
- Verified that the manual save button writes the current state to browser local storage and that most meaningful actions already save immediately.
- Recorded the remaining weakness: passive growth depends on page-close saving, which is not fully reliable when a mobile browser kills a background tab.
- Made save confidence the next maintenance slice: immediate visible confirmation, a quiet save about every 15 seconds, an additional background/page-hide save, and explicit handling when browser storage fails.
- Kept the scope local-only. This work will not imply cloud saves or cross-device synchronization.
2026-08-06 — First Online Feedback Imported
- Imported Netlify submissions 2 through 11 from two external playtesters; submission 1 remains labeled and excluded as the original QA test.
- Preserved player wording, target, category, version, viewport, and coarse progression context in First Online Feedback.
- Removed IP addresses, user-agent strings, referrers, and raw tester IDs before storing feedback in the private repository.
- Left every item in
Pending discussionstate so implementation does not begin before the creator and collaborator review the observations together.
2026-08-06 — First Feedback UX Pass
- Reviewed F01 through F11 with the creator. F03 remains open for clarification; the remaining navigation, prompting, soil-lab, competition, and mobile-density observations were accepted as changes or explicit experiments.
- Removed the player-facing garden schedule and added a compact current-order goal near the top of the game.
- Split the small-screen game into greenhouse, orders, codex, and competition workspaces with actionable badges.
- Added a compact current-seed control above the greenhouse, separate seed and equipment sheets, and a two-column mobile pot overview.
- Strengthened selected-pot feedback and kept its action dock above the mobile workspace navigation.
- Replaced the premature one-item codex tab with a static plant-codex heading until visitors exist.
- Added an explicit soil-lab blocked state when every bed is occupied, including a direct route back to the greenhouse.
- Made the competition a focused workspace with a persistent greenhouse status and return action.
- Added regression coverage for the codex state, order goal, compact pot summary, soil-lab block, and removal of development-facing loop copy.
- See: First Online Feedback, Decision Log, System Backlog
2026-08-06 — F03 Watering Pressure Clarified
- Follow-up identified repeated watering and progress-check scrolling as the source of the one-word
忙report. - Kept the active-care opening, but moved the first automation proof earlier: filling a third bed now grants and installs one trial dripper.
- Added direct water-condition and percentage badges to pot cards so players do not have to infer urgency from a colored meter.
- Replaced the easy-to-miss temporary message with a persistent automation milestone card. Existing saves that already received the trial dripper but never saw this card will see it once after updating.
- Clarified that the trial dripper is installed automatically and belongs to its flower bed across harvests. Both planted and empty beds now show a persistent installed-device badge; the notice no longer mistakes a dripper on an empty bed for inventory.
- Versioned the corrected milestone notice so players who dismissed the earlier ambiguous copy see the fixed explanation once without resetting their save.
- Added an explicit selected-bed status for installed automation: it names the water threshold, remaining triggers, and whether automatic watering just occurred. Automatic triggers now briefly highlight the bed.
- The corrected notice migration also replaces one missing or already-expired trial dripper for affected saves, ensuring the explanation always points to a device the player can verify.
- Added the first intentionally absurd care alert: entering severe drought triggers a single low-budget disaster shake and
特级干渴stamp, then settles into a stable warning. Manual recovery briefly answers with抢救成功; no alert flashes continuously.
2026-08-06 — Plant Health and Rival Event Brainstorm
- Recorded plant diseases, targeted crop protection, fertilizer preparation, and enhanced seed traits as linked research directions rather than immediate maintenance meters.
- Separated visible virtual rivals from pest sabotage. The first paper test compares two candidates without attacks; sabotage remains a later event-only experiment with telegraphing, symmetric rules, counters, and full protection for the home greenhouse and unique seeds.
- Added research tasks for documenting one real plant symptom, checking authoritative diagnosis sources, studying Plant Tycoon, and testing disease and sabotage loops on paper.
- Kept the partner's spotted potato leaves as an observation prompt, not a diagnosis or implemented disease name.
2026-08-06 — Beta 0.6.0 Feedback UX Release
- Released
0.6.0-beta.7from commit139258cto the existing account-free Netlify playtest site. - The release includes small-screen workspaces, two-column mobile beds, compact seed and equipment sheets, active-order guidance, stronger selected-bed actions, corrected codex and soil-lab states, focused competition navigation, early trial automation, visible dripper operation, and the one-shot severe-drought visual joke.
- Both smoke suites passed before deployment. The production URL returned
200with revalidation and security headers, and its JavaScript reported the expected app version. - Live responsive checks passed at 390×844 and 1280×800 with no horizontal overflow. Mobile displayed two 170-pixel bed columns, the fixed workspace navigation, and a hidden garden log; desktop retained the three-column greenhouse and visible log.
- Netlify production deploy:
6a74d62757de4c141964d3d5. - The new two-column mobile greenhouse addresses the tester's recommendation to keep at least two pot cards visible per row.
- Retest target: four occupied beds during the first ten minutes, before expansion or the permanent central tank.
2026-08-06 — Seed Lineage and Complexity Direction
- Accepted a late-game raising loop in which successful parent plants can found named seed lineages with competition merit and inherited trait potential.
- Kept species mastery, pedigree recognition, and genetics as separate progress tracks so losses can teach, wins can confer status, and breeding can preserve meaningful tradeoffs.
- Added seed-bank protection, varied competition briefs, and bounded traits as safeguards against a single infinitely superior seed line.
- Elevated progressive disclosure into a product rule: each new system waits until the previous one has a demonstrated automation or batch exit and a compact management summary.
- Added research tasks for a three-generation paper lineage, incompatible judging briefs, lineage vocabulary, and a complete automation-exit audit.
- See: Vision, Progression Flows, System Backlog, Learning Board
2026-08-06 — Phase A Save and Four-Bed Stability
- Replaced simulation-tick storage writes with a 15-second passive autosave while preserving immediate saves for meaningful actions.
- Added background, page-hide, and close save requests plus truthful success and storage-failure handling.
- Replaced the ambiguous single-character save control with a larger status control that always says progress is local to this device.
- Added a compact care summary above the greenhouse so four occupied beds can be scanned for harvest, water, aphids, nutrients, and decline without opening each card.
- Added save-timing, manual confirmation, storage-denial, empty-garden summary, and stable four-bed summary regression coverage.
- Both smoke suites passed. Browser QA passed at 390×844 and 1280×800 with no horizontal overflow; the mobile greenhouse retained two 170-pixel bed columns, a 44-pixel save control, and the fixed selected-bed action dock.
- Versioned the local candidate as
0.6.1-beta.1. It is ready for creator review and four-bed player retesting before the limited-market slice begins.
2026-08-06 — Actionable Reminders and Player Pace
- Made the greenhouse care summary an explicit direct-action reminder. It prioritizes aphids, water problems, decline, harvest, and low nutrients, then selects and scrolls to the relevant bed.
- Made the active-order reminder visibly actionable with
查看缺口or前往交付; its existing order-workspace navigation is now communicated rather than hidden. - Added saved
静养 0.1×,常速 1×, and飞速 4×segmented controls. Changing speed reschedules the simulation without changing immediate interface or judging feedback. - Kept speed honest by scaling growth and its costs together instead of multiplying rewards alone. The existing pause button remains independent.
- Added migration fallback for invalid saved speeds, timer-rescheduling coverage, direct-reminder priority coverage, and order-link state coverage.
- Both smoke suites passed. Browser QA passed at 390×844 and 1280×800 without horizontal overflow; mobile speed targets are 44 pixels high and the desktop control uses a 50-pixel band.
- Versioned the local candidate as
0.6.2-beta.1. Future art can use the observational mode for longer growth and bloom animation without delaying fast-play users.
2026-08-06 — Beta 0.6.2 Pace and Reminder Release
- Pushed commit
cd315cdand released0.6.2-beta.1to the existing account-free playtest URL. - Confirmed production returned
200, served the expected app version, retained the feedback form, and passed the existing security and revalidation header checks. - Live 390×844 browser checks found no horizontal overflow; speed controls retained 44-pixel targets and produced no console errors.
- Netlify production deploy:
6a74dc609406906c5f69c631.
2026-08-06 — Phase B Three-Wave Flower Market
- Added a dedicated market stage between judging and final settlement in local candidate
0.7.0-beta.1. - Converted the submitted flower quantity into market stock and the competition score into a visible popularity band.
- Added opening, award-rush, and closing buyer waves. Each wave offers friendly, market, and premium prices with visible sales forecasts.
- Locked each wave's small demand variation when judging ends and persisted it in the save, preventing refresh rerolls.
- Added bounded leftovers: unsold event stock stays outside normal inventory and becomes a small compost recovery at closing.
- Extended event migration and lifecycle regression coverage through market settlement, reward claiming, malformed saves, and no-submission participation.
- Both smoke suites pass. Visual QA passed at 390×844 and 1280×900 with no horizontal overflow; the three mobile price targets are approximately 105×148 pixels and the desktop market fits in one viewport.
- Kept this phase local for creator review. The live playtest remains on stable
0.6.2-beta.1until the market is accepted for deployment.
2026-08-06 — Phase C1 Event Reinvestment
- Identified the next economy break: once finite tools and expansions are purchased, coin output no longer feeds another meaningful decision.
- Kept Phase B in local playtesting and opened Phase C as a separate reinvestment track rather than extending the market into a full flower shop.
- Added a compact event preparation counter with three once-per-Cup purchases: 64-coin automatic event care, a 42-coin two-dose flower-count kit, and 48-coin market publicity.
- Made all effects visible in cultivation or market UI, saved their state across refreshes, and reset them cleanly when the event closes.
- Prevented nutrition purchases after no eligible or future candidate remains. Unaffordable items state the exact coin shortfall instead of failing silently.
- Added a closing cash statement covering entry fee, preparation spend, payout, and net result.
- Extended lifecycle tests through purchases, duplicate-purchase protection, targeted nutrition, automatic event watering, publicity demand, migration, and no-candidate safeguards.
- Both smoke suites pass. At 390×844, three preparation choices remain visible side by side at roughly 97×132 pixels with no horizontal overflow; at 1280×900 they render as three 366×116 pixel choices.
- Versioned the local candidate as
0.7.1-beta.1. The live playtest remains on0.6.2-beta.1pending creator review of Phases B and C1 together.
2026-08-06 — Phase C2 Flower Sorting Bench
- Added a 420-coin permanent flower sorting bench as the first capital project after the central tank.
- Kept the project progressively disclosed: its equipment card appears only after permanent watering automation is installed, and its harvest bar appears only when at least two pots bloom together.
- Added confirmed
全部寄售and全部入库commands with exact totals. Batch resolution reuses per-pot sale, freshness, material, seed, note, compost, soil-cycle, and Cup-cooldown rules. - Kept visitor waiting and sell-versus-stock as player decisions. The bench reduces repeated confirmation but does not harvest automatically or apply a hidden policy.
- Insufficient funds now display the exact remaining amount on the equipment card and produce direct feedback when pressed.
- Added old-save migration coverage, unlock and shortfall checks, purchase persistence, batch-equivalence tests, and visibility rules.
- Both smoke suites pass. Visual QA at 390×844 found no horizontal overflow; the batch actions are 158×48 pixels. At 1280×900, the batch bar is 73 pixels high with 128×44 pixel actions.
- Versioned the local candidate as
0.7.2-beta.1. The live playtest remains on stable0.6.2-beta.1until the combined B/C candidate is accepted.
2026-08-06 — Phase C2 Revision: Cycling Soil Feeder
- Creator playtesting found the sorting bench weak and awkward: four-to-eight-bed batch harvest saved too little work, forced a rigid all-sell/all-stock choice, and did not change the production loop.
- Removed the sorting-bench equipment and batch-harvest bar from the playable interface while retaining the experiment above as history.
- Replaced the same 420-coin capital slot with a cycling soil feeder unlocked after the central tank.
- The feeder watches actively growing beds. Below 35% nutrients it automatically spends one stored compost and restores 42 points; it never buys inputs or runs without compost.
- Added visible monitoring, waiting, and just-fed states to the equipment card, selected-bed context, mobile summary, and bed status chips.
- Migrated saves that purchased the sorting bench into ownership of the soil feeder so local playtest progress is not lost.
- Replaced batch-harvest tests with purchase, threshold, resource-consumption, visual-state, and legacy-migration coverage.
- Responsive QA passed at 390×844 and 1280×900 with no horizontal overflow. The mobile equipment card is 338×130 pixels with a 314×42 status control; the desktop card is 216×130 with a 192×42 status control.
- Versioned the revised local candidate as
0.7.3-beta.1. The live playtest remains on stable0.6.2-beta.1.
2026-08-06 — Staff Boundary and Candidate Consolidation
- Recorded a clear future division of labor: machines execute fixed physical thresholds, staff route conditional workflows across systems, and the player owns rare items, exceptions, and high-risk commitments.
- Scoped the first hire as one general greenhouse assistant with four readable policies: harvest priority, minimum stock, protected items, and cash reserve.
- Kept staff implementation behind mature order, selling, reservation, and payroll systems so it cannot duplicate existing water and soil machines or silently play the game for the player.
- Added paper research tasks for one-worker predictability and an automation responsibility audit.
- Moved the active implementation track into combined Phase B/C candidate consolidation. The next evidence needed is creator and small-beta playtesting of the event market, event reinvestment, and cycling soil feeder together.
- Updated the Dev Garden overview, roadmap, research board, timeline, and deployment gate to the actual
0.7.3-beta.1state. Responsive checks pass at 390×844 and 1280×900 without horizontal overflow. - Creator completed the combined candidate playthrough. The market, reinvestment choices, and soil feeder were coherent and produced no clear negative UX; their effect felt modest rather than transformative. Approved
0.7.3-beta.1for small-beta release while keeping economy values provisional.
2026-08-06 — Beta 0.7.3 Market and Soil-Feeder Release
- Pushed commit
1156b15and released0.7.3-beta.1to the existing account-free Netlify playtest site. - The release combines the Spring Cup's three-wave flower market, event-only reinvestment choices, net-cash result, and the 420-coin cycling soil feeder.
- Both smoke suites and the whitespace check passed before release. The generated Dev Garden pages were rebuilt and validated.
- Live mobile QA at 390×844 confirmed no horizontal overflow, a working first planting action, the expected app version, and the
playtest-feedbackform metadata. The page loaded without a player account and produced no console warnings or errors during the initial live check. - Pre-release responsive QA also passed at 1280×900. The in-app browser remained phone-sized during the final production pass, so desktop production inherits the same tested static files rather than a separate online-only layout check.
- Netlify production deploy:
6a74f10c1ef613c434bbc86f. - Small-beta question: do unprompted players notice these systems and change their decisions, or do they also experience them as coherent but modest additions?
2026-08-06 — Visible Automation Catalog
- Two additional testers independently asked for more automatic watering, while one settled on mint as the most comfortable low-attention crop.
- Preserved mint's legitimate “reliable and easy” role and kept all irrigation prices, durability, grants, and unlock timing unchanged for this test.
- Once the tool shelf opens, it now previews the complete current equipment path instead of hiding the central tank and soil feeder until their prerequisites are complete.
- Locked equipment names its price and prerequisite. Affordable items show their price, unaffordable items show the exact coin shortfall, and owned equipment retains a distinct completed state.
- Versioned the local candidate as
0.7.4-beta.1. The next retest separates discoverability from balance: if players can see the permanent tank and still tire before reaching it, the missing piece is a genuine mid-tier relief reward rather than another hint.
2026-08-06 — Flower-Market Lucky Wheel
- Added an eighth Spring Cup stage between flower-market closing and final settlement.
- Each Cup grants one free draw. After taking it, the player may buy at most two more with 30 coins, 6 mint materials, or 6 calendula materials.
- Published exact odds in the event UI: 86% common resources, 8% dripper, 3.5% next-order double voucher, 2.3% 90-coin jackpot, and 0.2% borage seed.
- Added a global 80-draw borage guarantee that persists across Cups and resets when the seed appears.
- Applied and saved every result before the wheel animation. Refresh cannot reroll the reward; history records both payment and result.
- Added borage as a normal growable, self-renewing plant after discovery. Its blue blooms attract bees more readily, while its flower material remains available for future content.
- Added a visible one-use order voucher. It doubles one fixed order's coin reward and is consumed on delivery rather than multiplying the player's bank.
- Included wheel coin spending and coin prizes in the Cup cash statement. Runs without a valid submission skip the market but still receive the free draw before participation recovery.
- Extended lifecycle tests through free and paid draws, payment consumption, the three-draw cap, immediate rewards, order vouchers, borage pity, malformed saves, and no-submission recovery.
- Versioned the revised local candidate as
0.8.0-beta.2; odds and costs remain provisional pending one complete creator playthrough. Added the user-supplied slogan “中奖概率倍儿高,奖品也嘛倍儿好” as intentionally dubious flower-market advertising rather than a system claim.
2026-08-06 — Spring Cup Outcome Presentation
- Creator playtesting found that market state changes were correct but dramatically unreadable: stock vanished instantly, waiting did nothing, and the next wave could replace the screen before the sale registered.
- Added a saved
awaitingNextmarket state. Each price choice now produces a held result scene with flowers leaving the rack, a customer response, wave revenue, before-and-after stock, and a deliberate next-wave or close-stall action. - Rebuilt the wheel as a labeled eight-position display and corrected the final pointer rotation to the chosen result. Exact probability labels remain visible even though the digital draw is weighted independently from equal display positions.
- Added a near-full-screen two-second wheel close-up and a separate saved prize reveal. Further draws and final settlement remain blocked only until the player acknowledges the result.
- Kept reward application before animation, so interruption or refresh cannot duplicate, discard, or reroll a prize. Added migration coverage for an interrupted market report and an unacknowledged wheel reward.
- Versioned the local candidate as
0.8.0-beta.3; balance is unchanged from beta.2.
2026-08-06 — 0.8.0 Small-Beta Release
- Creator approved the revised market and wheel presentation after a local playthrough.
- Pushed commits through
1a4b88ato the private GitHubmainbranch and released0.8.0-beta.3to the existing account-free Netlify playtest site. - Netlify production deploy:
6a750a9bc6f6a048af8b9635. - Production served the expected app version without login. Desktop
1280×720and mobile390×844had no horizontal overflow; mobile workspace navigation and the feedback entry remained visible. - No browser console warnings or errors appeared during the production check. Both smoke suites, JavaScript syntax, generated documentation, and whitespace validation passed before deployment.
2026-08-06 — Hydrangea Routes and Obsolete-Prize Protection
- Creator identified that a wheel dripper becomes a false prize after the permanent central tank and that only blue hydrangea had meaningful demand. Competition hydrangeas also had no way to use their defining soil mechanic.
- Kept the wheel table at 100% and the equipment slot at 8%. Before the tank it still awards one dripper; after the tank it visibly changes to a maintenance box worth 30 coins and 2 compost.
- Added repeatable purple and pink hydrangea orders alongside the existing blue order. Each route still consumes common flowers as a base so color demand supports rather than replaces early crops.
- Added per-pot event soil profiles with old-save defaults. Controls appear only for empty pots while hydrangea is selected; specialist products come from normal inventory, switching away refunds a reservation, and unused prepared pots return their product at closing.
- Event hydrangeas now bloom into the selected color, record the discovery, show that color through judging and the flower market, and receive a small specialist-soil difficulty credit for blue or pink.
- Versioned the unreleased local candidate as
0.8.1-beta.1. Both smoke suites cover the new reward conversion, color orders, event soil selection, refund behavior, bloom color, and scoring.
2026-08-06 — 0.8.1 Small-Beta Release
- Creator approved direct release of the hydrangea-route and obsolete-prize candidate.
- Pushed commit
1421668to the private GitHubmainbranch and released0.8.1-beta.1to the existing account-free Netlify playtest site. - Netlify production deploy:
6a750e8f0e8c8e3ce6de935e. - Both smoke suites, JavaScript syntax, and whitespace validation passed before deployment.
- Direct production-file checks confirmed the expected app version, maintenance-box conversion, purple and pink orders, and the
playtest-feedbackform. The in-app browser QA session could not retain its test tab, so this release record does not claim a fresh responsive visual pass.
2026-08-06 — Mobile Discovery and Pot-First Planting Candidate
- Sanitized and recorded the second direct-message feedback round as F12 through F18. Three themes repeated across players: first-session play feels hurried, phone users miss non-mint seeds, and irrigation, soil, orders, and tools do not remain mentally locatable.
- Versioned the local candidate as
0.8.2-beta.1without changing simulation timing. - Changed the mobile greenhouse seed control to state the number of currently plantable species and show an explicit
更换affordance. - Added a hybrid planting route: an empty bed can open a targeted seed picker, and choosing a seed plants it directly into that bed. Global selection remains available for repeated planting.
- Added direct selected-bed routing to irrigation equipment when no dripper is owned. The equipment control now names automatic watering and summarizes owned or permanent automation state.
- Added persistent soil-profile accents and text chips to empty and occupied beds.
- Both smoke suites cover seed-count copy, targeted pot planting, soil labels, and the irrigation route. A fresh browser origin successfully planted calendula through
空花盆 → 换一种; desktop inspection found no console warnings or errors. A new phone-width visual pass remains required before release.
2026-08-06 — 0.8.2 Mobile UX Experiment Release
- Creator approved publishing the focused mobile discovery candidate before any timing changes.
- Pushed commit
8b5ab1dto the private GitHubmainbranch and released0.8.2-beta.1to the existing account-free Netlify playtest site. - Netlify production deploy:
6a75787f5eabccf0f432b39d. - Both smoke suites, JavaScript syntax, generated documentation, and whitespace validation passed before deployment.
- Direct production-file checks confirmed the expected app version, pot-first selection route, irrigation route, explicit mobile controls, and feedback form.
- Experiment question: after removing seed and equipment search costs, does the first ten minutes still feel like hurried work? Growth, water, freshness, and event timing remain unchanged for this comparison.
2026-08-06 — Mobile Hierarchy and Event Attention Candidate
- Versioned the local candidate as
0.8.3-beta.1and recorded F19 through F22. - Removed the large soil surface from the mobile page flow. Empty beds now open a targeted buy-and-apply soil drawer; desktop retains the full comparison workbench.
- Renamed the two greenhouse quick destinations
种子库and温室商店and gave each a compact identifying mark. - Added exact per-material deficits to order cards and the top goal route.
- Added a Cup cultivation control that pauses only the main greenhouse while event candidates continue growing. Global pause behavior is unchanged.
- The prototype smoke suite covers old-save migration, independent event ticking, soil entry copy, and exact order deficits. A
390×844local preview showed no horizontal overflow. - Revised the candidate to
0.8.3-beta.2: removed the misleading permanent watering-shop action from pot controls. The top shop now quietly marks owned equipment awaiting installation or an affordable permanent upgrade.
2026-08-06 — 0.8.3 Mobile Hierarchy Release
- Creator approved the revised soil drawer, order deficits, event attention control, and shop entry for another small playtest round.
- Pushed gameplay commit
04f06abto the private GitHubmainbranch and released0.8.3-beta.2to the existing account-free Netlify site. - Netlify production deploy:
6a75807d4cd941fa0ce6ff9e. - Direct production checks confirmed the expected app version and feedback form. At
390×844, document width matched viewport width and the browser console had no warnings or errors.
2026-08-07 — Soil Entry Regression Fix
- Creator found that the pot-local soil action was absent on phones immediately after the
0.8.3-beta.2release. - Root cause: the action had been placed inside
.empty-soil-summary, which the compact mobile card intentionally hides. - Versioned the fix as
0.8.3-beta.3. Empty beds receive a dedicated compact soil button; occupied-bed soil labels open a read-only target with advance purchasing and explicit post-harvest application copy. - Pushed fix commit
4434881and released Netlify deploy6a758336b00facd27dd04730. Direct production checks found the expected version and both soil-entry render paths.
2026-08-07 — Compact Care and Persistent Pause Candidate
- Versioned the candidate as
0.8.4-beta.1after creator feedback that the fixed pot-detail surface obscured the lowest bed row and pause disappeared during scrolling. - Mobile selected-bed controls now default to a compact action dock with optional detail expansion. The desktop context surface is unchanged.
- Added pause and resume to the persistent mobile workspace navigation and removed the duplicate top pause button at phone width.
- At
390×844, the selected-bed dock measured 131 pixels high, ended above the navigation, and produced no horizontal overflow. Browser interaction confirmed the persistent control switches from pause to resume. - Pushed gameplay commit
81dbb90and released Netlify deploy6a7584c3706fad21d62fd4d6. Direct production-file checks confirmed0.8.4-beta.1, compact context behavior, and persistent pause assets.
2026-08-07 — Seed Fallback and Control-Clarity Fix
- Creator found an empty-bed dead end when the last selected species reached zero while another species remained available. The old
换一种route appeared only when at least two species were available. - Versioned the fix as
0.8.4-beta.2. A single fallback species is now directly plantable; multiple fallback species open selection; no inventory produces an explicit empty state. - Strengthened soil identity to a full profile-colored border and filled soil label. Visually separated persistent pause from workspace navigation with a tinted block and divider.
- Pushed gameplay commit
1b93644and released Netlify deploy6a7587919e5cef52f23bfd02. Production files confirmed0.8.4-beta.2and all three corrected render paths.
2026-08-09 — Bloom Warning, Feedback-Modal Overlap, and Selection-Clarity Fixes
- Session handed off from the original Codex session (out of budget) to Claude; same working tree, same private repo, no branch change.
- Sanitized and recorded the third feedback round as F30–F32: two new 小明 reports (
温室与花盆操作, category 想法 and 故障) plus a directly observed 丹丹 session. See notes/playtest-feedback-03.md. - Root cause for "flower wilts with zero warning" (小明, 丹丹, corroborates F12/小南):
getStage()silently swapped a text label to花期将尽at 70% of bloom age with no visual signal, and the top care summary never distinguished it from generic "可收获". AddedisBloomEndingSoon(), a pulsing amber card border + filled stage badge, a dedicated花期将尽 Ncount in the care summary, and a new priority tier ingetNextGardenActionIndexso the reminder routes to it before it's too late. - Root cause for 小明's bug report ("反馈弹窗被花盆面板遮住,竖屏发不出去"):
.feedback-modalwasz-index: 30, below the mobile pot-detail dock (35/60) and the bottom workspace nav (40). Raised the feedback modal toz-index: 200, above every in-game overlay including the wheel-prize reveal. - Root cause for 小明's second bug ("点击空白处无法取消花盆选择"):
#contextBarhad no close control and no outside-click handler. Added an explicit×close button on the context bar heading, a click-on-blank-grid-area handler, and Escape-to-deselect. - Strengthened the dry-water signal per 小明's "红色不够明显": introduced a more saturated
--warning-red, gave both the mild-dry and severe-dry pot-card states a full colored border instead of a thin left edge, filled the water-state chip solid instead of a faint tint, and extendeddryAlertTicksfrom 1 to 3 so the crisis shudder/stamp-slam entrance replays across ~4 seconds instead of one blink. - Reworded the severe-dry crisis-stamp copy from "生命体征:有点装死" (confusing per 小明) to "严重缺水,需要立刻浇水".
- Separately, user testing on desktop found that clicking
换一种/选择种子produced no visible change:openMobilePanelonly updated text inside the always-present sidebar.seed-panel, with no scroll or highlight on wide viewports (unlike the equivalent soil-lab button, which already branched onmatchMedia). Fixed by adding the same desktop branch: scroll.seed-panelinto view and play a one-shot amber highlight pulse. - Deliberately left
bloomDurationnumbers untouched this round per the F12 principle — ship the warning system first, then decide whether pacing still needs a numeric change once it can be evaluated in isolation. See decision-log.md. - Creator separately flagged the lucky-wheel prize reveal as visually broken: "闪动页面很奇怪,不连贯,一段一段地闪... 像是反复提醒得到了同一个奖品". Root cause:
renderEvent()'spresentationAlreadyMountedguard only protected the spin phase (checked forwheel-spin-overlaywhilewheelAnimating); once the spin finished and the prize card (wheel-prize-overlay) was showing, nothing stopped the background game-tick interval from callingrender()→renderEvent()→renderLuckyWheel()every tick, which does a fullinnerHTMLreplace of the event content and therefore recreates the confetti burst and reveal card from scratch each time — restarting their entrance animations every ~1.35s (or every ~340ms at 4×) for as long as the player left the reveal on screen. Extended the guard to also hold whilerevealPendingis true, confirmed via a standalone Node harness that countedinnerHTMLwrites: 3 extra unnecessary rewrites on the old code across 3 idle ticks, 0 on the fixed code, and acknowledging the reward still triggers exactly one more write to clear it. - Versioned the candidate as
0.8.5-beta.1. Both smoke suites,node -c, andgit diff --checkpassed; rebuilt Dev Garden docs withnode dev/build-docs.cjs. - Creator approved pushing and deploying this batch. Pushed gameplay commit
a09e0cbto the private GitHubmainbranch and released Netlify deploy6a792604939f5bf289781fb9(vianetlify-cliunder Node 22, since the shell's default Node 16 is too old for the current CLI). Production checks on the live URL confirmed0.8.5-beta.1, no console errors, and no horizontal overflow at390×844.
2026-08-09 — F18 Alert Parity and F12 Structured Pacing Retest
Creator asked whether F12 and F18 could be advanced without waiting on the next human playtest round.
F18 (pot alerts may still be too quiet) — code audit, not simulation. Read every "abnormal state" render path and found two real asymmetries rather than confirming the round was already fixed:
- Severe overwatering (
water > 94) had no equivalent to the severe-drycrisis-stamptreatment, despite carrying the same stress penalty as severe dry. AddedisSeverelyWet, a.plot-card.severe-wettreatment (blue-tinted inset shadow so it reads as "too much" rather than reusing the dry crisis's exact look), a matching crisis stamp ("严重积水,需要立刻松土排水"), and extended the alert-tick trigger to fire when water crosses above 94% too, not only below 8%. - Aphid infestation rendered in the same neutral blue
.visitor-chipstyling as a friendly bee or ladybug visit — no color or copy distinguished a pest from an ordinary visitor. Added a.visitor-chip.pesttreatment (warning-red border/background) for aphid specifically, changed its sub-copy from "自动记录中" to "需要处理", and added a.plot-card.has-aphidborder treatment so pest presence is visible on the card itself, not only inside the chip.
F12 (first ten minutes feel like hurried work) — quantitative simulation, not just re-reading the same open question. Wrote a Node harness (vm-loads prototype/game.js exactly like tests/smoke-test.cjs) that runs a simulated "reactive player": every N simulated seconds it performs a full care pass (water, treat aphids, harvest, replant, return declined plots) using the same functions the UI calls, then lets tickGarden() run freely between check-ins. This operationalizes the exact criteria the 2026-08-07 decision entry named: required actions per minute, and unattended tolerance.
Results against the pre-change build, 15 simulated minutes, fresh save, 4 starter plots:
| Check-in interval | Actions/min | Plants lost to timeout |
|---|---|---|
| 15–60s | 7–9 | 0 |
| 90s | 5.7 | 8 |
| 120s | 5.3 | 14 |
| 180s | 2.9 | 20 |
A player checking in every 90–180 seconds — squarely inside what 丹丹 and 小南 described — reliably lost plants, split between 花期自然结束 (bloom outlasted by absence) and 长期缺水 (thirst-stress decline during growth, a mechanic independent of bloom length entirely). This confirms F12 was not solved by the F30 warning system alone: a warning only helps if the player is present to see it.
Two targeted, narrowly-scoped changes, chosen to fix exactly this failure mode without touching growth rate, water-drain rate, or economy pacing:
- Multiplied every plant's
bloomDurationby 1.8× (mint 42→76 ticks / 57s→103s; wildberry 62→112 ticks / 84s→151s; others scaled the same way), preserving relative ordering between plants. - Halved the severe dry/wet stress-accumulation rate (
stressDelta2.8→1.4 dry, 2.6→1.3 wet), so a plant left completely unwatered survives roughly twice as long before stress-decline, without changing how fast water itself drains or how much growth slows while dry.
Re-running the same simulation against the patched build:
| Check-in interval | Plants lost to timeout (before → after) |
|---|---|
| 90s | 8 → 0 |
| 120s | 14 → 3 (now only 花期自然结束, and now pre-warned by the amber bloom-ending indicator) |
| 180s | 20 → 20 (unchanged — a 3-minute absence is still expected to cost something) |
Explicitly not touched: the 7–9 actions/minute workload at short check-in intervals. That number barely moved, because it comes from tap-count per visible issue, not from timing — fixing it would mean changing when automation unlocks or reducing how many pots need independent attention, which is a bigger architectural call than this pass's scope. Recorded as the next open item rather than silently expanded into.
Versioned as 0.8.6-beta.1. Both smoke suites and node -c pass; the pacing simulation itself lives at the session's scratchpad path, not in the repo, since it is a one-off analysis tool rather than a maintained test.
Creator reviewed the before/after simulation numbers and approved pushing and deploying. Pushed commit f2230f0 to the private GitHub main branch and released Netlify deploy 6a793037ffc8a61270c5b966. Production checks confirmed 0.8.6-beta.1 live with the patched bloomDuration values (mint 76) and no console errors.
2026-08-09 — Roadside Stand, Checkpoint 1: Vendor Trigger and Invitation
Creator approved building design/roadside-stand.md split-and-conquer, one checkpoint at a time, starting with the vendor invitation alone before the actual selling loop.
- Added
state.stall(unlocked,invitationPending,invitationSeenCount,declinedCount) todefaultState, with a merge-based migration innormalizeStateso existing saves without the field default cleanly. claimSpringCupReward()now checks the finalized score againstSTALL.invitationScore(90); if met and the stall isn't already unlocked or mid-invitation, it setsinvitationPending.- While
invitationPendingis true,scheduleGameTimer's interval callback skipstickGarden()/render()entirely — a stronger, independent pause from the ordinarystate.pausedflag, matching the creator's "全局进度暂停" requirement. - Added a new modal (
#stallInvitationModal,.stall-invitation-*CSS, z-index 150 — above every game overlay but below the feedback modal's 200, so QA feedback stays reachable even during this popup) with vendor dialogue that references the actual score and medal name, and two explicit actions: accept (state.stall.unlocked = true) or decline (clearsinvitationPendingonly, leaving the door open for a future qualifying score to re-invite, per the design doc's "never a disappearing popup" requirement). - Covered with new assertions in
prototype/smoke-test.cjs: sub-threshold score does not invite; qualifying score does and renders the modal with the score in its copy; decline clears pending without unlocking and a later qualifying score re-invites; accept unlocks and hides the modal; a legacy save missingstallentirely migrates to safe defaults. - Verification note: local file:// preview intermittently threw a
BLOOM_ENDING_THRESHOLDTDZ error that looked alarming, but it turned out to be a stale, accumulated console-log entry the browser tool carries acrossnavigate()calls within one tab, not a live bug — confirmed by wrapping the real page's initialrender()call in a temporarytry/catch(no throw) and by reproducing zero errors in a brand-new tab. Switched to servingprototype/over a localhttp.serverfor the rest of verification, which does not exhibit the file:// tool's snapshot/staleness quirks noted earlier this session. - Versioned
0.8.6-beta.2. Both smoke suites andnode -cpass. Not yet pushed — this is checkpoint 1 of a larger feature and is being shown to the creator before continuing to checkpoint 2 (stock allocation, timed cycle, settlement tab).
2026-08-09 — Roadside Stand, Checkpoint 2: Stock Allocation, Timed Cycle, Settlement
Creator confirmed checkpoint 1 looked and worked as expected, then asked to continue straight to the functional loop.
- Added
state.stall.cycle(startedAt,durationMs,allocation,result),completedCycles, andtotalRevenue; the existing checkpoint-1 shallow-merge migration (stall: { ...base.stall, ...loadedState.stall }) already covers these new fields for old saves with no extra work needed. - New
花摊workspace tab (#stallWorkspaceButton/#stallPanel), wired intoselectMobileWorkspace,renderMobileWorkspace, the mobiledata-mobile-workspaceCSS routing (added alongsideorders/codex/eventin every existing hide/show group rather than inventing a parallel system), andbody.event-activepanel-hiding so it doesn't clash with an open Cup pavilion. getMaterialUnitPrice(materialId)reusesMath.max(2, Math.round(plant.harvest.coins / plant.baseFlowers))— the exact formulacreateEventMarketalready uses forunitBase— so stall pricing doesn't invent a second pricing system; hydrangea color variants price off the basehydrangeaplant.getStallAllocatable()lists only materials currently in stock (matches the project's established "only real, current actions" pattern from the empty context-bar copy). A module-levelstallAllocationDraftobject holds the in-progress +/- stepper selection; it's UI-only and never persisted, reset on a successfulstartStallCycle.startStallCycle(allocation)clamps each requested amount to owned inventory, silently drops zero/invalid entries, deducts stock immediately, and rolls the entire outcome once viarollStallSale(allocation, randomFn = Math.random)at cycle start — stored incycle.resultright away. This is deliberately save-stable and re-roll-proof by construction (nothing is computed at reveal time), matching the design doc's explicit requirement to reuse the Cup market's "roll once, store it" pattern.randomFnis injectable so tests can force deterministic outcomes without mocking globalMath.randomfor the roll logic itself (though thestartStallCycleintegration test still does mockMath.randomdirectly, sincestartStallCycledoesn't expose its own randomFn parameter — sufficient for v1).- The cycle is timed with real wall-clock
Date.now(), not game ticks, matching the design doc's explicit reasoning: no FOMO risk attaches since nothing is lost by checking in late, only delayed, so it keeps progressing while the player is away or even paused. isStallCycleReady()gates both the settlement UI and a!badge on the workspace tab (same visual language aseventWorkspaceBadge).settleStallCycle()is a no-op before the timer elapses, pays outresult.revenueand returns unsold stems toflowerMaterialsonce ready, and clearscycleso a new allocation can start.- Verified the complete loop end-to-end via real button clicks in a browser (not just direct function calls): allocate mint+calendula with the stepper buttons, start, confirm inventory deduction and the in-progress countdown copy, fast-forward
cycle.startedAtinto the past, confirm the!badge and per-item sold/unsold breakdown, click settle, confirm coins/inventory/completedCyclesall update correctly and the panel returns to the allocation view. No console errors. Checked both mobile (390-ish) and desktop (1400) widths. - Fixed a stub-compatibility bug caught by the test suite before it ever reached a browser: used
element.querySelector(...)in two spots, which theprototype/smoke-test.cjsDOM stub doesn't implement (onlyquerySelectorAll); switched both to thequerySelectorAll(...).forEach(...)pattern already used everywhere else in the file. - Added smoke coverage for: unit pricing (including hydrangea variants pricing off the base plant), allocatable-material filtering, rejecting empty/invalid allocations, deterministic roll behavior via
rollStallSale's injectablerandomFn, inventory deduction on cycle start, the ready-check gate refusing early settlement, payout plus unsold-stem return on settlement, and legacy-save migration for the new fields. - Versioned
0.8.7-beta.1. Both smoke suites andnode -cpass. Not yet pushed — checkpoint 2 completes the usable v1 loop and is being shown to the creator before deciding next steps (push/deploy now, or continue toward the deferred items: weighted sell-through, stall upgrades, decorations, staff).
2026-08-09 — Vendor Invitation Breathing Room, and a Real Render/Tick Coupling Bug
Creator flagged that the vendor invitation appeared with zero delay right on top of the Cup reward-claim moment, with no breathing room, and asked for a short pause before it shows.
- Added
STALL.invitationDelayMs(2800ms) andstate.stall.invitationRevealAt.claimSpringCupReward()still setsinvitationPendingimmediately (so the eligibility gate against re-triggering works exactly as before), but a newisStallInvitationVisible()helper additionally requiresDate.now() >= invitationRevealAtbefore the modal actually renders.accept/declinenow check visibility rather than rawinvitationPending, so clicking through a stale/pre-timer reference is a no-op. The main-loop pause guard (scheduleGameTimer) was switched from gating oninvitationPendingtoisStallInvitationVisible(), so the greenhouse keeps ticking normally through the short breathing gap and only actually pauses once the modal is about to show. - Caught a real bug while verifying this, not a false alarm this time. Initial live-browser testing showed the invitation logic flipping to "visible" correctly (confirmed via direct state inspection) but the modal never actually painting on screen without a manual
render()call — even many seconds after the reveal threshold passed, and even in a focused, non-throttled tab. Root cause:scheduleGameTimer's interval callback only calledrender()inside the sameif (!state.paused && !isStallInvitationVisible())branch astickGarden(). The instantisStallInvitationVisible()flips true, that condition goes false — which correctly stops simulation, but also stops the one thing that would have painted the transition, so the reveal silently never appeared until some unrelated interaction happened to trigger a render. The same latent bug affects the stall cycle's own settlement-ready badge if the player has the main greenhouse paused when the 30-minute timer elapses — that path existed since checkpoint 2 and was never actually exercised understate.paused === trueuntil now. - Fixed by decoupling simulation from painting: the interval callback now always calls
render(), and only gatestickGarden()behind the pause/visibility check. Verified live with passive polling (no manual render calls) that the invitation now transitions from hidden to visible right around the 2.8s mark on its own, and that the stall's ready-to-settle badge now appears within about 2 seconds even withstate.paused = true. - This is a good example of why "the code looks right" isn't verification — the fix was validated by watching the unforced behavior over real elapsed time in a live tab, not by reasoning about the guard clause in isolation.
- Not yet versioned as a separate release; folded into the still-unshipped
0.8.7-beta.1candidate alongside checkpoint 2, since neither has been pushed yet.
2026-08-09 — Desktop and Tablet Workspace Tabs
Creator flagged that this whole session's discoverability work (F13-F33, plus the stall's own two checkpoints) only ever touched mobile. Desktop was still one continuously growing scrolling page — sections hard to tell apart, seed switching easy to miss, the new 花摊 panel buried at the very bottom — and asked whether to paginate desktop into tabs too, with the same fast navigation mobile already has.
The good news going in: the entire tab-switching mechanism (activeMobileWorkspace, selectMobileWorkspace, renderMobileWorkspace, every badge) was already 100% viewport-agnostic JS — the mobile/desktop split was purely a CSS scoping decision (@media (max-width: 680px)). This made the fix mostly a CSS job, not a rewrite.
- Pulled
.mobile-workspace-navout of the base "always display:none" group and gave it its own default (non-phone) presentation: a horizontal pill tab row instead of the phone's fixed bottom bar.#mobilePauseButtonis hidden by default in this presentation (desktop already has its own#pauseButtonin the topbar; showing both would be a duplicate control) and explicitly restored todisplay: gridinside the existing phone media query, which still fully re-styles the nav back to its proven fixed-bottom, safe-area-aware mobile treatment untouched. - Added a new
@media (min-width: 681px)block that applies the same "one workspace, one visible section" routing mobile already had, extended to.stall-paneland reusing the identical[data-mobile-workspace="X"]attribute selectors already being set by existing JS. Deliberately did not copy mobile's "hide.seed-panelwhile viewing garden" rule into this block — tablet and desktop keep seed-panel beside garden when on the 温室 tab, since only phone width has the compactmobile-garden-toolsreplacement for it. This is an intentional width-tier difference, not an oversight. - Desktop's 3-column
.layout-grid(250px minmax(0,1fr) 300px) collapses to 2 columns (250px minmax(0,1fr)) specifically while the 图鉴/codex tab is hidden, via a separate@media (min-width: 981px)rule — scoped that narrowly on purpose, because the same override at tablet width (681-980px) would have fought the existinggrid-template-columns: 1frsingle-column collapse that tablet already relies on. - Verified across all three tiers in a live browser, not just by reading the CSS: desktop (1400px) correctly isolates each of 温室/订单/图鉴/赛事/花摊 with no layout gaps, and the 图鉴 tab now fully replaces the view rather than sitting in a third column; tablet (800px) correctly keeps the existing single-column stacking and phone-safe grid collapse while still getting full tab isolation; phone (390px) was re-tested end to end (bottom nav position,
#mobilePauseButtonvisible again, seed-panel still hidden in garden workspace, stall tab still works, no horizontal overflow) and found byte-for-byte behaviorally unchanged. Also spot-checked that plot selection, the context bar, and the desktop "换一种" scroll+highlight fix from earlier this session all still work correctly inside the new 2-column garden layout. - This means 花摊 is no longer "buried at the bottom" on any screen size — it's a one-click tab everywhere now, and no workspace's content length affects any other workspace's scroll position anymore.
- Versioned
0.8.8-beta.1. Both smoke suites andnode -cpass (no JS was touched, so this was purely a regression-testing pass on the browser side). Not yet pushed — showing the creator across all three widths before release, and this is a checkpoint ahead of the still-pending bouquet/bundling economy redesign for the stall.
2026-08-09 — Post-Handoff Large-Screen Audit
Codex reviewed the Sonnet handoff commits, logs, and the current candidate at desktop, tablet, and phone widths before adding more content.
- Fixed F34: desktop pot soil actions targeted a soil laboratory that the new workspace CSS hid. Soil configuration now opens as a targeted overlay at every width, with a centered large-screen dialog and the existing phone sheet treatment.
- Fixed F35: the desktop selected-pot context bar no longer remains sticky over the final pot row. Mobile keeps its reachable fixed treatment.
- Audited the new roadside-stall loop. Its save-stable result roll, inventory deduction, unsold return, and settlement rules are coherent with the design record. The visible interaction issue was rendering: the always-running timer rebuilt the stall DOM as often as every 250ms at 4x speed, which could replace a button between pointer-down and click and repeatedly discard keyboard focus. The stall now participates in the existing interaction guard and only redraws when allocation, displayed countdown second, or settlement state changes.
- Added behavioral coverage for opening soil from a pot plus CSS regression assertions for the overlay and desktop context positioning. Versioned
0.8.8-beta.2; this remains a local review candidate, not a production declaration.
2026-08-09 — Local Tester Console
- Added a hidden tester mode at
http://127.0.0.1:4174/?qa=1. The ordinary player URL remains unchanged; the QA launcher is created only when the query flag is present. - Added four representative checkpoints: early care loop, midgame automation, Spring Cup invitation, and unlocked roadside stall. They are generated through the current
defaultState()andnormalizeState()functions instead of maintaining a second hand-written save schema. - Added focused state controls for coins, seeds/materials, instant bloom, severe dryness, aphids, and empty beds. These are for feature and visual verification; a clean start remains necessary for pacing and onboarding tests.
- The first QA modification stores a separate backup of the current save, and
恢复测试前存档restores it exactly. The backup survives checkpoint reloads until explicitly restored. - Standardized local testing on the HTTP preview.
file://.../prototype/index.htmlandhttp://127.0.0.1:4174/are different browser storage origins and therefore do not share progress. - Versioned
0.8.9-beta.1and added smoke coverage for the generated automation, event, and stall states. - Changed the first Spring Cup unlock from an automatic workspace jump into an explicit invitation. The greenhouse remains exactly where the player was working, a fixed notification offers
前往查看, and only that player action opens the event workspace. The ordinary event banner remains available afterward, while the one-time notice does not reappear every time the player returns home.
2026-08-10 — Explicit Reward Loop
- Acted on 丹丹's diagnosis that the prototype communicates maintenance pressure much more clearly than future reward. Added a persistent nearest-goal strip with numeric progress, named reward, progress bar, and ready-to-claim state.
- Fresh saves now begin with mint only. The first explicit milestone is three mint harvests, awarding two calendula seeds; existing saves retain their current seed inventory.
- Added five one-time milestones spanning mint harvests, total harvests, blooms, orders, and unique visitors. Rewards include the first new species, a free dripper, notes, compost, and a moonflower seed.
- Added a fixed observation-note exchange catalog for basic seeds, a dripper, compost, and a rare seed. It deliberately does not rotate: this pass is about reliable motivation and earned relief, not daily-shop urgency.
- Selling and stocking both count as harvests; entering bloom counts once at the actual growth transition. Reward state is normalized for older saves and claimed rewards save immediately.
- Versioned
0.9.0-beta.1and added coverage for fresh-save seed inventory, the first milestone claim, and note-for-dripper exchange.
2026-08-11 — Reward Route Redesign and Temporary Visual Language
- Creator playtesting rejected the first reward center as an add-on checklist with perfunctory UI. Replaced parallel generic milestones with a sequential five-stage greenhouse route: mint mastery, calendula and first automation, first order and equipment catalog, production expansion fund, then night ecology.
- The main strip now names one concrete action and one capability-changing reward. The full view shows only the completed/current/next neighborhood instead of presenting five simultaneous jobs.
- Added a large current-stage illustration placeholder, connected route nodes, strong ready state, and a full-screen reward reveal. Temporary character icons are deliberately replaceable by creator art without changing layout or reward semantics.
- Added consistent resource pictograms and tactile pressed-button feedback across the interface. The observation-note catalog remains available but is visually demoted to
研究补给beneath the progression route. - Changed milestone payouts to alter play: calendula grants a free dripper, the first order opens the equipment catalog, and eight harvests fund the first expansion. Versioned
0.9.0-beta.2.
2026-08-11 — Greenhouse Research
- Replaced the fixed note-exchange catalog with three one-time research branches: plant discovery, irrigation engineering, and biological control.
- Made the plant branch save-aware. It awards wildberry to players still following the bird-carried seed clue; players who already own wildberry instead study two wildberry harvests and unlock cornflower.
- Added cornflower as a new neutral-soil companion flower with a strong bee-attraction effect, giving the future pollination layer an early in-game foundation.
- Added permanent research outcomes: cheaper replacement drippers and a biological-control modifier that lowers aphid risk while increasing ladybug response.
- Redesigned research cards with branch labels, exact prerequisites, missing-note feedback, permanent-effect descriptions, ready/completed states, and a mobile action layout.
- Recorded the later bumblebee, circular-water, biomass-heating, robotic-handling, and specialist-cultivation systems in
design/greenhouse-depth-roadmap.md. Versioned0.9.1-beta.1. - Published the playtest candidate from commit
7620ca5to Netlify deploy6a7bc20ea1b303191e8c03bb. The account-free production URL loaded the expected version and retained the feedback form's release metadata. - Fixed a mobile bottom-navigation style regression in
0.9.1-beta.2: desktop pill spacing, rounded corners, and container padding had leaked into the fixed phone bar while the pause control added a second competing treatment. The phone bar now uses one flat segmented structure, a restrained active marker, and a quieter but still distinct pause command. - Published the navigation patch from commit
59255e7to Netlify deploy6a7bc387458e4ecf7b158b9b; production reports0.9.1-beta.2.
2026-08-11 — Order Value Legibility
- Audited the first order after a tester compared a 10-coin high-yield mint plant with a multi-ingredient bouquet. The underlying mismatch was partly semantic: whole plants are consigned, while orders consume individual stems, but both surfaces previously displayed bare counts.
- Renamed harvest choices to
整株寄售and剪花入库, added stem units throughout inventory and order requirements, and made the selected bloom summary state both outputs explicitly. - Added a reference-material-value and order-premium line to every order. Increased the daily bouquet from 30 to 40 coins, changing its visible premium over seven stems from 12 to 22 coins. Versioned
0.9.2-beta.1. - Published the order-value pass from commit
63b69e1to Netlify deploy6a7bc4cd366dd23fc1cd62ba; production reports0.9.2-beta.1and keeps the existing save schema.
2026-08-11 — Saved Mobile Workspace and Desktop Pot Actions
- Fixed a saved-state mobile failure where an older
event.openflag selected the event workspace during startup and responsive CSS consequently hid the entire greenhouse. Every load now begins in the greenhouse; event progress remains saved and reachable explicitly. - Hardened plot migration against removed or malformed plant identifiers. A bad legacy plot is discarded instead of aborting the complete garden render.
- An initial wide-screen attempt moved the shared action surface into the pot grid after the selected card. A real progressed save exposed CSS Grid auto-placement collapse: the pot became a narrow stripe and the action surface an empty-looking oversized cell. Replaced that approach before release with stable document order above the grid; it remains sticky within the greenhouse on wider screens while phone retains the fixed bottom action sheet. Versioned
0.9.2-beta.2. - Confirmed the current watering economy has no water bill: temporary drippers consume durability and the central tank is a purchased permanent upgrade. Utility costs remain deferred until production scale and climate systems make them a meaningful operating decision.
- Added the app version to
style.cssandgame.jsURLs after Chrome kept a stale pre-fix grid stylesheet despite repeated local page refreshes. The HTTP server was already serving the corrected files; cache-keyed asset URLs make the browser fetch the matching release pair.
2026-08-11 — Information-Light UI, Checkpoint 1
- Began the pre-pollination legibility pass. Planted pots replace five prose-heavy meters with a three-channel
芽 / 水 / 土instrument strip, compact automation badges, and a stable plant-color mark. - Order cards now lead with a material-to-payout equation; descriptive flavor text moves behind optional disclosure. Rules and save data are unchanged so this checkpoint can isolate presentation feedback.
- Recorded the principle that automation retires repeated input and later utilities price production scale rather than reviving per-pot chores. Versioned
0.9.3-beta.1; research-card compression remains the next checkpoint. - Compressed the growth route and research cards for checkpoint 2. Growth now leads with one numeric action and reward; adjacent nodes omit flavor copy. Research cards lead with observation progress and outcome, while rationale and permanent-effect prose are optional disclosure.
- Deliberately held milestone goals unchanged. Familiar creators and generated QA saves complete them unusually quickly; timing will be revisited only after fresh-player completion times distinguish pacing from familiarity.
- Fixed the silent moonflower threshold in
0.9.3-beta.3. Reaching 30 coins and 6 observation notes now opens the important-acquisition reveal with a visual seed mark and the compact equation金币 30 ✓ · 观察笔记 6 ✓ → 新种植线开放, preventing an immediately preceding order from receiving false causal credit.
2026-08-11 — Pollination Yield, Checkpoint 1
- Promoted bee visits from a card-collection event into a visible production relationship. During a bloom, bee stay time builds two pollination levels; the pot shows progress and the exact extra-seed outcome.
- Pollination awards up to two additional seeds when the plant is sold or stocked. Existing
observedBoostsaves migrate into the first pollination level, preserving their previous one-seed benefit. - Kept existing flower count unchanged after bloom. Care and soil create flowers; pollination creates reproductive yield. This leaves a coherent path toward companion planting, managed bumblebee hives, and seed-line improvement.
- Added a project-owned local preview server after repeated Chrome cache mismatches. It keeps the established
127.0.0.1:4174save origin but sendsno-storefor every asset, so ordinary refreshes always load the current working files without clearing site data.
2026-08-11 — Hosting Migration Candidate
- Audited generated and ignored files before migration. The repository contains no disposable build output beyond ignored provider metadata;
.netlify/remains temporarily because it preserves the working rollback link. - Prepared an account-free Cloudflare Pages candidate while leaving the existing Netlify release untouched.
- Replaced the provider-specific Netlify form post with a same-origin
/api/feedbackrequest, a Pages Function with bounded input validation, and a D1 schema for the private feedback inbox. - Added a Wrangler configuration template rather than committing account-specific database identifiers. Versioned the unreleased candidate as
0.9.4-beta.2. - Created
greenhouse-notes-playtest.pages.dev, initialized the D1 schema, and read a labeled QA submission back from the database after sending it through the public/api/feedbackendpoint. - Responsive production QA passed at 390×844 and 1280×800 with four visible pots, no horizontal overflow, and no browser warnings or errors. Cloudflare becomes the primary small-beta link; Netlify remains a one-cycle rollback.
2026-08-11 — Respectful Disclosure and Notice Queue
- Fixed the growth-route
为什么值得做disclosure collapsing while the player reads. Its open state now survives timer-driven card redraws and changes only through the player's own toggle. - Prevented the moonflower acquisition and Spring Cup invitation from occupying the same screen space. Important notices now resolve sequentially: acquisition first, then automation if relevant, then the event invitation.
- Added a
稍后action to the Spring Cup invitation. Dismissing the floating notice does not remove the persistent event entry or its banner. Versioned as0.9.4-beta.3. - Browser QA with a progressed local save exposed a startup-order failure: blooming pots were rendered before the bloom-ending threshold constant initialized. Moved the lifecycle constant ahead of the first render and added a source-order regression check, preventing partial pages when reopening an active garden.
- A screenshot-led legibility audit found that the compact
芽 / 水 / 土channels styled decision-critical values like secondary labels. Values now use stronger weight, tabular numerals, and separate growth, water, warning, and soil color treatments at every viewport; descriptive labels remain quiet. - Added a QA-only
通知碰撞checkpoint matching the supplied screenshot: moonflower acquisition and an unread Spring Cup invitation become pending together. This makes notice priority and dismissal reproducible without replaying the opening economy. - Fixed QA checkpoint navigation being overwritten by the ordinary page-hide autosave during reload. Scenario loading and save restoration now explicitly suppress that final stale write.
2026-08-11 — Contextual Feedback Coverage
- Added focused feedback entry points for automation and equipment, the growth and research route, and the plant and visitor codex. Existing reports already cover the overall game, pots, seeds, soil, orders, competition, and stall.
- Raised the feedback sheet above every ordinary game, reward, QA, and celebration surface so opening it from a nested feature cannot leave it obscured.
- Switched feedback sizing to the dynamic viewport, contained its own scrolling, kept the header and close control visible, and reserved phone safe-area padding. Versioned as
0.9.4-beta.5.
2026-08-12 — Water Utility Prototype
- Added operating cost to the central tank without restoring per-pot chores. Six automatic refills are free commissioning; later charges derive from actual water restored and settle automatically in small batches.
- Insufficient coins defer a bill without stopping irrigation, damaging plants, or adding penalties. Manual watering and temporary drippers remain free.
- Added a dedicated utility card showing the current bill, lifetime cost, lifetime savings, and observed tank refills.
- After ten tank refills, players may invest 80 coins and 12 observation notes in a permanent recirculation retrofit that lowers later water cost by about 60%.
- Added save migration, automated coverage for free commissioning, billing, settlement, research payment, and measured savings, plus a mature utility state in the automation QA checkpoint. Versioned as
0.9.5-beta.1. - Follow-up legibility pass promoted water from a compressed shop card into a persistent status entry: the desktop resource strip shows it near currency, while phone layouts keep a compact water key above the bottom navigation. Clicking it opens a concise bill explanation and exact totals.
- The first charged usage period produces one queued, dismissible water notice. After dismissal the persistent status remains; insufficient cash continues to defer payment without penalties or shutoff.
- Pollination results are now interactive. Clicking or keyboard-activating
授opens a short causal explanation of bee stay, the two pollination levels, and extra same-species seeds. Versioned as0.9.5-beta.2. - Reframed central-tank activation as a welcome letter from the fictional Qingvine Water Company. The one-time sheet explains whole-garden coverage, six free refill cycles, metered billing, and where bills settle without burying the rules in the equipment catalog.
- Automatic water service can now be paused and resumed from both the utility details and equipment catalog. Pausing preserves the installed tank and existing bill but stops automatic refills and new usage charges. Versioned as
0.9.5-beta.3. - Removed the compressed water-and-recycling card from the equipment catalog. The persistent water status now opens a dedicated responsive utility center with clearly separated service state, current bill, lifetime figures, pause control, and recirculation research. Versioned as
0.9.5-beta.4. - Published
0.9.5-beta.4to the Cloudflare Pages production branch for multi-device testing. The production alias was checked directly and serves the matching versioned CSS and JavaScript assets; deployment preview05503ca6is retained as a release-specific reference. - Began the first visual-identity pass without changing the established workflow. The interface now reads as a working greenhouse ledger: a distinct title mark, seasonal color registration, typed resource slips, seed-catalog rows, nursery-style pot trays, a labeled action bench, and more deliberate utility sheets replace the uniform generic-card treatment. Versioned as
0.9.5-beta.5. - Corrected the visual direction away from a static notebook and toward a living greenhouse console. The garden now dominates the desktop grid; plant stages are larger, species can carry distinct silhouettes, glass light and condensation move gently, leaves sway, and watering, feeding, pollination, pests, and active growth receive environmental feedback. The masthead was compressed so plants enter the first viewport sooner. Reduced-motion preferences remain respected. Versioned as
0.9.5-beta.6. - Reassessed the product direction after the living-console pass exposed a deeper issue: the prototype rewards greenhouse operation more strongly than waiting, attachment, and visual cultivation. Added a dedicated nurturing-idle direction document and an ordered transition checklist. The first implementation target is now baseline QA followed by an isolated calendula quiet-growth slice; caretaker shifts, special specimens, and a full showcase scene remain later phases rather than simultaneous additions.
- Completed nurturing-idle Phase 0 in local
0.9.5-beta.7. Dev Garden's stale0.7.3phase, playtest focus, roadmap, and README experiment were corrected; it now distinguishes the0.9.5-beta.4production build from the local candidate. Added a calculated calendula baseline and five normalized QA checkpoints covering sowing, mid-growth, first bloom, mature display, and simulated idle return. The baseline confirms roughly 84 seconds to healthy bloom, only about 36 seconds before initial watering leaves the comfortable band, and about 8.6 watering decisions per minute across four similar pots. - Completed the isolated Phase 1 calendula quiet-growth slice in local
0.9.6-beta.1. Nurture QA saves use an eight-stage, roughly eight-minute healthy curve; water pressure arrives after minutes rather than seconds, unsuitable conditions slow growth without killing the plant, and capped offline progress produces a visible return summary before maintenance prompts. Ordinary saves and event plants retain their previous behavior so the two rhythms can be compared directly.
2026-08-16 - Phase 1 language and future idle presentation
- Reworded the quiet-growth status and return message in short, natural language: leaving is safe, unsuitable water slows growth, and no rescue is required.
- Kept the attentive-play reward intentionally light until Phase 2 defines a real mechanical advantage.
- Recorded showcase mode as a manual view first, with possible idle auto-entry, one-action return, and optional notification controls to test later.
2026-08-16 - Quiet-growth warning correction
- Found that the nurture experiment still inherited the ordinary bloom-stress lifecycle and stale dry-alert classes after its safe growth phase.
- Kept experimental calendula blooms safe for a much longer viewing window and suppressed old crisis animations throughout the slice.
- Added a persistent, plain-language banner explaining that the plant can be left alone and that unsuitable water only slows it down.
- Chose to test a deliberate manage/watch presentation switch later instead of adding a mode switch before the two modes have meaningful behavior.
2026-08-17 - Phase 2 attentive growth momentum
- Added per-plant care momentum to the isolated calendula experiment. A needed watering, feeding, or aphid treatment starts a limited 2.2x growth window.
- Repeated input during the active window does not extend it, so the system rewards returning attention instead of rapid clicking.
- Added a visible momentum bar and a persistent banner that changes from safe waiting to active-care feedback.
- Varied care leaves up to three cultivation records; two types add one flower at bloom.
- Added
等待照料and加速进行中QA checkpoints plus active-versus-quiet timing coverage.
2026-08-17 - Direct QA scenario links
- Found that
?qa=1only exposed the QA console while retaining the current ordinary save, making the old crisis rules easy to mistake for the nurture experiment. - Added
scenario=<id>support so a test link can load the exact isolated checkpoint immediately and repeatably.
2026-08-17 - Phase 2.1 mystery chicken manure
- Added
神秘鸡肥to the isolated nurture experiment with three free opening doses and 18-coin replacements in the greenhouse shop. - One dose restores 25 soil nutrients and provides about three minutes of 1.6x growth on one calendula pot.
- Active doses cannot be stacked. A 2.2x meaningful-care window overrides rather than multiplies with the manure rate.
- Added plant-card and greenhouse-banner feedback plus a direct
鸡肥生效中QA checkpoint.
2026-08-17 - Phase 3 bloom continuity
- Added an eight-second first-look window when an experimental calendula blooms.
- Split mature-plant actions into cut-and-keep, collect seeds, leave on display, and sell the whole plant.
- Cutting now returns the same plant to the flower-bud stage at 78% growth, creating a shorter repeat-bloom loop.
- Added persistent bloom count, a higher bee chance while displayed, and an eight-coin whole-plant premium for every bloom after the first.
- Added
准备再次开花QA coverage and lifecycle tests for reveal, seed collection, cutting, repeat bloom, and sale premium.
2026-08-17 - Friendly decisions and research-tree direction
- Added a project-level UX principle: realistic depth must not turn routine play into administration. Frequent moments should have one safe default, deferred choices should remain safe, and repeated decisions should later become preferences or automation.
- Simplified Phase 3 bloom handling to one recommended
剪花并保留植株action with seed collection, display, and whole-plant sale inside其他处理. - Recorded a future route-based research technology tree for water, soil, ecology, breeding, and business, with one vertical branch at a time on phones instead of a large panning graph.
2026-08-17 - Rejected expandable bloom actions
- Reverted the
其他处理disclosure added in0.9.8-beta.2. It added an operation without removing a decision, and periodic game rendering recreated the element and collapsed it while the player was using it. - Restored the direct Phase 3 action set and froze further bloom-option expansion.
- Kept the broader low-burden UX principle, but recorded that hiding simultaneous choices is not automatically simpler.
- Phase 3 remains a lifecycle experiment: its purpose is plant continuity and repeat bloom, not menu depth. The next experiment moves to showcase mode.
2026-08-17 - Separate bloom retention from showcase terminology
- Renamed the single-pot
留盆观赏action to保留花期so it cannot be confused with Phase 4's separate full-scene观赏模式. - Recorded retained plants, repeat blooms, history, and lineage as a promising but unresolved attachment system for a dedicated discussion after the showcase prototype.
- Froze further Phase 3 attachment work until that discussion.
2026-08-17 - Phase 4 greenhouse showcase
- Added a separate full-screen greenhouse scene entered through
观赏温室and exited with one arrow button. - The scene renders live pots, plant scale, bloom quantity, species color, visitors, greenhouse structure, and gentle visitor motion without resources, meters, cards, alerts, orders, or management prose.
- Added reduced-motion support and responsive two-row phone layout.
- Added a four-plant
观赏模式场景QA checkpoint andshowcase=1direct-link option. - Render-checked desktop 1440x900 and phone portrait 390x844; moved the phone return control to the left edge after the narrow screenshot exposed right-edge clipping risk.
- Automatic idle entry and notification preferences remain deferred until manual showcase playtesting proves useful.
2026-08-17 - Phase 3.1 seed-saving correction
- Removed instant seed collection from an intact bloom. One flower can no longer count as both cut material and a mature seed harvest.
- Added the
留种入门propagation study, unlocked by one calendula bloom plus one recorded bee visit and completed with six observation notes. - Reserving a seed head reduces the current cut-flower yield by one. After creator review, maturation was extended from 180 to 900 simulation ticks, about 20 minutes at normal speed or five minutes at 4x. A head now yields one seed, or at most two after observation or pollination, and each plant can mature only one head at a time. It remains attached while the rest of the flowers are cut and the plant begins repeat growth; offline time still advances the process. The UI reports estimated real waiting time at the selected speed instead of abstract tick counts.
- Added clear maturing/ready actions, a visible seed-head marker, offline maturation, two direct QA checkpoints, and lifecycle regression coverage.
- Retained Phase 3 plant continuity, repeat bloom, display, and bloom history. Only the flawed double-reward rule was discarded.
- Audited the Phase 4 showcase after floating placeholder shapes were reported. Leaves now connect to the stem with visible petioles, the clipped roof no longer leaves a stray apex triangle, and phone layouts add a shelf beneath each plant row while moving the sun away from the plants.
- Replaced the crowded phone 2x2 showcase with one horizontally swipeable bench. Roughly two plants remain fully visible and a partial next plant indicates that the scene continues without adding labels or management controls.
2026-08-17 - Phase 5 quiet-growth integration
- Enabled the nurturing foundation for ordinary and migrated saves instead of QA scenarios only.
- Mint and calendula now share safe slow growth, bounded care momentum, manure acceleration, quieter maintenance feedback, offline progress, and longer bloom tolerance.
- Kept lifecycle depth scoped to calendula: mint still uses ordinary harvest and replant, and cannot repeat bloom, reserve a seed head, or gain bloom-history premiums.
- Replaced the top-bar
观赏温室command with安心挂机inside the growth-speed control. The subtitle只看花园,继续生长states the relationship directly on both desktop and phone. - Reused
createPlot()for real planting so newly quiet mint receives the complete normalized lifecycle fields; added migration and mint safety coverage and updated old lifecycle tests to use a non-quiet species where appropriate. - Versioned the local Phase 5 candidate as
0.10.0-beta.1. - Removed the decorative
当前花槽tab from the desktop sticky pot-action panel after it visibly escaped the top border while scrolling. The plant name, stage, and numbered pot control already carry the same information without overflow. - Added
清理并换种to healthy selected pots so retained plants do not become permanent occupancy. It requires confirmation, returns no seed or material, discards unfinished seed heads, preserves soil and installed equipment, and routes directly to the targeted seed picker. Automated coverage verifies no seed duplication and equipment preservation.
2026-08-17 - 蝴蝶兰连续浇水
- 精养蝴蝶兰不再使用普通植物的“一键浇到舒适值”。
- 新增按住连续浇水、松手停止;鼠标、触摸与键盘共享同一套行为。
- 按下立即改变按钮状态,并持续显示本次增加的水量和植物反馈。
- 快速点击仍保证至少增加一次水量,避免按钮看似失灵。
- 单次浇多不立即伤害植物;长期过湿才进入后续风险判断。
- 普通植物继续使用一键浇水,防止整座温室增加操作负担。
2026-08-17 - 第一版温室主题音乐草稿
- 根据创作者的电子琴录音保留两句旋律的自然节奏与停顿。
- 输出 48 秒循环版和 24 秒自然收尾版,暂用轻柔钟音与稀疏和声。
- 循环版末尾改为属和声上的 B-G,引回开头 C;原始完整版本仍保留 C 终止。
- 音色仅用于验证旋律、密度与循环点,不作为最终美术风格的一部分。
- 开发站新增“音乐室”,可直接播放和比较历史版本,并保留 WAV 原稿入口。
- 记录物种协奏方向:每种植物对应一个共享主题的器乐分轨,由温室当前生态组成编曲。
- 根据首次试听制作 V0.2:降低尖锐泛音、柔化起音、扩展到 64 秒,并新增短过门和轻微回应声部。
- 音乐室新增可读简谱与 ABC 乐谱源文件;后续音乐版本必须同时保留音频、乐谱和修改说明。
- 将创作者 20.95 秒的电子琴原始录音完整复制进项目并置于音乐室首位,作为不可覆盖的 SOURCE 版本。
- V0.2 试听结论为“更丰富但更杂乱,主音色仍刺耳”,保留文件但标记为未采用。
- 制作 V0.3 低八度清理版:匹配原录音实际音区,删除回应声部,减少和声变化,并缩短新增过门。
- 创作者允许编曲在必要时增加一到两个小节的连接旋律;新增材料应从原主题动机发展,并在 V0.3 舒适度确认后作为独立变量测试。
- V0.3 的音区明显改善,但持续振荡铺底和次谐波产生了不适的物理共振;制作 V0.3B,保持旋律结构不变,仅移除长铺底、次谐波和过长尾音。
- V0.3B 音色改善,但低音和弦仍显沉重;制作 V0.3C“柑橘和声版”,改用中高音区错开浮现的 Cmaj7、Am7、Fmaj7 与 G6 和声。
- V0.3C 的音色与和声底盘获得认可;制作 V0.4 完整乐段版,调整主题节奏,加入两小节连接段、主题回归和独立循环尾句,并同步更新简谱与 ABC 乐谱。
- V0.4 被采用为当前游戏主题并接入原型:玩家主动播放后循环,顶部可暂停并调节音量,音量偏好保存在本机;不会绕过浏览器限制自动出声。