Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
bb335c4
chore(ci): run affected lib tests on PR branches
camreeves Oct 12, 2026
f881df1
build(deps): add dompurify for inserted SVG markup
camreeves Oct 12, 2026
0ae789e
feat(map-editor): document core for the AI map editor
camreeves Oct 12, 2026
5cbef8f
feat(map-editor): operation vocabulary, JSON schema and applier
camreeves Oct 12, 2026
d2ac3b9
feat(map-editor): proposal validator and render check port
camreeves Oct 12, 2026
18308d1
feat(map-editor): snapshot history and browser draft store
camreeves Oct 12, 2026
a90fc5c
fix(map-editor): decode CSS escapes before the style safety checks
camreeves Oct 12, 2026
618c25b
fix(map-editor): op bookkeeping fields, replacement deny tags and one…
camreeves Oct 12, 2026
501be5a
fix(map-editor): applier reports dropped tspans, anchors style rule m…
camreeves Oct 12, 2026
06bf84e
fix(map-editor): validator accepts server bookkeeping, locks hides, d…
camreeves Oct 12, 2026
c9bd7f8
fix(map-editor): plural layer groups are not bookable
camreeves Oct 12, 2026
fbe3e46
chore(map-editor): comments describe the draft store and the fixture …
camreeves Oct 12, 2026
513c51d
feat(map-editor): editor session over the document core
camreeves Oct 12, 2026
0dbdbc5
feat(map-editor): canvas host, properties strip and editor shell
camreeves Oct 12, 2026
5efc75f
feat(map-editor): revert, markSaved and id-matched baseline on the se…
camreeves Oct 12, 2026
c10afe5
feat(concierge): Map Management page with the map editor
camreeves Oct 12, 2026
de496a1
style(map-editor): format the applier and the settings doc
camreeves Oct 12, 2026
8b5660a
feat(map-editor): map AI client
camreeves Oct 12, 2026
d13882a
feat(map-editor): proposal context and snapshot
camreeves Oct 12, 2026
ff23a8b
feat(map-editor): proposal state
camreeves Oct 12, 2026
1d5a62d
feat(map-editor): AI panel component
camreeves Oct 12, 2026
94332a6
fix(map-editor): one session contract for the editor and the AI panel
camreeves Oct 12, 2026
a4e01cd
feat(concierge): mount the AI panel in the Map Management editor
camreeves Oct 12, 2026
99e3cf6
feat(map-editor): ground the AI in containment, glyphs, mentions and …
camreeves Oct 13, 2026
82b4a7b
feat(map-editor): cluster outlined labels and send them with the context
camreeves Oct 13, 2026
36387f4
fix(map-editor): rebuild the session index once the map is rendered
camreeves Oct 13, 2026
267817d
fix(map-editor): measure the trial document with attribute geometry
camreeves Oct 13, 2026
fc23dd5
feat(map-editor): place after deleted siblings and lay out text lines
camreeves Oct 13, 2026
c4bb166
style(concierge): keep the map list's buttons on one line
camreeves Oct 13, 2026
eb4ab3c
feat(map-editor): group the stacked layers of one drawn object as a p…
camreeves Oct 13, 2026
0b7fc91
fix(concierge): keep a map's file name across saves and show it in th…
camreeves Oct 13, 2026
7082b6f
feat(map-editor): multi-line labels in the properties strip
camreeves Oct 13, 2026
a7dce08
feat(map-editor): choose the AI model; text labels and labels outside…
camreeves Oct 13, 2026
9b815a5
fix(map-editor): include complete furniture and named label context
camreeves Oct 13, 2026
728888d
merge: update map editor review branch with develop
camreeves Oct 13, 2026
e41049b
fix(map-editor): refresh remaining AI usage after submission
camreeves Oct 13, 2026
ea6dc15
feat(map-editor): canvas-first editor layout with AI preview pins
camreeves Oct 15, 2026
53b7d96
refactor(map-editor): one helper for the points an annotation covers
camreeves Oct 15, 2026
4bdf50b
merge: update the map editor review branch with develop
camreeves Oct 15, 2026
0dc4da4
style(map-editor): calmer AI panel with one type and spacing scale
camreeves Oct 16, 2026
44fa6a6
fix(map-editor): smoother AI review panel and map selection
camreeves Oct 16, 2026
a27264a
fix(map-editor): change only the ticked row's marker when a checkbox …
camreeves Oct 19, 2026
02aec9d
fix(map-editor): undo marks and map changes in order, and explain the…
camreeves Oct 19, 2026
f9f66f9
fix(map-editor): clearer AI change rows
camreeves Oct 19, 2026
8b1729e
feat(map-studio): open the level being edited, signed in from Concierge
camreeves Oct 19, 2026
0b190b3
merge: update the AI map editing branch with develop
camreeves Oct 19, 2026
a114800
fix(map-editor): tighter checks on AI style rules, new ids and replac…
camreeves Oct 19, 2026
c475a57
fix(map-editor): review findings on the AI preview, undo and job polling
camreeves Oct 19, 2026
2594f7f
perf(map-studio): compose the imported map once per drag, not per poi…
camreeves Oct 19, 2026
fcd30b8
fix(concierge): save only the map on the level, and drop the old map …
camreeves Oct 19, 2026
62c5325
build(concierge,map-studio): allow 16 kB of styles per component in p…
camreeves Oct 19, 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
6 changes: 3 additions & 3 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,12 +129,12 @@ jobs:
test:
runs-on: ubuntu-latest
needs: install_deps
if: ${{ fromJSON(needs.install_deps.outputs.affected_apps)[0] != null }}
if: ${{ fromJSON(needs.install_deps.outputs.affected_units)[0] != null }}
strategy:
matrix:
package: ${{ fromJSON(needs.install_deps.outputs.affected_apps) }}
package: ${{ fromJSON(needs.install_deps.outputs.affected_units) }}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Issue, medium. For a ref that contains release or -prod, tools/get-affected.js returns every folder in apps and libs for the test target, without a check that the target exists. libs/payments has no test target. I ran bunx nx test payments and it fails with Cannot find configuration for task payments:test. Before this change the matrix held apps only, so every custom/*-prod push now gets a red test job.

Fix: filter the release list with --withTarget=test in get-affected.js.

Also, this workflow only runs on feat/*, fix/*, custom/* and refactor/*. The PR branch is PPT-2832-ai-map-review, so no run has used this change or the new specs. The only checks on the PR are from Vercel. Locally the 265 map-editor tests pass with --configuration=feat.

env:
jobCount: ${{ fromJSON(needs.install_deps.outputs.affected_apps).length }}
jobCount: ${{ fromJSON(needs.install_deps.outputs.affected_units).length }}
configuration: ${{ needs.install_deps.outputs.configuration }}
deploy_branch: ${{ needs.install_deps.outputs.deploy_branch }}
short_sha: ${{ needs.install_deps.outputs.short_sha }}
Expand Down
2 changes: 1 addition & 1 deletion apps/concierge/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
"maximumError": "16kb"
}
],
"serviceWorker": "apps/concierge/ngsw-config.json"
Expand Down
8 changes: 8 additions & 0 deletions apps/concierge/src/app/app.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ export const routes: Routes = [
canActivate: [AuthorisedUserGuard],
canLoad: [AuthorisedUserGuard],
},
{
path: 'map-management',
title: 'Map Management',
loadChildren: () =>
import('./map-manager/map-manager.routes').then((m) => m.ROUTES),
canActivate: [AuthorisedUserGuard],
canLoad: [AuthorisedUserGuard],
},
{
path: 'zone-management',
title: 'Zone Management',
Expand Down
9 changes: 7 additions & 2 deletions apps/concierge/src/app/level-manager/level-list.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Clipboard } from '@angular/cdk/clipboard';
import { Component, inject } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatMenuModule } from '@angular/material/menu';
import { Router } from '@angular/router';
import { i18n, notifySuccess } from '@placeos/common';
import {
IconComponent,
Expand Down Expand Up @@ -94,7 +95,9 @@ import { LevelManagementService } from './level-management.service';
>
<div class="flex items-center space-x-2">
<icon class="text-2xl">map</icon>
<span>Edit SVG map</span>
<span>{{
'APP.CONCIERGE.MAPS_EDIT' | translate
}}</span>
</div>
</button>
<button
Expand Down Expand Up @@ -138,11 +141,13 @@ export class LevelListComponent {
private _manager = inject(LevelManagementService);
private _clipboard = inject(Clipboard);
private _dialog = inject(MatDialog);
private _router = inject(Router);

public readonly levels = this._manager.filtered_levels;

public readonly editLevel = (level) => this._manager.editLevel(level);
public readonly editLevelMap = (level) => this._manager.editLevelMap(level);
public readonly editLevelMap = (level) =>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Optional. After this change nothing calls LevelManagementService.editLevelMap, so level-map-editor-modal.component.ts, 1359 lines plus its spec, cannot be reached. Remove it in this PR or note when it goes.

this._router.navigate(['/map-management', level.id]);
public readonly removeLevel = (level) => this._manager.removeLevel(level);

public readonly copyToClipboard = (id: string) => {
Expand Down
11 changes: 0 additions & 11 deletions apps/concierge/src/app/level-manager/level-management.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,6 @@ export class LevelManagementService {
});
}

public async editLevelMap(level: BuildingLevel) {
const { LevelMapEditorModalComponent } =
await import('./level-map-editor-modal.component');
const ref = this._dialog.open(LevelMapEditorModalComponent, {
data: level,
});
ref.afterClosed().subscribe((data) => {
if (data) this._org.addZone(data);
});
}

public async removeLevel(level: BuildingLevel) {
const removed = await confirmAction(
this._dialog,
Expand Down
Loading