mirror of
https://github.com/anomalyco/hex.git
synced 2026-11-15 14:16:56 +08:00
* Onboarding: slower Without Hex comedy with a start button, a real conversation, and one focus at a time * Onboarding comedy v2: Launch Room, visible slip, rewind into Hex Jay's question is up before the click and the first reply comes 0.35 s after it. The deady/dead slip holds long enough to read, then Return flashes red with a heavy clunk. The scene is one iMessage group: the removal is a red pill that wipes a frantic draft mid-word and locks the field. With Hex rewinds the disaster, melts the keys down to the lit shortcut, and raises the HUD before the key goes down. The caret no longer sits under a word as it lands. Adds original chat sounds, a score counted in whole seconds with a chime, and a live first run that waits for Continue. * Onboarding comedy v3: one-way melt, clean act breaks, upward rewind, Skip * Test that Skip appears two seconds in and leaves the comedy * Fill the keyboard's pocket back in once the HUD has gone * Onboarding comedy v4 engine: presenting pill, tapbacks, heartbeat, slow motion and the autocorrect slam * Onboarding: scenes as plain-text files, with a celebration in With Hex Each scene sets its own room, people, pill, ending and With Hex payoff (replies, tapbacks, status pills, confetti and fireworks with their own sounds). The validator reports line-numbered mistakes and the limits a scene can hold. * Scenes: document the limits and the folder check * Onboarding: tapbacks stay on the line above, the pill keeps its own row, and With Hex can change it * Polish the practice game: themed messages, transcript and high score, real Dot scope, logo build, Replay onboarding * Scene folder check prints every scene's length * Flush the ready soundtrack once the logo is built * Scenes: only the theme's colours, and a clear error for any other * Check the whole Advanced fold, down to Replay onboarding * C-plus: v3's scene with the over-the-top With Hex * Drop the whole-pixel bob now that Rune glides text with its box * Onboarding chat: the real Messages sounds from macOS, pill in the header Received, sent and each tapback's sound load at run time from macOS's own files, peak-matched to Hex's stand-ins, which still play where a file is missing and off macOS. The presenting pill moves into the conversation header, level with the title. * Follow the dictation/ move, and keep a resized golden's render for CI * Onboarding: keep Reply::Lines' shape so the game's card is untouched The autocorrect mark goes to chat() as its own argument, and notice() draws sent_bubbles again as dev does. * Golden: the whole Advanced fold, down to Replay onboarding * Onboarding comedy: Model M typing, a real heartbeat, three triumph takes The Without Hex keys are now cut from a CC0 recording of an IBM Model M (scripts/sounds/comedy/SOURCE.md): eight presses at three pitches, a deeper space bar and a heavier delete, each at a slightly different level, whatever key sound the reader picked. The heartbeat is a synthesized lub-dub under the clicks (HEX_ONBOARDING_HEARTBEAT=off drops it), and HEX_ONBOARDING_TRIUMPH=1..3 picks brass, a chime run, or a cheer and pop. scripts/sounds/comedy.py rebuilds them all. * Follow dev: audio::input_level, and drop Labs' last icon_row import * Onboarding comedy: tapbacks drawn like Messages Round badges on the bubble's top corner with a ring in the card's colour and two tail dots, grey for other people and blue for the reader's own, every glyph a vector shape including the two-line HA HA. Stacks put the newest on top. Prototypes/Onboarding/Tapbacks shows them all. * Move the game's pieces into game/ and its share card into game/share.rs for the code-shape gate * Labs: hold Paste last dictation to pick recent dictations (macOS) * Unify the first run: Without Hex, microphone, the practice game, Accessibility * Let the first run story play itself, game included * Count the sound cues' third field in the logo-build tests * Sound the comedy's triumph on the game's first score; Hex Test.app opens the new first run * Move the stories' side panel into stories/side.rs for the code-shape gate * First run: play the scripted With Hex payoff after Without Hex; start the heartbeat at the first typo * Onboarding round 2: Launch Room inbox row, Messages-style senders, ending hold, float-off grants, idle HUD pill, Launch at login on Ready, Settings guide reopen * Start the heartbeat at the first sent typo, much quieter * Open the Launch Room like an island: a pointer clicks the row and it grows into the chat Every first run autoplays: the row arrives with two even rings, a scripted pointer glides in and presses it, and the row grows into the conversation (width first, then height, on one straight path) while the group's faces, the title and Jay's question fly over as themselves. The rest fades in once the flights clear. Reduce Motion fades instead. * Add a replay strip to the first run in test and debug builds Restart, Back one beat, Joke (cycles the bundled scenes) and a fake download speed (real, 100 Mbps, 25 Mbps; Restart downloads again at it). Every build logs how long the download showed for. The swearing scenes A and B are only in builds with hex_dev_onboarding (debug or HEX_TEST_BUILD=1). * First run: Watch another one while the model downloads Almost ready shows the download as a quiet bar with its size and time left, and a button that plays one of three short Without Hex sketches. The bar moves to the top pill while one plays; a finished download goes on to the game at the sketch's next stop, after a reply has gone out. The button goes once all three have played. * First run: a whole-run story with a slow download and a sketch * Onboarding: sound for the whole first run, the Launch Room opens itself, and a motion gate - SfxTrack::clear keeps cues already fired, so the offline track keeps its first 73 s; the scripted game, the words and the cards burning get cues. - The download pill no longer flies over the words it passes; the Launch Room opens itself 5 s after it parks. - A motion gate over the first run in dark, light and Reduce Motion, plus a pixel check of the conversation opening: fixes its surface blinking as the plate hands over, Jay's doubled typing dots, the badge's one-frame pop and the preview's text swap. * Onboarding: the Launch Room's click taps, whether a person or the pointer clicks * Rune e6371c48: the motion gate checks what the first run paints - Bump rune, rune-kit, rune-theme-opencode and rune-motion to e6371c48 (rune#71); nix outputHash follows. - Mark the first run's deliberate motion where it's written (tapback bounces, the badge pop, keys, the game's shake) and narrow the allowlist to scoped, capped rows. - The empty avatar slot keeps its border while its fill fades, so the ring no longer vanishes a frame early. * Onboarding: the first run's clock runs on drawn frames, and its later pipelines warm on a thread (t1328) * Onboarding: call out keyboard and voice-first modes, punch in on autocorrect, prototype first-screen backdrops * Onboarding: drop the first-screen backdrop prototypes (t1328) * Onboarding: prototype a bigger HUD and an up-next row on Setting up Hex (t1328) * Onboarding: the Linux tests' page helper knows the two permission steps (t1328) * Onboarding goldens: the voice-first chip beside the heading (t1328) * Onboarding: first-screen prototype shows download size and an on-device note (t1328) * Onboarding: the first screen shows download size and that your voice stays on this Mac (t1328) * Onboarding: a failed download drops the size and privacy line; goldens for the first screen (t1328) * Onboarding: drop the render scratch the branch carried 673 frames and one-off scripts under .render/ were the scratch of the session that built this, not part of the change. * Keep render scratch and scene stills out of the tree * Onboarding: the scene tests that need a dev-only scene skip release builds A and B swear, so release builds leave them out of the bundle; two tests still asked for A by name and panicked where it was missing (the Nix package's test run). * Onboarding: goldens from the Linux run after the merge Seventeen onboarding renders moved: the first screen's download size and privacy line, the mic line from #1420, and dark text that sits a few pixels lower with dev's Rune pin. * Onboarding: a tighter opening and fireworks that light the page The first run's Setting up Hex holds a second, then the Launch Room's conversation is there as the download flies up: Jay's messages land in it with their sounds instead of on an inbox row a pointer clicks open. The Keyboard mode stamp goes (the heading's chip says it), Without Hex's heading is one line, and the privacy line also shows on the microphone step. With Hex's fireworks move to the GPU: three shells rise on trails and burst beside the conversation into a few hundred sparks each, white-hot to hue to crackling embers under drag and gravity. Each burst lights the page under it for a moment, multiplying what's drawn so surfaces brighten by their own colour and the dark page barely does. Reduce Motion gets one soft flash. The shipping scene drops its confetti. * Onboarding: sketches keep their own opening; the motion gate follows the shorter intro Sketches built their scenes from the first run's timing, so its shorter opening reached them. The slow-download fixture lands the model 6.8 s sooner, as much as the intro shrank, so the gate's windows see the same story; the practice game's shake can still be moving as the handoff window ends. * Fireworks: stars light as they leave the break, the shell's glitter is quieter, and the page light fades with no edge * Onboarding: fireworks in depth, and three compositions to compare Fireworks burst in two layers. Far shells sit behind the conversation, smaller, dimmer and softer, lighting it a little; near shells draw in front, bigger and brighter, their sparks falling across the card's edges for a moment and their light hitting it hard, with their cores kept beside it. A break opens as a bloom: packed stars share its light until the shell has spread, since sRGB-encoded blending adds a hundred faint stars up to a white disc. The demo's composition is now a layout the run picks, as it picks its scene, with three playground variants beside today's: A, a tighter centre (one two-line heading for both scenes, a larger conversation, the keyboard tucked under it, Skip in the corner); B, a split (the mode, a big title and one line in a left column, the conversation and its keyboard on the right, the fireworks in the open page); and C, a laptop (the conversation as its screen, the keyboard on its deck). Today's layout is unchanged. * Onboarding: the score pill hugs its count, and a near burst's break stays compact The practice game's score pill was a fixed 112 pt with its content left aligned, so "1 destroyed" sat 12 pt from its left edge and about 40 pt from its right. It's now as wide as its number and label need, with 12 pt either side in every language, and the share card folds back to that width. A near burst's bloom no longer spreads into a wide, faint, whitish disc that read as smoke. Headless renders take HEX_RENDER_LANGUAGE to check copy in another language. * feedback: the onboarding's cues in their own file, under the size limit * Onboarding: the card's landing nudge is a kick, and the motion gate gets the time it needs * Onboarding: goldens after dev's language-switch change and the microphone step's privacy line; the playground's two-line heading stays English * Onboarding motion: the game's idle pill fades on its clock, sent bubbles leave the field whole, and the Accessibility helper line fades out From per-frame traces of the whole scripted run: - The practice game's stage lands every change at once, so the idle pill's springs never ran: it vanished and reappeared in one frame at every take, and when the score card came and went. Its fade and settle are now worked out on the game's clock, from when the scope last came or went, and it steps aside with the chrome. - A sent line is launched out of the field, but its bubble faded in on its own, so each send started as a ghost of the text it left (five sends in Without Hex, the spoken answer in With Hex). The bubble now enters with its line. - The escaping Accessibility panel dropped its "Accessibility helper" line in one frame; it fades as the panel starts to move. * Onboarding motion: the idle pill's spring is settled before the first take, not NaN * Onboarding motion: a sent bubble's words leave the field at full strength too * Onboarding fireworks: a burst opens on a point of light, not a grey disc The bang was a wide glow at a quarter of white, which sRGB-encoded blending flattens into a grey-beige disc for three frames before the stars show. It is now small and brighter than white, gone as they open. On light pages the bursts' tint has a soft shoulder instead of a flat plateau of colour, and sparks paint a deeper hue so gold shows on white. * Onboarding copy: the certificate's sentence, the game's full stop, Accessibility's row on one line - "I hereby certify that I have completed Hex onboarding." - The game's lead ends its sentence, as every other lead does. - Accessibility's row drops "in any app", which the line above it says: allowed, it wrapped and left "app" alone on a second line. - The permission pages' headings are translated like their titles. * Onboarding: alignment and one main action - Skip steps aside while autocorrect's camera is pushed in: the keyboard swelled down over it. - The score card's two lines sit on the middle of the number. - The score pill is as tall as Done beside it. - Hex is ready keeps one contrast button: beside Start using Hex, Launch at login is a neutral one. * Onboarding pacing: Setting up Hex holds long enough to read, the removal holds once Setting up Hex held 1.0 s before the download flew up; 1.6 s reads. The first run held the removal for the scene's own 2.0 s and 1.6 s more, 3.6 s of silence; now 2.8 s. The game's screen shake is marked where it's written, a kick and steps, rather than allowed by where a gate window happens to end. * Onboarding: the certificate in its own file, and no unused import The motion fixes took game.rs past its size ceiling and left Spring imported with no use; the certificate moves out to game/certificate.rs. * Onboarding goldens: the game's full stop, and Launch at login beside Start using Hex