mirror of
https://github.com/firstsun-dev/git-files-sync.git
synced 2026-07-22 17:20:30 +00:00
Adds the missing harness subsystems so future agent sessions can start, stay in scope, verify work, and resume reliably: - feature_list.json: local mirror of active/next-up work (GitHub Issues on Project #6 remains the source of truth for the full backlog) - progress.md / session-handoff.md / archive/2026-07.md: session state, restart point, and monthly archive of finished work - init.sh: install + lint + test + build verification entrypoint - AGENTS.md: added Startup Workflow, Definition of Done, Stay in Scope, and End of Session sections (existing agent-tier content kept as-is) - CLAUDE.md: added a short Agent Workflow section routing to the above Validated with the firstsun-harness audit script: 100/100 across all five subsystems (instructions, state, verification, scope, lifecycle). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YYCTyZw7gUmJ7oh1VTmAqh
59 lines
3.4 KiB
Markdown
59 lines
3.4 KiB
Markdown
# Session Handoff
|
|
|
|
<!--
|
|
OVERWRITE, don't append: this file describes only the most recent session.
|
|
Rewrite it at end of session; older handoffs live in git history, and completed
|
|
work belongs in archive/YYYY-MM.md. If this file grows past ~80 lines, it is
|
|
accumulating history instead of handing off.
|
|
-->
|
|
|
|
## Current Objective
|
|
|
|
- Goal: Implement issues #40 (local ignore patterns), #41 (settings connection status badge), #42 (resize conflict modal)
|
|
- Current status: Implemented, tested, linted, built clean; committed and pushed. PR not yet opened (pending user confirmation).
|
|
- Branch / commit: `claude/settings-ux-improvements-260713` @ 28f4f8e
|
|
|
|
## Completed This Session
|
|
|
|
- [x] #42 - Resized conflict modal (`min(1100px,92vw) x min(85vh,800px)`, flex layout, removed 280px content cap, added Diff/Local/Remote tab switcher on narrow screens)
|
|
- [x] #41 - Persistent connection status badge in settings tab (Checking/Connected/Not connected), 800ms debounce on token/branch/URL/owner/repo edits, updates in place (no focus-stealing re-render)
|
|
- [x] #40 - "Ignore patterns" setting (multi-line, .gitignore-style), applied in `GitignoreManager.isIgnored()` additively alongside remote/local `.gitignore`
|
|
- [x] Filed issue #48 (folder picker for root path / vault folder settings) at user's request mid-session
|
|
- [x] Rebased local `main` onto `origin/main` to adopt the already-shipped Obsidian 1.12.x compat work (PR #46), discarding a stale duplicate local WIP, then re-applied the above three features cleanly on top
|
|
|
|
## Verification Evidence
|
|
|
|
| Check | Command | Result | Notes |
|
|
|---|---|---|---|
|
|
| Lint | `npx eslint .` | 0 errors | Repo-wide, no exceptions |
|
|
| Type check + compat | `npm run build` | Pass | Includes `typecheck-compat.mjs` against Obsidian 1.11.0 |
|
|
| Tests | `npx vitest run` | 254/254 passed | 17 test files |
|
|
| Manual (in Obsidian) | — | Not done | No Obsidian instance available in this environment |
|
|
|
|
## Files Changed
|
|
|
|
- `src/settings.ts`, `src/ui/SyncConflictModal.ts`, `src/logic/gitignore-manager.ts`, `src/main.ts`, `styles.css`
|
|
- `tests/setup.ts`, `tests/ui/setup-dom.ts` (expanded Obsidian test mocks)
|
|
- `tests/logic/gitignore-manager.test.ts`, `tests/logic/sync-manager.test.ts`, `tests/logic/sync-manager-mapping.test.ts`
|
|
- `tests/ui/SyncConflictModal.test.ts`, `tests/ui/SettingsConnectionStatus.test.ts` (new)
|
|
|
|
## Decisions Made
|
|
|
|
- Bundled #40/#41/#42 into a single commit rather than three, since they touch overlapping files closely enough that atomic per-issue commits risked an intermediate broken build.
|
|
- Discarded the local uncommitted 1.12.x-compat WIP (user confirmed it was superseded by origin/main's PR #46) rather than trying to merge two different compat mechanisms.
|
|
|
|
## Blockers / Risks
|
|
|
|
- None blocking. Open item: PR for the pushed branch hasn't been created — user was asked "要接著幫你開 PR 嗎?" and the session moved to harness setup before they answered.
|
|
|
|
## Next Session Startup
|
|
|
|
1. Read `CLAUDE.md`.
|
|
2. Read `feature_list.json` and `progress.md`.
|
|
3. Review this handoff.
|
|
4. Run `./init.sh` before editing.
|
|
5. Check whether the user wants a PR opened for `claude/settings-ux-improvements-260713` before starting new work.
|
|
|
|
## Recommended Next Step
|
|
|
|
- Ask the user whether to open the PR for the pushed branch; if yes, use `gh pr create` per the repo's PR conventions (see `CLAUDE.md` / firstsun-pm workflow) and reference issues #40/#41/#42 so they auto-close on merge.
|