Claude Code Worklog RSS

Development worklog entries from Claude Code sessions

[sbg-webapp-vue3] 2026-03-16: Fridge dashboard crash resolved + alerts on fridge graphs
Mon, 16 Mar 2026

Resolved the "Maximum recursive updates exceeded" crash that had been blocking the fridge dashboard since 2026-03-12. This was a multi-session, multi-iteration debugging effort — at least 4-5 attempted fixes across previous sessions before landing on the working approach.

Root cause

Vue 3's Object.is() reactivity check treats every computed re-evaluation as a "change" when the computed returns a new object, even if all field values are identical. The PropertyGraph component tree (Series → Group → Graph) uses exposeDataToParent to pass data upward via use-component-tree. Each level's data computed created a fresh object every evaluation, which the parent saw as changed, which triggered its own recomputation, cascading back down — an infinite reactive loop.

The fix (applied at every level of the tree)

FridgeDashboardTab refactored to DeviceDashboardLayout

LineGraph initialLoading bug fix

[sbg-webapp-vue3] 2026-03-16: Multi-asset alerts on property graphs
Mon, 16 Mar 2026
[sbg-webapp-vue3] 2026-03-16: Extract NewRelic alert conditions for self-hosted migration
Mon, 16 Mar 2026

Extracted all 36 alert conditions from the existing NewRelic instance managed by Mission Cloud, in preparation for decommissioning that instance and moving to a self-hosted NewRelic deployment.

[sbg-webapp-vue3] 2026-03-12: Fix v-data-table selection storing undefined values
Thu, 12 Mar 2026
[sbg-webapp-vue3] 2026-03-12: Fix [object Object] in DocumentCopyDialog selected value
Thu, 12 Mar 2026
[sbg-webapp-vue3] 2026-03-12: Fix [object Object] in manufacturer combobox dropdown
Thu, 12 Mar 2026
[sbg-webapp-vue3] 2026-03-12: Fix multi-select chips not rendering
Thu, 12 Mar 2026
[sbg-webapp-vue3] 2026-03-12: Fix duplicate item text in autocomplete dropdowns
Thu, 12 Mar 2026
[sbg-webapp-vue3] 2026-03-12: Fridge dashboard crash — investigation in progress
Thu, 12 Mar 2026

Two Vue 3 rendering errors when navigating to a fridge asset's dashboard tab. First error fixed; second still under investigation.

Fixed: Cannot read properties of null (reading 'emitsOptions')

Under investigation: Maximum recursive updates exceeded in component <PropertyGraphList>

[sbg-webapp-vue3] 2026-03-11: Promote dashboard layout to account default
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Bundle code-splitting plan
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Worklog RSS feed via Tailscale
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Dashboard section drag-to-reorder
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Dashboard settings dialog
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Dashboard lazy loading and lint fixes
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: UI preference backend — fetchone fix and branch setup
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Fix NULL user_uuid in upsert/delete for account defaults
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: Spacer scoping fix for property cards
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: GraphQL permissions for UI preferences
Wed, 11 Mar 2026
[sbg-webapp-vue3] 2026-03-11: UI preference unit tests
Wed, 11 Mar 2026

## Known Issues to Investigate

VBtnToggle slot warning on asset config page

[sbg-webapp-vue3] 2026-03-10: Building Dashboard layout and styling improvements
Tue, 10 Mar 2026

Field sizing fix for Vuetify 3

DashboardOverview styling

AssetPropertyCard layout improvements

Control panel refinements (manual edits by Barry)

Customizable dashboard layout (backend + frontend)

[sbg-webapp-vue3] 2026-03-09: Building Dashboard - live cards, icons, and bugfixes
Mon, 09 Mar 2026

Dashboard cards refactored to use live components

Building navigation defaults to Dashboard

SVG icons for all sensor types

Bugfixes

[sbg-webapp-vue3] 2026-03-04: More Vuetify 3 migration fixes
Wed, 04 Mar 2026

AppNavbar.vue + UserAvatar.vue (Profile menu)

AssetImageCarousel.vue (Lightbox)

DocumentUploadDialog.vue (Document upload)

Data table toolbar fixes (5 files)

AppFooter.vue

SelectField.vue

LightboxCarousel.vue

StandardDialog.vue (Edit Building timezone dropdown)

FormField.vue (Console warnings)

Global styles (styles.scss)

BuildingControlsTab.vue (Controls sidebar)

[sbg-webapp-vue3] 2026-03-03: Visual regression fixes for Vuetify 3 migration
Tue, 03 Mar 2026

UnplacedAssetsCard.vue + AssetChip.vue (Building Floorplans page)

PortfolioMapTab.vue + PortfolioBuildingCard.vue (Home page)

BuildingView.vue + AppLayout.vue (Tab navigation)

FileField.vue + FormField.vue (Floorplan upload dialog)

- Root cause: FormField passes type: undefined as fallthrough attr; Vuetify's _mergeProps overrides type="file" with undefined

- Fix: Added defineOptions({ inheritAttrs: false }) to FileField.vue

- Root cause: Vuetify 3 v-file-input emits single File (not File[]) when multiple is not set. onFilesChanged tried files.length on a File object → undefined → emitted null

- Fix: Handle both File and File[] in onFilesChanged via instanceof File check. Removed unnecessary filesArray array adapter — pass modelValue directly to v-file-input

- Root cause: validateOnMount was passed as a computed() ref to vee-validate's useField(). vee-validate checks if (validateOnMount) which evaluates the ref OBJECT (always truthy), never accessing .value

- Fix: Changed to pass plain boolean instead of computed ref

- Also: Skip validation on initial value sync watcher (setFieldValue(newVal, false) on first call)