| Age | Commit message (Collapse) | Author | Files | Lines |
|
She now reacts to the headphones connecting with a short singing pose:
eyes shut, blindfold gone, mouth wide open, headphones on, a few musical
notes. The frames are new klein edits in frames.txt (dress/sing from
dress/base, leotard/sing from dress/sing), so a post-self-destruct sing
has its own art.
Detection is the island's rule (StatusPill.qml): by model prefix, since
BlueZ gives no class that says "headphones". The device's BlueZ Name is
WH-CH720N, which the alias does not affect. The reaction is a one-shot
hold in Mood.js (singHold, 4 s), placed after wave like the other event
reactions. A 4 s startup grace keeps a shell start with the headphones
already on from counting as a connection, since Bluetooth reads empty
for about 2 s.
|
|
SUPER+\ now plays a short goodbye instead of dropping her at once: she cycles wave-l and wave-r around the existing wave for a sway, then the normal drop. One hide in four she also says a bye line, non-forced so the usual 30 s cooldown applies; the hold matches what showed, 2 s with a line and 1 s silent.
The sway is klein edits of dress/wave rather than base, so the arm stays up and only the hand moves; the leotard twins come from their dress frames. The leotard rerolled to seed 7 because the first seed left a faint alpha fringe that widened the canvas and made the flip jitter.
Fullscreen, the lock screen and the monitor hop keep their own exits and do not wave.
Also carries the pending onFocusedChanged guard: with no focused monitor, or already away, she moves at once rather than waiting for an exit that will never settle.
|
|
Her per-app lines were hardcoded in Lines.js under app:<class>. They now live in Prefs.companionApps once edited and fall back to Lines.js until then, read live by Companion.qml so a save needs no restart. The new Companion phrases page does full CRUD on apps and their phrases, with a draft, SaveBar and Reset to the built-in set, mirroring Ask presets. Companion settings move out of Desktop into their own Companion group.
|
|
The trigger fires whenever she stops being away, which is a dodge and
fullscreen as well as the three appearances the spec named.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The focused window's class, from Hyprland's activewindow event, picks a
line from Lines.js keyed app:<class>. The event fires on every title
change too, so she reacts only when the class changes, and a third of
the time, under the existing 30 s line cooldown so alt-tabbing does not
make her chatter. Classes come from the window rules in the live config;
one without lines says nothing. Lines only, no frames of her own yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
SUPER+\ only flipped a property, so every restart of the desktop shell
brought her back. Whether she is shown is now `companion` in Prefs.qml,
set by the IPC and by a switch on a new Settings > Desktop > Companion
page. Prefs gains `ready`, so she waits for the file rather than showing
at the default and then vanishing; the greeting now plays on every
appearance, the one at login included.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Her stages sat at 1, 3 and 5 minutes, and the saver starts at 5, so she
lay down under it. They are now 20, 40 and 70% of wscreensavers'
idleTimeoutMinutes, read live from its config: 1, 2 and 3.5 minutes at
its default.
She never idled at all while No lock was on: it holds an idle inhibitor
and her monitors respected inhibitors. Measured with a throwaway shell,
a 5 s monitor respecting them never fired while one ignoring them did.
They now ignore inhibitors, as the saver does, and presentation and
gaming mode keep her awake by name.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Remapping only when the assistant opened left her under rofi and the
keybind reminder, which map on the same Overlay layer later. She now
remaps on Hyprland's openlayer event for any namespace but her own,
restarting the timer so a burst of openings ends with her on top.
The bare remap read as a flicker. Unmapped she now counts as away, so
her figure drops out unseen during the 400 ms and plays its entrance
when she is back: a vanish and a hop in.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The assistant canvas is a full-screen Overlay surface mapped on open,
so it covered her and her think and wave were never seen. She moves to
the Overlay layer and unmaps and maps again when the canvas opens, since
a later surface stacks above an earlier one and Hyprland 0.56.2 has no
layer rule to order them: an `order` key was tried, raised no config
error, and did nothing.
Every key sent her into watching, a shortcut included. The pulse comes
at most once a second, so a lone key is one pulse; she now watches from
the second pulse within 2.5 s. The hypr-theme hook drops modifiers and
chords on its side.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The README records the measurements the code depends on: where typing
and BackSpace come from, why the dodge waits for the pointer, the
IdleMonitor enabled default, and fullscreen 2 against maximised 1.
AGENTS.md gains the QtQuick Sprite trap beside the Controls Button one,
since it took the desktop shell down on restart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|