# Everyday & social apps

Everyday tools, Mail, Echo, Snapgram, Ember, News, Arcade, Assist and your city services.

## Everyday tools

| App | What players can do |
| --- | --- |
| Calendar | Create one-time, daily or weekly events with reminders and locations |
| Notes | Save notes, pin and colour them, give each a folder name, and search them |
| Clock | Set alarms and timers, or use the stopwatch |
| Calculator | Perform calculations on the phone |
| Weather | See the game's current weather, labelled with the player's area and street |
| Camera & Gallery | Take photos and videos, make albums and set wallpapers |
| Maps | Browse a map of the city, save places, share locations and set waypoints |
| Assist | Type a request, such as "call Mike" or "timer 5 minutes"; see [Assist](#assist) |

Calendar, Notes, alarms and timers stay with the phone and work without an active SIM. Their limits are in `config/productivity.lua`.

- **Notes.** A note's folder is a name on the note, shown on its card and found by search; there is no separate folder list. Control Center's **Quick Note** opens a new note.
- **Clock.** Alarms repeat on chosen days or ring once, and ring on the phone the player carries. A running timer shows in the Live Island.
- **Weather.** The temperatures and the next hours are estimated from the current weather type; they are not a forecast.

Maps shows your position, street names, carrier shops and saved places. Players tap the map to drop a pin, save places with a name, an icon and a colour, search them, and send one to a conversation. **Show on map** in Locate opens Maps on that one device. Shared locations are fixed points, not continuous tracking.

**The map image.** No map artwork ships with Wolfden Phone, so Maps shows a plain grid until you add a map image you have the rights to use. Put it in the resource's `maps/` folder, such as `maps/map.jpg`, or host it on an `https` link, then set it in `config/maps.lua`:

```lua config/maps.lua
provider = 'image',
image = {
    url = 'maps/map.jpg',
    -- ...
},
```

A render of the standard GTA V map frame used by the common tile sets fits as-is. For any other image, set `image.minX`, `maxX`, `minY` and `maxY` to the world coordinates of its edges: stand near two opposite corners of the map and adjust them until your marker sits in the right place at both. If the image fails to load, Maps falls back to the grid and says so.

## Mail

NovaOS Mail is an in-game mailbox with Inbox, Sent, Starred, Archive and Trash. Players can send text, photos and locations to up to 10 recipients; a location shows as a **Set Waypoint** button. There is no reply or forward button. Trash keeps mail for 30 days. It does not connect to real-world email.

Mail sent by your own resources can also carry contact cards and action buttons, such as Set Waypoint, Accept or Claim; see [Exports & integrations](#/docs/wd_phone/exports).

A phone signed in to a Nova Account sends and receives as the account's address, such as `sam@nova.mail`, on every phone signed in to it. Without an account, the phone uses its number's address, such as `5550123@nova.mail`. Configure Mail in `config/mail.lua`.

## Social apps

Three social apps are downloaded from Nova Store. Each has its own accounts with a username and password, separate from the phone number and the Nova Account. A player can sign in on any phone, and one phone can keep several accounts to switch between.

| App | What it is | Accounts per phone |
| --- | --- | --- |
| **Echo** | Short posts with up to 4 photos, threaded replies, likes, reposts, mentions and follows | 5 |
| **Snapgram** | Posts of up to 10 photos with tagged people, 24-hour stories, comments, saves and direct messages | 5 |
| **Ember** | Dating: a profile with photos, a swipe deck, Sparks, a Likes tab, matches and chat | 3 |

- Private accounts on Echo and Snapgram need an accepted follow before their posts show, and blocks apply both ways.
- **Echo** posts can be shared to a phone number by Messages or Mail, with a note. Search finds people only, and players can hide their profile from it.
- **Snapgram.** Tagged accounts are notified, and the post shows on their profile's **Tagged** tab. A story shows its author who viewed it, and a reply to a story arrives as a direct message.
- Ember profiles must be 18 or older, from a birthday that cannot be changed later. The deck only shows people who match each other's interests and age range. Each player gets three **Sparks** a day, which put them first in the other person's deck, and can **Rewind** their last pass. The **Likes** tab shows who already liked the player, so they can match at once. Players can unmatch, report a profile, and hide from the deck while keeping their matches.
- Notifications reach every phone the account is signed in on, and wait on phones that are off.
- These apps need service and use mobile data. Photos need a [media host](#/docs/wd_phone/media).
- Echo and Snapgram profiles, like Clips, can carry a verified badge; see [Verified badges](#/docs/wd_phone/clips?section=verified-badges). Short videos and live streams are in [Clips](#/docs/wd_phone/clips).
- Account limits and password rules are in `config/accounts.lua`. App limits are in `config/social.lua`, `config/snapgram.lua` and `config/ember.lua`.

**Moderation.** Grant your staff the Echo moderation permission in `server.cfg`:

```cfg
add_ace group.admin wd_phone.social.moderate allow
```

Staff with it get a moderation queue in Echo's Profile tab, where they can remove reported posts or dismiss reports, and a button to verify profiles. Snapgram and Ember have no moderation queue: other resources remove Snapgram posts with the `RemoveSnapgramPost` export, and read Ember reports with `GetEmberReports`. [Admin tools](#/docs/wd_phone/admin?section=give-your-staff-access) lists every moderation permission.

A player locked out of an account can have its password reset by an admin with `phoneadmin accountpw social <username> <newPassword>`. Use `snapgram`, `ember` or `clips` in place of `social` for the other apps.

## News

**News** is on every new Wolfden Phone and Wolfden Phone Pro. Anyone can read the Top Stories, browse sections, open the article's place in Maps, and share an article in Messages. A red **Breaking** banner shows a breaking story for two hours.

Newsrooms are run by jobs. By default, the **Los Santos Ledger** is written by on-duty players with the `reporter` job:

- **Writers** draft articles with a headline, section, body, a cover photo from their gallery and an optional location. They edit only their own unpublished articles.
- **Editors** publish, unpublish and edit any article. By default every staff member is an editor. Set `editorGrade` to the lowest job grade that may publish; with `bossIsEditor`, the job's boss grades stay editors too.
- **Breaking news** sends an alert to every phone with News. Each newsroom can send one every 10 minutes.

Add newsrooms, sections and limits in `Config.News.outlets` in `config/news.lua`. Staff with the `wd_phone.news.moderate` ACE, or the admin ACE, can remove any article:

```cfg
add_ace group.admin wd_phone.news.moderate allow
```

## Arcade

**Arcade** is downloaded from Nova Store and has five quick games: Merge Tiles, Snake, Mines, Sky Hop and Tic-Tac-Toe. They play offline, with no SIM or data. A game pauses when the phone is put away or locked.

- **Personal bests** stay with the phone, and are deleted when it is erased.
- **Leaderboards** show the best scores on the server under the player's Nova Account name, or as "Anonymous" with a short tag, such as "Anonymous #4F2A", when the player chooses to play anonymously or has no account. Opening one uses mobile data.
- The server checks every score against how the game was played, so scores cannot be faked faster than a person could play. Scores never pay money or items.

Set `Config.Arcade.leaderboards = false` in `config/arcade.lua` to keep personal bests only. To start a new season, another resource can clear a game's leaderboard with the `ResetArcadeLeaderboard` export.

## Assist

**Assist** is a phone assistant on Wolfden Phone and Wolfden Phone Pro. Players type a request; there is no voice input.

It understands commands in all twenty phone languages:

- Call or text a contact or number. A message is shown first with **Send** and **Edit in Messages**, and is never sent without a tap.
- Set timers and alarms.
- Set a waypoint to one of the player's saved places, or to a landmark such as the hospital.
- Show the weather.
- Turn the flashlight, Wi-Fi, airplane mode or Do Not Disturb on or off.
- Play, pause or skip music.
- Open an app.

Commands are free and use no mobile data. Assist can only do what the player could do in the apps themselves. Players can bind a key that opens the phone straight into Assist under Settings → Key Bindings → FiveM.

Add landmarks for directions, and other names for apps, in `Config.Assist.places` and `appAliases` in `config/assist.lua`.

### AI answers

Assist can also answer free-form questions with an AI model. This is **off by default** and needs an API key from the provider. It ships with an Anthropic provider.

1. Set the key in `server.cfg`. Always use `set`, never `setr`, which would send the key to players:

   ```cfg server.cfg
   set wd_phone:assist_key "your-api-key"
   ```

2. Set `enabled = true` in `Config.AssistAI` in `config/assist_server.lua`, which only the server reads.

Assist stays in character as an assistant in Los Santos. Only what the player typed is sent, with the last few messages of the conversation. No names, numbers, contacts or messages are sent, and nothing is stored or logged. The AI can suggest the same actions as commands, and a call or message it prepares still waits for the player's tap.

Control the cost in `Config.AssistAI`:

| Setting | Default | What it does |
| --- | --- | --- |
| `perPlayerDaily` | `25` | AI answers per character per day. `0` is unlimited |
| `perServerDaily` | `1500` | AI answers for the whole server per day. `0` is unlimited |
| `cooldownSeconds` | `5` | Seconds between one player's questions |
| `maxTokens` | `800` | The longest answer |

Each AI answer uses a little mobile data. The phone says when AI answers are off, and how many answers are left today.

## Services

Players send a service a short description and their location, and see whether anyone is on duty for it. Police, EMS, Mechanic, Taxi and Tow are set up by default.

- Each line can have three open requests and cancel them. A request nobody accepts expires after 30 minutes.
- On-duty employees accept a request, up to three at a time, and move it to **En Route**, **Arrived** and **Completed**. The player sees each step.

Edit `config/services.lua` so the service job names match your server's jobs. Availability uses job and duty information: a service can appear offline when no eligible employee is on duty. Other resources can add services with the `RegisterService` export.

Police and EMS requests can also go to your dispatch resource; see [Emergency calls and dispatch](#/docs/wd_phone/communications?section=emergency-calls-and-dispatch).

## Marketplace and Business

Both apps are downloaded through Nova Store. Marketplace provides classified listings with photos; buyers contact sellers through Messages without seeing their number. Business provides a directory, orders, invoices and employee fulfilment.

Set categories, businesses, products and jobs in `config/commerce.lua`. Test an order as both a customer and an employee before opening the feature to players. Marketplace moderation uses the `wd_phone.commerce.moderate` ACE.

Food businesses also take orders through [Bites](#/docs/wd_phone/city-apps?section=bites), and businesses can pay creators for clips from the Business app's **Campaigns** tab; see [Brand deals](#/docs/wd_phone/clips?section=brand-deals).

## City integrations

City displays vehicle, property, government and similar information supplied by compatible resources. Those resources must register a provider. Installing City does not automatically connect every garage, housing or dispatch script.

The character's vehicles and properties also have their own apps; see [Garage and Homes](#/docs/wd_phone/city-apps?section=garage). See [Exports & integrations](#/docs/wd_phone/exports) when connecting a custom resource.
