TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
ADHD-friendly work tracker — single HTML file, runs locally in your browser.
Important: The tracker needs to run via a local server (not opened directly as a file) so your data saves correctly between sessions.
Windows
1. Download work-log.html, launch.bat, and start-server.ps1 into the same folder
2. Double-click launch.bat
3. The tracker opens automatically in your browser
Linux / Mac
1. Download work-log.html and launch.sh into the same folder
2. Open a terminal in that folder and run:
3. The tracker opens automatically in your browserREADME 전문 보기 ↗ADHD-friendly work tracker — single HTML file, runs locally in your browser.
Important: The tracker needs to run via a local server (not opened directly as a file) so your data saves correctly between sessions.
work-log.html, launch.bat, and start-server.ps1 into the same folderlaunch.batwork-log.html and launch.sh into the same folderbash launch.sh
Your data is stored locally in your browser — nothing is sent anywhere.
Data lives per-origin, so keep the port stable. Your entries are stored in your browser's
localStorage, which is scoped to the exactorigin:portyou loaded the page from. Both launchers use a fixed port (8080) for this reason — if you ever load the tracker from a different port, your previous data won't show up (it's not gone, it's just stranded on the old port). Reloadhttp://localhost:8080/work-log.htmlto get it back.
✕ hides a single meeting for the rest of the day, not every meeting
sharing its title. If long-running recurring meetings are missing, raise $CalendarLookBackYears in
config.local.ps1 (see config.local.example.ps1). If a calendar you don't want still shows up — e.g. a
shared calendar that reports as an ordinary folder — name it in $CalendarExcludeNames.
http://localhost:8080/api/calendar?debug=1 reports what the collector found.activity (ticket, ticket) description built from your log. Edit it and press "copy description" to paste into your time-tracking system. One-click submit (Claude in Chrome first, Playwright as fallback) is built but switched off: set EOD_SUBMIT_ENABLED = true in src/js/00-config.local.js to show the submit button, and $EodSubmitEnabled = $true in config.local.ps1 to let the server accept it. It needs start-server.ps1, the Claude Code CLI with the Claude in Chrome extension, and/or a one-time npm run eod:login (Microsoft SSO) for the Playwright fallback, whose page selectors are unverified defaults — override them in scripts/eod-submit.selectors.json.JSON backups/ folder✏️ button opens a floating capture panel; Enter starts the timer immediatelyEOD_SUBMIT_ENABLED is false in src/js/00-config.js; nothing is sent until you set it to true in your own src/js/00-config.local.js and $EodSubmitEnabled = $true in config.local.ps1. The browser flag only shows the submit button; the server enforces its own switch and answers POST /api/eod-submit with 403 while $EodSubmitEnabled is not a real $true (the default).start-server.ps1 no longer sends Access-Control-Allow-Origin: *, and the endpoint rejects any request whose Origin is not this server's own http://localhost|127.0.0.1|[::1]:<port>, or whose Host is not a local name (DNS-rebinding), with 403. A web page open in your browser therefore cannot trigger a submission through your signed-in session. Requests with no Origin (e.g. curl on your own machine) are still accepted when submission is enabled.scripts/eod-submit.mjs is started by the local server and drives your signed-in Chrome (claude --chrome) or a Playwright profile against $EodSubmitUrl. The date, hours and description go over stdin, never argv. The Chrome route runs the Claude Code CLI, so that entry text is also seen by Claude (Anthropic API); the Playwright route does not involve it.npm run eod:login); the session cookies live in .timesheet-profile/. scripts/eod-submit.selectors.json holds only optional CSS selector overrides ({} by default).config.local.ps1, src/js/00-config.local.js, .timesheet-profile/. Copy config.local.example.ps1 / src/js/00-config.local.example.js and keep the copies untracked.My entries are gone after reopening the page. Entries live in localStorage, scoped to the exact origin:port. Reload http://localhost:8080/work-log.html (see the note under How to use). If you still see nothing, check that your browser isn't set to clear site data on exit, then restore from the newest file in JSON backups/ (written automatically at end-of-day).
The timer didn't save. Same cause as above — a different port or cleared site data. Log the missed time manually from the Log tab.
| Document | Purpose |
|---|---|
| ARCHITECTURE.md | Module map, data flow, and design decisions |
| DATA.md | localStorage schema dictionary |
| CONTRIBUTING.md | Dev setup, branching strategy, and quality standard |
| ROADMAP.md | Planned and in-progress features |
| CHANGELOG.md | Full release history |
| QA.md | QA checklist and stakeholder sign-offs per release |
| JSDoc reference | Generated API docs for every exported function, rebuilt on every push to main |
A smoke test suite is included. Requires Node.js ≥ 22.22.1 (matches engines in package.json — the actual floor imposed by lint-staged's own minimum).
node smoke-tests.cjs
Or double-click run-tests.bat on Windows.
If your environment has a pre-provisioned Chromium binary at a revision Playwright's
own installer can't reach (e.g. an offline sandbox), point the smoke tests at it with
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/path/to/chromium node smoke-tests.cjs instead of
running npx playwright install.
To schedule tests to run automatically each morning, run schedule-tests.bat once as Administrator.
To set up automated weekly releases every Friday, run setup-scheduler.ps1 once as Administrator.