Repository navigation
RyzenStatus 1.78.2: sleep fixes, companions on every display and alarms - #83
Merged
Merged
Conversation
Out on the desktop, companions walk on into a display beside theirs, fly across when thrown, set off now and then to see another display, walk over to join the others and gather on one display for the gang's plays; guests may arrive on any display. The companion keeps alarm clocks: times, repeat days, labels, snooze and a sound from its tunes, the Mac's sounds or files added to the list. They are set on a sign it holds up, from its menu or Settings, and ring with the companion out holding a flashing sign with a rattling clock, getting crosser the longer it rings, with Stop and Snooze on the sign and the keys. A siren in its menu sends every guest home at once.
The ballerina, the danseur and the contemporary dancer were a ball head over a trapezoid on stick legs. Each is now a chibi of their own, drawn in layers like the hologram and the android: a big head with their own skin and hair, big eyes left clear for every mood, and a costume the palette dyes, white and silver on pearl and dark on a dark hand-picked colour. - The ballerina wears her hair in a bun with a tiara, a sweetheart bodice and a layered platter tutu with tulle pleats, pink tights and satin pointe shoes with crossed ribbons, standing en pointe with her arms soft and low. - The danseur has a swept blond quiff, an embroidered tunic with gold frogging, collar, epaulettes, cuffs and a belt, white tights and slippers, and holds a strong second. - The contemporary dancer goes barefoot in wide soft trousers and a loose blouse off one shoulder under a sheer wrap, with loose hair under a messy topknot and a chiffon veil hanging from her arm. Their arms and legs are drawn apart from the body and take fourteen poses built with the same commands, so they morph: asleep they fold their arms and come down off their toes; they cheer, wave and bow; on the desktop their solo dances hold an arabesque, draw up a retiré for turns, split in a grand jeté and cross for a tour en l'air; and they glide with gaits of their own, the ballerina in a quick bourrée. The veil and wrap sway while motion is welcome. Hands, feet and floor are read off the resting pose, so held things, shoes and skates sit where they belong; a hat or the swan crown hides the bun, knot and tiara, and a scarf sits at the neck. Tests pin the morphs, the anatomy and the colours.
The phoenix was a blob with spikes. It is now a round little firebird front on, drawn in layers like the hologram, the android and the dancers: a big round head with big eyes over a small gold beak, a warm cream breast with a few feather scallops, broad wings tipped with three feathers of flame, a crest of three flames licking up from its crown, a long tail of flame plumes sweeping out and curling, gold talons, a soft warm glow behind it and embers drifting up off it. The palette dyes its feathers; the fire burns in its own colours on every palette and any picked colour. The five animals that come next share how they are drawn: each part is a path for every pose, built with the same commands so poses morph, and the paint it wears, the body's own fur gradient included, so a fusion or a transformation paints it too. A shared parts class stacks them behind the body, over it and in front, and moves them: asleep the phoenix folds its wings and its fire sinks to embers, which go on rising slowly; awake it flares back up. It cheers with its wings up, waves one, bows, flares its crest when startled and hops along with its wings bobbing. While motion is welcome its crest and tail flicker and embers rise, in the render server with no timer in the app. A hat puts out the crest. Face, head outline, neck and anatomy are measured for the new shape, and its bounds are read off its parts. Tests pin the morphs, the square, the anatomy and the colours.
The mouse was two circles with ears. It is now a tiny round mouse sitting up, front on, drawn in parts like the phoenix: a big round head with big eyes, two huge round ears with pink insides, a pale muzzle with a pink nose and three whiskers either side, rosy cheeks, a pale belly, little arms with pink paws at its sides, two pink feet and a long thin pink tail that curls up behind it in a hook. The palette dyes its fur; the pinks lean toward its colour and the whiskers go light on dark fur, so a pearl mouse is a white mouse and a dark one a black one. Asleep it lays its ears back, tucks its paws under its chin and lets its tail lie along the floor. It throws up its paws for a cheer, waves, bows, flicks its ears when startled and scurries on quick little feet, one foot and then the other. While motion is welcome its whiskers quiver and its tail sways. Face, head outline and anatomy are measured for the new shape, so held things sit in its paws and shoes on its feet. Tests pin its parts.
The axolotl was a rounded box with sticks for gills. It is now a little water salamander standing up, front on, drawn in parts like the phoenix and the mouse: a wide flat head with its eyes set far apart, the wide content smile every axolotl wears, rosy cheeks and a few freckles, three plump gill fronds fanning out of each side of its head with scalloped edges and a paler rib down each, a pale belly, stubby arms with four little round fingers, stubby legs with round toes and a thick tail with a see-through fin along its top that curls up behind it. The palette dyes its skin; its gills lean a third of the way round the colour wheel toward pink, so a blue axolotl's go violet, a pink one's deepen to rose and a grey or white one gets the classic pink. On dark skin the smile and the gills go light. Asleep its gills droop and its tail lies along the floor. It throws up its arms for a cheer, waves, bows, flares its gills when startled and waddles on its stubby legs. While motion is welcome its gills wave and its tail sways. Face, head outline and anatomy are measured for the new shape, so held things sit in its hands and shoes on its feet. Tests pin its parts.
The cat was one big oval with triangles for ears. It is now a kitten sitting up, front on, drawn in parts like the phoenix and the mouse: a wide round head with fluffy cheeks, two pointed ears with pink insides, tabby stripes on its brow and cheeks, a pale muzzle with a little pink nose and long whiskers, rosy cheeks, a pale bib, front legs with white socks, two haunches with white hind feet, and a thick striped tail that curls up beside it like a question mark. The palette dyes its fur and its stripes take a deep tone of it, so lemon makes a ginger cat, pearl a silver tabby and a dark picked colour a tuxedo cat in white socks. Asleep it relaxes its ears, tucks its paws together and wraps its tail round on the floor. It throws up its paws for a cheer, waves, bows and pads along softly, one foot and then the other. Its ears flick now and then and when it reacts, and nothing else moves with them; while motion is welcome its tail sways. Under a hat its ears lie out to the sides and peek from under the brim. Face, head outline, neck and anatomy are measured for the new shape, so held things sit in its front paws and shoes on its feet. Tests pin its parts, poses, anatomy, colours and gait.
The swan was one outline with a crown and a mask laid over it. It is now a plump little swan standing up, front on, drawn in parts like the phoenix, the mouse and the axolotl: a big round head on a long neck with a gentle bend in it, round eyes either side of the black knob of an orange bill with a pale nail at its tip, rosy cheeks, a little gold tiara with a jewel on its crown, a soft breast of scalloped feathers, two broad wings folded at its sides like a tutu with rounded flight feathers at their ends, a short soft tail behind it and two little webbed feet. The palette dyes its feathers; a pearl swan is a white swan. On dark feathers it becomes a black swan, with a red bill tipped white, light scallops and grey feet. It cheers with both wings up, spreads them wide, waves one, bows and pads along on its webbed feet, one and then the other, and its solo dances on the desktop now move its wings and feet. Asleep it folds its wings in close and lets its tail droop. While motion is welcome its tail sways. A hat or the swan crown takes off the tiara. Face, head outline, neck and anatomy are measured for the new shape, so held things sit at its wing tips, a scarf round its neck and shoes on its feet. Tests pin its parts and the black swan's bill.
The minimal companion, the robot, the chip and the fan are only a head. In the island they stay that way; out on the desktop they now walk on a little chibi body under a smaller head, each in its own design: the robot a boxy metal chest with a screen and a heart light, a belt and ball joints at shoulders, elbows and knees, round mitts and boots; the chip a package body with side pins and a pin-one dot on bent pin legs with tinned pads and solder-ball hands; the fan a vented frame with slats and corner screws on splayed stand struts with rubber feet and grommet hands; the minimal companion a small clean body in the shape of its own head, ball, egg, squircle or pill, with soft round limbs. The desktop asks for it by setting growsBody on its rig. The rig then draws the head, its face, pins, blades, props and fusion marks smaller over the body through one transform, dresses the figure on the body's anatomy, so held things sit in its hands, shoes on its feet, wings and jetpacks behind its back and hats on the smaller head, and stands it on its soles. Its gradient and details come from each palette and any hand-picked colour. Its arms and legs keep a pose for each face: hands on its hips when cross or smug, arms up in a fright, fists up when thrilled, limp when bored or sad, hands on its tummy asleep. It cheers and waves in a reaction, marches one knee up then the other as it walks with a gait of its own, and breathes, squashes and stretches with the rest of the figure. The robot's heart light beats while motion is welcome. Every pose is built with the same commands so one morphs into the next. Tests pin the poses, the fit of the head, the anatomy and the colours.
…1e87622820d557ba # Conflicts: # Tests/MetricsTests.swift
Its short straight neck read more like a pigeon than a swan. The head stays where it was, the body sits lower and a little smaller, and the neck between them is now long and slender, curving out to one side and back in an S. Wings, breast, tail, feet, torso and scarf follow the new body.
Companions on every display, alarms, a way to send every visitor home, desktop bodies for the four head-only figures and eight companions drawn anew.
The redrawn animals and the ballerina hold things in paws that sit close in under the face, so a staff, a sword, a sceptre or a kite rising from the grip crossed their eyes. A held thing that would reach the eyes now leans out from the grip, only as far as it takes to leave the face clear; everything that already stood clear is drawn as before.
Alarms stored their dates as seconds since 1970, which rounds off the last bit of a time taken from the clock about half the time, so a saved alarm did not always come back equal to itself. They now keep the encoder's own form, which comes back exact. Alarms are new in this version, so there is no older data to read.
On the desktop a figure that is only a head grows a body and wears a smaller head, set as a transform on the head's layers. Drawing it again, on another screen, with another look or as another figure, set those layers' frames while they still wore that transform, so the head was measured through it: it came out large and off to one side with its fill washed out, and stayed so until the companion was changed. The transform now comes off before the layers are measured and goes back on after.
A companion with a grown body keeps its head in shape when it is drawn again.
The wake observer listened on NotificationCenter.default, but AppKit posts NSWorkspace.didWakeNotification on the workspace center, so reapplySaved() never ran after wake and the CPU stayed on firmware limits while the UI showed the saved preset. Built; not run through a real sleep.
The load it checks before climbing only updates while Auto EPP polls, so with Auto EPP off it stayed at 0 or frozen and the limit stayed at its floor. It now reads the load itself when Auto EPP is not running. A profile written in full after wake or a kext load also restarts the limit at its PPT, so the service no longer remembers a lower value than the hardware has.
The picker offers items by the friend's level, but desktopFriend checked the pick against the main companion's, so an item valid for the friend could be stripped to none. With no item given, the friend keeps the pick it had.
Showing the window added a client without setting the visibility flag, so the occlusion observer could add a second, and closing removed one, leaving the samplers at foreground cadence with no UI open. Both now go through the flag, and closing a covered window no longer removes a client it already gave up.
Selector 57 op 2 answers with one scalar. Passing no output room should make the call return an error even though the capture ran, which aborts the PM table export when no snapshot exists yet.
configure only ended it when the assigned item changed, so a new figure kept wearing the item picked for the old one until the play ran out.
forgetSMUSettingsForSleep left the OC VID, all-core Curve Optimizer and boost limit caches, so selector 62 kept reporting pre-sleep values after the SMU had reset them.
setCPBState read HWCR on one core outside the lock and wrote that whole value to every core. Each core now changes only CpbDis in its own register. The requested state is kept and put back with the rest of the per-core setup, since firmware resets it across S3.
setPMPStateLimit(0) skipped the reset, and with a limit of 0 set_PState no longer writes, so cores idling in P1 or P2 stayed there. Only reachable where legacy P-state control is active; Zen 3 and later never write that MSR.
A failed start() gets free() without stop(), so the CPPC memory maps and the Super I/O object mapped earlier in start() were never released.
The two neighbouring helpers guard against a logical CPU with no core and this one did not. Defensive: no case with a NULL core has been observed.
VirtualSMC keeps pointers to the plugin and to key objects whose code lives in this kext, and offers no way to take them back. An unload would leave SMC reads jumping into unmapped text. The kext now retains itself after a successful submit, in source because the kext project is not in this repository.
Selector 64 held only controlLock while the thermal path reaches the same PCC channel under only rendezvousLock, so the two could interleave on the shared memory and doorbell. The order controlLock then rendezvousLock matches selectors 24 and 25.
Selectors that leave the caller-supplied output count untouched would return whatever the reply buffer held. Clearing them closes that for every selector without changing what any of them writes.
reapplySaved returned early during Gaming Mode, which left firmware limits after wake; it now puts Extreme back. Leaving Gaming Mode or turning Auto EPP off restores the selected custom profile, as reapplySaved already does, instead of only a preset. A preset or profile refused for privileges also gives back the manual EPP and the custom selection it replaced.
EPP, CPB, PPM, LPM and C6 were saved before the kext call and stayed saved when it failed, so the rejected value came back on the next launch. The EPP picker also snapped to the value of an inactive CPPC mode; it now follows only an active one.
A refused manual write left the fan in manual mode, so the thermal guard sent it again on every poll. A write refused for privileges now returns the fan to its real state; other failures keep the choice so a passing error does not lose it. Picking a curve on a fan card also turns Dynamic Curves on, since launch setup needs both.
A retained hierarchy gets no onDisappear when its window closes or is covered, so the live sync, fan and C6 residency polls kept running. They now follow WindowVisibilityReader.
Aura, fusion art, sprite loops and the groove subscription only checked reduce motion, so static preview tiles and hidden windows kept running emitters and infinite animations. They now follow the same motion rule as the rest of the rig.
Picking the item it already has, pressing Use item or turning the option off now ends a dress-up. The stage preview follows the friend keys and the resting preview uses the full look, so both show what was chosen.
Each companion on the desktop installed its own three event monitors and read the window list itself, up to 72 monitors and many window server queries a second with a gang out. They now share one set of monitors and an 80 ms snapshot. removeMonitors also drops the screen observer, and the display link no longer holds the companion.
The 6 s play tick ran and saved RPG state with the companion disabled. Announced departure keys were kept forever; they now go once the event has started.
AppSwitcher.suspend left the keyboard layout observer and preview warming running, unlike its disabled path. Activation generations kept every PID ever activated.
Every preference sync built a new status item over the old one. The resolved artwork cache grew with every track; it now resets at 64 entries, the bound the lyrics cache uses.
AutoQuitService kept window watch retries for a quit app, which a reused PID then inherited. DiskSampler kept metadata, rates and totals for every volume ever mounted.
USB watching, pings, wallpaper previews, process lists and one-second countdowns relied on onDisappear, which a retained hierarchy does not get when its window closes or is covered. They now follow window visibility. Local event monitors are also removed when their coordinator goes away, and the time wheel only holds one while hovered.
Unreleased entry. Credits Izzy for noticing that sleep was not working as assumed.
App version 1.78.2, build 144. Kexts 3.40.1 rebuilt into the release zip with their four pins refreshed: the plugin binary matches the one tested on hardware, the driver differs only in its UUID and version string.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RyzenStatus 1.78.2 (includes 1.78.0 and 1.78.1)
Kexts 3.40.1. The full notes are in
CHANGELOG.md.1.78.2: sleep does what we said it did
1.78.0 and 1.78.1
Companions on every display, alarms, send everyone home, desktop bodies, eight companions drawn anew, and companions keeping their shape.
Checks
./build.sh --test: 20202 checks OK. Concurrency gate: 0 diagnostics. Selftest OK. FPU check OK.