Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions apps/infra/accounts_app/views/billing_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,21 +95,6 @@ def payment_step(request):
# the "any existing user can enter the signup payment flow" defect.
return redirect("accounts_app:billing")

if not card_registration_is_open():
# No card can be taken yet (provider not configured). Still render THIS
# step rather than borrowing the generic billing page: the funnel stays one
# coherent step, and the surface carries its own marker so both a reader and
# a test can tell which step they are on.
disclosures = payment_disclosures(
plan_label="",
monthly_usd=0.0,
trial_end=None,
state=NOT_OPEN,
)
return render(request, "accounts_app/payment_step.html", disclosures.as_context())

# Which plan a new signup is put on must be DETERMINED and CHARGEABLE, not
# whichever catalog row comes first and not whatever ``?plan=`` names.
#
# Free first: a $0 plan recorded on the authority owes no card and no
# provider round-trip (it can never be on the chargeable allowlist, by
Expand All @@ -126,6 +111,21 @@ def payment_step(request):
mark_activated(user, pricing_id=free_row["id"])
return redirect(first_product_url())

if not card_registration_is_open():
# No card can be taken yet (provider not configured). Still render THIS
# step rather than borrowing the generic billing page: the funnel stays one
# coherent step, and the surface carries its own marker so both a reader and
# a test can tell which step they are on.
disclosures = payment_disclosures(
plan_label="",
monthly_usd=0.0,
trial_end=None,
state=NOT_OPEN,
)
return render(request, "accounts_app/payment_step.html", disclosures.as_context())

# Which plan a new signup is put on must be DETERMINED and CHARGEABLE, not
# whichever catalog row comes first and not whatever ``?plan=`` names.
row = funnel_plan(user, requested_id=request.GET.get("plan"))

# The way the last attempt ended, read from the provider's return markers.
Expand Down
18 changes: 5 additions & 13 deletions apps/infra/auth_app/views/theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,10 @@
Theme resolution contract:

- The BASE default is DARK for every first visit, on every viewport.
- Only a REGISTERED user's EXPLICITLY saved profile preference is
served as a preference (``source: "profile"``); everything else is
served as a default (``source: "default"``) so the client can let an
explicit prior localStorage choice win over it. A profile row is
auto-created at registration with the dark default, so row existence
alone must NOT count as a saved preference (UserProfile.theme_explicit
gates it) — otherwise every login would clobber a stored light choice
back to dark.
- Only a REGISTERED user's saved profile preference is served as a
preference (``source: "profile"``); everything else is served as a
default (``source: "default"``) so the client can let an explicit
prior localStorage choice win over it.
"""
from __future__ import annotations

Expand Down Expand Up @@ -118,11 +114,7 @@ def api_get_theme_preference(request):
"source": "profile" | "default"
}

``source: "profile"`` only for an authenticated user whose profile
row carries an EXPLICITLY saved choice (theme_explicit). A row that
merely exists (auto-created at registration with the dark default)
is served as ``source: "default"`` so the client lets a stored
browser choice win.
``source: "profile"`` only for an authenticated user's saved row.
"""
if not request.user.is_authenticated:
return JsonResponse(dict(_DEFAULT_THEME_RESPONSE))
Expand Down
1 change: 1 addition & 0 deletions apps/infra/public_app/templates/public_app/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
{% load static vite i18n %}

{% block title %}{% trans "SciTeX — A platform for science" %}{% endblock %}
{% block meta_description %}{% trans "Connect literature, files, analysis, figures, writing, and compute in one SciTeX project context." %}{% endblock %}

{% block extra_css %}
<link rel="stylesheet" href="{% static 'public_app/css/landing/03-landing-sections.css' %}" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,33 @@
<div class="landing-v2-hero-copy">
<p class="landing-v2-eyebrow">{% trans "Open research infrastructure" %}</p>
<h1 id="landing-v2-title">
<!-- <span>{% trans "A Platform" %}</span>
!-- <span>{% trans "for Science" %}</span> -->
<span>{% trans "Where Research Happens" %}</span>
<span>{% trans "A platform" %}</span>
<span>{% trans "for science." %}</span>
</h1>
<ul class="landing-v2-points">
<li><i class="fa-solid fa-check" aria-hidden="true"></i><span>{% trans "Researchers, agents, projects, data, compute, and apps in one place." %}</span></li>
<li><i class="fa-solid fa-check" aria-hidden="true"></i><span>{% trans "Data provenance and verification built in by default." %}</span></li>
<li><i class="fa-solid fa-check" aria-hidden="true"></i><span>{% trans "Works from mobile, laptop, HPC, and your AI agents." %}</span></li>
<li><i class="fa-solid fa-check" aria-hidden="true"></i><span>{% trans "Open source, including this web platform." %}</span></li>
</ul>
<!-- {% trans "Researchers, agents, projects, data, compute, and applications connected in one place. Available from mobile, laptop, HPC, and your AI agents." %} -->
<p class="landing-v2-lead">
{% trans "Literature, files, analysis, figures, writing, and agents in one connected project." %}
</p>
<p class="landing-v2-context-line">
{% trans "Review from your phone. Work in the browser. Run where compute lives." %}
</p>
<!-- <p class="landing-v2-context-line">
!-- {% trans "Review from your phone. Work in the browser. Run where compute lives." %}
!-- </p> -->
<div class="landing-v2-actions">
<a href="{% url 'auth_app:signup' %}" class="hero-cta-button">{% trans "Try SciTeX™ Cloud with 30-day Free Trial" %}<span aria-hidden="true">→</span></a>
<a href="#pricing" class="landing-v2-button landing-v2-button-quiet">{% trans "See Plans" %}</a>
<a href="https://github.com/scitex-ai" target="_blank" rel="noopener noreferrer" class="landing-v2-button landing-v2-button-quiet"><i class="fab fa-github" aria-hidden="true"></i> {% trans "View in GitHub" %}<span aria-hidden="true">↗</span></a>
<a href="#pricing" class="landing-v2-button landing-v2-button-quiet">{% trans "See pricing" %}</a>
</div>
<!-- <p class="landing-v2-signin">
!-- {% trans "Already have an account?" %}
!-- <a href="{% url 'auth_app:signin' %}">{% trans "Sign in" %}</a>
!-- </p> -->
<!-- <p class="landing-v2-alpha">
!-- {% blocktrans with version=SCITEX_HUB_VERSION %}Alpha Release ({{ version }}) — Data persistence and API stability are not guaranteed. For production use, install the local Python toolkit. Any contribution welcome:{% endblocktrans %}
!-- <a href="mailto:{{ CONTACT_EMAIL }}">{{ CONTACT_EMAIL }}</a>
!-- </p> -->
<!-- <ul class="landing-v2-hero-rail" aria-label="{% trans 'One project across devices and compute' %}">
!-- <li>{% trans "Phone" %}</li>
!-- <li>{% trans "Laptop" %}</li>
!-- <li>{% trans "HPC + SSH" %}</li>
!-- <\!-- <li>{% trans "Custom Apps" %}</li> -\->
!-- </ul> -->
<p class="landing-v2-signin">
{% trans "Already have an account?" %}
<a href="{% url 'auth_app:signin' %}">{% trans "Sign in" %}</a>
</p>
<p class="landing-v2-alpha">
{% blocktrans with version=SCITEX_HUB_VERSION %}Alpha Release ({{ version }}) — Data persistence and API stability are not guaranteed. For production use, install the local Python toolkit. Any contribution welcome:{% endblocktrans %}
<a href="mailto:{{ CONTACT_EMAIL }}">{{ CONTACT_EMAIL }}</a>
</p>
<ul class="landing-v2-hero-rail" aria-label="{% trans 'One project across devices and compute' %}">
<li>{% trans "Phone" %}</li>
<li>{% trans "Laptop" %}</li>
<li>{% trans "HPC + SSH" %}</li>
<li>{% trans "Custom Apps" %}</li>
</ul>
</div>
<figure class="landing-v2-photo landing-v2-hero-photo">
<picture>
Expand All @@ -51,19 +44,19 @@ <h1 id="landing-v2-title">
fetchpriority="high"
alt="{% trans 'Two laboratory researchers review a microscopic image on a laptop while one holds a clipboard.' %}" />
</picture>
<!-- <figcaption>
!-- <span>{% trans "Research is human work." %}</span>
!-- <small>
!-- {% trans "Illustrative stock photography:" %}
!-- <a href="https://www.pexels.com/photo/two-scientists-working-inside-the-laboratory-4031694/"
!-- target="_blank"
!-- rel="noopener noreferrer">Edward Jenner / Pexels</a>
!-- · <a href="https://www.pexels.com/license/"
!-- target="_blank"
!-- rel="noopener noreferrer">{% trans "Pexels license" %}</a>.
!-- {% trans "The people shown are not SciTeX customers, employees, or endorsers; no endorsement is implied." %}
!-- </small>
!-- </figcaption> -->
<figcaption>
<span>{% trans "Research is human work." %}</span>
<small>
{% trans "Illustrative stock photography:" %}
<a href="https://www.pexels.com/photo/two-scientists-working-inside-the-laboratory-4031694/"
target="_blank"
rel="noopener noreferrer">Edward Jenner / Pexels</a>
· <a href="https://www.pexels.com/license/"
target="_blank"
rel="noopener noreferrer">{% trans "Pexels license" %}</a>.
{% trans "The people shown are not SciTeX customers, employees, or endorsers; no endorsement is implied." %}
</small>
</figcaption>
</figure>
</div>
</section>
Loading
Loading