System

Activity Log

Unified timeline of data changes (saves, imports, deletes) and backend errors. Filter by type, area, severity, or search.

Data changes (total)1,217
Errors (total)302,224
Today · changes15
Today · errors27,843
Reset

303,441 results · Page 6067 of 6069

live_table_manager · delete
2026-04-11 18:58:02 · anonymous · /backend/live_table_manager.php?table=item_types&q=&ok=deleted
change
item_types #275
Context
[]
Before
{"item_type_id":"275","type_name":"tulle"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:58:02 · anonymous · /backend/live_table_manager.php?table=item_types&q=&ok=deleted
change
item_types #276
Context
[]
Before
{"item_type_id":"276","type_name":"Satin"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:58:02 · anonymous · /backend/live_table_manager.php?table=item_types&q=&ok=deleted
change
item_types #279
Context
[]
Before
{"item_type_id":"279","type_name":"lace tulle 5 to layers"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:58:02 · anonymous · /backend/live_table_manager.php?table=item_types&q=&ok=deleted
change
item_types #282
Context
[]
Before
{"item_type_id":"282","type_name":"tulle and beaded"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:57:29 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
change
item_types #408
Context
[]
Before
{"item_type_id":"408","type_name":"Fix"}
After
{"deleted":true}
live_table_manager.php
2026-04-11 18:55:35 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this record because other rows still reference it via a foreign key. Remove or re-link the dependent rows first, then try deleting again.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":191,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager.php(31): app_live_table_delete()\n#1 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#2 {main}"}
live_table_manager.php
2026-04-11 18:55:23 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this record because other rows still reference it via a foreign key. Remove or re-link the dependent rows first, then try deleting again.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":191,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(210): app_live_table_delete()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:55:13 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this record because other rows still reference it via a foreign key. Remove or re-link the dependent rows first, then try deleting again.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":191,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(210): app_live_table_delete()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:54:56 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this record because other rows still reference it via a foreign key. Remove or re-link the dependent rows first, then try deleting again.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":191,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(210): app_live_table_delete()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:47:22 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this item type because it is used by 1 alteration item(s) in order_items. Reassign those items to another type (or clear item_type_id) first, then delete this row.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":186,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(219): app_live_table_delete()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:47:07 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete this item type because it is used by 1 alteration item(s) in order_items. Reassign those items to another type (or clear item_type_id) first, then delete this row.
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"RuntimeException","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":186,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(219): app_live_table_delete()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:44:59 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
error
Cannot delete or update a parent row: a foreign key constraint fails (`ellas_alterations`.`order_items`, CONSTRAINT `fk_order_items_item_type` FOREIGN KEY (`item_type_id`) REFERENCES `item_types` (`item_type_id`))
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"mysqli_sql_exception","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":182,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(182): mysqli->query()\n#1 /mnt/drive1/customerdb/backend/live_table_manager_service.php(196): app_live_table_delete()\n#2 /mnt/drive1/customerdb/backend/live_table_manager.php(36): app_live_table_delete_many()\n#3 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#4 {main}"}
live_table_manager · delete
2026-04-11 18:38:43 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
change
item_types #277
Context
[]
Before
{"item_type_id":"277","type_name":"Polyester"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:38:38 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
change
item_types #280
Context
[]
Before
{"item_type_id":"280","type_name":"stretchy with beads and pearls"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:38:33 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted&_ts=1775947096631
change
item_types #278
Context
[]
Before
{"item_type_id":"278","type_name":"tulle with flower applique"}
After
{"deleted":true}
live_table_manager.php
2026-04-11 18:38:26 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted&_ts=1775947096631
error
Cannot delete or update a parent row: a foreign key constraint fails (`ellas_alterations`.`order_items`, CONSTRAINT `fk_order_items_item_type` FOREIGN KEY (`item_type_id`) REFERENCES `item_types` (`item_type_id`))
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"mysqli_sql_exception","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":182,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(182): mysqli->query()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(31): app_live_table_delete()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager · delete
2026-04-11 18:38:16 · anonymous · /backend/live_table_manager.php?table=item_types&ok=deleted
change
item_types #281
Context
[]
Before
{"item_type_id":"281","type_name":"2 dress shirts"}
After
{"deleted":true}
live_table_manager · delete
2026-04-11 18:38:11 · anonymous · /backend/live_table_manager.php?table=item_types
change
item_types #283
Context
[]
Before
{"item_type_id":"283","type_name":"Cottton  Silk"}
After
{"deleted":true}
live_table_manager.php
2026-04-11 18:38:06 · anonymous · /backend/live_table_manager.php?table=item_types
error
Cannot delete or update a parent row: a foreign key constraint fails (`ellas_alterations`.`order_items`, CONSTRAINT `fk_order_items_item_type` FOREIGN KEY (`item_type_id`) REFERENCES `item_types` (`item_type_id`))
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"mysqli_sql_exception","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":182,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(182): mysqli->query()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(31): app_live_table_delete()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
live_table_manager.php
2026-04-11 18:38:01 · anonymous · /backend/live_table_manager.php?table=item_types
error
Cannot delete or update a parent row: a foreign key constraint fails (`ellas_alterations`.`order_items`, CONSTRAINT `fk_order_items_item_type` FOREIGN KEY (`item_type_id`) REFERENCES `item_types` (`item_type_id`))
Script: /mnt/drive1/customerdb/webui/backend/live_table_manager.php
IP: 192.168.7.132
Context
{"table":"item_types","type":"mysqli_sql_exception","file":"/mnt/drive1/customerdb/backend/live_table_manager_service.php","line":182,"trace":"#0 /mnt/drive1/customerdb/backend/live_table_manager_service.php(182): mysqli->query()\n#1 /mnt/drive1/customerdb/backend/live_table_manager.php(31): app_live_table_delete()\n#2 /mnt/drive1/customerdb/webui/backend/live_table_manager.php(5): require('...')\n#3 {main}"}
customer_totals · create
2026-04-11 15:30:38 · anonymous · /backend/customer_totals.php?q=Edwards
change
customer_totals #8202
Context
[]
Before
[]
After
{"customer_date":"2026-04-09T19:29","customer_name":"Edwards","dopu_can":"Edwards","edwards":150,"edwards_type":"mileage","update_flag":"43 Miles"}
customer_totals · create
2026-04-11 15:18:35 · anonymous · /backend/customer_totals.php
change
customer_totals #8201
Context
[]
Before
[]
After
{"customer_date":"2026-04-09T19:17","customer_name":"Edwards","dopu_can":"Edwards","edwards":150,"edwards_type":"mileage","update_flag":"Milage 43"}
backup_database · create
2026-04-11 11:20:18 · anonymous · /backend/backup_database.php
change
backup_snapshot #snapshot_20260411_151957_before_final_input
Context
[]
Before
[]
After
{"target_database":"ellas_alterations_backup","tables":[{"source_table":"customers","backup_table":"customers__snapshot_20260411_151957_before_final_input","row_count":3177},{"source_table":"visits","backup_table":"visits__snapshot_20260411_151957_before_final_input","row_count":992},{"source_table":"orders","backup_table":"orders__snapshot_20260411_151957_before_final_input","row_count":992},{"source_table":"order_items","backup_table":"order_items__snapshot_20260411_151957_before_final_input","row_count":108},{"source_table":"payments","backup_table":"payments__snapshot_20260411_151957_before_final_input","row_count":1275}]}
live_table_manager · update
2026-04-11 09:00:37 · anonymous · /backend/live_table_manager.php?table=visits&edit=129057&q=
change
visits #129057
Context
[]
Before
{"visit_id":"129057","legacy_visit_id":null,"customer_id":"302528","visit_date":"2026-04-11 09:00:00","pickup_date":"2026-04-11 09:00:00","notes":"Wedding dress Deposit 50\nRange 180 ro 220","customer_name_snapshot":"Barbara Toledo Ramos","phone_snapshot":"8134033849","email_snapshot":"barbieb84@gmail.com","color":null,"alterations_needed":null,"alterations_notes":"{\"Project Details\":\"Wedding dress buttons \",\"When Needed?\":\"April 19th \"}","alterations_price":"0.00","total_alteration_price":"0.00","expedited_fee":"0.00","paid_date":null,"signature_text":null,"signature_date":null,"paid_flag":"0","source_key_value":"d93819b1-53f5-4f38-82f6-e2ba18e89b58","visit_type":"No label","deposit_amount":"0.00","setmore_customer_key":null}
After
{"visit_id":"129057","legacy_visit_id":null,"customer_id":"302528","visit_date":"2026-04-11 09:00:00","pickup_date":"2026-04-06 09:00:00","notes":"Wedding dress Deposit 50\r\nRange 180 ro 220","customer_name_snapshot":"Barbara Toledo Ramos","phone_snapshot":"8134033849","email_snapshot":"barbieb84@gmail.com","color":null,"alterations_needed":null,"alterations_notes":"{\"Project Details\":\"Wedding dress buttons \",\"When Needed?\":\"April 19th \"}","alterations_price":"0.00","total_alteration_price":"0.00","expedited_fee":"0.00","paid_date":null,"signature_text":null,"signature_date":null,"paid_flag":"0","source_key_value":"d93819b1-53f5-4f38-82f6-e2ba18e89b58","visit_type":"No label","deposit_amount":"0.00","setmore_customer_key":null}
report_service.php
2026-04-11 06:47:24 · cli · /dev/stdin
error
app_reports_daily(): Argument #1 ($conn) must be of type mysqli, string given, called in /proc/857993/fd/pipe:[23583145] on line 6
Script: /dev/stdin
IP: cli
Context
{"type":"TypeError","file":"/mnt/drive1/customerdb/backend/report_service.php","line":45,"trace":"#0 /proc/857993/fd/pipe:[23583145](6): app_reports_daily()\n#1 {main}"}
pipe:[23581519]
2026-04-11 06:47:24 · cli · /dev/stdin
error
Unknown column 'customer_report_id' in 'SELECT'
Script: /dev/stdin
IP: cli
Context
{"type":"mysqli_sql_exception","file":"/proc/857991/fd/pipe:[23581519]","line":10,"trace":"#0 /proc/857991/fd/pipe:[23581519](10): mysqli->query()\n#1 {main}"}
pipe:[23581937]
2026-04-11 06:46:50 · cli · /dev/stdin
error
Unknown column 'id' in 'SELECT'
Script: /dev/stdin
IP: cli
Context
{"type":"mysqli_sql_exception","file":"/proc/857570/fd/pipe:[23581937]","line":4,"trace":"#0 /proc/857570/fd/pipe:[23581937](4): mysqli->query()\n#1 {main}"}
documents · upload
2026-04-10 16:08:55 · anonymous · /backend/documents.php
change
backend_document #13
Context
{"file_name":"SESSION_LOG_2026-04-10.md","mime_type":"application/octet-stream"}
Before
[]
After
{"backend_document_id":"13","document_type":"upload","title":"Codex - Updates 04-10-2026","slug":"codex-updates-04-10-2026","summary_text":"All updates and documentation for Codex - Updates 04-10-2026","content_markdown":null,"content_html":null,"file_name":"SESSION_LOG_2026-04-10.md","stored_name":"20260410-200855-4b6f846d.md","mime_type":"application/octet-stream","file_size_bytes":"9223","storage_path":"/mnt/drive1/customerdb/backend/documents_storage/20260410-200855-4b6f846d.md","is_deleted":"0","created_at":"2026-04-10 16:08:55","updated_at":"2026-04-10 16:08:55","editor_content":"# Session Log - 2026-04-10\n\nThis document captures the main fixes and modules completed during the live-data/go-live support session.\n\n## Customer Go-Live Data\n\n- Reviewed the live load path for `customers`, `visits`, `orders`, `order_items`, and skipped `payments` because the bridge source only had summary-style `CustomerTotals`, not reliable one-row-per-payment detail.\n- Confirmed the remaining unmatched Setmore/import rows were considered junk and safe to ignore.\n- Identified the only manual staging fixes needed before the production load:\n  - fix `Priscilla`\n  - fix `Rae Sanders`\n  - ignore `Maria Martinez`\n- Prepared the go-live sequence:\n  - backup current live tables\n  - refresh staging\n  - apply manual staging fixes\n  - run preview script\n  - run production load\n  - run post-load audits\n  - spot-check real customers in the app\n- Provided a backup-table SQL pattern for pre-go-live snapshots and later cleanup.\n\n## Visit Page\n\n- Added a safe staff override path so staff can leave `visit.html` without forcing a customer signature when the customer is not present.\n- Kept signature requirements for print/email/report actions, so the override only affects navigation.\n- Added a Bridge Compare popup/grid to `visit.html`.\n- Added backend endpoint for bridge comparison:\n  - `frontend/api/bridge_customer_compare.php`\n- Updated the bridge comparison query to match by current customer name only:\n  - `CustomerTable` joined to `CustomerVisits1` on `CustomerName`\n  - `CustomerTable` joined to `AlterationItems` on `CustomerName`\n- Fixed bridge popup JSON failures caused by missing helper/bootstrap loading.\n- Fixed visit type persistence so saved `Pick Up` visits do not revert back to `Drop Off` unless a user changes it.\n- Fixed visit save/payment handling so the frontend payment array is respected instead of collapsing into a single payment row.\n- Fixed order totals so deposits plus payments reduce the due balance correctly.\n\n## Reports And Customer Totals\n\n- Fixed `reports.html` ready/customer results so paid totals calculate from live `orders` and `payments` by `visit_id`.\n- Fixed `customer.html` so paid totals are recomputed from live `payments`.\n- Fixed top totals snapshots to prefer live `visits`, `orders`, and `payments`, falling back to `customer_totals` only when no live data exists.\n- Updated `webui/api/totals_snapshot_live.php` so `webui.html` totals are also live-data based.\n- Added stronger visual separation between Today totals and Month-to-Date totals.\n- Added a `Completed` report filter.\n- Added per-record `Completed` badge logic.\n- Deduplicated report cards by `customer_id` to avoid duplicate customer cards such as Tabitha Torres.\n- Linked reports to new import paths:\n  - Morning Import\n  - Imported Today\n  - End Of Day Review\n\n## End Of Day Review\n\n- Added the End Of Day Review module:\n  - `backend/end_of_day_review.php`\n  - `webui/backend/end_of_day_review.php`\n- The module summarizes:\n  - daily closeout totals\n  - appointments needing review\n  - imported rows for the selected day\n  - recent cron/job runs\n  - no-shows\n  - final status mix\n- Linked it from Backend Home and Reports.\n\n## Customer Emails And Reviews\n\n- Expanded the Customer Emails & Reviews workflow:\n  - Send Email\n  - Mark Sent\n  - Ignore\n  - outreach status tracking\n  - delivery/result tracking\n  - change-log entries\n- Updated files:\n  - `backend/cust_email.php`\n  - `backend/cust_email_service.php`\n  - `webui/backend/cust_email.php`\n  - `webui/backend/cust_email_service.php`\n- Updated the history view into an Outreach Log.\n\n## Email Hub Date And Time\n\n- Improved loaded appointment context handling in Email Hub.\n- Added editable appointment fields:\n  - combined appointment date/time\n  - appointment date\n  - appointment time\n- Confirmation drafts and Setmore note updates now merge in the edited appointment fields.\n- Updated files:\n  - `backend/email.php`\n  - `webui/backend/email.php`\n\n## Cron Logging And Notifications\n\n- Added cron run logging through a shared runner.\n- Added recent run history to Cron Manager.\n- Added wrapper-based cron execution:\n  - `backend/jobs/run_cron_job.php`\n  - `webui/backend/jobs/run_cron_job.php`\n- Added shared runtime service:\n  - `backend/jobs/cron_runtime_service.php`\n  - `webui/backend/jobs/cron_runtime_service.php`\n- Updated cron export so scheduled jobs call the wrapper rather than raw commands.\n- Added notification plumbing for:\n  - Telegram\n  - email\n  - SMS/Twilio\n- Added settings support for cron notification email.\n\n## Database Backup Module\n\n- Added a real Database Backup backend module.\n- It snapshots the major five production workflow tables:\n  - `customers`\n  - `visits`\n  - `orders`\n  - `order_items`\n  - `payments`\n- Snapshots go into a separate database, default:\n  - `ellas_alterations_backup`\n- Snapshot table names use suffixes like:\n  - `customers__snapshot_YYYYMMDD_HHMMSS`\n- Snapshot history is logged in:\n  - `backup_database_snapshot_log`\n- Added delete support for backup sets so backup tables do not grow without control.\n- Delete Set drops all backup tables for that snapshot and removes the matching log rows.\n- Updated files:\n  - `backend/backup_database.php`\n  - `backend/backup_database_service.php`\n  - `webui/backend/backup_database.php`\n  - `webui/backend/backup_database_service.php`\n\n## Live Table Manager\n\n- Added a guarded live table manager for direct maintenance of the five workflow tables:\n  - `customers`\n  - `visits`\n  - `orders`\n  - `order_items`\n  - `payments`\n- Supports:\n  - search\n  - add\n  - edit\n  - delete\n- Every save/delete writes to the change log.\n- Added backup warning and quick link to Database Backup.\n- New files:\n  - `backend/live_table_manager.php`\n  - `backend/live_table_manager_service.php`\n  - `webui/backend/live_table_manager.php`\n  - `webui/backend/live_table_manager_service.php`\n- Linked from Backend Home.\n\n## Change Logging\n\n- Expanded visit-save logging so related entities are logged more clearly:\n  - customer\n  - visit\n  - order\n  - alterations/order items\n  - payments\n- Added change logging for backup snapshot create/delete.\n- Added change logging for live table manager save/delete.\n\n## Edwards Mileage Split\n\n- Added an `Edwards Type` field for customer totals:\n  - mileage\n  - maintenance\n  - other\n- Added separate Edwards totals in the drill view.\n- Updated schema installer to include `edwards_type`.\n- Updated:\n  - `backend/customer_totals.php`\n  - `backend/customer_totals_service.php`\n  - `webui/backend/customer_totals.php`\n  - `webui/backend/customer_totals_service.php`\n  - `backend/install_schema.php`\n  - `webui/backend/install_schema.php`\n\n## Setmore And Bridge Freshness\n\n- Added Setmore/bridge freshness module:\n  - `backend/setmore_import_status.php`\n  - `webui/backend/setmore_import_status.php`\n- Shows local import status and bridge table freshness for:\n  - `ellas_access_bridge.CustomerTable`\n  - `ellas_access_bridge.CustomerVisits1`\n  - `ellas_access_bridge.AlterationItems`\n  - `ellas_access_bridge.CustomerTotals`\n- Updated Setmore service so it prefers `app_settings` values before older config-file values.\n\n## Umami\n\n- Diagnosed iframe failure:\n  - Umami sends restrictive frame/CSP headers.\n  - HTTP iframe inside HTTPS backend is blocked as mixed content.\n- Built Ella-specific Umami source from `C:\\code\\umami`.\n- Initially tested a split setup:\n  - app on `192.168.7.202`\n  - database on `192.168.7.206`\n- Found repeated database connection failures on the split app:\n  - `Connection terminated unexpectedly`\n- Moved the Ella Umami app to `192.168.7.206` so app and database run together.\n- Current direct login:\n  - `http://192.168.7.206:3006/login`\n- Shut down the unstable `202` mirror app.\n- Updated backend Umami launcher pages:\n  - `backend/umami.php`\n  - `webui/backend/umami.php`\n- The iframe now targets the planned proxied path:\n  - `/backend/umami-embed/login`\n- Nginx still needs the reverse proxy block for true HTTPS embedding.\n\n## WebUI Dashboard\n\n- Added `Current Speed Dial` to `webui.html` above the Finance card.\n- Changed Speed Dial on `webui.html` into a compact spreadsheet-style table so it uses less vertical space.\n- The section loads live data from:\n  - `/backend/api/speed_dial.php`\n- Updated:\n  - `webui/webui.html`\n\n## Medication Module\n\n- Fixed black/dark button styling in the Medication module by adding explicit theme-safe button styling.\n- Updated:\n  - `backend/medication.php`\n  - `webui/backend/medication.php`\n\n## Backend Navigation\n\n- Renamed Bills Manager to Pay Bills in visible backend UI.\n- Added links/cards for:\n  - Database Backup\n  - Live Table Manager\n  - End Of Day Review\n  - Setmore/Bridge Freshness\n\n## Remaining Follow-Up\n\n- Deploy/sync changed files to the live server.\n- Run the schema installer before using Edwards type live.\n- Test the Backup Delete Set button with a disposable snapshot.\n- Test Live Table Manager carefully after taking a backup snapshot.\n- Add the Nginx `/backend/umami-embed/` reverse proxy block before expecting Umami iframe embedding to work.\n- Verify Twilio credentials end-to-end.\n- Verify Email Hub date/time behavior on real imported emails.\n- Continue improving printable Daily Detail and Daily Appointment Operations layouts if needed.\n","is_text_editable":1,"can_edit_inline":1}
schedule · create
2026-04-10 15:57:31 · admin@ellasalterations.com · /api/appointment_workflow.php
change
appointment_workflow #visit:129050
Context
{"workflow_status":"no_show","visit_id":129050,"order_id":103803}
Before
[]
After
{"workflow_id":"5","source":"visit","source_key":"129050","appointment_date":"2026-04-10","customer_id":"488994","visit_id":"129050","order_id":null,"workflow_status":"no_show","payment_state":null,"payment_method":null,"payment_amount":"0.00","paid_in_advance":"0","report_required":"0","report_attached":"0","report_checked_at":"2026-04-10 15:57:31","provider_notes_text":null,"operator_notes":"{\"Project Details\":\"Wedding dress\",\"When Needed?\":\"ASAP!! Will pay extra\"}","no_show_email_key":"none","created_at":"2026-04-10 15:57:31","updated_at":"2026-04-10 15:57:31"}
documents · save
2026-04-10 13:20:34 · anonymous · /backend/documents.php
change
backend_document #12
Context
{"document_type":"markdown"}
Before
{"backend_document_id":"12","document_type":"upload","title":"Square - Telegram IDS","slug":"square-telegram-ids","summary_text":"Square - Telegram IDS tokens and chat information","content_markdown":null,"content_html":null,"file_name":"SquareTelegramInfo.txt","stored_name":"20260408-160751-b757b5ec.txt","mime_type":"text/plain","file_size_bytes":"1716","storage_path":"/mnt/drive1/customerdb/backend/documents_storage/20260408-160751-b757b5ec.txt","is_deleted":"0","created_at":"2026-04-08 12:07:51","updated_at":"2026-04-08 12:07:51","editor_content":"The good news: everything is already built. No coding needed. Here's what you actually have to do:\r\n\r\nThe 6 steps:\r\nCreate a Square Developer Application at developer.squareup.com (free, ~2 min)\r\n\r\nCollect 3 credentials from the Square Developer dashboard:\r\n\r\nProduction Application ID (sq0idp-...)\r\nProduction Access Token (EAAAl...)\r\nLocation ID (L...)\r\nEnter in Settings page — the app's Settings screen has a Square Payments section. Put in the Access Token and Location ID there.\r\n\r\nFill in /frontend/api/config.php on the server — add all 3 credentials and change 'environment' => 'sandbox' to 'production'\r\n\r\nPair the Terminal device to your Square account/location via the device's own settings screen (if not already done)\r\n\r\nTest — open a visit, click \"Send to Terminal\", select the device, watch the Terminal screen light up\r\n\r\nThe document also includes the complete troubleshooting section for common issues (empty device list, auth failures, sandbox vs production mix-ups) and a quick-reference table showing which credentials go where.\r\n\r\n\r\nSandbox\r\nApplication ID\r\nsandbox-sq0idb-RADNkYqnTwtu2oXD-mJrHw\r\n\r\nAccess Token\r\nEAAAl7SwvhAwj63SPJuFnP0Bb2bbZQYwr_oLdiiXPprm3Yhf59YWfS6sQcTy7EVe\r\n\r\n\r\n\r\nLive\r\nApplication ID\r\nsq0idp-Ug5yEttIeIxgVk_FbfUXHw\r\n\r\nProduction Access Token\r\nEAAAlx3Bg1jm3Xa-qXGcy4BmucPfqmYTRqy1mISS5YeETWonr_4d8xSgnMU1_aQv\r\n\r\n\r\ndefault test account\r\nEAAAl7SwvhAwj63SPJuFnP0Bb2bbZQYwr_oLdiiXPprm3Yhf59YWfS6sQcTy7EVe\r\n\r\nSandbox\r\ntest Locations\r\nDefault Test Account (Main)\r\n1600 Pennsylvania Ave NW\r\nLQ9JH35T5GAYS\r\n7299\r\n\r\nProduction\r\nElla’s Alterations (Main)\r\n6986 Fort King Road\r\n5W9V4C95PWDVQ\r\n7230\r\n\r\n\r\ntelegram\r\n7700366760:AAEeLLs1XvbapLFx7biDSTC2quO8NzjfBac\r\n7990799442\r\n\r\n","is_text_editable":1,"can_edit_inline":1}
After
{"backend_document_id":"12","document_type":"markdown","title":"Change Of Business Hours","slug":"change-of-business-hours","summary_text":"This is all the areas to change for hour change","content_markdown":"# **Hours**\r\nSetmore\r\nNew Customerdb\r\nWebsite\r\nFacebook\r\nNextdoor\r\nYelp","content_html":"<h1>**Hours**</h1>\n<p>Setmore</p>\n<p>New Customerdb</p>\n<p>Website</p>\n<p>Facebook</p>\n<p>Nextdoor</p>\n<p>Yelp</p>","file_name":"SquareTelegramInfo.txt","stored_name":"20260408-160751-b757b5ec.txt","mime_type":"text/plain","file_size_bytes":"1716","storage_path":"/mnt/drive1/customerdb/backend/documents_storage/20260408-160751-b757b5ec.txt","is_deleted":"0","created_at":"2026-04-08 12:07:51","updated_at":"2026-04-10 13:20:34","editor_content":"# **Hours**\r\nSetmore\r\nNew Customerdb\r\nWebsite\r\nFacebook\r\nNextdoor\r\nYelp","is_text_editable":1,"can_edit_inline":1}
backup_database · create
2026-04-10 13:15:27 · anonymous · /backend/backup_database.php
change
backup_snapshot #snapshot_20260410_171516
Context
[]
Before
[]
After
{"target_database":"ellas_alterations_backup","tables":[{"source_table":"customers","backup_table":"customers__snapshot_20260410_171516","row_count":3174},{"source_table":"visits","backup_table":"visits__snapshot_20260410_171516","row_count":979},{"source_table":"orders","backup_table":"orders__snapshot_20260410_171516","row_count":979},{"source_table":"order_items","backup_table":"order_items__snapshot_20260410_171516","row_count":90},{"source_table":"payments","backup_table":"payments__snapshot_20260410_171516","row_count":1260}]}
speed_dial · create
2026-04-10 13:06:33 · anonymous · /backend/speed_dial.php
change
backend_speed_dial #7
Context
[]
Before
[]
After
{"backend_speed_dial_id":"7","link_name":"New Umami","link_url":"http://192.168.7.206:3006/websites/6c928ae4-b073-4202-8b7d-35670995223f","sort_order":"0","is_active":"1","created_at":"2026-04-10 13:06:33","updated_at":"2026-04-10 13:06:33"}
speed_dial · create
2026-04-09 09:48:34 · anonymous · /backend/speed_dial.php?ok=1
change
backend_speed_dial #6
Context
[]
Before
[]
After
{"backend_speed_dial_id":"6","link_name":"Technitium 143","link_url":"http://192.168.7.143:5380/","sort_order":"0","is_active":"1","created_at":"2026-04-09 09:48:34","updated_at":"2026-04-09 09:48:34"}
speed_dial · create
2026-04-09 09:48:17 · anonymous · /backend/speed_dial.php
change
backend_speed_dial #5
Context
[]
Before
[]
After
{"backend_speed_dial_id":"5","link_name":"Technitium 206","link_url":"http://192.168.7.206:5380/","sort_order":"0","is_active":"1","created_at":"2026-04-09 09:48:17","updated_at":"2026-04-09 09:48:17"}
speed_dial · create
2026-04-09 09:47:35 · anonymous · /backend/speed_dial.php
change
backend_speed_dial #4
Context
[]
Before
[]
After
{"backend_speed_dial_id":"4","link_name":"N8N 143","link_url":"http://192.168.7.143:5678/home/workflows","sort_order":"0","is_active":"1","created_at":"2026-04-09 09:47:35","updated_at":"2026-04-09 09:47:35"}
documents · upload
2026-04-08 12:07:51 · anonymous · /backend/documents.php
change
backend_document #12
Context
{"file_name":"SquareTelegramInfo.txt","mime_type":"text/plain"}
Before
[]
After
{"backend_document_id":"12","document_type":"upload","title":"Square - Telegram IDS","slug":"square-telegram-ids","summary_text":"Square - Telegram IDS tokens and chat information","content_markdown":null,"content_html":null,"file_name":"SquareTelegramInfo.txt","stored_name":"20260408-160751-b757b5ec.txt","mime_type":"text/plain","file_size_bytes":"1716","storage_path":"/mnt/drive1/customerdb/backend/documents_storage/20260408-160751-b757b5ec.txt","is_deleted":"0","created_at":"2026-04-08 12:07:51","updated_at":"2026-04-08 12:07:51","editor_content":"The good news: everything is already built. No coding needed. Here's what you actually have to do:\r\n\r\nThe 6 steps:\r\nCreate a Square Developer Application at developer.squareup.com (free, ~2 min)\r\n\r\nCollect 3 credentials from the Square Developer dashboard:\r\n\r\nProduction Application ID (sq0idp-...)\r\nProduction Access Token (EAAAl...)\r\nLocation ID (L...)\r\nEnter in Settings page — the app's Settings screen has a Square Payments section. Put in the Access Token and Location ID there.\r\n\r\nFill in /frontend/api/config.php on the server — add all 3 credentials and change 'environment' => 'sandbox' to 'production'\r\n\r\nPair the Terminal device to your Square account/location via the device's own settings screen (if not already done)\r\n\r\nTest — open a visit, click \"Send to Terminal\", select the device, watch the Terminal screen light up\r\n\r\nThe document also includes the complete troubleshooting section for common issues (empty device list, auth failures, sandbox vs production mix-ups) and a quick-reference table showing which credentials go where.\r\n\r\n\r\nSandbox\r\nApplication ID\r\nsandbox-sq0idb-RADNkYqnTwtu2oXD-mJrHw\r\n\r\nAccess Token\r\nEAAAl7SwvhAwj63SPJuFnP0Bb2bbZQYwr_oLdiiXPprm3Yhf59YWfS6sQcTy7EVe\r\n\r\n\r\n\r\nLive\r\nApplication ID\r\nsq0idp-Ug5yEttIeIxgVk_FbfUXHw\r\n\r\nProduction Access Token\r\nEAAAlx3Bg1jm3Xa-qXGcy4BmucPfqmYTRqy1mISS5YeETWonr_4d8xSgnMU1_aQv\r\n\r\n\r\ndefault test account\r\nEAAAl7SwvhAwj63SPJuFnP0Bb2bbZQYwr_oLdiiXPprm3Yhf59YWfS6sQcTy7EVe\r\n\r\nSandbox\r\ntest Locations\r\nDefault Test Account (Main)\r\n1600 Pennsylvania Ave NW\r\nLQ9JH35T5GAYS\r\n7299\r\n\r\nProduction\r\nElla’s Alterations (Main)\r\n6986 Fort King Road\r\n5W9V4C95PWDVQ\r\n7230\r\n\r\n\r\ntelegram\r\n7700366760:AAEeLLs1XvbapLFx7biDSTC2quO8NzjfBac\r\n7990799442\r\n\r\n","is_text_editable":1,"can_edit_inline":1}
customers.php
2026-04-08 10:16:38 · anonymous · /backend/customers.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"trace":"#0 {main}"}
email.php
2026-04-08 10:16:38 · anonymous · /backend/email.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/email.php","line":6,"trace":"#0 {main}"}
customers.php
2026-04-08 10:16:38 · anonymous · /backend/customers.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"severity_code":2}
email.php
2026-04-08 10:16:38 · anonymous · /backend/email.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/email.php","line":6,"severity_code":2}
customers.php
2026-04-08 10:16:25 · anonymous · /backend/customers.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"trace":"#0 {main}"}
customers.php
2026-04-08 10:16:25 · anonymous · /backend/customers.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"severity_code":2}
email.php
2026-04-08 10:16:25 · anonymous · /backend/email.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/email.php","line":6,"trace":"#0 {main}"}
email.php
2026-04-08 10:16:25 · anonymous · /backend/email.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/email.php","line":6,"severity_code":2}
logs.php
2026-04-08 10:15:26 · anonymous · /backend/logs.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/logs.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/logs.php","line":6,"trace":"#0 {main}"}
logs.php
2026-04-08 10:15:26 · anonymous · /backend/logs.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/logs.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/logs.php","line":6,"severity_code":2}
email.php
2026-04-08 10:15:25 · anonymous · /backend/email.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/email.php","line":6,"trace":"#0 {main}"}
email.php
2026-04-08 10:15:25 · anonymous · /backend/email.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/email.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/email.php","line":6,"severity_code":2}
customers.php
2026-04-08 10:15:25 · anonymous · /backend/customers.php
error
Failed opening required '/mnt/drive1/customerdb/backend/page_helpers.php' (include_path='.:/usr/share/php')
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"type":"Error","file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"trace":"#0 {main}"}
customers.php
2026-04-08 10:15:25 · anonymous · /backend/customers.php
php_error
require_once(/mnt/drive1/customerdb/backend/page_helpers.php): Failed to open stream: No such file or directory
Script: /mnt/drive1/customerdb/webui/backend/customers.php
IP: 192.168.7.29
Context
{"file":"/mnt/drive1/customerdb/backend/customers.php","line":7,"severity_code":2}
← Prev 1 6065 6066 6067 6068 6069 Next →