Skip to content

v2.2.0

Choose a tag to compare

@axelander axelander released this 07 Oct 06:57
· 1 commit to release/v2.2 since this release
d7a65cb

What's Changed

  • Personal assistant governance: prompt library + tenant policy + runtime enforcement by @MaxEriksson2000 in #417
  • Token counting update, document visuals as vision input, attachment modernization by @MaxEriksson2000 in #489
  • Standardize local worker and cache commands by @MaxEriksson2000 in #494
  • Show model details in the chat selector by @MaxEriksson2000 in #493
  • Expand and enforce frontend E2E coverage by @MaxEriksson2000 in #492
  • Harden LiteLLM provider flow and upgrade to 1.88.1 by @MaxEriksson2000 in #490
  • Allow re-uploading the same attachment by @MaxEriksson2000 in #491
  • MCP improvements by @axelander in #450
  • feat: copy answer as rich text by @jerkerosatiesk in #495
  • ci: maintainer-triggered AI code & security review (@review) by @CCimen in #508
  • feat(help-assistants): reword edit banner and warn before editing built-in prompt by @Banald in #506
  • fix(mcp): enforce org-level server disable at runtime by @Banald in #502
  • fix(mcp): assign post-creation-enabled servers to personal assistants by @Banald in #503
  • feat: support JSON/XML attachments and decouple crawler MIME policy by @MaxEriksson2000 in #498
  • ci(@review): tolerant trigger (accept /review & @review) + clearer ignore logging by @CCimen in #510
  • ci(@review): 👀 acknowledgement reaction + clean ignored-run exits by @CCimen in #511
  • ci(@review): fix 👀 reaction 403 — pull-requests:write + continue-on-error by @CCimen in #512
  • feat: org-controlled model pricing visibility by @MaxEriksson2000 in #496
  • feat: improve model availability visibility by @MaxEriksson2000 in #514
  • feat(help-assistants): strengthen Prompt Guide question modes and output quality by @Banald in #515
  • show MCP tool responses inline by @MaxEriksson2000 in #517
  • SharePoint integration hardening: security, data-integrity & robustness by @MaxEriksson2000 in #518
  • fix(review): route feedback comments to bridge by @CCimen in #523
  • test: expand e2e coverage by @MaxEriksson2000 in #520
  • fix(review): restore review request acknowledgement by @CCimen in #526
  • refactor: rename Intric → Eneo across the codebase (synced with develop + CI guard) by @MaxEriksson2000 in #309
  • fix: include assistant attachment baseline in context usage by @MaxEriksson2000 in #525
  • chore(project): harden consolidated project intake and roadmap export by @MaxEriksson2000 in #418
  • fix(project): automate roadmap setup by @CCimen in #528
  • fix(project): clarify roadmap PR linkage by @CCimen in #529
  • fix: resolve dependency security alerts by @MaxEriksson2000 in #527
  • chore(ci): gate expensive checks by change scope by @CCimen in #530
  • Upgrade LiteLLM and provider logos by @MaxEriksson2000 in #531
  • feat(deployment): isolate data layer with three-network topology by @MaxEriksson2000 in #532
  • fix(review): restore eyes reaction permission by @CCimen in #539
  • feat(deployment): add optional module overlay and operator guide by @MaxEriksson2000 in #533
  • feat(auth): retire legacy v1 API key system by @MaxEriksson2000 in #540
  • fix(review): align AI review dispatch with v3.1 contract by @CCimen in #543
  • fix(review): restore eyes reaction permission by @CCimen in #544
  • fix(models): surface encryption configuration errors by @CCimen in #561
  • refactor(object-content): establish durable content foundation by @CCimen in #547
  • fix(ci): authenticate SeaweedFS attestation verification by @CCimen in #564
  • docs: make object content storage easier to operate by @CCimen in #565
  • feat(mcp): per-server identity forwarding to MCP servers by @axelander in #542
  • fix(security): update SeaweedFS source pin by @CCimen in #566
  • refactor(skills): add reusable Skills to Assistants and Apps by @CCimen in #552
  • refactor(skills): add safe revision history and restore by @CCimen in #559
  • refactor(skills): add governed organisation catalogue by @CCimen in #560
  • fix(crawler): use Crochet reactor for embedded Scrapy by @CCimen in #567
  • chore(roadmap): publish safe JSON feed for eneo.ai by @CCimen in #570
  • refactor(object-content): support optional durable byte backends by @CCimen in #573
  • feat(skills): show organisation adoption and drift by @CCimen in #574
  • feat(skills): add emergency execution block by @CCimen in #577
  • test(skills): lock deletion provenance contract by @CCimen in #580
  • Plan selective Skill activation rollout by @CCimen in #581
  • feat(skills): add dormant binding activation mode by @CCimen in #582
  • feat(skills): add typed tenant Skill runtime policy by @CCimen in #583
  • docs(skills): record T012 receipt and activate T013 by @CCimen in #584
  • migration(object-content): adopt File and Icon bytes by @CCimen in #575
  • fix(roadmap): expose sponsor in public JSON by @CCimen in #585
  • fix(files): prevent deleting files that are still in use by @CCimen in #587
  • feat(skills): freeze per-turn activation evidence by @CCimen in #590
  • docs(skills): record frozen plan delivery by @CCimen in #591
  • feat(files): make exact original downloads explicit by @CCimen in #589
  • refactor(object-content): keep attachment reads fast at scale by @CCimen in #592
  • fix(ci): avoid QEMU in native amd64 build by @CCimen in #594
  • Enforce Skill execution blocks at binding boundaries by @CCimen in #593
  • fix(ci): make frontend E2E failures diagnosable by @CCimen in #596
  • fix(spaces): keep application lists fast with attached files by @CCimen in #598
  • Activate on-demand Skills during chat turns by @CCimen in #600
  • refactor(admin): control new-file storage and upload limits by @CCimen in #601
  • feat(skills): save Assistant activation modes by @CCimen in #603
  • feat(skills-ui): configure Assistant activation controls by @CCimen in #606
  • fix(knowledge): preserve active knowledge after ingestion failure by @CCimen in #609
  • fix(insights): authorize message logging before loading details by @CCimen in #610
  • feat(object-content): move verified content between storage backends by @CCimen in #611
  • feat(skills): add activation diagnostics to chat debug panel by @CCimen in #612
  • fix(ci): restore develop migration and frontend builds by @CCimen in #614
  • feat(knowledge): keep documents available during updates by @CCimen in #615
  • fix(ci): add swap to frontend image publish by @CCimen in #617
  • feat(skills): add on-demand mode to Personal Chat by @CCimen in #616
  • Give each Skill lifecycle conflict its own reason code and recovery message by @CCimen in #619
  • Stop Frontend E2E failing by hardware speed instead of correctness by @CCimen in #622
  • Stop a 2-second backend keep-alive from turning the workspace into a 500 page by @CCimen in #623
  • Finish adopting the one error contract, and make it enforceable by @CCimen in #621
  • Stop loading a whole tenant's assistants to validate the Personal Chat policy by @CCimen in #626
  • Present chat turn diagnostics in a resizable sidebar with named skill evidence by @CCimen in #624
  • Give Skills governance a dedicated admin page by @CCimen in #627
  • fix: let administrators move content back to PostgreSQL during an object storage outage by @CCimen in #631
  • feat: deliver committed knowledge jobs reliably after crashes between database and queue by @CCimen in #633
  • ci: stop the post-merge image publish from running out of memory by @CCimen in #634
  • Let admins move the Personal Chat binding to a Skill's published version by @CCimen in #629
  • Offer the Personal Chat update from the Skill adoption view by @CCimen in #635
  • feat: let administrators read and trust the storage settings page by @CCimen in #640
  • fix(alembic): stop migrations from disabling application loggers by @CCimen in #639
  • feat(skills): let admins move every Assistant binding to a Skill's published version by @CCimen in #638
  • perf(skills): keep Assistant fleet validation query-bounded by @CCimen in #644
  • feat(skills): update bindings after publication by @CCimen in #645
  • feat(skills): update App bindings after publication by @CCimen in #647
  • Show accurate context usage for Skill-enabled Assistants by @CCimen in #648
  • Retire completed Enterprise Skills rollout plans by @CCimen in #652
  • feat: keep knowledge processing safe across worker restarts by @CCimen in #641
  • fix: make storage settings readable in Swedish and honest about refreshes by @CCimen in #642
  • fix: keep admin pages usable in narrow windows and on iPads by @CCimen in #643
  • fix: converge parallel Alembic migrations by @CCimen in #653
  • Explain failed knowledge uploads without exposing internal errors by @CCimen in #657
  • Keep message diagnostics open while saving the first response by @CCimen in #685
  • chore: clear the dead-code report findings by @MaxEriksson2000 in #687
  • fix(deps): patch known vulnerabilities in pillow, next and vitest by @MaxEriksson2000 in #686
  • Fix Skill activation and rollout controls by @CCimen in #688
  • feat: preserve originals for uploaded knowledge by @CCimen in #680
  • Keep object storage reliable across S3-compatible services by @CCimen in #690
  • Let administrators connect object storage in Eneo by @CCimen in #692
  • feat(mcp): file references to MCP tools via S3-backed signed URLs by @axelander in #464
  • feat(rag): expose knowledge as an on-demand MCP search tool by @axelander in #538
  • deps(backend): bump cryptography, aiohttp and litellm by @MaxEriksson2000 in #699
  • fix(files): require object storage for URL-only file references by @axelander in #697
  • fix: report the real error when an API call fails during SSR by @CCimen in #703
  • refactor(chat-debug): gate diagnostics on assistant_debug alone by @axelander in #698
  • fix(model-providers): route live-listing enrichment through the shared cost-map resolver by @MaxEriksson2000 in #704
  • feat(rag): describe a knowledge source without a search query by @axelander in #700
  • feat(mcp): name tools the way the UI does when talking to users by @axelander in #705
  • chore(devcontainer): make the bundled object-content endpoint connectable by @axelander in #706
  • Let administrators change the S3-compatible storage destination by @CCimen in #701
  • fix(mcp): reliable attachment reading via the loopback files tool by @axelander in #707
  • Keep storage administration under one permission by @CCimen in #711
  • Show administrators what is using file storage by @CCimen in #713
  • Make storage usage colors easy to understand by @CCimen in #715
  • Add governed reasoning controls to personal chat by @CCimen in #718
  • Expand knowledge search with adjacent chunks by @axelander in #719
  • Clear new Go advisories in the SeaweedFS supply-chain gate by @axelander in #726
  • Bump grype so the image gate stops misreading Go stdlib ranges by @axelander in #727
  • docs: explain knowledge retrieval and MCP interoperability by @axelander in #720
  • fix(migrations): restore original parent of 2.0.1 hotfix migration by @axelander in #728
  • fix(deployment): restore upload-limit env vars in backend env template by @axelander in #729
  • refactor(mcp): drop protocol-session resume before 2.2 by @axelander in #730
  • fix(chat): persist tool-call metadata on non-streaming completions by @axelander in #732
  • chore(mcp): drop stale transport_type docs and harden HTTP diagnostic probe by @axelander in #731
  • feat(modules): add auth broker for module SSO handoff by @MaxEriksson2000 in #536
  • fix(migrations): restore single Alembic head by @CCimen in #740
  • ci: fail fast on multiple Alembic heads by @MaxEriksson2000 in #741
  • ci: run backend tests with -n 4 and drop coverage collection by @MaxEriksson2000 in #746
  • perf(knowledge): add index on info_blobs.integration_knowledge_id by @MaxEriksson2000 in #743
  • ci: support merge queue via merge_group triggers by @MaxEriksson2000 in #748
  • deps(backend): bump LiteLLM to 1.98.0 by @MaxEriksson2000 in #747
  • perf(sharepoint): load import-dialog site list in seconds instead of minutes by @MaxEriksson2000 in #745
  • fix(chat): persist personal MCP server toggles by @MaxEriksson2000 in #750
  • refactor(modules): remove legacy feature-flag module gating by @MaxEriksson2000 in #738
  • feat(modules): add tenant-implicit module administration by @MaxEriksson2000 in #737
  • fix(models): warn six months before deprecation by @MaxEriksson2000 in #756
  • feat(sharepoint): add fixture validation and improve import UX by @MaxEriksson2000 in #751
  • migration(files): prepare non-blocking legacy content adoption by @CCimen in #752
  • feat(files): adopt legacy content without blocking startup by @CCimen in #755
  • fix(jobs): recover pre-durable knowledge jobs by @CCimen in #762
  • docs(storage): clarify legacy file upgrade operations by @CCimen in #769
  • docs(storage): clarify temporary database growth by @CCimen in #770
  • fix(files-api): propagate deletion failures to callers by @CCimen in #764
  • feat(knowledge): expose retained originals to authorized readers by @CCimen in #765
  • chore(ci): remove obsolete AI review trigger by @CCimen in #773
  • fix(api): clarify file deletion failures by @CCimen in #774
  • fix(models): migrate usage from disabled source models by @CCimen in #766
  • ci(seaweedfs): clear x/crypto advisories and give the image its own reliable workflow by @CCimen in #777
  • feat(mcp): web search and image generation as capability MCP providers by @axelander in #541
  • fix(storage): keep reads and recovery consistent across placement changes by @CCimen in #788
  • feat(storage): inspect and pause legacy File and Icon migration by @CCimen in #790
  • feat(storage): inspect legacy upgrade requirements before downtime by @CCimen in #793
  • fix(storage): support released File/Icon schemas in upgrade preflight by @CCimen in #795
  • fix(image-generation): own timeout, in-use highlighting, unavailable-tool visibility by @axelander in #798
  • fix(chat): localize the built-in image generation tool by @axelander in #799
  • feat(image-generation): reference images for variations and follow-up edits by @axelander in #800
  • fix(chat): let a running built-in tool step expand to its parameters by @axelander in #802
  • docs(capabilities): Functions guide (web search, image generation) and built-in tool servers by @axelander in #801
  • fix(seaweedfs): update vulnerable dependencies and preserve failed audit reports by @CCimen in #816
  • fix(ui): stop painting the Eneo wordmark in the retired Intric indigo by @axelander in #771
  • fix(chat): render capability tool calls as built-in steps by @axelander in #818
  • feat(skills): show Skill use in chat, fix personal chat model check, polish Skills UI by @CCimen in #822
  • test(e2e): look for chat messages inside the conversation, not the whole page by @CCimen in #824
  • perf(web): lazy icon library, script and font preloads, hover data preloading by @CCimen in #823
  • perf(chat): stop blocking the stream on per-token logs, patch markdown in place by @CCimen in #825
  • fix(ui): highlight code blocks as their fenced language by @CCimen in #826
  • feat(governance): admin-managed file handling for the personal assistant by @axelander in #829
  • test(object-content): give lock observations headroom under parallel workers by @CCimen in #830
  • Add optional File/Icon legacy cleanup to the 2.2 upgrade by @CCimen in #803
  • deps(backend): bump litellm to 1.101.0 by @MaxEriksson2000 in #831
  • test(object-content): give the test store's readiness client load headroom by @CCimen in #832
  • fix(chat): hold back only the unfinished citation tag while streaming by @CCimen in #828
  • test(integration): keep the settings singleton stable across tests by @CCimen in #833
  • test(object-content): widen the test store's binding window further by @CCimen in #834
  • fix(chat): release streamed text that cannot become a citation tag by @CCimen in #835
  • fix(knowledge): allow users to inspect shared chat sources by @CCimen in #821
  • fix(integrations): prevent MissingGreenlet when connecting personal accounts by @MaxEriksson2000 in #836
  • feat(auth): add self-service password changes by @MaxEriksson2000 in #760
  • fix(dev): prevent duplicate frontend servers by @MaxEriksson2000 in #757
  • feat(auth): rebuild login and logout pages on shadcn-svelte by @MaxEriksson2000 in #837
  • docs: correct docs.eneo.ai content against the code by @MaxEriksson2000 in #785
  • fix(admin): fix inactive users and filter tables across pages by @MaxEriksson2000 in #838
  • fix(object-content): keep the readiness probe sanitized while PostgreSQL restarts by @MaxEriksson2000 in #841
  • feat(docs): publish versioned documentation from release refs by @MaxEriksson2000 in #783
  • feat(files): serve signed file references from PostgreSQL-backed originals by @axelander in #840
  • feat(api-keys): allow public key origins without tenant allowlisting by @CCimen in #843
  • feat(skills): add admin removal with retained history (#876) [backport v2.2] by @axelander in #904
  • fix(web): hide legacy Services UI before 2.2 by @MaxEriksson2000 in #927
  • fix(config): stop at startup when removed environment variables are set by @MaxEriksson2000 in #944
  • Security fixes for v2.2.0-rc.4 by @CCimen in #957
  • fix(integrations): backport access controls to 2.2 by @MaxEriksson2000 in #960
  • fix(spaces): backport tenant confinement of API keys and moves to 2.2 by @axelander in #963
  • fix(templates): backport tenant-scoped template consumption to 2.2 by @axelander in #965
  • fix(auth): backport session lifetime validation and unit labels to 2.2 by @axelander in #967
  • fix(spaces): carry the tenant in knowledge-source owner facts on 2.2 by @axelander in #972
  • fix(models): backport endpoint-change credential rule and admin probe… by @axelander in #971
  • fix(files): backport version-2 signed download tokens to 2.2 by @axelander in #969
  • test: stabilise two order- and timing-dependent tests on 2.2 by @MaxEriksson2000 in #981
  • fix(storage): backport admin-only tenant storage usage to 2.2 by @MaxEriksson2000 in #975
  • fix(info-blobs): backport edit authorization for info blobs to 2.2 by @MaxEriksson2000 in #974
  • fix(spaces): backport viewer and insight read rules to 2.2 by @MaxEriksson2000 in #979
  • fix(auth): backport the failed password login limit to 2.2 by @MaxEriksson2000 in #986
  • feat(redis): backport optional Redis authentication to 2.2 by @MaxEriksson2000 in #980
  • fix(sysadmin): backport the sysadmin user response model to 2.2 by @MaxEriksson2000 in #983
  • fix(web): backport unavailable tools for models without tool calling to 2.2 by @axelander in #992
  • fix(auth): backport the 30-day session lifetime cap to 2.2 by @MaxEriksson2000 in #990
  • fix(mcp): backport tool auto-approval by internal flag to 2.2 by @axelander in #991
  • fix(auth): backport service-key loopback authentication to 2.2 by @axelander in #988
  • fix(chat): backport built-in tool labels by internal flag to 2.2 by @axelander in #1000
  • fix(auth): backport shared OIDC account admission to 2.2 by @MaxEriksson2000 in #997
  • fix(security): backport retention and crawler access fixes to 2.2 by @MaxEriksson2000 in #994
  • fix(mcp): backport built-in provider loopback URL resolution to 2.2 by @axelander in #1007
  • fix(web): SharePoint source list scrolls and its search box looks active (2.2 backport) by @MaxEriksson2000 in #1012
  • fix(web): keep the page tab bar from scrolling vertically (2.2 backport) by @axelander in #1020
  • fix(ci): align sync-frontend-with-backend with the accepted settings values (2.2 backport) by @axelander in #1026
  • fix(spaces): give the personal assistant a usable completion model on load (backport v2.2) by @MaxEriksson2000 in #1025
  • fix(files): delete uploaded files after their last use (backport v2.2) by @MaxEriksson2000 in #1038

Full Changelog: v2.1.2...v2.2.0