Skip to content
Skip to documentation content

Overview / Overview

Overview

Use Overview to check recorded threats, active calls and the next work that needs attention in your workspace.

At a glance

Product route: /workspaces/{workspace_id}/dashboard.

Who can open this page: Enabled entitlement and owner or active membership; verification is not required.

Primary data owners: backend-derived, call-owner, extension-collected, signed-in-member, workspace-manager. Values reflect recorded data at page load; they are not a live view of Travian.

What you see

Read the five cards from Incoming Attacks through Def Calls, Push Calls, Operations and Villages. Incoming Attacks says Clear when its recorded count is zero. Def Calls retains an Active label even at zero. Push Calls shows count and aggregate percent fulfilled. Operations counts sign-up calls only. Villages counts captured current-overview rows, not every roster village. Select a card to open its page.

Attention shows defense account, village, coordinates, recorded/needed troops and optional Send before; push village, coordinates and recorded/needed resources; operation title and Sign-up ends. Each queue can show two items. Recent activity shows actor, event summary and minute timestamp for the newest ten recorded events.

Before verification, the intelligence view is replaced with claimed Account and Server when available, any detected-account mismatch, and verification instructions. In Trapitan, sign the Chromium extension into the same Trapitan identity, open the claimed Travian profile on the workspace server, and return after verification. A mismatch requires signing into the claimed game account before reopening its profile. The template also tells you to contact the owner if verification remains pending; ownership itself does not bypass verification.

Who fills in each field

Field or data What it means Who fills it in Can it be changed here? When it updates
Summary cards Five cards: undismissed unexpired incoming attacks, surviving defense calls, push-call count and fulfillment, sign-up operation count and captured village count. extension-collected, signed-in-member, workspace-manager, call-owner, backend-derived Read-only Page load from latest recorded values
Attention Up to two defense destinations with troop progress/deadline, two underfilled push destinations with resource progress, and two sign-up operations with title/end time. signed-in-member, workspace-manager, call-owner, backend-derived Read-only Page load from latest recorded values
Activity Ten newest recorded workspace events with actor label, summary and time; this is not a complete game activity feed. signed-in-member, workspace-manager, call-owner, backend-derived Read-only Page load from latest recorded values
Account verification Unverified view shows claimed account/server, verification steps and any detected-account mismatch instead of intelligence; navigation is hidden. signed-in-member, extension-collected, backend-derived Read-only Page load from latest recorded values

Calculations

Active incoming attacks

Calculation ID: dashboard.active-incoming. Count recorded undismissed waves after expiry cleanup.

Rule: dashboard_page first deletes impact_time <= now, then selects dismissed=false in this workspace; _dashboard_summary returns len(incoming_attacks).

Input Who fills it in Unit Required or optional Fallback
Incoming observations signed-in-member, extension-collected wave records Required Required; no fallback
Current time backend-derived UTC timestamp Optional datetime.now(UTC)

Output unit: attacks. Precision: Exact integer. Rounding: No rounding. Clamping: No output clamp. Time zone: UTC.

Edge cases: At the exact impact timestamp the record is expired. Dismissed records are excluded; no capture does not prove there are no game attacks.

Canonical implementation: _dashboard_summary. Non-canonical mirrors: None registered.

Used on: Overview

Calculation source references

Active defense calls

Calculation ID: dashboard.active-def-calls. Count defense calls remaining after deadline cleanup.

Rule: Delete workspace calls with non-null send_before <= now; null deadlines remain; count surviving calls in _dashboard_summary.

Input Who fills it in Unit Required or optional Fallback
Defense calls workspace-manager call records Required Required; no fallback
Current time backend-derived UTC timestamp Optional datetime.now(UTC)

Output unit: calls. Precision: Exact integer. Rounding: No rounding. Clamping: No output clamp. Time zone: UTC.

Edge cases: Null send_before has no deadline and remains active. Deadline equality is expired.

Canonical implementation: _dashboard_summary. Non-canonical mirrors: None registered.

Used on: Overview

Calculation source references

Push fulfillment

Calculation ID: dashboard.push-fulfillment. Percentage of total requested resources recorded as pushed.

Rule: If sum(needed)<=0 return 0; otherwise min(100, round(100*sum(pushed)/sum(needed),1)). This is the ratio of sums, not average row percentages.

Input Who fills it in Unit Required or optional Fallback
needed workspace-manager resources Required Required; no fallback
pushed signed-in-member resources Required Required; no fallback

Output unit: percent. Precision: One decimal place. Rounding: Python round(value,1), ties to even; row totals are integers. Clamping: Upper bound 100 only; nonpositive total needed returns zero. Time zone: not-applicable.

Edge cases: Empty calls return zero. Overfulfillment displays 100 while stored resource totals remain unchanged. Pushed endpoint replaces absolute total; positive delta alone creates attributed activity. Inline Push Calls mirror is per-call progress, using Math.round(ratio*1000)/10, unlike backend ratio-of-workspace-sums and Python ties-to-even. Needed is positive at creation.

Canonical implementation: _push_fulfillment. Non-canonical mirrors: Non-canonical mirror 1

Used on: Overview, Push Calls

Calculation source references

Attention queues

Calculation ID: dashboard.attention. Independently capped actionable queues for defense, push and operations.

Rule: Defense: retain null deadline or deadline>=current_utc; sort deadline then creation ascending and take2. Push: pushed<needed, creation descending take2. Operations: lifecycle sign-up, signup end ascending take2. _utc_sort_value maps missing dates to aware datetime.max.

Input Who fills it in Unit Required or optional Fallback
Defense and push calls workspace-manager call records Required Required; no fallback
Operation calls call-owner operation records Required Required; no fallback
Current time backend-derived UTC timestamp Optional datetime.now(UTC)

Output unit: up to two calls per queue. Precision: Exact ordered records. Rounding: No rounding. Clamping: No output clamp. Time zone: UTC; naive dates treated as UTC by sort helper.

Edge cases: The queues cap independently, not globally at two. Dashboard cleanup removes exact-deadline defense calls before this helper; helper alone permits equality. Missing defense deadline sorts last.

Canonical implementation: _dashboard_attention. Non-canonical mirrors: None registered.

Used on: Overview

Calculation source references

Operation lifecycle

Calculation ID: operation.lifecycle. Five states from signup time and stored publication/start state.

Rule: now<=signup_ends_at => sign-up; plan_data is None or status draft/finalized => preparation; status published without startedAt => ready; otherwise now>latest impact => completed; otherwise in-progress. Latest impact is max valid lastImpactAt, assignment impactTime and fakeCommands impactTime; absent valid times falls back to end of last operation day.

Input Who fills it in Unit Required or optional Fallback
signup_ends_at and operation_days call-owner UTC timestamp/date list Required Required; no fallback
plan_data.status/startedAt/impacts call-owner, backend-derived plan metadata Optional Absent plan => preparation; absent status preserves legacy in-progress semantics
Current time backend-derived UTC timestamp Optional datetime.now(UTC)

Output unit: state label. Precision: Exact ordered state decisions. Rounding: No rounding. Clamping: No output clamp. Time zone: UTC; naive parsed impacts assigned UTC.

Edge cases: Signup boundary equality remains sign-up. Latest-impact equality remains in-progress; completion is strictly later. Unknown/missing plan status is legacy in-progress unless completion time has passed. No operation days and no valid impact yields no completion timestamp.

Canonical implementation: _operation_lifecycle. Non-canonical mirrors: None registered.

Used on: Overview, Operation Calls, Operation Dashboard

Calculation source references

Freshness and updates

Reloading Overview reads the latest stored data and runs lazy deadline cleanup. The page is not a live game feed or an automatic dispatch tool. Incoming attacks expire at impact time; defense calls with a Send before deadline expire at that deadline. Activity is recorded only for implemented event-producing actions. The template prints stored timestamps to the minute; ordering and lifecycle decisions use UTC. No personal-clock conversion is performed by this widget.

Actions and permissions

Who can take action / Who can perform each action: the following gates are separate from page visibility. Hidden navigation alone never authorizes a request.

Action Actor Permission
Open linked calls signed-in-member Destination rechecks verified membership and collection; Overview access alone does not grant it

These links open Trapitan pages; they do not send troops/resources, dismiss attacks or change calls here. Destination collection routes require enabled entitlement and verified access, with active membership and the relevant grant for non-owners. Operation detail also scopes its call to the workspace. A visible card does not confer a destination grant.

States and edge cases

Zero incoming records displays Clear; it does not prove that the game has no attacks. Empty Attention says Nothing needs attention. Empty activity says No team activity yet. Missing captures can leave the tracked village count at zero. An unverified owner or member sees the verification screen, with navigation hidden, rather than empty intelligence cards. Disabled entitlement or absent/revoked access blocks opening the workspace. Destination failures use the destination handler; Overview has no inline call-edit error form.

Source references

Source reviewed: 2026-10-05

Source references

Stable page ID: overview.dashboard.

  • src/trapitan/api/routes/web.py
  • src/trapitan/web/templates/dashboard.html
  • src/trapitan/web/templates/partials/dashboard.html
  • src/trapitan/web/templates/dashboard_unverified.html
  • src/trapitan/activity/service.py
  • src/trapitan/authorization/dependencies.py
  • src/trapitan/authorization/policy.py