All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [0.6.0] - 2021-08-24
- [0.5.1] - 2021-06-15
- [0.5.0] - 2021-05-18
- [0.4.0] - 2021-03-24
- [0.3.1] - 2021-03-01
- [0.3.0] - 2021-02-08
- [0.2.2] - 2021-02-01
- [0.2.1] - 2021-01-22
- 0.2.0 - 2021-01-21
- [0.1.2] - 2021-01-20
- [0.1.1] - 2021-01-20
- [0.1.0] - 2021-01-01
- Full command-based CLI with many more options, including separate
start
andrun
commands - Command
get-config-info
to print information about the config and list endpoints - Command
install-service
to automatically install a systemd service to run the bot - Command
generate-config
to generate a user config file with example defaults - Command
validate-config
to validate the current config file, offline or online - Command
cycle-threads
to post new versions of the indicated threads --debug
flag, to control whether user-friendly error messages or full tracebacks are printed- Config option
approve_new
to control if new posted threads are automatically approved (default) "auto"
option forpin_mode
(default) will unpin the old thread and pin the new if currently pinnedtruncate_lines
option for source and target endpoints, to truncate to a specified number of lines- More fillable/replaceable variables in thread titles
- Comprehensive offline and online functional tests exercising the options of every supported command
- Exhaustive suite of pre-commit checks to validate correctness, best-practices, conventions and style
- Tests, linting and analysis all run across a matrix of platforms/versions in CIs via Github Actions
- Reorganize much of user and dynamic config for consistency and future extensibility
- Use Platformdirs to install config and state files into platform-appropriate locations
- Validate config and resync all sources for the first run, to handle any config changes
- Use Pydantic for config, allowing robust access and user-friendly validation
- Vastly improved error handing of almost all areas, with much more helpful, user friendly messages
- Safety run multiple instances via locking, to enable new commands and avoid strange bugs
- Enable thread redirect in OP and sticky by default (configurable)
- Inject start and end comments into thread targets, to allow easily adding extra content
- Formally rename everything to Sub Manager, with consistent naming everywhere
- Refactor from a monolithic script into a modular package, greatly improving organization
- Make a Python package for installing from Github or from PyPI and add lint and test extras
- Package is now fully statically typed, improving correctness, robustness and documentation
- Add/greatly improve docs including Readme, Contributing Guide, security policy and more
- Auto-generate pinned requirements files for reproducible dev and production installation
- Issues with hierarchical config defaults not getting inherited correctly
- Not syncing new targets until a change is made in the source
- Not injecting appropriate line breaks in targets for some sources, causing formatting issues
- Many other edge-case bugs and issues
- Config file no longer generated automatically if its not present, use
generate-config
instead - Drop previous support for token managers, in line with Reddit and PRAW changes
- Fix a bug with disabling top-level sync pair items
- Fix docstrings and add to more functions
- Multi-account support, per-source, target and sync/thread
- Multi-subreddit support with similar granularity, to allow sync between subs
- Ability to leave a customizable OP message and/or sticky when replacing a thread
- Flexible config inheritance (source/target <- task <- module <- global)
- Full refresh token handling to support new Reddit OAUTH changes
- Fully reorganize config to be much cleaner and more flexible
- Majorly refactor code for much greater extendability going forward
- Further update README, ROADMAP, documentation and metafiles
- Fixed and floating time intervals for posting megathreads
- Arbitrary integer periods for floating post intervals
- Support for N weekly posting frequency
- Refactor and implement much more sophisticated post interval parsing
- Update documentation to describe configuration and post intervals in more detail
- Update roadmap to reflect re-prioritization
- Replace
tomlkit
withtoml
to fix strange bugs with PRAW
- Fix bug with unsticky of old megathread not having mod permissions
- Fix bug with not updating megathread URLs correctly
- Optimize link update to use generator
- Fix formatting bug in README
- Sync to/from New Reddit sidebar widgets
- Sync to/from thread OPs
- Sync to new Reddit menus
- Support for managing multiple independent megathreads
- Full sync endpoint features for megathreads
- Broader and more granular enable/disable options
- CHANGELOG tracking releases
- Use sync module as backend for megathread update
- Split static and dynamic config files and objects
- Make static config human-editable TOML
- Reorganize and streamline config schema
- Hugely refactor code
- Support for updating megathread links in wiki, sidebar/menu and removal messages
- Basic error handling (restart, etc) to systemd service unit (to recover from random Reddit errors)
- Set unbuffered output so the systemd journal/syslog output is updated in real time
- Fix reliability issues with unstickying and stickying the correct sticky
- Option to enable/disable megathread manager module
- Requirements.txt for dependencies
- Systemd service unit
- README with documentation
- ROADMAP with project roadmap
- LICENSE with MIT License
- Git metafiles
- Recheck date more reliably every run
- New Sync Manager module
- Sync arbitrary source wiki pages to target wiki pages
- Sync full pages or subsections designated by special marker comments
- Support multiple targets per source page with custom settings
- Customizable pattern replacements (i.e. for reformatting, etc) between them
- Accompanying config for sync manager
- Major code refactoring to support current and future changes
- Fix various minor bugs
- Automatically update config with newly added options
- Cache current thread for better performance
- Further refactor session objects
- Ability to run in a loop at a set interval
- Refactor config/variable names to make more sense
- Fix various minor bugs
- Create and approve new megathreads at a customizable interval
- Sync current metathread content from wiki page when changed
- Generate fully customizable title with variable replacement
- Load and sync post text drawn from a wiki page
- Customizable replace patterns for post text
- Pin the new thread and unpin the old thread
- Supports any subreddit; no hardcoding
- Session and timestamp caching to avoid unnecessary requests
- Controlled from automatically-generated JSON config file
- Can be run from a custom config file for multiple instances
- Basic CLI with run, version and help