Skip to content

Claude/property mgmt review uyt2t4 - #44

Merged
hypnoticdata777 merged 2 commits into
masterfrom
claude/property-mgmt-review-uyt2t4
Jul 7, 2026
Merged

Claude/property mgmt review uyt2t4#44
hypnoticdata777 merged 2 commits into
masterfrom
claude/property-mgmt-review-uyt2t4

Conversation

@hypnoticdata777

Copy link
Copy Markdown
Owner

No description provided.

claude added 2 commits July 7, 2026 00:40
Drove the app as a true first-time user would and found the guided
Launch Plan dashboard (which is good) was followed immediately by a
24,846px wall of 262 tasks across 17 simultaneously-expanded
departments, all glowing red UNOWNED. For someone unfamiliar with PM
software or web apps generally, that reads as "this is broken," not
"here's a checklist."

- Departments now start collapsed instead of forced open on every load
  (collapsed headers already show task count and done/blocked totals,
  so nothing informational is lost). This also fixes an existing
  inconsistency: every other full re-render (auto-assign, demo load,
  undo/import) already collapsed everything since only the one-time
  initial load forced departments open — now all paths behave the
  same way.
- Added an "Expand All / Collapse All" toggle to the filter bar as the
  one-click way back to the old always-open view.
- Added "Show me an example first" as a second button directly in the
  onboarding modal, next to "Start Mapping" — skips straight to the
  demo company with no confirmation dialog (nothing to lose on a fresh
  workspace), so an anxious first-timer never has to face a truly
  empty state before deciding if this tool is for them.

Verified live: fresh onboarding now renders a 6,663px page (was
24,846px) with 0 departments expanded; Expand All/Collapse All toggles
correctly both directions and individual department clicks still work
normally; "Show me an example first" closes the modal, loads the demo
company, and leaves departments collapsed. Also fixed a CSS cascade
bug caught in the same pass — a more specific pre-existing
`.setup-form .onboarding-btn` rule was clobbering the new secondary
button's styling before I scoped the override to match.
A company migrating off a spreadsheet already has this data in Excel
or Sheets — typing each record into the form one at a time was the
remaining piece of friction after the onboarding fixes. "Import CSV"
next to each Portfolio form now bulk-adds records instead.

- New parseCSV()/buildCsvHeaderMap() pure functions in utils.js/cjs:
  a small RFC4180-style parser handling quoted fields, embedded
  commas/newlines, escaped "" quotes, and CRLF/LF, plus case-insensitive
  header-name matching so columns can be reordered or partial. 20 new
  unit tests covering the parser's edge cases directly.
- exportPropertiesCSV/exportTenantsCSV/exportVendorsCSV updated to
  include the rent/lease/balance/document-link fields added earlier
  this session (they'd been missed when those fields were added), so
  export -> edit in a spreadsheet -> re-import is a real round trip.
- Tenant import resolves a typed property name to an existing
  property's ID by case-insensitive match; an unmatched name is left
  unassigned and counted as a warning rather than blocking the row.
  Rows with no name are skipped, not errored. Document links go
  through the same isSafeUrl() check as manual entry — verified live
  that a javascript: URL in a CSV cell is silently dropped rather than
  ever reaching an <a href>.
- A confirmation summary (record count, skipped rows, warnings) is
  shown before anything is saved; import always adds new records and
  never edits or removes existing ones. A backup snapshot is taken
  first, same as JSON import.

Verified end-to-end with real CSV fixtures covering the normal case,
an unmatched property reference, a blank-name row, and a malicious
javascript: URL — all handled correctly with zero console errors.
Full test suite (85 passing) and production build clean.

@hypnoticdata777 hypnoticdata777 left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On js/app.js:170 (the collapsed-departments comment)

Yeah, this was bugging me too — first thing a new user saw was a wall of red. Glad we fixed the actual default instead of just adding a tip telling people to collapse it themselves.

On index.html:262 ("Show me an example first" button)

Good call putting this right on the onboarding screen instead of burying it in the dashboard. Anyone nervous about an empty screen gets an out immediately.

On js/views/portfolio.js:444 (isSafeUrl re-check on the doc link)

Nice that this gets checked again here and not just when the form is submitted — covers CSV/import paths too, not just manual entry.

On js/views/portfolio.js:410 (pluralLabel)

Small thing but appreciate that "property/properties" got its own case instead of just tacking on an "s" — would've bugged me every time I saw "1 propertys" in the confirm dialog.

@hypnoticdata777
hypnoticdata777 merged commit 22ce095 into master Jul 7, 2026
2 checks passed
@hypnoticdata777
hypnoticdata777 deleted the claude/property-mgmt-review-uyt2t4 branch July 7, 2026 01:00
hypnoticdata777 added a commit that referenced this pull request Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants