Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,34 @@ Completed work is archived in [archive/](./archive/), one file per calendar mont

## Current State

**Last Updated:** 2026-07-28
**Active Feature:** `feat-025` β€” Sync Status tree view with folder selection and a Show synced toggle.
**Last Updated:** 2026-07-31
**Active Feature:** `feat-025` β€” Sync Status tree view with folder selection and a Show synced toggle (code complete, manual Obsidian verification pending).
**Parallel Work:** PR #87 β€” 4x Dependabot security alerts being fixed via npm overrides.

## Status

### What's Done

- [x] feat-001..023 and the move-detection fixes β€” see [archive/2026-07.md](./archive/2026-07.md).
- [x] feat-001..024 and core move-detection fixes β€” see [archive/2026-07.md](./archive/2026-07.md).
- [x] `refactor(sync-status): centralize status classification` (`c610dde`): introduced a pure `SyncStatusService` and routed full refresh, fallback content comparison, live edits, rename/move, remote-only discovery, and optimistic push completion through its one status policy.
- [x] `refactor(sync-status): share status state with sync manager` (`9cefb25`): the service owns the shared status map and publishes snapshots; SyncManager records confirmed syncs there, and SyncStatusView subscribes instead of holding its own map.
- [x] `test(sync): guard never-pushed rename status` (`e586fc2`): verifies `trackRename` leaves missing metadata absent and the view carries the renamed row as Local only, never as moved.
- [x] `fix(sync): honor ignore patterns for direct push` (`61ca728`): the Ribbon, context-menu, and command single-file Push paths now stop before a vault read or remote call when a user ignore pattern matches. Batch Push filters ignored paths too; saving relevant settings rebuilds the ignore matcher immediately.
- [x] `fix(sync): reconcile moves from legacy metadata` (`ed04867`): an out-of-band move after restart now treats a missing legacy `lastKnownPath` as the metadata record key, allowing the unique SHA-matched Local only + Remote only pair to become a safe Move.
- [x] `feat(sync): auto-refresh status on startup`: enabled by default with a settings toggle; Synced tab is last and Synced rows are bottom-most on All.
- [x] `feat(ui): Sync Status tree view`: paths are grouped into collapsible folders, and folder checkboxes select all visible descendant files with an indeterminate state for partial selection. The option row below Refresh toggles tree view and, when enabled, Show synced. Folder disclosure uses unboxed `+` / `βˆ’` signs.
- [x] `feat(ui): Sync Status tree view` (feat-025): paths are grouped into collapsible folders, and folder checkboxes select all visible descendant files with an indeterminate state for partial selection. The option row below Refresh toggles tree view and, when enabled, Show synced. Folder disclosure uses unboxed `+` / `βˆ’` signs. **Code complete; all automated checks pass.**
- [x] `fix(ui): show diff for moved-and-edited files`: moved rows retain the source path's remote SHA and current local content, so Diff compares the old remote file to the moved file even after further edits.
- [x] `feat(changelog): add 1.5.0 What's New copy`: added the six approved highlights in English, Traditional Chinese, and Simplified Chinese, plus a link to the GitHub repository from the What's New modal.

### What's In Progress

- [ ] Manually verify the tree hierarchy, folder expand/collapse, individual and folder checkboxes, and the Show synced toggle in Obsidian.
- [ ] **feat-025**: Manual verification in Obsidian β€” tree hierarchy, folder expand/collapse, individual and folder checkboxes, and Show synced toggle.

### What's Next

1. Manually verify `feat-025` in Obsidian.
2. Issue #57 live-credential smoke test remains relevant before merging push/pull/delete work.
1. Manual Obsidian verification of feat-025 (tree view).
2. PR #87 merging (4x Dependabot security patches via npm overrides).
3. Issue #57 live-credential smoke test remains relevant before merging push/pull/delete work.

## Evidence of Completion

Expand Down
47 changes: 35 additions & 12 deletions session-handoff.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,46 @@
# Session Handoff

**Date:** 2026-07-29
**Branch:** `prepare-1.5.0`
**Date:** 2026-07-31
**Branch:** main (1.5.0 released, e7d5307)

## Completed
## Completed This Session

- Updated `README.md` for the current 1.5.0 feature set: sync-plan review, real file/folder moves, live and startup status refresh, path search, optional tree view with folder selection, desktop Diff pane, and the three supported interface languages.
- Updated the Traditional Chinese guide, `USAGE_zh.md`, with the same current workflow and feature information.
- Added `USAGE_zh-cn.md`, a Simplified Chinese guide, and connected all three documentation languages with navigation links.
- Recommended three new screenshots for a future documentation polish: sync-plan confirmation, tree view with folder selection, and the desktop Diff pane.
- Investigated 4x Dependabot security vulnerabilities (brace-expansion, fast-uri, postcss, tar).
- **PR #87** opened on `claude/fix-dependabot-security-alerts`: patches all CVEs using npm overrides pattern.
- Fixes apply to transitive dev/build dependencies only β€” zero runtime impact.
- All automated checks pass: lint/build/test green.

## Verification
## Current Feature State

**feat-025** (Sync Status tree view) is **code-complete** but requires manual Obsidian verification:
- βœ“ Tree hierarchy with collapsible folders
- βœ“ Tri-state folder checkboxes (indeterminate for partial selection)
- βœ“ Show synced toggle beneath Refresh button
- βœ“ Folder disclosure using unboxed `+` / `βˆ’` signs
- βœ— **Manual Obsidian verification still pending**

## Exact Next Step

**Priority 1:** Manual Obsidian verification of feat-025 (tree view). Test:
- Expand/collapse folders in tree view
- Select individual files and folders with checkboxes
- Verify indeterminate state for partial folder selection
- Toggle "Show synced" and verify Synced rows appear/disappear
- Once verified: mark feat-025 as done in feature_list.json

**Priority 2:** PR #87 (Dependabot security patches) ready for review/merge

**Priority 3:** Issue #57 live-credential smoke test before push/pull/delete batch work

## Verification Baseline

```
./init.sh -> npm run lint clean; npm test: 33 files, 494 tests passed; npm run build passes
git diff --check -> passes
relative-link check across README.md, USAGE_zh.md, USAGE_zh-cn.md -> no missing local links
npm audit -> 4 vulnerabilities (PR #87 fixes them; awaiting merge)
git diff --check -> clean
```

## Exact Next Step
## Active Branches

Manually verify the 1.5.0 What's New modal in Obsidian, including all three language selections and both external GitHub buttons. The existing tree-view manual verification for `feat-025` remains outstanding.
- **PR #87**: `claude/fix-dependabot-security-alerts` β€” security patches via npm overrides (open, ready to merge)
- **feat-025** on main β€” tree view code complete, manual verification pending
Loading