Skip to content

Finder: icon view and multi-select - #5

Merged
BunsDev merged 1 commit into
mainfrom
finder-icons-select
Sep 26, 2026
Merged

BunsDev merged 1 commit into
mainfrom
finder-icons-select

Conversation

@BunsDev

@BunsDev BunsDev commented Sep 26, 2026

Copy link
Copy Markdown
Member

What & why

Val asked for Finder's icon view and multi-select next (spec §6.3, §6.5).

  • Icon view — 80px grid; toolbar toggle + View menu; choice persists per folder and across reloads.
  • Selection — click, Shift-click range, ⌘/Ctrl-click toggle, ⌘/Ctrl+A, arrow keys (Shift+arrow extends), and marquee drag on the icon grid.
  • Multi-item ops — Open (each file), Duplicate, Move to Trash, and drag all act on the whole selection; status bar shows "N items, M selected".
  • Selection is painted in place rather than re-rendered, so double-click keeps working (the lesson from the desktop icons).

Spec rows covered

FND-09 (icon view), FND-09b (per-folder persistence + reload), FND-10 (click/Shift/⌘), FND-11 (⌘A + multi-trash), FND-12 (marquee), FND-13 (arrows), FND-14 (multi-drag), FND-15 (multi-open).
Shell e2e 39 tests, 117/117 over three repeats · kernel 43/43 · typecheck clean.

Clean-room attestation

  • By opening this pull request I certify, in the sense of the Developer Certificate of Origin, that I have the right to submit this work under the project licence. I have not read, cloned, decompiled, or inspected the source code, deployed DOM/CSS, or asset files of ryOS or Puter, and this contribution was written from the Cauldron specification and general knowledge only. If an AI tool assisted, it was operated under the same constraint and its session had no access to those repositories.

🤖 Generated with Claude Code

Spec §6.3 icon view and §6.5 selection.

- Icon view: 80px grid, toolbar toggle (aria-pressed) and View menu;
  the choice persists per folder and across reloads (views in the
  Finder's persisted state). Familiar-written files show in the
  familiar's colour.
- Selection is now a set with a range anchor: click selects,
  Shift-click extends a range, Cmd/Ctrl-click toggles, Cmd/Ctrl+A
  selects all, arrows move (Shift+arrow extends), and a marquee drag on
  the icon grid background selects what it touches. Selection is
  painted in place, never by re-rendering (re-rendering eats
  double-clicks, as the desktop icons showed).
- Multi-item operations: Open opens each file, Duplicate and Move to
  Trash take the whole selection, and dragging a selected item carries
  every selected item. The status bar shows "N items, M selected".

Tests: shell e2e 39 (117/117 over 3 repeats; new FND-09..FND-15);
kernel 43/43.

Clean-room attestation: written from the Cauldron spec and general
knowledge only; no ryOS or Puter source, DOM, CSS, or assets consulted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 26, 2026 03:58
@vercel

vercel Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cauldron-shell Ready Ready Preview Sep 26, 2026 3:58am UTC

Request Review

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Five unresolved review comments remain, including four moderate issues.

Review effort: Lite
Findings: 2 Medium severity · 1 Low severity

Open (3)
What changed in this PR

Adds Finder icon view, per-folder persistence, multi-selection, keyboard/marquee selection, and multi-item operations.

Changes:

  • Added icon/list view controls and styling.
  • Implemented selection, navigation, marquee, and multi-item actions.
  • Added FND-09–FND-15 end-to-end and screenshot coverage.
File Summary Review notes
apps/​shell/​src/​finder.ts Finder views, selection, navigation, and operations Moderate: view persistence is scoped per window; Shift-arrow range handling needs a stable anchor; rendered menus can become stale; shortcuts should ignore editable targets. Nit: add multi-selection duplicate coverage.
apps/​shell/​src/​slate.css Icon-grid and selection styling No comments.
apps/​shell/​e2e/​screenshots.spec.ts Icon-view marquee screenshot coverage No comments.
apps/​shell/​e2e/​rows3.spec.ts Finder acceptance tests No comments.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread apps/shell/src/finder.ts
#anchor: string | null = null;
#renaming: string | null = null;
/** View choice per folder (spec §6.3). */
#views: Record<string, ViewMode> = {};
Comment thread apps/shell/src/finder.ts
if (step === 0) return;
const next = cur < 0 ? (step > 0 ? 0 : this.#order.length - 1) : Math.min(this.#order.length - 1, Math.max(0, cur + step));
const name = this.#order[next]!;
if (extend && cur >= 0) this.select(new Set([...this.#sel, name]), name);
Comment thread apps/shell/src/finder.ts
Comment on lines +258 to +260
async duplicate(names: string | string[]) {
for (const n of typeof names === "string" ? [names] : names) {
if (!(await this.#run(() => this.#shell.kernel.vfs.copy(u, this.#join(n), this.path)))) break;
@BunsDev
BunsDev merged commit 912a77b into main Sep 26, 2026
3 checks passed
@BunsDev
BunsDev deleted the finder-icons-select branch September 26, 2026 07:14

This branch was successfully deployed

1 active deployment
Preview — 09bd2126 Deployed Sep 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants