Files and the editor
Browse, search, upload, preview and edit the files in a session's workspace, from any client.
A session is attached to a folder on one of your machines, and Happier gives you that folder directly — not a copy, and not a summary the agent wrote. You can read what the agent is working on, fix a typo yourself, drop a screenshot into the repository, or open the file it just mentioned, without leaving the session.
Browsing and previewing files is part of the normal session UI. The embedded editor is a toggle under Settings → Features → Embedded file editor, on by default. Some actions need the machine running the session to be reachable — though if the session is inactive and the machine is still online, Happier can still load file data through the machine-level workspace APIs.
Where it appears
Desktop layout: sidebar + details pane
The workspace UI is designed around two complementary surfaces:
- Right sidebar: quick navigation, tree/status browsing, branch summary, changed-files list, history list
- Details pane: deep work on the currently opened item
Typical flow:
- Open Files or Git in the right sidebar.
- Click an item to open it in the details pane.
- Keep that item as a temporary preview tab, or pin it so it stays open while you inspect other files.
Details tabs
The details pane supports multiple tabs for:
- file previews
- editable files
- review tabs
- historical commit diffs
- stash details
Important behaviors:
- Tabs keep their local state while you switch between them.
- Scroll position is preserved when you return to a tab.
- If you start editing a file, Happier keeps that editor state instead of reloading it on every tab switch.
- Pinned tabs stay open until you explicitly close them.
- On smaller layouts, the details surface can switch into an overlay/focused mode instead of permanently shrinking the main session area.
Focus / fullscreen mode
The details pane includes a focus mode so you can temporarily hide the left session area and give more room to the current review/editor context.
This is useful when:
- reviewing a large diff
- editing a file side-by-side with the Git sidebar
- working on a smaller laptop or browser window
On phone-sized layouts the same surfaces live in the mobile Cockpit, which gives Files and Git their own tabs.
Files
The Files tab is the in-session file manager for the current workspace.
What you can do
- Browse the repository tree.
- Search for files in the current workspace.
- Create files and folders.
- Upload files into the workspace.
- Choose an explicit upload destination when you do not want the project root.
- Rename and delete files or folders.
- Download a single file.
- Download a folder as a
.zip. - Download a single file as a
.zipwhen you want archive-style handoff symmetry with folder downloads. - Open a file in preview or edit mode.
- Filter the file tree down to modified files only.
- Watch transfer progress and cancel an upload or download that is still running.
Opening a file uses the same details surface whether you start from the file tree, a changed-file row, a review diff, a transcript file link, a review-comment jump, or a linked-file chip in the composer.
Video preview and Android downloads
In the current development build (unreleased), supported MP4, M4V, MOV, and WebM files open in the file view with playback controls, seeking, and fullscreen. Playback depends on the codecs available on your device. The video downloads before playback starts, using the normal file transfer limits; a video can be larger than the text preview limit without being treated as oversized text. Web playback also uses the browser's configured budget for buffering files. If loading or playback fails, use Retry or download the file to open it in another app.
On Android, the file view's download menu offers Save as…, Open with…, and Share…. Save as… opens the Android document picker so you can choose Downloads or another available location. Canceling the picker leaves no saved file. Open with… lets you choose an installed app, and Share… sends the file to another app. Downloads from the file tree use the same save picker. Opening or sharing a file uses a temporary cached copy; use Save as… when you want to keep a file in a location you can find later.
The transfer cancel control is available while the file downloads. Once the system opens a save picker, app chooser, or share sheet, use that dialog's controls instead.
Opened or shared copies stay in Happier's private app cache so the receiving app can finish reading them. Android may reclaim cache files when storage is low, and you can clear Happier's cache in Android's app settings. These copies have no guaranteed retention period, and Happier does not currently purge them automatically after an Open with… or Share… action.
If a save fails after you choose a destination, Happier tries to remove the incomplete document. If the document provider refuses deletion, the error identifies the remaining document so you can remove it yourself.
In the current development build (unreleased), Project view hides Git-ignored files and repository metadata while keeping tracked files, changed files, and files you reveal in the tree reachable. Dotfiles remain visible unless Git ignores them. Choose All files to include the hidden entries. When ignore information is unavailable, including with older Happier versions on the machine or outside Git repositories, the tree shows all files with an availability hint.
Tree rows and status badges
The file tree is repository-aware.
When source-control data is available, Happier can show:
- modified / added / removed badges
- line-count summaries (for example additions/removals)
- folder-level summaries aggregated from descendants
This gives you a lightweight “what changed here?” signal without leaving the Files tab.
Long paths are formatted so the filename stays readable. On web, deeply nested directories use start-side ellipsis behavior, so the left side of a long path is shortened before the filename gets squeezed.
In the current development build (unreleased), the web file tree supports keyboard navigation: Up/Down move between visible rows, Home/End jump to the first/last row, Right expands a folder or enters it, and Left collapses it or moves to its parent. Enter opens a file preview; P pins the focused file.
Search and modified-only filtering
Use the Files search field when you already know roughly what you want.
In the current development build (unreleased), exact filenames and paths rank ahead of broader matches. Searching without an extension favors that file's name before variants such as test files. While you refine a search, the previous results stay visible and are identified as previous results until the new results arrive.
Use the modified-only filter when you want the tree to behave more like a focused “changed files” explorer.
Typical use cases:
- narrow a large repo to the files touched by the current task
- find a config file by name, then jump straight into the editor
- browse only modified files while still keeping folder context
Create files and folders
The Files toolbar includes actions to create:
- a new file
- a new folder
These actions are meant for lightweight workspace edits without leaving the session.
Uploads
Happier supports several upload flows:
- Upload files from the Files toolbar
- Upload folder on web
- Drag and drop files or folders on web
- Drop onto a directory to upload directly into that directory
- Preserve relative folder structure when you upload a folder or nested tree
Platform notes:
- Web: supports drag/drop, multi-file upload, and folder upload
- iOS / Android: supports file picking; folder upload is web-only
If your goal is to send a file with your next message instead of placing it into the workspace, use the session Attachments flow instead.
See: Attachments & image previews
Upload destination selection
The toolbar upload menu includes an upload destination selector.
- If you leave it empty, Happier uploads into the project root.
- If you set a workspace-relative path, Happier uploads into that destination and creates missing parent directories as needed.
- Drag/drop over a specific folder row overrides the root/default destination and uploads into that folder.
Typical use cases:
- send generated assets into
docs/assets - upload logs into
.project/logs/... - drop a folder directly into
src/components
Upload conflict handling
When uploaded files already exist at the destination, Happier asks how to resolve the conflict batch:
- Skip
- Replace
- Keep both
Keep both is the default. Happier automatically creates a suffixed name such as file (1).txt.
Transfer progress and cancel
Uploads and downloads run as managed transfers instead of fire-and-forget actions.
- Happier shows transfer progress while the upload or download is still active.
- You can cancel a transfer before it finishes.
- Folder
.zipdownloads are built first, then streamed back in chunks. - Direct file preview, file download, folder download, and review/diff loading all use the same transfer/decryption path for session workspace data.
Platform notes:
- Web: downloads use the browser download flow.
- iOS: downloads are written to a temporary local file and then passed to the system share flow.
- Android: in the current development build (unreleased), downloads from the file tree open Save as…. The file view also offers Open with… and Share… using a temporary cached copy.
Rename, delete, and download
Each tree row exposes an actions menu.
For files, available actions include:
- Rename
- Delete
- Download
- Download as
.zip - Copy path
For directories, available actions include:
- Rename
- Delete
- Download as
.zip - Copy path
Directory deletion is confirmed explicitly and applies recursively.
File preview and editing
Opening a file from the Files tab or from Review opens it in the details pane.
Depending on the file type, Happier can show:
- a text preview
- a live editor
- an image preview
- a binary-file placeholder when inline rendering is not appropriate
Image and binary handling
Happier now treats image previews as a first-class workflow:
- common raster images can be previewed inline
- SVG files can also be previewed instead of being treated as opaque binaries
- true binary files stay safe and do not try to render through the text diff pipeline
If a file has no textual diff (for example an image or binary blob), Happier avoids crashing the diff renderer and falls back to the correct preview/placeholder path instead.
Editing behavior
The editor is meant to feel like a real editor, not a disposable preview:
- switching tabs does not discard in-progress edits
- opening another file does not replace a pinned editor tab
- reopening the same tab restores the state you left it in
This matters when you:
- compare two files while editing one of them
- jump between Review and an editor tab
- switch sessions and come back later
File details action bar
File details use one shared action bar for preview, diff, edit, commit selection, and revert actions.
Depending on the file and repository state, it can include:
- a file/diff view dropdown
- a pending/included/combined diff dropdown
- an edit action
- Select for commit or Remove from selection
- selected-line actions when line-level selection is supported
- a revert action when the file can be reverted safely
On wide layouts, the path and actions share one horizontal row. On narrow layouts, Happier wraps the actions into a compact second row so the path, filename, and important actions stay readable.
In the current development build (unreleased), Select entire file for commit selects the whole file immediately. When using Git staging, the corresponding action is Stage file. Use the separate Select lines action for a partial selection, then apply the selected-line action. Cancel lets you leave line selection even before choosing a line. Reveal in Files locates the open file in the tree; Open Changes returns to source control.
Link project files from the session composer
The session composer includes a Link file chip.
Use it when you want to attach workspace context to your next message without manually typing paths.
What it does
- Opens a popover anchored to the composer
- Reuses the same repository/file browsing model as the file sidebar
- Lets you search and pick project files directly from the current workspace
This is useful for prompts like:
- “Explain why this file changed”
- “Refactor the files I linked”
- “Compare these two files”
You can also use @-style file search in the composer where supported. The goal is the same: quickly attach relevant workspace context.
Open workspace file links from the transcript
When an assistant response includes a markdown link to a file in the current workspace, Happier can turn that link into in-app file navigation instead of sending you to a broken browser URL.
Supported link shapes include:
- workspace-relative links such as
src/index.ts - links with line and column suffixes such as
src/index.ts:12orsrc/index.ts:12:4 - absolute local paths inside the workspace
file://URLs inside the workspace- loopback-expanded links from the web app, such as
http://localhost:18829/Users/alice/project/src/index.ts:12 - Windows drive paths such as
C:\Users\Alice\project\src\index.ts - Windows
file:///C:/...links and UNC-style file URLs inside the workspace
Happier only opens links that resolve inside the current workspace. Links outside the workspace, traversal paths, and arbitrary non-loopback http/https URLs stay external or are ignored for workspace navigation.
On desktop, opening a workspace file link opens the right sidebar/details pane. On phone-sized layouts, it opens the file in the Tabs surface with the session header still visible.
Limits and safety
- Missing parent directories are created automatically where the operation supports it.
- File preview is size-bounded, and folder zip and download flows are size-limited and checked by the daemon.
- Folder upload is web-only.
Related
- Diffs and review — reading what changed.
- Git — staging, committing and branches.
- Markdown and diagrams — the rich editor for Markdown files.
- Attachments and image previews