retire-provenance: superseded Q b/ objects (sha256 CAS, HOLO-LEAN-RESOLVER P1.3)
Browse files- sha256/0e70e05357972416e042e78dc72b5911f374f7ea87eb06fee9be3034bd468e6b +0 -0
- sha256/34849b765e545c3e46d4913e10adb1b842ae24e4089807715be12c4b11e65621 +0 -0
- sha256/c0a2dce8753caca5b848566ce23c260f5277186638753b264fe9be49fb714d42 +0 -0
- sha256/df7d094a558a02f1d583c9cdf281e7d5f891105bbf3d53e5e1b0b926e87314b8 +1 -0
- sha256/ff0a5058361109976ffb9edb5a561690a93c800ed08dcb93eaa3afa4d4997277 +95 -0
sha256/0e70e05357972416e042e78dc72b5911f374f7ea87eb06fee9be3034bd468e6b
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sha256/34849b765e545c3e46d4913e10adb1b842ae24e4089807715be12c4b11e65621
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sha256/c0a2dce8753caca5b848566ce23c260f5277186638753b264fe9be49fb714d42
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sha256/df7d094a558a02f1d583c9cdf281e7d5f891105bbf3d53e5e1b0b926e87314b8
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"@context":["https://www.w3.org/ns/did/v1","https://w3id.org/security/data-integrity/v2",{"dcterms":"http://purl.org/dc/terms/","links":{"@container":"@set","@id":"schema:hasPart"},"prov":"http://www.w3.org/ns/prov#","rel":"schema:additionalType","schema":"https://schema.org/"},{"holstr":"https://hologram.os/ns/strand#"}],"@type":["prov:Entity","holstr:Entry"],"holstr:kind":"release","holstr:op":"did:holo:sha256:87599792c7b13fad9d6c57d3b89d2cef35e4715869f5cde597ab60ca92699f0b","holstr:payload":{"apps":{"carry":"9f44164b17e6b7e37f39623bb445d49b6608da5f2b04cef8b1a8b183362a6b9a","hello":"66c1ada5ac08a2d4f73851bbe7458ad5fb6e2226c5a131c3829abfe715900fed","holo-messenger":"28ea0bbb52a38aea0d6b9978dda8c750b75fbf08f603363279b8e76e5806d68a","jellyfin":"3fd2a00105ad0e8f01109dce52ff4c7a0cc6c9444532b0453ed9d770cce2d3a4","resolve":"23aec66382775f5773693615338f37c37a5f58257ec95aece33a664baa6fe0db","yourspace":"9ffc94e11c78fbe6b940bc04ac92f0f12238cf7ce82b5092c53d5761146a50df"},"boot":{"entry":"holo-portal.mjs","sha256":"caeb3e57b6eeab09bee6d67c022145a8e2dae610c929a7f51bc169898625e7e8"},"closure":"b4aad6bc6fb5919c0cf2d329bae6fe5cdf8f95f7c4bf06d6783c757178efcfd5","manifest":"ae1df072dc8a6e3288460d150b4c31cd4693b369a3d8bf4782a162c8ac1780a6","runtime":{"apps/q/pkg/holospaces_web.js":"b9f8a887de588c5193dc65ca9ce206a70c6df53595b848e0ce0299c2d88a5753","apps/q/pkg/holospaces_web_bg.wasm":"9d90b4ea8bccee8c239073c7ec7dd5158c6d11f1f668487570d17475d79e661e","apps/workspace/pkg/holospaces_web.js":"8c30aa5582dffe4548d27fa7863163eba689ed65126be472c003f5884fc8e534","usr/lib/holo/holowhat/holospaces_web.js":"a5b5d9c559a1d2812c33e9d7a4b1c24bb03059482503a23356e4c9c32d4d8b88","usr/lib/holo/holowhat/holospaces_web_bg.wasm":"00cfa4960b319ba1ba7291cddb20dea130a407ce8b42426218854f4f68f4dcd7","usr/lib/pkg/holospaces_web.js":"8c30aa5582dffe4548d27fa7863163eba689ed65126be472c003f5884fc8e534","usr/lib/pkg/holospaces_web_bg.wasm":"3370b22070b56218a57df6406e2e4ba7cc171e942d4d1f2ae4297ea2c4c08d9c"},"shell":"8419885c9fb72f255b561f5980935539707f5f35be6f410d38bbeb593d89dc59"},"holstr:prev":"did:holo:sha256:c9977a91492cd299a5b3c9e9c66c355e1109c925e81c3b6a60b4e143043b54fc","holstr:seq":318,"prov:generatedAtTime":"2026-07-14T19:14:21.182Z"}
|
sha256/ff0a5058361109976ffb9edb5a561690a93c800ed08dcb93eaa3afa4d4997277
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// messenger-skin.mjs β bakes the SLACK re-tone as the messenger default (aubergine chrome + a floating,
|
| 2 |
+
// inset content pane; see the data-skin="slack" block in messenger-skins) and applies the hi-DPI /
|
| 3 |
+
// high-FPS perf layer. No picker / no toggle. Additive + guarded. Escape hatch: set localStorage
|
| 4 |
+
// "holo.skin" to graphite | warm | contrast | light (or "" to remove) to override the default.
|
| 5 |
+
|
| 6 |
+
(function () {
|
| 7 |
+
if (!document.querySelector("link[data-holo-skins]")) {
|
| 8 |
+
const l = document.createElement("link"); l.rel = "stylesheet"; l.href = new URL("./messenger-skins.css?v=d76d596376d1", import.meta.url); l.setAttribute("data-holo-skins", "1"); document.head.appendChild(l);
|
| 9 |
+
}
|
| 10 |
+
let skin = "whatsapp";
|
| 11 |
+
try { const s = localStorage.getItem("holo.skin"); if (s) skin = s; } catch {}
|
| 12 |
+
// ?skin=aim β the AIM opt-in for THIS visit (session-only; the saved default is untouched)
|
| 13 |
+
try { const q = new URLSearchParams(location.search).get("skin"); if (q) skin = q; } catch {}
|
| 14 |
+
if (skin) document.documentElement.setAttribute("data-skin", skin); else document.documentElement.removeAttribute("data-skin");
|
| 15 |
+
// the AIM experience layer (buddy list Β· sign-on Β· away Β· door sounds, A0-A5) rides ONLY its own skin β
|
| 16 |
+
// every other skin pays nothing. Lazy + fail-soft, the holo-msg-mount idiom.
|
| 17 |
+
if (skin === "aim") { try { import("./holo-aim.mjs?v=aim1").catch(() => {}); } catch {} }
|
| 18 |
+
// remove any lingering picker + its persisted flag from earlier ?skins=1 sessions
|
| 19 |
+
try { localStorage.removeItem("holo.skins"); } catch {}
|
| 20 |
+
try { const p = document.querySelector(".holo-skin-pick"); if (p) p.remove(); } catch {}
|
| 21 |
+
})();
|
| 22 |
+
|
| 23 |
+
// ββ UX ENHANCER (whatsapp-ux-v1) β additive, guarded, DOM-only. Two WhatsApp-desktop niceties the compiled
|
| 24 |
+
// bundle can't get surgically: (1) a DRAG-RESIZE divider between the chat list and the conversation, persisted
|
| 25 |
+
// per device; (2) CLICK-AWAY / tap-outside close for the composer "+" attach sheet and the emoji popover (the
|
| 26 |
+
// message + row menus already close on outside-click via the bundle; these two didn't). Everything here is
|
| 27 |
+
// idempotent and fail-open β if the DOM shape ever changes, it simply does nothing.
|
| 28 |
+
(function () {
|
| 29 |
+
const root = document.documentElement, LS_W = "holo.side.w";
|
| 30 |
+
const MIN = 260, MAXPX = 560, MAXPCT = 0.46;
|
| 31 |
+
const applyWidth = (px) => { if (px == null) root.style.removeProperty("--holo-side-w"); else root.style.setProperty("--holo-side-w", px + "px"); };
|
| 32 |
+
// returning users reopen at their chosen width (set before first paint)
|
| 33 |
+
try { const v = parseFloat(localStorage.getItem(LS_W)); if (v > 0) applyWidth(v); } catch {}
|
| 34 |
+
|
| 35 |
+
const container = () => document.querySelector(".holo-wa-root .cs-main-container");
|
| 36 |
+
const sidebar = () => document.querySelector(".holo-wa-root .cs-sidebar.cs-sidebar--left");
|
| 37 |
+
|
| 38 |
+
function ensureHandle() {
|
| 39 |
+
if (window.innerWidth < 900) return; // desktop only
|
| 40 |
+
const c = container(); if (!c) return;
|
| 41 |
+
if (c.querySelector(":scope > .holo-side-resize")) return; // already mounted
|
| 42 |
+
const h = document.createElement("div");
|
| 43 |
+
h.className = "holo-side-resize"; h.title = "Drag to resize Β· double-click to reset"; h.setAttribute("aria-hidden", "true");
|
| 44 |
+
c.appendChild(h);
|
| 45 |
+
let startX = 0, startW = 0, raf = 0, pending = 0;
|
| 46 |
+
const maxW = () => Math.min(MAXPX, Math.round((c.clientWidth || window.innerWidth) * MAXPCT));
|
| 47 |
+
const onMove = (e) => {
|
| 48 |
+
pending = Math.max(MIN, Math.min(maxW(), startW + (e.clientX - startX)));
|
| 49 |
+
if (!raf) raf = requestAnimationFrame(() => { raf = 0; applyWidth(pending); });
|
| 50 |
+
};
|
| 51 |
+
const onUp = () => {
|
| 52 |
+
document.removeEventListener("pointermove", onMove);
|
| 53 |
+
document.removeEventListener("pointerup", onUp);
|
| 54 |
+
document.body.classList.remove("holo-side-dragging");
|
| 55 |
+
h.classList.remove("holo-drag");
|
| 56 |
+
if (raf) { cancelAnimationFrame(raf); raf = 0; }
|
| 57 |
+
applyWidth(pending);
|
| 58 |
+
try { localStorage.setItem(LS_W, String(pending)); } catch {}
|
| 59 |
+
};
|
| 60 |
+
h.addEventListener("pointerdown", (e) => {
|
| 61 |
+
if (e.button !== 0) return;
|
| 62 |
+
e.preventDefault();
|
| 63 |
+
const sb = sidebar(); if (!sb) return;
|
| 64 |
+
startX = e.clientX; startW = Math.round(sb.getBoundingClientRect().width); pending = startW;
|
| 65 |
+
document.body.classList.add("holo-side-dragging"); h.classList.add("holo-drag");
|
| 66 |
+
document.addEventListener("pointermove", onMove);
|
| 67 |
+
document.addEventListener("pointerup", onUp);
|
| 68 |
+
});
|
| 69 |
+
h.addEventListener("dblclick", (e) => { e.preventDefault(); applyWidth(null); try { localStorage.removeItem(LS_W); } catch {} }); // reset to default
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
const boot = () => {
|
| 73 |
+
ensureHandle();
|
| 74 |
+
try { new MutationObserver(() => ensureHandle()).observe(document.body, { childList: true, subtree: true }); } catch {}
|
| 75 |
+
window.addEventListener("resize", ensureHandle, { passive: true });
|
| 76 |
+
};
|
| 77 |
+
if (document.body) boot(); else window.addEventListener("DOMContentLoaded", boot, { once: true });
|
| 78 |
+
|
| 79 |
+
// (2) click-away close for the two composer popovers. They close cleanly through the app's OWN Escape handler,
|
| 80 |
+
// so dispatch Escape on an outside pointerdown. pointerdown fires BEFORE React's onClick, and skipping the
|
| 81 |
+
// composer icons (the triggers) avoids the toggle-reopen race.
|
| 82 |
+
document.addEventListener("pointerdown", (e) => {
|
| 83 |
+
const pop = document.querySelector(".holo-attach-menu, .holo-emoji-pop");
|
| 84 |
+
if (!pop) return; // nothing open
|
| 85 |
+
if (pop.contains(e.target)) return; // clicked inside β keep open
|
| 86 |
+
if (e.target.closest && e.target.closest(".holo-c-icon")) return; // a composer trigger β let it toggle
|
| 87 |
+
try { document.dispatchEvent(new KeyboardEvent("keydown", { key: "Escape", bubbles: true })); } catch {}
|
| 88 |
+
}, true);
|
| 89 |
+
})();
|
| 90 |
+
|
| 91 |
+
// ββ AUDITED E2E STACK (whatsapp-e2e-voz) β activate the additive vodozemac Olm/Megolm engine as an OPT-IN
|
| 92 |
+
// (window.HoloMsg). Importing only DEFINES the door; the 393 KB crypto wasm + the spine load on FIRST USE,
|
| 93 |
+
// so the default holo-seal door pays nothing and is entirely untouched. Nothing calls HoloMsg yet β this
|
| 94 |
+
// just makes the audited Double-Ratchet engine LIVE-CAPABLE; the UI opt-in (?e2e=voz) is the next step.
|
| 95 |
+
try { import("./holo-msg-mount.mjs").catch(() => {}); } catch {}
|