mirror of
https://github.com/screentinker/screentinker.git
synced 2026-08-13 22:03:13 -06:00
The calendar rendered schedules but could not be used to change them. Creating or moving anything meant opening a dialog and typing times, which is the wrong instrument on a week grid: the grid already shows exactly where a thing goes, so the grid should be where it is put. My previous change made the grid easier to READ — all screens at once, a colour and a name per target — and left the interaction untouched, which was only half of what was asked for. Three gestures now share one pointer loop. Dragging empty space draws a slot and opens the dialog prefilled with the time drawn, so the gesture supplies the times and the dialog supplies only what it alone knows. Dragging a block moves it. Dragging its bottom grip resizes the end. A live ghost shows the range as a readable time while dragging, and nothing is committed until release, so an accidental nudge costs nothing. Right-click acts on what is under the pointer: new here, or edit, duplicate and delete on a block. Dragging a repeating schedule sideways is refused. A one-off's day IS its date, but a repeating one's day comes from its rule, so moving an instance across columns would rewrite the recurrence for every other occurrence — a different operation, and not one a mouse gesture should perform silently. Changing a repeating schedule's TIME does still edit the whole series, since a series has one time of day, so that is confirmed out loud rather than assumed. The arithmetic is a separate module of pure functions, because it is the part that fails quietly: a block that ends before it starts, a move near midnight truncated instead of slid back, or a stamp built with toISOString() putting anyone west of Greenwich on the previous day. Tests pin each of those. That last one was already present in the create path and is fixed here too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Uaeo9MvzKoyXuN6ZsbhtkL |
||
|---|---|---|
| .. | ||
| assets | ||
| compare | ||
| css | ||
| guides | ||
| integrations | ||
| js | ||
| legal | ||
| vendor | ||
| 41498e6c84045d9d187f4504c122e54f.txt | ||
| agency.html | ||
| api-docs.html | ||
| index.html | ||
| landing.html | ||
| manifest.json | ||
| robots.txt | ||
| sitemap.xml | ||
| sw-admin.js | ||