Freeze tracking/applications.md (kept for backward compat, no longer
read or written) and route all application tracking through the Trello
BestJob board:
- Write path: a Trello card in TODO is the application record; carries a
Tracking footer (date, channel, CV used, JD link, status). Column =
funnel status.
- Read/dedup path: build known_applied from card titles via Trello MCP
across the vacancy-bearing lists, titles-only to protect context;
REST fields=name fallback documented for when the board grows.
- Sync board columns: add In touch + Rejected (with IDs) to the canonical
column table and to the dedup/funnel specs.
Touches CLAUDE.md, tracking/CLAUDE.md, triage-jobs and get-tg-jobs skills.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
State cursor is per-machine and gitignored by design; the .bak snapshot
was not produced by any script and had gone stale.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- .mcp.json: switch telegram-* args to relative path (scripts/telegram-mcp.sh)
so the committed config no longer pins a single user's home directory
- telegram-mcp.sh / regen_telegram_session.sh: drop hardcoded fallbacks for
TELEGRAM_MCP_BIN / TELEGRAM_MCP_DIR; require them from .env with explicit
error messages naming the missing variable
- .env.example: document per-machine path variables and per-account session
strings, with a warning not to copy sessions between devices (Telegram
revokes the auth key when one session is used from two IPs)
- CLAUDE.md: add a Bootstrap-on-a-new-machine section with the setup steps,
the portability rationale, and a troubleshooting table for the common
MCP / session failure modes
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- .mcp.json: both telegram servers now start via scripts/telegram-mcp.sh
<usulsu|helper> instead of hardcoding session strings — config is now
secret-free and safe to commit.
- scripts/telegram-mcp.sh: sources .env, selects the per-account session
string (TELEGRAM_SESSION_STRING / TELEGRAM_SESSION_STRING_HELPER), execs
the telegram-mcp binary (path overridable via TELEGRAM_MCP_BIN).
- scripts/regen_telegram_session.sh: rewritten — captures the generated
string, saves it to .secrets/session_<account>.txt, and upserts it into
.env. Fixes the broken /projects/... generator path.
- package.json: tg:session:usulsu / tg:session:helper npm scripts.
- .gitignore: ignore .secrets/.
Root cause of the dead session: hardcoded strings lived in git, so laptop
and VPS shared one auth_key across two IPs and Telegram revoked it. Strings
now live only in local, gitignored files — one per device/account.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>