Internal
Public Access
Update README changelog, remove Firebug IT branding, retire dead mobile middleware
README.md: backfill the Changelog with the 2026.9.5, 2026.8.31.1, 2026.8.31, and v1.2.0 releases that were missing (it jumped straight from 1.0.0 to 1.1.0). Also correct the stale "Mobile App Support"/"Mobile App Integration" sections - the native Android app is retired, and the sync protocol they describe now powers the offline PWA instead. Remove Firebug IT branding/contact info across README.md, API.md, and the site footer, and drop the stale tasks.firebugit.com fallback from development.py's ALLOWED_HOSTS/CSRF_TRUSTED_ORIGINS. AllowMobileAppFramingMiddleware detected the native app via a 'com.firebugit.keepitgoing' User-Agent check to allow WebView iframe embedding. With that app retired, replaced it with SecurityHeadersMiddleware, which applies the same X-Frame-Options/CSP headers unconditionally instead of only for non-mobile requests - same protection for real users, dead branch and dead branding gone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
6791f008e9
commit
f41939983a
@@ -39,7 +39,7 @@ A powerful Django-based task management system with time tracking, tag organizat
|
||||
|
||||
### API & Sync
|
||||
- **RESTful API**: Full REST API for programmatic access
|
||||
- **Mobile App Support**: Sync protocol for Android app
|
||||
- **Offline-First Sync Protocol**: Bidirectional sync with conflict resolution, powering the offline PWA
|
||||
- **Real-time Updates**: Task changes sync across devices
|
||||
- **Conflict Resolution**: Handles offline changes and syncing
|
||||
|
||||
@@ -72,7 +72,7 @@ A powerful Django-based task management system with time tracking, tag organizat
|
||||
|
||||
1. **Clone the repository**
|
||||
```bash
|
||||
git clone https://git.firebugit.com/Firebug_IT/KeepItGoingServer.git
|
||||
git clone https://git.darksingularity.org/DarkSingularity/KeepItGoingServer.git
|
||||
cd KeepItGoingServer
|
||||
```
|
||||
|
||||
@@ -423,9 +423,9 @@ Key environment variables (see `.env.example`):
|
||||
#### Core Settings
|
||||
- `SECRET_KEY` - Django secret key (required in production, generate with `python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"`)
|
||||
- `DEBUG` - Enable debug mode (True/False, must be False in production)
|
||||
- `ALLOWED_HOSTS` - Comma-separated list of allowed hosts (e.g., `tasks.firebugit.com,localhost`)
|
||||
- `CSRF_TRUSTED_ORIGINS` - HTTPS origins for CSRF (e.g., `https://tasks.firebugit.com`)
|
||||
- `SITE_DOMAIN` - Domain name for email links (e.g., `tasks.firebugit.com`)
|
||||
- `ALLOWED_HOSTS` - Comma-separated list of allowed hosts (e.g., `tasks.darksingularity.org,localhost`)
|
||||
- `CSRF_TRUSTED_ORIGINS` - HTTPS origins for CSRF (e.g., `https://tasks.darksingularity.org`)
|
||||
- `SITE_DOMAIN` - Domain name for email links (e.g., `tasks.darksingularity.org`)
|
||||
|
||||
#### Database
|
||||
- `DATABASE_URL` - Database connection string (optional, overrides settings)
|
||||
@@ -441,7 +441,7 @@ Key environment variables (see `.env.example`):
|
||||
- `EMAIL_USE_SSL` - Use SSL (True/False, use True for port 465)
|
||||
- `EMAIL_HOST_USER` - SMTP username/email
|
||||
- `EMAIL_HOST_PASSWORD` - SMTP password or API key
|
||||
- `DEFAULT_FROM_EMAIL` - From email address (e.g., `KeepItGoing <noreply@firebugit.com>`)
|
||||
- `DEFAULT_FROM_EMAIL` - From email address (e.g., `KeepItGoing <noreply@darksingularity.org>`)
|
||||
- `SERVER_EMAIL` - Server error email address
|
||||
|
||||
#### Email Verification Settings
|
||||
@@ -642,7 +642,7 @@ sudo useradd -m -s /bin/bash keepitgoing
|
||||
sudo su - keepitgoing
|
||||
|
||||
# Clone repository
|
||||
git clone https://git.firebugit.com/Firebug_IT/KeepItGoingServer.git
|
||||
git clone https://git.darksingularity.org/DarkSingularity/KeepItGoingServer.git
|
||||
cd KeepItGoingServer
|
||||
|
||||
# Create virtual environment
|
||||
@@ -665,9 +665,9 @@ cat > .env << 'EOF'
|
||||
# Django Settings
|
||||
SECRET_KEY=GENERATE_WITH_get_random_secret_key
|
||||
DEBUG=False
|
||||
ALLOWED_HOSTS=tasks.firebugit.com,localhost,127.0.0.1
|
||||
CSRF_TRUSTED_ORIGINS=https://tasks.firebugit.com
|
||||
SITE_DOMAIN=tasks.firebugit.com
|
||||
ALLOWED_HOSTS=tasks.darksingularity.org,localhost,127.0.0.1
|
||||
CSRF_TRUSTED_ORIGINS=https://tasks.darksingularity.org
|
||||
SITE_DOMAIN=tasks.darksingularity.org
|
||||
|
||||
# Database Configuration
|
||||
# Choose ONE of the following based on your database from Step 2:
|
||||
@@ -688,8 +688,8 @@ EMAIL_PORT=587
|
||||
EMAIL_USE_TLS=True
|
||||
EMAIL_HOST_USER=your-email@gmail.com
|
||||
EMAIL_HOST_PASSWORD=your-app-password
|
||||
DEFAULT_FROM_EMAIL=KeepItGoing <noreply@firebugit.com>
|
||||
SERVER_EMAIL=server@firebugit.com
|
||||
DEFAULT_FROM_EMAIL=KeepItGoing <noreply@darksingularity.org>
|
||||
SERVER_EMAIL=server@darksingularity.org
|
||||
|
||||
# Email Verification
|
||||
EMAIL_VERIFICATION_TOKEN_EXPIRY_HOURS=24
|
||||
@@ -919,7 +919,7 @@ upstream keepitgoing {
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name tasks.firebugit.com;
|
||||
server_name tasks.darksingularity.org;
|
||||
|
||||
# Redirect HTTP to HTTPS
|
||||
return 301 https://$server_name$request_uri;
|
||||
@@ -927,11 +927,11 @@ server {
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name tasks.firebugit.com;
|
||||
server_name tasks.darksingularity.org;
|
||||
|
||||
# SSL Configuration
|
||||
ssl_certificate /etc/letsencrypt/live/tasks.firebugit.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/tasks.firebugit.com/privkey.pem;
|
||||
ssl_certificate /etc/letsencrypt/live/tasks.darksingularity.org/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/tasks.darksingularity.org/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
@@ -985,7 +985,7 @@ sudo systemctl restart nginx
|
||||
|
||||
```bash
|
||||
# Obtain SSL certificate
|
||||
sudo certbot --nginx -d tasks.firebugit.com
|
||||
sudo certbot --nginx -d tasks.darksingularity.org
|
||||
|
||||
# Certbot will automatically configure nginx
|
||||
# Certificate auto-renews via cron
|
||||
@@ -1004,7 +1004,7 @@ sudo ufw status
|
||||
#### Step 10: Initial Admin User and Approval
|
||||
|
||||
```bash
|
||||
# Log in to the web interface at https://tasks.firebugit.com/admin
|
||||
# Log in to the web interface at https://tasks.darksingularity.org/admin
|
||||
# Use the superuser credentials created in Step 3
|
||||
|
||||
# If ALLOW_SELF_REGISTRATION=True and new users register:
|
||||
@@ -1115,7 +1115,7 @@ from django.core.mail import send_mail
|
||||
send_mail(
|
||||
'Test Subject',
|
||||
'Test message.',
|
||||
'noreply@firebugit.com',
|
||||
'noreply@darksingularity.org',
|
||||
['your-email@example.com'],
|
||||
)
|
||||
# Check for any errors
|
||||
@@ -1198,9 +1198,9 @@ sudo tail -f /var/log/nginx/access.log
|
||||
sudo journalctl -u keepitgoing -f
|
||||
```
|
||||
|
||||
## Mobile App Integration
|
||||
## Offline-First Sync
|
||||
|
||||
This server works with the KeepItGoing Android app via the sync endpoint.
|
||||
The sync endpoint (`/api/sync/`) powers the offline PWA's background sync. It was originally built for a native Android app, which has since been retired in favor of the PWA, but the protocol itself is unchanged.
|
||||
|
||||
**Sync Protocol:**
|
||||
- Client sends current state and last sync timestamp
|
||||
@@ -1219,16 +1219,63 @@ This server works with the KeepItGoing Android app via the sync endpoint.
|
||||
## License
|
||||
|
||||
Proprietary - All Rights Reserved
|
||||
Copyright (c) 2025 Firebug IT
|
||||
Copyright (c) 2026 Keith Smith
|
||||
|
||||
## Support
|
||||
|
||||
For issues and questions:
|
||||
- Create an issue in the repository
|
||||
- Email: keith@firebugit.com
|
||||
- Email: keithsmith@darksingularity.org
|
||||
|
||||
## Changelog
|
||||
|
||||
### 2026.9.5
|
||||
|
||||
**New Features:**
|
||||
- Installable Progressive Web App (PWA): app manifest, service worker, and offline fallback pages
|
||||
- Web Push notifications
|
||||
- Full offline task management: create, edit, complete tasks, manage subtasks and tags, and track time while offline, with automatic sync once back online
|
||||
- Per-task reminder notifications - "before due", "due now", and "overdue" - delivered by email and/or push, timed per task and configurable via the profile's Default Reminder setting
|
||||
|
||||
**Bug Fixes:**
|
||||
- Overdue status now accounts for due time, not just due date
|
||||
- Background sync now runs on every page load instead of being throttled, so the offline cache can no longer serve stale data (e.g. a tag deleted online reappearing offline)
|
||||
- Offline mode now matches the online dashboard: correct subtask nesting, tag sidebar, overdue styling, and full task editing/tags/time tracking
|
||||
- Fixed a crash when editing a task's due date/time
|
||||
- Service worker precache now reliably picks up updated files after a deploy instead of a stale cached copy
|
||||
- "Overdue" and "due now" notifications no longer arrive at the same instant - overdue now waits an hour
|
||||
- Changing the reminder-timing setting now retroactively updates reminders already scheduled on existing tasks
|
||||
|
||||
### 2026.8.31.1
|
||||
|
||||
- Custom recurrence patterns: recurring tasks can repeat on specific days of the week, an interval of weeks (e.g. every other Wednesday), a specific day of the month, or the Nth weekday of the month (e.g. every second Tuesday)
|
||||
- New "Custom" recurrence builder in the task create/edit UI generates the underlying RRULE pattern automatically
|
||||
|
||||
### 2026.8.31
|
||||
|
||||
**New Features:**
|
||||
- Notification system simplified to a single daily task-due email, sent within each user's local morning window
|
||||
- Self-registration can now be enabled/disabled via configuration (disabled by default)
|
||||
|
||||
**Bug Fixes:**
|
||||
- Task sort now defaults to due date instead of raw/unsorted ordering
|
||||
- Priority sort now orders correctly (high to low / low to high)
|
||||
- Recurring tasks no longer create duplicate instances on completion
|
||||
- Daily email timing now correctly accounts for all user timezones
|
||||
- Overdue calculation now uses the user's local timezone
|
||||
- Fixed Celery worker/beat health check issues
|
||||
|
||||
**Infrastructure:**
|
||||
- Docker Compose now builds from the git repository
|
||||
- Replaced pytz with zoneinfo for timezone handling
|
||||
|
||||
### v1.2.0 - Recurring Tasks
|
||||
|
||||
- Fully functional recurring tasks (daily, weekly, biweekly, monthly, yearly)
|
||||
- Automatic creation of next task instance on completion
|
||||
- Recurrence end date support
|
||||
- Hourly background job to ensure no missed recurrences
|
||||
|
||||
### Version 1.1.0 (2025-01-22)
|
||||
- **Email Verification System**: Users must verify email before logging in
|
||||
- **Admin Approval Workflow**: Admins approve new users via Django admin
|
||||
@@ -1249,7 +1296,3 @@ For issues and questions:
|
||||
- Web interface with dark mode
|
||||
- Responsive design
|
||||
- RESTful API
|
||||
|
||||
---
|
||||
|
||||
Built with ❤️ by Firebug IT
|
||||
|
||||
Reference in New Issue
Block a user