Docs: refresh README and roadmap
This commit is contained in:
@@ -9,13 +9,16 @@ BusyMirror mirrors meetings between your calendars so your availability stays co
|
|||||||
- Private (hide details): mirrors placeholders with prefix + placeholder title (e.g., "🪞 Busy").
|
- Private (hide details): mirrors placeholders with prefix + placeholder title (e.g., "🪞 Busy").
|
||||||
- Mark Private: mirrors prefix + real title, but marks events Private on supported servers (best-effort).
|
- Mark Private: mirrors prefix + real title, but marks events Private on supported servers (best-effort).
|
||||||
- DRY-RUN mode: see what would be created/updated/deleted without writing.
|
- DRY-RUN mode: see what would be created/updated/deleted without writing.
|
||||||
|
- Activity Log in the app plus persistent file logging on disk.
|
||||||
|
- In-app scheduling: install or remove a `launchd` LaunchAgent from the `Scheduled runs` section.
|
||||||
- Overlap modes: `allow`, `skipCovered`, `fillGaps`.
|
- Overlap modes: `allow`, `skipCovered`, `fillGaps`.
|
||||||
- Merge adjacent events with a configurable gap.
|
- Merge adjacent events with a configurable gap.
|
||||||
- Time window controls (days back/forward) and Work Hours filter.
|
- Time window controls (days back/forward) and Work Hours filter.
|
||||||
- Accepted-only filter (mirror your accepted meetings only).
|
- Accepted-only filter (mirror your accepted meetings only).
|
||||||
- Cleanup of placeholders, including auto-delete of mirrors whose source disappeared.
|
- Cleanup of placeholders, including auto-delete of mirrors whose source disappeared.
|
||||||
|
- Refresh Calendars prunes stale saved calendars and routes when calendars are removed from the system.
|
||||||
- Prefix-based tagging and loop guards to prevent re-mirroring mirrors.
|
- Prefix-based tagging and loop guards to prevent re-mirroring mirrors.
|
||||||
- Settings: autosave/restore, Import/Export JSON.
|
- Settings: autosave/restore, Import/Export JSON, saved routes for scheduled/headless runs.
|
||||||
|
|
||||||
## Why
|
## Why
|
||||||
Use one calendar’s confirmed meetings to block time in other calendars (e.g., corporate iPad vs. personal devices).
|
Use one calendar’s confirmed meetings to block time in other calendars (e.g., corporate iPad vs. personal devices).
|
||||||
@@ -48,6 +51,7 @@ See `CHANGELOG.md` for notable changes.
|
|||||||
## Logs
|
## Logs
|
||||||
- BusyMirror now writes a persistent log file to `~/Library/Logs/BusyMirror/BusyMirror.log`.
|
- BusyMirror now writes a persistent log file to `~/Library/Logs/BusyMirror/BusyMirror.log`.
|
||||||
- When the file grows large, the previous file is rotated to `~/Library/Logs/BusyMirror/BusyMirror.previous.log`.
|
- When the file grows large, the previous file is rotated to `~/Library/Logs/BusyMirror/BusyMirror.previous.log`.
|
||||||
|
- `launchd` stdout/stderr for scheduled runs are also written in the same folder.
|
||||||
- In the UI, use `Reveal Log File` to open the current log directly in Finder.
|
- In the UI, use `Reveal Log File` to open the current log directly in Finder.
|
||||||
|
|
||||||
## Scheduling
|
## Scheduling
|
||||||
@@ -57,7 +61,7 @@ See `CHANGELOG.md` for notable changes.
|
|||||||
- `/Applications/BusyMirror.app/Contents/MacOS/BusyMirror --run-saved-routes --write 1 --exit`
|
- `/Applications/BusyMirror.app/Contents/MacOS/BusyMirror --run-saved-routes --write 1 --exit`
|
||||||
- This is more stable than index-based `--routes`, because it uses the routes and per-route options you already configured in the UI.
|
- This is more stable than index-based `--routes`, because it uses the routes and per-route options you already configured in the UI.
|
||||||
- Hourly schedules use `launchd` `StartInterval`; daily and weekday schedules use `StartCalendarInterval`.
|
- Hourly schedules use `launchd` `StartInterval`; daily and weekday schedules use `StartCalendarInterval`.
|
||||||
- You can remove the job from the same UI with `Remove Schedule`.
|
- You can remove the job from the same UI with `Remove Schedule`, and inspect the generated plist with `Reveal LaunchAgent`.
|
||||||
- Note: scheduled headless runs depend on Calendar permission being granted to the installed app. Because these local builds are unsigned, macOS may require re-granting permission after replacing the app bundle with a new build.
|
- Note: scheduled headless runs depend on Calendar permission being granted to the installed app. Because these local builds are unsigned, macOS may require re-granting permission after replacing the app bundle with a new build.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|||||||
@@ -8,10 +8,13 @@
|
|||||||
- Work Hours filter and title-based skip filters
|
- Work Hours filter and title-based skip filters
|
||||||
- Privacy: placeholders with prefix + customizable title
|
- Privacy: placeholders with prefix + customizable title
|
||||||
- 1.3.0: Mark Private option (global + per-route)
|
- 1.3.0: Mark Private option (global + per-route)
|
||||||
|
- 1.3.4: persistent file logging, stale-calendar pruning on refresh, clickable top-bar mode toggle
|
||||||
|
- 1.3.6: in-app scheduling via `launchd` with hourly/daily/weekday modes
|
||||||
|
- 1.3.6: generated macOS app icon set and packaged release assets
|
||||||
|
|
||||||
## Next
|
## Next
|
||||||
- Auto-refresh calendars on `EKEventStoreChanged` (live refresh button-less)
|
- Auto-refresh calendars on `EKEventStoreChanged` (live refresh button-less)
|
||||||
- Hint near "Mirror Now" indicating run mode (Routes vs Manual)
|
- Better scheduled-run diagnostics in the UI (last run / last error / next run)
|
||||||
- Better server-side privacy mapping (per-provider heuristics)
|
- Better server-side privacy mapping (per-provider heuristics)
|
||||||
|
|
||||||
## Then
|
## Then
|
||||||
|
|||||||
Reference in New Issue
Block a user