feat: complete WorkBuddy parity and Windows release workflow
This commit is contained in:
1 parent
143516b3a8
commit
d5512df549
434 files changed
+54977
-1854
No files matched your search
@@ -0,0 +1,64 @@
|
||||
// Project the WorkBuddy 5.8.3 MemorySettingsPanel CSS recovered through REA.
|
||||
// This script only reads an archived REA Evidence record; it never contacts the app.
|
||||
import assert from 'node:assert/strict'
|
||||
import { createHash } from 'node:crypto'
|
||||
import fs from 'node:fs/promises'
|
||||
import path from 'node:path'
|
||||
|
||||
const evidenceId = 'ev_ccbabc0d8507e997eba15aab8b5effa66f7e82d6720c6131bfcd62157b9d6896'
|
||||
const evidencePath = path.resolve(
|
||||
process.env.YCODE_MEMORY_EVIDENCE ??
|
||||
`.tmp/rea-css-evidence/${evidenceId}.json`
|
||||
)
|
||||
const outputPath = path.resolve(
|
||||
'src/renderer/src/components/source-memory-settings-recovered.css'
|
||||
)
|
||||
const expectedSourceSha256 = '43e0b0207ff1a91ad6066efc772dad351b2b5e7afe588d38a5ee38537eb01aad'
|
||||
const expectedSourceBytes = 25213
|
||||
|
||||
const evidence = JSON.parse(await fs.readFile(evidencePath, 'utf8'))
|
||||
assert.equal(evidence.evidence_id, evidenceId, 'REA Evidence identity changed')
|
||||
assert.equal(evidence.operation, 'inspect_electron_page')
|
||||
assert.equal(evidence.normalized_result?.styles?.total, 52, 'unexpected WorkBuddy CSS source count')
|
||||
assert.equal(evidence.normalized_result?.styles?.truncated, false, 'CSS capture was truncated')
|
||||
assert.equal(evidence.normalized_result?.styles?.source_failures ?? 0, 0, 'CSS source failure')
|
||||
|
||||
const matches = evidence.normalized_result.styles.items.filter(item =>
|
||||
/MemorySettingsPanel-[^/\\]+\.css$/i.test(item.file_path ?? '')
|
||||
)
|
||||
assert.equal(matches.length, 1, 'expected exactly one MemorySettingsPanel CSS source')
|
||||
|
||||
const source = matches[0].source?.artifact
|
||||
assert.equal(source?.sha256, expectedSourceSha256, 'MemorySettingsPanel CSS digest changed')
|
||||
assert.equal(source?.bytes, expectedSourceBytes, 'MemorySettingsPanel CSS byte length changed')
|
||||
assert.equal(typeof source?.text, 'string', 'MemorySettingsPanel CSS text is unavailable')
|
||||
|
||||
const header = [
|
||||
'/*',
|
||||
` * REA Evidence ${evidenceId}`,
|
||||
` * Source ${path.basename(matches[0].file_path)}`,
|
||||
` * SHA-256 ${expectedSourceSha256}`,
|
||||
' * The declarations below are the unmodified recovered module source.',
|
||||
' */',
|
||||
''
|
||||
].join('\n')
|
||||
const output = `${header}${source.text.trim()}\n`
|
||||
const outputSha256 = createHash('sha256').update(output).digest('hex')
|
||||
|
||||
if (process.argv.includes('--check')) {
|
||||
const current = await fs.readFile(outputPath, 'utf8')
|
||||
assert.equal(current, output, 'recovered MemorySettingsPanel CSS is stale')
|
||||
} else {
|
||||
await fs.mkdir(path.dirname(outputPath), { recursive: true })
|
||||
await fs.writeFile(outputPath, output)
|
||||
}
|
||||
|
||||
console.log(JSON.stringify({
|
||||
evidenceId,
|
||||
sourceFile: path.basename(matches[0].file_path),
|
||||
sourceSha256: expectedSourceSha256,
|
||||
sourceBytes: expectedSourceBytes,
|
||||
output: path.relative(process.cwd(), outputPath).replaceAll('\\', '/'),
|
||||
outputBytes: Buffer.byteLength(output),
|
||||
outputSha256
|
||||
}, null, 2))
|
||||
Reference in new issue
Block a user