Repository navigation
v2.2.0
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