@meddleware/walrus-storage-ui 0.1.66 → 0.1.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to `@meddleware/walrus-ui` are documented here.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versioning follows
5
5
  [Semantic Versioning](https://semver.org/). Before 0.2.0, breaking changes ship as patch releases.
6
6
 
7
+ ## [0.1.67] - 2026-11-05
8
+
9
+ ### Security
10
+
11
+ - CI and the image build scan the production bundle for the e2e harness (`check-prod-bundle` from `@meddleware/frontend-config`), CI proves a production build with `VITE_E2E=1` is refused, and `src/e2e*.ts` is no longer in the published package.
12
+
13
+ ### Changed
14
+
15
+ - Dependency alignment: `@meddleware/ui` ^0.1.38 (form-field edge contrast, sticky-offset and focus-not-obscured fixes), `@meddleware/design-tokens` ^0.1.13, `@meddleware/web-utils` ^0.0.2 and `@meddleware/frontend-config` ^0.0.2 (the shared sweep now also checks that focus is not hidden behind fixed content).
16
+
7
17
  ## [0.1.66] - 2026-10-31
8
18
 
9
19
  - Gated upload composable, blob table split, accessibility gates
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meddleware/walrus-storage-ui",
3
- "version": "0.1.66",
3
+ "version": "0.1.67",
4
4
  "homepage": "https://docs.meddleware.co.uk/blockchain/sui/walrus-storage/",
5
5
  "description": "Standalone Vue 3 SPA for uploading blobs to Walrus decentralised storage and managing owned blobs — wallet-connected, NFT-gated relay support.",
6
6
  "author": "Meddleware <dev@meddleware.co.uk>",
@@ -26,7 +26,8 @@
26
26
  "index.html",
27
27
  "vite.config.ts",
28
28
  "tsconfig.json",
29
- "CHANGELOG.md"
29
+ "CHANGELOG.md",
30
+ "!src/e2e*.ts"
30
31
  ],
31
32
  "scripts": {
32
33
  "dev": "vite",
@@ -44,17 +45,18 @@
44
45
  "licenses": "node scripts/third-party-licenses.mjs",
45
46
  "check:licenses": "node scripts/third-party-licenses.mjs --check",
46
47
  "shots": "SHOTS=1 playwright test",
47
- "lhci": "npm run build && lhci autorun"
48
+ "lhci": "npm run build && lhci autorun",
49
+ "check:bundle": "check-prod-bundle dist"
48
50
  },
49
51
  "publishConfig": {
50
52
  "access": "public"
51
53
  },
52
54
  "dependencies": {
53
- "@meddleware/design-tokens": "^0.1.12",
54
- "@meddleware/ui": "^0.1.37",
55
+ "@meddleware/design-tokens": "^0.1.13",
56
+ "@meddleware/ui": "^0.1.38",
55
57
  "@meddleware/walrus-storage-client": "^0.0.34",
56
- "@meddleware/walrus-storage-kit": "^0.1.36",
57
- "@meddleware/web-utils": "^0.0.1",
58
+ "@meddleware/walrus-storage-kit": "^0.1.37",
59
+ "@meddleware/web-utils": "^0.0.2",
58
60
  "@mysten/sui": "^2.33.2",
59
61
  "@mysten/walrus": "~1.2.32",
60
62
  "@mysten/walrus-wasm": "~0.3.1",
@@ -66,8 +68,8 @@
66
68
  "devDependencies": {
67
69
  "@lhci/cli": "^0.15.1",
68
70
  "@meddleware/access-gate-client": "^0.0.13",
69
- "@meddleware/frontend-config": "^0.0.1",
70
- "@meddleware/wallet-adapter": "^0.0.20",
71
+ "@meddleware/frontend-config": "^0.0.2",
72
+ "@meddleware/wallet-adapter": "^0.0.21",
71
73
  "@playwright/test": "~1.64.1",
72
74
  "@types/node": "~26.6.5",
73
75
  "@vitejs/plugin-vue": "^6.0.8",
package/src/e2e-data.ts DELETED
@@ -1,11 +0,0 @@
1
- // What the end-to-end build's prepared blob list is made of, apart from the code that installs it (`e2e.ts` pulls in the mock wallet, which
2
- // a Playwright spec, running in Node, cannot load): the specs import these to look for the right rows.
3
- export const E2E_EPOCH = 560
4
-
5
- /** Blob ids as the aggregator spells them (URL-safe base64, 43 characters). */
6
- export const E2E_BLOBS = {
7
- duplicated: 'Qm9yZWRPZkR1cGxpY2F0ZXNfQm9yZWRPZkR1cGxpY2F0ZXM',
8
- steady: 'U3RlYWR5U3RhdGVTdG9yYWdlX1N0ZWFkeVN0YXRlU3RvcmE',
9
- pending: 'UGVuZGluZ0NlcnRpZmljYXRpb25fUGVuZGluZ0NlcnRpZmk',
10
- maxed: 'TWF4aW11bUxpZmV0aW1lX01heGltdW1MaWZldGltZV9NYXg',
11
- } as const
package/src/e2e.ts DELETED
@@ -1,46 +0,0 @@
1
- // End-to-end build only (`vite build --mode e2e`; main.ts loads this when MODE is `e2e` and VITE_E2E is `1`, both static, so every other
2
- // build drops it). A mock wallet is registered like an extension, and the owned-blob list is filled in advance (a session cache the app
3
- // reads through `useOwnedBlobs`), so the connected screens can be shown and checked without a network or a funded key. The upload itself
4
- // needs a relay and storage nodes: it is exercised by the localnet spec, not here.
5
- import { MOCK_ADDRESS, installE2eWallet } from '@meddleware/wallet-adapter/testing'
6
- import { browserStorage, pendingCertifyKey, savePendingCertify } from '@meddleware/walrus-storage-client/flow'
7
- import type { OwnedBlob } from '@meddleware/walrus-storage-client'
8
- import { useOwnedBlobs } from './composables/useOwnedBlobs.js'
9
- import { E2E_BLOBS, E2E_EPOCH } from './e2e-data.js'
10
-
11
- const hex = (byte: string) => `0x${byte.repeat(32)}`
12
-
13
- const blob = (n: number, blobId: string, over: Partial<OwnedBlob>): OwnedBlob => ({
14
- objectId: hex(n.toString(16).padStart(2, '0')),
15
- blobId,
16
- size: 48 * 1024,
17
- startEpoch: 540,
18
- endEpoch: 600,
19
- certified: true,
20
- deletable: false,
21
- ...over,
22
- })
23
-
24
- export function installE2e(): void {
25
- installE2eWallet()
26
- const owned = [
27
- // Re-uploads of the same content collapse into one row with two copies; the nearer one is about to expire.
28
- blob(1, E2E_BLOBS.duplicated, { endEpoch: 565 }),
29
- blob(2, E2E_BLOBS.duplicated, { endEpoch: 566, size: 48 * 1024 }),
30
- blob(3, E2E_BLOBS.steady, { endEpoch: 600, size: 3 * 1024 * 1024 }),
31
- // Uploaded but not certified, with the certificate still stored: Certify is offered.
32
- blob(4, E2E_BLOBS.pending, { endEpoch: 580, certified: false, deletable: true }),
33
- // Already as far ahead as the chain allows: nothing to extend.
34
- blob(5, E2E_BLOBS.maxed, { endEpoch: 613, size: 512 }),
35
- ]
36
- savePendingCertify(browserStorage(), pendingCertifyKey('testnet', MOCK_ADDRESS), {
37
- blobId: E2E_BLOBS.pending,
38
- blobObjectId: owned[3].objectId,
39
- certificate: 'ZTJlLWNlcnRpZmljYXRl',
40
- deletable: true,
41
- })
42
- const state = useOwnedBlobs()
43
- state.blobs.value = owned.sort((a, b) => a.endEpoch - b.endEpoch)
44
- state.currentEpoch.value = E2E_EPOCH
45
- state.loadedFor.value = `testnet|${MOCK_ADDRESS}`
46
- }