Commit Graph
8 Commits
Author SHA1 Message Date
JulianandClaude Opus 5 9106ce47f4 Build only one window layout, so the eyes stop jumping
Main.qml declared both layouts at once: the small per-object windows and the
full-screen overlay. Both of them write the controller's catCenter, which is
where the eyes look for the cursor. Two bindings on one property overwrite each
other, so catCenter alternated every frame between the cat window's real centre
and the hidden overlay's, whose height is zero. look.y flipped between -0.495
and 1.0 sixty times a second and the pupils jumped with it.

Each layout now sits behind its own Loader and only the one the platform needs
is built. The small windows moved into Desktop.qml so a single component can
hold all three of them.

Measured in the running app while walking, the eye's vertical travel went from
2.6 px to 0.40 px, and look.y is now a single steady value. It also stops a
second, invisible cat from animating in the background.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 09:12:39 +02:00
JulianandClaude Opus 5 f28dfec978 Settle the eyes down while walking
Two things made the eyes jump. The body bobbed two units per step and the head
rode along with it, and each eye ran its own random blink timer, so the cat
winked one eye at a time at intervals of its own choosing.

The bob is now a property on the cat rather than an animation owning torso.y,
the amplitude is softer, and the head translates against it by 75 percent, the
way a walking cat keeps its head level. Measured on a 240 px cat, the eye's
vertical travel per step went from 4.0 px to 0.8 px.

Both eyes now share one eyelid, driven by a single timer and a single
animation. That also removes the Behavior that was fighting the blink animation
for the same property, and the mid-blink flicker to the drawn closed-eye arch,
which now only appears when the eyes are really shut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 09:04:56 +02:00
JulianandClaude Opus 5 1581a760be Drop Qt Quick Controls and Qt Widgets
The binary now links Core, Gui, Quick and QuickShapes, nothing else.

Qt Widgets was there for one reason, QSystemTrayIcon, so the tray icon is gone
and QApplication is back to QGuiApplication. The cat itself is the whole
interface: right-click or long-press opens the settings window, which carries
the tricks and a quit button. Ctrl+C in the terminal works as well.

The settings window is rebuilt from Qt Quick primitives. AppButton, AppSlider,
AppToggle and SettingsGroup replace the Controls types, keyboard handling and
accessible roles included, and a Flickable with plain positioners replaces
QtQuick.Layouts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 08:58:51 +02:00
JulianandClaude Opus 5 f6ecf0ddbf Give the chip a box it fits in, and a spin that settles
The chip window was 60 x 44 with the curl tumbling about its centre. The curl
reaches 24.2 units from that pivot once the stroke is counted, so a half height
of 22 clipped the top and bottom off it on every turn.

The box is now 52 x 58 with the pivot at (26, 33), measured off the actual
Bezier curve rather than its control points. The shadow sits at 15.1 below the
pivot, which is where the curl comes to rest, so the chip lands on its own
shadow instead of floating above it.

The endless rotation is gone. Each bat now adds one or two whole turns in the
direction it was hit and coasts to a stop, so the resting silhouette is always
the same one, the one the shadow was placed under.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 07:12:11 +02:00
JulianandClaude Opus 5 6b9553f6d4 Stop clipping the cat at the window edge
The cat was drawn in a 100 x 90 box that was exactly the window, so anything
reaching past it was cut off: the right whiskers always, and more of them in
poses that push the head forward, up to art x 109 while stretching.

The window box is now 120 x 106 with the drawing inset at (7, 14). The slack is
symmetric on purpose, because facing left mirrors the art about the box centre,
so asymmetric slack would clip the other side instead.

The mood-name mapper grew the shared aspect ratio and became CatDefs, so every
window sizes the cat the same way. Nose and mug offsets follow the new inset.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 03:10:04 +02:00
JulianandClaude Opus 5 403ac30b3a Add a coffee break
Every so often a mug appears at the cat's nose, it sits down, dips its head in
and takes a few slow sips while steam rises. M01, optional stop.

The mug lives in its own click-through window like the chip, or inside the
overlay on Wayland. It goes away as soon as the cat is petted, dragged, sent to
sleep or moves on to something else, so no mug is ever left standing.

Also renames OverlayWindow's mode flag, which shadowed QWindow::active.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 23:00:22 +02:00
JulianandClaude Opus 5 0f1df75a1d Rename to TNCat, add chip chase, G-codes and a Wayland layout
The project is now TNCat, after HEIDENHAIN's TNC controls. Binary, QML module
URI, settings path, bundle id and .desktop entry follow; the environment
switches are TNCAT_*.

Entertainment: a curled steel chip skitters in every minute or two, the cat
runs it down and bats it away a few times before sitting back looking pleased.
Mood changes flash the matching machine code above its head, G00 for a sprint,
G01 for a stroll, M08 while it washes, G28 for a stretch, M30 for a nap.

Window handling was split into two layouts. X11 and macOS keep one small window
per object, positioned by the app. Wayland gets a screen-filling overlay whose
input region is masked down to the cat, since a Wayland client cannot place its
own window. Overlay mode is automatic there and available elsewhere via
TNCAT_OVERLAY=1.

Also adds a ground-line setting so the cat can walk above a softkey row.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 22:53:40 +02:00
JulianandClaude Opus 5 acef398f49 Workcat: cute desktop cat, no window closing
Reworks the example into a pure desktop-pet: the cat wanders, sits, grooms,
stretches, dashes and naps, reacts to petting and dragging, and follows the
cursor with its eyes. The window-scanning and Accessibility code is gone.

The cat is drawn from rounded primitives plus Shape paths in a fixed 100x90
design space, so it scales cleanly to any size.

Linux/X11 is the primary target: the tray is optional, Wayland gets a warning,
and WORKCAT_X11_BYPASS / WORKCAT_OPAQUE cover uncooperative window managers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 22:20:35 +02:00