A tiny desktop editor that adds Unicode emphasis for social posts.
Project description
Postlette
A tiny desktop editor that adds Unicode emphasis for social posts.
Postlette uses Unicode characters, not rich text formatting. Type your post, style selected text with bold or italic, insert separators, and copy the result. Platforms may render these characters differently.
Rendering varies by platform.
Links:
Setup
Requires Python 3.10+.
git clone https://github.com/chrislyons-dev/postlette.git
cd postlette
python -m venv .venv
Activate the virtual environment:
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
Install dependencies:
pip install -e ".[dev]"
Usage
python main.py
Windows/Linux: use Ctrl. macOS: use Cmd for shortcuts.
- Type or paste your post into the editor.
- Select text and apply styling (Bold, Italic, etc.) from the toolbar.
- Insert em dashes or separators at the cursor.
- Use 📂 to open a
.txtfile or 💾 to save your work (shortcuts:Ctrl+O,Ctrl+S,Ctrl+Shift+S). - Click Copy (or press
Ctrl+Shift+C) to copy the result to your clipboard.
Use styling sparingly for readability.
Test
python tasks.py test
Lint
python tasks.py lint # check
python tasks.py fix # auto-fix
Security audit
python tasks.py audit
Icons
Convert an SVG into PNG + ICO + ICNS (dev-only deps):
python tasks.py icons .\docs\images\logo-dark.svg transparent
Docs (MkDocs)
Serve locally:
python tasks.py docs-serve
Build static site:
python tasks.py docs-build
GitHub Pages deploys automatically on main via .github/workflows/docs.yml.
Release
Release builds are tag-driven and publish to GitHub Releases and PyPI.
- Update the version in
pyproject.toml. - Commit the change.
- Create and push a tag like
v0.2.0.
The release workflow will:
- Build Windows and macOS PyInstaller artifacts.
- Generate SHA-256 checksums.
- Create a GitHub Release with auto-generated notes.
- Publish sdist/wheel to PyPI via Trusted Publishing.
See RELEASING.md for the full checklist.
Build
Standalone executables are built with PyInstaller. Each OS requires its own build.
python tasks.py build
Windows
pip install pyinstaller
pyinstaller --onefile --windowed --name postlette --icon docs/images/logo-dark-navy.ico main.py
The executable will be in dist/postlette.exe.
macOS
pip install pyinstaller
pyinstaller --onefile --windowed --name postlette main.py
The app bundle will be in dist/postlette.app.
Note: Distributing on macOS may require codesigning and notarization.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file postlette-0.3.0.tar.gz.
File metadata
- Download URL: postlette-0.3.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac0e704bf005e119585898a75a574152aecf007022feb33106b6dcee074ad914
|
|
| MD5 |
e2f39cdad930ea395e2236dd08d93403
|
|
| BLAKE2b-256 |
8c9ae2f97ef03c55c4f02f200ae8888d259d4ddfae9dba43398f5390c37a237d
|
Provenance
The following attestation bundles were made for postlette-0.3.0.tar.gz:
Publisher:
release.yml on chrislyons-dev/postlette
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
postlette-0.3.0.tar.gz -
Subject digest:
ac0e704bf005e119585898a75a574152aecf007022feb33106b6dcee074ad914 - Sigstore transparency entry: 897278183
- Sigstore integration time:
-
Permalink:
chrislyons-dev/postlette@181d888381e6418a1f811be2971125997a43d340 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/chrislyons-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@181d888381e6418a1f811be2971125997a43d340 -
Trigger Event:
push
-
Statement type:
File details
Details for the file postlette-0.3.0-py3-none-any.whl.
File metadata
- Download URL: postlette-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55ed07b1a20b1c15a3fb34cc0f75e5a20c37c2c866546b438d05b3696121e99d
|
|
| MD5 |
95100186ed5d2b5a5aaef7440ab8ce0c
|
|
| BLAKE2b-256 |
8d566be1d165ce9f82ce1ee8f6d5012bbea907d774a22f1477fded37f9934dc2
|
Provenance
The following attestation bundles were made for postlette-0.3.0-py3-none-any.whl:
Publisher:
release.yml on chrislyons-dev/postlette
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
postlette-0.3.0-py3-none-any.whl -
Subject digest:
55ed07b1a20b1c15a3fb34cc0f75e5a20c37c2c866546b438d05b3696121e99d - Sigstore transparency entry: 897278255
- Sigstore integration time:
-
Permalink:
chrislyons-dev/postlette@181d888381e6418a1f811be2971125997a43d340 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/chrislyons-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@181d888381e6418a1f811be2971125997a43d340 -
Trigger Event:
push
-
Statement type: