diff --git a/CHANGELOG.md b/CHANGELOG.md index 124ec2e..2fe4ef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## Manifest Version 1.4.11 + +- bumped all dependencies to the latest versions +- changed release script to automatically take the latest version changes from the CHANGELOG.md +- minor UI change to main view of the wallet +- improved account selection UI and UX ( network selection view ) +- updated CI script logic and dependencies +- added search in account selection in farcaster action view too + ## Manifest Version 1.4.10 - changed release script to automatically take the changes from the CHANGELOG.md diff --git a/CI/bun.lockb b/CI/bun.lockb index c273f00..820a418 100644 Binary files a/CI/bun.lockb and b/CI/bun.lockb differ diff --git a/CI/index.ts b/CI/index.ts index 0152a9f..062df0e 100644 --- a/CI/index.ts +++ b/CI/index.ts @@ -6,6 +6,7 @@ const args = Bun.argv.slice(2); const secrets = args[0] const event = args[1] const action = args[2] +const changeLogUrl = 'https://clear-wallet.flashsoft.eu/docs/automated-changelog/' type TGithubEvent = { inputs: { @@ -41,9 +42,6 @@ const main = async () => { const ENABLED = true; let YUP_PK = ''; let FC_SIGNER = '' - let HUB_URL = '' - let HUB_USER = '' - let HUB_PASS = '' let GithubEvent: TGithubEvent = {} as TGithubEvent; const USER_FID = 709233; @@ -53,16 +51,13 @@ const main = async () => { const parsedSecrets = JSON.parse(secrets); YUP_PK = parsedSecrets.YUP_PK; FC_SIGNER = parsedSecrets.FC_SIGNER; - HUB_URL = parsedSecrets.HUB_URL; - HUB_USER = parsedSecrets.HUB_USER; - HUB_PASS = parsedSecrets.HUB_PASS; GithubEvent = JSON.parse(event); } catch (e) { console.error('Error parsing data', e) } const yupAPI = new YupAPI({ PK: YUP_PK }); - const fchubUtils = new FCHubUtils(FC_SIGNER, USER_FID, HUB_URL, HUB_USER, HUB_PASS); + const fchubUtils = new FCHubUtils(FC_SIGNER, USER_FID); if (action === 'update') { const VERSION = GithubEvent.inputs.version; @@ -84,7 +79,7 @@ const main = async () => { const fcPostHash = Buffer.from(fcPost).toString('hex'); if (fcPostHash) { await new Promise((resolve) => setTimeout(resolve, 3000)); - const launchCasterMessage = `@launch` + const launchCasterMessage = `@launch New Clear Wallet version ${VERSION} released! \n\nChanges: ${changeLogUrl}` await fchubUtils.createFarcasterPost({ content: launchCasterMessage, replyTo: { diff --git a/CI/package.json b/CI/package.json index 670867e..29d924b 100644 --- a/CI/package.json +++ b/CI/package.json @@ -3,13 +3,13 @@ "module": "index.ts", "type": "module", "devDependencies": { - "@types/bun": "latest" + "@types/bun": "^1.1.18" }, "peerDependencies": { - "typescript": "^5.5.3" + "typescript": "^5.7.3" }, "dependencies": { - "farcaster-hub-utils": "0.1.8", + "farcaster-hub-utils": "0.1.10", "yup-api-interact": "0.1.7" }, "license": "MIT" diff --git a/bun.lockb b/bun.lockb index cf66b81..eadfdd3 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 2187bf7..c815272 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "vue-router": "^4.5.0" }, "devDependencies": { - "@crxjs/vite-plugin": "2.0.0-beta.28", + "@crxjs/vite-plugin": "2.0.0-beta.30", "@types/archiver": "^6.0.3", "@types/chrome": "^0.0.297", "@types/jest": "^29.5.14", diff --git a/release-scripts/create-release.ts b/release-scripts/create-release.ts index 45662f9..f18e8b1 100644 --- a/release-scripts/create-release.ts +++ b/release-scripts/create-release.ts @@ -27,33 +27,28 @@ function limitedSplit(str: string, delimiter: string, limit: number): string[] { if (limit <= 0) { throw new Error("Limit must be greater than 0"); } - const result: string[] = []; - let current = 0; - let found; - - do { - found = str.indexOf(delimiter, current); - if (found === -1 || result.length === limit - 1) { - result.push(str.substring(current)); + let remaining: string = str; + for (let i = 0; i < limit; i++) { + const index = remaining.indexOf(delimiter); + if (index === -1) { break; } - result.push(str.substring(current, found)); - current = found + delimiter.length; - } while (true); - + result.push(remaining.substring(0, index)); + remaining = remaining.substring(index + delimiter.length); + } return result; } -const getLastChangeLog = async () => { +export const getLastChangeLog = async () => { const mainChainLogPath = 'CHANGELOG.md'; const fs = (await pFs).default if (!fs.existsSync(mainChainLogPath)) { return ''; } const mainChainLog = await readFirst2000Characters(mainChainLogPath) - const manifestVersions = limitedSplit(mainChainLog, '## ', 2)[1] - const changesText = '## ' + manifestVersions + const manifestVersions = limitedSplit(mainChainLog, '##', 2)[1] + const changesText = '##' + manifestVersions return changesText } @@ -92,10 +87,11 @@ async function ghRelease (isRebuild: boolean) { if (!isRebuild) { const changeLogPath = `releases/${pkg.version}.changelog.md`; + const releaseCreationDate = new Date().toISOString(); fs.writeFileSync( changeLogPath, - `# ${pkg.version} \n + `# Latest changes - (${releaseCreationDate})\n\n ${await getLastChangeLog()}`, ); const cps = (await pCps) diff --git a/release-scripts/tests/release-scripts.ts b/release-scripts/tests/release-scripts.ts new file mode 100644 index 0000000..e20e0b0 --- /dev/null +++ b/release-scripts/tests/release-scripts.ts @@ -0,0 +1,16 @@ +import { expect, test } from "bun:test"; +import { getLastChangeLog } from '../create-release'; + + +let testOrSkip: typeof test | typeof test.skip; + +const testEnabled = { + "getLastLog": true, +} + +testOrSkip = testEnabled.getLastLog ? test : test.skip; + +testOrSkip("getLastChangeLog", async () => { + const lastChangeLog = await getLastChangeLog(); + expect(lastChangeLog.length).toBeGreaterThan(0); +}); \ No newline at end of file diff --git a/release-scripts/version-release.ts b/release-scripts/version-release.ts index 47dc635..be3c49b 100644 --- a/release-scripts/version-release.ts +++ b/release-scripts/version-release.ts @@ -3,6 +3,13 @@ import { readFileSync, writeFileSync } from 'fs'; import { resolve } from 'path'; async function main() { + // 0. Check tag is not already created + const tags = execSync(`git tag --list`).toString(); + if (tags.includes(`v${process.env.npm_package_version}`)) { + console.log(`Tag v${process.env.npm_package_version} already exists`); + return; + } + // 1. Bump version in package.json const packageJsonPath = resolve('./package.json'); const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); diff --git a/src/extension/manifest.json b/src/extension/manifest.json index 6dd3aae..6951b8b 100644 --- a/src/extension/manifest.json +++ b/src/extension/manifest.json @@ -3,8 +3,8 @@ "name": "__MSG_appName__", "description": "__MSG_appDesc__", "default_locale": "en", - "version": "1.4.10", - "version_name": "1.4.10", + "version": "1.4.11", + "version_name": "1.4.11", "icons": { "16": "assets/extension-icon/wallet_16.png", "32": "assets/extension-icon/wallet_32.png", diff --git a/src/extension/serviceWorker.ts b/src/extension/serviceWorker.ts index 879dac5..8274c5a 100644 --- a/src/extension/serviceWorker.ts +++ b/src/extension/serviceWorker.ts @@ -612,7 +612,7 @@ const mainListner = (message: RequestArguments, sender: any, sendResponse: (a: a }, 6e4) } chrome.notifications.create(notificationId, { - message: 'Transaction Confirmed', + message: 'Transaction Sent', title: 'Success', iconUrl: getUrl('assets/extension-icon/wallet_128.png'), type: 'basic', diff --git a/src/views/AccountsTab.vue b/src/views/AccountsTab.vue index 5e5bc4c..6c20613 100644 --- a/src/views/AccountsTab.vue +++ b/src/views/AccountsTab.vue @@ -33,7 +33,8 @@

{{ account.address }}

- +   +
View Pk @@ -233,3 +234,18 @@ export default defineComponent({ }, }); + + diff --git a/src/views/FarcasterActions.vue b/src/views/FarcasterActions.vue index 4058131..a98d6b3 100644 --- a/src/views/FarcasterActions.vue +++ b/src/views/FarcasterActions.vue @@ -81,35 +81,57 @@ Close - Select + Select Account - Accounts + {{ account.name }} - - - {{ - account.address - }} +
{{ account.name }}
+
+ {{ + account.address.slice(0, 6) + }} + {{ + account.address.slice(6, -4) + }} + {{ + account.address.slice(-4) + }} +
+
@@ -279,6 +301,7 @@ export default defineComponent({ const loading = ref(false); const accounts = ref([]) as Ref; + const filtredAccounts = ref([]) as Ref; const accountsModal = ref(false) as Ref; const selectedAccount = (ref(null) as unknown) as Ref; const toastState = ref(false); @@ -289,6 +312,7 @@ export default defineComponent({ const pSelectedAccount = getSelectedAccount(); Promise.all([pAccounts, pSelectedAccount]).then((res) => { accounts.value = res[0]; + filtredAccounts.value = res[0]; selectedAccount.value = res[1]; loading.value = false; }); @@ -543,6 +567,19 @@ export default defineComponent({ return false; }; + const searchAccount = (e: any) => { + const text = e.target.value; + if (text) { + filtredAccounts.value = accounts.value.filter( + (item) => + item.name.toLowerCase().includes(text.toLowerCase()) || + item.address.toLowerCase().includes(text.toLowerCase()) + ); + } else { + filtredAccounts.value = accounts.value; + } + }; + return { name, pk, @@ -567,6 +604,8 @@ export default defineComponent({ exitWallet, alertHeader, farcasterSWIWQRAuthorize, + searchAccount, + filtredAccounts, }; }, }); diff --git a/src/views/HomeTab.vue b/src/views/HomeTab.vue index 37d7e9e..26250b0 100644 --- a/src/views/HomeTab.vue +++ b/src/views/HomeTab.vue @@ -8,18 +8,22 @@ > clw - CL Wallet + + + Clear + + Wallet + Version: {{ version }} @@ -38,7 +42,13 @@
- Selected Account: {{ selectedAccount?.name }} + + [ Selected Account ]:  + + {{ selectedAccount?.name }} -

{{ selectedAccount?.address }}

+

{{ selectedAccount?.address }}

Selected Network ID:  - {{ - selectedNetwork?.chainId - }} + > + [ Selected Network ID ]: +   + {{ selectedNetwork?.chainId }} Close - Select + Select Account - Accounts {{ account.name }} - - - {{ - account.address - }} +
{{ account.name }}
+
+ {{ + account.address.slice(0, 6) + }} + {{ + account.address.slice(6, -4) + }} + {{ + account.address.slice(-4) + }} +
+
@@ -261,12 +284,14 @@