Updates
Latest updates and improvements to Joely.
Richer Previews & Translations #
Medal.tv clips play inline, YouTube previews get their controls back, and the ticket sidebar is fully translated.
New features
- Medal.tv clips in messages — Medal.tv links now play inline as a native video, alongside the existing YouTube and image previews.
Improvements
- YouTube previews now show native controls — Play, pause, fullscreen and timeline are back on inline YouTube embeds.
- Cleaner link previews — Titles and descriptions no longer show garbled HTML entities like
&or'. - VAT label on pricing — The price under the cycle toggle now clearly indicates when VAT is included.
- Sidebar & modals translated — Members card, Tebex coupon, gift-card, package and GitHub issue modals are now fully translated in French, German, Spanish and Italian.
Fixes
- CSAT modal on closure requests — The satisfaction survey now opens when a staff member asks to close the ticket, not only after closure.
- Pasted images stay as attachments — No more duplicate inline copy when you paste a screenshot in a reply.
- GitHub card refreshes on package change — Linking or unlinking a Tebex package now updates the GitHub sidebar without a reload.
- Clearer system messages — Package link/unlink events read more naturally in the ticket timeline.
Billing & Onboarding #
Subscription plans with multi-currency checkout, plan-aware feature access, and a streamlined 4-step setup wizard.
New features
- Subscription plans — Pick from Free, Plus, Team, Studio, and Enterprise through Stripe Checkout. Downgrades survive period-end, payment methods reattach on renewal, and
past_dueaccounts recover automatically. - Multi-currency & VAT — Prices display VAT-inclusive based on your country, with billing address collection and tax ID support. The
/monthsuffix animates smoothly between monthly and annual. - Promo codes at checkout — Stripe Checkout now accepts promotion codes.
- Plan-aware feature access — Paid features now block clearly with a contextual upgrade prompt. Members see a "contact the owner" view; owners see an upgrade modal that suggests the cheapest plan covering their team size.
- Get Started page — A new
/dashboard/get-startedchecklist guides you through branding, Tebex, Discord, custom fields, and AI setup. - Slimmer onboarding wizard — Down to 4 steps. The Welcome and GitHub steps are gone, the Tebex connect step matches the settings UI, and mobile help popovers go fullscreen for legibility.
- Open self-registration — No invitation required to sign up. Authenticated users with a project are routed straight to billing.
- Sidebar plan badge — A live plan badge in the dashboard sidebar with an upgrade CTA.
- AI message correction — A new AI action in the composer rewrites your draft (Team plan).
- Doc import prompt — After three consecutive AI rejections, staff are prompted to import documentation to teach the AI.
- Split AI quotas — Knowledge tokens and monthly responses are now separate. Knowledge is unlimited on all plans; Plus includes 200 replies per month.
- AI statistics rework —
/ai/statisticsnow surfaces plan limits and recent usage with response counts. - Paginated CSAT reviews — Free-plan teams see a preview of CSAT reviews behind a clean unlock card.
- Unassigned tickets in CSAT — Surfaced in the staff performance breakdown.
- Bot preflight checks — Discord bot verifies its permissions before sending and detects when it's been removed from the guild.
- Auto-dismiss bell items — Notification bell entries clear themselves when clicked, mirroring the unread-replies pattern.
Improvements
- Pricing & features page overhaul — Plans renamed, Free shows
0€, plan highlights translated, Free-forever copy, FAQ refresh. - Features page — Centralized registry with plan columns per feature, live Stripe prices, and a
Contact saleslink for Enterprise. - Accessibility & color polish — Light and dark themes hit 100/100 accessibility on landing. Unified accent palette, brand color in the project theme picker.
- Legal refresh — Terms of Service and Privacy Policy rewritten under French law and GDPR. Footer links to the public status page.
- Sentry uptime monitoring — Three public health endpoints monitored so we know about outages before you do.
Fixes
- Checkout skeleton no longer flashes on the free plan.
- Light-theme upgrade buttons now have proper contrast.
- Downgrade buttons use the outline style for clearer hierarchy.
- Invite buttons at capacity route to the upgrade modal instead of failing silently.
- Replying to an internal note now forces an internal reply, preventing accidental leaks to the customer.
- Raw HTML tags are preserved in the chat editor and message rendering.
- "Unassign all" is hidden when nobody is assigned.
- AI responses keep backslash-escaped characters intact.
- "Leave shop" cleanly removes access without logging you out.
- Portal stays public when the owner's plan doesn't include the privacy feature.
- Project theme persists across the SSR-to-client hydration without flashing the wrong color.
transaction_changesystem message now appears translated in the customer chat.
Search & Visibility Polish #
Search ignores active filters, CSAT scores get their own column, and AI approvals notify per ticket.
New features
- Search bypasses filters — Searching the staff ticket list now ignores active filters (status, priority, package, assignee, favorites, CSAT, new replies) so you always find what you're looking for. Matching text is rendered bold in the subject, package, customer name, and ticket number cells.
- Flexible ticket number search — Search by
7or#7. The leading#is highlighted if it matches. - CSAT column on tickets — Sortable CSAT column on
/dashboard/tickets. The numeric score is colored by rating. Filter by 1-5 or by "no rating". - Column visibility dropdown — Hide columns you don't use. Settings persist per user. Ticket #, Subject, and the row selector stay locked.
- Per-ticket AI approval alerts — The notification bell now shows one entry per ticket with a pending AI draft, linking straight to that ticket instead of a generic summary.
Improvements
- Translate in toolbar — The translate action is now a direct icon in the message hover toolbar, no menu detour.
Fixes
- The "view customer orders" permission label now displays its translated name in the roles settings.
Customer Purchases & Smarter AI #
See Tebex purchases inside the ticket, save filter presets, and search inside message bodies.
New features
- Customer purchases sidebar — A new dropdown in the ticket sidebar shows the customer's Tebex purchases and orders without leaving the ticket.
- Saved filter presets — Filter combinations are now persisted in the database, scoped per user and project, so they follow you across devices.
- Message content search — Ticket search now matches inside message bodies and returns highlighted excerpts of the matched passages.
Improvements
- Smarter Teach AI — Conversations are now synthesized into a single self-contained Q&A unit instead of being split into atomic facts. Fewer ambiguous references, more reliable retrieval.
Fixes
- Per-package knowledge stays scoped during retrieval (no more cross-package leak).
- AI message log popover now shows the fact content and scope (global vs package) instead of opaque IDs.
- Link previews now work from the staff dashboard, not only the portal.
- OAuth callback loader on the portal respects the project's primary color.
- "Connect with CFX.re" page now has a proper browser tab title.
AI Audit Logs & Click Rows #
Audit AI replies, click ticket rows to open them, and tweak the AI response delay per project.
New features
- AI message audit logs — Every AI-generated reply is logged with its confidence score and a usage breakdown, viewable from the admin panel.
- Auto-disable on staff reply — AI auto-response disables itself on a ticket as soon as a staff member jumps in.
- Configurable response delay — Set the AI auto-response delay (in minutes) per project.
- Working hours respect — A new setting makes the AI only reply during your configured working hours, with vacation periods supported as datetime ranges.
- Persistent job notifications — AI job completion notifications now survive a page refresh.
- Unified AI Response card — Auto-reply and auto-approve settings live in a single card now.
- Clickable ticket rows — Click anywhere on a row to open the ticket. Ctrl/Cmd+click or middle-click opens in a new tab.
- Mark-as-unread everywhere — The mark-as-unread action is exposed on every message and persists across reloads.
- Reset filters button — One click clears every filter on the ticket list.
- Preserved filters — Filters survive when you go from a ticket detail back to the list.
- Pain Block landing section — New landing section contrasting Discord chaos with Joely.
- Tebex Creators landing page — A standalone page tailored to Tebex store owners.
Fixes
- AI Teach knowledge entries save again from the batch endpoint.
- AI no longer extracts reported-speech or meta-statements as standalone facts.
- Pending AI edits save automatically before approving the draft.
- Missing notifications for auto-reply messages restored.
- Soft-deleted messages excluded from "new reply" counters.
- Mobile slideover closes when the scheduled-close modal opens on top of it.
- Vacation banner reappears for periods saved as datetime ranges.
- Inline code blocks vertically aligned in messages.
- Tooltip on the package linker info icon turned into a click-triggered popover for touch users.
- Global tooltip hover delay removed for snappier feedback.
Invitation Flow & AI Imports #
Smoother sign-in for invited users and incremental AI knowledge imports.
New features
- Read-only ticket settings — Users with
view_settingspermission can now see ticket settings without being able to edit them. - Per-model token weighting — Usage display now weights tokens per model, so the cost reflects the actual model used.
- Incremental web import — Facts are saved as each chunk is processed instead of all at the end, with progress shown inline.
- Real-time job updates — Background AI jobs now report progress live without polling.
- CSS selectors remembered — Selectors entered in the AI Import Web modal are preserved between opens.
- Token limits enforced in jobs — Background imports respect token quotas and cancel automatically when exceeded.
Improvements
- Tebex store uniqueness — A given Tebex store can only be connected once across the platform.
Fixes
- Switching between sign-in and create-account during an invitation flow now preserves the invitation token.
- Backend permissions properly enforced on tebex-stores endpoints.
- Internal-only API routes no longer hit the public rate limit.
- AI save flow and modal accessibility cleaned up.
- AI usage display hides low-value cache token details.
Translations & Link Previews #
Translate messages from the context menu, and see rich previews for links in conversations.
New features
- Message translation — Translate any ticket message from the context menu. Supports DeepL, Google Translate, and Microsoft Translator.
- Link preview embeds — URLs in messages now show rich previews with cards, images, and video embeds.
Fixes
- Modal headers no longer duplicate the title text.
- Long code blocks and inline code now scroll properly inside the message bubble.
Knowledge Pipeline & Mobile Emojis #
Structured AI facts with confidence scores, manual Tebex order lookup, and emoji reactions on mobile.
New features
- Structured AI facts — Web import now extracts facts with a type (rule, info, procedure, etc.) and a confidence score.
- Cost tracking on AI jobs — Each import job tracks token cost so you know what you're spending.
- Edit fact type — Change a fact's type inline during the import review.
- Knowledge stats — Total facts saved and web imports surfaced in the admin stats dashboard.
- Inline import progress — Knowledge save jobs progress shows directly on the web import row and auto-removes when done.
- Manual order ID lookup — Portal customers can enter an order ID by hand if they don't see it auto-detected.
- Order products modal — Customers can browse what they purchased inside a clean modal with a loading state.
- Rate limit modal — Friendlier error display when a customer hits the rate limit.
- Mobile emoji drawer — Bottom-sheet emoji picker and context menu reactions on mobile.
- Bulk mark as read — Mark multiple tickets as read in a single action.
- Onboarding security info — Popovers explain what each Tebex credential is for and how it's stored.
Improvements
- Cleaner Tebex setup — The secret key is now optional and the connect form catches duplicates.
- Order ID field auto-hides — If no Tebex stores are configured, the order ID field disappears from the ticket form.
Fixes
- Assignees are now notified when a new or updated ticket is assigned to them so it appears as unread.
- Completed AI import jobs auto-delete after 10s of being seen.
- AI review modal no longer auto-opens unexpectedly.
- Confidence scores are explained via a tooltip on the brain icon.
- Edit textarea in fact review autosizes correctly and the type dropdown no longer triggers selection on click.
Scheduled Closure & Message Management #
Auto-close tickets, edit and delete portal messages, and an admin stats dashboard.
New features
- Scheduled ticket closure — Schedule a ticket to auto-close at a future date with a live countdown. Cancel anytime.
- Saved filter presets — Save your favorite ticket-list filter configurations per project.
- Resizable & reorderable columns — Drag column edges to resize and drag headers to reorder. Settings persist.
- "Last Message By" column — New sortable column showing who sent the last reply.
- Mark as unread — Mark a ticket as unread from a specific message, on both staff and portal.
- "New" separator — Discord-style separator marks where the unread messages begin.
- 64-character title limit — Ticket titles now have a soft limit with a live counter.
- Action links in messages — Clickable buttons inside chat messages (Invite, Link Discord, etc.).
- Soft-deleted messages — Staff see deleted messages with an indicator; customers see them removed from the conversation.
- Portal edit & delete — Customers can now edit and delete their own portal messages.
- Real-time message edits — Edited content syncs live for everyone in the ticket.
- Emoji search — Filter the emoji picker by name with a search bar.
- Top reactions menu — Your three most-used reactions appear in the hover menu for faster access.
- Paste images — Paste images straight from your clipboard into the editor.
- Grouped consecutive messages — Messages from the same sender within a minute are grouped visually.
- Real-time portal notifications — Customers get instant in-app notifications when staff replies.
- Support languages on portal — The portal shows which languages your team supports when a customer opens a new ticket.
- Portal rich editor — TipTap on the portal too, so customers can format their tickets.
- Discord connect prompt — Customers are gently nudged to connect Discord after viewing their first ticket.
- Admin statistics dashboard — Global counters and daily charts for users, tickets, messages, and projects.
- Favicon & tab title badges — Unread counts appear on the browser favicon and tab title.
- Descriptive page titles — Every page now has a meaningful browser tab title.
- Ticket number format — Displayed as
#Ninstead ofTKT-000N. - GitHub repo link — The repo link shows in the ticket sidebar even when no issue is linked.
.sqlattachments — SQL files are accepted as ticket attachments.
Improvements
- Faster portal unread — Counts are now computed in the database instead of loading every message into memory.
- Anonymized closure events — Staff identity is hidden in real-time closure events when names are configured as hidden.
Fixes
- CSAT survey comments now render with markdown.
- Avatars in CSAT responses resolve correctly for staff.
- Hard-delete of customer-deleted messages no longer returns "Message not found".
- Smooth scroll to unread is correct with the new context offset.
- Discord OAuth callback duplication removed.
Emoji Reactions & GitHub Issues #
React to messages with emoji, get precise read receipts, and jump to linked GitHub issues.
New features
- Emoji reactions — React to ticket messages with emojis. Rate-limited and permission-controlled.
- Precise read receipts — Read tracking is now per-message rather than per-timestamp, so the "read" marker is exact.
- Per-ticket unread reply counts — The bell now shows counts per ticket, filtered to only what you should see.
- View on GitHub button — Linked GitHub issues now have a one-click jump-to-GitHub action, and a comment is posted on the issue when linked.
tickets.manage_github_issuespermission — Granular permission to manage GitHub issues from tickets.
Improvements
- Simpler GitHub model — Duplicate detection is now part of the create flow.
- Mention avatars from CFX.re — Mentions show real profile pictures when available, and the list refreshes when assignees or participants change.
- Mention filtering — Mention suggestions are filtered by who can actually see the ticket.
- Mobile reactions drawer — Picking a reaction on mobile uses a bottom drawer instead of a desktop-style picker.
Fixes
- Duplicate assignee avatars cleaned up on assignment.
- Email field removed from team/assignable endpoint for privacy.
- CSAT save no longer races with the project update.