Skip to content
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
280 commits
Select commit Hold shift + click to select a range
bcaff40
add open browser button to resource list
Apr 10, 2024
f258012
add open browser button
Apr 10, 2024
b3d3c86
add region flag
Apr 10, 2024
97df4af
review comments
Apr 11, 2024
677db72
Merge pull request #17 from FalkorDB/16-open-falkordb-instance-in-fal…
dudizimber Apr 14, 2024
c9bb0f9
add fix for unknown timezone
Apr 14, 2024
57d9505
fix icon color
Apr 14, 2024
ab2d24e
Merge pull request #18 from FalkorDB/107-time-should-be-localized
gkorland Apr 14, 2024
b00eb5d
Merge pull request #19 from FalkorDB/16-open-falkordb-instance-in-fal…
gkorland Apr 14, 2024
9881dc0
fix show button when instance is not running
Apr 15, 2024
5b2148f
Update pages/access/[serviceId]/[environmentId]/[resourceId]/[resourc…
dudizimber Apr 15, 2024
7edf8b8
Merge pull request #20 from FalkorDB/16-open-falkordb-instance-in-fal…
dudizimber Apr 15, 2024
1353429
Merge remote-tracking branch 'falkordb/main' into staging
Apr 25, 2024
2629cf6
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber May 1, 2024
9d2290d
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber May 12, 2024
5ce5039
send tls query param to browser
dudizimber May 12, 2024
b2041c4
Merge pull request #22 from FalkorDB/staging
dudizimber May 12, 2024
9a2d4cf
add mail templates to docker file
dudizimber May 12, 2024
31cf638
Merge pull request #26 from FalkorDB/25-send-tls-query-param-to-falko…
dudizimber May 12, 2024
b030de7
fix mail images path
dudizimber May 12, 2024
88c8df7
Merge pull request #28 from FalkorDB/27-images-not-showing-up-in-emails
dudizimber May 12, 2024
6e62791
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber May 23, 2024
70d380b
Merge remote-tracking branch 'falkordb/main' into staging
dudizimber May 23, 2024
f77f9e4
fix cloud logos
dudizimber May 23, 2024
e485f26
add "mail" assets to middleware
dudizimber May 23, 2024
1f7506e
Merge pull request #29 from FalkorDB/staging
dudizimber May 23, 2024
b5e55d4
fix cloud icon
dudizimber May 28, 2024
8c83813
Merge pull request #32 from FalkorDB/31-cloud-icon-not-showing-when-c…
dudizimber May 28, 2024
9c9199b
add "name" column to instances list
dudizimber Jun 6, 2024
257b48a
fix connect icon path
dudizimber Jun 6, 2024
e2074d6
Merge pull request #34 from FalkorDB/33-show-exported-fields-in-the-i…
dudizimber Jun 6, 2024
ebca983
filter out dedicated free tier if user does not have instances
dudizimber Jun 9, 2024
df0574c
fix hide free dedicated tier
dudizimber Jun 10, 2024
b800df6
fix filter issue
dudizimber Jun 10, 2024
a9bb831
fix bug
dudizimber Jun 10, 2024
257b443
fix conditional
dudizimber Jun 10, 2024
d54d510
Merge pull request #36 from FalkorDB/35-hide-dedicated-free-instance-…
dudizimber Jun 10, 2024
7569236
filter instance type based on cloud provider
dudizimber Jun 11, 2024
99abb81
fix hide when there are no subscriptions
dudizimber Jun 13, 2024
7b0944f
Merge pull request #38 from FalkorDB/35-hide-dedicated-free-instance-…
dudizimber Jun 13, 2024
434f4d1
fix hide free tier
dudizimber Jun 13, 2024
41b3afa
Merge pull request #39 from FalkorDB/35-hide-dedicated-free-instance-…
dudizimber Jun 13, 2024
1a5e37b
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Jun 16, 2024
03bb6e3
Merge remote-tracking branch 'falkordb/main' into staging
dudizimber Jun 16, 2024
df91c21
sort create instance fields
dudizimber Jun 16, 2024
dce46ac
Merge pull request #42 from FalkorDB/staging
dudizimber Jun 16, 2024
75f0e6c
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Jun 23, 2024
9d66c9e
Merge remote-tracking branch 'falkordb/main' into staging
dudizimber Jun 23, 2024
fd15a0f
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Jun 26, 2024
13a7e43
remove duplicated import
dudizimber Jun 26, 2024
e5fd155
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Jul 4, 2024
a2978b1
Merge pull request #44 from FalkorDB/staging
dudizimber Jul 4, 2024
21cb852
fix undefined offering
dudizimber Jul 7, 2024
f8a106a
Merge pull request #45 from FalkorDB/staging
dudizimber Jul 7, 2024
4bb2781
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Jul 24, 2024
ea8789f
yarn install
dudizimber Jul 24, 2024
caa1203
Merge pull request #47 from FalkorDB/staging
dudizimber Jul 24, 2024
b4fbf6c
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Aug 8, 2024
e04250f
fix open replication deployment
dudizimber Aug 8, 2024
6bf8c42
fix error, add id to script
dudizimber Aug 8, 2024
c3fe1ef
fix error
dudizimber Aug 8, 2024
e37b2ce
Merge remote-tracking branch 'falkordb/staging' into 48-open-in-brows…
dudizimber Aug 8, 2024
83a1c03
Merge pull request #49 from FalkorDB/staging
dudizimber Aug 8, 2024
ef913e4
Merge pull request #50 from FalkorDB/48-open-in-browser-does-not-work…
dudizimber Aug 8, 2024
74ae4fd
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Sep 3, 2024
b3ed8d1
Merge pull request #51 from FalkorDB/staging
dudizimber Sep 3, 2024
1e381a6
add log
dudizimber Sep 3, 2024
cbe6cfc
log
dudizimber Sep 3, 2024
4a6e7b6
fix nextRequest.get is not a function
dudizimber Sep 3, 2024
ba796aa
Merge pull request #52 from FalkorDB/staging
dudizimber Sep 3, 2024
47b19d0
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Sep 18, 2024
88ea84e
fix add connect handler
dudizimber Sep 18, 2024
74b9d18
fixes
dudizimber Sep 19, 2024
9d35d66
purify destination
dudizimber Sep 19, 2024
42fe1af
Merge pull request #53 from FalkorDB/staging
dudizimber Sep 19, 2024
a63ed58
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Sep 26, 2024
63d29c1
Merge remote-tracking branch 'falkordb/main' into staging
dudizimber Sep 26, 2024
a7c5661
allow connect when instance is running
dudizimber Sep 26, 2024
e75b346
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Sep 27, 2024
f23e181
Merge pull request #54 from FalkorDB/staging
dudizimber Sep 27, 2024
8b4a5ee
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Oct 8, 2024
968e7bc
lock
dudizimber Oct 8, 2024
17934c7
Merge remote-tracking branch 'falkordb/staging' into 37-add-support-f…
dudizimber Oct 8, 2024
8e8767a
fix import
dudizimber Oct 8, 2024
5f732fe
Merge pull request #55 from FalkorDB/staging
dudizimber Oct 8, 2024
70165cf
fix import
dudizimber Oct 8, 2024
839ad8e
fix dockerfile
dudizimber Oct 8, 2024
269a9c6
Merge pull request #58 from FalkorDB/staging
dudizimber Oct 8, 2024
b2ade92
Merge branch 'main' into 37-add-support-for-aws
dudizimber Oct 8, 2024
1c98c03
Update CreateResourceInstanceForm.jsx
dudizimber Oct 8, 2024
f76a1d4
add c6i and t2 instances
dudizimber Oct 8, 2024
e8b50d6
Merge pull request #56 from FalkorDB/37-add-support-for-aws
dudizimber Oct 8, 2024
7ff7bfd
fix filter
dudizimber Nov 25, 2024
639c131
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Nov 25, 2024
ee40811
change to formatDateLocal
dudizimber Nov 25, 2024
ea3da89
Merge pull request #62 from FalkorDB/staging
dudizimber Nov 25, 2024
a61eaf3
Merge branch 'master' into staging
dudizimber Dec 4, 2024
182027b
sort plans
dudizimber Dec 4, 2024
0866cf2
Merge pull request #63 from FalkorDB/staging
dudizimber Dec 4, 2024
6f37054
fix missing box
dudizimber Dec 5, 2024
5271b89
Merge pull request #64 from FalkorDB/staging
dudizimber Dec 5, 2024
439b664
add CSP_SRC env var
dudizimber Dec 8, 2024
696266b
Merge pull request #66 from FalkorDB/65-add-csp-sources-as-env-var
dudizimber Dec 8, 2024
4608440
add clarity user id
dudizimber Dec 9, 2024
708b61a
add clarity cookie consent
dudizimber Dec 9, 2024
d6edc44
Merge pull request #68 from FalkorDB/67-set-clarity-custom-id
dudizimber Dec 9, 2024
1a78d56
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Dec 12, 2024
d886e2b
Merge pull request #69 from FalkorDB/staging
dudizimber Dec 12, 2024
ac7e8ef
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Dec 24, 2024
733832e
Merge pull request #70 from FalkorDB/staging
dudizimber Dec 24, 2024
0d3a816
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Feb 13, 2025
e10097e
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Feb 13, 2025
4d8bdb8
sort fields
dudizimber Feb 13, 2025
db04a15
prettier
dudizimber Feb 13, 2025
3cee7c8
trycatch clarity
dudizimber Feb 13, 2025
c29e1cc
fix var
dudizimber Feb 13, 2025
6eaf4d8
Merge pull request #71 from FalkorDB/staging
dudizimber Feb 13, 2025
6b189ff
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Feb 19, 2025
b39068c
Merge pull request #73 from FalkorDB/staging
dudizimber Feb 19, 2025
e86e58a
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber Feb 24, 2025
b4e4ba1
add node instance type filter
dudizimber Feb 24, 2025
ea6459e
Merge pull request #75 from FalkorDB/staging
dudizimber Feb 24, 2025
e7bfe8d
rollback
dudizimber Feb 25, 2025
e8dbe0b
Merge branch 'master' into staging
dudizimber Mar 20, 2025
7a220cb
yarn
dudizimber Mar 20, 2025
b89fc40
Merge pull request #77 from FalkorDB/staging
dudizimber Mar 20, 2025
7259ca1
add grafana dashboard
dudizimber Apr 3, 2025
1e0639f
fix errors
dudizimber Apr 3, 2025
2e7b0ab
add domain to auth cookie
dudizimber Apr 17, 2025
fc33187
Merge branch 'main' into staging
dudizimber Apr 17, 2025
60bb07a
Merge branch 'master' into staging
dudizimber Apr 17, 2025
68b678e
validate nodeInstanceType
dudizimber Apr 17, 2025
6d3a7fc
Merge branch '78-add-link-to-grafana-dashboard' into staging
dudizimber Apr 17, 2025
75cec2b
change image
dudizimber Apr 17, 2025
fc34f06
set minHeight to 700px
dudizimber Apr 20, 2025
963a260
Merge branch '78-add-link-to-grafana-dashboard' into staging
dudizimber Apr 20, 2025
26d3d93
Merge pull request #81 from FalkorDB/staging
dudizimber Apr 20, 2025
a89e5c3
Merge branch 'master' into staging
dudizimber May 6, 2025
3fb429c
Merge pull request #82 from FalkorDB/staging
dudizimber May 6, 2025
12c1220
Merge remote-tracking branch 'falkordb/master' into staging
dudizimber May 22, 2025
b330593
yarn
dudizimber May 22, 2025
3d6b424
Merge branch 'staging' into 79-add-tab-for-import-export-rdb
dudizimber May 22, 2025
b13873e
add export rdb tab
dudizimber May 22, 2025
74064df
lint
dudizimber May 22, 2025
03f364b
Merge pull request #83 from FalkorDB/79-add-tab-for-import-export-rdb
dudizimber May 22, 2025
9e77a8c
disable export button if status is not running
dudizimber May 25, 2025
5b2abdf
Merge pull request #84 from FalkorDB/79-add-tab-for-import-export-rdb
dudizimber May 25, 2025
57b1291
add import rdb
dudizimber Jun 4, 2025
36524bc
fix unused var
dudizimber Jun 4, 2025
a36a125
Merge pull request #86 from FalkorDB/85-add-import-rdb-feature
dudizimber Jun 4, 2025
530e534
fix import
dudizimber Jun 8, 2025
bef0957
Merge pull request #87 from FalkorDB/85-add-import-rdb-feature
dudizimber Jun 8, 2025
0890719
Merge branch 'master' into staging
dudizimber Jul 3, 2025
a4e426e
fix react updates
dudizimber Jul 6, 2025
69f4cf1
Merge branch 'main' into staging
dudizimber Jul 6, 2025
649178a
change syntax to tanstack
dudizimber Jul 6, 2025
7dc2e0a
Merge pull request #89 from FalkorDB/staging
dudizimber Jul 6, 2025
9639257
Merge branch 'master' into staging
dudizimber Jul 6, 2025
26fd0f2
Merge pull request #90 from FalkorDB/staging
dudizimber Jul 6, 2025
d7436a6
Merge branch 'master' into staging
dudizimber Jul 14, 2025
62b31f8
Merge pull request #91 from FalkorDB/staging
dudizimber Jul 14, 2025
d146193
Merge branch 'staging'
dudizimber Jul 23, 2025
2d91b85
Merge pull request #92 from FalkorDB/staging
dudizimber Jul 23, 2025
caf7efd
fix cookie setup in password login
dudizimber Jul 24, 2025
f49cc24
Merge pull request #94 from FalkorDB/93-clear-token-cookie-in-the-use…
dudizimber Jul 24, 2025
25b2eba
fix "new to..." string
dudizimber Jul 27, 2025
f676c0b
Merge pull request #96 from FalkorDB/staging
dudizimber Jul 27, 2025
cad656b
hide connect button for internal instances
dudizimber Aug 10, 2025
55666c1
Merge branch 'master' into staging
dudizimber Aug 10, 2025
f7af166
Merge pull request #99 from FalkorDB/staging
dudizimber Aug 10, 2025
6f8d727
fix tasks response
dudizimber Aug 31, 2025
732ab09
Merge pull request #101 from FalkorDB/staging
dudizimber Aug 31, 2025
2e23474
Update page.tsx
dudizimber Sep 29, 2025
3fa761d
Merge pull request #104 from FalkorDB/dudizimber-patch-1
dudizimber Sep 29, 2025
6f38c6e
add error message when failed
dudizimber Sep 30, 2025
6f6ef1e
Merge branch 'master' into staging
dudizimber Sep 30, 2025
9278fda
remove RestartIcon
dudizimber Sep 30, 2025
287cb2f
Merge pull request #105 from FalkorDB/staging
dudizimber Sep 30, 2025
3713024
Merge branch 'master' into staging
dudizimber Oct 16, 2025
a9ea107
add import load indicator
dudizimber Oct 16, 2025
b638fc5
Merge pull request #108 from FalkorDB/staging
dudizimber Oct 16, 2025
6176d3f
fix tag manager installation
dudizimber Oct 19, 2025
245a00c
Merge pull request #109 from FalkorDB/staging
dudizimber Oct 19, 2025
273e3d8
add reo integration
dudizimber Oct 21, 2025
3e5e650
call startReo
dudizimber Oct 21, 2025
a777eba
fix reo calling
dudizimber Oct 21, 2025
f872f80
set default resource type to Standalone
dudizimber Oct 21, 2025
a774507
Merge branch '102-change-order-for-deployment-modes-main' into staging
dudizimber Oct 21, 2025
38c5e7f
Merge pull request #112 from FalkorDB/staging
dudizimber Oct 21, 2025
43f2828
chore: hide LiveLogs tab
dudizimber Oct 26, 2025
9ffb582
chore: remove Logs import
dudizimber Oct 26, 2025
8457287
Merge pull request #114 from FalkorDB/staging
dudizimber Oct 26, 2025
ec6c333
chore: remove logs tab
dudizimber Oct 26, 2025
3e45bd4
Merge pull request #115 from FalkorDB/staging
dudizimber Oct 27, 2025
ab75050
Merge branch 'master' into staging
dudizimber Oct 29, 2025
1d87fa2
fix merge
dudizimber Oct 29, 2025
ddf007e
update deps
dudizimber Oct 29, 2025
826723c
update deps
dudizimber Oct 29, 2025
6ed6251
Merge pull request #116 from FalkorDB/staging
dudizimber Oct 29, 2025
b5ad1c6
remove network type field unless customNetworkFieldExists
dudizimber Oct 30, 2025
6f8cff9
fix cookie consent handler
dudizimber Oct 30, 2025
96a4879
make vars const
dudizimber Oct 30, 2025
bf9a5fa
Merge pull request #118 from FalkorDB/staging
dudizimber Oct 30, 2025
d1a3259
skip recaptcha for api keys
dudizimber Nov 5, 2025
fd91e2d
Merge pull request #120 from FalkorDB/staging
dudizimber Nov 5, 2025
113f6f4
Merge branch 'master' into staging
dudizimber Nov 25, 2025
fe77009
update deps
dudizimber Nov 25, 2025
763c6d5
remove metrics tab for free tier
dudizimber Nov 25, 2025
7dfbd26
Merge pull request #122 from FalkorDB/staging
dudizimber Nov 25, 2025
7c689b7
hide custom networks and cloud provider page if user is not subscribe…
dudizimber Nov 26, 2025
d32f177
Merge pull request #124 from FalkorDB/staging
dudizimber Nov 26, 2025
83a69d8
Fix: Enhance validation for GCP node instance type and correct missin…
dudizimber Dec 4, 2025
92c70b7
Fix: Improve error handling and validation in InstanceForm submission…
dudizimber Dec 4, 2025
5338735
Merge pull request #128 from FalkorDB/staging
dudizimber Dec 4, 2025
ab685fa
feat: Add extractAppVersion utility to parse app version from plan ve…
MuhammadQadora Dec 4, 2025
bcd7f36
feat: Add version details to ResourceInstanceDetails and update schem…
MuhammadQadora Dec 4, 2025
e740e32
fix: Remove unused import of 'any' from prop-types in InstanceDetails…
MuhammadQadora Dec 4, 2025
b97711c
fix: Remove debug console logs from InstanceDetailsPage
MuhammadQadora Dec 4, 2025
a02f87e
fix: Update version labels in ResourceInstanceDetails for clarity
MuhammadQadora Dec 8, 2025
4248577
feat: Enhance version extraction to display FalkorDB version alongsid…
MuhammadQadora Dec 8, 2025
7fb4132
feat: Update version display logic to exclude 'unknown' values for Cl…
MuhammadQadora Dec 8, 2025
be2273f
Merge pull request #129 from FalkorDB/enable-displaying-falkordb-vers…
MuhammadQadora Dec 8, 2025
2fabc0d
Merge branch 'master' into staging
dudizimber Dec 21, 2025
b1539ed
Refactor Backup component: Clean up state management and improve read…
dudizimber Dec 21, 2025
ea88961
fix duplicated key
dudizimber Dec 21, 2025
4dc38d0
remove package flow
dudizimber Dec 21, 2025
45644da
Merge pull request #131 from FalkorDB/staging
dudizimber Dec 21, 2025
46954bd
Add instance type utilities and implementation examples for cloud pro…
MuhammadQadora Jan 22, 2026
612b9bc
Remove unnecessary category retrieval in getInstanceTypeLabel function
MuhammadQadora Jan 22, 2026
776ea89
Refactor cloud provider filtering in getDeploymentConfigurationFields…
MuhammadQadora Jan 22, 2026
1e56c15
Enhance error handling and type validation in getDeploymentConfigurat…
MuhammadQadora Jan 22, 2026
19e997d
Enhance SingleSelectAutocomplete to support both string and object ar…
MuhammadQadora Jan 22, 2026
c727c00
Remove implementation examples and README for instance type utilities
MuhammadQadora Jan 22, 2026
19d2194
Merge pull request #132 from FalkorDB/feature/prettify-instance-types…
dudizimber Jan 25, 2026
b7f9bf5
Merge branch 'master' into staging
Jan 29, 2026
ef9b52c
fix error
Jan 29, 2026
f91bccf
remove playwright
Jan 29, 2026
68f831a
Merge pull request #134 from FalkorDB/staging
dudizimber Jan 29, 2026
133878b
fix header get
Jan 29, 2026
fa07085
revert port config
Jan 29, 2026
27eb700
Merge pull request #135 from FalkorDB/staging
dudizimber Jan 29, 2026
be0e171
implement rate limiting for password reset and sign-in endpoints
Mar 19, 2026
cab8e2a
Merge branch 'main' into staging
Mar 19, 2026
6fdc90b
Merge branch 'master' into staging
Mar 19, 2026
0ff681d
Refactor: Update imports and improve tsconfig structure
Mar 19, 2026
2d8f637
Fix: Ensure proper redirection in middleware error handling
Mar 19, 2026
8fcdd7b
Refactor: Update layout and analytics integration with improved scrip…
Mar 30, 2026
46424d4
Refactor: Improve code formatting and structure in layout and GA init…
Mar 30, 2026
4d5548c
Refactor: Enhance date formatting and improve middleware CORS handling
Apr 6, 2026
3cd2b23
Refactor: Update favicon path and enhance middleware CORS handling
Apr 6, 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
18 changes: 16 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,23 @@
"simple-import-sort/imports": "warn",
"simple-import-sort/exports": "warn",
"no-undef": "error",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_",
"caughtErrorsIgnorePattern": "^_"
}
],
"@typescript-eslint/no-require-imports": "off",
"no-unused-vars": "error",
"no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_",
"caughtErrorsIgnorePattern": "^_"
}
],
"react/jsx-uses-vars": "warn",
"no-duplicate-imports": "error",
"react/jsx-no-undef": "warn",
Expand Down
18 changes: 9 additions & 9 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,25 @@ updates:
directory: "/"
schedule:
interval: "weekly"
groups:
groups:
github-actions:
dependency-type: "production"
update-types:
- "minor"
- "patch"
- "minor"
- "patch"

- package-ecosystem: "npm"
- package-ecosystem: "npm"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
groups:
groups:
npm-updates:
dependency-type: "production"
update-types:
- "minor"
- "patch"
- "minor"
- "patch"

- package-ecosystem: "docker"
- package-ecosystem: "docker"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
interval: "weekly"
4 changes: 2 additions & 2 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@

- name: Build on linux/amd64 only
timeout-minutes: 20
uses: docker/build-push-action@v6

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'docker/build-push-action' with ref 'v6', not a pinned commit hash
with:
context: .
file: ./Dockerfile
file: ./Dockerfile.frontend
platforms: linux/amd64
push: false
tags: ${{ steps.meta.outputs.tags }}
Expand All @@ -82,7 +82,7 @@
uses: actions/checkout@v6

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'docker/setup-buildx-action' with ref 'v3', not a pinned commit hash
with:
platforms: linux/arm64

Expand All @@ -90,7 +90,7 @@
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step: meta
uses 'docker/metadata-action' with ref 'v5', not a pinned commit hash
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
Expand All @@ -101,7 +101,7 @@

- name: Build on linux/arm64 only
timeout-minutes: 20
uses: docker/build-push-action@v6

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'docker/build-push-action' with ref 'v6', not a pinned commit hash
with:
context: .
file: ./Dockerfile
Expand Down Expand Up @@ -174,10 +174,10 @@
- name: Build and push ${{ matrix.platform }} by digest
id: build
timeout-minutes: 30
uses: docker/build-push-action@v6

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step: build
uses 'docker/build-push-action' with ref 'v6', not a pinned commit hash
with:
context: .
file: ./Dockerfile
file: ./Dockerfile.frontend
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
Expand Down Expand Up @@ -221,13 +221,13 @@
path: /tmp/digests

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'docker/setup-buildx-action' with ref 'v3', not a pinned commit hash

# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step: meta
uses 'docker/metadata-action' with ref 'v5', not a pinned commit hash
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
Expand All @@ -240,7 +240,7 @@
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name == 'release'
uses: docker/login-action@v3

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'docker/login-action' with ref 'v3', not a pinned commit hash
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
Expand All @@ -262,7 +262,7 @@
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name == 'release'
uses: sigstore/cosign-installer@main

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Package' step
Uses Step
uses 'sigstore/cosign-installer' with ref 'main', not a pinned commit hash

# Sign the resulting Docker image digest except on PRs.
# https://github.com/sigstore/cosign
Expand Down
47 changes: 0 additions & 47 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,50 +73,3 @@ jobs:
name: playwright-report
path: playwright-report/
retention-days: 7

mattermost-notification-1:
name: Notify Mattermost
runs-on: ubuntu-latest
needs: test
if: always() && (needs.test.result == 'success' || needs.test.result == 'failure' || needs.test.result == 'cancelled')
steps:
- name: Mattermost Notification
uses: tferreira/matterfy@v1.9
with:
type: ${{ needs.test.result }}
job_name: "*Playwright Tests - SaaSBuilder*"
url: ${{ secrets.MATTERMOST_WEBHOOK_URL }}

mattermost-notification-2:
name: Notify Commits on Mattermost
runs-on: ubuntu-latest
needs: test
if: always() && (needs.test.result == 'failure' || needs.test.result == 'cancelled')
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Mattermost Notification
run: |
# Get commits since last successful workflow run
# This gets commits from the last 8 hours as a fallback approach
SINCE_DATE=$(date -d '8 hours ago' --iso-8601)
COMMITS=$(git log --oneline --since="$SINCE_DATE" --pretty=format:"• %h %s (%an)")

# If no commits in last 8 hours, get last 3 commits
if [ -z "$COMMITS" ]; then
COMMITS=$(git log --oneline -3 --pretty=format:"• %h %s (%an)")
fi

MESSAGE="❌ @channel SaaSBuilder Playwright tests failed! Please investigate immediately.

**Recent commits:**
$COMMITS"

# Escape the message for JSON
MESSAGE_JSON=$(echo "$MESSAGE" | jq -Rs .)

curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":$MESSAGE_JSON}" \
${{ secrets.MATTERMOST_WEBHOOK_URL }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

# production
/build
/dist

# misc
.DS_Store
Expand Down
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,8 @@
"typescript.updateImportsOnFileMove.enabled": "always",
"editor.codeActionsOnSave": {
"source.fixAll": "always"
},
"[javascriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}
11 changes: 10 additions & 1 deletion Dockerfile → Dockerfile.frontend
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,16 @@ RUN yarn install --frozen-lockfile --production=false --network-timeout 1000000
COPY --link . .

# Build application
RUN yarn run build
RUN --mount=type=cache,target=/root/.cache/yarn \
yarn run build:frontend

# Remove development dependencies
RUN --mount=type=cache,target=/root/.cache/yarn \
yarn install --production=true --network-timeout 1000000
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

security: Missing --ignore-scripts in yarn install. Add --ignore-scripts to prevent execution of arbitrary scripts from dependencies.

Suggested change
yarn install --production=true --network-timeout 1000000
yarn install --production=true --network-timeout 1000000 --ignore-scripts


# Remove development dependencies
RUN --mount=type=cache,target=/root/.cache/yarn \
yarn install --production=true --network-timeout 1000000
Comment on lines +33 to +34
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

performance: Redundant yarn install command. Remove this duplicate command to improve build time and reduce potential inconsistencies.


# Final stage for app image
FROM base
Expand Down
56 changes: 56 additions & 0 deletions Dockerfile.mail
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# syntax = docker/dockerfile:1

# Adjust NODE_VERSION as desired
ARG NODE_VERSION=20.11.1
FROM node:${NODE_VERSION}-slim as base

# App lives here
WORKDIR /app

# Set production environment
ENV NODE_ENV="production"
ARG YARN_VERSION=1.22.21
RUN npm install -g yarn@$YARN_VERSION --force
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

security: Missing --ignore-scripts in npm install. Add --ignore-scripts to prevent execution of arbitrary scripts from dependencies.

Suggested change
RUN npm install -g yarn@$YARN_VERSION --force
RUN npm install -g yarn@$YARN_VERSION --force --ignore-scripts



# Throw-away build stage to reduce size of final image
FROM base as build

# Install packages needed to build node modules
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3

# Install node modules
COPY --link package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production=false

# Copy application code
COPY --link . .
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

security: Unrestricted COPY . . command can leak secrets into the image. Create and use a .dockerignore file to exclude sensitive files and directories like .git, .env, and node_modules.


# Build application
RUN yarn run build:mail

# Remove development dependencies
RUN yarn install --production=true


# Final stage for app image
FROM base

ENV NODE_ENV production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

# Copy built application
COPY --from=build /app /app
COPY --from=build /app/src/server/mail-service/ejsTemplates /app/dist/ejsTemplates

RUN chown -R nextjs:nodejs /app

# Start the server by default, this can be overwritten at runtime
EXPOSE 3000

USER nextjs


CMD [ "node", "dist/mail-server/index.js" ]
4 changes: 2 additions & 2 deletions app/(dashboard)/alerts/components/NotificationsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import ServiceNameWithLogo from "src/components/ServiceNameWithLogo/ServiceNameW
import { useGlobalData } from "src/providers/GlobalDataProvider";
import { EventType } from "src/types/event";
import { ResourceInstance } from "src/types/resourceInstance";
import formatDateUTC from "src/utils/formatDateUTC";
import formatDateLocal from "src/utils/formatDateLocal";

import NotificationsTableHeader from "./NotificationsTableHeader";
import MessageInput from "src/components/MessageInput/MessageInput";
Expand Down Expand Up @@ -49,7 +49,7 @@ const NotificationsTable = () => {
const upgradePath = instance.maintenanceTasks?.upgrade_paths?.[0];
const status = upgradePath?.upgrade_status;
const scheduledTime = upgradePath?.upgrade_path_scheduled_at;
const message = `Upgrade is ${statusMap[status] || status}${scheduledTime ? " at " + formatDateUTC(scheduledTime) : ""}`;
const message = `Upgrade is ${statusMap[status] || status}${scheduledTime ? " at " + formatDateLocal(scheduledTime) : ""}`;
return {
...instance,
message,
Expand Down
6 changes: 3 additions & 3 deletions app/(dashboard)/cloud-accounts/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
getGcpBootstrapShellCommand,
getGcpShellScriptOffboardCommand,
} from "src/utils/accountConfig/accountConfig";
import formatDateUTC from "src/utils/formatDateUTC";
import formatDateLocal from "src/utils/formatDateLocal";
import { getCloudAccountsRoute } from "src/utils/routes";
import CloudProviderAccountOrgIdModal from "components/CloudProviderAccountOrgIdModal/CloudProviderAccountOrgIdModal";
import DataGridText from "components/DataGrid/DataGridText";
Expand Down Expand Up @@ -412,11 +412,11 @@ const CloudAccountsPage = () => {
header: "Subscription Owner",
}
),
columnHelper.accessor((row) => formatDateUTC(row.created_at), {
columnHelper.accessor((row) => formatDateLocal(row.created_at), {
id: "created_at",
header: "Created On",
cell: (data) => {
return data.row.original.created_at ? formatDateUTC(data.row.original.created_at) : "-";
return data.row.original.created_at ? formatDateLocal(data.row.original.created_at) : "-";
},
meta: {
minWidth: 225,
Expand Down
6 changes: 3 additions & 3 deletions app/(dashboard)/components/EventsTable/EventsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import ServiceNameWithLogo from "src/components/ServiceNameWithLogo/ServiceNameW
import { useGlobalData } from "src/providers/GlobalDataProvider";
import { AuditEvent } from "src/types/auditEvent";
import { EventType } from "src/types/event";
import formatDateUTC from "src/utils/formatDateUTC";
import formatDateLocal from "src/utils/formatDateLocal";
import { getAccessControlRoute } from "src/utils/route/access/accessRoute";

const columnHelper = createColumnHelper<AuditEvent>();
Expand Down Expand Up @@ -109,10 +109,10 @@ const EventsTable = ({
header: "Resource Name",
enableSorting: false,
}),
time: columnHelper.accessor((row) => formatDateUTC(row.time), {
time: columnHelper.accessor((row) => formatDateLocal(row.time), {
id: "time",
header: "Time",
cell: (data) => (data.row.original.time ? formatDateUTC(data.row.original.time) : "-"),
cell: (data) => (data.row.original.time ? formatDateLocal(data.row.original.time) : "-"),
meta: {
minWidth: 200,
},
Expand Down
18 changes: 11 additions & 7 deletions app/(dashboard)/components/Layout/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ type Overlay = "plan-details" | "documentation" | "pricing" | "support" | "api-d

const Sidebar = () => {
const currentPath = usePathname();
const { serviceOfferings } = useGlobalData();
const { serviceOfferings, subscriptions } = useGlobalData();
const [isOverlayOpen, setIsOverlayOpen] = useState(false);
const [overlayType, setOverlayType] = useState<Overlay>("plan-details");
const [expandedMenus, setExpandedMenus] = useState({
Expand Down Expand Up @@ -171,17 +171,21 @@ const Sidebar = () => {

const showCloudProvidersPage = useMemo(() => {
return Boolean(
serviceOfferings.find(
(offering) => offering.serviceModelType === "BYOA" || offering.serviceModelType === "ON_PREM_COPILOT"
)
subscriptions.find(s => {
const offering = serviceOfferings.find(o => s.productTierId === o.productTierID);
return offering?.serviceModelType === "BYOA" || offering?.serviceModelType === "ON_PREM_COPILOT"
})
);
}, [serviceOfferings]);
}, [serviceOfferings, subscriptions]);

const showCustomNetworksPage = useMemo(() => {
return Boolean(
serviceOfferings.some((offering) => offering.serviceModelFeatures?.find((el) => el.feature === "CUSTOM_NETWORKS"))
subscriptions.find(s => {
const offering = serviceOfferings.find(o => s.productTierId === o.productTierID)
return offering?.serviceModelFeatures?.find((el) => el.feature === "CUSTOM_NETWORKS");
})
);
}, [serviceOfferings]);
}, [serviceOfferings, subscriptions]);
Comment on lines 175 to +191
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

performance: Inefficient nested find on arrays. Use 'serviceOfferingsObj' for O(1) lookup to improve performance.

Comment on lines 175 to +191
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Guard against undefined global data before calling .find.

If useGlobalData() returns undefined arrays while loading, the .find calls will throw and crash the sidebar. Use nullish coalescing (and some) to keep this safe.

✅ Proposed fix
   const showCloudProvidersPage = useMemo(() => {
-    return Boolean(
-      subscriptions.find(s => {
-        const offering = serviceOfferings.find(o => s.productTierId === o.productTierID);
-        return offering?.serviceModelType === "BYOA" || offering?.serviceModelType === "ON_PREM_COPILOT"
-      })
-    );
+    const subs = subscriptions ?? [];
+    const offerings = serviceOfferings ?? [];
+    return subs.some((s) => {
+      const offering = offerings.find((o) => s.productTierId === o.productTierID);
+      return (
+        offering?.serviceModelType === "BYOA" ||
+        offering?.serviceModelType === "ON_PREM_COPILOT"
+      );
+    });
   }, [serviceOfferings, subscriptions]);

   const showCustomNetworksPage = useMemo(() => {
-    return Boolean(
-      subscriptions.find(s => {
-        const offering = serviceOfferings.find(o => s.productTierId === o.productTierID)
-        return offering?.serviceModelFeatures?.find((el) => el.feature === "CUSTOM_NETWORKS");
-      })
-    );
+    const subs = subscriptions ?? [];
+    const offerings = serviceOfferings ?? [];
+    return subs.some((s) => {
+      const offering = offerings.find((o) => s.productTierId === o.productTierID);
+      return offering?.serviceModelFeatures?.some(
+        (el) => el.feature === "CUSTOM_NETWORKS"
+      );
+    });
   }, [serviceOfferings, subscriptions]);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const showCloudProvidersPage = useMemo(() => {
return Boolean(
serviceOfferings.find(
(offering) => offering.serviceModelType === "BYOA" || offering.serviceModelType === "ON_PREM_COPILOT"
)
subscriptions.find(s => {
const offering = serviceOfferings.find(o => s.productTierId === o.productTierID);
return offering?.serviceModelType === "BYOA" || offering?.serviceModelType === "ON_PREM_COPILOT"
})
);
}, [serviceOfferings]);
}, [serviceOfferings, subscriptions]);
const showCustomNetworksPage = useMemo(() => {
return Boolean(
serviceOfferings.some((offering) => offering.serviceModelFeatures?.find((el) => el.feature === "CUSTOM_NETWORKS"))
subscriptions.find(s => {
const offering = serviceOfferings.find(o => s.productTierId === o.productTierID)
return offering?.serviceModelFeatures?.find((el) => el.feature === "CUSTOM_NETWORKS");
})
);
}, [serviceOfferings]);
}, [serviceOfferings, subscriptions]);
const showCloudProvidersPage = useMemo(() => {
const subs = subscriptions ?? [];
const offerings = serviceOfferings ?? [];
return subs.some((s) => {
const offering = offerings.find((o) => s.productTierId === o.productTierID);
return (
offering?.serviceModelType === "BYOA" ||
offering?.serviceModelType === "ON_PREM_COPILOT"
);
});
}, [serviceOfferings, subscriptions]);
const showCustomNetworksPage = useMemo(() => {
const subs = subscriptions ?? [];
const offerings = serviceOfferings ?? [];
return subs.some((s) => {
const offering = offerings.find((o) => s.productTierId === o.productTierID);
return offering?.serviceModelFeatures?.some(
(el) => el.feature === "CUSTOM_NETWORKS"
);
});
}, [serviceOfferings, subscriptions]);
🤖 Prompt for AI Agents
In `@app/`(dashboard)/components/Layout/Sidebar.tsx around lines 175 - 191, The
memoized booleans showCloudProvidersPage and showCustomNetworksPage can throw if
subscriptions or serviceOfferings are undefined; update both to safely handle
missing globals by using nullish coalescing and array-safe iteration (e.g.,
(subscriptions ?? []).some(...) and searching within (serviceOfferings ?? [])
with optional chaining) instead of directly calling .find on possibly undefined
arrays, and keep the same matching logic that checks offering?.serviceModelType
and offering?.serviceModelFeatures?.find(...).


// Prefetch Billing Data
const billingStatusQuery = useBillingStatus();
Expand Down
Loading
Loading