Opportunities now includes full SAM feed mirror + resilient chart interactivity
Expanded `/opportunities` to include broad SAM candidate feed data (not only event-cached notices) and restored clickable bar filtering across fallback render paths.
Why it matters: You can analyze a much wider SAM opportunity set immediately and still use click-driven filtering even when chart runtime falls back.
Added
Added ingestion of `events-candidates-sam-opportunities.json` directly into `/opportunities` data model.
Added KPI visibility for SAM global feed row volume alongside event-linked SAM cache metrics.
Fixed
Restored full bar-click filtering behavior for fallback chart rendering (click + keyboard interactions).
Changed
Updated page framing from event-only SAM mirror to combined SAM feed + event enrichment intelligence surface.
Opportunities visuals streamlined for signal density
Removed underperforming/redundant charts from `/opportunities` to keep the analytics surface focused on high-signal views that support fast exploration.
Why it matters: You get a cleaner cockpit with fewer dead or overlapping visuals and faster scan-to-insight behavior.
Changed
Removed `Gem score vs due pressure` chart from `/opportunities`.
Removed `Due timeline` chart to avoid overlap with urgency distribution.
Improved
Reduced visual redundancy so remaining charts carry clearer analytical intent.
Opportunity Table upgraded with release-age, sorting, and pagination controls
Upgraded the opportunities table into a full interactive data grid with per-column sorting, page-size controls, pager navigation, and a new Days Since Release signal for faster triage.
Why it matters: You can now scan large opportunity sets without scroll fatigue and sort exactly by the field you care about.
Added
Added `Days Since Release` column to Opportunity Table (derived from posted date).
Added table pagination controls with first/prev/next/last navigation and rows-per-page selector.
Changed
Renamed section heading from `Opportunity mirror table` to `Opportunity Table`.
Opportunity Intelligence UI aligned to Events design language
Restructured Opportunity Intelligence into a tighter scan-first shell with consistent controls, denser visual cards, and improved table readability matching the Events polish baseline.
Why it matters: Opportunity triage now feels like the Events workflow: compact, consistent, and much faster to scan.
Changed
Converted top sections to shared control-shell styling for design consistency with `/events`.
Restructured filter area into a unified scan-first control shell with grouped fields and dedicated action row.
Reflowed visualization cards to a denser 3-column layout with responsive spans for gem/timeline focus cards.
Improved
Improved typography, spacing, and hierarchy across KPI cards, filter controls, and analytics panels.
Added zebra/hover treatment for table rows and tighter numeric/readability styling for scan speed.
Opportunity Intelligence mirror launched with rendering + CI hardening
Shipped a new `/opportunities` intelligence surface with full filtering, ranked gem detection, and visual analytics across cached SAM opportunity data; then patched rendering and deploy blockers.
Why it matters: You can now scan and triage opportunities directly from one page, while CI/deploy reliability was tightened to keep dev pages moving.
Added
Added `/opportunities` page that deduplicates cached SAM intelligence across enriched events into one mirror table.
Added filters/sorting for search, notice type, branch, due windows, minimum weight, focus-only mode, and gem ranking.
Added visual analytics blocks: gem picks, urgency distribution, notice mix, top agencies, top NAICS, and due timeline.
Changed
Added Opportunities to desktop/mobile navigation and global keyboard shortcuts (`g` then `o`).
Trimmed opportunity page header copy to remove the βOpen this page to answer...β sentence per request.
Improved
Adjusted strict linkcheck policy to reduce false deploy blocks (moved `xponential.org` to warn tier; accepted HTTP 202 in strict checks).
Fixed
Fixed opportunities client dataset embedding so table/charts/gem list render instead of showing empty sections.
v2.3.58 2026-02-24Neweventsuxcalendarmapicons
Map popup calendar links now show icons only
Updated calendar links in event map popups to icon-only actions (π / ποΈ / π) while preserving accessibility labels/tooltips.
Why it matters: Calendar popup actions are cleaner and more compact, matching your icon-first preference without losing clarity.
Changed
Removed text labels (`iOS (.ics)`, `Google`, `Outlook (.ics)`) from map popup calendar links and kept only icons.
Improved
Added ARIA labels and title attributes so icon-only links remain accessible and self-describing on hover.
v2.3.57 2026-02-24Neweventsuxcalendarlegendtopics
Tracked event legend now shows topic-coded icon key inline
Updated calendar legend to show `Tracked Event [ AI | Software | Cloud | Cyber ]` with icons in a single consolidated key.
Why it matters: Legend now reads exactly as an at-a-glance topic key and better matches the icon-forward calendar action style.
Events calendar actions now include iOS, Google, and Outlook with clearer labels
Updated event calendar action labels to `Calendar: iOS / Google / Outlook` with icon-marked options and explicit `.ics` cues for iOS/Outlook.
Why it matters: Calendar actions are now easier to understand at a glance and better aligned to device-specific intent (especially iOS + Outlook `.ics`).
Added
Added iOS calendar action (`π iOS (.ics)`) alongside Google and Outlook in event cards and details.
Added iOS calendar action in map popup calendar group for parity across list/map surfaces.
Changed
Updated calendar group label to `Calendar:` and standardized icon-led labels (`π`, `ποΈ`, `π`).
Clarified Outlook and iOS actions with explicit `.ics` label suffixes.
Events list now jumps directly to the matching calendar month/event
Added a per-event list action that jumps the calendar to that event month, scrolls to the calendar section, and briefly highlights the matching calendar bar.
Why it matters: You can move from list triage to month context in one click without manually paging the calendar.
Added
Added an `In Calendar` action on each event card in the list.
Changed
Clicking `In Calendar` now sets the calendar to the event's month and scrolls directly to Calendar View.
Improved
Added temporary focus highlighting on the matching calendar bar so the selected event is easy to spot in dense months.
Events calendar reverted to uniform event colors with attendance-only highlighting
Removed topic-based color tones from calendar bars while keeping topic icons, and retained color emphasis only for attended events.
Why it matters: The calendar now reads cleaner with one default event color; your attended events remain visually distinct, and topic context still shows via icons.
Changed
Removed topic-tone bar classes so all non-attending calendar events render in the same baseline color.
Kept topic icon labeling (AI/Software/Cloud/Cyber) in event bars and legend for lightweight semantic cues.
Improved
Increased visual focus on attendance state by keeping color-coding exclusive to attended events.
Events calendar day-height stabilization, topic coding, and SOF Week attendance tag
Stabilized day-cell height for clearer month scanning, added lightweight topic icon/color coding for primary themes, and marked SOF Week as attending.
Why it matters: Calendar stays readable in dense months, AI/software/cloud/cyber priorities are easier to spot at a glance, and personal attendance now appears directly in calendar bars.
Calendar bars now derive and display a primary topic icon with matching tone classes for minor at-a-glance coding.
Marked `radar-sofweek-2026` as attended via `attendingEventIds` so SOF Week is visibly flagged.
Improved
Raised calendar day-cell minimum height to keep month rows visually stable and easier to scan.
v2.3.48 2026-02-24Neweventsuxcalendarcssbugfix
Events calendar rendering fixed to preserve traditional month-grid layout
Fixed calendar styling scope so dynamically rendered week/day grid rows and spanning bars keep their intended month layout instead of collapsing into stacked text.
Why it matters: Calendar now renders as a recognizable traditional month view with clear weekday columns, day cells, and readable multi-day bars.
Changed
Promoted calendar CSS selectors to global scope for JS-generated calendar nodes (`weekdays`, `days`, `bars`, and bar states).
Applied matching global mobile overrides so compact calendar typography and spacing still hold on small screens.
Improved
Improved calendar readability and month-grid fidelity for high-event-density months.
Fixed
Resolved scoped-style mismatch causing calendar rows and bars to render like unstyled stacked text.
Events month calendar added with spanning bars and attending highlights
Added a themed month-by-month calendar view with full month day grids and event bars that span across every day of each event duration.
Why it matters: You can now scan event timing as a true calendar, navigate month to month, and visually distinguish attended events for future reusable personal calendars.
Added
Added a new `Calendar View` section with Prev/Next/This month controls and themed week/day rendering.
Added event bars that stretch across every day of an event (including multi-day spans across week boundaries).
Added attended-event highlighting via code-managed `attendingEventIds` for distinct calendar enumeration and future reuse.
Changed
Calendar data now derives from filtered event results, so the month view stays in sync with active list filters.
Added event card data attributes (`data-end-date`, `data-attending`) to support reusable calendar rendering pipelines.
Events map pinning: above/below list with saved preference
Replaced the map hide toggle with a map placement pin control that moves the map above or below the event list and persists preference in localStorage.
Why it matters: Users can keep map and list both visible while choosing preferred scan order; default remains map below list and preference persists per browser.
Changed
Replaced `Hide map` with a `Pin map above/below list` toggle button in the control shell.
Added persistent map placement preference (`adamboas.events.mapPin.v1`) with default `below`.
Updated render logic to reposition the map section above or below the list without hiding either section.
Events recency state: New is view-based, Fresh is add-window based
Switched event recency badges to persistent local state so `New` only appears for events you have not seen yet, while `Fresh` tracks newly discovered events for a short window.
Why it matters: New badges now clear permanently after first view, and Fresh appears only for events first discovered in your browser within the last 14 days.
Changed
Replaced simple seen-id storage with a persistent per-event localStorage state object (`firstDetectedAt`, `firstSeenAt`, `lastSeenAt`).
Updated `New` badge logic to display only for currently visible events that have never been seen before on this browser.
Updated `Fresh` badge logic to show only when an event is newly discovered and within a 14-day freshness window.
Renamed event CTA labels for clarity and grouped Google/Outlook calendar actions into a single intuitive control in cards and map popups.
Why it matters: Event actions are now clearer at a glance (`Event Link`) and calendar options feel like one coherent action instead of separate unrelated buttons.
Changed
Renamed card and map link CTA text from generic `Link` to `Event Link`.
Grouped Google + Outlook calendar actions under one segmented `Calendar` control in event cards.
Grouped calendar actions in map popups and consolidated detail-view calendar links into a single `Add to calendar` row.
v2.3.42 2026-02-24Neweventsuxsearchfiltersmap
Events page flow streamlined: search + list first, map moved below
Reordered the DoW Events page so users land on full-text search and the event list immediately, with advanced filters collapsed and the map positioned after the list.
Why it matters: You can now open `/events/` and immediately scan/search the list without scrolling past the map; advanced controls remain available under More filters.
Changed
Moved the list section above the map section so search and results are adjacent at page entry.
Promoted full-text search to always-visible in the control shell.
Collapsed advanced controls under `More filters` to reduce top-of-page clutter.
v2.3.41 2026-02-24Neweventscalendaroutlookicsux
Events calendar export expanded to Outlook (.ics)
Added Outlook-compatible ICS downloads for each event alongside existing Google Calendar links across cards, event details, and map popups.
Why it matters: DoW events can now be added from the page into both Google Calendar and Outlook workflows without manual re-entry.
Added
Added per-event Outlook (.ics) download links in event card actions and verified-links detail sections.
Added Outlook (.ics) actions in map popups for parity with list view event controls.
Changed
Relabeled the existing card calendar button as `Google` for clearer provider distinction.
v2.3.40 2026-02-22Newfooternavigationuxlayout
Footer link order rationalized
Reordered footer utility links to put internal site navigation first, legal next, and external/contact links last.
Why it matters: Footer scanning is now more intuitive and consistent: sitemap and site utilities appear before outbound links.
Restored the sitemap top box to the preferred two-column structure with Core on the left and Utility on the right.
Why it matters: Sitemap keeps the improved overall layout while matching the previously preferred Core/Utility scan pattern.
Changed
Restored two-column sitemap structure inside the top box (`Core` + `Utility`).
v2.3.38 2026-02-22Newsitemapwritingpdflayoutux
Sitemap layout alignment + PDF-link consolidation
Aligned the sitemap to the siteβs standard single-column layout, removed the separate published-PDF page, and folded PDF links directly into the Published Writing list.
Why it matters: Sitemap now matches the established visual system and avoids overflow, while published writing pages expose direct PDF access in one consolidated list.
Changed
Reworked `/sitemap/` to a single-column structure with standard card/control-shell spacing and heading treatment.
Renamed section heading to `Published Writing` and moved PDF access into each writing entry.
Fixed
Fixed long-title overflow in sitemap writing entries via safer wrapping behavior.
Improved
Removed the standalone `/pdfs/` route to consolidate published writing navigation in one place.
Memo pipeline upgraded to LaTeX-first artifact workflow
Moved memos to a deterministic LaTeX source pipeline with CI-built PDF/HTML/manifest artifacts and site-side verification gates, aligned with paper pipeline quality controls.
Why it matters: Memo rendering now follows the same reproducible build discipline as papers, reducing format drift and making sync validation deterministic across Whitepaper and site repos.
Added
Added Whitepaper memo artifact pipeline (`build-memos.yml`) with PDF/HTML/manifest outputs and metadata validation from `MEMO.yml`.
Added shared memo LaTeX preamble (`tex/memo_preamble.tex`) and memo source directories under `memos/<slug>/tex/memo.tex`.
Added site-side memo artifact verification (`scripts/verify-memos.mjs`) and CI gates (`npm run lint:memos`) in build/deploy workflows.
Changed
Updated `sync-whitepaper` workflow to ingest memo artifacts from Whitepaper `build-memos` runs instead of relying on ad-hoc local PDF generation.
Updated writing detail rendering to prefer generated memo HTML fragments (`src/generated/memos/*`) for published memos.
Improved
Introduced memo metadata mirror sync checks so `writing/memos/*.md` frontmatter stays aligned with `memos/*/MEMO.yml`.
v2.3.35 2026-02-20Newcilinkcheckeventsreliability
CI reliability: move unstable AUSA links to warn-tier checks
Updated linkcheck policy classification so `ausa.org` links are checked in warn-tier mode instead of strict blocking mode.
Why it matters: Intermittent upstream AUSA connection resets no longer break blocking CI gates, while warn artifacts still retain visibility for remediation and verification.
Changed
Classified `ausa.org` URLs into warn-tier policy handling during linkcheck preparation.
Removed transient AUSA transport failures from strict blocking gates while preserving non-blocking diagnostics.
CI reliability: move Google Calendar template links out of strict blocking checks
Updated linkcheck policy classification so generated Google Calendar template URLs run in non-blocking warn-tier checks instead of strict blocking checks.
Why it matters: Deploy and build workflows stay green more consistently while still preserving visibility into Calendar-link health through warn artifacts.
Changed
Classified `calendar.google.com` URLs into warn-tier policy handling during linkcheck preparation.
Removed calendar-template URL volatility from strict blocking gates while retaining non-blocking diagnostics.
Events quick-scan windows + unified control-shell alignment
Added timeline quick filters (Next 30d/90d/180d), introduced compact confidence-plus-source badges on event cards, and aligned control-shell rhythm across Events/Writing/Changes.
Why it matters: Event triage is now faster by narrowing to near-term windows in one tap, trust context is easier to parse at a glance, and top control surfaces feel more consistent across core list pages.
Added
Added quick timeline chips on `/events/`: `Next 30d`, `Next 90d`, `Next 180d`, with URL-persisted state.
Added compact event-card badges combining source confidence and source type (`High Β· Official`, etc.).
Changed
Aligned control-shell styling hooks across `/events/`, `/writing/`, and `/changes/` for tighter spacing rhythm and mobile wrap consistency.
Changes UX sweep: sticky mini filters, accessibility polish, and idle prefetch
Upgraded the Change Notes flow with a sticky compact filter row, stronger focus visibility, reduced-motion safeguards, and smoother list transitions.
Why it matters: Filtering/scanning long release history now stays fast during scroll, keyboard focus is easier to track, and transitions/navigation feel quicker without extra visual noise.
Added
Added a sticky mini filter row on scroll with compact search, topic-group toggles, and one-click reset.
Added skeleton loading states for filter and pagination transitions to improve perceived responsiveness.
Improved
Improved keyboard focus consistency with stronger visible rings across interactive controls.
Added reduced-motion handling so transitions/animations respect user motion preferences.
Tightened low-emphasis contrast on chips/meta text for better readability.
Added idle-time route/page prefetching for likely next navigation targets.
v2.3.31 2026-02-19Newuxeventscopyconsistency
Header title-case consistency pass
Standardized key UI section headers to Title Case across Events and supporting pages.
Why it matters: Interface labels read cleaner and more consistent, including βGeographic Viewβ and related section titles.
Changed
Updated βGeographic viewβ to βGeographic Viewβ on `/events/`.
Applied Title Case to related section headings on `/events/sources/` and `/404/` for consistency.
Restored generated paper HTML to match manifest hashes and moved a known legacy WEF citation URL out of blocking/warn checks.
Why it matters: CI paper verification is green again, and linkcheck avoids failing on a known unstable legacy citation while still surfacing actionable stale-link suggestions.
Fixed
Restored `agentic-force-creation` generated HTML/raw artifacts to match `manifest.sha256` expectations used by `lint:papers`.
Added targeted ignore rule for legacy WEF citation URL in linkcheck policy classification to prevent recurring noise during CI runs.
v2.3.29 2026-02-19Neweventsuxresponsivelayout
Events list header responsiveness polish
Updated the events-list heading/sort control layout so βUpcoming Eventsβ stays one line on larger viewports and stacks cleanly on smaller screens.
Why it matters: Desktop keeps a compact one-line title + sort control row, while mobile/small screens place the dropdown on the next line for cleaner readability.
Changed
Renamed heading to βUpcoming Eventsβ and applied nowrap behavior for larger viewports.
Adjusted list-header flex layout to stack on smaller screens and keep one-row alignment on larger screens.
Expanded CI/deploy quality gates with smoke/overflow/a11y regression coverage and tightened linkcheck signal quality.
Why it matters: Deployments are now blocked behind practical route-level and accessibility checks, while stale/noisy linkcheck findings are reduced and better surfaced as artifacts.
Added
Added core-route smoke Playwright suite (`tests/smoke.spec.ts`) and integrated it with overflow + a11y in CI/deploy gates.
Added topic-level linkcheck/test artifact uploads for easier triage from GitHub Actions runs.
Changed
Build and deploy workflows now run practical regression gates before deployment artifacts are published.
Events source page now supports `displayUrl` so public references can remain stable while crawler endpoints stay internal.
Fixed
Updated known stale links (AUSA events URL and WEF Amodei citation canonical path) to reduce recurring linkcheck noise.
Updated SAM API public reference links to stable Open.GSA documentation in user-facing content.
Extended paginated list controls to include First and Last actions across Writing, Change Notes, and Events.
Why it matters: Navigation across long result sets is now faster with one-click jumps to beginning/end while preserving existing clean control styling.
Added
Added First/Last buttons to paginated list controls on Writing index, Change Notes, and Events list views.
Changed
Pagination button disabled states now cover edge jumps (First/Prev disabled on page 1, Next/Last disabled on final page).
Tightened control-to-card spacing, removed empty filter-chip gap, and normalized type-pill centering for cleaner visual rhythm on the Writing index.
Why it matters: Controls and cards now feel more evenly spaced with better vertical alignment and less dead space in the filter shell.
Changed
Retuned writing-index control shell spacing (padding and row gaps) and reduced control-to-card stack gap.
Adjusted type toggle pill sizing for more consistent centering and hit-area alignment with other controls.
Fixed
Removed empty-state whitespace under writing filters by hiding the chip row when no active chips are present.
v2.3.18 2026-02-19Newwritinguxvisual-cohesion
Writing action-row cohesion pass
Aligned spacing and sizing of action-row controls by styling the read-progress chip with the same button tokens used by PDF, Copy, and Discuss.
Why it matters: Writing action controls now read as one cohesive control set with consistent spacing, typography, and hit area.
Changed
Restyled the read-progress indicator to match existing action-button dimensions and visual treatment.
v2.3.17 2026-02-19Newwritinguxreadability
Writing progress indicator switched to persistent percent chip
Replaced the top progress line with a persistent read-percentage chip beside PDF/Copy/Discuss for clearer visibility.
Why it matters: Reading progress is now always visible in the action row as text (for example, `42% read`) instead of a subtle line at the top.
Changed
Replaced the thin sticky progress line with an inline action-chip percentage indicator in the writing controls row.
Improved
Progress percentage now updates only when value changes to reduce unnecessary DOM churn while scrolling.
v2.3.16 2026-02-19Newwritinguxregression-fix
Reading progress bar behavior fix
Fixed writing detail reading progress so it tracks correctly in the siteβs body-scrolling layout instead of appearing static.
Why it matters: The top reading line now visibly advances as you scroll long writing pages and reaches full width near the end of the article.
Fixed
Progress calculation now reads from whichever scroll container is active (`window`, `documentElement`, or `body`) and listens at document capture level for reliable updates.
Linkcheck reliability lane + events intelligence CTA pass
Introduced tiered external link checking, added stale-link suggestion output, and expanded events quick actions with Calendar plus stronger confidence/acquisition context.
Why it matters: CI linkcheck now fails less on known unstable domains while still enforcing strict-quality links, and event cards/map/details provide faster actionability and evidence context.
Added
Added linkcheck policy preprocessing (`strict`/`warn`/`ignore`) and new scripts for warn-tier checks plus stale-link replacement suggestions.
Added event-level Google Calendar deep links on cards, map popups, and expanded event links.
Changed
Linkcheck workflow now blocks only strict-tier domains while running unstable domains in non-blocking warn mode with machine-readable output artifacts.
Improved
Added confidence-notes and acquisition-reference summaries in event details to improve source provenance clarity during triage.
Fixed
Addressed stale known links via actionable suggestion reporting (AUSA events URL, SAM API docs endpoint, and WEF canonical URL mapping).
Eliminated TOC text jitter caused by scrollbar mode-switching on hover/focus.
Why it matters: Hovering the right-side TOC now reveals scroll affordance without shifting words or reflowing line breaks.
Fixed
Changed TOC scrollbar behavior to keep a stable gutter and constant scrollbar width, with colors transitioning on hover/focus instead of width toggling.
Prevented TOC content reflow by removing hidden-to-visible scrollbar width changes that caused horizontal text movement.
Added
Playwright regression test asserting TOC hover does not shift first-link position or width.
Hardened Whitepaper sync so notes/memos marked as draft are excluded from site content and memo PDF publishing.
Why it matters: You can now keep writing in pipeline with `status: draft` without accidentally publishing markdown pages or direct memo PDFs on the public site.
Changed
`sync-whitepaper` now syncs only published notes/memos (status defaults to published when omitted).
Memo PDFs are now copied only when tied to published memos (via `pdfPath` or matching slug stem).
v2.3.11 2026-02-17Newlayoutdesktopultrawideux
Ultra-wide layout expansion for large screens
Expanded overall content width on very large displays (1900px+) so center content uses substantially more horizontal space.
Why it matters: On ultra-wide monitors, pages no longer feel boxed into a narrow center column and can use much more of the available viewport.
Changed
Added a 1900px+ responsive breakpoint that increases `.site-main` max width to `min(96vw, 116rem)`.
Expanded shared `.container` width at 1900px+ to `min(94vw, 112rem)` for better header/footer and section alignment.
v2.3.10 2026-02-17Newchangesmobileuxfilters
Changes mobile filter usability fix
Fixed `/changes` mobile usability by removing sticky filter lock on phones, tightening search/control sizing, and constraining the tag area so release content stays visible.
Why it matters: On mobile, release entries are now immediately readable instead of being obscured by an oversized sticky filter surface.
Changed
Changed `.changes-filter-bar` to non-sticky on mobile and retained sticky behavior for desktop only.
Added mobile-friendly sizing for search/clear controls and improved input shrink behavior.
Constrained tag cloud height on phones with internal scroll to prevent viewport takeover.
v2.3.9 2026-02-17Newuxvisualmobileglobal
Global visual polish across all pages
Applied a site-wide beautification pass: calmer background grid, softened surface borders, cleaner card depth, tighter mobile heading rhythm, and refined header/footer link chrome.
Why it matters: Pages now feel cleaner and more consistent end-to-end with better scanability and less visual noise, especially on mobile.
Changed
Updated global surface tokens and card styling (`.card`) for cleaner border hierarchy and subtler elevation.
Refined header navigation pills and footer utility links for a more consistent visual system.
Reduced body grid intensity and tuned mobile spacing for section titles and footer controls.
Improved
Added global control transitions for smoother hover/focus feedback across form and button elements.
v2.3.8 2026-02-17Neweventsmobileuxreadability
Events mobile readability cleanup
Refined `/events` card layout and typography on phones to prevent right-rail controls from crushing title/metadata width and to improve scan speed.
Why it matters: Event cards now read cleanly on mobile with less wrapping noise, tighter action controls, and clearer metadata grouping.
Changed
Card action rail now stacks below content on small screens instead of competing for horizontal title space.
Converted card metadata line into wrapped meta items with separators that collapse cleanly on mobile.
Compacted mobile button/chip sizing (`In Nd`, `Link`, `Map`, confidence/freshness/new badges) to reduce visual crowding.
Implemented a broad UX pass across Events/Writing/Changes: quick AI-cloud-software-cyber filters, inline confidence/freshness badges, new-since-last-visit cues, mobile control compaction, and page-specific helper-script loading.
Why it matters: Faster scanning, higher trust clarity, improved mobile reading space, and lower non-essential script overhead on non-writing pages.
Added
Added quick topic filter chips on Events (`AI`, `Cloud`, `Software`, `Cyber`) with URL-persisted state.
Added inline trust signals to event cards: confidence band + evidence freshness + `New` badge for unseen events.
Added `New` badge support on Change Notes releases based on last-seen version in browser local storage.
Changed
Further compacted mobile top chrome: tighter header spacing, compact sticky browse shell, and icon-labeled compact writing action pills.
Moved non-critical helper scripts (`copy-link`, `codeblock-tools`) to writing pages only and switched global shortcuts script from inline payload to external module URL loading.
v2.3.6 2026-02-17Newmobilewritinguxdensity
Mobile writing header density reduction
Reduced vertical space used by mobile writing pages by compressing sticky browse controls and converting the writing action bar to a compact single-row scroller.
Why it matters: On phones, the top navigation/action region now occupies materially less height, preserving more visible reading area above the fold.
Changed
Sticky mobile browse bar is now a single compact row (removed secondary row actions from the top rail).
Writing action controls now render as a compact horizontal scroller on mobile instead of a two-row stacked block.
Improved
Hidden PDF page/size metadata on small screens to reduce control width and visual clutter.
v2.3.5 2026-02-17Neweventsaicloudsoftwarefooter
Cloud/software/AI event expansion + footer nav trim
Added additional cloud/software/AI-focused federal event records from official GovCIO event pages and trimmed footer links to utility-only navigation.
Why it matters: The events tracker now includes more AI/cloud/software signal while the footer is cleaner and avoids duplicating primary header navigation.
Added
Added six official GovCIO 2026 events to the radar dataset: Defense IT Summit, CyberScape Summit, Federal IT Efficiency Summit, Federal Tech Leaders Summit, Federal Cloud & Data Forum, and Health IT Summit.
Changed
Trimmed footer navigation to utility links only (RSS, Changes, License, GitHub, LinkedIn, Email), removing duplicate primary-section links already present in header navigation.
v2.3.4 2026-02-17Newsiteprofilelinkedinseofooter
LinkedIn profile link added to site navigation/footer surfaces
Added Adamβs LinkedIn profile link to the site footer and homepage Person structured data (`sameAs`).
Why it matters: Visitors and search engines now have an explicit LinkedIn profile reference directly from site UI and metadata.
Added
Added LinkedIn link to footer navigation: `https://www.linkedin.com/in/adamnboas/`.
Changed
Extended homepage Person schema `sameAs` list to include LinkedIn profile URL.
ACP-RA web duplicate Executive Summary suppression
Fixed duplicate Executive Summary rendering on the ACP-RA writing page by suppressing a leading unnumbered duplicate block when an in-body Executive Summary section is already present.
Why it matters: ACP-RA now displays a single Executive Summary section in web view, matching expected reading flow.
Fixed
Added generated-paper HTML normalization to remove duplicate leading Executive Summary block when duplicate `id="executive-summary"` sections are present.
NDIA/NTSA event-detail enrichment from live browser data
Enriched the full NDIA/NTSA 2026 event set with card-level metadata from the live NDIA browser page, including registration/agenda links, type/location parsing, and cleaned deduplication.
Why it matters: Tracker records now carry substantially more actionable detail for NDIA/NTSA events while preserving official-link legitimacy gating.
Changed
Updated NDIA/NTSA 2026 entries with live card metadata: date ranges, type/venue/location normalization, and richer event descriptions.
Added available registration and agenda links into ontology links for newly integrated event records.
Fixed
Removed duplicate I/ITSEC representation and retained a single canonical tracker record tied to the official NTSA event URL.
Bulk NDIA 2026 calendar ingest from live browser session
Pulled the full currently listed NDIA/NTSA 2026 calendar set from a live browser-visible NDIA events page and added missing records with official event URLs.
Why it matters: Coverage expanded immediately with broad NDIA/NTSA 2026 event visibility despite direct-fetch anti-bot blocking on NDIA endpoints.
Added
Added 27 missing NDIA/NTSA 2026 events from the live NDIA events calendar into `src/data/radar/events.ts`.
Attached official event links for each newly ingested calendar record (event-page canonical URLs).
Changed
Normalized new records to Radar schema with consistent provenance notes indicating browser-relay ingest path.
Improved
Expanded near-term conference pipeline coverage while NDIA anti-bot protection continues to block direct crawler fetches.
Added a public source registry and one-off URL list for PR-based contributions, plus a scheduled GitHub Action that crawls feed health daily and opens report PRs.
Why it matters: Contributors now have a clear PR target for event sources, and feed reliability monitoring is automated with a daily crawl report.
Added
Added public registry file `src/data/radar/feed-registry.json` and public page `/events/sources/` for feed transparency + PR contribution.
Added crawler `scripts/crawl-radar-feed-registry.py` with outputs `feed-crawl-report-latest.json|md`.
Added scheduled workflow `.github/workflows/radar-feed-crawl.yml` to run daily and open/update a PR with crawl report changes.
Changed
Linked source-feeds and registry PR target directly from `/events/` header.
Added npm script `events:feed-crawl` for local/manual feed health runs.
v2.2.0 2026-02-17Neweventssourcesingestoperations
Marine Military Expos source integration + feed inventory
Integrated Marine Military Expos into priority-source ingestion and published a durable inventory of active event feeds and aggregator pull targets.
Why it matters: Event sourcing is now clearer and broader, with explicit feed operations guidance for ongoing monitoring and ingestion.
Added
Added `Marine Military Expos` scraper support in priority-source import pipeline.
Added AI/agentic/autonomy-relevant future events and upgraded key existing records from disallowed-source provenance to official links.
Why it matters: The active /events feed now includes stronger AI/autonomy signal with better link trust and fewer records blocked by legitimacy gating.
Added
Added `AI for Defense Transformation 2026` (IDGA), `AI+ Expo for National Competitiveness 2026` (SCSP), and `Defense IT Summit 2026` (GovCIO) with verifiable event links.
Changed
Updated existing `AUVSI XPONENTIAL 2026` and `Autonomy in Defense 2026` entries to trusted official provenance/links so they pass active-feed trust gating.
v2.1.5 2026-02-17Neweventsog-imagecopy
Events OG title simplified
Updated the Events OG card title text to the shorter label requested.
Why it matters: Social previews now present a cleaner, minimal title: `DoW Events`.
Changed
Changed the /events OG card title from `DoW Events + BD Intelligence` to `DoW Events`.
v2.1.4 2026-02-17Neweventsog-imagecopysocial
Events OG card expanded with full descriptive subtitle
Updated the /events social preview image copy to use the available space with fuller explanatory text.
Why it matters: Link previews now communicate page purpose more clearly before click-through.
Changed
Expanded the Events OG subtitle to a fuller description and increased line capacity for clearer preview context.
v2.1.3 2026-02-17Neweventscopylaunch-readiness
Events hero subtitle removed per directive
Removed the extra hero subtitle line from /events for cleaner launch framing.
Why it matters: The events page top section is now tighter and less verbose while preserving functionality.
Changed
Removed `Conference-first tracking with sourced opportunity context, SAM visibility, and evidence-backed links.` from the /events hero area.
Added explicit source-domain trust gating and produced a one-by-one legitimacy audit artifact for all event records.
Why it matters: Events tied to known low-trust aggregator domain `jbenton1.github.io/government-guide/conference-tracker/` are excluded from active display until independently verified.
Fixed
Blocked disallowed source domain links from eligibility (`jbenton1.github.io`) in active event filtering and link rendering.
Required future date + usable external link + trusted source domain for inclusion in active event feed.
Added
Generated row-by-row audit report: `src/data/radar/event-legitimacy-audit-2026-02-17.md` (kept vs dropped with reasons).
v2.0.8 2026-02-17Newuxmobilehomepagebugfix
Homepage mobile overflow fix for featured cards
Fixed a mobile rendering bug where featured reading titles could overflow card bounds and appear clipped/bleeding outside the container.
Why it matters: Homepage cards now wrap safely on small screens and preserve readable layout without horizontal clipping artifacts.
Fixed
Hardened featured reading card layout with min-width constraints, overflow clipping, and wrapped title rendering.
Updated mobile top quick-link row to allow wrapping under tight viewport/text-size conditions.
Future-only event feed + one-by-one link hardening pass
Restricted the active tracker feed to future-dated events with usable external references and promoted real source links when official links are missing.
Why it matters: The board now suppresses stale/non-future records and improves link integrity by preferring valid external event references over placeholders.
Fixed
Removed non-future entries from active display (only future-dated events remain in tracker output).
Required at least one usable external URL (official or provenance) for events to appear.
Changed
Primary event `Link` now falls back to validated provenance URLs when a direct official URL is absent.
Expanded detail links with source references (`Ref 1..n`) to support one-by-one verification workflows.
Events tracker reframed as generic DoW + BD intelligence capability
Renamed the Events surface to a generic DoW events + BD intelligence capability and filtered out manual seed-only records without real external sources.
Why it matters: Tracker language is now capability-oriented, and trust is improved by excluding synthetic/unverifiable seed records from the active feed.
Changed
Renamed page and key detail blocks toward a generic capability model (`DoW Events + BD Intelligence Tracker`, `Opportunity intelligence`, `BD insights`).
Kept conference-first UX while preserving layered opportunity intelligence (SAM links, government organizations, POCs, insights).
Fixed
Filtered out manual seed-only records that lacked real external official links, reducing non-verifiable event noise.
v2.0.5 2026-02-17Neweventsuxdata-quality
Events link integrity pass + circular-link suppression
Hardened event link rendering so circular/self-referential links are excluded and only usable external links surface in card actions and metadata.
Why it matters: The `Link` button now appears only when an event has a valid external official URL, preventing loops back to the tracker itself.
Fixed
Suppressed circular links that pointed back to `/events/` from both top card actions and detail link sections.
Normalized/validated event links before rendering to avoid showing invalid link actions.
Changed
Cleaned placeholder self-links from seeded event records so only real external event links remain eligible for display.
Events informational overlay generalized for public intelligence use
Replaced user-specific BD tracking fields with generic informational overlays oriented to opportunity discovery and public-source context.
Why it matters: Expanded event details now prioritize SAM links, government organizations, government POCs, and relevant insights instead of personal engagement status tracking.
Changed
Replaced `BD engagement` panel with a generic `Informational overlay` panel for opportunity context.
Converted contact section into `Government POCs` and added `Government organizations` + `Relevant insights` blocks.
Expanded SAM handling to surface SAM links as explicit opportunity references in detailed metadata.
v2.0.3 2026-02-17Neweventsseosocialux
Events OG card subtitle fit tuned for more visible text
Adjusted OG text layout so the Events page subtitle can occupy more space before truncation.
Why it matters: Shared `/events/` links now show a fuller subtitle instead of clipping early with ellipsis.
Changed
Updated Events OG card subtitle rendering to use a slightly smaller subtitle font and up to two lines.
v2.0.2 2026-02-17Neweventsseosocial
Events page OG image generated and wired
Added a dedicated social preview image for the Events tracker and connected page metadata to use it.
Why it matters: Sharing `/events/` now renders a page-specific OG card instead of the global default image.
Added
New generated image asset: `/public/og/events.png` via the OG image generator.
Changed
Events layout now sets `image="/og/events.png"` for Open Graph and Twitter cards.
v2.0.1 2026-02-17Neweventsacquisitionoperationsux
Conference-first tracker cleanup with deeper BD/evidence overlays
Re-centered Events on conference tracking while keeping SAM/opportunity intelligence in detailed metadata through engagement and evidence overlays.
Why it matters: The interface is cleaner for fast event scanning, and BD/opportunity depth is preserved where it matters: inside detailed event analysis.
Added
New BD engagement + contacts metadata block (status, owner, next action, touch date, contact list) in expanded event details.
New evidence-health view per source (`Fresh/Watch/Stale`) with timestamp-aware provenance badges.
Direct SAM links in map popups and metadata links section when SAM provenance is available.
Added explicit source-layer filtering and visual differentiation so SAM official notices can be overlaid against conference/workshop/hackathon events without ambiguity.
Why it matters: You can now compare opportunity notices and conference ecosystem activity in one view while still quickly isolating each channel when needed.
Added
New source-layer filter (`All`, `Conferences/workshops/hackathons`, `Government opportunity signals`, `SAM official notices`).
Preset shortcuts for conference-only and SAM-only slices in the compact control shell.
SAM/opportunity source tags on event cards and source badges inside map popups.
Changed
Map pin rendering now applies source-layer color coding in addition to event-type tone.
Filter/query state now persists `source=` in URL so overlays are shareable and reproducible.
Improved
Event summary stats now include SAM official notice count for quick channel health checks.
Accessibility labels added to filter controls to keep axe-critical checks clean as controls expand.
v1.5.5 2026-02-17Neweventsacquisitionnavydata
Navy / NSWC sourcing expansion + solicitation-heavy SAM profiles
Expanded Events ingestion with Navy-targeted SAM profiles and an official NAVSEA/NSWC page crawler for industry-day signal discovery.
Why it matters: Higher coverage of Navy and naval-warfare-center opportunity signals with cleaner prioritization for solicitation-relevant action.
Added
Navy and NSWC-specific SAM import modes (`events:navy-sam-import`, `events:nswc-sam-import`) with organization-focused filtering.
Additional service-oriented SAM profiles (`events:army-sam-import`, `events:air-sam-import`, `events:marine-sam-import`, `events:joint-sam-import`).
Official NAVSEA/NSWC page crawler (`events:navy-pages-import`) to surface industry-day and outreach candidates from warfare-center pages.
Changed
SAM importer now supports additional notice types (`o`, `k`) for deeper solicitation relevance alongside p/r/s signal notices.
Importer scoring now includes deterministic relevance reasons and Navy-linked confidence tagging.
Improved
Priority-source guidance now explicitly ranks NAVSEA/NSWC official pages + expanded SAM profile strategy.
v1.5.4 2026-02-17Neweventsfiltersacquisitiondata
Events industry-intelligence lens + acquisition signal pipeline
Added engagement-signal filtering (industry day, pre-solicitation, sources sought, vendor outreach, special notice) and introduced a SAM.gov opportunities importer baseline.
Why it matters: You can now isolate actionable procurement engagement signals faster and prepare a cleaner ingestion path for deadline-aware tracking.
Added
Preset event views for all events, government opportunity signals, and key engagement kinds.
New engagement filter with URL-persisted state and filter-chip visibility.
Acquisition-signal metadata block in event details (notice type, agency, solicitation number, response/registration dates when present).
New SAM opportunities importer script (`events:sam-import`) for p/r/s notice ingestion candidates.
Changed
Events now infer engagement kinds from structured metadata plus deterministic title/description heuristics.
Map popups now surface opportunity badges when engagement signals are detected.
Improved
Priority-source notes now include SAM.gov API as a first-class source for acquisition notice coverage.
Importer pipeline hardening includes stronger duplicate prevention by canonical title-year keys and source precedence.
v1.5.3 2026-02-17Newwritinguxaccessibility
Code block wrap control reliability fix
Fixed Wrap/Unwrap behavior for numbered code blocks on writing pages and improved visible state feedback.
Why it matters: Long code samples now reliably wrap on demand, especially on mobile and narrower windows.
Added
Wrap control now toggles visible state text (`Wrap`/`Unwrap`) with pressed-state semantics.
Changed
Numbered code-line wrapping now correctly overrides base `white-space: pre` rules when wrap mode is enabled.
Improved
Applied safer word breaking/overflow handling for long tokens in wrapped code lines.
v1.5.2 2026-02-17Neweventsuxdata
Events cost visibility in compact + detailed views
Registration cost now appears in event cards and metadata views only when cost data is actually tracked.
Why it matters: Improves decision-readiness while keeping cards clean when cost data is absent.
Added
Compact card metadata now includes `Reg: <amount>` when registration cost exists.
Changed
Detailed logistics now conditionally renders estimated cost only when tracked.
Improved
Cost rendering now avoids separators/placeholders when cost is missing.