Skip to content

Commit 8641724

Browse files
authored
Merge branch 'master' into feature/new-code-editor-ux
2 parents 5d592db + 40d9bf1 commit 8641724

File tree

165 files changed

+4454
-3448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+4454
-3448
lines changed

.circleci/config.yml

Lines changed: 1 addition & 673 deletions
Large diffs are not rendered by default.

.env.local

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ WALLET_CONNECT_PROJECT_ID=<project_id>
66
NOIR_COMPILER_BASE_URL_DEV=<dev_base_endpoint>
77
NOIR_COMPILER_BASE_URL_PROD=<prod_base_endpoint>
88
NOIR_COMPILER_WS_URL_DEV=<dev_websocket_url>
9-
NOIR_COMPILER_WS_URL_PROD=<prod_websocket_url>
9+
NOIR_COMPILER_WS_URL_PROD=<prod_websocket_url>

.github/workflows/pr-reminder.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: PRs reviews reminder
33
on:
44
schedule:
55
- cron: "0 8 * * 1-5"
6-
- cron: '55 8 * * 1-5'
6+
- cron: '50 8 * * 1-5'
77
workflow_dispatch:
88

99
jobs:
@@ -19,7 +19,7 @@ jobs:
1919
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
2020
freeze-date: '2025-07-21T18:00:00Z'
2121
- name: Reminder for standup
22-
if: github.event.schedule == '55 8 * * 1-5'
22+
if: github.event.schedule == '50 8 * * 1-5'
2323
uses: Aniket-Engg/pr-reviews-reminder-action@master
2424
env:
2525
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

apps/remix-dapp/src/locales/en/udapp.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
"udapp.injectedTitle": "Unfortunately it's not possible to create an account using injected provider. Please create the account directly from your provider (i.e metamask or other of the same type).",
6464
"udapp.createSmartAccount": "Create Gnosis Safe Smart Account",
6565
"udapp.createSmartAccountAlpha": "Create Gnosis Safe Smart Account [ALPHA]",
66-
"udapp.createSmartAccountDesc1":"ERC-4337 introduces smart contracts accounts, which are more advanced than traditional EOAs. These accounts offer features like multi-signature functionality, gasless transactions and custom transaction rules.",
67-
"udapp.createSmartAccountDesc2":"These smart contract accounts are often referred to as Smart Accounts. A Safe Smart Account is a Smart Account with the multi-signature functionality of Gnosis Safe at its core.",
68-
"udapp.createSmartAccountDesc3":"A Smart Account will be created with address listed below as the OWNER. The Owner account signs each transaction (user-operation) made using Smart Account.",
69-
"udapp.createSmartAccountDesc4":"A Smart Account will, by default, have a PAYMASTER attached to it to execute GASLESS transactions. Currently, in Remix, the 4337 updates only work on the Gnosis Mainnet & Ethereum Sepolia testnet. ",
70-
"udapp.createSmartAccountDesc5":"The Smart Account creation will require signing an initial transaction in the next step.",
66+
"udapp.createSmartAccountDesc1":"ERC-4337 introduces smart contract accounts, also referred as Smart Accounts. These accounts are more advanced than traditional EOAs and offer features like multi-signature functionality, gasless transactions and custom transaction rules.",
67+
"udapp.createSmartAccountDesc2":"A Safe Smart Account is a Smart Account with the multi-signature functionality of Gnosis Safe at its core.",
68+
"udapp.createSmartAccountDesc3":"Here, a Smart Account will be created with address listed below as the OWNER. The Owner account signs each transaction (user-operation) made using Smart Account.",
69+
"udapp.createSmartAccountDesc4":"This Smart Account will, by default, have a PAYMASTER attached to it to execute GASLESS transactions. Currently, in Remix, the ERC4337 updates only work for GNOSIS Mainnet & Ethereum SEPOLIA testnet. ",
70+
"udapp.createSmartAccountDesc5":"Please note that the Smart Account creation will require signing an initial transaction on the next step.",
7171
"udapp.continue": "Continue",
7272
"udapp.authorize": "Authorize",
7373
"udapp.createNewAccount": "Create a new account",

apps/remix-ide-e2e/src/commands/assistantClearChat.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@ import { NightwatchBrowser } from 'nightwatch'
22
import EventEmitter from 'events'
33

44
class AssistantClearChat extends EventEmitter {
5-
command(this: NightwatchBrowser): NightwatchBrowser {
6-
this.api.perform((done) => {
7-
clearChat(this.api, () => {
8-
done()
9-
this.emit('complete')
10-
})
11-
})
12-
return this
13-
}
5+
command(this: NightwatchBrowser): NightwatchBrowser {
6+
this.api.perform((done) => {
7+
clearChat(this.api, () => {
8+
done()
9+
this.emit('complete')
10+
})
11+
})
12+
return this
13+
}
1414
}
1515

1616
function clearChat(browser: NightwatchBrowser, done: VoidFunction) {
17-
browser
18-
.execute(function () {
19-
(window as any).remixAIChat.current.clearChat();
20-
}, [])
17+
browser
18+
.execute(function () {
19+
(window as any).remixAIChat.current.clearChat();
20+
}, [])
2121

22-
done()
22+
done()
2323
}
2424

2525
module.exports = AssistantClearChat;

apps/remix-ide-e2e/src/commands/assistantSetProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function setAssistant(browser: NightwatchBrowser, provider: string, done: VoidFu
3030
selector: "//*[@data-id='remix-ai-streaming' and @data-streaming='false']",
3131
})
3232
//.pause()
33-
.perform(() => done())
33+
.perform(() => done())
3434
}
3535

3636
module.exports = SetAssistantProvider

apps/remix-ide-e2e/src/commands/hideToolTips.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import EventEmitter from 'events'
33

44
class HideToolTips extends EventEmitter {
55
command(this: NightwatchBrowser) {
6+
console.log('Hiding tooltips...')
67
browser
78
.perform((done) => {
89
browser.execute(function () {

apps/remix-ide-e2e/src/githttpbackend/setup.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ rm -rf git/bare2.git
55
rm -rf git
66
mkdir -p git
77
cd git
8+
git config --global user.name "ci-bot"
9+
git config --global user.email "[email protected]"
810
git clone --bare https://github.com/ethereum/awesome-remix bare.git
911
git clone --bare https://github.com/ethereum/awesome-remix bare2.git

apps/remix-ide-e2e/src/helpers/init.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ type LoadPlugin = {
88
url: string
99
}
1010

11-
1211
// eslint-disable-next-line @typescript-eslint/no-unused-vars
1312
export default function (browser: NightwatchBrowser, callback: VoidFunction, url?: string, preloadPlugins = true, loadPlugin?: LoadPlugin, hideToolTips: boolean = true): void {
1413
browser

apps/remix-ide-e2e/src/tests/ai_panel.test.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ module.exports = {
2222
.addFile('Untitled.sol', sources[0]['Untitled.sol'])
2323
},
2424
// Conversation starter button with data id 'explain-editor' doesn't exist anymore
25-
'Should explain the contract #group1': function (browser: NightwatchBrowser) {
25+
'Should contain message starters #group1': function (browser: NightwatchBrowser) {
2626
browser
2727
.clickLaunchIcon('remixaiassistant')
2828
.waitForElementVisible('*[data-id="remix-ai-assistant-starter-0"]')
2929
.click('*[data-id="remix-ai-assistant-starter-0"]')
3030
.waitForElementVisible('*[data-id="remix-ai-assistant"]')
3131
.waitForElementVisible({
3232
locateStrategy: 'xpath',
33-
selector: '//div[contains(@class,"chat-bubble") and contains(.,"Explain what a modifier is")]'
33+
selector: '//*[contains(@class,"chat-bubble") and contains(.,"What is a modifier?")]'
3434
})
3535
.waitForElementPresent({
3636
locateStrategy: 'xpath',
@@ -55,7 +55,6 @@ module.exports = {
5555
locateStrategy: 'xpath',
5656
selector: "//*[@data-id='remix-ai-streaming' and @data-streaming='false']"
5757
})
58-
5958
},
6059
'Should select the AI assistant provider #group1': function (browser: NightwatchBrowser) {
6160
browser
@@ -81,21 +80,23 @@ module.exports = {
8180
locateStrategy: 'xpath',
8281
timeout: 120000
8382
})
84-
.waitForElementPresent('*[data-id="remix-ai-assistant-ready"]')
83+
// .waitForElementPresent('*[data-id="remix-ai-assistant-ready"]')
8584
.assistantAddContext('currentFile')
8685
.waitForElementVisible({
8786
locateStrategy: 'xpath',
88-
selector: `//*[contains(@class,"aiContext-file") and contains(.,"Untitled.sol")]`
87+
selector: '//*[@data-id="composer-ai-add-context"]'
8988
})
89+
.assert.containsText('*[data-id="composer-ai-add-context"]', 'Current File')
9090
},
9191
'Should add workspace as context to the AI assistant #group1': function (browser: NightwatchBrowser) {
9292
browser
9393
.waitForElementPresent('*[data-id="remix-ai-assistant-ready"]')
9494
.assistantAddContext('workspace')
9595
.waitForElementVisible({
9696
locateStrategy: 'xpath',
97-
selector: '//*[contains(@class,"aiContext-file") and contains(.,"@workspace")]'
97+
selector: '//*[@data-id="composer-ai-add-context"]'
9898
})
99+
.assert.containsText('*[data-id="composer-ai-add-context"]', 'Workspace')
99100
},
100101

101102
'Should add opened files as context to the AI assistant #group1': function (browser: NightwatchBrowser) {
@@ -113,8 +114,9 @@ module.exports = {
113114
.assistantAddContext('openedFiles')
114115
.waitForElementVisible({
115116
locateStrategy: 'xpath',
116-
selector: '//*[contains(@class,"aiContext-file") and contains(.,"anotherFile.sol")]'
117+
selector: '//*[@data-id="composer-ai-add-context"]'
117118
})
119+
.assert.containsText('*[data-id="composer-ai-add-context"]', 'Open Files')
118120
},
119121

120122
'Should generate new workspace contract code with the AI assistant #group1': function (browser: NightwatchBrowser) {
@@ -153,7 +155,7 @@ module.exports = {
153155
.assistantWorkspace('comment all function', 'mistralai')
154156
.waitForElementVisible({
155157
locateStrategy: 'xpath',
156-
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied"))]',
158+
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied") or contains(.,"No files modified"))]',
157159
timeout: 60000
158160
})
159161
.waitForElementPresent({
@@ -171,11 +173,11 @@ module.exports = {
171173
locateStrategy: 'xpath',
172174
timeout: 120000
173175
})
174-
.waitForElementVisible('*[data-id="composer-ai-workspace-generate"]')
175-
.click('*[data-id="composer-ai-workspace-generate"]')
176+
.waitForElementVisible('*[data-id="remix-ai-workspace-generate"]')
177+
.click('*[data-id="remix-ai-workspace-generate"]')
176178
.waitForElementVisible('*[data-id="generate-workspaceModalDialogModalBody-react"]')
177-
.click('*[data-id="modalDialogCustomPromp"]')
178-
.setValue('*[data-id="modalDialogCustomPromp"]', 'a simple ERC20 contract')
179+
.click('*[data-id="modalDialogCustomTextarea"]')
180+
.setValue('*[data-id="modalDialogCustomTextarea"]', 'a simple ERC20 contract')
179181
.click('*[data-id="generate-workspace-modal-footer-ok-react"]')
180182
.waitForElementVisible({
181183
locateStrategy: 'xpath',
@@ -201,7 +203,7 @@ module.exports = {
201203
.assistantWorkspace('remove all comments', 'openai')
202204
.waitForElementVisible({
203205
locateStrategy: 'xpath',
204-
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied"))]',
206+
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied") or contains(.,"No files modified"))]',
205207
timeout: 60000
206208
})
207209
.waitForElementPresent({
@@ -221,7 +223,7 @@ module.exports = {
221223
.assistantWorkspace('remove all comments', 'anthropic')
222224
.waitForElementVisible({
223225
locateStrategy: 'xpath',
224-
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied"))]',
226+
selector: '//div[contains(@class,"chat-bubble") and (contains(.,"Modified Files") or contains(.,"No Changes applied") or contains(.,"No files modified"))]',
225227
timeout: 60000
226228
})
227229
.waitForElementPresent({
@@ -268,4 +270,4 @@ module.exports = {
268270
.clickLaunchIcon('filePanel')
269271
.waitForElementNotVisible('*[data-id="remix-ai-assistant"]', 5000)
270272
},
271-
}
273+
}

0 commit comments

Comments
 (0)