fix(log): resolve config.json path for marketplace installs#38
Closed
josemoreno801-netizen wants to merge 1 commit intoDigital-Process-Tools:mainfrom
Closed
Conversation
… installs
In marketplace cache layouts (~/.claude/plugins/cache/<mkt>/remember/<ver>/),
config.json sits at $PIPELINE_DIR/.claude/remember/config.json — but log.sh
was looking at $PIPELINE_DIR/config.json (one directory too shallow). Every
config lookup silently fell through to defaults, causing two cascading bugs:
- REMEMBER_TZ defaulted to "Europe/Paris" (save-session.sh:62), so all
timestamps in today-*.md drifted by hours from the user's actual local
time. A user in America/New_York saw "## 07:09 | branch" written at
1:09 AM ET because Haiku echoed the formatted Paris time back into the
today file.
- time_format defaulted to "24h" so users who set "12h" never got AM/PM
output.
Fix: log.sh now resolves REMEMBER_CONFIG via three branches —
1. marketplace cache: $PIPELINE_DIR/.claude/remember/config.json
2. legacy/flat: $PIPELINE_DIR/config.json (preserved for compat)
3. local install: $PROJECT_DIR/.claude/remember/config.json
Also harden save-session.sh:62 — its hardcoded "Europe/Paris" fallback was
actively harmful as a defense, since log.sh already exports REMEMBER_TZ=""
which _remember_date correctly translates to system-local. The Paris
fallback would have shifted every timestamp if config ever genuinely went
missing. Default is now empty string, matching log.sh:59's convention.
Tests:
- tests/test_log_sh.py: new test sources log.sh with PIPELINE_DIR set
and config under .claude/remember/, asserts REMEMBER_TZ resolves.
- tests/test_path_resolution.py: new test asserts no hardcoded city as
.timezone fallback in save-session.sh.
- Existing test_log_sh_config_uses_pipeline_dir relaxed to allow indented
REMEMBER_CONFIG= lines (the new resolution branches).
Verified end-to-end on macOS: prior save wrote "## 07:09 | main" (Paris),
post-fix save writes "## 1:47 AM | branch" (Eastern, 12h). 258/258 pytest
pass at 99.12% coverage.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fdaviddpt
pushed a commit
that referenced
this pull request
Apr 28, 2026
…pts (#38) Resolves marketplace install path issue where config.json and hooks.d were read from PROJECT_DIR instead of PIPELINE_DIR. - log.sh: set PIPELINE_DIR with fallback, derive REMEMBER_CONFIG and REMEMBER_HOOKS_DIR from it - user-prompt-hook.sh: source resolve-paths.sh for consistent path setup - session-start-hook.sh: remove duplicate cfg(), use config() from log.sh - post-tool-hook.sh: use config() instead of direct jq - save-session.sh, run-consolidation.sh: remove redundant REMEMBER_TZ re-reads - 67 new edge-case tests (marketplace layout, symlinks, config validation, unicode, coercion) Based on issue reported by @josemoreno801-netizen in PR #38. Co-Authored-By: Max <noreply> Co-Authored-By: josemoreno801-netizen <josemoreno801-netizen@users.noreply.github.com>
Contributor
|
Thanks for reporting this and putting together the fix, @josemoreno801-netizen! Your PR helped us identify the full scope of the issue — we ended up unifying the config reader across all scripts and adding 67 edge-case tests on top of your original fix. This is now resolved in v0.7.0 (commit 1d67a6d) with you credited as co-author. Closing in favor of the merged fix. Appreciate the contribution! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
~/.claude/plugins/cache/<mkt>/remember/<ver>/) keepconfig.jsoninside a.claude/remember/subdir, butscripts/log.sh:46was reading from$PIPELINE_DIR/config.json— one level too shallow. Every config lookup silently fell through to defaults.REMEMBER_TZdefaulted to"Europe/Paris"(persave-session.sh:62), so timestamps intoday-*.mddrifted by hours. A user inAmerica/New_Yorkwould see## 07:09 | branchwritten at 1:09 AM local because Haiku echoed the formatted Paris time straight back into the file.time_formatdefaulted to"24h", so users who set"12h"never got AM/PM output.REMEMBER_CONFIGnow resolves through three branches — marketplace ($PIPELINE_DIR/.claude/remember/config.json), legacy flat ($PIPELINE_DIR/config.json, preserved for back-compat), then local-install ($PROJECT_DIR/.claude/remember/config.json).save-session.sh:62: its"Europe/Paris"fallback was actively harmful —log.sh:59already exportsREMEMBER_TZ=""which_remember_datetranslates to system-local, so a hardcoded Paris fallback would shift every timestamp if config ever genuinely went missing. Default now matcheslog.sh:59's empty-string convention.Test plan
python3 -m pytest tests/ -q— 258 passed at 99.12% coveragetest_log_sh_marketplace_layout_finds_config_under_dot_claude_remember— sourceslog.shwithPIPELINE_DIRset and config under.claude/remember/, assertsREMEMBER_TZresolves to the configured value (would fail before this fix)test_no_hardcoded_city_timezone_default— guards against any future timezone-default landmines insave-session.shtest_log_sh_config_uses_pipeline_dirupdated to accept indentedREMEMBER_CONFIG=lines (the new resolution uses anif/elif/elseblock)bash scripts/run-tests.sh— 25 pass / 1 pre-existing fail (Test 7: save-session.sh --dryfails on baremaintoo, unrelated to this PR — separateCLAUDE_PROJECT_DIRexport issue inscripts/run-tests.sh)## 07:09 | main(Paris, 24h). Post-fix save on the same machine writes## 1:47 AM | fix/log-sh-marketplace-config-path(Eastern, 12h, AM/PM)🤖 Generated with Claude Code