Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
700 commits
Select commit Hold shift + click to select a range
2e45d04
Merge branch 'develop' into custom/HIO687AS
MrYuion May 26, 2026
9b0e015
Merge branch 'develop' into custom/HIO687AS
MrYuion May 26, 2026
52bde24
Merge branch 'develop' into custom/HIO687AS
MrYuion May 27, 2026
d183dfd
Merge branch 'develop' into custom/HIO687AS
MrYuion May 28, 2026
921dd3a
Merge branch 'develop' into custom/HIO687AS
MrYuion May 29, 2026
06a7724
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 2, 2026
037cafa
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 3, 2026
ae4a192
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 4, 2026
f3d1099
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 6, 2026
1bc3394
fix(workplace): restore edited room selection PPT-2528
MrYuion Jun 6, 2026
4bc0e56
fix(workplace): complete nearby desk bookings PPT-2527
MrYuion Jun 6, 2026
5ee5795
fix(events): preserve monthly recurrence metadata PPT-2526
MrYuion Jun 6, 2026
225faac
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 9, 2026
1ff30c1
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 9, 2026
357605a
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 9, 2026
9661b28
chore: fix build error
MrYuion Jun 9, 2026
2ab3fca
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 10, 2026
6c207dc
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 10, 2026
90dca97
fix(auth): preserve mobile auth cookies
MrYuion Jun 10, 2026
e37b86f
chore: update README
MrYuion Jun 10, 2026
7e6c1e1
feat(visitor-kiosk): add virtual keyboard support
MrYuion Jun 10, 2026
ea166b2
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 10, 2026
7b1756e
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 11, 2026
eb432f0
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 11, 2026
40e01be
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 11, 2026
98ad5bd
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 11, 2026
5d9d280
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
a2da40c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
d4a757f
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
75e388a
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
ede939f
feat(components): add debug mode to dynamic map
MrYuion Jun 12, 2026
8fa32c3
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
4cd4c2a
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
ef81f6a
feat(components): add colour swatches and src truncation to map debug…
MrYuion Jun 12, 2026
1187e98
fix(workplace): clear plate number validators on desk form
MrYuion Jun 12, 2026
fec670f
fix(workplace): fix plate number validator propagating to other types
MrYuion Jun 12, 2026
072d481
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
5b3fb45
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
435d927
chore(workplace): tweak styling for standalone location block on park…
MrYuion Jun 12, 2026
34a47e2
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 12, 2026
2883368
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 13, 2026
2debc72
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 13, 2026
bcde612
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 13, 2026
a38bf5b
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 16, 2026
9431b0e
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 16, 2026
f4d3377
fix(workplace): fix landing desk calendar not applying selected date …
MrYuion Jun 16, 2026
6859e50
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 16, 2026
28f1610
e2e(concierge): add user stories and tests for each
MrYuion Jun 16, 2026
95a3bfc
e2e(workplace): add user stories and tests for each
MrYuion Jun 16, 2026
043082d
test(concierge): cover expanded user stories
MrYuion Jun 16, 2026
93a6518
test(workplace): cover expanded user stories
MrYuion Jun 16, 2026
75f2b94
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 16, 2026
c985d96
chore: minor fixes
MrYuion Jun 16, 2026
ed0eac2
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 17, 2026
3d4a7e8
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 17, 2026
e201adf
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 17, 2026
cc6e26e
chore: tweak logic for initialising active building
MrYuion Jun 17, 2026
41680a6
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 17, 2026
c1b5c93
fix(workplace): preserve parking request shift duration
MrYuion Jun 17, 2026
d9e2c65
fix(workplace): fix parking space display on schedule views
MrYuion Jun 17, 2026
aebc134
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 17, 2026
2308791
refactor(workplace): remove ChangeDetectionStrategy where appropriate
MrYuion Jun 17, 2026
8f4d593
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 18, 2026
469740a
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 18, 2026
fb84e03
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
173a216
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
02438c5
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
9962264
fix(workplace): limit desk week booking navigation
MrYuion Jun 22, 2026
0b1ab4c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
e2806d1
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
3f1be84
fix(workplace): tweak check for booking type
MrYuion Jun 22, 2026
af6bbf9
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 22, 2026
4e94657
fix(concierge): fix parking request form modal
MrYuion Jun 22, 2026
968f5ea
chore(workplace): tweaks to displaying parking resource
MrYuion Jun 22, 2026
4bb1c8b
fix(workplace): add way to select dates for schedule list on mobile
MrYuion Jun 22, 2026
f6dea44
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 23, 2026
2d85c5d
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 23, 2026
3ffcc75
fix(events): return saved booking after post PPT-2462
MrYuion Jun 23, 2026
d186b4c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
78caeb8
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
a1a3f20
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
de8b419
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
721dc7f
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
3ccc42c
fix(workplace): disable delete action for ended bookings on landing
MrYuion Jun 24, 2026
ffb9ef7
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
d5cd157
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
f02039f
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
9c8c6d3
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
2d9b86d
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 24, 2026
ed8e4a3
fix(bookings): combine booked with clashes for availability
MrYuion Jun 24, 2026
247048c
Merge pull request #470 from PlaceOS/custom/HIO687AS
w-le Jun 24, 2026
663571c
fix(workplace): tweak level selection when on map view
MrYuion Jun 24, 2026
2d7d7b4
fix(workplace): fix z-indexing of layout items on mobile
MrYuion Jun 24, 2026
3dd0bc8
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 25, 2026
90736ee
chore(workplace): tweak styles for parking request form on mobile
MrYuion Jun 25, 2026
8765e1f
fix(concierge): allow searching parking bookings by plate number
MrYuion Jun 25, 2026
63659cc
fix(concierge): add default sort by bay number on parking bookings
MrYuion Jun 25, 2026
7a64dc6
fix(concierge): add ability to sort parking bookings by plate number
MrYuion Jun 25, 2026
2d33140
fix(workplace): prevent deleting early-ended bookings from home page
MrYuion Jun 26, 2026
4052f92
feat(concierge): add user groups column to parking bookings
MrYuion Jun 29, 2026
ec141a1
fix(workplace): fix initialising event form state on meeting form
MrYuion Jun 29, 2026
3bea669
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 29, 2026
8658bbc
chore(concierge): increase table min-size
MrYuion Jun 29, 2026
f50b9e1
fix(concierge): fix sorting of parking bay numbers
MrYuion Jun 29, 2026
6004fbc
chore: tweak sort indicators on tables
MrYuion Jun 29, 2026
1064042
refactor(concierge): update parking report graphs and metrics to be m…
MrYuion Jun 29, 2026
ad1c207
chore(concierge): reorder parking report tables
MrYuion Jun 29, 2026
52fbfad
fix(workplace): tweak desk select mobile filter overlay
MrYuion Jun 29, 2026
f0914f5
feat(workplace): add ability to change room capacity option on select…
MrYuion Jun 29, 2026
fdc0fae
chore(workplace): minor style tweaks to parking request form
MrYuion Jun 29, 2026
48a7ac3
fix(concierge): tweak handling of bay number displays
MrYuion Jun 29, 2026
5bc2148
feat(concierge): add checked in time column to parking report bookings
MrYuion Jun 29, 2026
5336fe8
feat(workplace): add any capacity option to meeting flow form
MrYuion Jun 29, 2026
48db097
Prod release 29/06/26 (#472)
w-le Jun 29, 2026
08114c1
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 30, 2026
576c63e
Merge branch 'custom/HIO687AS-prod' into custom/HIO687AS
w-le Jun 30, 2026
3d28b87
Prod release 30/06/26 (#473)
w-le Jun 30, 2026
620a75b
fix(bookings): restrict booking extension data
MrYuion Jun 30, 2026
517dbea
Merge branch 'develop' into custom/HIO687AS
MrYuion Jun 30, 2026
e600b59
fix(bookings): generalize reserved-resource booking restriction
MrYuion Jul 1, 2026
35d5f1c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 1, 2026
7e6d4fa
feat(workplace): add bookings for others schedule filter
MrYuion Jul 1, 2026
3ccc37e
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 1, 2026
e0d240d
fix(events): keep submitted meeting success details
MrYuion Jul 1, 2026
920100b
fix(events): preserve selected meeting booking time
MrYuion Jul 1, 2026
d1dade8
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 1, 2026
749023f
Merge branch 'custom/HIO687AS-prod' into custom/HIO687AS
w-le Jul 1, 2026
8f12f07
fix(bookings): restore booking form save payload filtering
MrYuion Jul 1, 2026
f0e9ff2
chore(bookings): fix tests
MrYuion Jul 1, 2026
fb0f5e1
fix(concierge): fix parking report checked in time
MrYuion Jul 2, 2026
01c3348
fix(assets): update parking space pipe to return unallocated for unal…
MrYuion Jul 2, 2026
64b9007
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 2, 2026
aa39f65
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 2, 2026
20f9f9c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 4, 2026
025e841
chore(workplace): remove debug console.log from meeting space list
MrYuion Jul 4, 2026
d68f7e6
test(workplace): cover remaining untested components and services
MrYuion Jul 4, 2026
0ffa238
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 6, 2026
b276430
chore: add created_at field to booking model
MrYuion Jul 6, 2026
a46ad55
feat(concierge): show parking booking request time
MrYuion Jul 6, 2026
c4f5699
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 6, 2026
b30667c
fix(concierge): normalise parking CSV imports
MrYuion Jul 7, 2026
72a12b5
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 8, 2026
207639f
test: fix Angular unit test suite
MrYuion Jul 8, 2026
02be6d4
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 8, 2026
be9b4f3
fix(org): fallback to individual requests for settings metadata
MrYuion Jul 8, 2026
6a57422
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 8, 2026
d394f5c
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 9, 2026
4049a57
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 9, 2026
6cd99ff
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 9, 2026
3ceaa31
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 10, 2026
f3c85df
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 13, 2026
d778180
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 13, 2026
23cb32b
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 13, 2026
5c5aca9
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 13, 2026
dfed4df
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 16, 2026
dbdb776
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 16, 2026
36d633b
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 17, 2026
66a34e9
chore(concierge): tweak deleted parking status
MrYuion Jul 17, 2026
d2ea5a5
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 17, 2026
da8c510
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 17, 2026
d6dcd18
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 20, 2026
3fab940
fix(concierge): sort parking user groups
MrYuion Jul 20, 2026
0014c81
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 20, 2026
e268bc3
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 20, 2026
81e26ac
fix(workplace): restore desk map selection (PROJ-1950)
MrYuion Jul 20, 2026
e3b8a6a
fix(bookings): fix signal error for desk select modal map
MrYuion Jul 20, 2026
bdd2afb
feat(concierge): show parking space restrictions
MrYuion Jul 21, 2026
0aa3c97
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 21, 2026
3fee653
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 21, 2026
0d09410
fix(concierge): show parking restriction names
MrYuion Jul 23, 2026
dc1f957
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 23, 2026
1caa727
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 23, 2026
fda2b8a
fix(workplace): fix max width of room/desk names on form select list
MrYuion Jul 23, 2026
10ce9c1
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 23, 2026
9b77495
fix(workplace): remove duplicate event location on landing upcoming card
MrYuion Jul 23, 2026
86822f5
fix(workplace): preserve desk selection across building change
MrYuion Jul 23, 2026
66fd918
chore(workplace): tweak to landing upcoming card
MrYuion Jul 23, 2026
8d55cb7
fix(workplace): restore desk booking button after QR scan
MrYuion Jul 27, 2026
49aa89a
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 27, 2026
96fde64
chore: merge fixes
MrYuion Jul 27, 2026
35bf769
chore: fix removed translation keys
MrYuion Jul 27, 2026
4315d92
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 27, 2026
d0f6133
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 28, 2026
675fd61
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 28, 2026
1ced37f
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 29, 2026
7825b76
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 29, 2026
935a052
fix(workplace): reset visitor form state
MrYuion Jul 29, 2026
9e4421f
fix(workplace): hide inactive bookings from landing
MrYuion Jul 29, 2026
0622089
fix(concierge): use configurable parking waitlist cutoff
MrYuion Jul 29, 2026
c02b109
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 29, 2026
5611d98
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 30, 2026
6173188
fix(workplace): fix applying selected building to visitor bookings
MrYuion Jul 30, 2026
0d8f96d
fix(workplace): fix floating overlay element anchoring to scrolled el…
MrYuion Jul 30, 2026
5581e40
fix(workplace): apply waitlist cutoffs to schedule views
MrYuion Jul 30, 2026
6252ff7
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 31, 2026
fcedce6
Merge branch 'develop' into custom/HIO687AS
MrYuion Jul 31, 2026
a4c3ecb
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 5, 2026
c8fecf4
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 7, 2026
2313cc6
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 11, 2026
9c5d629
fix(bookings): support multi-level desk filters
MrYuion Aug 11, 2026
edf17c7
fix(bookings): use current form for availability requests
MrYuion Aug 11, 2026
57b7d8f
fix(bookings): preserve availability when selecting desks
MrYuion Aug 11, 2026
8c711a1
fix(bookings): honour visitor duration settings
MrYuion Aug 11, 2026
da8d1ed
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 12, 2026
dd6b22e
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 12, 2026
7260d8b
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 17, 2026
8a82cb4
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 18, 2026
e9f70dd
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 19, 2026
f4ee1c0
fix(signage-manager): unshare deleted items by group PPT-2651
MrYuion Aug 19, 2026
a330c5b
feat(signage-manager): add display management PPT-2673
MrYuion Aug 19, 2026
957e573
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 20, 2026
c688a30
chore(workplace): tweak landing upcoming
MrYuion Aug 24, 2026
69e0d5f
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 24, 2026
3a7b851
fix(workplace): update unallocated parking actions
MrYuion Aug 24, 2026
5d4c548
fix(concierge): show parking allocation groups
MrYuion Aug 26, 2026
20f78e5
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 26, 2026
5e74d5d
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 27, 2026
30e17d3
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 27, 2026
dea9607
fix(concierge): bound parking booking pagination
MrYuion Aug 27, 2026
775bd54
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 27, 2026
ea1e8e8
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 27, 2026
18a341f
Merge branch 'develop' into custom/HIO687AS
MrYuion Aug 27, 2026
7103567
fix(visitor-kiosk): improve QR code scanning
MrYuion Sep 3, 2026
5e76b58
fix(common): recover stalled zone loading
MrYuion Sep 4, 2026
6b5213d
fix(ci): repair affected app builds
MrYuion Sep 4, 2026
09622c2
chore: force builds
MrYuion Sep 4, 2026
13cacd3
fix(loading-screen): Reduce zone load timeout from 120s to 30s
w-le Sep 9, 2026
c6df0cb
fix(auth): update client to recover expired-token requests
MrYuion Sep 10, 2026
d0873ae
fix: sort parking levels below normal building levels
MrYuion Sep 10, 2026
7db136d
fix(explore): preserve location selection and building bindings
MrYuion Sep 10, 2026
59a17d7
fix(workplace): hide cancelled bookings from calendars (HIO-488)
MrYuion Sep 16, 2026
e8a902e
Merge branch 'develop' into custom/HIO687AS
MrYuion Sep 16, 2026
b407f3d
fix(bookings): hide actions for cancelled bookings (HIO-488)
MrYuion Sep 16, 2026
387e00a
fix(workplace): keep cancelled days of recurring bookings (HIO-488)
MrYuion Sep 17, 2026
f4a5e98
feat(common): add Google Analytics (#496)
w-le Sep 20, 2026
5d0246b
feat(workplace): show desk booker in booking map tooltip (HIO-491)
MrYuion Sep 23, 2026
53273a8
Merge branch 'develop' into custom/HIO687AS
MrYuion Sep 23, 2026
29943ae
fix(workplace): show server error when booking cancel fails (HIO-489)
MrYuion Sep 23, 2026
c8e9a89
fix(common): report identifiable GA4 page views per route (HIO687AS) …
w-le Oct 8, 2026
597bdd6
Merge branch 'develop' into custom/HIO687AS
MrYuion Oct 9, 2026
6b7dadc
Merge branch 'develop' into custom/HIO687AS
MrYuion Oct 12, 2026
424de51
fix: restore shared library behaviour for all apps
MrYuion Oct 12, 2026
dce641b
fix(concierge): remove the fixed GA4 ID and fix the parking lists
MrYuion Oct 12, 2026
9405b3a
fix(workplace): give the new landing and booking flows parity with th…
MrYuion Oct 12, 2026
2c09005
docs(settings): bring the workplace and concierge settings in line wi…
MrYuion Oct 12, 2026
8ed55e0
feat(common): add dark theme colour overrides and a domain loading gr…
MrYuion Oct 12, 2026
d957502
Merge branch 'develop' into custom/HIO687AS
MrYuion Oct 12, 2026
04c589d
Merge branch 'develop' into custom/HIO687AS
MrYuion Oct 12, 2026
9545c95
Merge branch 'develop' into custom/HIO687AS
MrYuion Oct 13, 2026
2b1995c
fix(workplace): keep desk form choices in the new desk flow (PPT-2643)
MrYuion Oct 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
945 changes: 945 additions & 0 deletions apps/concierge/USER_STORIES.md

Large diffs are not rendered by default.

135 changes: 135 additions & 0 deletions apps/concierge/e2e/admin-content.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import { expect, test } from './fixtures';
import { gotoMockRoute, waitForAppShell, waitForHost } from './helpers';

// US-090 / US-091 / US-092: Staff directory and emergency contacts.
test.describe('Staff and Emergency Contacts', () => {
test('shows staff directory and emergency contacts routes', async ({
page,
}) => {
await gotoMockRoute(page, '/#/users/staff');
await waitForAppShell(page);
await waitForHost(page, '[app-new-staff]');
await waitForHost(page, 'staff-topbar');
await waitForHost(page, 'staff-listings');

await gotoMockRoute(page, '/#/users/staff/emergency-contacts');
await waitForAppShell(page);
await waitForHost(page, '[app-emergency-contacts]');
});
});

// US-120 / US-121: Points overview and assets.
test.describe('Points Management', () => {
test('shows points overview and assets tabs', async ({ page }) => {
await gotoMockRoute(page, '/#/points-management/overview');
await waitForAppShell(page);
await waitForHost(page, 'placeos-new-points');
await waitForHost(page, 'points-overview');

await gotoMockRoute(page, '/#/points-management/assets');
await waitForHost(page, 'points-assets');
await expect(
page.getByRole('button', { name: /Add|New/i }).first(),
).toBeVisible();
});
});

// US-130 / US-131: Survey list, builder and run outlet.
test.describe('Surveys', () => {
test('shows survey list and builder routes', async ({ page }) => {
await gotoMockRoute(page, '/#/surveys');
await waitForAppShell(page);
await waitForHost(page, 'app-survey');
await waitForHost(page, 'building-list');

await gotoMockRoute(page, '/#/surveys/builder');
await waitForHost(page, 'survey-builder');
});
});

// US-140 / US-142 / US-143: Building, zone, POI and settings management.
test.describe('Building Configuration', () => {
test('shows zone manager and app settings actions', async ({ page }) => {
await gotoMockRoute(page, '/#/zone-management');
await waitForAppShell(page);
await waitForHost(page, '[app-zone-manager]');

await expect(page.getByRole('tab', { name: /Regions/i })).toBeVisible();
await expect(
page.getByRole('tab', { name: /Buildings/i }),
).toBeVisible();
await expect(page.getByRole('tab', { name: /Levels/i })).toBeVisible();
await page
.locator('main header button', { hasText: 'more_vert' })
.click();
await expect(
page.getByRole('menuitem', { name: /Concierge/i }),
).toBeVisible();
});

test('redirects legacy hierarchy routes to zone management', async ({
page,
}) => {
for (const route of [
'/#/level-management',
'/#/building-management',
'/#/region-management',
]) {
await gotoMockRoute(page, route);
await waitForHost(page, '[app-zone-manager]');
expect(page.url()).toContain('/zone-management');
}
});

test('shows points of interest manager', async ({ page }) => {
await gotoMockRoute(page, '/#/points-of-interest');
await waitForAppShell(page);
await waitForHost(page, '[app-poi-manager]');
await waitForHost(page, 'poi-list');
});
});

// US-150 / US-151 / US-152 / US-153: Content and communications management.
test.describe('Communications and Content', () => {
test('shows signage media, displays and zones tabs', async ({ page }) => {
const routes = [
{ route: '/#/signage/media', selector: 'signage-media' },
{ route: '/#/signage/displays', selector: 'signage-displays' },
{ route: '/#/signage/zones', selector: 'signage-zones' },
];

for (const { route, selector } of routes) {
await gotoMockRoute(page, route);
await waitForAppShell(page);
await waitForHost(page, '[app-new-staff]');
await waitForHost(page, selector);
}
});

test('shows email template list and manage routes', async ({ page }) => {
await gotoMockRoute(page, '/#/email-templates');
await waitForAppShell(page);
await waitForHost(page, '[app-email-templates]');
await waitForHost(page, 'email-templates-list');

await gotoMockRoute(page, '/#/email-templates/manage');
await waitForHost(page, 'email-template-manage');
});

test('shows deals list and manage routes', async ({ page }) => {
await gotoMockRoute(page, '/#/deals-n-offers');
await waitForAppShell(page);
await waitForHost(page, '[app-deals]');
await waitForHost(page, 'deals-list');

await gotoMockRoute(page, '/#/deals-n-offers/manage');
await waitForHost(page, 'deals-manage');
});

test('shows short URL manager', async ({ page }) => {
await gotoMockRoute(page, '/#/url-management');
await waitForAppShell(page);
await waitForHost(page, '[app-short-url-manager]');
await waitForHost(page, 'short-url-list');
});
});
84 changes: 84 additions & 0 deletions apps/concierge/e2e/assets.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { expect, test } from './fixtures';
import { gotoMockRoute, waitForAppShell, waitForHost } from './helpers';

// US-050 / US-052 / US-053: Asset listings, item browsing and purchase orders.
test.describe('Asset Bookings Page', () => {
test('shows asset request, item and purchase order listings', async ({
page,
}) => {
const routes = [
{
route: '/#/book/assets/list/requests',
selector: 'app-asset-request-list',
},
{
route: '/#/book/assets/list/items',
selector: 'app-asset-item-list',
},
{
route: '/#/book/assets/list/purchase-orders',
selector: 'app-asset-purchase-order-list',
},
];

for (const { route, selector } of routes) {
await gotoMockRoute(page, route);
await waitForAppShell(page);
await waitForHost(page, '[asset-manager]');
await waitForHost(page, 'asset-listing');
await waitForHost(page, 'asset-manager-topbar');
await waitForHost(page, selector);
}
});

test('shows grid/list controls for asset items', async ({ page }) => {
await gotoMockRoute(page, '/#/book/assets/list/items');
await waitForHost(page, 'app-asset-item-list');

await expect(
page.locator('asset-manager-topbar button icon', {
hasText: 'view_module',
}),
).toBeVisible();
await expect(
page.locator('asset-manager-topbar button icon', {
hasText: 'view_list',
}),
).toBeVisible();
});
});

// US-051 / US-053: Asset inventory, bulk import and purchase order management.
test.describe('Asset Management Routes', () => {
test('shows asset management forms', async ({ page }) => {
const routes = [
{
route: '/#/book/assets/manage/group',
selector: 'asset-group-form',
},
{
route: '/#/book/assets/manage/asset',
selector: 'asset-form',
},
{
route: '/#/book/assets/manage/asset-bulk',
selector: 'asset-bulk-form',
},
{
route: '/#/book/assets/manage/category',
selector: 'asset-category-form',
},
{
route: '/#/book/assets/manage/purchase-order',
selector: 'asset-purchase-order-form',
},
];

for (const { route, selector } of routes) {
await gotoMockRoute(page, route);
await waitForAppShell(page);
await waitForHost(page, '[asset-manager]');
await waitForHost(page, selector);
}
});
});
19 changes: 19 additions & 0 deletions apps/concierge/e2e/catering.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { expect, test } from './fixtures';

// US-060 / US-061: Viewing catering orders and the catering menu.
test.describe('Catering Page', () => {
test('shows catering orders view', async ({ page }) => {
await page.goto('/#/book/catering/orders?mock=true');
await page.locator('[app-catering]').waitFor({ timeout: 30000 });

await expect(page.locator('app-topbar')).toBeVisible();
await expect(page.locator('catering-topbar')).toBeVisible();
});

test('shows catering menu view', async ({ page }) => {
await page.goto('/#/book/catering/menu?mock=true');
await page.locator('[app-catering]').waitFor({ timeout: 30000 });

await expect(page.locator('catering-topbar')).toBeVisible();
});
});
2 changes: 1 addition & 1 deletion apps/concierge/e2e/dayview.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { expect, test } from '@playwright/test';
import { expect, test } from './fixtures';

test.describe('Day View Page', () => {
test('has layout', async ({ page }) => {
Expand Down
41 changes: 41 additions & 0 deletions apps/concierge/e2e/desks.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { expect, test } from './fixtures';
import { gotoMockRoute, waitForHost } from './helpers';

// US-020 / US-023: Viewing desk bookings and managing the desk inventory.
test.describe('Desk Bookings Page', () => {
test('shows desk bookings view', async ({ page }) => {
await page.goto('/#/book/desks/events?mock=true');
await page.locator('[app-desks]').waitFor({ timeout: 30000 });

await expect(page.locator('app-topbar')).toBeVisible();
await expect(page.locator('desk-bookings')).toBeVisible();
});

test('shows desk management view', async ({ page }) => {
await page.goto('/#/book/desks/manage?mock=true');
await page.locator('[app-desks]').waitFor({ timeout: 30000 });

await expect(page.locator('desks-manage')).toBeVisible();
});

// US-024 / US-025: Desk import/export controls and map route.
test('shows desk map and management import/export controls', async ({
page,
}) => {
await gotoMockRoute(page, '/#/book/desks/map');
await waitForHost(page, '[app-desks]');
await waitForHost(page, 'desk-map-view');

await gotoMockRoute(page, '/#/book/desks/manage');
await waitForHost(page, 'desks-manage');
await expect(
page.getByRole('button', { name: /cloud_upload/i }),
).toBeVisible();
await expect(
page.getByRole('button', { name: /^download$/i }),
).toBeVisible();
await expect(
page.getByRole('button', { name: /^lock_open$/i }),
).toBeVisible();
});
});
19 changes: 19 additions & 0 deletions apps/concierge/e2e/events.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { expect, test } from './fixtures';
import { gotoMockRoute, waitForHost } from './helpers';

// US-080: Browsing entertainment events.
test.describe('Events Page', () => {
test('shows the events listing', async ({ page }) => {
await page.goto('/#/entertainment/events?mock=true');
await page.locator('[app-events]').waitFor({ timeout: 30000 });

await expect(page.locator('app-topbar')).toBeVisible();
await expect(page.locator('event-listing')).toBeVisible();
});

// US-081 / US-082: Event create/edit and detail routes.
test('shows event manage route', async ({ page }) => {
await gotoMockRoute(page, '/#/entertainment/events/manage');
await waitForHost(page, 'app-event-manage');
});
});
28 changes: 28 additions & 0 deletions apps/concierge/e2e/fixtures.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { test as base, expect } from '@playwright/test';

/**
* Shared test fixture for the concierge e2e suite.
*
* The app only registers its mock API handlers when `localStorage['mock']` is
* `'true'` at boot (see `PlaceOS_Service.init` -> `_mocks()`). The `?mock=true`
* URL param sets that key, but only later during `setupPlace`, so on a fresh
* browser context (as Playwright uses for every test) the handlers are not
* registered on the first load and organisation data fails to load.
*
* Seeding the key via an init script — which runs before the app bootstraps —
* guarantees the mocks are registered on the very first navigation.
*/
export const test = base.extend({
page: async ({ page }, use) => {
await page.addInitScript(() => {
try {
window.localStorage.setItem('mock', 'true');
} catch {
/* localStorage may be unavailable before navigation */
}
});
await use(page);
},
});

export { expect };
18 changes: 18 additions & 0 deletions apps/concierge/e2e/helpers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { Page } from '@playwright/test';

export async function gotoMockRoute(page: Page, route: string) {
const separator = route.includes('?') ? '&' : '?';
await page.goto(`${route}${separator}mock=true`);
}

export async function waitForAppShell(page: Page) {
await page.locator('app-topbar').first().waitFor({ timeout: 30000 });
await page.locator('app-sidebar').first().waitFor({ timeout: 30000 });
}

export async function waitForHost(page: Page, selector: string) {
await page
.locator(selector)
.first()
.waitFor({ state: 'attached', timeout: 30000 });
}
Loading
Loading