This tool creates a timestamped text note in a selected folder. It can be used
through a swiftDialog interface, through an interactive Terminal wrapper, or
directly with Python.
The filename format is:
YYYYMMDD_HHMMSS_<name>.txt
In apply mode, the tool writes a small header and records the run in the central
log directory. The dialog can then select the new file in Double Commander so
that it can be edited with F4.
The active tool is designed for:
macOS
Python 3
zsh
Double Commander
swiftDialog
AppleScript and Terminal
The management scripts additionally use Bash. No third-party Python packages
are required; the Python tool uses only the standard library.
Relevant runtime paths:
Python: python3 from PATH
zsh: /bin/zsh
swiftDialog: /usr/local/bin/dialog
Double Commander: /Applications/Double Commander.app
Central logs: /Volumes/ExtraData/Projecten/double_commander/logs
The dialog uses this optional icon when it is available:
/Volumes/ExtraData/Projecten/double_commander/icons/icon_create_text_note_dialog_512.png
The Double Commander toolbar can use this icon:
/Volumes/ExtraData/Projecten/double_commander/icons/icon_create_text_note_48.png
The Azure DevOps repository Personal is the only source of truth. Make lasting
changes in Git and review them there. Do not maintain a separate live version.
Repository component:
/Volumes/ExtraData/Projecten/ADO/Personal/create-text-note/
Repository source mirror:
/Volumes/ExtraData/Projecten/ADO/Personal/create-text-note/double_commander/scripts/create_text_note/
Active installation:
/Volumes/ExtraData/Projecten/double_commander/scripts/create_text_note/
The repository mirrors the live path below the component directory. Do not add
a separate source/, src/, or app/ directory.
create-text-note/
├── README.md
├── double_commander/
│ └── scripts/
│ └── create_text_note/
│ ├── create_text_note.py
│ ├── create_text_note.sh
│ ├── create_text_note_dialog.sh
│ ├── create_text_note_dialog_launcher.sh
│ └── create_text_note_launcher.sh
└── scripts/
├── check_source.sh
└── install_to_live.sh
pipelines/
└── create-text-note.yml
README.md is the canonical Git source for the live file
readmeCreateTextNoteTool.md; it is not duplicated in the mirrored source
directory.
| Git source | Live target | Mode |
|---|---|---|
double_commander/scripts/create_text_note/create_text_note.py |
create_text_note.py |
0755 |
double_commander/scripts/create_text_note/create_text_note.sh |
create_text_note.sh |
0755 |
double_commander/scripts/create_text_note/create_text_note_dialog.sh |
create_text_note_dialog.sh |
0755 |
double_commander/scripts/create_text_note/create_text_note_dialog_launcher.sh |
create_text_note_dialog_launcher.sh |
0755 |
double_commander/scripts/create_text_note/create_text_note_launcher.sh |
create_text_note_launcher.sh |
0755 |
README.md |
readmeCreateTextNoteTool.md |
0644 |
The installer never removes files from the active directory. Generated logs,
created notes, cache files, and back-ups are not repository source files.
The interactive wrappers use safe defaults:
Target path = active Double Commander path
Dry-run = checked
Select in Double Commander after apply = checked
In apply mode, the tool:
Recommended Double Commander button:
Type: Program
Command:
/Volumes/ExtraData/Projecten/double_commander/scripts/create_text_note/create_text_note_dialog_launcher.sh
Parameters:
%D
Icon:
/Volumes/ExtraData/Projecten/double_commander/icons/icon_create_text_note_48.png
The dialog asks for a note name and target path. Dry-run is selected by default,
so no note is created until it is explicitly unchecked.
The Terminal launcher is:
/Volumes/ExtraData/Projecten/double_commander/scripts/create_text_note/create_text_note_launcher.sh
It opens the interactive wrapper in a visible Terminal window. The wrapper asks
for the note name, target path, and dry-run/apply mode.
Example preview:
python3 create_text_note.py \
--target-path /Volumes/ExtraData/Projecten \
--name meeting_notes \
--dry-run
To create the note, replace --dry-run with --apply. The dry-run does not
create a note, but it does write a run log to the configured log directory.
Run from the root of the Personal repository:
./create-text-note/scripts/check_source.sh
The check uses an explicit allowlist and verifies required files, repository
paths, modes, shebangs, Python syntax, Bash syntax, and zsh syntax. It rejects
unexpected mirrored source files and blocks .env, key, and certificate files.
It parses the Python source without running the tool.
Always compare Git with the active installation before requesting deployment:
./create-text-note/scripts/install_to_live.sh --dry-run
The dry-run compares both content and mode. Equal files are reported as
GELIJK; every difference is reported as ZOU INSTALLEREN. It does not change
live files, file modes, or back-ups.
For an isolated test target, use component-specific environment variables:
CREATE_TEXT_NOTE_LIVE_ROOT=/absolute/test/live \
CREATE_TEXT_NOTE_BACKUP_ROOT=/absolute/test/backups \
./create-text-note/scripts/install_to_live.sh --dry-run
The target directory must already exist.
The non-dry-run installer is intended for the approved Azure DevOps deployment
stage. It installs only the explicit Git-to-live mapping shown above.
Before replacing an existing live file, the installer creates and verifies a
timestamped back-up below:
/Volumes/ExtraData/Projecten/double_commander/backups/create_text_note/
Files that are already equal are skipped. A newly installed file has no previous
version to back up. After every installation, the script verifies both content
and mode with the Git source. It never deletes additional live files.
Before staging changes, run:
git status --short --branch
git status --short --untracked-files=all
git diff --check
git --no-pager diff
./create-text-note/scripts/check_source.sh
./create-text-note/scripts/install_to_live.sh --dry-run
Stage only this component and its pipeline:
git add create-text-note pipelines/create-text-note.yml
Review the staged result before committing:
git diff --cached --check
git --no-pager diff --cached --stat
git --no-pager diff --cached
git status --short --branch
After an approved commit, push normally:
git push origin main
Do not force-push and do not use destructive cleanup commands.
Pipeline definition:
pipelines/create-text-note.yml
The pipeline uses self-hosted pool MacBook-DevTest. A normal push to main
triggers the pipeline only when this component or its pipeline YAML changes.
The run checks the MacBook agent, validates the source, and always performs an
installation dry-run.
The boolean parameter deployToLive defaults to false. Therefore, a normal
push never installs to live.
Live installation is allowed only through a separately approved, manually
started pipeline run:
Create Text Note.main.deployToLive to true.M3Max-MacBook is online.succeeded.The installation step is skipped when deployToLive=false.
After a successful installation, run:
./create-text-note/scripts/install_to_live.sh --dry-run
Expected result:
Gecontroleerd: 6
Al gelijk: 6
Zou installeren: 0
This confirms that all active files are equal to Git and have the required
modes.
deployToLive=true..env, credential, key, certificate, log, cache, generated note, and back-up| Version | Date | Change |
|---|---|---|
| 1.1.0 | 2026-08-04 | Added the canonical repository mirror, Git source-of-truth workflow, validation, dry-run, back-up, pipeline, manual deployment, and end-check documentation; no tool code change. |
| 1.0.2 | 2026-05-09 | Changed open behavior to select the created file in Double Commander; the user can press F4 to edit. |
| 1.0.1 | 2026-05-09 | Removed the sidecar manifest and changed the open behavior. |
| 1.0.0 | 2026-05-09 | Initial timestamped text note creator with Terminal and swiftDialog wrappers. |