feat(ui): apply inquiry list and modal design

Apply the supplied inquiry layout to the list and native write/detail dialogs while preserving existing API requests, author controls, attachments, comments and search. Keep legacy entry links and confirm before discarding drafts.

Validation: 98 tests and syntax checks pass; mocked Chromium desktop/mobile and six author/session visibility scenarios pass.
This commit is contained in:
root committed 2026-11-02 13:11:47 +09:00
1 parent dbf5dc3611
commit c62630e22d
19 files changed
+1362 -277

No files matched your search

+8 -1
View File
@@ -103,10 +103,17 @@ test('production uploader rejects root uploads and sends every file to the selec
mkdirSync(join(dir, 'assets'));
for (const file of ['index.html', 'write.html', 'detail.html', 'app.js', 'config.js']) writeFileSync(join(dir, 'egbim', file), 'fixture');
writeFileSync(join(dir, 'assets/styles.css'), 'body {}');
mkdirSync(join(dir, 'assets/inquiry'));
writeFileSync(join(dir, 'assets/inquiry/inquiry-hero.webp'), 'fixture-image');
writeFileSync(join(dir, 'assets/inquiry/entry.js'), 'fixture-entry');
const uploaded = spawnSync('bash', [script, 'baron-qa-write', 'wrangler.production.toml', 'releases/' + SHA], { env, cwd: dir, encoding: 'utf8' });
assert.equal(uploaded.status, 0, uploaded.stderr);
const commands = readFileSync(capture, 'utf8').trim().split('\n').map(JSON.parse);
assert.equal(commands.length, 6);
assert.equal(commands.length, 8);
const heroUpload = commands.find(command => command.args[5].endsWith('/assets/inquiry/inquiry-hero.webp'));
assert.equal(heroUpload.args[heroUpload.args.indexOf('--content-type') + 1], 'image/webp');
const entryUpload = commands.find(command => command.args[5].endsWith('/assets/inquiry/entry.js'));
assert.equal(entryUpload.args[entryUpload.args.indexOf('--content-type') + 1], 'application/javascript');
for (const command of commands) {
assert.ok(command.args[5].startsWith('baron-qa-write/releases/' + SHA + '/'));
assert.ok(command.args.includes('wrangler.production.toml'));