OpenSparrow v4.3 adds record links and @mentions to comments
OpenSparrow v4.3 adds record links and @mentions to comments, user info tooltips, and a unified frontend — plus a shared help cursor, first-column row actions, and a simpler setup wizard. Record links in commen
OpenSparrow v4.3 adds record links and @mentions to comments, user info tooltips, and a unified frontend — plus a shared help cursor, first-column row actions, and a simpler setup wizard.
Record links in comments
A comment body can now reference any record by writing [Record: table:id], which renders as a clickable link that opens that record. A record picker dialog (public/assets/js/comments.js) inserts the marker for you — you never hand-type an id. Markers are extracted server-side (includes/comment_links.php) and validated against the schema before being trusted, so a malformed or non-positive id is dropped rather than turned into a broken link.
@mentions with in-app notifications
Typing @username in a comment (with an autocomplete picker, public/assets/js/comments/mention.js) mentions an active user and drops an in-app notification into their bell. includes/comment_mentions.php parses the mention, matches it against spw_users (active, non-author accounts only), and writes into spw_users_notifications with a title (“X mentioned you”) and a deep link to the record’s Comments tab:
- Mentions never notify the author of the comment
- The insert is idempotent (
ON CONFLICT … DO NOTHING), so repeating the same mention on the same record does not spam - Any failure is logged server-side without leaking driver text to the client
User info tooltips
Hovering a comment author or a record owner now shows a tooltip with the user’s full name, role, email and phone. Data comes from includes/user_info.php and renders through the shared enableUserTooltips() funnel (public/assets/js/util/user-tooltip.js), which also upgrades every existing data-username anchor — so @mention chips and comment author links get the tooltip for free.
A unified frontend
Buttons, fonts and tables now follow one shared set of design tokens in public/assets/css/styles.css (--accent, --bg, --border, --radius, --shadow-*, --font-sans/--font-mono). Buttons inherit the page font everywhere — a plain <button> no longer falls back to Arial — and the edit/create forms render Excel-style subtable borders, gray headers and zebra rows from the same recipe as the record tables. The grid’s row-actions column (edit/delete) moved to the leftmost position, and every record/user tooltip now shows the shared ? help cursor.
Also in this release
-
Shared
?cursor — all tooltips funnel throughshowRecordTooltip()/enableUserTooltips(), so grid cells, board cards, calendar chips, roadmap bars, drilldown rows, owners and comment authors all show a consistent question-mark cursor; a hand-rolled cursor on the grid cell was removed in favour of the single rule. -
Simpler setup wizard — the database step no longer prefills the database name, user or password (or a default schema); only
localhostand5432are prefilled, so a fresh install can’t accidentally target placeholder credentials. Theconfig/demo_meta.jsoninstall marker is now documented. -
Demo CRM phone masked for viewers — the seeded
contact.phonecolumn now carries themask_for_viewerflag, so read-only Viewers see•••••while editors and admins keep the real values.
Following this series?
Websites
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.