{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "xNet Changelog",
  "home_page_url": "https://xnet.fyi/changelog",
  "feed_url": "https://xnet.fyi/changelog.json",
  "description": "What's new in xNet.",
  "items": [
    {
      "id": "2026-06-17",
      "url": "https://xnet.fyi/changelog#2026-06-17",
      "title": "Automated changelog & in-app \"What’s New\"",
      "content_text": "xNet now keeps a changelog you can actually read. Every release is summarized here, on the website, and inside the app — so you always know what changed when a new version lands.\n\n• A public changelog page with a JSON and RSS feed you can subscribe to\n• An in-app \"What’s New\" panel that flags updates since your last visit\n• Release notes on the desktop app are now written in plain language, not raw commit logs\n• UI screenshots captured by CI can be embedded directly in changelog entries",
      "date_published": "2026-06-17T00:00:00Z",
      "tags": [
        "app",
        "platform",
        "ci"
      ],
      "image": "https://xnet.fyi/images/workbench-dark.png",
      "_xnet": {
        "date": "June 17, 2026",
        "summary": "xNet now keeps a changelog you can actually read. Every release is summarized here, on the website, and inside the app — so you always know what changed when a new version lands.",
        "highlights": [
          "A public changelog page with a JSON and RSS feed you can subscribe to",
          "An in-app \"What’s New\" panel that flags updates since your last visit",
          "Release notes on the desktop app are now written in plain language, not raw commit logs",
          "UI screenshots captured by CI can be embedded directly in changelog entries"
        ],
        "pr": 147,
        "author": {
          "login": "crs48"
        },
        "images": [
          {
            "src": "https://xnet.fyi/visuals/pr/147/routes/home.png",
            "alt": "The xNet home view",
            "caption": "Home — captured by CI"
          },
          {
            "src": "https://xnet.fyi/images/workbench-light.png",
            "alt": "The xNet workbench in light mode",
            "caption": "Workbench (light)"
          }
        ]
      }
    },
    {
      "id": "2026-06-16",
      "url": "https://xnet.fyi/changelog#2026-06-16",
      "title": "xNet Cloud — managed hub hosting",
      "content_text": "Don’t want to run your own hub? xNet Cloud hosts one for you. A new onboarding flow takes you from signup to a provisioned hub, then lets you claim it from the app.\n\n• Marketing and pricing pages for managed hub hosting\n• Signup → provision → claim flow\n• Connect the app to your hosted hub from Settings",
      "date_published": "2026-06-16T00:00:00Z",
      "tags": [
        "platform",
        "app"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Don’t want to run your own hub? xNet Cloud hosts one for you. A new onboarding flow takes you from signup to a provisioned hub, then lets you claim it from the app.",
        "highlights": [
          "Marketing and pricing pages for managed hub hosting",
          "Signup → provision → claim flow",
          "Connect the app to your hosted hub from Settings"
        ],
        "pr": 140,
        "author": {
          "login": "crs48"
        }
      }
    },
    {
      "id": "2026-06-15",
      "url": "https://xnet.fyi/changelog#2026-06-15",
      "title": "Extensibility fabric: one home for plugins, labs & AI",
      "content_text": "Plugins, labs, the AI surface, and the editor are converging into a single extensibility fabric, so a capability built in one place can be reused everywhere.\n\n• Shared trust and consent model across plugins and labs\n• Plugin contributions and lab tools can be exposed to the AI assistant\n• Foundations for an AI → Lab → Plugin assembly line",
      "date_published": "2026-06-15T00:00:00Z",
      "tags": [
        "plugins",
        "ai",
        "editor",
        "platform"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Plugins, labs, the AI surface, and the editor are converging into a single extensibility fabric, so a capability built in one place can be reused everywhere.",
        "highlights": [
          "Shared trust and consent model across plugins and labs",
          "Plugin contributions and lab tools can be exposed to the AI assistant",
          "Foundations for an AI → Lab → Plugin assembly line"
        ],
        "pr": 144,
        "author": {
          "login": "crs48"
        }
      }
    },
    {
      "id": "2026-06-14",
      "url": "https://xnet.fyi/changelog#2026-06-14",
      "title": "Plugin ecosystem: scaffolding, marketplace & trust",
      "content_text": "Building and sharing plugins is now first-class. A scaffolder gets you from zero to a working plugin in seconds, and an enforceable capability model keeps installs safe.\n\n• xnet plugin scaffold command and an AI \"script → plugin\" path\n• Capability enforcement, semver compatibility gates and inter-plugin dependencies\n• A searchable marketplace index with install-consent prompts",
      "date_published": "2026-06-14T00:00:00Z",
      "tags": [
        "plugins",
        "platform"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Building and sharing plugins is now first-class. A scaffolder gets you from zero to a working plugin in seconds, and an enforceable capability model keeps installs safe.",
        "highlights": [
          "xnet plugin scaffold command and an AI \"script → plugin\" path",
          "Capability enforcement, semver compatibility gates and inter-plugin dependencies",
          "A searchable marketplace index with install-consent prompts"
        ],
        "pr": 142,
        "author": {
          "login": "crs48"
        }
      }
    },
    {
      "id": "2026-06-12",
      "url": "https://xnet.fyi/changelog#2026-06-12",
      "title": "On-device dictation",
      "content_text": "Talk to xNet. A new dictation engine turns speech into text locally, with hold-to-talk and private-by-default transcripts.\n\n• Zero-dependency dictation engine with hold-to-talk\n• Private-by-default transcription with full-text search\n• Pluggable speech backends (bring-your-own engine)",
      "date_published": "2026-06-12T00:00:00Z",
      "tags": [
        "app",
        "ai"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Talk to xNet. A new dictation engine turns speech into text locally, with hold-to-talk and private-by-default transcripts.",
        "highlights": [
          "Zero-dependency dictation engine with hold-to-talk",
          "Private-by-default transcription with full-text search",
          "Pluggable speech backends (bring-your-own engine)"
        ],
        "pr": 136
      }
    },
    {
      "id": "2026-06-11",
      "url": "https://xnet.fyi/changelog#2026-06-11",
      "title": "xNet AI chat panel works out of the box",
      "content_text": "The in-app AI assistant is wired up end-to-end — the chat panel now connects, picks a sensible model tier automatically, and reports errors honestly.\n\n• Fixed the connection so the assistant responds on a fresh install\n• Automatic model-tier selection with a clear status badge\n• Tier preference persists between sessions",
      "date_published": "2026-06-11T00:00:00Z",
      "tags": [
        "ai",
        "app"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "The in-app AI assistant is wired up end-to-end — the chat panel now connects, picks a sensible model tier automatically, and reports errors honestly.",
        "highlights": [
          "Fixed the connection so the assistant responds on a fresh install",
          "Automatic model-tier selection with a clear status badge",
          "Tier preference persists between sessions"
        ],
        "pr": 137,
        "author": {
          "login": "crs48"
        }
      }
    },
    {
      "id": "2026-06-10",
      "url": "https://xnet.fyi/changelog#2026-06-10",
      "title": "Faster, cheaper CI",
      "content_text": "Behind the scenes, the build pipeline got faster and more reliable — which means features reach you sooner.\n\n• Parallelized lint, typecheck and test jobs\n• Cached browser and native build dependencies",
      "date_published": "2026-06-10T00:00:00Z",
      "tags": [
        "ci",
        "performance"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Behind the scenes, the build pipeline got faster and more reliable — which means features reach you sooner.",
        "highlights": [
          "Parallelized lint, typecheck and test jobs",
          "Cached browser and native build dependencies"
        ],
        "pr": 141
      }
    },
    {
      "id": "2026-06-08",
      "url": "https://xnet.fyi/changelog#2026-06-08",
      "title": "Cohesive, feature-complete domain apps",
      "content_text": "CRM, accounting, tasks, experiments and spaces are now fully editable and consistent. Open any record to see every field, with bespoke views where they help.\n\n• Full CRM: contacts, deals, organizations, forecast lanes, quotes and de-dup merge\n• Finance: account and transaction inspectors, reports tab and budgeting\n• Tasks: project detail headers and milestone management\n• A shared inspector substrate (NodePeek + SchemaForm) across every domain",
      "date_published": "2026-06-08T00:00:00Z",
      "tags": [
        "crm",
        "finance",
        "tasks",
        "app"
      ],
      "image": "https://xnet.fyi/images/workbench-light.png",
      "_xnet": {
        "date": "June 2026",
        "summary": "CRM, accounting, tasks, experiments and spaces are now fully editable and consistent. Open any record to see every field, with bespoke views where they help.",
        "highlights": [
          "Full CRM: contacts, deals, organizations, forecast lanes, quotes and de-dup merge",
          "Finance: account and transaction inspectors, reports tab and budgeting",
          "Tasks: project detail headers and milestone management",
          "A shared inspector substrate (NodePeek + SchemaForm) across every domain"
        ],
        "pr": 123
      }
    },
    {
      "id": "2026-06-05",
      "url": "https://xnet.fyi/changelog#2026-06-05",
      "title": "Native CRM & ERP foundation",
      "content_text": "xNet grew a native CRM — a universal party model, pipelines, deals and activities that reuse the same social and schema primitives as the rest of the app.\n\n• Organizations, contacts, pipelines, deals, products and quotes\n• Append-only activity timeline and contact de-duplication\n• vCard import/export and GDPR helpers",
      "date_published": "2026-06-05T00:00:00Z",
      "tags": [
        "crm",
        "app"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "xNet grew a native CRM — a universal party model, pipelines, deals and activities that reuse the same social and schema primitives as the rest of the app.",
        "highlights": [
          "Organizations, contacts, pipelines, deals, products and quotes",
          "Append-only activity timeline and contact de-duplication",
          "vCard import/export and GDPR helpers"
        ],
        "pr": 102
      }
    },
    {
      "id": "2026-06-04",
      "url": "https://xnet.fyi/changelog#2026-06-04",
      "title": "Double-entry accounting",
      "content_text": "Track your money in xNet. A local-first, double-entry ledger brings accounts, transactions, budgets and reconciliation — with CSV/OFX/QIF import.\n\n• Balanced double-entry transactions with integer-precise money\n• Budgets, reconciliation and chart-of-accounts reports\n• Import from CSV, OFX and QIF",
      "date_published": "2026-06-04T00:00:00Z",
      "tags": [
        "finance",
        "app"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "Track your money in xNet. A local-first, double-entry ledger brings accounts, transactions, budgets and reconciliation — with CSV/OFX/QIF import.",
        "highlights": [
          "Balanced double-entry transactions with integer-precise money",
          "Budgets, reconciliation and chart-of-accounts reports",
          "Import from CSV, OFX and QIF"
        ],
        "pr": 101
      }
    },
    {
      "id": "2026-06-02",
      "url": "https://xnet.fyi/changelog#2026-06-02",
      "title": "Plug-and-play billing (Stripe & Bitcoin)",
      "content_text": "A provider-agnostic billing layer lets xNet apps take payments via Stripe or Bitcoin (BTCPay) without locking into either.\n\n• Stripe and BTCPay adapters behind one payment interface\n• Signed webhooks with idempotent processing\n• A useBilling() hook for checkout and subscription status",
      "date_published": "2026-06-02T00:00:00Z",
      "tags": [
        "platform"
      ],
      "_xnet": {
        "date": "June 2026",
        "summary": "A provider-agnostic billing layer lets xNet apps take payments via Stripe or Bitcoin (BTCPay) without locking into either.",
        "highlights": [
          "Stripe and BTCPay adapters behind one payment interface",
          "Signed webhooks with idempotent processing",
          "A useBilling() hook for checkout and subscription status"
        ],
        "pr": 106
      }
    },
    {
      "id": "2026-05-28",
      "url": "https://xnet.fyi/changelog#2026-05-28",
      "title": "Screenshots of every UI change, automatically",
      "content_text": "Every pull request that touches the interface now gets before/after screenshots and GIFs captured by CI — the same visuals that can feed this changelog.\n\n• Automatic screenshot, diff and GIF capture for changed UI\n• A sticky gallery comment on each pull request\n• Durable galleries that survive after merge",
      "date_published": "2026-05-28T00:00:00Z",
      "tags": [
        "ci",
        "devtools"
      ],
      "_xnet": {
        "date": "May 2026",
        "summary": "Every pull request that touches the interface now gets before/after screenshots and GIFs captured by CI — the same visuals that can feed this changelog.",
        "highlights": [
          "Automatic screenshot, diff and GIF capture for changed UI",
          "A sticky gallery comment on each pull request",
          "Durable galleries that survive after merge"
        ],
        "pr": 94
      }
    },
    {
      "id": "2026-05-20",
      "url": "https://xnet.fyi/changelog#2026-05-20",
      "title": "Experiment journal & habit tracker",
      "content_text": "Run personal experiments and track habits in xNet, with streaks, correlations and a verdict engine that stays honest about what the data can and can’t show.\n\n• Metrics, observations and experiments as first-class data\n• Streak heatmaps and correlation widgets\n• A \"Today\" panel for quick logging",
      "date_published": "2026-05-20T00:00:00Z",
      "tags": [
        "app"
      ],
      "_xnet": {
        "date": "May 2026",
        "summary": "Run personal experiments and track habits in xNet, with streaks, correlations and a verdict engine that stays honest about what the data can and can’t show.",
        "highlights": [
          "Metrics, observations and experiments as first-class data",
          "Streak heatmaps and correlation widgets",
          "A \"Today\" panel for quick logging"
        ],
        "pr": 89
      }
    }
  ]
}