* version: every span that shows v<APP_VERSION> in the page chrome now
carries data-app-version, and checkAuth() patches them in from the
/api/auth/status response so the GUI version doesn't go stale when
PHP is cached behind anything that revalidates lazily.
* undo: tailwind v4 compiles `-translate-x-1/2` to the *new* CSS
`translate` property, which then stacks with the inline `transform`
the toast set — the box ended up shifted ~ -100% and looked left-
anchored. Drop the tailwind utility, set `translate` directly inline
so there's one source of truth for the offset.
* editor: ctrl/cmd+enter while the editor modal is open now invokes
saveCard() (= save + close), pairing with the existing ctrl+s
(save only) and ctrl+shift+s (save+close) shortcuts.
* collab buckets: drop the inset left edge from .bucket-tab-collab and
the matching pulse-keyframe shadow — the bar tab now reads as a
normal bucket tab, just with the unread dot + 3-cycle pulse on update.
* collab create dialog: drop the box border / background from
.collab-toggle-row and .collab-members so the toggle and the user
list sit directly on the modal background instead of looking like
nested input boxes.
* test progress strip: ensureProgressBar() now also pushes the body
down by 30px AND shrinks it via height: calc(100vh - 30px) so the
fixed-top bar doesn't clip the footer (body is h-screen +
overflow-hidden in the core layout). hideProgress() clears both
inline styles when the run finishes.
chore: bump version to 0.9.2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The <select> element survives settings open/close, so its lingering value
masked the otherwise-empty restore path on the second open and the
dropdown always reverted to whatever was last picked in the *current*
session. Track the active preset in localStorage on every change /
save, restore from localStorage first (it's the source of truth), and
clear the entry on delete.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New "Copy text" entry next to "Save .md": copies title + blank line +
body to the clipboard, with fenced code blocks (incl. slide-image),
markdown images / links / formatting, and inline #tags stripped.
- "Mark done" is now visible on every card (used to require a due_date
to even show up). On a card already tagged #done it flips to "Unmark
done" and removes the tag. The original due-date-clearing behavior is
preserved when transitioning a due card to done.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
End-to-end shared buckets between relay tenants. Bucket metadata + members
sync through new relay routes (collab-buckets, collab-cards, collab-locks);
card content rides the existing inter-tenant encryption hop. Edit locks,
ownership transfer, LWW conflict stashing, undo for local-bucket destructive
actions, "Make collaborative…" upgrade path, and a resilient outbox for
relay-down create attempts. See plugins/collab-buckets/README.md and
TODO.md for the full picture.
Core hooks added so the plugin can integrate without monkey-patching:
- buckets.js context menu: collab-aware rename/color/delete + Members &
owner / Make collaborative entries
- editor.js dispatches hyprcrd:editor-open / hyprcrd:editor-close for the
per-card edit-lock heartbeat
- app.js exposes window.state for the plugin's MutationObserver
- index.php POST/PATCH/DELETE on /api/buckets refuse to mutate collab
buckets directly (must go through the relay)
- Database.php adds buckets.collab_uid column + unique partial index
- import handler now restores color and collab_uid (was silently dropping
color, which caused the test runner's auto-restore to wipe custom
bucket colors)
- relay bootstrap creates collab_buckets, collab_bucket_members,
collab_cards, collab_card_locks tables and prunes tombstones / expired
locks on every request
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds the cursor-blink class to "no X" / "select a Y" placeholders across
core (calendar popup, board preview, search preview, detail split, notifs)
and plugins (chat, email, gitea, slideshow). Visual consistency with the
rest of the pixel-font UI.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix card drag reorder in favorites/journal/current (filter logic
now mirrors renderBoard)
- Split view shows tag-matched cards as own group alongside related
- Remove extract/tree-view buttons from detail preview (edit-only)
- Context menu tag input: Enter assigns tag directly
- Tag autocomplete closes on ESC/click-outside globally
- Close modal cleans up both autocomplete popups
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>