What’s new at CVAS
A running log of features, fixes, and improvements to the CVAS website. Updates are typically posted by the officers as they ship.
-
✨ Feature May 19, 2026 Password policy updated
Standard rules for every new password:
- At least 12 characters total
- At least 1 uppercase letter
- At least 1 lowercase letter
- At least 2 digits
- At least 2 special characters
- Not in the public breach database
Rotation: every 6 months, OR every 12 months if you have two-factor authentication enabled. The full rule list now appears as a yellow callout right above the New-password field on every form, and the live meter below the field shows current character count, strength, and an estimated time to crack as you type.
-
✨ Feature May 19, 2026 Weak password? Set up 2FA instead.
Passwords no longer have to meet any minimum length. Pick whatever you can remember. The only hard block is a password that has appeared in a known data breach (blocked at submit). However: anything under 12 characters is considered weak, and the account is flagged 'must use 2FA'. On the next page load you'll be redirected to /2fa-setup to enrol a security key or an authenticator app, and the site is unreachable until you do. The moment you enrol 2FA the flag clears and you're back to normal — long password with no 2FA still works perfectly. End of story: use a strong password OR a second factor. One of the two, your choice.
-
✨ Feature May 19, 2026 Password policy: simpler, stronger, no rotation
We replaced the old 16-character, four-class-quota rule with the modern recommendation: any combination of 12+ characters works. Passphrases like 'correct horse battery staple' are not just allowed, they're encouraged — they're easier to remember and significantly harder for an attacker to crack than a 16-character alphabet-soup string.
Forced password rotation is OFF. Periodic password changes have been shown to push people toward weaker patterns (Password1!, Password2!, ...) and have been formally discouraged in NIST guidance for years.
Alongside the policy change:
- A 'show password' eye button now sits inside every password field so you can verify what you typed.
- New-password fields show a live strength bar and an estimated time to crack updating as you type.
- New passwords are checked against the known-breached password list (HaveIBeenPwned, k-anonymity — only the first 5 chars of the hash leave our server). Reused-from-a-breach passwords are blocked. -
📝 Note May 19, 2026 Gallery images now served from local storage
Member gallery images moved from the network-attached storage mount to the web server's local disk for faster reads, lower latency, and one fewer moving part. All existing images migrated (24 files, 128 MB), no URLs changed, no member action required. The local filesystem auto-grows as the gallery fills up.
-
📝 Note May 19, 2026 Members page: corrected perks list
Three updates to the member-perks list on /members/: the 4-inch refractor was incorrectly listed as mounted at Indian Hill — it's actually a Vixen available for loan, now noted with the loaner-telescope line. Added a new perk for hosting high-resolution astrophotography on our in-house gallery (full revisions, plate-solve, equipment + acquisition logs). And the annual summer convention bullet now links to the calendar.
-
🐛 Fix May 19, 2026 Gallery image page: tighter mobile layout
On phones the image stage was locked to 60% of the screen, leaving a big empty void between a landscape frame and the metadata below. The stage now auto-sizes to the image (capped at 70% of the screen) so the revision tabs and Integration / Equipment sections sit right under the image instead of after a black gap. Prev/next arrows moved to the bottom corners on mobile so they don't float in dead space.
-
📝 Note May 19, 2026 Gallery link removed from the site header
The top-of-page nav no longer has a Gallery link. The gallery is still reachable from the 'From the CVAS gallery' section and the Member gallery tile on the home page, and from /gallery directly.
-
✨ Feature May 19, 2026 Home page now features our own gallery
The home page now leads with a 'From the CVAS gallery' section pulled directly from /gallery: a hero card for the current Image of the Day plus a tile strip of the latest member uploads. The 'Astrophotography' connect tile in the Stay-connected grid now points at /gallery with copy describing our in-house gallery.
-
✨ Feature May 19, 2026 Plate-solving is now fully automatic
Every image you upload is now auto-submitted to Astrometry.net the moment processing finishes. You no longer have to click 'Plate-solve now' or 'Check status'. The edit page polls in the background while the solve runs and reloads automatically when it's done; a per-minute server-side cron also keeps things moving if you close the tab.
When the solve finishes (or fails) you get a CVAS notification with a link straight to the image. The Sky coordinates section now defaults to read-only fields filled in by Astrometry; a 'Manual override' disclosure is collapsed by default and only auto-opens on failure for the rare image Astrometry can't solve.
-
✨ Feature May 19, 2026 Pick any location on Earth for an image
The Location field on an image now suggests anywhere in the world, not just sites already in CVAS's saved list. Start typing a city, observatory, dark-sky park, or country and the dropdown surfaces real candidates from OpenStreetMap with their coordinates, city, state, and country. Picking one auto-fills those fields and stores real lat/lng on save — no more being limited to club sites for travelers, snowbirds, or remote imagers.
The Bortle field stays manual (the geocoder doesn't know sky quality). Existing CVAS locations still appear first when there's a name match, so nothing changes for routine club shoots.
-
✨ Feature May 19, 2026 Click sidebar items on a gallery image to search
Every metadata pill on the right-hand sidebar of a gallery image is now a search link:
- Location, Bortle class, Data source (Backyard / Traveler / Remote observatory)
- Hemisphere (N/S), Constellation, RA, Dec, Field of view, Pixel scale, Position angle
- Each equipment item (telescope, camera, mount, filter, accessory, software, guide scope, guide camera)
Clicking takes you to the gallery filtered to other images that match. Numeric astronomy values use a tolerance window: RA/Dec within ~5 deg, FOV within +/-30%, pixel scale within +/-0.3 arcsec/px, position angle within +/-15 deg. An 'active filters' bar at the top of the gallery shows which filters are on and lets you clear them one chip at a time.
Fixed at the same time: the '+ Upload an image' button on the gallery index was rendering at h1 size because it was inside the heading; it is now sized like a normal button.
-
🐛 Fix May 19, 2026 Watermark applies to every revision
When you toggle a watermark on, it is now re-applied to every revision of the image (e.g. Original AND Starless), not only the default revision. New revisions you upload also get the watermark automatically if the parent image has watermarking enabled. Existing watermarked images have been re-stamped across all their revisions.
-
✨ Feature May 19, 2026 New: in-house member gallery
Major new feature — CVAS now hosts member astrophotography in-house.
Highlights:
- Upload JPG / PNG / TIFF / FITS / MP4 up to 300 MB per file
- Per-image metadata: target, subject type, data source, location (with typeahead + create), license, external URL, collaborators, key/value tags
- Up to 10 revisions per image (Final / B / C / Starless / Annotated / ...) with mouse-over swap
- Per-user equipment library + saved rigs (telescopes, cameras, mounts, filters, accessories, software, guide scope, guide camera)
- Multi-session acquisition log with auto-summary of total integration time
- Per-user collections to group images
- Access controls: visibility tier (public / paying / members / me / nobody), max-zoom cap (1x / 2x / 4x / 8x), download permission, comments on/off
- Server-side text watermark with position, size, and opacity
- Public gallery with sort + filter, per-target page, per-user profile page
- Threaded comments, likes, member follows
- Full-screen lightbox viewer with wheel-zoom and pan
- Image of the day pick (officer + admin only)
- Storage: ~34 TB available on the CVAS NAS via NFSPaid members only can upload; gallery is browsable by everyone.
-
✨ Feature May 18, 2026 New password + 2FA security policy
Significant security upgrade across the site. CVAS now enforces a stronger password policy and requires two-factor authentication for officers and admins.
Members get a 90-day grace window to update their existing password; after that, login will prompt for a policy-compliant password. The full ruleset is shown on every password form, and the site checks each new password privately against known-breach databases.
Enabling 2FA extends how long a password stays valid — see your profile page for details. Supported 2FA methods: authenticator app (TOTP) and hardware security keys (FIDO2 / WebAuthn — YubiKey, Face ID, Windows Hello, etc.). SMS codes are not accepted.
We strongly recommend using a password manager. CVAS suggests Bitwarden — free, open source, available on every platform.
-
✨ Feature May 18, 2026 /sky: Day-at-a-glance bar now shows clouds, rain, and snow
The horizontal Day-at-a-glance twilight gradient now has a weather overlay. Each hour with cloud cover gets a soft cloud blob whose opacity tracks the cloud-cover percentage (so 90 percent cover looks genuinely overcast and 20 percent looks like just a wisp). Hours with a rain WMO code get an animated short-blue-dash rain pattern; snow hours get drifting white dots; fog gets a flat grey wash. Clouds drift very slowly, rain falls, snow drifts diagonally. The red 'now' marker still sits on top. Animations are paused for prefers-reduced-motion users. Data is today's hourly forecast from Open-Meteo, cached 30 min.
-
✨ Feature May 18, 2026 /sky: GOES-19 Sandwich imagery added
Added a GOES-19 Sandwich (visible + longwave-IR overlay) animated loop alongside the Geocolor view in the live imagery section. Sandwich makes thunderstorm tops, jet-stream cirrus, and cloud-top temperatures pop in 3D — useful day and night, where Geocolor is more interpretable in daylight. 600x600 NOAA STAR GIF, auto-refreshes every 10 minutes while the tab is active.
-
✨ Feature May 18, 2026 /sky: space weather, air quality, meteor showers, NWS forecast
Four new at-a-glance cards on the Tonight's Sky page:
• Space weather — live planetary Kp index with aurora-visibility plain English for our latitude, peak Kp predicted in the next 72 hours, current solar-wind speed, GOES X-ray flux class, and the last few M/X-class flares from NOAA SWPC.
• Air quality — US AQI with severity label, PM2.5 and PM10, Aerosol Optical Depth (the single best predictor of sky transparency), dust, and UV index from the Open-Meteo Air Quality API.
• Active meteor showers — which IMO-calendar shower is active tonight, peak date, ZHR, radiant constellation, and live moon-interference rating from current illumination.
• NWS forecast — plain-English 'Tonight / Tomorrow / Tomorrow Night / Tuesday' periods straight from the Cleveland NWS office via api.weather.gov, with the detailed first-period discussion expanded.
All four sources are free, no API key, and degrade gracefully if any upstream is down. Space weather cached 15 min; the rest cached 30 min.
-
📝 Note May 17, 2026 /sky: hourly Stargazing conditions, redone as a slider
Replaced the cramped 24-column stargazing table with a single slider you drag (or tap, or arrow-key) through the next 24 hours. The selected hour shows its overall rating (Good / Marginal / Poor with a 0-100 score), then big readouts for cloud cover, high clouds, humidity, dew spread, wind, wind gusts, precipitation chance, and temperature, each with a goodness bar that recolors green-yellow-red. The slider track is a tinted strip of all 24 upcoming hours — at a glance you can see when conditions improve. Dimmer marks are daytime, brighter marks are nighttime. Same Open-Meteo data, 30-min cache, no third-party JS.
-
✨ Feature May 17, 2026 /sky: 7-night forecast tile
A new Weather tile next to the existing Weather card shows the next 7 nights at a glance, with bar-gauge ratings for cloud cover, atmospheric seeing, and sky transparency. Each metric is shown as a green-to-red bar with a white tick marker — a quick way to skim which night is worth setting up a scope for. Data is averaged across each night's sunset-to-sunrise window from Open-Meteo, cached for 30 minutes, and free of any third-party JavaScript or tracking. 'See more' jumps down to the existing detailed hourly grid.
-
✨ Feature May 17, 2026 Live-updating GOES-19 satellite + KCLE radar imagery on /sky
The Great Lakes GOES-19 Geocolor satellite view is now the full animated loop from NOAA STAR (12 MB GIF) and auto-refreshes every 10 minutes while the /sky tab is active. The KCLE NWS radar loop next to it auto-refreshes every 2 minutes. Both pause when the tab is hidden (saves bandwidth and respects NOAA bandwidth policy) and refresh immediately when you return to the tab. Imagery is preloaded into a hidden buffer so the swap is flash-free.
-
🐛 Fix May 17, 2026 /sky: shorter window + Astrospheric loading skeleton
Two tweaks: (1) The stargazing-conditions grid now spans 24 hours instead of 48, so it fits without horizontal scrolling on most viewports. (2) The Astrospheric embed container shows a CSS shimmer skeleton (chart-shaped placeholder bars with an animated highlight sweep) while the third-party widget loads, instead of bare Loading forecast text. The underlying widget still re-initializes on each /sky visit (third-party JS limitation), but the visual flash is gone — the page renders with a steady chart-shaped placeholder until the real widget mounts. Honors prefers-reduced-motion.
-
✨ Feature May 17, 2026 /sky: hourly stargazing-conditions grid
New Stargazing conditions section on /sky shows the next 48 hours as a compact color-coded grid — green/yellow/red cells for cloud cover, high clouds (transparency proxy), humidity, dew spread, wind, precip probability, plus a composite overall stargazing score row at top. Data comes from Open-Meteo. Night-time hours have dark column headers, day-time hours have an amber tint. Hover any cell for exact values. Cached server-side for 30 minutes.
-
🐛 Fix May 17, 2026 Calendar: event descriptions no longer truncated
The upcoming-events list on /calendars used to cap each events public_summary at 320 characters with an ellipsis. Long descriptions like the OTAA BBQ details were getting chopped mid-sentence with no way to read the rest. Now the full summary renders, and embedded newlines are preserved with nl2br() so multi-paragraph descriptions read naturally.
-
✨ Feature May 17, 2026 Admin: audit log of every state-changing action
Admin-only audit log at /members/admin/audit-log.php (also linked from the Officer tools dropdown for admins). Captures every state-changing request with full context: timestamp, user (display name + role), client IP, URL path, action, sanitized payload, and user-agent. Direct-message bodies are deliberately excluded for privacy, and sensitive fields are auto-redacted from logged payloads.
The viewer has filters (user, action, path, IP), a time-range selector (24h / 7d / 30d / 90d / all), and pagination. Each row has an expandable payload pane.
-
🐛 Fix May 17, 2026 Quick Message: send to unverified addresses too
After the CVAS Archive Project Status blast missed several recipients whose email had never been verified: the original message was re-sent to those skipped recipients, and the Quick Message handler was updated so that an officer explicitly choosing an audience and hitting Send always reaches the whole audience regardless of verification status. Other bulk email paths still respect the verified-email gate.
-
🐛 Fix May 17, 2026 VP email composer: Reply-To now matches the officers role address
Switched the prospect email composers Reply-To from the officers personal email (or the shared office inbox) to the role-based address that already appears in the Contact Us dropdown — president@, vicepresident@, secretary@, [email protected]. The composer now also shows you the exact reply address before you click Send. Officers whose title is not one of the four main roles fall back to [email protected] (configurable via settings.general_contact_email).
-
🐛 Fix May 17, 2026 VP email composer: replies route to shared CVAS inbox
The in-page email composer on the VP dashboard now sets Reply-To to the shared CVAS office inbox ([email protected], via settings.general_contact_email) instead of the logged-in officers personal email. Previously the officer who composed the message would receive replies directly to their personal address, which exposed that address in headers and made replies stranded if the officer changed roles. The composers helper text now makes this explicit: Replies route back to that shared CVAS inbox (not your personal email).
-
✨ Feature May 17, 2026 VP dashboard: real contact actions (Call, Email, in-page composer)
Each prospect card now has a contact-actions bar at the top of its expanded view: Send email (jumps to in-page composer), Call <phone> (tel: link with the phones digits clean), and Open in mail app (mailto: fallback for officers who want their local client). The in-page email composer is a collapsible green-bordered form with Subject + Message fields; it sends through the CVAS SMTP server with Reply-To set to the officer so any reply lands in their inbox. After a successful send the contact attempt is auto-logged into the prospects Contact history with method=email and the subject + body captured in the notes, so theres no separate Log attempt step needed. The composer bypasses the unverified-user skip gate so it still reaches prospects who never created a site account.
-
🐛 Fix May 17, 2026 VP prospect view: card layout (the squished one is gone)
Replaced the cramped <table>-with-<details>-stuck-in-the-last-<td> prospect list with a proper full-width card layout. Each prospect is now its own <details class=prospect-card> at the top level — when expanded, the edit form and contact history get the full width of the page instead of being trapped inside a narrow last-cell. The contact history nested table is gone too: each entry is now a stacked card with the metadata on one row (when / by / method / outcome) and the notes flowing freely below, so notes no longer wrap one-word-per-line. Layout collapses to single column with column-label prefixes on viewports under 900px.
-
✨ Feature May 17, 2026 Join/Welcome: account != membership, pay button moved to bottom
Two clarity changes to /join and /welcome: (1) Prominent red-bordered banner near the top of both pages stating that creating an account on the website does NOT make you a CVAS member — only paying dues does. (2) The Membership pricing card has been moved from the middle of the page to the very bottom, with a brief in-place pointer (jump to membership) so the visitor is forced to scroll past every section of content first. (3) An I have read everything above checkbox is now required right above each Pay with Stripe button; the join_checkout POST handler rejects submissions without it and bounces back with an inline error.
-
🐛 Fix May 17, 2026 Household UX: transfer primary + safer user-delete
Two fixes to the per-user admin panel: (1) The household primary now has a Transfer primary to <member> dropdown right on their own panel — previously officers had to navigate to the OTHER members panel to do the transfer, which was backwards. (2) The user-account Delete button (which permanently removes the entire user account) was too easy to confuse with the household Remove/Unlink button. Its now wrapped in a red-bordered Danger zone — delete user account collapsible with a two-step confirm (you must type the persons display_name to confirm). The non-primary household action button is also relabeled Unlink from household (was Remove from household) with a confirm dialog that explicitly says This does NOT delete the user account.
-
✨ Feature May 17, 2026 Households: shared dues license across multiple accounts
New households table lets multiple user accounts (parent + minor child, spouses, etc.) share one paid dues license without sharing roles or permissions. Each account keeps its own role, voter_class, officer_title, etc. — but if ANY account in the household has a current paid period (or lifetime membership), every account in the household counts as an active member for site-access purposes. Admin can manage households from /members/admin/users.php under each user: Link to a household (pick another member; if theyre already on one, this user joins it, otherwise a new household is created with them as primary) and a Household: <label> details panel for users already on one (rename household, promote another member to primary, remove from household). User-facing UI on /profile.php to follow.
-
🐛 Fix May 17, 2026 RSVP roster: dropped Notes column, Bringing now wraps
Removed the Notes column from the attendee table — it was almost always empty and was taking up space the other columns could use. The Bringing column now wraps long entries (e.g. a member bringing a long list of equipment) onto multiple lines instead of forcing the row wider. Notes themselves are still captured on RSVP submission and shown in the CSV export for officers; they just no longer crowd the on-screen roster.
-
🐛 Fix May 17, 2026 RSVP roster: dropped slider, wrap long names instead
Removed the horizontal scroll wrapper from the RSVP attendee table. To make the row narrow enough to fit naturally without a slider: dropped the standalone Member? column (always yes for site-RSVPed members; replaced with a small green ✓ next to the name when the row is a logged-in member). Long names like Conny (Cornelia) & Raphael Meier now wrap to a second line rather than stretching the entire row.
-
🐛 Fix May 17, 2026 RSVP roster: buttons no longer run off the right edge
Two fixes: (1) the table is now wrapped in an overflow-x:auto container so when its wider than its card it scrolls horizontally inside the card instead of bleeding past it — Cancel and Delete buttons are always reachable. (2) The Cancel / Delete / Restore buttons are now compact icons (✕ / 🗑 / ↺) with hover tooltips spelling out the action, saving a lot of per-row horizontal real estate.
-
🐛 Fix May 17, 2026 RSVP roster: compact Bringing column
The Bringing column on the RSVP roster used to write Food: / Nothing / Drinks: / Nothing / Equipment: / Nothing on six lines per attendee. It now shows just icons plus what the person is actually bringing — 🍪 for food, ☕ for drinks, 🔭 for equipment — and skips any category set to Nothing or left blank. If the whole party is bringing nothing the cell collapses to a single dash. Tooltips still spell out the full label (Food / Drinks / Equipment) on hover for clarity.
-
✨ Feature May 17, 2026 RSVP roster: paid members can view too + layout cleanup
Two changes on /members/admin/event-rsvps.php: (1) Every paid active member can now view the attendee list for any event. Staff-only powers stay locked: Export CSV, Email all attendees (BCC), seeing other peoples email addresses, and cancelling or deleting someone elses RSVP. Members can still cancel/restore their OWN RSVP from this page, and their row is tagged with a small you badge. Non-staff dont see the Email column at all (privacy default). (2) Fixed the squished table that was wrapping names like Conny / (Cornelia) / Raphael / Meier on every space. The event date and location are now on their own line under the title instead of jammed into the h1, and the three Food/Drinks/Equipment columns are consolidated into one Bringing column with the three values stacked.
-
✨ Feature May 17, 2026 VP role pill: red badge when pending follow-ups await
The Vice President pill in the Role Dashboards section now shows a red number badge when there are prospects still in new or awaiting-follow-up status (this auto-includes every self-registered pending user). Same visual treatment as the President proposals badge and the Treasurer overdue-dues badge.
-
✨ Feature May 17, 2026 VP follow-up: pending users + contact-attempt history
Three improvements to the Vice President dashboard: (1) Every self-registered pending user is now auto-listed as a prospect on the VP follow-up table so the VP never loses track of someone who signed up but hasnt paid yet. The dashboard runs the sync on every load so new signups appear instantly. (2) Each prospect row now has a Contact history section showing every outreach attempt (date, who tried, method, outcome, notes) and a + Log a contact attempt form so the VP can record each call/email/voicemail without leaving the page. (3) The summary tile New / awaiting follow-up now correctly counts the 3 existing pending users (was 0 before because the count only looked at manually-added prospects).
-
🐛 Fix May 17, 2026 Officer dashboards: voting roster only for member stats
The President dashboards Active members and New (last 30 days) tiles now use the same filter the secretary annual report and the members homepage quorum calc already use — excluding test accounts and class B (non-voting) members. Active members now reads 44 instead of 50. Untouched on purpose: Quick Message audience badges (those select recipient pools, not stats, so they still include class B); treasurer dashboards (the active-member field there is manually entered, and the auto counts are for dues purposes which include all paid members); VP / historian / editor / observatory dashboards (no general member counts on those).
-
🐛 Fix May 17, 2026 Annual report: count voting roster only
The three member-tally lines on the secretary annual report (active members today, new members, currently inactive) now filter out test accounts and non-voting (class B) lifetime/honorary members. Previously they included everyone with role member/officer/admin, which inflated the count by 7 (1 test account + 6 class-B lifetime members). Active members today is now 44, matching the bylaw-relevant voting roster.
-
✨ Feature May 16, 2026 Quick Message: new All users with verified emails audience
New entry in the Quick Message audience dropdown that targets every active, non-test account whose email is verified — across all roles, including pending users who completed their email verification. The recipient-count badge updates with the live number (currently 29).
-
✨ Feature May 16, 2026 Quick Message: file attachments + dont email unverified users
Two changes to the messaging pipeline:
- Quick Message now accepts file attachments — PDFs, images, common Office / OpenDocument formats, CSV, text, ICS, and ZIP — up to a reasonable per-file and per-email size limit. Attachments are sent on the email only (not on the in-app notification). Skipped attachments are reported back in the success message.
- Bulk emails now skip recipients whose email address has never been verified, since those are responsible for most of the platform's delivery bounces. The two transactional flows that must still reach unverified users (verification link and password reset) are unaffected.
-
✨ Feature May 16, 2026 Welcome acceptance + orientation-tour gate on codes
New paying members must now check an I have read and agree box at the bottom of /welcome before they can use any members-area tool — require_member redirects them back to /welcome until the checkbox is submitted. The gate code (Indian Hill main padlock) and the per-user warm-room code stay visually blurred on the members dashboard until an officer marks the members orientation tour complete. Officers can toggle tour-complete status from /members/admin/users.php (right next to the Disable 2FA button). The gate code lives only on the members dashboard now; the /welcome page never showed it. All 51 existing paid+active members were auto-backfilled (both welcome-accepted and tour-complete stamped at their created_at) so the gate only bites new joiners going forward.
-
✨ Feature May 16, 2026 RSVP: tell us what you are bringing
The public RSVP form has a new highlighted Food / Drinks / Equipment section. All three fields are required (HTML5 + server check) but default to Nothing so attendees can sail through without thinking about it — or fill in details so the group does not end up with seven coolers and no chairs. The confirmation email echoes the choices back, and the officer RSVP roster shows three new columns. Schema migrates idempotently from _rsvp_init.
-
🐛 Fix May 16, 2026 Event forms: label rename + missing add-event fields
Renamed the RSVP checkbox label from Accept RSVPs from members to Enable RSVPs for Event since RSVPs are not limited to members for public events. Also fixed an earlier patch miss: the Category, Visibility, and RSVP fields had only landed on the edit-event form because the anchor used an HTML entity (—) that did not match the literal em-dash in the source. The add-event form on both /calendars and /meetings now has all three fields too.
-
🐛 Fix May 16, 2026 RSVP visibility matches the event
Confirmed and tightened: anyone can RSVP to a public event without an account (the default for outreach / star parties / public meetings), but a Members only event now requires the RSVPer to be a signed-in paid active member. Closes a small loophole where a non-member with the rsvp.php?meeting_id=N URL could RSVP to an event that was hidden from their calendar.
-
✨ Feature May 16, 2026 Officer-only site analytics dashboard
New /members/admin/analytics.php (linked from the Vice President admin page) gives officers a server-side view of who is visiting the site: page-view counts, unique visitor counts, signed-in vs anonymous splits, top pages, top external referrers, country breakdown, most-active members, what members view most, and a recent-activity log. Time-range selector (24h / 7d / 30d / 90d / all). No third-party trackers; IPs are never stored raw.
-
🐛 Fix May 16, 2026 Members-only events: paid+active only, not just logged-in
Tightened the new Members only event-visibility gate to use is_paid_member() instead of just any logged-in account. Pending users (registered but not paid), lapsed members (active=0), and signed-in officers without dues now see exactly the same calendar slice as logged-out visitors: public events only. Form label updated from hidden from logged-out viewers to paid active members only so the choice is unambiguous.
-
✨ Feature May 16, 2026 Events: per-event category and public/members-only visibility
Two new controls on every event, surfaced in both the add-event and edit-event forms on /calendars and /meetings: (1) Category — Auto by default (keeps the old title-keyword matching) or any of the non-iCal-bound calendars (CVAS Public Calendar, Meetings, Nassau Nights). Once set, the event shows up under that filter tab regardless of whether the keyword matches. (2) Who can see this? — Public (default, visible to everyone) or Members only (hidden from anyone not logged in). Members-only events still appear in the public calendar for logged-in viewers; they just disappear for anonymous visitors. The new meetings.calendar_id and meetings.visibility columns migrate idempotently the next time the calendar page or any meetings CRUD helper runs.
-
✨ Feature May 16, 2026 RSVP controls now surfaced on the calendar
Three RSVP-related changes officers had been missing: 1) The add-event and edit-event forms on /calendars and /meetings now have an Accept RSVPs from members checkbox; before, RSVPs were silently auto-enabled based on title keywords (meeting, observing, star party, outreach keywords) which is why some events had RSVPs and others did not. 2) Each event row now shows a View RSVPs (N) link to the existing RSVP admin page (filtered to that meeting). 3) Saving an event explicitly sets the rsvp_enabled flag instead of falling back to the keyword guess.
-
✨ Feature May 16, 2026 Calendar: officers can now edit events
Officers can now edit any event on /calendars and /meetings, not just add or delete them. Each event has an edit collapsible next to the delete link with the same fields as the add form (title, date/time, location, public summary, member-only details). Saving updates the local record and, if Google Calendar is connected, pushes the change to the synced Google event.
-
🐛 Fix May 16, 2026 Tonight card: location/reason no longer clipped
The Tonight stat card on the members dashboard was truncating the location after Observing! at because the pill containing it had overflow:hidden + white-space:nowrap and the card is narrower than the full location name. The pill is now compact (just dot + headline) and the location (or NOT-observing reason) lives on its own line beneath it, where it can either fit or ellipsise cleanly with the full text in a tooltip.
-
📝 Note May 16, 2026 Observing announcements: no email after 9 PM
When an officer announces a Were observing tonight! after 9 PM local time, the announcement still goes out as an in-app notification but the bulk email blast is suppressed. By 9 PM most opt-in members are already at the site or asleep, so a late-night email is rude and useless. The officer-side response message reflects the suppression so theres no confusion about why the email count is zero.
-
🐛 Fix May 16, 2026 Members dashboard: moon icon now matches the phase number
The Tonight moon stat card on the members dashboard was passing the illumination as a raw percentage (e.g. 1) to the SVG renderer, which expects a 0..1 fraction. The renderers fallback divide-by-100 only kicks in for values strictly greater than 1.0, so exactly 1% slipped through and rendered as 100% (a full moon). The dashboard caller now divides by 100 like the homepage and Sky page already do.
-
📝 Note May 15, 2026 Astrospheric group code is now members-only
The CVAS Astrospheric Pro group code (which unlocks free premium Astrospheric for members) was previously visible on the public /sky page and reachable by any logged-in account. It's now properly gated to paid members only. Non-members and pending users instead see a "Members-only perk: free Astrospheric Pro — join CVAS" hook that links to /join.
-
🐛 Fix May 15, 2026 Admin: deleting a user no longer blocks on treasury records
Admin user-delete used to fail for any member with treasury history (dues payments, reimbursements, donations, etc.) because financial records must survive the user for tax / audit purposes. The delete now preserves the financial records in anonymized form and successfully removes the account.
-
🐛 Fix May 15, 2026 Routing: trailing-slash URLs no longer 404
URLs ending in a trailing slash (like /join/) were 404-ing. Most clean URLs on the site dont get trailing slashes from us, but link trackers like Facebooks fbclid append them when sharing. The webserver now normalizes trailing slashes so /join/, /tools/, /sky/, etc. all resolve correctly.
-
📝 Note May 15, 2026 Favicon refreshed to match the current CVAS logo
Generated a new favicon set (16x16, 32x32, 180x180 apple-touch, and multi-size .ico) from /assets/cvas-logo.png. The cache-bust query string updates automatically via filemtime, so browsers will pick the new icons up on next page load.
-
📝 Note May 15, 2026 Homepage: NOT observing notice with reason
Officers can now post a Were NOT observing tonight notice from the Are We Observing? panel with a cited reason (e.g., clouds, weather). The notice flips the public homepage status panel to red, but does not send any emails, in-app notifications, or push a Google Calendar event. The notice auto-clears at 6 AM the next morning, or can be cleared manually. Mutually exclusive with the affirmative were observing announcement.
-
📝 Note May 15, 2026 Forum: thread read counts
Each thread now shows how many people have read it. The thread list (inside a board) has a new Reads column, and the thread page itself shows N reads next to the post count. The author is excluded from the count, so a fresh thread sits at 0 reads until another member opens it.
-
📝 Note May 15, 2026 Atlas: top header layout fix
The view-mode pill (Sky / Dome / Universe + Members link) is no longer absolutely centered, which was making it overlap the FOV survey selector when the FOV box was on. It now sits at the right end of the top bar in the same flex row as the search and FOV controls, and the bar wraps to a second line on narrow viewports instead of stacking elements on top of each other. Follow-up: the topbar now starts to the right of the 96px sidepanel rail (search no longer goes under it), the FOV button got a darker fill so it does not blend with the search input, and the username greeting is now a readable glass pill instead of grey-on-sky text.
-
📝 Note May 15, 2026 Astro Tools: Open in Atlas improvements
The Open in Atlas button on the FOV tool now opens Atlas in a new tab, and hands off the live Aladin viewport center (where you are actually looking) instead of the originally selected target. So if you pick North America Nebula, pan over to the Crescent Nebula, then click Open in Atlas, Atlas opens on the Crescent Nebula.
-
⚡ Improvement May 15, 2026 FOV tool ↔ Atlas: Open in Atlas hand-off + FOV box z-index fix
The Imaging Mode FOV calculator on /members/tools has a new Open in Atlas button (visible once a target is selected). Clicking it opens /members/atlas pre-pointed at that targets RA/Dec with the on-sky FOV box already toggled on. Atlas itself reads ra=, dec=, fov=1 and (optional) name= from the URL on mount and applies them once. Separately, Atlass FOV box now sits above the InfoPanel in z-order, so the box and HUD stay visible when a target is selected (previously they could be covered).
-
⚡ Improvement May 15, 2026 Astro Tools: cleaner tabbar + external-tool quick-links row
The calculator tabs and external tool links on /members/tools used to share a single wrapping row that read as one messy mash-up. The external links (Sky Finder, Atlas, Astrometry, Solar, Lunar, Dust/Reflection, Lookup Coords) now live in a separate Open: row of small pill-shaped links below the calculator tabbar.
-
⚡ Improvement May 15, 2026 Sky Finder: desktop advisory modal
When Sky Finder is opened on a desktop / large-viewport browser (no mobile user-agent and viewport >= 900px wide), a modal now warns the user that Sky Finder relies on phone motion sensors and offers a one-click jump back to the members area, with a Continue Anyway option.
-
⚡ Improvement May 15, 2026 Atlas: mobile advisory modal
When Atlas is opened on a mobile device or a small-viewport browser (under 900px wide), a modal now warns that the app is not phone-friendly and offers a one-click jump back to the members area, with a Continue Anyway option for users who want to proceed.
-
⚡ Improvement May 15, 2026 Atlas link added to Astro Tools page
The /members/tools page now lists Atlas (the 3D planetarium) alongside Sky Finder, Astrometry, Solar/Lunar/Dust, and the other observing-tool quick-links.
-
⚡ Improvement May 15, 2026 FOV tool: add DES DR2 + DECaLS DR10 southern-sky color surveys
The imaging FOV tool now offers two additional sharp, deep-color HiPS surveys for southern-sky targets that the existing NSNS narrowband composites do not cover. DES DR2 (Dark Energy Survey, 4-m Blanco) is extremely deep over a focused ~5000 sq deg patch; DECaLS DR10 covers a wider area of the south plus the galactic plane with cleaner imagery than DSS2. Corrected the broken DR10 reference (DECaLS DR10 was renamed to DESI Legacy Surveys DR10 at CDS) and added DECaPS DR2 for the south galactic plane.
-
⚡ Improvement May 14, 2026 Atlas — Members link, named-object labels, sun rendering, server-side response cache
Header now has a ‹ Members link to the left of the view-mode tabs that jumps back to the members area. Every deep-sky object with a common name (regardless of M / C / NGC / IC) is now labeled on the sky map. The Universe-view Sun is no longer a flat yellow ball with a Saturn-style ring: it is now a procedurally-shaded photosphere (granulation, sunspots, plage, limb darkening) with an additive corona shell. Cold-load is much faster: /api/objects (the 18 MB star catalog) plus /api/galaxies and /api/nebulae now cache the entire serialized response in memory, so repeat hits skip both the SQL query and the JSON serialization. Browser cache for the star catalog is also bumped to one hour immutable, so a logged-in user does not re-download it on every reload.
-
🐛 Fix May 14, 2026 Atlas — post-launch polish
Several first-day fixes to Atlas: constellation lines now actually show (the data file was missing on the deploy); the DSO tab in Targets is populated (the candidate pool was star-dominated); tours actually fly the camera to each target instead of silently no-opping when the target is below the horizon; panning is no longer hyperactive at high zoom (drag rate scales with field of view in Sky view and with orbit radius in Dome view); and a fistful of UI strings (Search placeholder, °/×/′/→ symbols, dashes, stars/moon icons) had been mojibake-mangled by a Windows-side text-encoding mistake and have been restored.
-
🐛 Fix May 14, 2026 Legacy test.cvas.space domain retired
The old test.cvas.space hostname has been fully decommissioned. All inbound HTTP and HTTPS traffic to test.cvas.space now permanently 301-redirects to cvas.space, the staging domain is no longer referenced anywhere in code or data, and the canonical site URL is cvas.space across the board.
-
🐛 Fix May 14, 2026 Atlas — member gate fix
Fixed an authentication bug where the Atlas members gate was incorrectly rejecting signed-in members. Authentication checks for Atlas now run reliably.
-
✨ Feature May 14, 2026 Atlas — interactive 3D planetarium (Members)
Atlas is a new full-page night-sky tool under Members → Atlas. It shows the live sky for the CVAS observatory in three smoothly-connected views: Sky (planetarium), Dome (alt-az dome), and Universe (galactic-scale fly-through of the Milky Way and Local Group). Search the full 3.5M-row sky catalog from the top bar, click any target to fly to it, and inspect imagery and Wikipedia summaries in the side panel. Transit arcs are colored by day vs. dark, gear/location/date all configurable, and a smooth scroll-wheel zoom transitions Sky → Dome → Universe.
-
⚡ Improvement May 13, 2026 Sky-chart labels readable against any background
Object labels on the Sky Finder and FOV picker now stay legible against bright deep-sky imagery (galaxies and emission nebulae) as well as dark sky. The labels render in bright yellow with a heavy black outline so they pop on every backdrop, and they reposition smoothly as you pan or zoom the chart. Only named, Messier/Caldwell, and bright-mag targets get text labels; everything else stays a small amber marker so the sky doesn't turn into label soup.
-
✨ Feature May 13, 2026 Public changelog at /changelog
This page itself — a public running log of features, fixes, and improvements to the CVAS website. Officers compose entries with markdown body, kind tags (Feature / Fix / Improvement / Note), optional version labels, draft mode, and scheduled-publish dates. A "What's new" link was added to the site footer.
-
✨ Feature May 13, 2026 Member ticket + feedback system
Members can now submit tickets for bugs, feature requests, questions, and general feedback at /members/tickets.
- Each ticket has a category, priority, status, and threaded discussion
- Status workflow: Open → In progress → Resolved / Closed / Won't fix
- Submitter can comment on their own tickets; officers can comment on any
- Officers triage from their admin dashboard with status filters, assignment, and the ability to change status or reply
- Notifications fire on new ticket, new reply, status change, and assignment
- Featured card on the members dashboard for quick access; officer dashboard shows an open-ticket count badge
-
🐛 Fix May 13, 2026 Registration requires phone + mailing address
/register now requires first name, last name (separate fields), email, password, phone (≥10 digits validated), street address, city, state, and ZIP (
\d{5}(-\d{4})?). Phone and mailing address are no longer optional. Everything else (bio, secondary email, observing prefs) stays optional on the profile page. -
🐛 Fix May 13, 2026 Minor bug fixes
Small things tidied up across the session:
- Fixed an en-dash rendering glitch on the membership-renewal page (period range showed
–as literal text instead of an en-dash). - Stat-strip layout tightened so all five tiles fit on one row at common screen widths.
- Members dashboard now fits all 5 featured cards in a single row with slightly tighter card sizing — no more orphan card on its own line.
- Officer dashboard grid auto-widens to 4 columns when the Event-Proposals alert tile is showing, so the alert doesn't push the row to two lines either.
- A handful of catalogue-importer cleanups so re-imports run cleanly under the latest PHP.
- Various copy adjustments across the new pages.
- Fixed an en-dash rendering glitch on the membership-renewal page (period range showed
-
🐛 Fix May 12, 2026 Donations no longer add the processing fee
Brief detour: the previous "Stripe fee always covered" change rolled out across both membership and donation flows. Walked the donation half back. Now:
- Membership dues at /join / /welcome / /members/billing — fee always added, full disclosure shown
- Donations at /donate — donor pays exactly what they entered, no fee disclosure, Stripe takes its cut from the gift
Different flows, different psychology — pressuring donors to gross up their gift felt off; pressuring members to fund the cost of accepting their dues is fine because it's predictable and they understand the math.
-
✨ Feature May 12, 2026 Stripe-fee disclosure on every membership payment
Membership dues at /join, /welcome, and /members/billing now show an itemised breakdown:
- Dues
- Card-processing fee (~3%)
- Total charge
The processing fee is always passed through (no opt-out) so 100% of dues reaches CVAS. The disclosure explains why so members understand. Donations are unchanged — donors pay exactly what they enter and Stripe takes its cut.
-
⚡ Improvement May 12, 2026 Sky-catalogue typeahead handles more common spellings
The local-catalogue search now resolves more typed variations into the canonical entry:
- Tycho-2 IDs with dashes (
TYC 1-100-1) - MCG zone-signed identifiers (
MCG +13-08-058) - Variable stars by Greek-letter name (
V Delta Cep→V DEL CEP) - Washington Double Star with or without leading
J(WDS J18443+3940) - Open-cluster short forms (
Tr 14→Trumpler 14,Cr 285→Collinder 285,Mel 25→Melotte 25)
Plus 119 hand-curated popular folk-name aliases: Heart Nebula, Soul Nebula, Pacman, Markarian's Chain, Witch Head, Dark Shark, Cone Nebula, Crescent, Bubble, Spaghetti Nebula, Boomerang, Helix, Saturn Nebula, Blue Snowball, and many more.
- Tycho-2 IDs with dashes (
-
⚡ Improvement May 12, 2026 Member directory consistent with quorum
The directory header line at /members/directory now shows the breakdown: X active members, Y with voting rights (class A), and how many are non-voting (class B). Test / demo accounts are excluded. Class-B members still appear in the directory (they get the newsletter and use the site) but are tagged with a non-voter badge.
-
✨ Feature May 12, 2026 Quorum updated to exclude non-voting members and unpaid accounts
Quorum calculations across the site (stat strip, meeting-open snapshot, voting eligibility) now consistently exclude:
- Class-B members — non-voting per the constitution (they can still see ballots, just can't cast)
- Pending accounts — registered but haven't paid; not full members yet
- Test/demo accounts — never counted (existing behaviour)
- Deactivated accounts — never counted (existing behaviour)
Quorum formula now matches the treasurer spreadsheet exactly:
⌈active × 1/3⌉ + 1. For 45 active voting members, quorum = 16. -
⚡ Improvement May 12, 2026 New-member email now fires on payment, not signup
Previously the "New member has signed up!" email blasted officers every time anyone created an account, even tire-kickers who never paid. Now:
- Account created (still pending): in-app notification to officers only — quiet, no email
- Payment clears and the account becomes a full member: in-app notification AND email to officers
Officer inboxes only see actual paying members.
-
🐛 Fix May 12, 2026 Pending members can no longer access /members/
Members who registered an account but haven't paid their dues yet were able to reach the members area. Now they're sent back to /join until their first payment clears. /join itself remains publicly accessible.
-
⚡ Improvement May 12, 2026 Imaging mode shows planets against black, not DSS
When you select a planet in imaging-mode FOV preview, the background imagery is now hidden and the chart goes pure black. The planet renders at its actual angular diameter relative to whatever FOV box you've drawn. Imagery layers are meaningless for solar-system targets — they show the wrong sky for any given moment, since planets move. Selecting a deep-sky object restores the imagery automatically.
-
⚡ Improvement May 12, 2026 Sky-finder labels readable on any background
Object labels in the Sky Finder and FOV preview now render in bright yellow with a black outline, so they read clearly against both dark sky and bright deep-sky imagery. Marker rendering was split into two layers: full text labels for named / Messier / bright targets, and small amber dots for everything else, so the sky no longer turns into label soup at any zoom level.
-
✨ Feature May 12, 2026 Local astronomical catalogue — 3.5 million targets, zero API calls
The site no longer needs to reach the internet to look up an astronomical target. Roughly 3.5 million catalogued objects now live on the server, drawn from canonical published data sets — Messier, NGC, IC, Caldwell, Sharpless, Barnard, LBN, LDN, Abell PN, RC3, UGC, MCG, ESO, Tycho-2, PGC, WDS, GCVS, NSV, Arp, HCG, Trumpler/Collinder/Melotte/Stock, vdB, Cederblad, RCW, Gum, Harris globulars, Green SNRs, carbon stars, Wolf-Rayet stars, named asterisms, and 119 hand-curated popular folk-name aliases.
Typeahead is fast across the entire catalogue. SIMBAD remains as a last-resort name resolver for truly exotic designations.
Search by any common name (
Heart Nebula,Markarian's Chain,Pacman Nebula,Dark Shark) or canonical designation (M 31,NGC 4565,HD 209458). The search is forgiving about formatting —m31,M31,M 31all work. -
🐛 Fix May 12, 2026 /welcome restricted to signed-in users
/welcome is the post-join member packet; it was rendering for anonymous visitors. It now redirects to /login first. /join is still publicly accessible as the prospective-member landing page.
-
⚡ Improvement May 12, 2026 Agenda + Minutes builders merged into role dashboards
Removed the standalone Agenda Builder and Minutes Builder featured cards (they duplicated the President and Secretary role pills above). Each role dashboard now has a "Browse all meetings →" link in its section header so the multi-meeting builder is still one click away.
-
⚡ Improvement May 12, 2026 Online-right-now list shows what page each member is on
The "Online right now" panel in the officer dashboard now shows each member's current page next to their name, with a one-click link to jump there. Background polling is filtered out so the listed page reflects what they're actually viewing, not behind-the-scenes refreshes. Useful for spotting confused members who land somewhere they didn't intend.
-
✨ Feature May 12, 2026 Public blog at /blog
Officers can now publish public blog posts at cvas.space/blog. Features:
- Markdown body (same renderer as the forum) with inline images
- Hero image upload (JPG / PNG / WebP / GIF)
- Tags + tag archive pages
- Author archive pages
- Draft / scheduled / published states
- SEO + OpenGraph + Twitter card meta tags
- Member-only comments (signed-in CVAS members can reply)
- RSS feed at /blog/rss
- Related-by-tag suggestions on each post
Officers compose and manage posts from their admin dashboard.
-
✨ Feature May 12, 2026 Announcements strip on the members page
A new highlighted band between the stat tiles and Quick Documents on /members/ shows officer-posted announcements. Each announcement supports:
- Plain text with embedded links (Insert-link button included)
- Severity tint (normal blue / urgent red)
- Attach a vote — pick an open vote or create one inline; members vote directly from the strip
- Promote motion to vote — turn a quorum-failed motion into a Yes/No vote without leaving the announcement
Officers manage announcements from their admin dashboard.
-
✨ Feature May 12, 2026 Votes can have any number of custom options
The voting system is no longer limited to Yes/No. Officers creating a vote can specify any number of custom options (with Yes/No still prefilled as the default for quick motion votes). Existing yes/no votes continue to work unchanged — anyone who voted on them stays counted, and the tally shows per-option counts.
-
✨ Feature May 12, 2026 Sticky header on /members/
The site header now stays pinned to the top of the viewport on every page under /members/ so the Officer Tools menu and brand link stay reachable while you scroll. Public pages still scroll the header off the top — only the members area sticks.
-
✨ Feature May 12, 2026 Live "Meeting active" indicator on Next Meeting tile
When a meeting is actively open in the CVAS Meet room, the Next Meeting stat tile turns green, swaps to a 📹 camera icon, and shows a
Meeting active — Join →pill that links straight into the meeting. The indicator used to live on the Tonight tile, but Next Meeting reads more naturally for "a scheduled meeting is happening right now". -
🐛 Fix May 12, 2026 Stat-strip polish — icons sized, labels untruncated, numbers aligned
After the new stat-strip landed it picked up a few rough edges that needed cleanup:
- Moon icon now sizes to its container (no more oversized disc spilling out)
- Dark Sky label no longer truncates to
DARK SKY TONI…on narrower viewports — shortened to "Dark sky" with the word "tonight" moved to the time line - Active Members tile now centres the big number directly above the
Quorum: Nline instead of left-aligning them awkwardly - Tonight + Next Meeting tiles were briefly combined to save space, then re-split once the 5-tile row was confirmed to fit
-
⚡ Improvement May 12, 2026 Featured-card dashboard reorganised
The dashboard featured-card grids now fit cleanly on every screen size:
- Member section: 4 cards across (Astronomy Tools, Forum, Directory, Marketplace) with the Tickets card added later
- Officer section: 3 cards across, dropping the legacy Treasurer Dashboard card since the 💰 Treasurer role-pill right above it already opens the same page
- Responsive: 3-up on tablets, 2-up on phones
Eliminates the orphan-card layout where the last tile sat alone on its own row.
-
✨ Feature May 12, 2026 Members page redesigned with stat strip
The top of /members/ now shows a clean five-tile strip:
- Tonight — observing-night status + start time
- Next Meeting — date, countdown, live Meeting-Active indicator with Join link
- Dark Sky — sunset/twilight time tonight
- Moon — real phase rendered from the same SVG used on /sky
- Members — total active voting members + quorum
Icons line up, label widths fit on one row, and the moon disc matches its container size.
-
✨ Feature May 11, 2026 Sky Finder session logs
Each Sky Finder session is logged — when, where pointed, target, duration. Members can review their own log at /members/skyfinder-log; officers can view all logs to understand observing-program engagement.
-
✨ Feature May 11, 2026 Public locations page + sitemap
/locations lists the Indian Hill Observatory + Letha House meeting site with maps, driving directions, and what's available at each. /sitemap.xml auto-generated from the page registry for search engines.
-
✨ Feature May 11, 2026 Equipment catalog
Catalogued list of telescopes, eyepieces, cameras, barlows, filters, and accessories the club has + uses. Powers the FOV-calculator dropdowns so members don't have to type their gear specs manually.
-
✨ Feature May 11, 2026 Public contact + social URLs admin
Officer-editable settings for the mailing address, general contact email, and Facebook / Instagram / YouTube URLs. Changes appear in the Contact-Us dropdown, the footer, and the homepage.
-
✨ Feature May 11, 2026 Quick Message — officer broadcast tool
Officers can compose a one-off email + in-app notification and target it to audiences: all members, just officers, just pending users, or members in a specific group. Used for last-minute meeting cancellations, observing-night alerts, etc.
-
✨ Feature May 11, 2026 In Memoriam page
Public /memorial page honoring CVAS members who have passed. Officers manage entries from their admin dashboard — photo, dates, bio paragraph, and a featured pinned-to-top option.
-
✨ Feature May 11, 2026 Meeting room admin
Officer control panel for the CVAS Meet room — open / close the room, see who's currently inside, kick disruptive users, and toggle the "meeting active" indicator that lights up the stat strip on /members/.
-
✨ Feature May 11, 2026 CVAS Meet — in-browser video meetings
/meet provides an in-browser video room for monthly meetings and impromptu observing-night coordination. Members open the room, the host opens the gate, and attendance is recorded in the live roster. Browser-to-browser video runs over WebRTC so video and audio stream peer-to-peer when network allows.
-
✨ Feature May 11, 2026 Dark sky tonight calculator
Compact /dark-sky page showing the dark-sky time window for tonight at the configured observing location (Indian Hill). Used by the stat strip + by members planning a session.
-
✨ Feature May 11, 2026 /sky — tonight's observing conditions + ephemeris
Public-facing /sky page with tonight's sunrise/sunset, civil/nautical/astronomical twilights, moon phase + rise/set/illumination, and current dark-sky time window. Updates daily; cached server-side so it's instant for repeat visitors.
-
✨ Feature May 11, 2026 Sky Finder — phone-based target locator
Members can point their phone at the sky and have it tell them what they're looking at, or pick a target and have the phone guide them to point at it. Uses device-orientation sensors and the local catalogue, overlaid on an interactive sky viewer. Logs sessions so the user can review where they pointed and when.
-
✨ Feature May 10, 2026 Historical document backfill
Admin tool to import historical agendas, minutes, sky reports, and newsletters from a structured Drive folder. Backfilled documents land in the same database tables the live system uses, so /members/documents shows the full history seamlessly.
-
✨ Feature May 10, 2026 Solar / Lunar / Dust subpages
Standalone informational pages under /members/tools/ for solar observation safety, current lunar phase + libration data, and tonight's dust / aerosol / transparency forecast. Each pulls from the local ephemeris + cached weather data.
-
✨ Feature May 10, 2026 Coordinate lookup tool
Convert between RA / Dec sexagesimal and decimal, galactic and equatorial, ecliptic and equatorial. Plus a target-name lookup that resolves common designations to coordinates using the local catalogue.
-
✨ Feature May 10, 2026 Google Calendar + Google Contacts integration
OAuth-authorized two-way sync with the club's Google Calendar (events on cvas.space appear in Google; events added there appear here). Google Contacts auto-add on signup so the treasurer always has up-to-date contact info in the club's Google address book.
-
✨ Feature May 10, 2026 Treasurer module — ledger, reimbursements, donations, budget, letters, 990-EZ
Full treasurer workflow: a double-entry ledger for income and expenses, member reimbursement submission and approval, donation accounting (mirrors public donations), per-year budget tracking, donor-acknowledgment letter generation with merge fields, and a 990-EZ assembly helper for the annual IRS filing. Receipts uploaded per-transaction.
-
✨ Feature May 10, 2026 Officer simple-reports system
Each officer files a short monthly report (text + optional sign-off) used by the President for the business-meeting packet. VP, Editor, Historian, Observatory Director, Director of Observations each have their own simple-report flow with sign-on-submit.
-
✨ Feature May 10, 2026 Minutes Builder + live attendance
The Secretary's companion tool. Take attendance during the live meeting (member checklist + guest field), record motions + votes + discussion notes, finalize when complete. Drive-side minutes sync so historical PDFs land in /members/documents alongside the live notes.
-
✨ Feature May 10, 2026 Agenda Builder
The President's tool for building the next business meeting agenda. Add items with title / time estimate / discussion notes, drag to reorder, mark items as covered during the live meeting. Items can carry forward to the next meeting if not discussed.
-
✨ Feature May 10, 2026 Astronomy plate-solving via Astrometry.net
Upload a star-field image and the site submits it to a remote plate-solver, polls for results, and displays the world-coordinate solution plus identified objects when the solve completes. Members-only because it consumes the club's usage allowance with the external service.
-
✨ Feature May 9, 2026 Dashboard-order drag-to-reorder
Members can drag their featured-card tiles and officer role-pills into the order they prefer. The layout is saved per-account so your dashboard stays the way you arranged it. "Reset" link if you want defaults back.
-
✨ Feature May 9, 2026 Local sky ephemeris — constellations, Moon, planets
Server-side calculation of constellation positions, Moon phase + illumination, and planet ephemerides (Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune). Cached daily so repeat visitors see instant numbers. Feeds the /sky page and the observing-night planner.
-
✨ Feature May 9, 2026 Newsletter signup + manage
Public newsletter signup at /newsletter-signup with double opt-in confirmation. Subscribers can unsubscribe via tokenised link from any email. Officer-side editor manages the subscriber list.
-
✨ Feature May 9, 2026 Email-automation system + notifications
Officers can schedule recurring emails (reminders, welcomes, renewal nudges) with reusable templates. Per-member notification preferences let you choose in-app, email, or both. All transactional emails go through a configurable mail relay so bounces and deliverability stay tracked.
-
✨ Feature May 9, 2026 Plate-solving plan-sharing
Members can save imaging plans (target list, gear, date) and share them with other members via tokenised links. Plans persist across sessions; revoke shares anytime from the plans list.
-
✨ Feature May 9, 2026 Image of the Month
Featured member astrophotography on the home page. Officers manage the rotation; current image is shown at top of /; members can submit candidates via the forum.
-
✨ Feature May 9, 2026 Quick documents (Drive integration)
Officers paste Google Drive folder URLs into per-document settings (Agenda, Minutes, Sky Report, Valley Skywatcher newsletter) and the site embeds the read-only Drive viewer for each one. The Quick Docs strip on /members/ shows the latest version of every doc with a one-click open.
-
✨ Feature May 9, 2026 Calendar + RSVP system
Public calendar at /calendars showing meetings, observing nights, and special events. Members can RSVP to events from the calendar; one-tap cancel via email link. Officers can create / approve / decline events; meeting-proposal queue surfaces pending items as a badge.
-
✨ Feature May 9, 2026 Group memberships (imaging, outreach, observatory, etc.)
Officers can create named groups and add members to them. Group membership powers everything from imaging-team rosters to outreach-volunteer lists, and certain special groups can grant officer privileges to their members automatically — useful when the elected officers change.
-
✨ Feature May 9, 2026 Speaker-proposal pipeline
Members and the public can submit speaker proposals for monthly meetings. Officers review proposals from their admin dashboard, accept or decline, and accepted speakers feed into the agenda. Pending count appears as a badge in the officer admin nav.
-
✨ Feature May 9, 2026 Loaner equipment program
Officer admin tool to track shared club gear (scopes, eyepieces, cameras, accessories). Members request a loan via the loaner page; officers approve, mark out, mark returned. Pending-request count appears as a badge in the officer admin nav.
-
✨ Feature May 9, 2026 Member marketplace
Buy / sell / trade gear with fellow members. Listings include photos, description, asking price, and contact preference. Members can mark sold or remove their own listings. Officer-moderated for keeping it civil.
-
✨ Feature May 9, 2026 Discussion forum
Members-only forum with boards, threads, replies, @-mentions with autocomplete, pinned/locked threads, and per-user unread tracking. Markdown supported via the same renderer used elsewhere on the site (headings, lists, bold/italic/code, links). Officer admin to manage boards + moderate posts.
-
✨ Feature May 9, 2026 Donations + Stripe receipts
Public donation flow at /donate. Donors can give a preset amount or custom amount, optionally include a message, and check the "anonymous" box if they prefer. Confirmation emails include 501(c)(3) language for tax records. Donations tracked in the treasurer ledger for accounting.
-
✨ Feature May 9, 2026 Stripe payment integration
Members can pay their annual dues online via Stripe. Supports prorated mid-year joins and full annual renewals. Handles both Individual / family ($100) and Junior membership tiers. Webhook-driven so payments confirm and accounts promote to
memberautomatically. -
✨ Feature May 9, 2026 Officer role dashboards
Each elected officer role — President, Vice President, Secretary, Treasurer, Editor, Historian, Observatory Director, Director of Observations — gets its own dashboard with role-specific tools. Historical term records are preserved when officers change so the club retains its institutional memory across years.
-
✨ Feature May 9, 2026 Account system — registration, sign-in, 2FA, email verification
Members can create accounts at /register, sign in at /login, recover forgotten passwords, and optionally enable two-factor authentication. Every new account requires email verification before sign-in is allowed.
-
✨ Feature May 7, 2026 CVAS website launch
The CVAS website is reborn as a custom build — lightweight, fast on slow connections, dark-themed for nighttime reading, and member-focused. The new platform includes a full members area with sign-in, registration, role-based access for officers and admins, and a clean foundation for everything that's shipped since.
Live at cvas.space since 2026-05-07.