Autumn Stroke
Each swipe becomes a gust of wind that drags maple leaves across a temple valley and settles into a tapered brush stroke. Write a wind-poem in five strokes.
AI Games
Draw your own constellations on a real star map
Copy it. Add your own twist.
APP NAME Connect the Stars APP IDEA A pannable real night sky where the user picks two stars at a time to draw their own constellation lines on top of the existing ones. CORE EXPERIENCE The app opens directly on the star field with a readout of the current right ascension and declination in a corner and a single line of guidance reading that selecting two stars connects them. Real constellations are already drawn in faint lines with their names labelled. INTERACTION AND STATE Tapping a star selects it and highlights it; tapping a second star draws a line between the two and clears the selection. Dragging pans the sky and updates the coordinate readout live. A small toolbar offers: change line colour, undo the last line, toggle the existing constellation lines, clear all of the user's lines behind a confirm step, add a text label, and drop a marker. The user's lines persist in local storage. Stars are rendered from a bundled catalogue with real positions, magnitudes and colour temperatures, so brighter stars are larger and star colour varies from blue-white to orange. VISUAL AND CONTENT DIRECTION Black sky filled with stars of varying size and subtle colour, faint grey lines and small capitalised labels for the existing constellations, and the user's own lines drawn in a brighter chosen colour. The toolbar is a row of minimal icons in a corner. No panels or chrome beyond that. OUTCOME The user's own constellation drawn over the real sky, saveable and shareable as an image. ONE-SENTENCE INSTRUCTION Tap two stars to connect them. TASK-SPECIFIC REQUIREMENTS Bundle a real star catalogue as static local data covering at least the brightest few thousand stars with right ascension, declination, visual magnitude and colour index, plus the standard constellation line figures and names. Do not fetch any astronomy data at runtime. Read the canvas rect live on every pointer event and size the canvas from its parent with a ResizeObserver, calling the fit routine once on mount. Server-render determinism: do not call Date.now(), new Date() or Math.random() during initial render. Read the clock and generate randomness only inside client effects, and hard-code the default locale to English rather than detecting navigator.language, so first paint is identical on server and client and never produces a hydration mismatch. REPLICATION SCOPE This specification is a faithful rebuild of an existing reference experience, described here in full. Reproduce it as closely as the platform allows. Must be reproduced exactly: the complete content inventory listed above with its exact ordering and wording, the mechanic and its state transitions, the copy voice, the visual structure and the overall pacing. Do not add levels, items, scoring, achievements, timers, onboarding or extra features that are not described here. Do not drop or abbreviate any listed content. Acceptable platform adaptations, and only these: touch input in place of mouse input; layout reflow for a phone-sized portrait host; the bilingual layer, the one-sentence instruction and the result/Replay/Share affordances required below; and host safe-area insets. Everything else stays as specified. All content must be self-contained. Do not call any external API, data service, map, media or image service at runtime; every dataset, table, constant and asset this app needs must live inside the project. IMPLEMENTATION INSTRUCTIONS Treat this specification as the final implementation brief and build the complete app now. Open directly into the live app experience. Do not add a splash screen, opening cover, welcome page or separate onboarding flow. Include exactly one concise sentence that explains how to play or use the app. Use the sentence provided under ONE-SENTENCE INSTRUCTION. Show it inside the live app interface, not on a separate opening screen. Internationalization is required. Implement a lightweight built-in i18n layer supporting exactly two locales: English (en) and Simplified Chinese (zh). The app must always open in English and must never auto-detect or follow the browser, device or system language. Provide one clear EN / 中文 language toggle. Every user-facing string, including the one-sentence instruction and all loading, empty, success, error and result states, must have complete English and Chinese versions. Switching languages must update the entire interface without mixed-language text or untranslated fallback strings. Let Eazo adapt the app to its actual host and available viewport. Do not hard-code or target a particular browser size, device size, viewport width or height, App frame size, root-height formula, or host-container CSS implementation. In the live preview, keep the current primary action easy to discover and usable without requiring an initial downward scroll; avoid horizontal overflow and avoid decorative layers blocking required controls. Optional detail may scroll. Keep active media and secondary copy compact enough that the next action remains visible. In result states, show the summary plus Replay and Share before optional detail. Do not eagerly render a large collection of full-size result images in one long page; use a compact summary, carousel, pagination, expansion, or virtualization. Use accessible touch targets. Respect the host safe areas for iPhone notches, Dynamic Island, the status bar and the bottom home indicator in the initial implementation, before the first preview. Apply the safe-area treatment to the App's entire usable content region across the live flow, result, modal, empty and error states, not only to the first header. Keep the header, language toggle, primary controls and result actions entirely inside the usable safe area. In the standard Eazo mobile host, use `padding-top: max(56px, env(safe-area-inset-top, 0px))` and `padding-bottom: max(34px, env(safe-area-inset-bottom, 0px))`, or Eazo's current official safe-area equivalent. If the header or action footer is sticky or fixed, include the matching inset in that region and reserve content clearance so it does not overlap the scrollable body. These are safe-area insets only, not fixed viewport or App-frame dimensions; continue to let Eazo adapt the overall width and height. Make sure flex children can shrink inside the remaining usable area and that required controls are not covered or pushed off screen. Use Eazo's built-in defaults and official platform capabilities. Do not add unrelated features or expand the scope beyond this specification. When implementation is complete, provide a working preview for QA.
Each swipe becomes a gust of wind that drags maple leaves across a temple valley and settles into a tapered brush stroke. Write a wind-poem in five strokes.
Place gravity wells across a dusk meadow and let a stream of luminous bees paint long-exposure attractor art through your field.
Enter your birth month and day; the observatory ignites a constellation belonging to that date alone, then names it and tells its myth.
Type a word and watch each letter grow into an iridescent bismuth crystal. Orbit the cluster, tap any crystal to shatter and regrow it.