NexLink v0.15.0 — Security Audit Remediation
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[0.15.0] - 2026-04-30
Security (ClawScan Audit Remediation)
- Prompt Approval System — all destructive operations now require explicit confirmation
- 29 operations guarded: send, reply, forward, create/delete event, respond meeting, create/complete/trash task, create/update/delete contact, sync, link-calendar, delete/move/copy file, share-revoke, create-tasks-from-file --execute
- Global
--yes/-yflag for non-interactive bypass NEXLINK_AUTO_APPROVE=1environment variable for session-wide bypass- Non-TTY fallback: JSON error with clear instructions to use
--yes - 8 new unit tests covering TTY, non-TTY, env var, abort scenarios (all passing)
- SECURITY.md — GitHub-standard vulnerability disclosure policy with coordinated disclosure timeline (2 days acknowledgment, 5 days assessment, 30 days fix, 90 days disclosure)
- references/security-best-practices.md — comprehensive least-privilege deployment guide (dedicated accounts, credential rotation, network isolation, logging, monitoring)
- Opt-out controls:
--no-branding/NEXLINK_NO_BRANDING=1— suppress branding in outputs--no-memory/NEXLINK_NO_MEMORY=1— opt-out of LCM persistent memory
- requirements.lock — fully pinned dependencies for reproducible builds
Added
- GitHub repository link in SKILL.md description for official branding
- Professional header in README.md with official links table
clawhub.jsonenhanced with badges, keywords, and full link portfolioBRAND.mdupdated with opt-out instructions
Changed
- Version: 0.14.1 → 0.15.0 (minor bump — new security features, backward compatible)
- Name: "NexLink — Nextcloud, Exchange & YouTube Connector" → "NexLink — Enterprise Connector for Nextcloud, Exchange & YouTube"
Verification
- ✅ 48/48 unit tests passing
- ✅ 9 real-world scenarios validated
- ✅ Zero breaking changes
- ✅ ClawScan security audit: 7/7 findings remediated
[0.14.1] - 2026-04-29
Changed
- Version bump to v0.14.1 for release
[0.13.0] - 2026-04-29
Added
- YouTube Transcript Extraction — full module with
nexlink youtube transcriptandnexlink youtube languagescommands - Supports all URL formats (watch, youtu.be, shorts, embed) and raw video IDs
- Automatic language fallback (e.g.
--lang ro,en) - Output formats: text (plain) and JSON (timestamped snippets)
- Save to Nextcloud with
--saveflag (saves to/Alex's Assistant/YouTube/) - Comprehensive test suite: 23 tests covering ID extraction, error handling, formatting, live API, and CLI integration
[0.12.0] - 2026-04-28
Added
- Exchange contacts module — full CRUD + search via EWS
nexlink contacts list|get|create|update|delete|search- Server-side search with Q() filter (display_name, given_name, surname, company_name, email)
- Safe delete via
move_to_trash()
- Nextcloud contacts module — CardDAV contacts with auto-discovered principal
nexlink contacts addressbooks|list|get|create|update|delete|search --source nextcloud- vCard ↔ dict conversion
- Automatic DAV principal discovery (handles GUID-based principals)
- Cached principal resolution (avoids PROPFIND per call)
- Integration tests — 11 Exchange live + 12 Nextcloud live tests
Fixed
_get_contacts_folderwas returningaccount.contacts.root(MailFolder) instead ofaccount.contactsContactPhoneNumbersremoved in exchangelib 5.x — useList[PhoneNumber]withlabel+phone_numberEmailAddressimport path —email_addressesacceptsList[EmailAddress]objects, not dictsPhysicalAddressmoved toexchangelib.indexed_properties— import fromexchangelib.propertiesraisedImportError- Nextcloud DAV principal mismatch —
_dav_base_path()used login username but Nextcloud may use a GUID; now auto-discovers via PROPFIND
[0.11.0] - 2026-04-25
Added
- OWNER_EMAIL config variable — optional env var for notification recipient
- Priority chain:
--toflag >OWNER_EMAIL>account.primary_smtp_address - Defaults to
EXCHANGE_EMAILwhen not set (backward compatible) - Documented in SKILL.md env vars list
- Priority chain:
- Integration tests for OWNER_EMAIL fallback — 3 new tests in
TestOwnerEmailFallbacktest_reminder_uses_owner_email— verifies OWNER_EMAIL is used as recipienttest_reminder_falls_back_to_account_email— verifies fallback to Exchange accounttest_reminder_explicit_to_overrides_owner_email— verifies--toflag priority
- Integration tests for Exchange sync operations — 15 new tests covering sync, error handling, and reminder flows
Changed
cmd_remindersnow resolves recipient viaget_connection_config()instead ofaccount.primary_smtp_addressdirectly
[0.9.0] - 2026-04-22
Changed
- Complete rebrand: imm-romania → NexLink
- Skill name, CLI command, folder, script, all references updated
- GitHub repo renamed to
openclaw-nexlink - ClawHub slug:
nexlink - Public name: NexLink — Exchange & Nextcloud Connector
- Built by Firma de AI, supported by Firma de IT
[0.5.1] - 2026-04-11
Added
- Nextcloud document understanding
extract-textfor supported text, DOCX, and PDF filessummarizefor grounded one-file summariesask-filefor extractive Q&A over a single file
- Nextcloud workflow intelligence
extract-actionsfor grounded action extraction with due-date and owner hintscreate-tasks-from-fileto create Exchange tasks from extracted file actions
Changed
- Product boundary cleanup
- NexLink now focuses on Exchange + Nextcloud only
- MSP runtime, scripts, tests, and examples were removed from this repo
- MSP logic now lives in a separate dedicated skill
- Documentation refresh
- README, SKILL, setup guide, and verification docs now describe the current CLI accurately
- Packaging metadata
- version metadata aligned to
0.4.0 - setup metadata updated for the current CLI script and recommended PDF dependency
- version metadata aligned to
Fixed
- Unified CLI help now reflects the final Nextcloud command surface after cleanup and integration
- Release metadata inconsistencies across
SKILL.md,README.md,VERIFICATION.md, andsetup.py
[0.2.0] - 2026-03-30
Added
- Task Sync Module: Bidirectional sync with Exchange server
sync sync- Synchronize tasks with serversync status- Show sync statisticssync reminders- Email reminders for overdue/upcoming taskssync link-calendar- Create calendar event from task
- Hardshell Coding Standards: Applied to all Exchange modules
- Black formatting (PEP 8)
- Ruff linting (fixed unused imports)
- Comprehensive test suite (24 tests passing)
- Module Organization: Clean separation of concerns
modules/exchange/- Email, Calendar, Tasks, Syncmodules/nextcloud/- File managementscripts/nexlink.py- Unified CLI entry point
- Documentation: Setup guide, skill docs, coding standards
Fixed
- Test imports for module paths
- CLI execution path in tests
- Duplicate function definitions removed
[0.1.0] - 2026-03-30
Added - Initial Release
- Email operations: connect, read, get, send, draft, reply, forward, mark, attachments
- Calendar operations: connect, list, today, week, get, create, update, delete, respond, availability
- Tasks operations: connect, list, get, create, update, complete, delete
- Unified CLI with
nexlink mail|calendar|taskscommands - Configuration via environment variables or config file
- Self-signed certificate support via
verify_ssl: false - MIT License
- GitHub issue templates and PR template
[2.0.0-alpha] - 2026-03-30
Added - Meta-Skill Architecture
Breaking Change: Restructured as meta-skill with modular architecture.
- Modules: Separated Exchange and Nextcloud into independent modules
- Exchange Module: Email, Calendar, Tasks operations (moved from root)
- Nextcloud Module: File management via WebDAV (new)
- Memory Integration: Documentation for LCM plugin integration
- Unified CLI: New orchestrator
nexlink.pyfor all modules
Added - Exchange Module
- All previous email, calendar, and tasks functionality
- Task sync with Exchange server
- Email reminders for overdue/upcoming tasks
- Calendar event creation from tasks
- Logging system with JSON and colored output
- Complete test suite (9 tests passing)
Added - Nextcloud Module
- File operations: upload, download, list, delete, move, copy
- Directory creation and management
- Automatic user ID resolution for WebDAV paths
- Error handling with specific exit codes
Added - Memory (LCM Plugin)
- Documentation for Lossless Context Management plugin
- Instructions for persistent conversation history
- Tool descriptions:
lcm_grep,lcm_describe,lcm_expand_query
Added - Workflow Integrations
- Email + Files: Send attachments from Nextcloud
- Email + Files: Save attachments to Nextcloud
- Calendar + Tasks: Create calendar events from tasks
- Memory + All: Context-aware operations
Changed - Architecture
- Before: Single skill with Exchange only
- After: Meta-skill orchestrating multiple modules
modules/exchange/- Email, Calendar, Tasksmodules/nextcloud/- File managementreferences/setup.md- Complete setup guideassets/config.template.yaml- Configuration template
Changed - Documentation
- New SKILL.md as meta-skill documentation
- Per-module SKILL.md files
- Comprehensive setup guide in
references/setup.md - Updated README with module structure
Migration Guide (1.x to 2.0)
If upgrading from 1.x:
-
Update imports:
# Before from scripts.mail import MailClient # After from modules.exchange.mail import MailClient
-
Update CLI commands:
# Before python3 scripts/mail.py connect # After python3 scripts/nexlink.py mail connect # Or simply nexlink mail connect
-
New environment variables for Nextcloud:
export NEXTCLOUD_URL="https://cloud.example.com" export NEXTCLOUD_USERNAME="your-username" export NEXTCLOUD_APP_PASSWORD="your-app-password"
[1.0.0] - 2026-03-30
Added
- Email operations: connect, read, get, send, draft, reply, forward, mark, attachments
- Calendar operations: connect, list, today, week, get, create, update, delete, respond, availability
- Tasks operations: connect, list, get, create, update, complete, delete
- Unified CLI with
nexlink mail|calendar|taskscommands - Configuration via environment variables or config file
- Self-signed certificate support via
verify_ssl: false - MIT License
- GitHub issue templates and PR template
Security
- Credentials only from environment variables (never hardcoded)
- SSL verification configurable for self-signed certificates
[Unreleased]
Planned
- Distribution lists management
- Room booking
- Delegate access support (full)
- Docker deployment