Update to 立地診断 mini|ROGNALIA
Snapshot Oct 4, 2026 · 12:30 UTC · version 0.5.15
Package or technical metadata updated
Package contents changed in 12 files: .codex-plugin/assets/composer-icon.svg, .codex-plugin/assets/logo.svg, .codex-plugin/plugin.json, …. Open the file diff to inspect the edits.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Package file
{"sha256":"78a2a01b0587a699f4de1b1ce38983c8b5cfdbadc423873b4ed2836f74c5a28b","size":696}
Not present
Package file
{"sha256":"78a2a01b0587a699f4de1b1ce38983c8b5cfdbadc423873b4ed2836f74c5a28b","size":696}
Not present
Package file
28f935dee1341f4e8e1fbb7cbe1296907c3da8e524467839b10060927a918bae
14490f86bc0f02df168fa702eea9ed2d6987bb883815cad831e54e7829c5fd34
Package file
3541
2307
Compare saved observations
Download comparison JSONChanged files
.codex-plugin/assets/composer-icon.svg →
.codex-plugin/assets/logo.svg →
skills/location-diagnosis-mini/SKILL.md →
skills/location-diagnosis-mini/references/report-contract.md →
skills/location-diagnosis-mini/references/runtime-manifest.json →
skills/location-diagnosis-mini/references/text-report-contract.md →
skills/location-diagnosis-mini/scripts/chromium_print.py →
skills/location-diagnosis-mini/scripts/delivery_links.py →
skills/location-diagnosis-mini/scripts/print_layout.js →
skills/location-diagnosis-mini/scripts/print_layout.js
--- before +++ after @@ -0,0 +1,77 @@ +// Read-only preflight on the same print-media page that will become the PDF. +// Check actual text line rectangles, not a container's nominal scrollHeight. +(() => { + if (!matchMedia('print').matches) throw new Error('print media is required'); + const pages = [...document.querySelectorAll('.sheet.report-page')]; + if (pages.length < 8 || pages.length > 10) throw new Error('canonical pages are required'); + const tolerance = 1; // CSS px: ignore subpixel rounding, not a line of lost text. + const issues = new Map(); + let checked = 0; + const add = (page, node, code, pixels) => { + const element = node.nodeType === Node.TEXT_NODE ? node.parentElement : node; + const block = element.closest('.bm, .card, .ax, .sr, .fig, li, tr, p') || element; + const section = page.getAttribute('aria-label'); + const anchor = element.closest('[data-baseline], [data-research-id]'); + const contentId = anchor ? (anchor.dataset.baseline || anchor.dataset.researchId) : ''; + const component = `${block.tagName.toLowerCase()}${block.className && typeof block.className === 'string' + ? '.' + block.className.trim().split(/\s+/).join('.') : ''}`; + const key = `${page.dataset.page}|${contentId}|${component}|${code}`; + const previous = issues.get(key); + const overflow = Math.round(pixels * 25.4 / 96 * 10) / 10; + if (!previous || previous.overflow_mm < overflow) { + issues.set(key, {page: Number(page.dataset.page), section, content_id: contentId, component, + code, overflow_mm: overflow}); + } + }; + for (const page of pages) { + const main = page.querySelector('.page-content'); + const footer = page.querySelector('.ft'); + if (!main || !footer) throw new Error('canonical body/footer are required'); + const sheet = page.getBoundingClientRect(); + const footerTop = footer.getBoundingClientRect().top; + const inspect = (node, rectangles) => { + const element = node.nodeType === Node.TEXT_NODE ? node.parentElement : node; + const style = getComputedStyle(element); + if (style.visibility !== 'visible' || style.display === 'none') return; + const clips = []; + for (let ancestor = element; ancestor && ancestor !== page; ancestor = ancestor.parentElement) { + const css = getComputedStyle(ancestor); + // The canonical header's intentional ellipsis is outside main anyway. + if (css.textOverflow === 'ellipsis') continue; + const x = ['hidden', 'clip'].includes(css.overflowX); + const y = ['hidden', 'clip'].includes(css.overflowY); + if (x || y) clips.push({box: ancestor.getBoundingClientRect(), x, y}); + } + for (const rect of rectangles) { + if (rect.width <= 0 || rect.height <= 0) continue; + checked++; + if (rect.bottom > footerTop + tolerance && rect.top < sheet.bottom) { + add(page, node, 'footer_overlap', rect.bottom - footerTop); + } + const outside = Math.max(sheet.left - rect.left, rect.right - sheet.right, + sheet.top - rect.top, rect.bottom - sheet.bottom); + if (outside > tolerance) add(page, node, 'sheet_clipping', outside); + for (const {box, x, y} of clips) { + const amount = Math.max(x ? box.left - rect.left : 0, x ? rect.right - box.right : 0, + y ? box.top - rect.top : 0, y ? rect.bottom - box.bottom : 0); + if (amount > tolerance) add(page, node, 'body_clipping', amount); + } + } + }; + const walker = document.createTreeWalker(main, NodeFilter.SHOW_TEXT); + while (walker.nextNode()) { + const node = walker.currentNode; + if (!node.textContent.trim() || node.parentElement.closest('svg')) continue; + const range = document.createRange(); + range.selectNodeContents(node); + inspect(node, [...range.getClientRects()]); + } + // Visible illustrations are body content; sprite definitions/icons are not. + for (const element of main.querySelectorAll('img, .closing-qr svg')) { + inspect(element, [element.getBoundingClientRect()]); + } + } + if (!checked) throw new Error('body text was not measured'); + return {status: issues.size ? 'overflow' : 'ok', media: 'print', pages: pages.length, + checked_rects: checked, tolerance_px: tolerance, issues: [...issues.values()]}; +})()
Full technical diff · 19 changed fields
removed /files/.codex-plugin~1assets~1composer-icon.svg
{
"sha256": "78a2a01b0587a699f4de1b1ce38983c8b5cfdbadc423873b4ed2836f74c5a28b",
"size": 696
}Field is absent
removed /files/.codex-plugin~1assets~1logo.svg
{
"sha256": "78a2a01b0587a699f4de1b1ce38983c8b5cfdbadc423873b4ed2836f74c5a28b",
"size": 696
}Field is absent
changed /files/.codex-plugin~1plugin.json/sha256
"28f935dee1341f4e8e1fbb7cbe1296907c3da8e524467839b10060927a918bae"
"14490f86bc0f02df168fa702eea9ed2d6987bb883815cad831e54e7829c5fd34"
changed /files/.codex-plugin~1plugin.json/size
3541
2307
changed /files/skills~1location-diagnosis-mini~1SKILL.md/sha256
"1c4514acfd83240f0ee74c9821c8a3ad4785f8b3b5705c878e928eb5aa27f6db"
"ce501e3de4b979ff56cc67321487849bfdd8a7eaedbf54b9e626e8749e4107a7"
changed /files/skills~1location-diagnosis-mini~1SKILL.md/size
24377
29635
changed /files/skills~1location-diagnosis-mini~1references~1report-contract.md/sha256
"f270bbc946350287853df32362bdb82081f03af007e98953e341d3f3a842d4c7"
"5ca21848f877e2f7a3f01885e9e571779d3b2f5c0fc8f6e771bb39beb84bd626"
changed /files/skills~1location-diagnosis-mini~1references~1report-contract.md/size
15789
17387
changed /files/skills~1location-diagnosis-mini~1references~1runtime-manifest.json/sha256
"7cdcaffc824f2771bc31ca8121e0f36cd10f1190ea207fb3e484fc2c0393bafd"
"f3a35e03d156f2ba494a2c4fe109035c1069063c4baef78f955a4a80a9ad270a"
changed /files/skills~1location-diagnosis-mini~1references~1runtime-manifest.json/size
1553
1988
changed /files/skills~1location-diagnosis-mini~1references~1text-report-contract.md/sha256
"632cd6b5cd1871298bf741fbcc2dec4c18dd68df800f85b32aa7b8d4105ebb33"
"47b6faee4398dcfe21c74b3b205519c3330b482230b6bbd5845115ee3395491c"
changed /files/skills~1location-diagnosis-mini~1references~1text-report-contract.md/size
5020
5209
added /files/skills~1location-diagnosis-mini~1scripts~1chromium_print.py
Field was absent
{
"sha256": "dc2b7c769f4ce7784c9e90e4caed8bca7231972f57b17cb01737cd8ed05e362e",
"size": 11427
}added /files/skills~1location-diagnosis-mini~1scripts~1delivery_links.py
Field was absent
{
"sha256": "e8dd6e3736b9c4e15200a72b156db840317b10de0025fcf280e9a6448ba711b9",
"size": 840
}added /files/skills~1location-diagnosis-mini~1scripts~1print_layout.js
Field was absent
{
"sha256": "a7602cfba1638397d6adbc49c0fb6fcd2f756e3ca171716314a7c23bcfaff5e3",
"size": 4332
}changed /files/skills~1location-diagnosis-mini~1scripts~1render_pdf.py/sha256
"fe9f94ee7677a0e033f5fd6badb840ae79bd5d54b38e1af8eea01e5e48b4cc69"
"eb98e4e903c7b0a6612fcb49ad2bfda580d29b60218bd17c153c20e6fcbe42fd"
changed /files/skills~1location-diagnosis-mini~1scripts~1render_pdf.py/size
10574
8972
changed /files/skills~1location-diagnosis-mini~1scripts~1validate_html.py/sha256
"5ee507cc3b0e7c25eaf2465f56cdc14699d10d2b7216b3523f1a20a96bb07d14"
"f16c7de389b1175fd1c3c4772fc75a6504f11e03f4616f92346979fc8fb45e34"
changed /files/skills~1location-diagnosis-mini~1scripts~1validate_html.py/size
2015
2127
Full snapshot data
{
"files": {
".codex-plugin/plugin.json": {
"sha256": "14490f86bc0f02df168fa702eea9ed2d6987bb883815cad831e54e7829c5fd34",
"size": 2307
},
"assets/plugin-icon.svg": {
"sha256": "78a2a01b0587a699f4de1b1ce38983c8b5cfdbadc423873b4ed2836f74c5a28b",
"size": 696
},
"skills/location-diagnosis-mini/SKILL.md": {
"sha256": "ce501e3de4b979ff56cc67321487849bfdd8a7eaedbf54b9e626e8749e4107a7",
"size": 29635
},
"skills/location-diagnosis-mini/agents/openai.yaml": {
"sha256": "457460c0c6904a5ffc05bcd4cfbe14f016cd9903d4e752d0ad6ca42c692f6d13",
"size": 365
},
"skills/location-diagnosis-mini/assets/location-intelligence-qr.svg": {
"sha256": "6c61e0ce5d36191127297bf3b02782f0eaa0aa173bf874fb6dfd52dc7d74bebd",
"size": 8267
},
"skills/location-diagnosis-mini/assets/report-icons.svg": {
"sha256": "af19f7dc40c5adcc1f2ef911a029680c7d0dd4f5ec15aa012921abda4dd7d3d8",
"size": 6569
},
"skills/location-diagnosis-mini/assets/report-template.html": {
"sha256": "f80556916b4c6fbf8d92cc53634a123240d901ebb715dc4c3f10d6254089a4f7",
"size": 43641
},
"skills/location-diagnosis-mini/assets/rognalia-wordmark.svg": {
"sha256": "ab869c820b535640369c2a5622be60ea8dd0a1fcd699312a2aa660e7715253df",
"size": 51372
},
"skills/location-diagnosis-mini/references/component-library.md": {
"sha256": "41df3a2f4a14c6d7c0c3282a44b60e2fb1b4f018b798bee194842ea9a2c5b5a0",
"size": 9172
},
"skills/location-diagnosis-mini/references/evidence-contract.md": {
"sha256": "71f5ef2e957502e60d1751b4fe645743e7c36d46fd55875ddf43950e0d09c44e",
"size": 5879
},
"skills/location-diagnosis-mini/references/report-contract.md": {
"sha256": "5ca21848f877e2f7a3f01885e9e571779d3b2f5c0fc8f6e771bb39beb84bd626",
"size": 17387
},
"skills/location-diagnosis-mini/references/report.schema.json": {
"sha256": "561f3fb25d7a32739bb3d6f2fea234cf2aad1ee0a13b98538d492bf932cbfd92",
"size": 10881
},
"skills/location-diagnosis-mini/references/research-contract.md": {
"sha256": "32b6c301aeb491f315898ffe33069beb6f7e949d2a998d1028780890066622e0",
"size": 6346
},
"skills/location-diagnosis-mini/references/runtime-manifest.json": {
"sha256": "f3a35e03d156f2ba494a2c4fe109035c1069063c4baef78f955a4a80a9ad270a",
"size": 1988
},
"skills/location-diagnosis-mini/references/text-report-contract.md": {
"sha256": "47b6faee4398dcfe21c74b3b205519c3330b482230b6bbd5845115ee3395491c",
"size": 5209
},
"skills/location-diagnosis-mini/scripts/chromium_print.py": {
"sha256": "dc2b7c769f4ce7784c9e90e4caed8bca7231972f57b17cb01737cd8ed05e362e",
"size": 11427
},
"skills/location-diagnosis-mini/scripts/delivery_links.py": {
"sha256": "e8dd6e3736b9c4e15200a72b156db840317b10de0025fcf280e9a6448ba711b9",
"size": 840
},
"skills/location-diagnosis-mini/scripts/print_layout.js": {
"sha256": "a7602cfba1638397d6adbc49c0fb6fcd2f756e3ca171716314a7c23bcfaff5e3",
"size": 4332
},
"skills/location-diagnosis-mini/scripts/render_pdf.py": {
"sha256": "eb98e4e903c7b0a6612fcb49ad2bfda580d29b60218bd17c153c20e6fcbe42fd",
"size": 8972
},
"skills/location-diagnosis-mini/scripts/render_report.py": {
"sha256": "a60b87c9276df2b808e42ca47d5ea65c4f479ab4c6cb1e06a2d1b440875aedcc",
"size": 45250
},
"skills/location-diagnosis-mini/scripts/validate_html.py": {
"sha256": "f16c7de389b1175fd1c3c4772fc75a6504f11e03f4616f92346979fc8fb45e34",
"size": 2127
},
"skills/location-diagnosis-mini/scripts/validate_report.py": {
"sha256": "3861a26246d232390f3dcb4aefb5de609d1039385c7aa1daf3aa25092c106e37",
"size": 25852
},
"skills/location-diagnosis-mini/scripts/validate_runtime.py": {
"sha256": "e169b9ce4caaac64ce868e9dce712286815ebabeadfcb23cf2dec3cfef641504",
"size": 3987
}
}
}SHA-256 of public snapshot: 30ad3b74880d6de2f7087d2e8fcc1291f2f90d7703367603ea909b70d00dfc63