Skip to content

v2.10.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 17:42
aab7545

v2.10.1

What changed

  • scope: zero-dep SOAP client + 43-op catalog + feature toggles
  • scope: m018 session columns + cold-sync scaffold
  • dashboard: ticker 'now' row can shrink — long subject no longer overflows mobile
  • scope: profile widget photo + settings scope fields + one-liner
  • scope: Fees tab — dues hero, paid-by-year, receipt ledger
  • campus: Campus tab — placement board, library, hostel+transport, notifications
  • scope: hourwise attendance joined to timetable + subject-named absences
  • scope: Academics tab — released results, derived CGPA, credits, subjects
  • scope: ship placement/library/campus DEFAULT-OFF (opt-in via SCOPE_FEATURES)
  • attendance: Detailed attendance — month dropdowns of date x hour cells
  • academics: CGPA hero owns the results; one credits+subjects card
  • fees: quiet paid list + collapsed receipt ledger (review rework)
  • academics: SGPA belongs in the expanded body, not the semester summary
  • fees: the date|name rule actually paints
  • sync: soft-refresh no longer shifts the dashboard frame (card x / top gutter 15 -> 30)
  • merge: keep main's fixed navbar in the mobile bar
  • tools: every Tools row names a real destination, and hourwise/profile get rows
  • attendance: table Margin uses the canonical _bunk_counts sign, not raw attended-ceil(0.75*total)
  • scope: give SCOPE a lifecycle trigger so the panels actually populate
  • scope: stop sending a password to getStudentLogin — it never validated one
  • scope: trigger no-ops when SCOPE_FEATURES is off
  • scope: drop getStudentPhoto from the JSON sync ops — it aborts the batch
  • preflight: compare VERSION per ref, not via git log -S
  • obs: instrument HTTP, DB, scope, push and process
  • obs: rebuild the dashboard and add rules for the new series
  • obs: stat panels reduce with a calc NAME, not an integer
  • obs: user activity, tab usage and per-source sync cost
  • timetable: redesign the Timetable tab to the approved reference
  • tt: keep the attendance tag's phrase contiguous
  • tt: word order per tier — '0 margin' not 'margin 0'
  • tt: subject name leads, mobile pass
  • tt: mobile row is two lines — code left, attendance tag far right
  • scope: fetch sync ops concurrently instead of one-at-a-time
  • tt: loosen row spacing, render rooms, cover the room branch
  • obs: stat tiles show one correct number
  • attendance: 2dp truncated percentages, never rounded
  • attendance: 1dp truncated percentages (variant of #120)
  • edge: reproducible maintenance page served at the edge during an outage
  • security: match Origin against the PUBLIC hostname, not the tunnel's IP
  • observability: answer who-uses-it, how long they wait, and where sync time goes
  • attendance: stop painting the stale Absences card during a scope sync
  • sync: refresh stale portal data on dashboard load
  • auto-sync: import decrypt_pw from the crypto leaf, not from db (#144)
  • auto-sync: read the payload shape _refresh_core actually returns
  • fees,settings: 1px rule not 4px, and the phone gear gets an id

Internal

  • scope: foundation test suite — 17/17 offline
  • test: pre-migration fixture holds back ALL versions >16, not just 17
  • profile enrichment suite 7/7 + AGENTS matrix row
  • scope profile widget + personal details (1280x900 + 393x851)
  • fees: grid columns for paid rows + verification screenshots
  • scope-hourwise before/after (393 + 1280)
  • two-seed DUT screenshots — empty-state navbar proof + synthetic full render
  • phase-5: touch feel — press feedback, JS tab motion, bottom sheets, v1.28.0
  • empty commit to re-trigger pull_request workflows
  • merge: resolve the VERSION/NOTICES/pyproject conflicts cut off by a truncated conflict log — marker scan across the whole tree is clean, uv lock regenerated at 1.28.0
  • phase-6: avatar rest + low-end tier + batched gaze — v1.29.0
  • phase-7: pull-to-refresh for touch — v1.30.0
  • phase-8: guardrail tests so the whole campaign stays fixed
  • structured suite layout — tests/unit + tests/e2e, consistent names
  • archive the Playwright fallback (PLAYWRIGHT_FALLBACK gate) + slim the image (WITH_PLAYWRIGHT)
  • bump playwright
  • rebuild README, CONTRIBUTING, SECURITY and AGENTS for human readers
  • before/after README rendering evidence (GitHub main vs this branch)
  • dedicated Architecture section — full portal-to-pixel data-flow diagram
  • data-flow diagram tuned for README width (vertical pipeline)
  • refresh README render evidence (architecture diagram iteration)
  • re-capture README render evidence with the diagram painted
  • replace the GitHub-rendered mermaid with a pre-rendered diagram
  • refresh render evidence (pre-rendered diagram on the branch page)
  • architecture diagram rev2 — applies the architecture review
  • refresh render evidence (review-revised diagram)
  • diagram-building guideline + generator as a repo tool
  • refresh render evidence (diagram guideline added to doc list)
  • bump python:3.11-slim digest + system setuptools — fixable HIGH/CRITICAL 6 -> 0
  • rebuild app.css for the .hw-* grid rules (24,845 B gzipped, 36,864 budget)
  • re-capture the profile evidence after the review corrections
  • nav: Tools dock tab replaces Settings; refresh/settings flank the wordmark
  • re-capture evidence after the reorganisation
  • evidence for the detailed-attendance grid
  • tools: Academics entry gates on released results, not the provisional window
  • full-viewport captures instead of cropped elements
  • before/fixed corner comparison for the layout-shift PR
  • rebuild app.css for the seeded --sbw markup
  • ui: self-hiding overlay scrollbar, navbars pinned to the viewport (v1.32.0)
  • resolve sibling conflicts, normalise the version trio to 2.0.0
  • bring in feat/scope-foundation, normalise version trio to 2.0.0
  • merge: restore main's viewport pinning and scrollbar model
  • rebuild app.css so the CI currency gate passes
  • before/after full-viewport captures
  • ci: remove stray .venv symlink and ignore venv in git
  • assert SCOPE panels actually render, not just that / returns 200
  • migrations: reject duplicate version at registration, not mid-boot
  • add dut_server.sh and ci_wait.sh
  • correct stale migration count and static-gate count
  • add wt.sh and prod_logs.sh
  • obs: import time in scope client; regenerate dashboard; docs
  • v2.5.0
  • timetable redesign, desktop + mobile (seeded zz9999)
  • bump break-divider + hero-break assertions to the new markup
  • refresh to the final build (tag phrase order)
  • recapture with the real shell chrome (navbar + dock in frame)
  • scope: hot/cold TTL split — 24h for settled data
  • v2.6.1
  • v2.7.0
  • README catches up with the two-source architecture (portal + SCOPE) (#119)
  • attendance 2dp capture
  • ATTENDANCE_DECIMALS is the one precision knob
  • extract the four leaf modules from app.py
  • point AGENTS layout and runbook at the edge maintenance worker
  • extract the scraper and the portal control plane
  • extract the declarative tables into app/static_data.py
  • extract the attendance and timetable view models
  • security: cross-site guard compared netlocs, refusing same-origin POSTs
  • pin the clock — the suite was red for 60 seconds every day
  • rebuild app.css after the extraction moved templates' class scan
  • extract the dashboard route into app/views/dashboard.py
  • extract push notifications and the health/metrics probes
  • rebuild app.css after cycle F
  • facade: constrain the rebind fan-out; repoint stale docs
  • import sort + rebuild app.css (CI ruff + CSS-current steps)
  • edge: forward the public host, and close the origin bypass
  • move the proxy-trust helpers out of the facade into app/edge.py
  • edge: key the origin bypass guard on X-Forwarded-Host, not Host
  • record that srm-origin is internal-only, enforced by a WAF rule
  • screenshot of the attendance tab mid-sync (old card absent)
  • pin the analytics arithmetic, visit span, and item beacon
  • observability: filter 5xx panels on status_class, and gate invented labels
  • add scripts/check_docs.py doc-consistency gate
  • rewrite AGENTS.md as repo facts; add scripts/gates.sh
  • wire test_auto_sync into the unit job
  • rewrite the new panels in plain language
  • observability: shorten two truncated titles, finish the plain-legend rename
  • move visit tracking out of app.py into observability
  • wire test_product_analytics into the unit job
  • order the dashboard by the product questions, drop duplicates
  • CI parity, honest verdict, route-auth + comment-balance gates
  • point commit identity at the worktree hook; state the PARTIAL verdict
  • remove the in-app release-notes feed; GitHub Releases is the changelog
  • seed rich data in scroll-dependent suites