# Files

> Files is the document management of nexxus. File documents in folders or by attributes, edit them in the browser with others, keep every version, share them inside the company or by public link, and let the AI Assistant answer questions from their content. This page covers all of it, including external sources such as Paperboi.

**Files** is where documents live in nexxus: contracts, offers, policies, scans, spreadsheets. You find it under <MenuPath to="Documents > Documents > Files" /> (route `/dokumente`). It looks like a file explorer, but every document carries more than a name and a folder. It keeps its versions, it has attributes such as type, project and confidentiality, it knows who may see it, and nexxus reads its content so that the AI Assistant can answer questions from it.

Take Brandt & Söhne again. The office drops the signed maintenance contracts for Nordwind AG into a folder for that customer. nexxus suggests "Vertrag" (contract) as type, the office accepts. The project lead edits the service schedule in the browser while a colleague reads along. A week later someone asks the AI Assistant "Which of our contracts have a three-month notice period?", and it answers from the contracts that person may read, with the document and the page.

## How Files fits together

<Hub
  inputsLabel="In"
  inputs={[
    { icon: 'upload', title: 'Upload', text: 'Files, whole folders, ZIP archives, photos' },
    { icon: 'file-pen-line', title: 'Created in nexxus', text: 'Markdown, HTML pages, spreadsheets, apps' },
    { icon: 'inbox', title: 'Mail and AI Assistant', text: 'Attachments from mailboxes, results of the AI Assistant' },
  ]}
  core={{
    title: 'Files',
    text: 'One document, many versions, with its own access rights',
    items: ['Versions', 'Attributes', 'Shares', 'Trash'],
  }}
  outputsLabel="Out"
  outputs={[
    { icon: 'eye', title: 'Preview and editing', text: 'In the browser, together with others' },
    { icon: 'link', title: 'Public links', text: 'With expiry date and password' },
    { icon: 'sparkles', title: 'AI Assistant', text: 'Reads, searches and edits, with your rights' },
  ]}
  caption="Files are stored in S3-compatible storage. Their text goes into a search index that respects the shares of every document."
/>

## Folders or attributes

Every tenant decides once how its documents are organised. The choice applies to everyone in the tenant.

| | <Ui>Folders: file in folders, find via attributes</Ui> | <Ui>Attributes: no folders, structured by attributes</Ui> |
|---|---|---|
| Filing | In a shared folder tree, for example *Customers / Nordwind AG / Contracts* | Every document lands in its owner's own storage |
| Finding | Folders plus filters on attributes | Grouping and filters on attributes |
| On the left | The folder tree | A grouping tree. <Ui>Grouping</Ui> sets which attributes nest in which order; drag to reorder, <Ui>Add dimension</Ui> adds one |
| Folders | Create, move, share | Cannot be created, not even by uploading a folder or a ZIP |

The setting is called <Ui>How files are organised</Ui> and lives under <MenuPath to="Administration > Operations > System configuration" />, section <Ui>Files</Ui>. The setup wizard asks the same question in its step Files. You can switch later: existing folders and their shares are kept, their documents appear in the attribute view, and switching back restores the folders.

When the tenant works with folders, each person still chooses how to search: at the top of the tree, between <Ui>Folders</Ui> and <Ui>Attributes</Ui>. <Ui>Attributes</Ui> groups the documents across all folders like the attribute mode; filing still happens in the folder view only. The choice is part of the address (`?ansicht=merkmale`), survives a reload and travels with a copied link.

## The Files page

<Screenshot src={shot_files_overview} url="/dokumente?ordner=2" alt={"The Files page with tree, list and quick view"} caption={"Click a row for the quick view, double-click to open the document page."} />

- **On the left, the tree** with three sections, above them <Ui>Recently modified</Ui> and, when your tenant works with folders, the switch <Ui>Folders</Ui> / <Ui>Attributes</Ui>. <Ui>My files</Ui> holds your own folders. <Ui>Shared with me</Ui> holds folders others shared with you. <Ui>System</Ui> holds two folders nexxus creates for you and that cannot be deleted: "KI-Sessions" (files from your conversations with the AI Assistant) and "Skill-Dateien" (files of your skills). Below them come connected external sources, and at the bottom the <Ui>Trash</Ui>. <Ui>Hide folder tree</Ui> gives the list more room.
- **Where Files opens:** where you were last. On your first visit it opens <Ui>Shared with me</Ui> if <Ui>My files</Ui> is still empty and something has been shared with you. A link to a folder always opens that folder. <Ui>My files</Ui> and <Ui>Shared with me</Ui> show how many folders they hold; <Ui>Shared with me</Ui> is expanded as soon as it holds something, and nexxus remembers which sections you expanded or collapsed.
- **In the middle, the list** with the columns name and <Ui>Modified</Ui>. A row can carry the flag <Ui>shared</Ui>, attribute chips, and an AI flag: <Ui>AI ...</Ui> while the AI checks a new file, <Ui>AI 2</Ui> when two suggestions wait for you.
- **On the right, the quick view** of the selected document, with its details and a preview. Drag its edge to make it wider.
- **At the bottom**: <Ui>Share</Ui> (or <Ui>Access</Ui> if you may only look) for the open folder, <Ui>New</Ui>, and <Ui>More actions</Ui> with <Ui>Copy link to this view</Ui> and <Ui>Refresh</Ui>.

Click a row to select it and see the quick view. Double-click it, or press Enter, to open the document page. Tick several rows to get the selection bar: <Ui>Share</Ui>, <Ui>Move</Ui>, <Ui>Download</Ui>, <Ui>Delete</Ui>, and under more actions <Ui>Edit tags ...</Ui>, <Ui>Accept AI suggestions (3)</Ui> and <Ui>Use in chat</Ui>. Right-clicking a row, a folder or the empty list opens the matching menu.

On a phone the tree and the list share the screen: <Ui>Up one level</Ui> takes you back, and a long press selects.

## Upload files

<Steps>

1. Open the folder you want to file into. You can upload into <Ui>My files</Ui> and into folders where you are owner or editor.

2. Drag files or whole folders onto the list. The list shows <Ui>Drop into: Contracts</Ui> while you drag. Or click <Ui>New</Ui> and <Ui>Upload files ...</Ui>.

3. The dialog <Ui>Upload files</Ui> shows <Ui>Will be filed in:</Ui> with the target. You can add more with <Ui>Choose files</Ui> and <Ui>Choose folder</Ui>, on a phone or tablet also with <Ui>Take photo</Ui>. Each file is listed with its subfolder and size; the × removes it again. A line below counts them, for example <Ui>6 files in 3 subfolders · 1 system file skipped</Ui>: system files such as `.DS_Store` and `Thumbs.db` are left out.

4. ZIP archives are unpacked when <Ui>Unpack ZIP archives; folders in the archive are created as subfolders</Ui> is ticked, which it is by default. Uploaded folders keep their subfolders.

5. While <Ui>Comparing with existing documents ...</Ui> is shown, nexxus compares each file with the documents you may see. If it knows a file already, it says so under the file, for example <Ui>Already here as “Contract.pdf”</Ui>, and you choose what happens to it:

   - Same content as an existing document, also in another folder or as an older version, or the same file picked twice: <Ui>Skip</Ui> is proposed, the other choice is <Ui>Separate document</Ui>.
   - Same or similar name in the target folder with the same extension, such as `Contract_v2.pdf`, `Contract (1).pdf`, `Contract - Copy.pdf` or `Contract final.pdf` next to `Contract.pdf` (<Ui>Looks like a new revision of “Contract.pdf” (version 2)</Ui>): <Ui>New version</Ui> is proposed. The file then becomes the next version of that document, name and folder stay, and the previous state is in the [history](#versions). <Ui>Separate document</Ui> and <Ui>Skip</Ui> are offered too.

   Only someone who may edit the existing document can add a new version. Otherwise <Ui>New version</Ui> is locked, <Ui>Separate document</Ui> is proposed, and the row says <Ui>Only people who can edit the document can add a new version.</Ui> The line below the list counts along, for example <Ui>1 as a new version</Ui> and <Ui>2 will be skipped</Ui>. nexxus does not compare ZIP archives, and compares files over 128 MB by name only.

6. Click <Ui>Upload</Ui>. The button counts the files that will be uploaded, for example <Ui>Upload (6)</Ui>; skipped ones do not count. Nothing is uploaded before this click. If the comparison is still running, the dialog waits for it. If it found something, the dialog shows it to you first and you click again.

7. Watch the progress (<Ui>3 of 12 files</Ui>). Each file ends with a tick or an error mark. Failed files are listed with the reason, for example <Ui>No connection</Ui> or <Ui>Upload failed</Ui>, and <Ui>Try again</Ui> sends them again.

8. When the dialog says <Ui>12 documents uploaded</Ui>, it adds: <Ui>The AI suggests attributes in the background; the suggestions appear on the files in the list. You can close the dialog now.</Ui> A file that became a new version shows its number, for example <Ui>Version 3</Ui>. Skipped files are listed below with their reason (<Ui>2 files skipped</Ui>). Each uploaded file has <Ui>Share</Ui> to share it right away. Close the dialog with <Ui>Done</Ui>. The uploaded files are in the list already, also when you close the dialog with ×.

</Steps>

<Screenshot src={shot_files_upload} url="/dokumente?ordner=5" alt={"A folder and a ZIP archive ready to upload"} caption={"Nothing is uploaded before you click Upload."} />

{/* SHOT: files-upload-match */}

Dropping files onto a folder in the tree files them into that folder. In the attribute mode, everything lands in your own storage without folders.

**Limits:** a single file may be up to 1 GB. A ZIP archive may hold at most 200 entries and 200 MB unpacked. Any file type is accepted; which ones get a preview is listed under [Preview](#preview-and-the-document-page).

Where you cannot upload, the button tells you why: <Ui>Open a folder to upload</Ui>, <Ui>Nothing can be filed in system folders</Ui>, <Ui>Open a shared folder to file there</Ui> or <Ui>No write permission in this folder</Ui>.

## Create documents in nexxus

Under <Ui>New</Ui> you can also create a document directly in the browser:

- <Ui>Markdown file</Ui> (named "New note" at first)
- <Ui>HTML page</Ui> ("New page")
- <Ui>Spreadsheet (XLSX)</Ui> ("New spreadsheet")

Each is a real file in the open folder (or in <Ui>My files</Ui> if you may not write there) and opens straight in the editor. The same menu lists the apps of your tenant under <Ui>New app</Ui>, for example <Ui>Kanban board</Ui> and <Ui>Markdown editor</Ui>. See [Apps](/apps/overview/).

### Edit together

Markdown and HTML open in a text editor with three modes: <Ui>Source only</Ui>, <Ui>Split</Ui> (source and preview side by side) and <Ui>Preview only</Ui>. Spreadsheets open in a grid with formatting, sorting, a header row, row heights, and inserting or deleting rows and columns. Formulas work; while a sheet has formulas, sorting is locked. Very large sheets show only their first rows and columns and keep the rest untouched.

Several people can edit at the same time. Next to the save state, a round badge with initials stands for each other person who has the document open. Point at it to read, for example, <Ui>Tom Keller is viewing it right now</Ui> or <Ui>Tom Keller is editing right now</Ui>. You also see the cursors of the others. Simultaneous typing in Markdown and HTML merges without conflicts.

nexxus saves as you type. The indicator shows <Ui>Changes ...</Ui>, <Ui>Saving ...</Ui>, <Ui>Saved</Ui> or <Ui>Not saved</Ui>. Until you click <Ui>Done</Ui>, your changes are a draft; <Ui>Done</Ui> turns them into a new version.

<Screenshot src={shot_files_editor} url="/dokumente/detail/7?bearbeiten=1" alt={"Editing a Markdown document while a colleague has it open"} caption={"Done turns the draft into a new version."} />

## Preview and the document page

The quick view and the document page show a preview for:

- images (PNG, JPG, GIF, WebP, SVG, BMP)
- PDF and HTML
- Markdown, rendered
- Word files (DOCX) with headings, lists, tables and images, without Word's page layout. Old DOC files get no preview.
- tables (CSV, TSV, XLS, XLSX): the first rows. <Ui>Truncated. Open or download the file for the full table.</Ui>
- App documents (`.nxd`), shown by their app
- JSON and text, in the large preview dialog

HTML pages and mini-apps run separately from nexxus in the preview, on the document page and in a new tab: their scripts run, and relative links to stylesheets, scripts, images and other pages work, but they cannot act with your sign-in or store data in the browser. nexxus saves a mini-app's state with the document. SVG files are shown without script.

Everything else says <Ui>There is no preview for this file type.</Ui> and offers the download. In the preview dialog, the buttons for the previous and next file, or the left and right arrow keys, move through the folder.

The **document page** (`/dokumente/detail/<id>`) has <Ui>Back</Ui>, a line with version, date and author, a button with the assistant's name, <Ui>Share</Ui>, <Ui>Details</Ui> and <Ui>More actions</Ui>. Documents you can edit in the browser (Markdown, HTML, spreadsheets, apps) also get <Ui>Edit</Ui>, which becomes <Ui>Done</Ui> while you edit. <Ui>More actions</Ui> holds <Ui>Full screen</Ui> (key F), <Ui>Rename ...</Ui> (F2), <Ui>Edit in chat</Ui> (or <Ui>Use in chat</Ui> if you may only read), <Ui>Download</Ui>, <Ui>File in new tab</Ui>, <Ui>Copy link</Ui>, <Ui>Upload new version ...</Ui> (while you edit: <Ui>Keep version</Ui>), <Ui>Why can I see this?</Ui> and <Ui>Delete</Ui>. Rename, the version entries and Delete only appear if you may edit the document. Renaming changes the name only: the extension stands next to the field and cannot be edited, so a PDF stays a PDF. For an app document that is its double ending, such as `.liste.nxd`.

Drop a file onto the document page to upload it as a new version. nexxus asks <Ui>Upload as new version?</Ui>, and <Ui>Different file type?</Ui> if the extension differs.

<Screenshot src={shot_files_document_page} url="/dokumente/detail/1" alt={"The document page and its actions"} caption={"Drop a file onto the page to upload it as a new version."} />

## Versions

A document keeps every version. A new version is created when:

- you upload a new version, drop a file onto the document page, or choose <Ui>New version</Ui> while [uploading](#upload-files),
- you click <Ui>Done</Ui> after editing,
- you click <Ui>Keep version</Ui>,
- the AI Assistant changes the document in a conversation (the history links to that conversation),
- a draft has not changed for 10 minutes.

The history is under <Ui>Details</Ui>, section <Ui>History</Ui>. Click an older version to see it: a band shows <Ui>Version 3</Ui> with its date and offers <Ui>Restore this version</Ui> and <Ui>Back to current</Ui>. Restoring creates a new version with the old content, so nothing is lost (<Ui>Version 3 restored.</Ui>). Versions themselves never change. The table preview is only available for the current version.

## Find documents

- **Search**: the field <Ui>Search documents ...</Ui> searches the **names** of documents. Inside a folder it offers <Ui>Only here</Ui> and <Ui>Everywhere</Ui>. Type `#` and a number to find a document by its id. One search shows up to 200 hits; <Ui>200 of 340 results. Narrow the search or filters to see the rest.</Ui>
- **Filters**: one per attribute, each value with its number of hits, plus <Ui>Unclassified (12)</Ui> for documents without attributes.
- **Sorting**: <Ui>Recently modified</Ui> or <Ui>Name (A–Z)</Ui>.
- **Recently modified** at the top of the tree shows every document you may open from <Ui>My files</Ui>, <Ui>Shared with me</Ui> and <Ui>System</Ui>, latest change first. Each row names its folder, so you also find a file from a conversation with the AI Assistant without knowing which session created it. Search and filters work here too.
- **Saved views**: <Ui>By folder</Ui> and the views you save yourself, as in other lists. <Ui>By folder</Ui> resets search, filters and sorting and stays in the open folder; in the attribute view it is called <Ui>All documents</Ui>. Everything at once is <Ui>Recently modified</Ui>.
- **Ctrl+K** finds documents by name and description from any page.
- **By content**: "Which contract mentions a penalty?" is a question for the AI Assistant. See [Files and the AI Assistant](#files-and-the-ai-assistant).

## Attributes and AI suggestions

Attributes describe a document independent of its folder. Five always exist; their names and values come from the server in German:

| Attribute | Values |
|---|---|
| Typ (type) | Free values. To start with: Dokument, Präsentation, Tabelle, Bild, Vertrag, Rechnung, Bericht, Notiz, Vorlage, Quellcode |
| Projekt (project) | Free values |
| Status | Entwurf (draft), Final |
| Vertraulichkeit (confidentiality) | Öffentlich (public), Intern (internal), Vertraulich (confidential), Streng vertraulich (strictly confidential) |
| Tags | Free, several per document |

**AI suggestions.** After every upload, the AI suggests attributes in the background. It looks at the folder, the folder's default attributes, the description of each attribute and, for text files, the beginning of the content. A suggestion appears on the document as <Ui>AI suggestion, from content</Ui> (or from the file name or the folder), with <Ui>Apply</Ui> and <Ui>No</Ui>. <Ui>Accept AI suggestions</Ui> in the selection bar takes them for many files at once. <Ui>Get AI suggestions</Ui> in the details asks again. Values you set by hand are never overwritten.

**Tags** for many files: select them and choose <Ui>Edit tags ...</Ui>, then <Ui>Add tags</Ui> or <Ui>Remove tags</Ui>.

**Links**: under <Ui>Linked</Ui> you connect a document with a project, a partner or another document (<Ui>Search project, partner, document ...</Ui>). A link is not a copy.

### Your own attributes

Admins add attributes under <Ui>More actions</Ui>, <Ui>Manage dimensions ...</Ui>: <Ui>Dimensions are freely definable categories by which files can be grouped and filtered.</Ui> Each one has an icon (a Material icon name such as `science`), a <Ui>Label</Ui>, a key, optionally <Ui>Fixed values</Ui>, <Ui>multiple</Ui> for several values per document, a <Ui>Color</Ui>, and a description: <Ui>What is this dimension for? One sentence, which the AI reads too.</Ui> That description is what the AI uses for its suggestions, so write it for a reader. On attributes with fixed values, only admins add new values.

## Folders

<Screenshot src={shot_files_folder_menu} url="/dokumente?ordner=1" alt={"The menu of a folder"} caption={"Only the owner of a folder can delete it."} />

- **Create**: <Ui>New</Ui>, <Ui>Folder</Ui>, then a name. Inside a folder, its menu offers <Ui>New subfolder</Ui>. You need the editor role on the parent folder.
- **Rename and move**: <Ui>Rename</Ui>, <Ui>Move to...</Ui>, or drag the folder onto another folder in the list or the tree. After a move, a line with an undo button appears. If the move makes the content visible to more people, nexxus warns first: <Ui>Becomes visible to more people</Ui>, with how many, and <Ui>Move anyway?</Ui>
- **Delete**: only the owner of a folder can delete it. The folder and its content go to the trash: <Ui>"Contracts" including 14 documents will be moved to the trash and can be restored from there for a while.</Ui>
- **Default attributes**: <Ui>Default attributes...</Ui> in the folder menu. <Ui>Every file that goes into this folder or a subfolder gets these values. Values set on the file take precedence.</Ui> When you save, nexxus asks <Ui>Apply to existing files?</Ui> with <Ui>Apply to 14</Ui> or <Ui>Only for new files</Ui>. Values inherited from a parent folder are marked <Ui>from the parent folder</Ui>.

The rule behind folders: **whoever owns a folder owns everything in it**, including subfolders and documents others put there.

### A shared area for a business unit

Admins can create a top-level folder that all members of a business unit see: <Ui>New</Ui>, <Ui>Area for a business unit</Ui>. Enter a name (for example "Hamburg lab"), pick the business unit, and choose what <Ui>Members may</Ui> do: <Ui>Edit (file, change)</Ui> or <Ui>Read only</Ui>. <Ui>Create area</Ui> creates the folder and shares it in one step. This option exists only in the folder mode.

## Share with colleagues

Every document and folder has its own access list. Four roles:

| Role | May |
|---|---|
| <Ui>Owner</Ui> | Everything: read, edit, share, delete |
| <Ui>Editor</Ui> | Read, edit, upload into the folder |
| <Ui>Commenter</Ui> | Read and comment |
| <Ui>Viewer</Ui> | Read |

You can share with a <Ui>Person</Ui>, an <Ui>Access unit</Ui> (a business unit, including the members of its sub-units) or the whole tenant (<Ui>Entire tenant (all members)</Ui>). A share on a folder applies to everything inside it. If you reach a document on several paths, the strongest role counts.

<Steps>

1. Select a document or folder and click <Ui>Share</Ui>. The dialog <Ui>Manage access</Ui> opens. Only the owner can change access; everyone else sees <Ui>Who has access</Ui>, read-only.

2. Choose whom to add (person, access unit or tenant), pick the role and click <Ui>Invite</Ui>. For a person, tick <Ui>Notify the person about the share by email</Ui> if they should get a mail.

3. The dialog groups everyone who has access: <Ui>Ownership</Ui>, <Ui>Shared directly</Ui>, one group per business unit (<Ui>Via business unit “Kassel”</Ui>) and one for the tenant (<Ui>Tenant “Brandt & Söhne”</Ui>). Each group counts its people, and a line at the top says how many can see it in total (<Ui>In total, 13 people can see this document.</Ui>). <Ui>Show people</Ui> lists the members of a unit.

4. To remove someone, click revoke and confirm. Access that comes from a parent folder is marked <Ui>Applies here too. It can only be changed or revoked where it was granted.</Ui>

</Steps>

<Screenshot src={shot_files_share_dialog} url="/dokumente/detail/6" alt={"Managing access to a document, including a public link"} caption={"Only the owner changes access; everyone else sees it read-only."} />

To share many documents at once, select them and click <Ui>Share</Ui>: <Ui>Share multiple documents</Ui>. Existing shares of the documents are kept.

**Why can I see this?** on the document page explains every path by which you reach a document (owner of a folder, a share with your unit, a direct share) and who could change it.

**Being an admin does not open other people's documents.** Admins see what they own and what is shared with them, like everyone else.

### Ask for access

A link to a document you may not see opens <Ui>No access to this document</Ui>. Click <Ui>Request access</Ui>, choose what you would like to do (<Ui>Read</Ui>, <Ui>Comment</Ui>, <Ui>Edit</Ui>), add an optional message and click <Ui>Send request</Ui>. You see the document's name only after access is granted. The people who manage the document see a banner <Ui>1 open access request</Ui> and answer with <Ui>Grant</Ui> (choosing the role) or <Ui>Decline</Ui>. The answer reaches you in the bell. One person can send at most 20 requests per hour.

## Public links

A public link lets someone without an account view a single document. Only the owner can create one, and only for documents, not folders.

<Steps>

1. Open the share dialog of the document. The section <Ui>Public access</Ui> shows the current state: <Ui>Only people with access can open the link.</Ui>

2. Optional: choose <Ui>View</Ui> or <Ui>Edit</Ui> under <Ui>Can</Ui>, change <Ui>Valid until</Ui> and set a <Ui>Password</Ui>. The date starts 30 days ahead; the link works until the end of that day, and an empty field means no end. A link to edit needs a date.

3. Click <Ui>Create public link</Ui>, then <Ui>Copy link</Ui>.

</Steps>

The link row shows the role (viewer), the expiry date, whether downloads are allowed, how often it was opened and whether it is password-protected. <Ui>Revoke link</Ui> ends it at once.

Whoever opens the link sees the page <Ui>Shared document</Ui> with the name, the expiry date (<Ui>Valid until</Ui>), <Ui>Full screen</Ui> and <Ui>Download</Ui>. A password-protected link first asks for the password and opens with <Ui>Open</Ui>. With <Ui>Remember for this session</Ui> it does not ask again until the tab is closed. With a link to view, app documents are shown read-only. The page appears in the browser's language, German, English or Polish; someone who chose a language in their nexxus profile sees that one. What else can appear:

| Message | Meaning |
|---|---|
| <Ui>This link is password-protected</Ui> | Enter the password |
| <Ui>The password is incorrect.</Ui> | Try again |
| <Ui>This link has expired.</Ui> | The date under Valid until has passed |
| <Ui>This link does not exist (any more). It may have been revoked.</Ui> | Revoked, or mistyped |

<Screenshot src={shot_files_public_link} url="/share/&lt;token&gt;" alt={"What a recipient of a password-protected link sees first"} caption={"Public links show one document, never a folder."} />

### Links to edit

A link to edit works for Markdown, HTML, sheets and app documents. Whoever has it changes the document without signing in, live with everyone who has it open; in their editor the visitor appears as <Ui>Gast</Ui> (guest). Changes are saved in the name of the person who created the link, and only while that person may edit the document themselves.

An **HTML page** opens through the link as a page, as it does in nexxus. When it saves something (a choice, a vote, a filled-in form), everyone who has it open sees the change after two to three seconds, through the link as well as signed in. With a link to view it only shows what is saved. A link to edit has <Ui>Seite</Ui> (page) and <Ui>Quelltext</Ui> (source) in the bar at the top; <Ui>Quelltext</Ui> opens the HTML editor.

A page you build yourself needs no script of its own to save. The script `nexxus-state.js` with a name for the state and `data-nx-state` on each field are enough:

```html
<script src="/public/nexxus-state.js" data-key="fair"></script>

<select data-nx-state="booth">
  <option>open</option>
  <option>ordered</option>
  <option>set up</option>
</select>
<input type="checkbox" data-nx-state="power"> Power requested
```

When two people save at the same time, both changes are kept. Only when both change the same field does the later one win. The AI assistant builds such pages on request ("a page with dropdowns that are saved").

## Trash

Deleting moves documents and folders into the <Ui>Trash</Ui> at the bottom of the tree. It lists **your own** deleted items with the days left (<Ui>5 days left</Ui>) and <Ui>Restore</Ui>. A folder comes back with its content. After the grace period (7 days by default) nexxus removes the content for good; the entry then says <Ui>Content permanently deleted</Ui>.

Only the owner of a document, or an admin, can restore it.

## Files and the AI Assistant

The AI Assistant works with your files with your rights: it only reads, searches and changes documents you may read or change yourself.

<Screenshot src={shot_files_ava_document} url="/dokumente?ordner=3" alt={"The AI Assistant answers from the content of the contracts"} caption={"Content search needs embeddings switched on."} />

- **On the document page**, the button with the assistant's name opens the AI Assistant's column for this document (<Ui>Work on this document with AI Assistant</Ui>). It knows which document is open and its status, confidentiality, tags and folder, and reads its text. The conversation belongs to the document and is there again next time.
- **In a conversation**, <Ui>Use in chat</Ui> (or <Ui>Edit in chat</Ui> if you may edit) on one or more documents starts a chat with them attached. In any chat you can attach <Ui>One of your files</Ui>.
- **Changes by the AI Assistant** to a document become a new version, marked as coming from the chat, and you can restore the previous one.
- **Files the AI Assistant creates** (images, documents, tables) land in your <Ui>System</Ui> section, in "KI-Sessions", in a folder per conversation with the subfolder "Ergebnisse". <Ui>Recently modified</Ui> shows them together with all your other files, and asked "What did I work on last?", the AI Assistant reads the same list.
- **Questions about content**, such as "Which contracts have a three-month notice period?", run a search by meaning over the documents you may read. The AI Assistant gets matching excerpts with the document and the page and can point you to them.

:::caution[Search by content needs embeddings]
The AI Assistant's search by content compares meanings, so it needs the text of your documents turned into embeddings. That requires an embedding model ([Connect your AI](/setup/connect-ai/)) and the switch <Ui>Enable embeddings (vectorisation)</Ui> under System configuration, section <Ui>AI embeddings</Ui>. With embeddings off, the AI Assistant can still read a document you open or name, but it cannot search across all documents by content. See [Embeddings](/setup/embeddings/).
:::

## External sources such as Paperboi

Some connectors bring their own documents into the tree, read-only. Today that is **Paperboi**, an audit-proof document archive. When an admin has installed the Paperboi connector and switched on its option "In Dateien anzeigen" (show in Files), Paperboi appears in the tree below your sections.

- Each person sees what their own Paperboi API key, or the shared key of the organisation, may see.
- Everything is marked <Ui>Read only</Ui>: <Ui>From Paperboi, read-only here. Changes are made in Paperboi itself or through the assistant.</Ui>
- The top level shows Paperboi's folders and <Ui>Latest documents</Ui>. You can search (<Ui>Search Paperboi</Ui>) and load more with <Ui>Load more</Ui>.
- The preview shows Paperboi's details: <Ui>Summary</Ui>, <Ui>Document type</Ui>, <Ui>Document date</Ui>, <Ui>Retain until</Ui>, <Ui>Tags</Ui>, and the status <Ui>Inbox</Ui> or <Ui>Hidden</Ui>. <Ui>View archived version</Ui> opens the archived file.
- Without a connected key: <Ui>No account is connected for Paperboi yet.</Ui> with <Ui>Connect</Ui>.

nexxus stores nothing from Paperboi. Every folder and file is fetched from Paperboi when you open it. Setting up the connector is described in [Set up a connector](/plugins/set-up/).

## Other ways documents arrive

- **Mailboxes**: an admin can give a mailbox under <MenuPath to="Administration > Content & automation > Mailboxes" /> a folder for attachments. Attachments of incoming mail are then stored there as documents.
- **Skills** keep their files in your "Skill-Dateien" folder under <Ui>System</Ui>.

## Notifications

In <Ui>My profile</Ui>, tab <Ui>Notifications</Ui>, two sections concern Files:

- <Ui>Files: shares</Ui>: whether a share with you personally appears <Ui>In the bell</Ui>, and whether you get an <Ui>Email when something is shared</Ui>.
- <Ui>Files: access requests</Ui>: whether you get an <Ui>Email for a request to you</Ui>, and whether the answer to your own request appears in the bell or by email. A request to you always appears in the bell.

Shares with a business unit or the whole tenant are not announced, so nobody gets mail for every folder a large group can see.

## What happens behind the scenes

- **Storage**: the bytes of every version are stored in S3-compatible storage. The document records in the database point to them.
- **Reading the content**: after an upload or a new version, nexxus sends the file to a text extraction service (Docling, with OCR for scans), splits the text into sections and stores them. Plain text files (`.txt`, `.log`, `.json`, `.yaml`, `.xml`) nexxus reads itself; they never go to Docling. With embeddings on, each section also gets an embedding for the search by meaning. Drafts are indexed once they become a version.
- **Rights on every read**: the search by content checks the access of the asking person for each document before it returns anything. Without a signed-in person it returns nothing.
- **Folder rights inherit downwards**: a share or ownership on a folder applies to everything below it, and the strongest path wins.
- **Drafts become versions** after 10 minutes without changes.

## When something goes wrong

| Message | Cause and fix |
|---|---|
| <Ui>No write permission in this folder</Ui> | You are viewer or commenter here. Ask the owner for the editor role, or file into <Ui>My files</Ui>. |
| <Ui>This folder does not exist, or it has not been shared with you.</Ui> | The link points to a folder you cannot see. <Ui>Go to My files</Ui> takes you back. |
| <Ui>Zip enthält zu viele Dateien (max 200)</Ui> (too many files in the ZIP) | Split the archive. At most 200 entries and 200 MB unpacked per ZIP. |
| <Ui>Ordner sind in den Dateien ausgeschaltet; Dokumente werden über Merkmale geordnet.</Ui> (folders are switched off) | Your tenant uses the attribute mode. Use attributes instead of folders. |
| <Ui>In Systemordnern können keine Ordner angelegt werden.</Ui> (no folders in system folders) | Create the folder under <Ui>My files</Ui>. |
| <Ui>Becomes visible to more people</Ui> | Not an error. Check the list of people, then confirm with <Ui>Move anyway?</Ui> or cancel. |
| <Ui>Das Dokument wurde inzwischen von jemand anderem gespeichert.</Ui> (someone else saved in the meantime) | Two people saved over each other. Reload the document and apply your change again. |
| <Ui>Key and label are required</Ui> / <Ui>Key already exists</Ui> | When adding an attribute, fill in both and choose a key that is not taken. |
| <Ui>This file cannot be opened as a spreadsheet. It is damaged or not an XLSX file. Earlier states are in the history.</Ui> | Restore an earlier version from the history. |
| <Ui>This link has expired.</Ui> | Create a new public link, or extend Valid until. |

## For operators

| Setting | Default | What it does |
|---|---|---|
| `spring.servlet.multipart.max-file-size` / `max-request-size` | `1GB` / `1100MB` | Upload limits |
| `app.s3.endpoint`, `app.s3.publicEndpoint`, `app.s3.accessKey`, `app.s3.secretKey`, `app.s3.defaultBucketName` | local MinIO | File storage |
| `dms.s3Cleanup.graceDays` | 7 | Days in the trash before the content is removed |
| `dms.s3Cleanup.cron` | `0 30 3 * * *` | When the trash is emptied (03:30) |
| `dms.draftVersion.idleMinutes` | 10 | Minutes without changes before a draft becomes a version |
| `dms.suggestions.waitForContentSeconds` | 30 | How long the AI suggestions wait for the extracted text |
| `docling.api.url` | | Address of the text extraction service |
| `ai.embeddings.enabled` (env `AI_EMBEDDINGS_ENABLED`) | `true` | `false` locks embeddings for every tenant of the installation |

The background jobs `DmsS3Cleanup` (empties the trash) and `DmsDraftVersionCut` (turns idle drafts into versions) are created switched off. Switch them on under <MenuPath to="Administration > Operations > Maintenance > Cron Jobs" />, otherwise the trash keeps its content and drafts stay drafts until someone clicks <Ui>Done</Ui>.

## Next steps

<CardGrid>
  <LinkCard title="Apps" description="Small apps whose documents live in Files: boards, editors and your own." href="/apps/overview/" />
  <LinkCard title="Embeddings" description="Switch on the search by meaning for documents and knowledge." href="/setup/embeddings/" />
  <LinkCard title="Work with the AI Assistant" description="Conversations, attachments and what it may change." href="/use/assistant/" />
</CardGrid>