All notable changes to this project will be documented in this file. The format is loosely based on Keep a Changelog.
(Note: it our intention to improve our release process going forward by using Semantic Versioning.)
-
Fixed:
-
Fixed:
- Incorrect listing status (#2015) (Dominik Barcikowski)
-
Added:
- Support PDF uploads or webpage links for building selection criteria (#1893) (Jared White)
- Show confirmation modal when publishing listings (#1772) (Jared White)
- Split Listing form up into two main tabs (#1644) (Jared White)
- Allow lottery results to be uploaded for a closed listing (#1568) (Jared White)
- Update buttons / pages visibility depending on a user role (#1609) (Dominik Barcikowski)
- Terms page checkbox text changed to blue (#1645) (Emily Jablonski)
- Add FCFS and Lottery section to listing management (#1485) (Emily Jablonski)
- Allow application status to show both FCFS and a due date (#1680) (Emily Jablonski)
- Add new /users page with table (#1679) (Dominik Barcikowski)
- Add new /unauthorized page (#1763) (Dominik Barcikowski)
- Adds ability to create AMI chart overrides in listings management and refactors the unit form (#1706) (Emily Jablonski)
- Add the "Add User" form (#1857) (Dominik Barcikowski)
- Add a new account confirmation page (#1654) (Dominik Barcikowski)
-
Fixed:
- Responsive Tailwind grid classes and nested drawer overlays now work (#1881) (Jared White)
- Update Listings component to sort listings by status (#1585)
- Preferences ordinal bug in listings management (#1641) (Emily Jablonski)
- Updates EnumListingReviewOrderType to be ListingReviewOrder (#1679)
- Routing to individual application (#1715) (Emily Jablonski)
- Application due date label in the listings table (#1764) (Dominik Barcikowski)
- Update textarea character limit (#1751) (Dominik Barcikowski)
- Update unit availability field (#1767) (Dominik Barcikowski)
- Update select width (#1765) (Dominik Barcikowski)
- Reset page to 1 on limit change (#1809) (Dominik Barcikowski)
- Update public and partners to support preferred unit ids (#1774) (Dominik Barcikowski)
- Update select options (#1768) (Dominik Barcikowski)
- Can toggle application pick up and drop off addresses off (#1954) (Emily Jablonski)
- Listings management AMI charts populate after Save and New on units (#1952) (Emily Jablonski)
- Brings in updates from Alameda which fixes some issues with preference handling and lisitngs getStaticProps in production (#1958)
- Preview can load without building address (#1960) (Emily Jablonski)
- Page now scrolls after closing modal (#1962) (Emily Jablonski)
- Copy & New and Save & New in LM will no longer create duplicate units (#1963) (Emily Jablonski)
-
Changed:
- Update text for preferred unit types and terms (#1934) (Jared White)
- Upgrade the public and partners sites to Next v11 and React v17 (#1793) (Jared White)
- Breaking Change
- The main changes are around removing the try catch blocks so errors prevent the build from finishing (should cover #1618) and the export script was removed, since it isn't valid with fallback: true. So we'll have to change the build command to replace
export
withstart
. (#1861)- ** Breaking Change**: if your implementation relies on the export script, you'll need to use the start script, especially if you want to take advantage of the "fallback" setting for getStaticPaths
- Update textarea character limit and set default to 1000 (#1906) (Dominik Barcikowski)
-
Added:
- Add ResponsiveTable for pricing
- Ability to have multiple statuses under the ImageCard (#1700) (Emily Jablonski)
- Breaking Change: Removed three props (appStatus, appStatusContent, and appStatusSubContent) in favor of an array that contains that data - will need to transition any status information to the new array format
- Add Heading component and numbered-list styles (#1405) (Marcin Jedras)
- Re-factor ResponsiveTable (#1937) (Emily Jablonski)
- Add subNote to some form fields (#1924) (Marcin Jedras)
-
Fixed:
- StandardTable styling bug (#1632) (Emily Jablonski)
- More robust Features section for public listing view (#1688)
- A11Y issues with the image tint in ImageCard (#1964) (Emily Jablonski)
- Visual bugs with SiteHeader (#2010) (Emily Jablonski)
- HouseholdSizeField bug when householdSizeMax is 0 (#1991) (Yazeed)
-
Changed:
- Upgraded Tailwind to v2, PostCSS to v8, and Storybook to 6.3 ([#1805])(bloom-housing#1805)) (Jared White)
- Upgraded React to v17
- StandardTable new optional prop to translate cell content (#1707) (Emily Jablonski)
- Removed business logic from ListingsList component (#1752) (Emily Jablonski)
- Breaking Change: Removed listings prop and replaced with children and a listingsCount prop
- Removed business logic from HouseholdSizeField component (#1724) (Emily Jablonski)
- Breaking Change: Removed listing prop and replaced with a set not dependent on data model
- Removed business logic from HousingCounselor component (#1717) (Emily Jablonski)
- Breaking Change: Removed existing prop and replaced with a set not dependent on data model
- Removed business logic from ListingsList component (#1773) (Emily Jablonski)
- Breaking Change: Removed ListingsList component and replaced with more generalizable ListingCard component which represents the image and table for one listing
- Remove formatIncome helper from ui-components (#1744) (Emily Jablonski)
- Breaking Change
- Removed business logic from HouseholdMemberForm component (#1722) (Emily Jablonski)
- Breaking Change: Removed existing props except for editMode and replaced with a set not dependent on data model
- Removed business logic from Hero component (#1816) (Emily Jablonski)
- Breaking Change: Removed listings prop and replaced with allApplicationsClosed prop
- Removed business logic from AppStatusItem component (#1714) (Emily Jablonski)
- Breaking Change: Removed both existing props, replaced with a set not dependent on data model, and renamed component to StatusItem
- Removed business logic from AdditionalFees component (#1844) (Emily Jablonski)
- Breaking Change: Removed listing prop and replaced with a set not dependent on data model
- Removed business logic from Apply, Waitlist components (#1819) (Emily Jablonski)
- Breaking Change: Removed existing props from both components and replaced with a set not dependent on data model, split "Apply" component into two new components GetApplication and Submit Application, removed ApplicationSection components
- Allow for a style-able subheader to be added to ListingCard (#1880) (Emily Jablonski)
- Breaking Change: Moved tableHeader prop into new tableHeaderProps object
- Re-wrote SiteHeader to remove Bulma dependency and bugs (#1885) (Emily Jablonski)
- Breaking Change: SiteHeader has a new prop set, including some props to toggle new visual features
- Set a max width for hero buttons when there are secondary buttons (#2002) (Andrea Egan)
-
Added:
- Add POST /users/invite endpoint and extend PUT /users/confirm with optional password change (#1801)
- Add
isPartner
filter to GET /user/list endpoint (#1830) - Changes to applications done through
PUT /applications/:id
are now reflected in AFS (#1810) - Add logic for connecting newly created user account to existing applications (matching based on applicant.emailAddress) (#1807)
- ** Breaking Change**: Add
jurisdiction
relation toReservedCommunitType
entity (#1889) - Added new userProfile resource and endpoint
PUT /userProfile/:id
suited specifically for users updating their own profiles (#1862) - Filtering, pagination, and tests for listings endpoint (Parts of Detroit Team #18, #133, #180, #257, #264, #271) #1578
- Units summary table (#1607)
- Add support for comma-separated lists to filters, ensure comparison is valid (Detroit Team #356, #1634)
- Add bedrooms/unit size filter to backend (Detroit Team #368, #1660)
- Adds "view" parameter and "views" to specify selects and joins #1626
- Adds
roles
property to `UserDto #1575 - Adds UnitAmiChartOverride entity and implements ami chart overriding at Unit level #1575
- Adds
authz.e2e-spec.ts
test cover for preventing user from voluntarily changing his associatedroles
object #1575 - Adds Jurisdictions to users, listings and translations. The migration script assigns the first alpha sorted jurisdiction to users, so this piece may need to be changed for Detroit, if they have more than Detroit in their DB. #1776
- Added the optional jurisdiction setting notificationsSignUpURL, which now appears on the home page if set (#1802) (Emily Jablonski)
- Adds Listings managment validations required for publishing a Listing #1850 (Michał Plebański & Emily Jablonski)
- Add UnitCreateDto model changes to prevent form submission from creating UnitType, UnitRentType and AccessibilityType from creating a new DB row on each submission. (#1956)
- Adds Program entity to Listing (Many to Many) and to Jurisdiction (Many to many) and seed programs (1968)
- Add Language to Jurisidiction entity (#1998)
- Add
DELETE /user/:id
andGET /user/:id
endpoints and add leasingAgentInListings to UserUpdateDto
-
Changed:
- ** Breaking Change**: Endpoint
PUT /user/:id
is admin only now, because it allows edits over entireuser
table (#1862) - Changes to applications done through
PUT /applications/:id
are now reflected in AFS (#1810) - Adds confirmationCode to applications table (#1854)
- Add various backend filters (#1884)
- Adds jurisdiction relation to AmiChart entity (#1905)
- Updated listing's importer to handle latest unit and priority types changes (#1584) (Marcin Jedras)
- Sets cache manager to use Redis #1589
- removed roles for public users and assigned a "partner" role for leasing agents(#1628)
- Updates redis reset call to flush all keys
- Updated listing's importer to handle latest reserved community type changes (#1667) (Emily Jablonski)
- Change whatToExpect to be a string instead of a json blob, make it editable in listings management (#1681) (Emily Jablonski)
- Updates listing post/put/delete endpoints to call cacheManager.reset instead of clearing and maintaining a growing set of keys. Updates transformUnits to check for units and length before continuing (#1698)
- Allow for unit sets to have multiple ami charts (#1678) (Emily Jablonski)
- UnitDto now only contains an AMI chart ID instead of the entire object AmiChart. AmiCharts must now be fetched separately from
/amiCharts
(#1575 GET /listings
filters query param has been changed to support a querystring serialized array of filters, it's a breaking change because comparison property can no longer be an array. Also a property ordering problem has been resolved. Now the strict requirement for every client using the API is to useqs
serialization format for query params. (#1782)amiPercentage
field on UnitsSummary is migrated to an integer instead of a string. ((#1797)[bloom-housing#1797])- Change preferredUnit property to store unitType ids (#1787) (Sean Albert)
- Trying to confirm already confirmed user now throws account already confirmed error instead of tokenMissing (#1971)
- Updates CSV Builder service to work with any data set, predefined or not. (#1955)
- Remove field applicationAddress (#2009) (Emily Jablonski)
- Introduce N-M Listing-Preference relation through a self managed (not TypeORM managed) intermediate entity ListingPreference, which now holds ordinal and page. Remove Preference entity entirely with an appropriate DB migration. (1947)
- ** Breaking Change**: Endpoint
-
Fixed:
- Added checks for property in listing.dto transforms
- Display all listings on partners with
limit=all
(#1635) (Marcin Jędras) - Seed data should create unique application methods (#1662) (Emily Jablonski)
- fixes issue with unexposed user roles ((#1627)[bloom-housing#1627]))
- updates translations to check for values before sending to service ((#1699)[bloom-housing#1699])
- Fixes flakiness in authz.e2e-spec.ts related to logged in user trying to GET /applications which did not belong to him (sorting of UUID is not deterministic, so the user should fetch by specying a query param userId = self) #1575
- Fixed ListingsService.retrieve
view
query param not being optional in autogenerated client (it should be) #1575 - updated DTOs to omit entities and use DTOs for application-method, user-roles, user, listing and units-summary (#1679)
- makes application flagged sets module take applications edits into account (e.g. a leasing agent changes something in the application) (#1810)
- Listings with multiple AMI charts show a max value instead of a range (#1925) (Emily Jablonski)
- fix AFS totalFlagged missing in swagger documentation
- lower cases email during user creation, across saved users, and where that now lower cased email is compared to a possibly non-lower cased email (#1972) (Yazeed)
-
Added:
- A new
shared-helpers
package for consolidating functions and constants between the Next.js sites and possibly the backend (#1911) (Jared White) Breaking Change: Various constants were extracted out of theui-components
package
- A new
-
Updated:
- Updates so leasing agent can access listing detail on frontend and removes applicationCount logic on backend and the ability for a leasing agent to create a new listing #1627
-
Fixed:
- Prettier action issues (#1826) (Emily Jablonski)
- Issues with the Apply section and different application types. This includes updates to the ApplicationTypes section. This also renames
openDateState
toopenInFuture
, which is more descriptive and pulls logic out of UI-Components. This also has a fix for the re-submit issues on the listing form. (#1853) - Breaking Change: LeasingAgent no longer uses openDateState to determine if it should render. So if you need LeasingAgent to conditionally render, you have to add that check to where you call it.
- Added:
- Debug flags for public and partner site (Detroit Team #195, #1519)
-
Added:
- /applicationMethods and /paperApplications endpoints and corresponding DB schema
- Added "bhaFormat" to CSV exporter (#1640) (Emily Jablonski)
-
Fixed:
-
Changed:
- User module has been removed and incorporated into Auth module
- convert listing events jsonb column to separate listing_events table
- convert listing address jsonb columns to separate address tables
- removed unused inverse relations from entities
- recreated foreign keys constraints for
application_flagged_set_applications_applications
,listings_leasing_agents_user_accounts
,property_group_properties_property
and add missingNOT NULL
migration for listing name column - add google translations for GET listing API call (#1590) (Marcin Jędras)
- Listing applicationMethods jsonb column has been converted to a separate table
-
Added:
- ability for an admin to confirm users by
/users
POST/PUT methods
- ability for an admin to confirm users by
-
Fixed:
- refactors listing form submit to fix double submit issue (#1501)
-
Added:
- A notice bar to the preview page of a listing (#1532) (Jared White)
- Photo upload and preview to the Partner Listing screens (#1491) (Jared White)
- AG-grid sorting now is connected with the backend sorting (#1083) (Michał Plebański)
- Add Preferences section to listing management (#1564) (Emily Jablonski)
- Add Community Type to listing management (#1540) (Emily Jablonski)
-
Changed:
- Remove coming soon text, use application open text instead (#1602) (Emily Jablonski)
-
Fixed:
-
Added:
-
Added:
-
Fixed:
- Poor TypeORM performance in
/applications
endpoint (#1131) (Michał Plebański) - POST
/users
endpoint response from StatusDTO to UserBasicDto (Michał Plebański) - Replaces
toPrecision
function onunits-transformations
totoFixed
(#1304) (Marcin Jędras) - "totalFlagged" computation and a race condition on Application insertion (#1366)
- Fix units availability (#1397)
- Poor TypeORM performance in
-
Added:
- Added "closed" to ListingStatus enum
- Added Transform to ListingStatus field to return closed if applicationDueDate is in the past
- Added "ohaFormat" to CSV exporter (includes OHA and HOPWA preferences) (#1292) (Michał Plebański)
/assets
endpoints (create and createPresignedUploadMetadata)- "noEmailConfirmation" query param to
POST /users
endpoint - POST
/users
endpoint response from StatusDTO to UserBasicDto (Michał Plebański) /jurisdictions
endpoint and DB schema (#1391)/reservedCommunityTypes
endpoint and DB schema (#1395)- list and retrieve methods to
/assets
endpoint image
field tolisting
model (#1413)- reserved_community_type table seeds (
senior
andspecialNeeds
) - add applicationDueDate check on submission (#1409)
- list and retrieve methods to
/assets
endpoint - added result_id to Listing model, allow creating
image
andresult
through listing endpoint (cascade) - added resultLink, isWaitlistOpen and waitlistOpenSpots to Listing model
- Added applicationPickUpAddressType and applicationDropOffAddressType columns to Listing model (#1425) (Michał Plebański)
-
Changed:
- Cleanup seed data generation and add more variety (#1312) Emily Jablonski
- Moved Property model to Listing (bloom-housing#1328)
- removed eager relation to listing from User model
-
Added:
- Adds filtering capability to listings list and implements on public site (#1351)
- Listings Management pieces added to Parnter's app, including add and detail pages
- add accessible at
/listings/add
- detail page accessible at
/listings/[id]
- add accessible at
- New unit summary breaks down units by both type and rent (#1253) (Emily Jablonski)
- Custom exclusive preference options (#1272) (Emily Jablonski)
- Optionally hide preferences from Listing page (#1280) (Emily Jablonski)
- Add ability for site header logo to have custom widths, image only (#1346) (Emily Jablonski)
- Created duplicates pages (#1132) (Dominik Barcikowski)
- Add Additional Details section to listing management (#1338) (Emily Jablonski)
- Add Additional Eligibility section to listing management (#1374) (Emily Jablonski)
- Add Leasing Agent section to listing management (#1349) (Emily Jablonski)
- Add Additional Fees section to listing management (#1377) (Emily Jablonski)
- Add Building Details and Intro section to listing management (#1420) (Emily Jablonski)
- Add Building Features section to listing management (#1412) (Emily Jablonski)
- Adds units to listings (#1448)
- Add Rankings and Results section to listing management (#1433) (Emily Jablonski)
- Add Application Address section to listing management (#1425) (Emily Jablonski)
- Add Application Dates section to listing management (#1432) (Emily Jablonski)
- Adds cache revalidation to frontend public app
- Add FCFS and Lottery section to listing management (#1485) (Emily Jablonski)
-
Fixed:
- Save application language in the choose-language step (#1234) (Dominik Barcikowski)
- Fixed broken Cypress tests on the CircleCI (#1262) (Dominik Barcikowski)
- Fix repetition of select text on preferences (#1270) (Emily Jablonski)
- Fix aplication submission and broken test (#1270) (Dominik Barcikowski)
- Fix broken application search in Partners (#1301) (Dominik Barcikowski)
- Fix multiple unit rows in summaries, sorting issues (#1306) (Emily Jablonski)
- Fix partners application submission (#1340) (Dominik Barcikowski)
- Hide Additional Eligibility header if no sections present (#1457) (Emily Jablonski)
- Listings Management MVP visual QA round (#1463) (Emily Jablonski)
-
Changed:
-
Added:
- Dropzone-style file upload component (#1437) (Jared White)
- Table image thumbnails component along with minimal left/right flush table styles (#1339) (Jared White)
- Tabs component based on React Tabs (#1305) (Jared White)
- Note: the previous
Tab
child ofTabNav
has been renamed toTabNavItem
- Note: the previous
- Icon support for standard variants of Button component (#1268) (Jared White)
- Generic date component (#1392) (Emily Jablonski)
-
Fixed:
-
Added:
-
Changed:
- Upgrade the public + partners apps to Next v10 along with new architectural patterns #1087)
- Breaking Change: you will need to update any downstream app to Next 10 and provide a
NavigationContext
in order for theui-components
package to work. Also all handling of locales and i18n routing has been refactored to leverage Next 10. - If hosting on Netlify, make sure you've installed the Next plugin for SSR routes after upgrading to Next 10.
- The
ui-components
package no longer has a dependency on Next and can be imported into generalized React codebases.
- Breaking Change: you will need to update any downstream app to Next 10 and provide a
- Dynamic preferences (switch from hardcoded preference options) (#1167) (dominikx96)
- Update license (#1189) (Emily Jablonski)
- Bump ssri from 6.0.1 to 6.0.2 (#1194) (dependabot)
- Upgrade the public + partners apps to Next v10 along with new architectural patterns #1087)
-
Fixed:
- StandardTable translation issue and BMR display (#1203) (Emily Jablonski)
-
Added:
- Missing resident state to CSV formatters (#1223) (Michał Plebański)
- ENV variables to control rate limits (#1155) (Bartłomiej Ponikiewski)
- Adjust via THROTTLE_TTL and THROTTLE_LIMIT
- User language (#1181) (Michał Plebański)
- ApiProperty to files that have no .dto.ts suffixes (#1180) (Michał Plebański)
- Get AFS by id and pagination meta for totalFlagged (#1137) (Michał Plebański)
- Translations module and county codes for frontend (#1145) (Michał Plebański)
-
Changed:
-
Added:
-
Fixed:
- Add spinner to the Application Form terms page upon submit (#1225) (Jared White)
- The loading overlay in ui-components was updated to use the same spinner as the button component
- Birthdate localizing issues (#1202)
- Preferences translations in Partners (#1206) (dominikx96)
- Referral application section on mobile (#1201)
- Use correct listingId when redirecting from Sign In (#1147) (Jared White)
- Flaky cypress tests (#1115) (Emily Jablonski)
- 404 issues in my application and settings (#1164) (Emily Jablonski)
- Add spinner to the Application Form terms page upon submit (#1225) (Jared White)
-
Added:
-
Changed:
- Use translated strings on responsive table headers (#1128) (Jared White)
-
Added:
- LICENSE.txt for AGPL (#1100) (Emily Jablonski)
-
Changed:
-
Added:
- Applications rate limit (#1103) (Bartłomiej Ponikiewski)
- Add 3rd listing with 0 preferences (#1124) (Michał Plebański)
- Better support for applications search (#1092) (Bartłomiej Ponikiewski)
- Missing address and workAddress as joins to application householdMembers (#1107) (Bartłomiej Ponikiewski)
- includeDemographics query param to CSV exporter (#1031) (Michał Plebański)
-
Changed:
-
Removed:
- Redundant residence zip in CSV exporter (#1056) (Michał Plebański)
-
Fixed:
- Add exception handling in _encodeDoubleQuotes (#1141) (Michał Plebański)
- Cypress-node missing redis related envs (#1136) (Michał Plebański)
- User service making use of env.SECRET instead of env.APP_SECRET (#1108) (Michał Plebański)
- Order of application list (#1063) (Bartłomiej Ponikiewski)
- MaxLength validations for alternateContact (#1057) (Michał Plebański)
-
Added:
- Clean up aside block styling and add missing mobile blocks (#1140) (Jared White)
- Autofill applications for signed in users (#1111) (Jared White)
- Account settings (#1106) (Emily Jablonski)
- My Applications loading state (#1121) (Emily Jablonski)
- Missing translation for account audit (#1116) (Marcin Jędras)
- My Applications screen (#1079) (Emily Jablonski)
- CSV export error message (#1104) (dominikx96)
- Loading state for csv export (#1060) (dominikx96)
- Filters to the ada and preferences (#1039) (dominikx96)
-
Changed:
-
Fixed:
- Broken Cypress tests on master (#1138) (Emily Jablonski)
- Message after account confirmation (#1122) (Marcin Jędras)
- useRouter for confirmation (#1114) (Marcin Jędras)
- Household maximum income translations on mobile view (#1091) (Netra Badami)
- Annual and monthly income values in the applications table (#1069) (dominikx96)
- Fixes to date format, allow markup for street, add lottery time (#1064) (Marcin Jędras)
-
Added:
-
Changed:
-
Removed:
-
Fixed:
- Add missing string (#1143) (Emily Jablonski)