Complete monorepo restructuring with shared packages
Overview
Transforms the Diiirect multi-app project from independent apps into an
enterprise-grade Turborepo monorepo with centralized configuration,
shared packages, and unified build pipelines.
build: emergency memory optimization to prevent OOM (492193e)
cast is_custom_order to boolean and normalize booleans before insert to satisfy Postgres (65df5a4)
chat: coerce legacy message text to string for safe rendering (20d7ebf)
chat: guard widget when GetStream credentials are missing (1bf56f3)
chat: include legacy attachments and text fields; add DEBUG logs when APP_DEBUG=true (3f72199)
chat: render legacy Stream messages and attachments (2901ac9)
chat: render Stream messages with robust fallbacks for text/attachments (74f496c)
chat: robust channel bootstrap and membership on detail pages (d240e42)
chat: sanitize Stream user IDs to allowed pattern (lowercase a-z0-9_@-) (dfc5175)
chat: send plain text (stripped) to Stream message.text; keep rich HTML in message.html (1fa1123)
chat: use correct PHP SDK signature for channel->create (userId, members) (4f9628d)
csrf: refresh token before timer start/stop/discard; add meta-token fallback (032fd81)
db: disable native prepares for PgBouncer pooler (fc01b72)
db: disable pg prepared statements and default schema to public (b926c49)
db: enforce disable server-side prepares via .user.ini (pdo_pgsql.disable_prepares=1) (731c480)
db: enforce emulated prepares before each pgsql query (85b04a9)
db: force disable server-side prepares on pgsql connection (89d0476)
getstream: read keys via config and guard missing creds (f5c036f)
imports: remove duplicate DB facade import in OrderController (0eb3347)
keep is_custom_order in data for logic, only exclude from insert; define local isCustomOrder in getPayment() (3945e67)
middleware: use Auth::user() in ClientMiddleware to avoid redundant eager-load queries (912c128)
onboarding: enforce boolean updates for Postgres (f416574)
order: compute total_timers via SQL on Postgres (43bb82d)
orders: pass paginator directly and include running/last timers relations (d540152)
orders: restore full paginator serialization for index table (e0c24ba)
pg: avoid boolean=int comparisons in timer/order queries (92bd415)
pg: cast billable/is_custom filters to boolean in timer queries (629bc37)
pgsql: disable native prepares at connector so PDO never uses server-side prepared statements\n\nThis prevents intermittent errors when using PgBouncer/transaction pooling by ensuring emulated prepares are enabled and native prepares are disabled at connection time, before any query runs.\n\nAlso retains existing safeguards in database.php and AppServiceProvider boot for redundancy. (779fda4)
pg: use 'approved is true' in Order::approvedTimers relation (d1ea526)
prevent null offset when attaching contract type by defaulting selected_bundle.amount to 0 for title-only creation (db94df0)
remove invalid --progress flag from build script (941458d)
remove type hint from VerifyGoogleRecaptcha::passes() for Laravel 11 compatibility (b0c1d2d)
search: prevent Postgres bigint cast error on non-numeric search\n\nApply exact ID filter only when the search term is numeric. This avoids when users type arbitrary text (e.g. creating a new task with a search like 'sdg').\n\nThe rest of the search continues to use LIKE against text columns. (a8ec089)
search: use Algolia Scout Extended v3 for Laravel 11 (ead6658)
search: use ctype_digit for ID matching to avoid scientific-notation edge cases (ce0b719)
set is_custom_order using Postgres boolean literal after insert to avoid 42804 (f75684f)
staging: force Postgres-safe filter for custom-service with whereRaw('is_for_custom_order IS TRUE') (449dfcf)
stats: handle Postgres alias casing in adminDashboardStats (45183a8)
statsig: avoid constructing SDK when key missing by providing no-op stub (da37e08)
timer: make stop modal related fields read-only (b554140)
title-only create — make client_id optional for employees and derive serviceId from resolved service when service payload is absent (c821746)
use boolean comparisons for Postgres in custom service/service queries (prevent 42883 errors) (19e8394)
use computed instead of array key to avoid undefined index (2d17eb3)
Features
auth: add Supabase login UI and session exchange\n\n- New Blade with supabase-js sign-in + OAuth\n- Server endpoint to create Laravel session\n- Services config for SUPABASE_URL and SUPABASE_ANON_KEY\n- Route wiring for new-login and exchange\n- Align remember_me field name; keep /login fallback (d8b045a)
search: migrate from Meilisearch to Algolia (c68f4b8)
simplify Create Task modal to title-only and send minimal payload; avoid sending service/revisions; supports client-scoped URL (ac3e5df)
statsig: initialize SDK and add cron scripts (5eda215)
timer-stop-ui: disable Log time on submit and show Loading… to prevent double clicks (d8129d3)
ui: add 'Made with ❤ in Buenos Aires' to footer in all layouts (7699066)
ui: add Roadmap, Changelog, Status links and vertical bars to footer status bar (8429217)
ui: display deploy timestamp from build.json with relative time\n\n- Share deployed_at from build.json via Inertia\n- Show human-readable date and (time ago) next to branch/commit in all layouts (7a2eeda)
ui: show deploy branch/commit from build.json and center footer link\n\n- Read build.json in HandleInertiaRequests and expose version_number + commit_number\n- Update Admin/Client layouts to display centered Wiki + branch + short SHA\n- Link points to diiirect/WebApp commit; falls back to env if file missing (1470e94)
ui: show sign-out loader and errors; add logout debug headers (94597c4)
Performance Improvements
build: optimize webpack for 3x faster builds (8b04298)
chore: Overflow of dedicated talents table has been fixed.
feat: Added the ability to inactive the contract of dedicated talent and client every month automatically based on the start date and also send email notifications to both client owner,admin and delivery managers.
chore: Update backend and frontend to "Dedicated Talent".
chore: Added created by column and text and layout of empty table is changed.
chore: Added notifications via emails to bot client owner,delivery managers and admin when a contract is created and updated.
chore: Added activity logs when contract is created, updated or deleted and further more activity is also logged when the system makes the contract inactive.
chore: Activity is also logged in case of user deleted or suspended from the Google Idp.
feat: If the user doesnt have enough credits for the task he can utilize all his credits and rest will be charged from his card.First priority is given to user credits.
feat: Ability to view bonus details on the buy credits modal.
chore: Removed "view keeper" option on client side.
chore: Added label for "private" plans.
chore: Added description of plan feature in tooltip on client side.
feat: Added the ability to custom order the plans for client side.
chore: Added the ability to edit client password records.
fix: Subscription name on client side issue fixed.
fix: Purchased Subscription Becomes Invisible to Client After Admin Makes it Private that issue is fixed.
chore: Added coupons code in table and click to copy.
chore: Send signing up coupon to webhook.
chore: Updated the signing up coupon message.
feat: Added filter in coupon section and highlighted the expired coupon.
chore: Show intake form titles when user orders the task.
fix: Tip total timer issue has been fixed for running timer.
chore: Improve coupon on external checkout, it shows regular price on options and discounted price on order now button.
Mobile layouts have been fixed
fix: Truncated Service name issue has been fixed.
chore: Added checkout button on mobile that can scroll to the main checkout option.
chore: Tip service report layout has been changed.
fix: Tip service model layout for mobile as well as for big screen has been fixed.
fix: Service information gaps issue has been fixed on creating new task on mobile screen.
fix: Task information on detail page has been fixed on mobile screen.
fix: Announcement layout has been fixed on mobile screen as well on big screen.
fix: Confirm & pay and promocode layout on mobile screen on creating new task has been fixed on mobile screen
fix: Activity layout on client profile and project has been fixed on mobile screen.
fix: Stop & delete, stop button layout has been fixed on mobile screen
fix: Disconnect slack button is missing in mobile screen that issue has been fixed on client side.
fix: Wiki and Integration button is missing on the mobile screen has been fixed.
fix: Layout of models on mobile screen has been fixed which includes custom order,password description,delete modal,credit warning and reload timer modal.
fix: Last login issue has been fixed for talent that has recently been loggedin.and added the signup for the client.
feat: Added the ability to filter "Last Login" and "Sign up" column by starting and ending date.
feat: Added the ability in both "Last Login" and "Sign up" to sort both ascending and descending order.
fix: Terms and Condition page not opening in parent window issue has been fixed.
chore: Validation has been applied on creating and editing employee modal on client side.
fix: Modified the code for the embeded hubspot snippet for only "app.happyagencies.com"
feat: Webhook is triggered on New/Update/Delete workflow for services
fix: Unable to create employee with the same email on client side issue has been fixed by restoring the deleted employee and updating it with the current details provided.
fix: Most of the services doesnot contain any service package that issue has been fixed by adding the ability to add it through "edit" service option.
fix: Update Password validation requiring characters to exceed a minimum of three.
chore: Created command that will check all active services and create their single package if not exist.
fix: On external checkout page credit option was not working that issue has been fixed.
feat: Have the ability to share the password with task on the password index page and share with task assignees and any other talent.
fix: When share for task on password page it doesn’t share with Talent issue resolved.
chore: Added loader on share modal on admin side.
chore: Added loader on share modal for axios requests on both client and admin side.
chore: Change description to panel and is non editable
chore: Added switch in feed as well as in create/edit modal for public/private description for password request in task feed and the pill is shown if the description is private.
feat: Allowed user to click to see password details on modal (title, description , sharables etc not the password)
feat: Added link to record in keeper (for admin side for all password records)
chore: Added validation on the password request form from admin side
chore: Added switch in feed for public/private for password request in task feed for client make it same like for any password.
feat: client also has the section of passwords and he can create new password and assign it to the task he wants.
chore: client also has the ability to create record on specific task page.
feat: Talent can request the password from the task feed, but the delivery manager has right to share the access of that shared password from client. and delivery manager can share any password with any task assignee talent or any other talent. When the client shared the password it create a record in keeper.
fix: Short description in Service Api issue has been resolved.
fix: Variations in the services cant be added or edited issue has been resolved
fix: External checkout issue where the edited prices cant be added and the previously added prices cant be changed.
feat: Hours Meter added in timer index page for showing total hours by filter.
fix: Activity log and Api last used key dates have been fixed.
feat: Create a feature "passwords" to display the index of Keeper records.
feat: Added the ability to create,edit and delete keeper record.
feat: Added the ability to share keeper record passwords to talents and also have the ability to view talents with whom the passwords have been shared.
chore: Have the ability to choose task assignees and share passwords with them.
chore: Added "eta" filter in the "Get all Tasks" api.
feat: Create badge on the timer index page that will show total hours of all the records in the database and have the ability to display the total hours of the selected filters.
feat: Created Api for creating task.
feat: Created Api for fetching all tasks and have the ability to search and add filters, and featch single task with all related fields.
feat: Created Api for adding feeds (message, note, file, iframe) to the task.
feat: Created Api for Updating Specific task's fields.
feat: Created services api for fetching single and multiple services.
chore: Updating talent api for fetching single talent with all related fields and ability to make talent "active" and "inactive".
feat: Enriching talent api by the addition of connectors (User platforms connected to a talent) and the ability to get all connectors of specific talent and talents connected to a specific connector.
chore: Version syntax of the app has been revised.
chore: Updated slack block kit by making order number,title and project title clickable.
fix: External checkout issue has been fixed.
fix: Issue with exporting the excel file for timers has been resolved.