@@ -146,12 +146,14 @@
import VueMarkdown from "vue-markdown-render";
import * as pluginApi from "@/api/plugin-api";
import AuthorChips from "@/components/AuthorChips.vue";
+import ListPageTop from "@/components/ListPageTop.vue";
export default {
name: "PluginMarketplace",
components: {
VueMarkdown,
AuthorChips,
+ ListPageTop,
},
inject: ["snack"],
data() {
diff --git a/src/components/stagers/StagersTable.vue b/src/components/stagers/StagersTable.vue
index bf52fd36..cb7b4614 100644
--- a/src/components/stagers/StagersTable.vue
+++ b/src/components/stagers/StagersTable.vue
@@ -62,7 +62,7 @@
diff --git a/src/views/AgentEdit.vue b/src/views/AgentEdit.vue
index 85a32b1a..2dfe9a05 100644
--- a/src/views/AgentEdit.vue
+++ b/src/views/AgentEdit.vue
@@ -370,7 +370,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/agent-edit",
+ to: `/agents/${this.id}`,
},
];
},
diff --git a/src/views/BypassEdit.vue b/src/views/BypassEdit.vue
index b6998e15..2eb12584 100644
--- a/src/views/BypassEdit.vue
+++ b/src/views/BypassEdit.vue
@@ -69,6 +69,7 @@ export default {
inject: ["snack", "confirm"],
data() {
return {
+ initialLoad: false,
form: {},
rules: {
name: [
@@ -98,7 +99,7 @@ export default {
return this.$route.name === "bypassNew";
},
isCopy() {
- return this.$route.params.copy === true;
+ return this.$route.query.copy === "true";
},
mode() {
if (this.isCopy) return "Copy";
@@ -109,11 +110,11 @@ export default {
return true;
},
id() {
- return this.isCopy ? 0 : this.$route.params.id;
+ return this.isCopy ? 0 : this.$route.params.id || this.$route.query.id;
},
copyLink() {
if (this.id > 0)
- return { name: "bypassNew", params: { copy: true, id: this.id } };
+ return { name: "bypassNew", query: { copy: true, id: this.id } };
return {};
},
breads() {
@@ -127,7 +128,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/bypasses-edit",
+ to: `/bypasses/${this.id}`,
},
];
},
@@ -149,7 +150,7 @@ export default {
if (!this.isNew || this.isCopy) {
// using the route param id instad of this.id
// since this.id is 0 for copies.
- this.getBypass(this.$route.params.id);
+ this.getBypass(this.$route.params.id || this.$route.query.id);
} else {
this.initialLoad = true;
}
diff --git a/src/views/Bypasses.vue b/src/views/Bypasses.vue
index 9c8b2cd7..0004c427 100644
--- a/src/views/Bypasses.vue
+++ b/src/views/Bypasses.vue
@@ -53,7 +53,7 @@
diff --git a/src/views/CredentialEdit.vue b/src/views/CredentialEdit.vue
index 5e5b36dc..bec90baf 100644
--- a/src/views/CredentialEdit.vue
+++ b/src/views/CredentialEdit.vue
@@ -76,7 +76,7 @@ export default {
{
title: this.id && !this.isCopy ? `${this.id}` : "New",
disabled: true,
- to: "/credential-edit",
+ to: `/credentials/${this.id}`,
},
];
},
@@ -87,7 +87,7 @@ export default {
return this.$route.name === "credentialNew";
},
isCopy() {
- return this.$route.params.copy === true;
+ return this.$route.query.copy === "true";
},
mode() {
if (this.isCopy) return "Copy";
@@ -99,11 +99,11 @@ export default {
return true;
},
id() {
- return this.isCopy ? 0 : this.$route.params.id;
+ return this.isCopy ? 0 : this.$route.params.id || this.$route.query.id;
},
copyLink() {
if (this.id > 0)
- return { name: "credentialNew", params: { copy: true, id: this.id } };
+ return { name: "credentialNew", query: { copy: true, id: this.id } };
return {};
},
options() {
@@ -140,7 +140,7 @@ export default {
if (!this.isNew || this.isCopy) {
// using the route param id instad of this.id
// since this.id is 0 for copies.
- this.getCredential(this.$route.params.id);
+ this.getCredential(this.$route.params.id || this.$route.query.id);
} else {
this.initialLoad = true;
}
diff --git a/src/views/Credentials.vue b/src/views/Credentials.vue
index 4d2567f3..b954bcc4 100644
--- a/src/views/Credentials.vue
+++ b/src/views/Credentials.vue
@@ -98,7 +98,7 @@
style="color: inherit"
:to="{
name: 'credentialNew',
- params: { copy: true, id: item.id },
+ query: { copy: true, id: item.id },
}"
>
diff --git a/src/views/ListenerEdit.vue b/src/views/ListenerEdit.vue
index d6c0c4e7..63ad9e38 100644
--- a/src/views/ListenerEdit.vue
+++ b/src/views/ListenerEdit.vue
@@ -204,7 +204,7 @@ export default {
return this.$route.name === "listenerNew";
},
isCopy() {
- return this.$route.params.copy === true;
+ return this.$route.query.copy === "true";
},
mode() {
if (this.isCopy) return "Copy";
@@ -215,11 +215,11 @@ export default {
return this.isNew || !this.listener.enabled;
},
id() {
- return this.isCopy ? 0 : this.$route.params.id;
+ return this.isCopy ? 0 : this.$route.params.id || this.$route.query.id;
},
copyLink() {
if (this.id > 0)
- return { name: "listenerNew", params: { copy: true, id: this.id } };
+ return { name: "listenerNew", query: { copy: true, id: this.id } };
return {};
},
listenerInfo() {
@@ -260,7 +260,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/listeners-edit",
+ to: `/listeners/${this.id}`,
},
];
},
@@ -309,7 +309,7 @@ export default {
if (!this.isNew || this.isCopy) {
// using the route param id instead of this.id
// since this.id is 0 for copies.
- this.getListener(this.$route.params.id);
+ this.getListener(this.$route.params.id || this.$route.query.id);
}
},
methods: {
diff --git a/src/views/MalleableProfileEdit.vue b/src/views/MalleableProfileEdit.vue
index 10b0cd1b..b03a1907 100644
--- a/src/views/MalleableProfileEdit.vue
+++ b/src/views/MalleableProfileEdit.vue
@@ -100,7 +100,7 @@ export default {
return this.$route.name === "malleableProfileNew";
},
isCopy() {
- return this.$route.params.copy === true;
+ return this.$route.query.copy === "true";
},
mode() {
if (this.isCopy) return "Copy";
@@ -111,13 +111,13 @@ export default {
return true;
},
id() {
- return this.isCopy ? 0 : this.$route.params.id;
+ return this.isCopy ? 0 : this.$route.params.id || this.$route.query.id;
},
copyLink() {
if (this.id > 0)
return {
name: "malleableProfileNew",
- params: { copy: true, id: this.id },
+ query: { copy: true, id: this.id },
};
return {};
},
@@ -132,7 +132,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/malleable-profiles-edit",
+ to: `/malleable-profiles/${this.id}`,
},
];
},
@@ -154,7 +154,7 @@ export default {
if (!this.isNew || this.isCopy) {
// using the route param id instad of this.id
// since this.id is 0 for copies.
- this.getMalleableProfile(this.$route.params.id);
+ this.getMalleableProfile(this.$route.params.id || this.$route.query.id);
} else {
this.initialLoad = true;
}
diff --git a/src/views/Notifications.vue b/src/views/Notifications.vue
index d823102b..53b26afc 100644
--- a/src/views/Notifications.vue
+++ b/src/views/Notifications.vue
@@ -25,6 +25,7 @@
{{ item.buttonText }}
diff --git a/src/views/StagerEdit.vue b/src/views/StagerEdit.vue
index 9291d444..8a678731 100644
--- a/src/views/StagerEdit.vue
+++ b/src/views/StagerEdit.vue
@@ -123,7 +123,7 @@ export default {
return this.$route.name === "stagerNew";
},
isCopy() {
- return this.$route.params.copy === true;
+ return this.$route.query.copy === "true";
},
mode() {
if (this.isCopy) return "Copy";
@@ -134,11 +134,11 @@ export default {
return true;
},
id() {
- return this.isCopy ? 0 : this.$route.params.id;
+ return this.isCopy ? 0 : this.$route.params.id || this.$route.query.id;
},
copyLink() {
if (this.id > 0)
- return { name: "stagerNew", params: { copy: true, id: this.id } };
+ return { name: "stagerNew", query: { copy: true, id: this.id } };
return {};
},
stagerInfo() {
@@ -193,7 +193,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/stagers-edit",
+ to: `/stagers/${this.id}`,
},
];
},
@@ -231,7 +231,7 @@ export default {
if (!this.isNew || this.isCopy) {
// using the route param id instad of this.id
// since this.id is 0 for copies.
- this.getStager(this.$route.params.id);
+ this.getStager(this.$route.params.id || this.$route.query.id);
}
if (this.$route.query.template) {
diff --git a/src/views/UserEdit.vue b/src/views/UserEdit.vue
index 82d56935..78279d34 100644
--- a/src/views/UserEdit.vue
+++ b/src/views/UserEdit.vue
@@ -133,7 +133,7 @@ export default {
{
title: this.breadcrumbName,
disabled: true,
- to: "/users-edit",
+ to: `/users/${this.id}`,
},
];
},
diff --git a/yarn.lock b/yarn.lock
index 334e9bd9..b96eb20c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2718,7 +2718,7 @@ vue-router@^4.3:
dependencies:
"@vue/devtools-api" "^6.6.4"
-vue@^3.4:
+vue@^3.5:
version "3.5.29"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.29.tgz#859a1cc5219eb1228c7ce6f355b27de080517111"
integrity sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==
@@ -2736,10 +2736,10 @@ vuedraggable@^4.1:
dependencies:
sortablejs "1.14.0"
-vuetify@^3.5:
- version "3.12.1"
- resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-3.12.1.tgz#c5937d96ea5b53544d4419cd8769787b4206804f"
- integrity sha512-JDHDzs1e195YJ9L3X4nWQySGSMyTxr0BefIY4+l/CpAgTd9pPV5F6oZzI8ZLuikMxS4HhfSGHteOAe6u/zh4vQ==
+vuetify@^3.12:
+ version "3.12.2"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-3.12.2.tgz#c6d5a74243925115b56a488a9627d0a4a57108be"
+ integrity sha512-cVQa4+5iQpDs00ToMUnWRHlMdv1d5tEH2wcZIthqSCmBipQAG4rQKE55zFwZFYlPyiDhUVY1RcAFtXCuHNcCww==
which-boxed-primitive@^1.0.2:
version "1.0.2"
From 8b8089c0ebfa32b9f6311c52dddbfc32692e50c2 Mon Sep 17 00:00:00 2001
From: GitHub Actions
Date: Sun, 8 Mar 2026 19:58:58 +0000
Subject: [PATCH 6/6] Prepare release 3.4.0 private
---
CHANGELOG.md | 6 +++++-
package.json | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2e6b81c2..a09462dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [3.4.0] - 2026-03-08
+
### Changed
- Migrated from Vue 2 to Vue 3
@@ -457,7 +459,9 @@ Including but not limited to:
- Initial Release
-[Unreleased]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v3.3.0...HEAD
+[Unreleased]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v3.4.0...HEAD
+
+[3.4.0]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v3.3.0...v3.4.0
[3.3.0]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v3.2.0...v3.3.0
diff --git a/package.json b/package.json
index b8c725fc..b04aec62 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "starkiller",
- "version": "3.3.0",
+ "version": "3.4.0",
"private": true,
"scripts": {
"dev": "vite",