All documentation
Canvas and boards/01

Importing media and folders

Free

Bring files, folders, and large libraries onto the canvas.

Importing is the board-ingest path: FenSight recursively enumerates dropped or selected folders, filters known media/project files, groups image sequences, places the new items, then backfills thumbnails and metadata without blocking the canvas. The direct import paths are Free. Watched folders are a Pro automation path that can feed the same ingest machinery after a watcher scan.

Screenshot coming soon

FenSight import progress while files and folders are being added to the board

Screenshot placeholder. Expected production asset: /docs/screenshots/importing-media-and-folders.png.

Import access paths

Menu

File -> Import Folder...

Ctrl+Shift+I. Opens a FolderBrowserDialog, remembers LastImportFolder, recursively imports the folder and subfolders, then arranges and fits the imported items.

Drag/drop

Explorer -> drag files or folders onto the canvas

Drops use the canvas point as the layout center and copy effect. Internal FenSight drags are ignored by the import handler.

Keyboard

Ctrl+V

If FenSight's internal clipboard is empty, materializes OS clipboard files, images, virtual files, or URLs and imports the resulting files.

Menu

View -> Folders -> right-click folder node -> Add folder to board

The left folder tree supports single, Ctrl, and Shift multi-select. The context command recursively imports the selected folder path(s).

Drag/drop

View -> Folders -> drag a folder node onto the canvas

Folder-tree drag creates a FileDrop payload, so dropping it on the canvas follows the normal recursive folder import path.

Menu

Tools -> Browse folder... -> select cells -> right-click -> Add N to board

Browse folder opens a non-import overlay for one folder. Add N to board imports the selected visible file paths.

Menu

Tools -> Watched folders... -> Add to current board

Pro. Scans a watched folder config and imports eligible added files into the active board.

Menu

Tools -> Refresh watched folders

Pro. Refreshes watchers linked to the current board; Auto-add new files can import immediately, otherwise FenSight prompts Add to board / Open manager / Not now.

Menu

Help -> Tutorial -> Get Started

The tutorial's Get Started button opens a folder picker labeled Select a folder to import into FenSight and then calls the same folder import path.

Import entry points

These are the verified ways files become board items. Rows marked Pro are automation around importing; the underlying manual import is Free.

Path or commandWhat it importsTechnical behavior
Import Folder...Free
Imports a selected folder and its subfolders directly onto the board.Uses ImportFolderMenuItem_Click -> ImportDroppedPathsAsync(new[] { folder }). The chosen path is saved to LastImportFolder and the placement mode is ArrangeAndFit.
Canvas FileDropFree
Imports files, folders, or mixed Explorer drops at the drop location.Viewport_DragEnter uses ExternalDataMaterializer.CanMaterializeQuick to avoid expensive shell queries; Viewport_Drop calls full CanMaterialize once, converts the screen drop to a canvas point, and uses ArrangeAtDropPoint.
Virtual-file dropFree
Imports virtual files from sources such as Outlook, browser drags, and shell data objects.ExternalDataMaterializer reads FileGroupDescriptorW/FileContents once on Drop, writes the materialized files under FenSight Imports/<date>, then calls TryPipelineIngestAsync.
URL / HTML dragFree
Downloads the first HTTP/HTTPS image-like URL from a drag payload and imports the downloaded file.ExternalDataMaterializer checks URL, text, and HTML formats. For browser image drags it prefers an <img src> URL over the low-resolution drag-ghost bitmap.
Bitmap / PNG clipboard or dropFree
Turns screenshots and bitmap clipboard payloads into imported PNG files.Ctrl+V fast-paths Clipboard.GetImage for bitmap-only payloads. General materialization accepts PNG bytes, CF_BITMAP, and CF_DIB, saves Clipboard_yyyyMMdd_HHmmss.png, then imports it.
Add folder to boardFree
Imports one or more selected folders from the left Folders dock.Folder tree Ctrl/Shift selection builds a folder path set. The context menu calls GridAddToBoardRequested(paths), which forwards distinct paths to ImportDroppedPathsAsync.
Add N to boardFree
Imports selected cells from Folder Browse into the board.FolderBrowseView forwards AddToBoardRequested from FolderGridView. The grid action imports selected file paths only; it does not recursively import unselected subfolders.
Add to current boardPro
Imports the selected watched-folder configuration into the active board.WatchedFoldersWindow calls ImportWatchedFolderToCurrentBoardAsync, scans the watcher, filters eligible paths, imports them, and arranges new items with the current layout or inbox placement.
Add to boardPro
Accepts pending watched-folder adds after a refresh detects new files.When Auto-add new files is off, FenSight remembers pending paths and prompts with Add to board / Open manager / Not now. Accepting queues ImportWatchedAddPathsToBoardAsync.
--ingest-all-filetypesFree
Automation flag that temporarily enables generic file ingest for command-line auto-imports.App.ParseCliArgs sets AutoIngestAllFileTypes. MainWindow temporarily sets IngestAllFileTypes true while importing AutoImportPaths, then restores the prior setting.

Import settings and toggles

Exact labelDefault / user effectStored setting or implementation
Accept all file types on drop (uses Shell thumbnail / file icon)Free
Off by default. When on, non-hidden files outside FenSight's normal image/video/board/asset-reference set can be added as generic items.Persists IngestAllFileTypes. Generic fallback uses Windows Shell thumbnail/icon lookup and creates a DocumentItem scaled to a 2048-canvas longest side. Existing board items are not removed when toggled off.
Visualize audio files (waveform display)Free
Off by default. When on and Accept all file types is also on, audio files import as waveform AudioItem objects instead of generic icons.Persists VisualizeAudioFiles. Supported audio extensions are .mp3, .wav, .flac, .aac, .m4a, .ogg, .opus, .wma, .aiff, and .aif; waveform generation runs asynchronously through a throttle.
Sequence split gap (sec)Free
Defaults to 1.0. Splits numbered image runs when adjacent frame timestamps are farther apart than the configured gap.Persists SequenceSplitGapSeconds and is clamped to 0.1-120.0 before sequence detection. This is in Settings -> Performance, not the import section.
Max parallel decodesFree
Defaults to the logical processor count, minimum 2. Limits how many image decodes can run concurrently.Persists MaxParallelDecodes. The active ingest pipeline now sizes foreground decode concurrency through the shared decode arbiter and uses this setting as part of the broader decode policy.
Ingest performanceFree
Choices are Balanced, Maximum, and Quiet. Balanced is the default.Persists IngestPerformanceMode. AppSettings.ResolveIngestWorkers maps Balanced to about 60% of cores, Maximum to all cores up to 64, and Quiet to about 25% with BelowNormal priority for callers that still use that resolver.
Defer thumbnail loading on large boardsFree
On by default. Reduces the amount of thumbnail work that competes with layout on large imports.Persists DeferThumbsOnLargeBoards. The tooltip notes video thumbnails are handled by the post-ingest backfill pass regardless of this setting.
Aggressive video thumbnail backfillFree
On by default. Tries to generate video thumbnails after ingest even when Explorer has not cached them.Persists EagerVideoThumbnailBackfill. When off, cached Windows thumbnails are used first and uncached videos may remain placeholders until later regeneration.
Enable ingest watchdogFree
On by default. Switches toward safe ingest behavior when import rate stalls.Persists IngestWatchdogEnabled. If elapsed import time exceeds 10 seconds and the rate is below 0.5 item/s, ingest caps decode size, queues memory cleanup, and writes diagnostic context.
Write ingest diagnosticsFree
On by default. Writes progress/rate and recent-file diagnostics for import stalls.Persists IngestDiagnostics. The adjacent Open log button opens the ingest diagnostic log in the default viewer.

Supported import groups

This page lists the exact extension groups because they decide whether a path enters the import plan, the document prompt, or the generic shell-thumbnail fallback.

GroupExtensionsImport behavior
PipelineSupportedImagesFree
.png, .jpg, .jpeg, .bmp, .gif, .tif, .tiff, .tga, .jp2, .jpf, .jpx, .j2k, .webp, .jxl, .avif, .heif, .heic, .dcm, .dicom, .dds, .ktx, .ktx2, .exr, .hdr, .raw, .dng, .nef, .cr2, .cr3, .crw, .arw, .sr2, .raf, .rw2, .orf, .pef, .k25, .kdc, .dcr, .mrw, .nrw, .srw, .srf, .erf, .iiq, .3fr, .mef, .mos, .rwl, .ai, .psd, .psb, .c4d, .pdfCreates ImageItem objects, except .c4d and .pdf are routed through shell/specialized preview handling even though they are in the image-supported set. RAW/HDR/EXR/DDS/KTX and several Adobe/project formats skip some header probes and rely on later preview/backfill paths.
PipelineSupportedVideosFree
.mp4, .mov, .avi, .mkv, .wmv, .webm, .m4v, .mpg, .mpeg, .mpe, .m2v, .m2ts, .mts, .ts, .3gp, .3g2, .flv, .f4v, .asf, .ogv, .rm, .rmvb, .vob, .divx, .xvid, .mxf, .m2p, .m1v, .dv, .mod, .tod, .tp, .trpCreates VideoItem objects. Phase 1 uses cached thumbnail/metadata where available; Phase 4 runs video thumbnail backfill with WPF MediaPlayer/VLC fallbacks according to settings.
PipelineSupportedAssetRefsFree
.sbsar, .sbs, .spp, .spprj, .json, .fbx, .ma, .mb, .obj, .abc, .usd, .usda, .usdc, .usdz, .gltf, .glb, .blend, .flaCreates lightweight asset-reference DocumentItem-style placeholders for Substance, DCC, USD, GLTF, Blender, Flash, and JSON production references.
PipelineSupportedDocumentsFree
.ppt, .pptx, .doc, .docx, .xls, .xlsx, .rtf, .eps, .indd, .idmlThe current primary ingest pipeline imports these as document paths directly. A retained fallback Ingest Documents dialog exists in code, but normal supported-document imports reach TryPipelineIngestAsync first.
PipelineSupportedBoardsFree
.fnsCreates a board-preview item rather than loading the board into the current session. Loading a board uses File -> Load instead.
PipelineSupportedAudioFree
.mp3, .wav, .flac, .aac, .m4a, .ogg, .opus, .wma, .aiff, .aifAudio files require Accept all file types for folder import. With Visualize audio files on they become AudioItem waveform visualizers; otherwise they use the generic shell thumbnail/icon path.

Fallback Ingest Documents dialog

The current primary pipeline imports PipelineSupportedDocuments directly, so this dialog is a retained fallback surface rather than the normal document-import path. It is still listed here because the controls and persisted settings exist in app code. If shown, every checkbox starts unchecked unless a previous OK persisted that document-family setting.

Exact checkboxSelected extensionsPersistence / caveat
PowerPoint (.ppt, .pptx)Free
Allows .ppt and .pptx document candidates if the fallback dialog is shown.Persists IngestDocsPpt. Imported PowerPoint files can later be split into slide images from item context actions.
Word (.doc, .docx)Free
Allows .doc and .docx document candidates if the fallback dialog is shown.Persists IngestDocsDoc and creates DocumentItem entries with specialized preview thumbnails where available.
Excel (.xls, .xlsx)Free
Allows .xls and .xlsx document candidates if the fallback dialog is shown.Persists IngestDocsXls and imports through the document preview path.
InDesign (.indd)Free
Allows .indd document candidates if the fallback dialog is shown.Persists IngestDocsIndd. .idml is in PipelineSupportedDocuments, but the current dialog label only names .indd.
EPS (.eps)Free
Allows .eps document candidates if the fallback dialog is shown.Persists IngestDocsEps and imports through the document preview path.
SVG (.svg)Free
The checkbox exists in the dialog, but current candidate discovery does not include .svg in PipelineSupportedDocuments.Persists IngestDocsSvg if selectable. In the current code path, .svg is present in the legacy _supportedExtensions list but not in PipelineSupportedImages or PipelineSupportedDocuments, so it is not an active standard import format unless generic Accept all file types handles it.

Fallback large folder prompt

The retained fallback import path shows this dialog when the plan contains 2,000 or more items after filtering and sequence detection. The current lightweight pipeline does not show this sampling dialog before importing supported media/document paths.

Exact optionUser-facing behaviorSampling behavior
Import all itemsFree
Imports every candidate item.SampleMode.All leaves remainingCandidates and detected sequences unchanged.
Sample first NFree
Imports the first N candidate items.Default N is 500 and is clamped between 1 and the total count. Sequence representative paths are included so a chosen sequence imports as one sequence item.
Largest by file size (N)Free
Imports the N largest candidate files.Sorts representative paths by FileInfo.Length descending; if file stats fail, falls back to first N.
Newest by date (N)Free
Imports the N newest candidate files.Sorts representative paths by FileInfo.LastWriteTimeUtc descending; if file stats fail, falls back to first N.
Random subset (N)Free
Imports a random N-item subset.Orders representative paths by Random.Next and keeps the first N selected paths.

Folder Browse controls

Folder Browse is a temporary overlay, not an import by itself. It previews one folder's immediate files, then selected cells can be added to the board.

Exact labelUser-facing behaviorTechnical behavior
‹ BoardFree
Returns from Folder Browse to the board.BackRequested hides FolderBrowseHost, restores board visibility, and clears external grid selection from docks.
SortFree
Chooses Name, Date, Size, or Type sorting.SortCombo maps to FolderGridView.GridSortKey.Name, Date, Size, or Type. Name is selected by default.
Toggle ascending/descendingFree
Switches sort direction.SortDirButton toggles SortDescending and swaps the arrow content between up and down.
LabelsFree
Shows or hides filename labels under grid cells.Checked by default. Toggling updates FolderGridView.ShowLabels.
Thumbnail sizeFree
Changes the Folder Browse cell size from 80 to 260.SizeSlider defaults to 140 and writes FolderGridView.CellSize.
Open / Show on boardFree
Opens a file or jumps to the owning board item when the grid cell represents one.Double-click and the context menu use OpenRequested. Board-backed cells focus and fit the existing board item; off-board files open through ShellExecute.
Organize N items...Free
Feeds selected grid cells into the Organize dock without importing everything.The grid selection becomes an external selection for Organize/Tags/Path previews. Applying organize actions can still change source files.
Add N to boardFree
Imports selected grid files into the board.Calls ImportDroppedPathsAsync with the selected paths. Folder Browse cells are built only for immediate supported images/videos in that folder.
Copy path / Copy pathsFree
Copies selected source paths.Writes newline-separated paths to the Windows clipboard.
Open in ExplorerFree
Opens Explorer at the selected file or folder.Uses explorer.exe /select for files and opens directories directly.

Watched-folder import controls

Watched folders are Pro. They are included here because they are a real path for adding folders' files to the board, but the full watcher configuration belongs to the Watched folders page.

Exact labelUser-facing behaviorTechnical behavior
Watched folders...Pro
Opens the Watched Folders manager.Blocked by LicensingService.CanUseWatchedFolders when Pro/paid access is inactive.
Refresh watched foldersPro
Scans watcher diffs linked to the current board.RefreshAsync produces added/removed/changed/renamed diffs. Eligible added paths must be images, videos, asset refs, .fns boards, or PipelineSupportedDocuments.
AddPro
Creates a watched folder configuration.The manager also accepts dropped folders. Adding a watcher ensures the root is covered by IndexRoots when indexing is enabled.
Folder: BrowsePro
Chooses the watched folder root.WatchedFolderEditDialog uses Select folder to watch and writes Scope.RootPath.
Board file: BrowsePro
Optionally links the watcher to a .fns/.json board.Filter is FenSight Boards (*.fns;*.json)|*.fns;*.json|All Files (*.*)|*.*; empty BoardPath means apply when a board is open.
DepthPro
Choices are This folder only and Include subfolders.Writes Scope.MaxDepth as 0 for This folder only or null for Include subfolders.
Split by first-level subfoldersPro
Marks the watcher to split scope by first-level folders.Persists Scope.SplitByFirstLevel for watcher processing.
Max file size (MB)Pro
Skips files above a size cap when filled in.Writes Filters.MaxFileSizeBytes as MB * 1024 * 1024; blank means no cap.
Exclude patternsPro
Skips comma-separated path patterns such as *.tmp, *.bak, or *.iso.Splits the text into Filters.ExcludePatterns after trimming empty entries.
Auto-add new filesPro
Automatically imports eligible new watcher files.When off, eligible adds are stored as pending and the board prompt offers Add to board, Open manager, or Not now.
Auto-remove missing (confirm)Pro
Offers to remove missing watched files from the board.AutoRemove updates removed/renamed items. RequireRemoveConfirmation is forced true in the edit dialog build path.
Place new items in inbox areaPro
Places watcher-added files in an inbox zone instead of immediately using normal import fit placement.ImportWatchedAddPathsToBoardAsync uses IngestPlacementMode.Skip, then ArrangeNewItemsWithCurrentLayoutAsync receives placeInInbox.
Background monitorPro
Keeps watcher FileSystemWatcher subscriptions active.StartWatchedFoldersMonitor only subscribes active configs whose Behavior.BackgroundMonitor is true.
Write marker file (.fensight/manifest.json)Pro
Stores marker intent for the watched folder.Persists Behavior.WriteMarker from the edit dialog. The import path itself filters out FenSight internal/generated files.
Follow symlinks/reparse pointsPro
Controls whether watcher scope should follow reparse points.Persists Scope.FollowSymlinks. Hidden/system files are still skipped by the watcher filter.

Preflight utilities

These File menu commands prepare caches for future imports. They do not add board items by themselves.

Exact commandUser-facing behaviorTechnical behavior
Pre-index folder...Free
Scans a folder once to cache signatures for faster ingest.Recursively enumerates supported images, videos, boards, documents, and asset references, computes BuildIngestSignature, and writes entries to the ingest journal.
Pre-render previews...Free
Generates preview images ahead of a later import.Recursively scans preview-supported image extensions, decodes up to PreviewCache.VariantLarge with a 2-second timeout, and saves both large and small pre-rendered previews.

Pipeline phases and placement

Both direct folder import and canvas drops try the lightweight ingest pipeline first unless Accept all file types is enabled. The pipeline enumerates files off the UI thread, filters hidden/system/junk/generated-cache paths, detects image sequences, scans headers with bounded workers, decodes previews through the shared foreground decode arbiter, lays out the new items, then runs thumbnail and video backfill phases.

  • ArrangeAndFit is used when no drop point exists, such as File -> Import Folder... and Folder Browse Add N to board.
  • ArrangeAtDropPoint is used for canvas drops so newly imported items cluster around the drop position without immediately fitting the whole board.
  • Watched folder adds use IngestPlacementMode.Skip during ingest, then arrange only the newly added items through the watched-folder inbox/current-layout path.
  • Large/heavy imports keep new items in a layout buffer until positions are assigned so thousands of unpositioned items do not pile up at (0,0) and defeat viewport culling.
  • Duplicate prevention uses a signature made from full path, file length, creation time, and last-write time. Network paths are skipped only when the same source path is already on the board.

Image sequence detection

Numbered image frames are collapsed into ImageSequenceItem objects before layout so frame runs do not flood the board as individual files.

  • A candidate frame name must end with at least three digits, and files are grouped by directory, prefix, extension, and digit padding.
  • Runs must contain at least three consecutive indices.
  • FenSight checks file-size consistency and samples up to five frames for dimension consistency; runs with more than roughly 35% file-size variation are rejected.
  • Sequence split gap (sec) can split a long consecutive run into separate sequences when timestamp gaps exceed the threshold.

Direct import, drag/drop, clipboard materialization, Folder Browse add-to-board, generic shell-thumbnail import, and import preflight utilities are Free. Watched folders and their automatic/pending import flow require Pro.

Folder Browse is intentionally non-destructive and non-importing until you choose Add N to board. Organize actions launched from Folder Browse can still change real files if you apply them.

Connected guides

Follow these related pages when the workflow crosses into setup, search, organization, export, security, or another board-level system.