diff --git a/CHANGELOG.md b/CHANGELOG.md index 548738b..974b906 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.17] - 2026-07-27 + +### Added + +- Cowork replaces the former Notes tab with one direct editing plane for the + channel's existing `/workspace/notes`, `/whiteboards`, `/code`, `/docs`, and + `/presentations` trees. Its five stable work modes share nested-folder + navigation and add focused Markdown, document, code, single-file whiteboard, + and single-file presentation editors. +- Cowork's collapsible resident-agent panel keeps the active file visible, + starts an ordinary channel thread, adds the open `/workspace/...` path only + to the first message, and lets that same session continue in Chat. +- The top-bar Quick Note captures a titled or collision-safe untitled Markdown + note directly into `/workspace/notes` without leaving the active channel, + tab, thread, or scroll position. Collapsed drafts persist in the current + session; dictation, Escape-to-save, and Control/Command+Enter are supported. +- Dictation now has a subtle listening waveform and active resident work uses + a compact animated orb without obscuring content. + +### Changed + +- Files is now a familiar two-pane browser with a persistent folder rail, + breadcrumbs, bounded content grid, search, sorting, metadata, distinct + folder and file-type icons, non-color-only selection, and direct create, + upload, open, rename, move, duplicate, delete, and download actions. Cowork + assets open in the matching Cowork mode over the same underlying file. +- Markdown now renders consistently in global and channel Threads, Board, + session summaries, agent and status messages, Cowork chat, Memory, Texts, + and Activity, including spaced bold labels such as `** Goal **`. +- Photon conversations no longer repeat robotic phone-number source labels; + legacy entries use the concise human-facing title “Text with Skipper.” +- Mobile Settings uses a compact horizontal section rail, all layouts track + the real visual viewport and safe areas, and scrolling away from the message + composer releases focus so the on-screen keyboard can dismiss naturally. +- The redundant **Call Skipper** button is removed; `@Skipper` remains the + direct escalation path. + +### Fixed + +- Background messages, polling, synchronization, route repaints, and shell + updates no longer remount live Files or Cowork surfaces or reset the user's + focused input, selection/cursor, draft value, scroll position, expanded + details, active file, panel, or workspace mode. +- Folder and file rows no longer share an ambiguous document glyph, and mobile + panels and Terminal size against the visible screen instead of extending + beneath browser chrome, the keyboard, or operating-system safe areas. + ### Documentation - The public privacy policy now covers the iOS gateway, just-in-time media and @@ -444,7 +491,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 notarization, stapled tickets, Gatekeeper verification, persistent Application Support, and isolated Apple container machines. -[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.16...HEAD +[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.17...HEAD +[0.0.17]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.17 [0.0.16]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.16 [0.0.15]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.15 [0.0.14]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.14 diff --git a/README.md b/README.md index f6222a8..a8dd9a2 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,16 @@ and an audit trail. A prompt saying “use this service” is not a connector. supported platform (exact contracts in the table below). - Shared channel `/workspace` for the agent command surface and human Terminal, with automatic terminal heartbeat and silent same-session reconnection. +- A traditional two-pane Files browser over that same `/workspace`, with + breadcrumbs, nested folders, search, sorting, distinct file-type icons, and + familiar create, rename, move, duplicate, delete, upload, and download actions. +- Cowork as the direct visual editing plane for `/workspace/notes`, + `/workspace/whiteboards`, `/workspace/code`, `/workspace/docs`, and + `/workspace/presentations`, with one consistent file rail, purpose-built + editors, and an optional channel-agent panel that starts an ordinary thread + with the open file path. +- Quick Note in the top bar for capturing a Markdown note into + `/workspace/notes` without leaving or repositioning the current channel view. - Durable files, threads, curated memory, Mnemosyne long-term recall, corrections, follow-ups, and recurring workflows. - Direct resident → Skipper escalation and automatic Skipper → resident return. @@ -286,7 +296,7 @@ A fresh data directory opens first-run setup. The source runtime defaults to | `PORT` | `8123` | HTTP/WebSocket control-plane port. | | `CTRL_DATA_DIR` | `./data` | Databases, routing state, uploads, and narrow workspace mirrors. | | `HELM_CHANNEL_COMPUTER_BACKEND` | `apple` on macOS, `lxc` on Linux, `wsl` on Windows | Host isolation backend; `native` and `mock` are explicit development/test overrides. | -| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.16` | Versioned channel-machine image contract. | +| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.17` | Versioned channel-machine image contract. | ### Agent-first JSON CLI diff --git a/SPEC.md b/SPEC.md index e7a0787..8c1b9f0 100644 --- a/SPEC.md +++ b/SPEC.md @@ -345,14 +345,17 @@ Once ready, the channel visibly presents: - its current model/provider, as a replaceable implementation detail; - its files/artifacts; - its active/recent threads; and -- an obvious `@skipper` escalation path. +- an obvious `@skipper` mention path. ### 8.3 Channel layout Chat remains the shared work surface, but the channel is not reduced to a message feed. It provides views or panels for: - **Threads** — active and completed sessions; -- **Files** — the channel workspace and shared artifacts; +- **Files** — a familiar two-pane browser for the channel workspace and shared artifacts; +- **Cowork** — the direct visual editing plane for the same files under + `/workspace/notes`, `/workspace/whiteboards`, `/workspace/code`, + `/workspace/docs`, and `/workspace/presentations`; - **Terminal** — interactive shell sessions inside the channel environment; - **Memory/Knowledge** — channel-owned decisions, facts, summaries, and references; - **Activity** — tool actions, long-running work, Skipper interventions, and system lifecycle; and @@ -360,6 +363,14 @@ Chat remains the shared work surface, but the channel is not reduced to a messag These views are representations of the same channel world, not separate apps that force users to copy context between them. +The top-bar note action is a compact Quick Note overlay, not a separate Notes +dock. Saving writes a collision-safe Markdown file under `/workspace/notes` +without changing the active channel, view, thread, focus, or scroll position. +Cowork provides Notes, Whiteboard, Code, Docs, and Presentations work modes with +one shared folder rail and an optional channel-agent panel. The panel starts an +ordinary channel thread, appending only the currently open `/workspace/...` +path to its first human message; the same thread remains available in Chat. + ### 8.4 Agent interactions - Mention the resident agent to start or continue work in a thread. @@ -565,7 +576,7 @@ Use language that reinforces the native model: - **Workspace** — the agent's durable environment. - **Thread** or **session** — focused unit of work. - **Memory/Knowledge** — channel-owned continuity. -- **Call Skipper** — escalation to the workspace-level operator. +- **Mention Skipper** — direct escalation to the workspace-level operator. - **Captain** — final human owner. Suggested concise positioning: diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index bf4d3d7..1b60dad 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -55,6 +55,13 @@ messages remain conversational without repeated mentions. Mention Skipper for a boundary outside the resident computer; the resident can also call Skipper itself, and the runtime returns the unblocked thread automatically. +The top-bar **Quick Note** opens a compact editor above the current view. It +keeps an unsaved draft when collapsed, supports dictation, saves with +Control/Command+Enter, and writes directly to `/workspace/notes`. Give the note +an optional title or let 1Helm allocate the next +`untitled-quick-note-[#].md`; saving never changes the current tab, thread, or +scroll position. + Agent replies stream into one stable message. Draft text, focus, selection, scroll position, and open work logs remain stable while updates arrive. Use the Stop control to interrupt only the active turn; the next reply receives hidden @@ -90,14 +97,48 @@ the workspace-wide Threads entry provides a cross-channel view.  -## Files and Terminal +## Files, Cowork, and Terminal + +Files, Cowork, and Terminal are three views of the same channel computer. Agent +commands and the human Terminal both start in the channel's persistent +`/workspace`; there is no separate Cowork document store. -Files and Terminal are two views of the same channel computer. Agent commands -and the human Terminal both start in the channel's persistent `/workspace`. -Files created through either path appear in Files after reconciliation. +**Files** is a traditional two-pane browser. The left rail navigates the folder +tree while the main pane shows the selected folder in a bounded grid. Use the +breadcrumb, search, and sort controls for larger collections; folders and +file types have distinct icons and selected items have a visible outline as +well as color. From the details pane you can open, rename, move, duplicate, +delete, or download an item. The top bar creates files and folders or uploads +into the current directory. Protected top-level product folders cannot be +renamed or deleted.  +**Cowork** is the visual editor for files already in `/workspace`. Its Notes, +Whiteboard, Code, Docs, and Presentations modes map directly to: + +```text +/workspace/notes +/workspace/whiteboards +/workspace/code +/workspace/docs +/workspace/presentations +``` + +Each mode keeps the same folder rail and nested-folder navigation while the +center changes to the appropriate editor. Notes and Docs edit Markdown, Code +provides a focused text editor and declines unsupported binary types, +Whiteboard uses one readable `.whiteboard.json` file, and Presentations uses +one readable `.slides.json` file. Drafts and each mode's last open asset remain +available while switching modes. Opening one of these assets from Files routes +to the matching Cowork mode because both surfaces edit the same bytes. + +The resident avatar opens Cowork's collapsible agent panel without covering the +asset on desktop. Its first message starts a normal channel thread and adds the +current `/workspace/...` path; later messages continue that thread, and **Open +in Chat** moves the same session to the channel's regular conversation view. +The agent harness otherwise remains unchanged. + The terminal prompt displays the live current path and changes after `cd`. 1Helm sends a terminal heartbeat while the pane is open and automatically reconnects a dropped browser transport to the same live shell. Briefly @@ -136,7 +177,8 @@ log. ## Settings The gear opens a full-screen settings application. On desktop, use its vertical -sidebar; smaller layouts use a compact non-scrolling grid. +sidebar; smaller layouts use a compact horizontal section rail so settings do +not consume half of the visible screen. - **Admin** — workspace name, theme, image, and release/update information. - **Agents** — Skipper and resident identities, status, models, capabilities, diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 9155699..677235f 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -309,7 +309,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.0.16; + MARKETING_VERSION = 0.0.17; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.gitcommit90.onehelm.mobile; PRODUCT_NAME = 1Helm; @@ -333,7 +333,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.0.16; + MARKETING_VERSION = 0.0.17; PRODUCT_BUNDLE_IDENTIFIER = com.gitcommit90.onehelm.mobile; PRODUCT_NAME = 1Helm; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; diff --git a/package-lock.json b/package-lock.json index b58d8e1..149e85b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "1helm", - "version": "0.0.16", + "version": "0.0.17", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "1helm", - "version": "0.0.16", + "version": "0.0.17", "hasInstallScript": true, "license": "AGPL-3.0-only", "dependencies": { diff --git a/package.json b/package.json index 44e4e70..bc2d549 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "1helm", "productName": "1Helm", - "version": "0.0.16", + "version": "0.0.17", "private": true, "type": "module", "license": "AGPL-3.0-only", diff --git a/public/index.html b/public/index.html index 4373f30..8424680 100644 --- a/public/index.html +++ b/public/index.html @@ -29,11 +29,11 @@ document.querySelectorAll('meta[name="theme-color"]').forEach(function (m) { m.setAttribute("content", color); }); })(); - +
- +