← All projects

Nori

I built clipboard-history apps for macOS and Windows. Text, images and files retain their own previews and actions, while hints in the interface show how modifier keys and permissions affect each action.

  • Swift
  • SwiftUI
  • AppKit
  • SwiftData
  • C#
  • .NET
  • WPF
Code available

The project

The app presents text, links, code, colors, images and files as cards suited to each type. A keyboard-driven flow opens the history, searches it and pastes into the app that was just in use.

The macOS version uses SwiftUI, AppKit and SwiftData; the Windows version is a separate C# and WPF implementation. They share the design of classification, privacy and search rules as well as the interface.

How it works

Follow the processWatch the diagram or scroll to follow each step.Motion is off. You can still choose each step.

Identify the copied content

The app receives copied content, identifies types such as text or images, and checks for do-not-store markers and signs of secret content.

Choose where it can stay

Ordinary copies go into local history; detected secrets are masked and kept only in memory, while do-not-store items are excluded.

Choose a card and use it

Type-specific cards let you review an item, then paste it into the previously active app or copy it.

Clipboard data is captured as a snapshot before storage, then classified by a pure function that applies privacy rules. Do-not-store markers take priority, and content detected as secret is masked and kept only in memory.

Key handling and on-screen hints use the same decision function. On macOS, the panel leaves the source app active; on Windows, the app remembers the original window and restores focus before pasting.

What the records show

The classification tests cover ordering and multi-file copies. Hints and actions come from the same rules, keeping modifier-key and permission differences visible in the interface.

Demo data and screenshot tooling support GUI checks without touching real history. The Windows version can also capture its display states in CI.

macOS change-check interval
200 ms
Retention of detected secrets
10 min in memory

What this covers

On macOS, ordinary history is stored locally without encryption. Automatic pasting requires Accessibility permission; without it, the action becomes Copy.