Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
3b2797c
Base Skeleton
TheJorgeBorras Oct 30, 2025
6d6bf0d
New HTML
TheJorgeBorras Oct 31, 2025
09c7cb8
More changes
TheJorgeBorras Nov 3, 2025
49b1ae7
Initial Alert Implementation
TheJorgeBorras Nov 3, 2025
d841c26
Messages
TheJorgeBorras Nov 4, 2025
ccab222
Moved HTML
TheJorgeBorras Nov 4, 2025
51efa53
More stuff
TheJorgeBorras Nov 4, 2025
7ba8347
Merge branch 'dev' into feature/PDPDEVTOOL-6272-DevAssist-Feedback-Lo…
TheJorgeBorras Nov 5, 2025
4111bbb
Finalizing the Functional Side of things
TheJorgeBorras Nov 5, 2025
4a38f98
Minor comment for code reviewers
TheJorgeBorras Nov 5, 2025
de75eba
ops
TheJorgeBorras Nov 5, 2025
886a7f7
Validation of Fields
TheJorgeBorras Nov 6, 2025
996979a
minor stuff
TheJorgeBorras Nov 6, 2025
f0d1d59
Readability
TheJorgeBorras Nov 6, 2025
9e8c073
Messages Reviewed
TheJorgeBorras Nov 6, 2025
2ad6675
removing bad code
TheJorgeBorras Nov 6, 2025
fddbcac
reverting message
TheJorgeBorras Nov 7, 2025
88a5f08
more stuff
TheJorgeBorras Nov 7, 2025
2194f2f
minor error
TheJorgeBorras Nov 7, 2025
3975808
Minor comments
TheJorgeBorras Nov 7, 2025
1f3ce30
Showing Error Reauth
TheJorgeBorras Nov 10, 2025
4e5c91e
Unused imports removed
TheJorgeBorras Nov 10, 2025
f9bf601
Improving Alert messages
TheJorgeBorras Nov 10, 2025
1d329ed
Merge branch 'dev' into feature/PDPDEVTOOL-6272-DevAssist-Feedback-Lo…
TheJorgeBorras Nov 11, 2025
1f3acb1
Removing enablement OpenFeedbackForm command
TheJorgeBorras Nov 11, 2025
131a83e
Requested Code Changes
TheJorgeBorras Nov 12, 2025
0523bfc
Requested Code Changes 2
TheJorgeBorras Nov 12, 2025
141908d
Messages Reviewed pt3
TheJorgeBorras Nov 12, 2025
5e36900
curly stuff
TheJorgeBorras Nov 12, 2025
2119a46
David Changes
TheJorgeBorras Nov 13, 2025
569e8e9
More improvements
TheJorgeBorras Nov 14, 2025
1ea9342
More improvements 2
TheJorgeBorras Nov 14, 2025
6189c59
maxlength
TheJorgeBorras Nov 14, 2025
48b9e9a
Merge branch 'dev' into feature/PDPDEVTOOL-6272-DevAssist-Feedback-Lo…
TheJorgeBorras Nov 14, 2025
14420f5
Updating TranslationKeys Buttons
TheJorgeBorras Nov 14, 2025
0d4fd54
Code Clarity
TheJorgeBorras Nov 14, 2025
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
8 changes: 7 additions & 1 deletion packages/node-cli/src/ApplicationConstants.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,11 @@ module.exports = {
SUITECLOUD_CI: 'SUITECLOUD_CI',
SUITECLOUD_CI_PASSKEY: 'SUITECLOUD_CI_PASSKEY',
SUITECLOUD_FALLBACK_PASSKEY: 'SUITECLOUD_FALLBACK_PASSKEY'
}
},
HTTP_RESPONSE_CODE: {
UNAUTHORIZED: 401,
FORBIDDEN: 403,
INTERNAL_SERVER_ERROR: 500,
SERVICE_UNAVAILABLE: 503,
},
};
9 changes: 1 addition & 8 deletions packages/node-cli/src/services/SuiteCloudAuthProxyService.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const {
} = require('../utils/AuthenticationUtils');
const {
AUTHORIZATION_PROPERTIES_KEYS,
HTTP_RESPONSE_CODE,
} = require('../ApplicationConstants');

/** Message literal service method */
Expand All @@ -39,14 +40,6 @@ const LOCAL_HOSTNAME = '127.0.0.1';
/** Target server port */
const TARGET_SERVER_PORT = 443;

/** Http codes */
const HTTP_RESPONSE_CODE = {
UNAUTHORIZED: 401,
FORBIDDEN: 403,
INTERNAL_SERVER_ERROR: 500,
SERVICE_UNAVAILABLE: 503,
};

class SuiteCloudAuthProxyService extends EventEmitter {
constructor(sdkPath, executionEnvironmentContext) {
super();
Expand Down
20 changes: 15 additions & 5 deletions packages/vscode-extension/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@
"ANSWERS_NO": "No",
"ANSWERS_YES": "Yes",

"BUTTONS_DONT_SHOW_AGAIN": "Don't show again",
"BUTTONS_GIVE_FEEDBACK": "Give Feedback",
"BUTTONS_OK": "Ok",
"BUTTONS_OPEN_SETTINGS": "Open Settings",
"BUTTONS_RESTART_NOW": "Restart Now",
"BUTTONS_SEE_DETAILS": "See Details",
"BUTTONS_OK": "Ok",

"COMMAND_ERROR": "Something went wrong with '{0}'.",
"COMMAND_SUCCESS": "'{0}' has been successfully executed.",
Expand Down Expand Up @@ -54,6 +57,17 @@
"DEPLOY_QUESTIONS_CHOICES_ACCOUNT_SPECIFIC_VALUES_CANCEL_PROCESS": "Cancel the deployment process",
"DEPLOY_QUESTIONS_CHOICES_ACCOUNT_SPECIFIC_VALUES_DISPLAY_WARNING": "Display a warning and continue the deployment process",

"DEVASSIST_SERVICE_FEEDBACK_FORM_GENERIC_VALIDATION_ERROR_WRAPPER": "Some fields have validation errors.<br>{0}",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_VALIDATION_ERROR": "{0}: {1}",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_CANNOT_BE_EMPTY_TEXT": "This field cannot not be empty.",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_CANNOT_BE_EMPTY_MULTIPLE_OPTION": "At least one of the available options must be selected.",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_CANNOT_BE_EMPTY_NUMERIC": "Choose a satisfaction level (for example, 3 out of 5 stars).",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_CANNOT_BE_TOO_LONG": "This field can only contain up to {0} characters.",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_CANNOT_HAVE_REPEATED_VALUES": "Select unique values (provided: {0}).",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_MUST_HAVE_BE_A_VALID_NUMBER": "Choose a natural number between {0} and {1}.",
"DEVASSIST_SERVICE_FEEDBACK_FORM_FIELD_MUST_HAVE_SPECIFIC_VALUES": "Select any values from the ones available: {0}.",
"DEVASSIST_SERVICE_FEEDBACK_FORM_SUBMITTING_ERROR": "Unable to connect to the SuiteCloud Developer Assistant service. Is it running?",

"DEVASSIST_SERVICE_OUTPUT_PROXY_ERROR": "There was a problem while running SuiteCloud Developer Assistant service.\n{0}",
"DEVASSIST_SERVICE_OUTPUT_SERVER_ERROR": "There was a server error while running SuiteCloud Developer Assistant service.\n{0}",
"DEVASSIST_SERVICE_OUTPUT_SERVER_ERROR_ON_REFRESH": "There was a problem refreshing credentials while running SuiteCloud Developer Assistant service.\n{0}",
Expand All @@ -66,13 +80,9 @@
"DEVASSIST_SERVICE_IS_STOPPED_OUTPUT": "There was a problem when starting SuiteCloud Developer Assistant service.\n{0}",
"DEVASSIST_SERVICE_IS_STOPPED_STATUSBAR": "Dev Assist: stopped",
"DEVASSIST_SERVICE_SERVER_ERROR_OUTPUT": "A server error has occurred while running SuiteCloud Developer Assistant service.\nError: {0}",
"DEVASSIST_SERVICE_STARTUP_BUTTON_DONT_SHOW_AGAIN": "Don't show again",
"DEVASSIST_SERVICE_STARTUP_BUTTON_OPEN_SETTINGS": "Open Settings",
"DEVASSIST_SERVICE_SEE_DETAILS_BUTTON": "See Details",
"DEVASSIST_SERVICE_STARTUP_MESSAGE": "SuiteCloud Developer Assistant is here. Open settings to start using it.",
"DEVASSIST_SERVICE_STATUSBAR_TOOLTIP": "Shows the status of SuiteCloud Developer Assistant service.",


"DISMISS": "Dismiss",

"ERRORS_COURRUPTED_SDK_JAR_DEPENDENCY": "There was a problem with SuiteCloud Extension dependencies. Restart your Visual Studio Code instance.",
Expand Down
8 changes: 7 additions & 1 deletion packages/vscode-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,13 @@
"title": "Open DevAssist settings",
"category": "SuiteCloud",
"enablement": "false"
}
},
{
"command": "suitecloud.opendevassistfeedbackform",
"title": "Open DevAssist Feedback Form",
"category": "SuiteCloud",
"enablement": "false"
}
],
"keybindings": [
{
Expand Down
229 changes: 229 additions & 0 deletions packages/vscode-extension/resources/media/FeedbackForm.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
:root {
--gap: 12px;
--radius: 12px;
--border: #e5e7eb;
--text: #111827;
--muted: #6b7280
}

* {
box-sizing: border-box
}

body {
font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica, Arial, sans-serif;
color: var(--text);
background: #f8fafc;
margin: 0;
padding: 24px
}

.card {
max-width: 760px;
margin: auto;
background: #fff;
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 25px rgba(0, 0, 0, .05)
}

.card header {
padding: 20px 24px;
border-bottom: 1px solid var(--border)
}

h1 {
font-size: 20px;
margin: 0
}

.content {
padding: 20px 24px;
display: grid;
gap: var(--gap)
}

label {
font-weight: 600
}

textarea {
width: 100%;
min-height: 120px;
padding: 12px;
border: 1px solid var(--border);
border-radius: 10px;
resize: vertical;
font: inherit
}

fieldset {
border: 1px solid var(--border);
border-radius: 10px;
padding: 12px
}

legend {
padding: 0 6px;
color: var(--muted)
}

.checks {
display: grid;
grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
gap: 8px 14px;
margin-top: 6px
}

.checks label {
font-weight: 500;
display: flex;
align-items: center;
gap: 8px
}

.checks input {
transform: translateY(1px)
}

.stars {
display: inline-flex;
flex-direction: row-reverse; /* shows stars in correct LTR order */
gap: 6px;
width: fit-content;
}
.stars input {
display: none;
}
.star {
cursor: pointer;
font-size: 28px;
line-height: 1;
filter: grayscale(.6);
transition: transform .05s ease;
}
.star::before {
content: "☆";
}
/* On hover, fill all stars to the left (and including hovered) */
.stars label.star:hover,
.stars label.star:hover ~ label.star {
transform: scale(1.25);
}
.stars label.star:hover::before,
.stars label.star:hover ~ label.star::before {
content: "★";
color: #f59e0b;
filter: none;
}
.stars label.star:hover,
.stars label.star:hover ~ label.star {
color: #f59e0b;
filter: none;
}

/* On checked, fill all stars to the left (and including selected) */
.stars input:checked ~ label.star::before,
.stars input:checked ~ label.star {
content: "★";
color: #f59e0b;
filter: none;
}

.row {
display: grid;
gap: 6px
}

button {
appearance: none;
border: 1px solid var(--border);
background: #111827;
color: #fff;
padding: 10px 14px;
border-radius: 10px;
font-weight: 600;
cursor: pointer
}

button.secondary {
background: #fff;
color: #111827
}

.note {
color: var(--muted);
font-size: 12px
}

pre {
background: #0b1020;
color: #d1d5db;
padding: 12px;
border-radius: 10px;
overflow: auto;
max-height: 240px
}

.actions {
display: flex;
gap: 10px;
justify-content: flex-end;
margin-top: 8px
}

#alert-container {
position: fixed;
z-index: 9999;
bottom: 24px;
right: 24px;
display: flex;
flex-direction: column-reverse; /* new alerts on top */
gap: 12px;
max-width: 860px;
margin-left: 64px;
pointer-events: none;
}
.toast-alert {
display: flex;
align-items: start;
background: #e7f5ff;
color: #155577;
border-left: 4px solid #228be6;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.13);
margin: 0;
padding: 16px 44px 16px 16px;
font-size: 15px;
position: relative;
min-width: 220px;
max-width: 100%;
pointer-events: auto;
}
.toast-alert.toast-info {
background: #e7f5ff;
border-color: #228be6;
color: #155577;
}
.toast-alert.toast-error {
background: #ffceca;
border-color: #ff4d4f;
color: #a8071a;
}
.toast-close {
position: absolute;
top: 8px;
right: 10px;
background: none;
border: none;
color: inherit;
font-size: 19px;
cursor: pointer;
line-height: 1;
padding: 0;
opacity: 0.65;
transition: opacity 0.19s;
}
.toast-close:hover {
opacity: 1;
}
Loading