Skip to content

Mission Layer Support#1589

Merged
Nick (ingalls) merged 6 commits into
mainfrom
feature/mission-layers
Jul 26, 2026
Merged

Mission Layer Support#1589
Nick (ingalls) merged 6 commits into
mainfrom
feature/mission-layers

Conversation

@ingalls

Copy link
Copy Markdown
Member

Context

  • 🎉 Introduce API support for managing Mission Layer Features
  • 🎉 Allow moving features between mission layers

@codecov

codecov Bot commented Jul 15, 2026

Copy link
Copy Markdown

@ingalls Nick (ingalls) self-assigned this Jul 24, 2026
@ingalls Nick (ingalls) added the data-sync Data synchronization and ETL operations label Jul 24, 2026
Copilot AI review requested due to automatic review settings July 24, 2026 23:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR adds API and UI support for managing Mission Layer features, including drag-and-drop filing of mission features into layers (and moving them back to the mission root).

Changes:

  • Added new Marti Mission Layer CoT attach/detach endpoints and corresponding client wrapper methods.
  • Updated Mission Layers UI to support breadcrumb navigation and drag-and-drop moving of features between layers/root.
  • Defaulted newly created mission layers to UID type (so TAK Server will return filed features).

Reviewed changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
api/web/src/components/CloudTAK/util/PathBreadcrumb.vue Adds optional explicit segments + droppable breadcrumb targets and emits navigate/drop events.
api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue Switches to shared breadcrumb component and adds Sortable-based drag initiation for moving features.
api/web/src/components/CloudTAK/Menu/Mission/MissionLayerCreate.vue Changes default layer type to UID with explanatory comment.
api/web/src/base/subscription-layer.ts Adds attachFeatures / detachFeature client methods that call the new endpoints and refresh state.
api/test/marti-mission-layer-cot.srv.test.ts Adds server route tests for attaching/detaching CoTs to/from layers.
api/test/fixtures/get_schema.json Registers new endpoints in schema fixture.
api/stateless/routes/marti-mission-layers.ts Implements new PUT/DELETE helper routes for filing CoTs under layers / moving back to root.
api/package.json Bumps @tak-ps/node-tak version to pick up MissionLayer API support.
api/package-lock.json Updates lockfile to match dependency bump (and associated transitive updates).
api/derived-types.d.ts Updates generated client types for the new endpoints.
Files not reviewed (1)
  • api/package-lock.json: Generated file
Comments suppressed due to low confidence (1)

api/web/src/components/CloudTAK/util/PathBreadcrumb.vue:36

  • Same issue as Home: @drop.stop.prevent will always swallow drops even when droppable is false. Prefer passing the event through and conditionally preventing/stopping inside onDrop.
                @drop.stop.prevent='onDrop(idx + 1)'

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread api/web/src/components/CloudTAK/util/PathBreadcrumb.vue Outdated
Comment thread api/web/src/components/CloudTAK/util/PathBreadcrumb.vue Outdated
Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue
Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue Outdated
Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue Outdated
Comment thread api/stateless/routes/marti-mission-layers.ts
Copilot AI review requested due to automatic review settings July 24, 2026 23:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 10 changed files in this pull request and generated 4 comments.

Files not reviewed (1)
  • api/package-lock.json: Generated file
Comments suppressed due to low confidence (1)

api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue:349

  • assertHoldsFeatures() throws on non-UID layers; if a user drops on a breadcrumb segment that is a GROUP layer, this async handler will throw and surface as an app error. Catch the assertion failure and return early (or disable drops for non-UID layers).
        assertHoldsFeatures(crumb.uid);

        await props.subscription.layer.attachFeatures(crumb.uid, [id]);

Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue
Comment on lines 79 to 83
@navigate='navigateToFolder'
@delete='deleteLayer'
@rename='openEdit'
@folder-drop='onFolderDrop'
@toggle-visibility='toggleMissionFolderVisibility'
Comment thread api/web/src/base/subscription-layer.ts
Comment on lines +54 to +55
/** Explicit segment labels - when provided navigation is emitted as a depth instead of writing to the collection model */
segments?: string[];
Copilot AI review requested due to automatic review settings July 26, 2026 03:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 10 changed files in this pull request and generated 4 comments.

Files not reviewed (1)
  • api/package-lock.json: Generated file

Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue
Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue Outdated
Comment thread api/package-lock.json
{
"name": "@tak-ps/CloudTAK.api",
"version": "13.50.0",
"version": "13.54.2",
Comment thread api/package-lock.json
Copilot AI review requested due to automatic review settings July 26, 2026 14:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 12 out of 14 changed files in this pull request and generated 2 comments.

Files not reviewed (1)
  • api/package-lock.json: Generated file

Comment on lines +188 to +192
async attachFeatures(
layeruid: string,
uids: string[]
): Promise<void> {
const timestamp = new Date().toISOString();
Comment thread api/web/src/components/CloudTAK/Menu/Mission/MissionLayers.vue
@ingalls
Nick (ingalls) merged commit bde50f2 into main Jul 26, 2026
15 of 16 checks passed
@ingalls
Nick (ingalls) deleted the feature/mission-layers branch July 26, 2026 14:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

data-sync Data synchronization and ETL operations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants