- Support Werkzeug 3 by using a default encoding of UTF-8 ([#377](https://github.com/joeyespo/grip/ issues/377) - thanks, @daniel-eichinger-bl!)
- Fix "ImportError: cannot import name 'safe_join' from 'flask'" when using Flask 2.1.0+ (#360 - thanks, @bryce-carson!)
- Update output and fix style issues
- Add support for Python 3.7, 3.8, 3.9, 3.10
- Improve handling of PDFs and other binary files
- Fix deprecation warnings from newer dependency versions
- End-of-life Python versions no longer intentionally supported
- Current dependency versions (more recent versions will be required in the next major release)
- Fix typo in error message (#266 - thanks, @Godron629!)
- Update HTML/CSS scaffold to match GitHub (#297 - thanks, @phyllisstein!)
- Fix tests by adding a missing
USER_CONTEXT
argument to one of theGitHubRenderer
calls - Serve non-
text/
MIME types as raw files for better handling of, e.g. PDF files (#234 - thanks, @wvspee!) - Fix style parsing, which caused some styles to be missing (#347)
- Readme: Update to correct
--no-inline
option (#267 - thanks, @TomDLT!) - Readme: Fix links to Grip class (#276 - thanks, @jacebrowning!)
- Readme: Clarify that this sends your markdown to GitHub (#251 - thanks, @courajs!)
- Update
pytest
usages (see pytest 3.0.0 changelog) - Add
.pytest_cache
to.gitignore
(#287 - thanks, @svisser!) - Add
.venv
and.idea
to.gitignore
and clean up - Add
flake8
test dependency and fix linting errors (#299) - Add
pytest
test dependency (#294 - thanks, @Methacrylon!) - License: Distribute LICENSE file (#274 - thanks, @synapticarbors!)
- License: Update year
- Enhancement: Show more helpful error message on TLSV1_ALERT_PROTOCOL_VERSION to help people through (#262)
- Docs: Use smaller header for patch version titles in CHANGES.md
- Bugfix: Don't print "Downloading" from
--export
when using--quiet
- Cleanup: Move
quiet
kwarg ofexport()
to the end like the other API methods - Readme: Document
quiet
kwarg ofexport()
- Readme: Document
quiet
kwarg ofrender_page()
- Enhancement: Show warning if no styles are collected (#265)
- Bugfix: Don't print "Exporting" from
--export
when using--quiet
(#247 - thanks, @kagof!) - Bugfix: Fix style parsing (#265)
- Bugfix: Loosen up the style URLs matching (#265)
- Internals: Fix
_strip_url_params
method name typo (#254 - thanks, @jwilk!) - Readme: Fix syntax highlighting in README (#264 - thanks, @jwilk!)
- Readme: Remove Gratipay
☹️ (Article) - Readme: Tweak Contributing copy
- Tests: Wrap map() with list() for multiple iteration for Python 3 support
- Tests: Call
Popen.communicate()
only once - Tests: Regenerate render output
- Cleanup: PEP8
- Thanks: @jwilk for getting the GitHub repo to finally show the right Language stats 😃 (#263)
- Patch: Work around a GitHub API header bug (#245)
- Bugfix: Fail cleanly when server address is already in use (#216 - thanks, @davisjam!)
- Bugfix: Fix
--browser
when running on a random port (port 0) (#219) - Bugfix: Add defaults to USERNAME and PASSWORD in case just one is provided (#222)
- Internals: Fix deprecation warning in Python 3.6 by using triple-quoted raw strings in regexp constants (#223 - thanks, @jwilk!)
- Internals: Decouple patchers from renderers
- Docs: Fix typo in API docs (#224 - thanks, @jwilk!)
- Readme: Add Homebrew installation instructions (#201 - thanks, @zmwangx!)
- Readme: Use
pwd
instead ofPWD
in bash shell example (#207 - thanks, @xxd3vin!) - Readme: Use 'index.html' in --export example for searchability
- Readme: Fix link to
offline-renderer
branch (#230 - thanks, @4ndrej!) - Readme: Add Configuration troubleshooting tip and example
- Readme: Add Say Thanks badge 😃
- Thanks: @JasonThomasData for investigating and working with GitHub Support to fix a heading bug (#235)
- Bugfix: Fix
setup.py install
(#199)
- Bugfix: Allow port 0 (#197)
- Bugfix: Fix setup.py build and include octicon files in the build asset (#198)
- Bugfix: Fix
--export
deadlock (#184) - Bugfix: Make
--quiet
truly quiet (#188 - thanks, @kba!) - Bugfix: Allow
--clear
to work without a README file present (#189) - Bugfix: Fix tests by patching sys.exc_clear to have Flask 0.11 work on pypy3 (#190)
- Bugfix: Fix minor version check during patch_svg (#191)
- Bugfix: Add Octicon font until the Readme API inlines SVGs (#192)
- Bugfix: Show '- Grip' in
<title>
only, not in page header (#193) - Readme: Remove duplicated words (#177 - thanks, @jwilk!)
- Readme: Remove download count badge since it's broken (#194)
- Enhancement: Expose
render_inline
through--no-inline
CLI option (#165 - thanks, @mrexmelle!) - Bugfix: Update Readme width to match latest GitHub changes (#167 - thanks, @motevets!)
- Bugfix: Update Octicons to match latest GitHub changes (#167 - thanks, @motevets!)
- Bugfix: Enable SVG support for Python 2.6 and below (#157)
- Readme: Fix Mac OS name (#162 - thanks, @ErikMHummel!)
- Readme: Add tip for generating docs from Readme files (#168 - thanks, @mrexmelle!)
- License: Update year
- Enhancement: Prompt for password when
--user
is provided without a--pass
(#154 - thanks, @mekoda!) - Bugfix: Default to UTF-8 when reading from stdin and there's no encoding (#152)
- Readme: Document
-b
- Readme: Add link to Grip Release Letter for getting notified about future releases
- Readme: Remove Known Issues section since they are now working
- Content is now refreshed when the file changes (#135 - thanks, @markbt!)
- Rename
--gfm
to--user-content
to reduce confusion (#139) - Fix general Readme Task Lists (#149)
- Rearchitect the internals
- Add tests
- Reorder API function arguments for consistency
- Remove
STATIC_URL_PATH
from settings (useGrip
constructor or the ENV variable instead) - Remove
STYLE_URLS_SOURCE
andSTYLE_ASSET_
settings (they're now constants) - Remove
CACHE_URL
setting (the cache URL is now{}/cache.format(GRIPURL)
) - Remove
github_renderer.render_content
(useGitHubRenderer
instead) - Remove
offline_renderer.render_content
(useOfflineRenderer
instead) - Remove
read_binary
andread_text
functions (useio.open
directly) - Remove
resolve_readme
(useDirectoryReader(path, force).filename_for(None)
instead) - Remove
text.read
call inTextReader.read(text)
- Route Grip assets through
/__/grip
by default instead of/
- Raise
ReadmeNotFoundError
when a Readme is not found instead ofValueError
- Require a Unicode string when rendering Markdown
- Set
DEBUG
toFalse
by default in settings - Use UPPERCASE for constants
- Update URL of GitHub assets
- Stop
--browser
from consuming all the sockets (#136 - thanks, @markbt!) - Fix
--browser
to stop waiting when the server is terminated before it listens - Fix
--browser
when listening on0.0.0.0
- Fix Python 2.6
- Fix Python 3.x with
python -m grip
- Allow caching of assets that include query parameters
- Take the
route
argument into account inGrip.render
(this was broken in the oldrender_app
) - Fix rendering Readme containing Unicode by manually decoding UTF-8 from the GitHub response
- Add
Home.md
as a supported default file title for GitHub Wikis - Add
AlreadyRunningError
for callingGrip.run
while the server is already running - Add
ReadmeNotFoundError
for cross-Python-version file-not-found errors - Add
Grip
, a subclass ofFlask
- Add
ReadmeAssetManager
andGitHubAssetManager
- Add
ReadmeReader
,DirectoryReader
,StdinReader
, andTextReader
- Add
ReadmeRenderer
,GitHubRenderer
, andOfflineRenderer
- Add
grip.command.version
for printing version information (similar togrip.command.usage
) - Print version with
-V
- Make
port
andcancel_event
optional arguments inwait_and_start_browser
- Add
start_browser_when_ready
to wait and start the browser in a background thread - Add the
--quiet
CLI option - The
GRIPHOME
ENV variable now expands the user directory (~
), e.g.~/.config/grip
- Add
DEFAULT_API_URL
constant as a fallback for whenapi_url
is not specified inrender_content
orGitHubRenderer
- Add
grip_url
and its fallback constantDEFAULT_GRIPURL
for specifying a route to serve Grip assets from - Remove implicit dependencies in
requirements.txt
- Readme: Add Tips section
- Enhancement: Add
GRIPHOME
environment variable for alternativesettings.py
locations (#117 - thanks, @zmwangx!) - Enhancement: Allow alternative github API URL (#119 - thanks, @dandavison!)
- Enhancement: Change the default port to
6419
to avoid conflicts (#124) - Enhancement: Automatically open grip in a new tab in browser (122 - thanks, @ssundarraj!)
- Enhancement: Only cache styles and assets if all downloads are successful
- Enhancement: Add
--title
option to manually set the title on the rendered page (#125 - thanks, @jlhonora!) - Enhancement: Render tables and lists in
render_offline
mode (#133 - thanks, @akawhy!) - Bugfix: Don't print info messages to
STDOUT
for when exporting toSTDOUT
(#101) - Bugfix: Don't swallow system exceptions
- Bugfix: Use list builder notation instead of
map
to getdefault_filenames
to evaluate it to non-empty on Python 3 - Bugfix: Fix asset retrieval on both Python 2 and 3
- Bugfix: Fix
InsecureRequestWarning
problems (#111, #128) - Bugfix: Fix missing Octicons by properly downloading assets as binary files (#127)
- Bugfix: Add trailing slashes to directories and remove them for files so relative links are correct (#131)
- CLI: Add "Omit this to render as a normal GitHub README file." to help avoid confusion of
--gfm
- Readme: Add note about
^D
and^Z
on Windows (#105) - Cleanup: PEP8
- Bugfix: Encode to UTF-8 before sending text off to GitHub to support non-
latin-1
characters (#99)
- Bugfix: Support non-ascii languages (#86)
- Bugfix: Fix links to header anchors (#94)
- Bugfix: Unpin dependencies so there's no conflict with other globally-installed packages
- Bugfix: Fix missing octicons (#95 - thanks, @madflow!)
- Bugfix: Fix "Could not retrieve styles" error on Windows (#90 - thanks, @alexandre-mbm!)
- Cleanup
- Enhancement: Add
{version}
format argument toCACHE_DIRECTORY
so upgrades can start fresh and also drive cache clearing - Enhancement: Allow exporting to stdout (#73)
- Enhancement: Allow reading from stdin (#72)
- Enhancement: Allow
:<port>
pattern in CLI - Enhancement: Add a favicon (#60)
- Enhancement: Add "GitHub rate limit" page to replace the generic 403 error (#48)
- Enhancement: Add option to clear the cache (#68)
- Enhancement: Allow storing credentials in config file (#61)
- Enhancement: Read user settings from
~/.grip
- Enhancement: Add
__main__.py
for allowing grip to be run as a module withpython -m grip
- Enhancement: Add
--wide
option to render as the old GitHub size (to opt out of #47) - Enhancement: Add title to rendered page to look more like GitHub
- Bugfix: Allow using personal auth tokens without a username
- Bugfix: Show images from their canonical source instead of using GitHub's cache (#50)
- Bugfix: Inline assets into the exported file (#69)
- Bugfix: Cache the assets of the styles, (#56)
- Bugfix: Allow cross-platform newlines in config (#67)
- Bugfix: Fix running from another directory (#36)
- Bugfix: Move
instance_path
to~/.grip
to cache to a non-privileged directory (#39 - thanks, @swsnider!) - Bugfix: Change the default width to match GitHub's new README style (#47)
- Readme: Mention personal access tokens and link to the appropriate GitHub page (#74 - thanks, @davejamesmiller!)
- Readme: Add badges, more usage example, and support and contact information
- Readme: Specify that HTTPS is always used to access the GitHub API
- Readme: Document credentials and rate limit (#46)
- Readme: Document configuration options
- Readme: Clarify command line arguments and
--gfm
- Readme: Add Known Issues section
- Infrastructure and code cleanup
- Enhancement: Add ability to export to a specific file using the CLI (#33)
- Enhancement: Python 3 compatibility (#54 - thanks, @fly!)
- Bugfix: Fix issue styles weren't being downloaded properly (thanks, @fly!)
- Bugfix: Support anchoring to section headers like GitHub (#58)
- Readme: Document rate limits and --user / --pass
- Readme: Refer to the "offline rendering" work
- Readme: Fix 'GitHub' spelling
- Extract and expose constants
- Update requirements
- Feature: Styles are now cached (from the not-yet-released offline rendering) (thanks, @isbadawi!)
- Feature: Add user/pass options for GitHub auth (thanks, @joelittlejohn!)
- Feature: Add export to single HTML file (thanks, @iliggio!)
- Enhancement: Better HTML titles by normalizing the path, always providing a title
- Enhancement: Allow styles to be overridden, with examples in static directory
- Enhancement: Relay GitHub API HTTP errors to browser for debuggability
- Enhancement: Extract render_app and add create_app in API
- Bugfix: Fix manual installs using setup.py (thanks, @briancappello!)
- Bugfix: Fix rendering local images (thanks, @jgallagher!)
- Bugfix: Handle File Not Found errors as 404 when given a directory
- Rename and re-arrange the configuration files
- Update README.md with new features
- Update AUTHORS.md format
- Upgrade requirements
- Simplify code
- Add AUTHORS.md for attributing credit
- Feature: Can now click hyperlinks to render other files without re-running (thanks, @vladwing!)
- Update GitHub CSS regular expression
- Upgrade path-and-address
- Use exact versions in requirements
- Readme: Clarify and add examples
- Bugfix: Typo in requirements
- Clean up setup.py
- CLI: now accepts an address, not just a port
- CLI: now accepts --gfm and --context= arguments for rendering GitHub Flavored Markdown
- API:
serve
function now acceptsNone
for its arguments to indicate 'use default' - API:
serve
function now accepts a 'host' - API:
serve
now resolves the default file when given a path - Now using docopt for more advanced argument processing
- Now using path-and-address for humanistic path / address handling
- Issue #5: Fixed the installer to work in the case where the requirements are not already installed
- GitHub styles are now retrieved dynamically when run, instead of using the outdated styles from the config
- Added the port command-line argument
- First public preview release