Öppen ändringslogg
Vad har ändrats, och varför
Den här sidan listar alla ändringar Årebladet gjort i den här granskningen, både före och efter publicering. Varje rad motsvarar en commit i tidningens publiceringsrepo; ingenting är retuscherat i tysthet. Mänskliga sammanfattningar av väsentliga ändringar efter publicering finns högst upp; därunder följer den maskinella commit-historiken.
19 ändringar registrerade. Första ändring 23 maj 2026; senaste 28 maj 2026.
Mänskligt kuraterade ändringar
Mänsklig sammanfattning av väsentliga ändringar efter publicering. Den maskinella commit-historiken under denna sida visar varje teknisk ändring; raderna här ska bara fånga sådant som påverkar läsarens förståelse av sakuppgifter.
Format: YYYY-MM-DD — kort rubrik. Varje punkt ska kunna stå för sig
själv som ett enradssvar på frågan "vad ändrades och varför?".
Commit-historik
- 792916b
edit(x92): second-pass PII redactions across remaining sources
Visa detaljer
Following the registreringsbevis pass, swept all 28 source PDFs and 40 evidence images for personnummer, home addresses, personal phone, and personal email patterns. - bolagsverket-x92-dispens-decision.pdf: Svernlöv PN (century-prefixed form 19641204-1490) + Holland street "2/84 North Steyne Road" — true redaction via pymupdf apply_redactions. - em-holland-svar.png: Holland's mobile +61439747747 black-boxed; rest of the quoted reply unchanged. - arebladet-email-holland-nhu.md (the email source page): mobile masked in two places; personal email addresses of recipients masked (MCH148@outlook.com, conradocker@gmail.com, Michael.j.addison@bigpond.com, ma@tasdata.com.au). Lawyer's work address at Baker McKenzie kept since it's the public route the company directs press queries through. Everything else clean: org-numbers, lawyer work addresses, names, dates, DOB-prefix (820503), Manly NSW city — all retained as public/journalistic.
- 30ed0d9
edit(x92): redact Svernlöv PN + Holland street address from registreringsbevis
Visa detaljer
The sources.json note already claimed the personnummer was masked, but the PDF still carried the full PN (641204-1490) and Martin Holland's home street address (2/84 North Steyne Road). Both removed via pymupdf true-redaction (apply_redactions, not annotation overlay). DOB-prefix, city, names kept — only the load-bearing PII is gone.
- b23068e
feat(i18n): English version of site + full X92 translation, em-dash sweep
Visa detaljer
- Astro i18n: sv default (no prefix), /en/ for English - UK/AU split-flag LanguageToggle in both header variants + hub masthead - Full English X92 article (artikel.en.md) + chapters-x92-en.json - English chrome: /en/index, /en/methodology, /en/about, /en/sources (with Swedish-terms glossary) - rehype-chapters: chaptersByLang dispatch + smart-quote canonicalization in normalize() (unified's .use merges options when same plugin registered twice; one invocation with per-lang chapter maps avoids the silent collapse) - SiteHeaderV2 / SiteHeader / SiteFooter / HubLanding all read Astro.currentLocale - Em-dash cleanup: reader-facing copy now uses commas/colons/middle-dots; em-dashes reserved for quote starters per editorial rule Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- fbb2d6b
feat(x92): vital-only evidence cinema with frame model + 2 new sources
Visa detaljer
EvidenceStream pivoted from card-per-paragraph flow to a single sticky cinema element that surfaces only the 5-7 hardhitting evidences listed in site/src/data/vital-evidence-x92.json. Non-vital [bild] cites still emit .evidence-float spans (lightbox + source-link plumbing intact) but stay display:none in the 3-col aside. Cinema choreography: each vital binds to its anchor paragraph. Signed distance d to viewport mid drives four phases — A (entering, scale 0.86→1, blur 4→0), B (hold), C (zoom to focal/frame), D (exit). Earliest phase wins between vitals so the next vital takes over from the previous one's D tail at chapter boundaries. Two zoom modes per JSON entry: - focal {x, y} + zoom: legacy single-point pivot. The focal lands at (focal.x×100%, focal.y×100%) of the wrapper — NOT viewport centre — so asymmetric rectangles clip on one side. Kept for back-compat. - frame {x1, y1, x2, y2}: rectangle in normalized natural-image coords. Component computes scale + translate so the rectangle is centered in the wrapper. This is the only way to frame an off-center daring detail without clipping. Codex flagged the transform-origin limitation in the focal model; the frame model is the recommended fix. Picker mode at ?focal=1 — clicking the visible image logs+clipboards {"id","focal":{"x","y"}} for direct paste into the JSON. Image stays at scale 1 in focal mode so click coords map 1:1 to natural-image coords; for rectangles, click the four corners and paste back. Other: - Aside column bumped 14rem → 18rem on both 2-col and 3-col grids - artikel.md: ev03 swapped to _3 variant (cleaner page-13 layout); ev22 replaced with law_verklighuvudman on line 52; new källa+bild pair for bergstaten-x92-storvaflon.pdf at line 80; law bild removed from line 48 so law-vh anchors its own paragraph - Two new evidence images + one new source PDF wired in - onMount kept sync (Codex P2: async wraps cleanup in a Promise that Svelte never sees, causing ClientRouter remount listener leaks) - prefers-reduced-motion now gates JS scale updates (Codex P2: CSS transition:none alone leaves per-frame size jumps) - Em-dashes stripped from cinema descriptors Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> - 39dfb11
feat(x92): evidence flow with collision push-down + scroll-zoom + lightbox source link
Visa detaljer
EvidenceStream cards now keep their per-paragraph anchoring but a collision pass enforces a 24px gap so adjacent citations no longer stack on top of each other. Scroll-driven scale (0.88→1.04) and opacity (0.4→1.0) follow each card's distance from viewport mid; the closest one gets the teal accent. Lightbox now renders a "Visa källa" link populated from the preceding [källa] citation's source slug, so zooming a screenshot offers a direct jump to the matching Källor row. artikel.md swapped to the _2.png higher-res variants for ev01/02/03/06/07 and to ev26-cirio-report-other_2.png. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 0d3fc11
edit(x92): trim duplicate citations + tighten summary/handoff copy
Visa detaljer
Drop the lower-priority source where two stacked on a single fact (priority: government data → NHU prospectus/annual reports → other NHU data → media). Five places in artikel.md: the bitcoin-scrapping sentence, Svernlöv's credentials, the 25 000 kr aktiekapital fact, the dispens ärende title, and the closing bitcoin-writedown line. Also folds in Pär's copy edits to the article summary and the pengarna-handoff brief. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- f7120aa
perf(landing): downscale lead-art map PNG 3047×2175 → 1200×856
Visa detaljer
12.1 MB → 2.5 MB (~5× smaller). Same crop — CSS still uses object-fit: cover with object-position: 55% 40%. Still sharp at 2× DPI for the ~640 CSS-px lead-art card; hero background renders at 0.11 opacity so source resolution is moot there. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- fba78c2
feat(site-v2): W4 polish — Tasmania→Sweden plane, citation pass, real polygons
Visa detaljer
Per-chapter map enrichment (pins, text-overlay card, duration/curve/speed, flyTo). Tasmania→Sweden cinematic transition: cubic-Bezier arc + paper-plane SVG marker, plane position locked to camera's getCenter() each frame so they never desync. ScrollyMap MapState extended with transition_arc + lifecycle. Permit data: backfilled the 9 missing polygons from the raw SGU GPKG (permits_full parquet is kommun-filtered — only 13/22 inside in-scope cluster). All 22 permits now render as real shapes; mini-map projects the actual MultiPolygon onto the Sweden silhouette; "POLYGONENS CENTROID" wording gone. Editorial polish: - Citation links invisible until hover (.cite-ref a + a[href*="source/"] inherit prose color; hover reveals accent underline). Lets Pär sprinkle more [[källa]] references without each one shouting at the reader. - Six citation additions in artikel.md anchored to cleared sources (NHU FY25, Svernlöv 1997, Bergsstaten 37 956 kr säkerhet, etc). - Pengarna upgraded to FY24+FY25 (hasFy25Report=true), bar chart viewBox widened to 880×500 to stop label clipping, SEK conversion alongside AUD via fx.sek_per_aud rate config in pengarna.json. - Source framing reframed: Bergsstatens öppna mineralrättigheter is primary, NHU prospectus Schedule A is secondary. - EvidenceStream rebuilt as paragraph-y-offset flow (not stacked deck); rehype-citations skipFloatsForIntroPrefixes lets the body re-cite intro images so they actually surface in the EvidenceStream column. - Timeline scrubber defaults to "Idag" instead of axis end; "Försenad Årsredovisning" rename; narrow span labels render outside the bar. - ChapterTopBar stays clickable when faded (pointer-events fix). - Chapter-subtitle filler removed from rehype output (Claude-added intros). - PermitMiniMap renders the actual polygon outline + caption "Plats i Sverige". Tasmania framing fixed: bolaget var aldrig baserat i Tasmanien — det var där den planerade bitcoin-gruvan låg. Annotation + pre_range_label updated. VPS cutover 2026-05-26: gruvor.arebladet.com gated preview now serves site-v2/ build, not site/ (v1). Same Basic Auth gate. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 37093ae
content(x92): backfill all 22 permits + integrate pengarna side-piece
Visa detaljer
- permits.json + x92-permits.geojson: backfilled from gruvor parquet (permits_full + permits_sweden_basic, 2026-05-21 snapshot). All 22 permits now have full metadata; 13 retain polygon geometry, 9 emit centroid Points. Sum of area_ha = 111 215 ha = ca 1 112 km². - web-pengarna-handoff/: copied from gruvor publishing repo. Money-flow side-piece data + content scaffold + pre-rendered graph for the "A\$8 936 251 skrevs ner till noll" section in site-v2. - .gitignore: add .claude/, node_modules/, dist/, .astro/ tree-wide. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 7e3c672
feat(site): phase C — network graph rebuilt as a focused ownership chain
Visa detaljer
Per Pär's earlier feedback that the graph had drifted from "who owns this" into a kitchen-sink network including the permit count, advisors (Cirio, Canaccord, Baker McKenzie), partners (Uppsala universitet), and double-counted renamed-entity pairs (Goldcup/X92, TDI/NHU). graph.json rewritten down to seven nodes that actually answer the ownership question: - Neu Horizon Uranium Limited (with the former-name "Tasmania Data Infrastructure" folded into the subtitle, not a separate node) - Energy X92 AB (with former-name Goldcup 34824 AB in subtitle) - Aura Energy + Vanadis Battery Metals AB (kept with the ownership edge — Pär explicitly noted Aura's ownership of its Swedish sub belongs in the graph) - Martin Holland, Michael Addison (board) - Verklig huvudman (redacted — the >2-year registry error stays because the felaktig VH-registrering is central to the story) Dropped: goldcup, tdi, bolagsratt, baker-mckenzie, cirio, canaccord, uppsala, svernlov, "22 undersökningstillstånd". They belong in the article body, not in an ownership map. Layout switched from cose (force-directed, ended up with overlapping labels) to dagre hierarchical (cytoscape-dagre + dagre devDeps), so parents sit above subsidiaries and the chain reads top-to-bottom. Node spacing tuned to fill the canvas better; fit() called on layoutstop + after font load + on container resize so the chart re-centers when the page settles. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 4ef0b02
feat(site): render email quotes as evidence cards, drop into the body flow
Visa detaljer
Email correspondence was the one form of evidence that had no visual companion in the article — the [[källa]] superscript jumped to an .md transcript but the body had nothing alongside the prose. With ~12 verbatim authority quotes in the X92 piece (Bolagsverket on VHL, dispens-prövning, sanctioner; SGU on olämplighet-prövning; Holland's non-answer), that's a lot of evidence missing from the flow. New build-time tool: - site/tools/render-email-cards.mjs walks every articles/<slug>/sources/arebladet-email-*.md, parses leading YAML frontmatter's `render_cards:` array, and renders each entry as a styled quote card via headless Chromium. Output: articles/<slug>/evidence/em-<id>.png at 2× density. - Cards use the article's own typography (Source Serif 4 / Inter, paper-deep background, accent-red sender header, colored quote bar, faint "E-post till Årebladet" footer). They look like quotes from the correspondence, not screenshots of an email client. - 12 cards generated for the X92 article. artikel.md updated to add [[bild]](evidence/em-<id>.png) markers next to each email [[källa]]; the existing rehype-citations plugin floats them like any other evidence (with the global dedup making sure each card surfaces once). Source viewer (.md branch) now strips YAML frontmatter before markdown-rendering so the email transcript pages don't show the render_cards block above the prose. devDeps: playwright + js-yaml. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 56e9ebc
content(x92): split consolidated email evidence into one file per chain
Visa detaljer
The single sources/arebladet-email-evidence.md was being cited 14 times across the article with quite different provenance — Bolagsverket press exchange, Holland/NHU's right-of-reply, Bergsstaten's afternoon follow-up, plus a Regeringskansliet thread that got no substantive answer. Splitting per email chain so each citation in the article body points at the actual correspondent. - sources/arebladet-email-bolagsverket.md (12 article refs) - sources/arebladet-email-holland-nhu.md (2 article refs) - sources/arebladet-email-bergsstaten.md (1 article ref; complements the existing morning-response file) - sources/arebladet-email-regeringskansliet.md (no current body ref, kept for completeness — the non-response is itself evidence) artikel.md, graph.json, sources.json updated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> - 99a39af
feat(site): phase 6 — transparency layer (public changelog)
Visa detaljer
- /gruvor/x92/changelog/ rendered at build time from `git log --follow -- articles/01-…/`. Each commit shows date, time (Stockholm tz), short hash, subject; full body lives behind a "Visa detaljer" disclosure. Total count + first/last dates shown in the page header. Resilient: if git isn't available (e.g. extracted tarball deploy), the section reports "Inga commits hittades" rather than crashing. - CHANGES.md template lives in the article folder; if present and non-empty, its body renders as "Mänskligt kuraterade ändringar" above the machine commit history. Curator-edited summaries are the right altitude for what readers care about; the raw commits are the audit trail underneath. - Article byline: "Uppdaterad" pill is now clickable and routes to the changelog. The `updated` value is auto-derived from the most-recent git commit touching the article folder when it's later than the frontmatter `published` date — only shown after publication date is in the past, so it doesn't appear pre-launch. - Källruta footer rewrites the static "kommer att redovisas i en publik ändringslogg" line into a live link. - New src/lib/git-history.ts utility: gitLog + lastTouchedAt helpers. Pure Node execFileSync, no extra deps. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 908371e
feat(site): phase 5 — ownership network graph (Cytoscape island)
Visa detaljer
- Hand-curated graph.json (16 nodes, 20 edges) constrained to what the article body names. Excludes the masked VH person — the article explicitly chose not to name him; the graph renders an anonymised dashed-border "Verklig huvudman" node instead, which makes the firewall decision visible to the reader. - Node typology: subject (X92), au-parent (NHU), au-historical (TDI), historical (Goldcup 34824), seller (Bolagsrätt Sundsvall), redacted (anonymised VH), person, advisor, partner, neighbour, outcome (22 permits). Each type maps to a palette entry that mirrors the holder palette already in global.css. - Edge typology with distinct colour + line-style per relation: ownership (solid dark teal), board (solid black), service (dashed gray), partnership (green double-arrow), vh-registry (dotted accent), rename (dashed brown), outcome (solid accent). Inline legend in the sidebar. - NetworkGraph.svelte: client:visible lazy-hydrated Cytoscape with cose layout, tap-to-select with neighbour highlight + non-neighbour fade, sidebar card showing node label/sub/fact + per-node source links that route through the phase-4 source detail pages. - New "Vem styr bolaget" section between the static maps and the permit grid; intro paragraph carries the editorial note about the anonymisation choice. - cytoscape 3.33.4 added. - Verified in headed Chrome: graph renders with all 16 nodes, click → fade + sidebar update working, source links navigate to the right /source/<slug>/ pages. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 56de793
feat(site): phase 3 — interactive MapLibre map + body→card anchors
Visa detaljer
Body anchors: - Permit mentions in artikel.md (Gillberget, Ravenberget, Stor-Stensjön, Hamborg, "Vilhelmina", the count "22") now link to their permit-card IDs / sections lower on the page. - New .permit-anchor style in Article.astro: subtle teal underline + ↓ glyph signalling in-page navigation, distinct from the dotted citation chips used for sources/evidence. Interactive map: - Extracted 13 X92 permit polygons from gruvor parquet snapshot 2026-05-21 (ut-metaller-industrimineral-beviljade collection), reprojected EPSG:3006 → 4326 via shapely + pyproj, written to articles/01-…/x92-permits.geojson (17 KB, 13/22 permits — the remaining 9 are in the prospectus only). Symlinked into public/x92. - New PermitMap.svelte: MapLibre island with OSM raster basemap, permits-fill + permits-line + permits-label layers in the X92 teal, hover state, click → popup (name/dnr/area/dec_date/validto + "Visa kort →" link to the card anchor), scale + nav controls. - maplibre-gl 5.24.0 added as dependency. - Lazy-hydrated via client:visible in x92.astro — JS bundle only loads when the map scrolls into view. Static parmaps spread above remains the no-JS / no-WebGL fallback; in-component error overlay surfaces explicitly if WebGL init fails. - Verified: build clean, polygons + labels render in real Chromium, popup → anchor flow lands on the right card, no console errors. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- c6d7dd5
feat(site): phase 2 — static maps, permit grid, holder palette
Visa detaljer
- Port PERMIT_OWNER_PALETTE from parmaps renderer verbatim so web colours match print exactly (6 holders + tier2 + norway tokens). - Cross editorial firewall: 4 parmaps PNGs (spread, wide, cluster, legend) copied from renderers/illustrated/ into articles/01-…/parmaps/; symlinked into site/public/x92/parmaps for Vite static serving. - permits.json (22 X92 permits: 7 in-scope + 15 national) derived from gruvor dossier CSV; stable slug IDs match in-page anchor targets. - New components: StaticMap.astro (figure + caption + credit), PermitGrid.astro (card grid + compact national rows, JSON-driven), PermitLegend.astro (holder swatches). - Article.astro gains named slot "after-body" for injecting sections between prose and källruta footer. - x92.astro wires "Granskningens karta" section: legend strip, two parmaps embeds (overview + cluster), card grid, legend PNG. - Verified: build clean, 0 console errors, desktop + mobile. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 32ecb6c
feat(site): phase 1 — X92 article page + hub card grid
Visa detaljer
Renders the Energy X92 long-form at /gruvor/x92/ and flips the hub from the phase-0 holding page to a card grid. First publishable web build of the piece. - Article.astro layout: typographic hero (placeholder fallback when hero:"placeholder"), lead paragraph styled from first <p>, body prose with citation-chip styling on links to sources/ and evidence/, källruta footer explaining the citation system, grouped source list, permalink. Swedish hyphenation via prose-sv (hyphens:auto + lang="sv"). - ReadingProgress.astro: 2px accent bar at top, scaleX transform on scroll, passive listeners. - SiteHeader.astro: Årebladet / Gruvor brand bar linking back to hub. - SourceList.astro: groups + items from sources.json, PDF/MD format badges, mono filenames; collapses to title-only under 30rem. - x92.astro page: pulls the entry by frontmatter slug, imports sources.json directly, renders <Content />. - index.astro hub: card grid (filters status:stub), Kommande block, footer. - sources.json: 28 source documents grouped into 6 sections with redaction notes. - public/x92/{sources,evidence} symlinks → ../../../articles/01-…/{…} — Vite/Astro follow them at build, so markdown's relative paths resolve at /gruvor/x92/sources/ and /gruvor/x92/evidence/. - .gitignore: ignore .gstack/ tooling cache. Verified locally with pnpm dev at desktop (1280) and mobile (390) viewports — no console errors, source list groups render, citation chips legible, hub card displays correctly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> - cbbe7b5
content(x92): use print headline as placeholder web title
Visa detaljer
Frontmatter title + subtitle now match the printed edition's twoliner ("Felaktig huvudman, försenad redovisning" / "men bolaget får ändå leta metall i Jämtland"). Hero image stays as a "placeholder" sentinel — phase 1 layout can either render a typographic fallback when hero == "placeholder" or Pär can drop in the final asset before launch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> - cce7502
content: migrate Energy X92 cleared bundle from gruvor
Visa detaljer
Final published copy of the printed Årebladet investigation (issue 2026-05-28, printed 2026-05-22), now owned by this publishing repo. Migrated 2026-05-23 from gruvor's articles/01-2026-05-28-arebladet-energy-x92/ research workspace. Bundle: - artikel.md — 97 paragraphs, every sourced claim carries [källa] + [bild] markers pointing into sources/ and evidence/ respectively. Title + subtitle frontmatter still TODO (Pär writes copy). - sources/ — 28 source documents (26 PDFs + 2 markdown email evidence files): Bolagsverket extracts, ASIC forms, NHU prospectus + announcements, ABC News, SGU/Bergsstaten responses, the Cirio report header, lag 2017:631, the Svernlöv chambers reference. - evidence/ — 29 tight-cropped PNG snippets (ev01-ev29) showing the exact passage in each source that supports the cited claim. PII / redaction (verified post-migration with a pnr-shape scan; only hits were ärendenummer and X92's orgnr 559472-4576): - bolagsverket-x92-verkliga-huvudman-extract.pdf — Sundsvall jurist's name + pnr blacked out; he is not named in the article - bolagsverket-x92-registreringsbevis.pdf — Carl Svernlöv's pnr blacked out; his name + role remain public - Evidence images ev07 + ev08 carry the same redactions - Australian directors' partial DOBs (820503, 570510) are 6-digit birth dates from the Swedish corporate register, NOT Swedish pnr Folder layout flattened: webversion/* moved up one level since the arebladet-articles repo *is* the publishing target — no need for a nested webversion/ subdir. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>