Skip to content

fix: cross-platform filename and config path issues (#348, #356)#404

Merged
bradygaster merged 2 commits intodevfrom
squad/348-356-cross-platform-fixes
Mar 15, 2026
Merged

fix: cross-platform filename and config path issues (#348, #356)#404
bradygaster merged 2 commits intodevfrom
squad/348-356-cross-platform-fixes

Conversation

@bradygaster
Copy link
Copy Markdown
Owner

Fixes #348 — Replace colons in log filenames with hyphens for Windows compatibility
Fixes #356 — Remove/relativize machine-specific teamRoot in config.json

Changes

Bug #348: Timestamp filenames with colons

  • Updated comms-file-log.ts to use safeTimestamp() utility instead of inline timestamp formatting
  • The utility already exists and replaces colons with hyphens for Windows compatibility
  • Files in .squad/comms/ now use format: 2026-03-13T22-52-00Z-slug.md

Bug #356: Machine-specific absolute paths in config

  • Removed eamRoot field from .squad/config.json — it's machine-specific and breaks portability
  • The field can be computed at runtime via \git rev-parse --show-toplevel\ or similar
  • Updated existing .squad/config.json in this repo to remove the absolute path

Testing

  • ✅ All 150 tests pass (2 pre-existing failures unrelated to these changes)
  • ✅ Verified timestamp format in communication-adapter.test.ts
  • ✅ No new test failures introduced

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

bradygaster and others added 2 commits March 15, 2026 03:50
- Replace inline timestamp formatting with safeTimestamp() utility in comms-file-log
- Remove machine-specific teamRoot from .squad/config.json (can be computed at runtime)
- Update existing config.json to remove absolute path

Fixes #348 — Replace colons in log filenames with hyphens for Windows compatibility
Fixes #356 — Remove machine-specific teamRoot from config.json

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Document investigation and fixes for Windows filename compatibility issues.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bradygaster
Copy link
Copy Markdown
Owner Author

FIDO Quality Review — ✅ APPROVED

Bug fixes verified:

  • ✅ Timestamp sanitization: comms-file-log.ts correctly uses safeTimestamp() utility (Windows-safe format: colons → hyphens)
  • ✅ No remaining toISOString() in filename paths (grep confirmed)
  • ✅ teamRoot removal: safe for local mode (falls through to computed paths), remote mode still supported when explicitly configured

Test coverage:

  • ✅ All 150 tests pass locally (EECOM confirmed)
  • ⚠️ No tests specifically cover safeTimestamp() behavior, but existing communication adapter tests validate structure
  • ✅ teamRoot change is backward-compatible (resolution.ts handles both cases)

CI failure:
The build failure (missing SDK exports: listRoles, searchRoles) is a pre-existing issue on dev branch, not introduced by this PR. Verified dev branch has same CI failures.

Verdict: ✅ GO — This PR fixes real cross-platform bugs. Safe to merge when dev CI is fixed.

@bradygaster bradygaster merged commit fce937d into dev Mar 15, 2026
1 check failed
@bradygaster bradygaster deleted the squad/348-356-cross-platform-fixes branch March 15, 2026 11:30
bradygaster added a commit that referenced this pull request Mar 15, 2026
… next sprint queued

Updated focus to irritating bugs sprint (#197, #353, #354).
Recorded PR merges (#404, #403, #405), flicker fix cherry-pick,
github-multi-account skill install, and pending PR status.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
…bradygaster#414)

* chore(squad): Phase 2 launch — thinking feedback, P0 bugs, dual telemetry

Phase 1 complete: 5 issues closed (bradygaster#325, bradygaster#326, bradygaster#327, bradygaster#328, bradygaster#329), 5 PRs merged.
Phase 2 launched with Cheritto (thinking feedback), Hockney (P0 bugs), Saul (dual telemetry).
Decision inbox merged and archived.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): Phase 2 Wave 1 merged, Wave 2 launched

Session: 2026-02-23T2145-phase2-wave2
Phase 2 Wave 1 complete (PRs bradygaster#351, bradygaster#352, bradygaster#353 merged).
Wave 2 launched: Cheritto on ghost response detection (bradygaster#332), Hockney on error hardening (bradygaster#334).

Changes:
- Session log created: 2026-02-23T2145-phase2-wave2.md
- Merged 3 inbox decisions (Cheritto, Hockney, Saul)
- Deleted inbox files post-merge

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): Epic bradygaster#323 complete — all phases shipped 🎉

All 3 phases delivered:
- Phase 1 (Testing Wave): 6 issues closed
- Phase 2 (Improvement): 6 issues closed
- Phase 3 (Breathtaking): 7 issues closed
- 17 PRs merged, 19 issues closed total

Session log: 2026-02-23T2320-epic-complete.md
Decisions merged from inbox: P2 UX Polish, first-run wow moment

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* hostile QA: end-to-end quality assessment — 10 findings, 4 HIGH severity

Candid assessment requested by Brady. Traced every code path in cli-entry.ts,
shell/index.ts, shell/commands.ts, App.tsx, coordinator.ts, spawn.ts, and the
SDK adapter client.

Key findings:
- Dead sessions never evicted from agentSessions Map after connection drop
- No React ErrorBoundary — any render throw kills the shell
- Nasty-inputs corpus (95 strings) is never imported by any test
- No SIGTERM handler in interactive shell
- MemoryManager exported but never instantiated (dead code)
- Single streaming content slot clobbers multi-agent output
- User input silently dropped during processing (no type-ahead buffer)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): quality review findings — 7 issues filed

Quality audit complete: 5 agents assessed CLI across testing, coverage, stability, accessibility, UX.
Results: 4 P0 blockers (bradygaster#365bradygaster#368), 3 P1 items (bradygaster#369bradygaster#371).
Blocking: Waingro dead sessions, ErrorBoundary, dropped input; Marquez help text consistency.

Changes:
- Logged session summary to .squad/log/2026-02-24T0205-quality-review-complete.md
- Updated .squad/identity/now.md with quality review findings and new issue numbers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): merge decision — Marquez UX audit findings

Quality assessment merged from inbox (Grade B): 11 improvements (3 P0, 4 P1, 4 P2). help text, stub commands, vocabulary, separators, roster.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): test sprint launch

Session: 2026-02-24T0210-test-sprint
Changes:
- Logged test sprint: 5 agents, 7+ issues
- Branches: P0 fixes, stale tests, E2E, hostile/SDK, A11y

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: product love — first 10 seconds that make you want the next 10 minutes

Walked through the full first-time user experience and fixed every moment
that wasn't delightful:

**\/clear\ actually clears (bradygaster#400)**
- Was sending raw ANSI escape as message content (no-op in Ink)
- Now resets message array to empty — genuine fresh slate
- Added \clear?: boolean\ to CommandResult interface

**Natural language routing revealed (bradygaster#402)**
- The coordinator auto-routing is the WOW feature — was completely hidden
- Welcome banner hints: 'Just type · @agent to direct · /help · Ctrl+C exit'
- /help explains: 'Just type naturally — the coordinator routes it'
- First-run prompt: adds 'Or just type naturally' hint
- Input placeholder: 'Type anything or @agent...'

**First-run hint layout (bradygaster#404)**
- Was horizontal Box that broke on narrow terminals
- Now vertical flexDirection=column with breathing room

**Exit message consistency (bradygaster#405)**
- Replaced wave emoji with diamond mark (matches P2 emoji removal)

**Welcome roster wrapping (bradygaster#407)**
- Agents were one dense string that wrapped mid-name
- Now individual Ink elements with flex-wrap for clean word-boundary wrapping

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
- bradygaster#405: Exit message uses ANSI-colored ASCII separator instead of Unicode diamond
- bradygaster#404: First-run hint adapts for narrow terminals (<=60 cols): shorter text, no padding
- bradygaster#407: Roster removes emoji from agent names, uses ASCII hyphen separators, columnGap for clean wrapping
- All separators normalized to ASCII hyphens per P2 conventions

Fixes bradygaster#405, bradygaster#404, bradygaster#407

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
…05-404-407

Reviewed by Keaton (Lead). Conflict resolved after rebase onto main. Fixes bradygaster#405, bradygaster#404, bradygaster#407.
tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
Session: 2026-02-24T0430-prs-merged
Requested by: Brady

Changes:
- Merged 6 decision inbox files into decisions.md (Cheritto, Fenster, Kovash, Marquez, McManus, Waingro)
- Deleted all inbox files (now empty)
- Created .squad/identity/prd-next-waves.md (4-wave execution plan: A=Polish, B=Reliability, C=Testing, D=Delight)
- Updated .squad/identity/now.md to reflect Wave A focus
- Created session log: .squad/log/2026-02-24T0430-prs-merged.md

PRs merged this session: bradygaster#444, bradygaster#445, bradygaster#446, bradygaster#447
Issues closed: bradygaster#400, bradygaster#389, bradygaster#417, bradygaster#391, bradygaster#402, bradygaster#405, bradygaster#404, bradygaster#407, bradygaster#431, bradygaster#429
Issues filed: bradygaster#448-bradygaster#459 (Wave A Polish items)

Process directive: All work through PRs with squad member review before merge

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

1 participant