Farheimr

Changelog

Everything that has changed, newest first.

Invite people to a trip

The Invite button on a trip's members page started working. You could invite someone by their handle — typing a few letters suggested people, with those already on a trip with you first — or by email address. An invite was an offer, not a seat: the person saw the trip only once they accepted.

A bell appeared next to your account menu. Invites landed there, with Accept and Decline right on the notice, and stayed as a record of what you joined or declined. The invited person also got an email. Someone without an account yet was told they had been invited and joined the trip automatically once their account existed.

Assistants connected to your account could now read who is on a trip and in which role.

Assorted fixes and polish throughout.

Your name, your account

People finally had names. Until now everyone on a trip was shown as their email address; signing up now asked for a first name, an optional last name and a handle like @alex_ml, plus a choice of how the name appears to others. Anyone who already had an account was asked the same once, on their next visit.

A small avatar at the top of the trips list replaced the email and sign-out buttons. Clicking it opened the new account settings: a place to change your name and handle, upload a picture, set or change a password, manage passkeys, and pick your map app and colour scheme. Those last two moved out of trip settings and now follow your account to every device rather than living in one browser.

An assistant connected to your account could now read your profile and set your map and colour preferences, after asking for that permission.

Assorted fixes and polish throughout.

Polls became editable after they open

A poll stopped being final the moment it was created. Its options could be renamed, reordered, added to and removed, and the votes already cast on an option it kept came with it. The answer style could change too — between one choice each and ticking everything that works — and narrowing a poll people had already answered kept each person their first answer.

Editing a poll from a day also stopped sending you to the polls section to do it. The form opens where the poll is.

Assorted fixes and polish throughout.

Tidier web addresses in notes

A web address pasted straight into a note used to be printed out in full, which on a phone ran off the side of the day card. It became the site's name and the end of the address, with the middle left out — the whole thing showed on hover, and a PDF export still carried it in full.

Assorted fixes and polish throughout.

The share link stopped pretending to be a person

A trip's Members & access screen listed the share link the way it listed everyone else — initials in a circle, an email address nobody could write to, and a menu offering to make it an editor. It now shows as a link: a globe, a Public badge, and one action, which removes it and stops the sharing in the same step, after asking. What the link publishes stays where it was always decided, in the share dialog.

Assorted fixes and polish throughout.

Answer a poll straight from the reminder

The reminder that appears as a trip gets close listed what was still open, and left you to go and find each one. Every item in that list became a link, and opening one brought the poll up in a dialog with its options and notes, so a vote could be cast on the spot. The count corrected itself as soon as something was settled.

Assorted fixes and polish throughout.

Activities can be bookings, and every booking has a state

Anything on a trip that has to be reserved could be recorded as a booking, not only flights, hire cars and places to stay. Timed entry to a museum, a guided walk with a slot, a table held with a deposit — marking the activity as a booking put it in the trip's Bookings section with everything else that was reserved. Activities that were simply plans stayed plans.

Every booking gained a state as well: proposed, to book, booked, confirmed or cancelled. A trip could show what was still only an idea, what had been decided but not yet reserved, and what was held — instead of one "draft" covering all three. What a trip still had to book became readable from the bookings themselves.

Assorted fixes and polish throughout.

A trip stopped showing sections with nothing in them

A trip section that was empty, and that you had no way to add anything to, stopped being shown at all. Someone opening a shared trip saw only the parts that held something, rather than a run of headings over nothing.

The first section of a trip also started opening itself on arrival, so a trip opened on something to read instead of a list of headings.

Assorted fixes and polish throughout.

Long forms sit in two columns

Editing an activity, a stay, a meal or a payment used to mean scrolling past a tall stack of fields to reach the save button. Those forms moved into two columns wherever the window had the room, so most of them now fit in the box. A narrow window still showed one column.

The flight and car forms already used columns, but ones that changed width from row to row. They moved onto the same two.

Every dialog also changed the way it scrolled: the title and the buttons stayed in place while the content between them moved.

Dropdowns, date fields and tick boxes across every form also switched to the app's own controls. Several had still been the browser's, which meant they looked different from one form to the next and different again depending on which browser you opened them in.

Time fields changed with them. Picking a time opened the browser's own control; it now opens the app's, with hours beside minutes. Typing a time still worked exactly as before.

Assorted fixes and polish throughout.

A shared link shows the same trip

A shared trip and the trip its members edit had slowly become two documents. Days on a link were missing pieces the trip page had gained — a poll attached to a day, the act heading that repeats at the top of each printed page — and the two even disagreed on what a section was called. They are one document now: the same day cards, the same sections, the same numbering, with only the parts a link was set to publish.

Choosing what a link publishes also got finer. Each section is now its own permission rather than one setting covering most of them, which is what lets a link show the day plan and withhold the bookings. Payments still cannot be published at all.

Assorted fixes and polish throughout.

Viewers see a trip they can read

Someone invited to a trip as a viewer used to see every button an editor sees — add an activity, edit a stay, delete a note — and every one of them failed on use. A viewer now gets the trip as a document: the same days, stays, meals and notes, without the controls that were never theirs. Polls show their options and tallies and no longer offer a vote a viewer cannot cast.

Assorted fixes and polish throughout.

Links people can join in on

A shared link was read-only, always. It can now be set to let whoever holds it vote in a poll, tick a to-do off, or tick something off the packing list — each one off until you turn it on, each spelled out before you do, and none of them letting anyone add, rename or delete a thing. A first vote asks for a name so the tally says who wants what, and one vote each is kept per browser.

Shared links also show more of what they were meant to. Bookings listed nothing at all on a link, over trips that had a hotel and a flight in them. A day's notes had stopped showing on the trip page. Both are fixed, and the shared page is now built from the same parts as the page its owner edits — so what a link shows is only ever what it was set to show.

Assorted fixes and polish throughout.

Price something without committing to it

Payments could be marked as proposed — a quoted or floated cost that nobody has agreed to yet. Proposed amounts got their own line in the ledger and stayed out of the upcoming and grand totals, so a trip's real cost stayed accurate while the possible spend was still on the page.

Polls where you need them

Polls stopped hiding in a narrow strip. On a day, a poll now sits in the card's second column beside the notes rather than under them, and the Polls section lays polls out two to a row on a wide screen. A shared link shows a day's poll on its day card too — it used to appear only in the link's Polls section, so a reader of the link and a member of the trip saw different days.

Assorted fixes and polish throughout.

Timeline details read as written

An activity's details are formatted the way they were written. A bulleted list of stops rendered as a list, an address linked to your map app, an emphasis kept — instead of the raw markers running together in a single line. Longer details sit under the activity's name rather than beside it, so a few paragraphs of research on one stop stay readable.

Assorted fixes and polish throughout.

Snapshot files retired

Trips could no longer be saved to, or loaded from, a file on your computer. The Import button, the download, and the "Restore previous version" entry all went away together.

Restore had never understood that a trip has more than one person on it. Pressing it rolled the whole trip back for everybody, wiping any work done since that file was saved, and there was only ever one step of undo to go back to. Going back to how a trip was is worth doing properly, and that belongs to a feature still ahead rather than to a file on disk.

Nothing that keeps a trip safe changed: trips are backed up daily.

Assorted fixes and polish throughout.

Settings does what it looked like it did

The trip's own details became editable from settings — its name, its dates, the timezone everything is read in, the currency and what the cover is a picture of. The cover got its own panel too: make a new one, or upload your own image.

The people on a trip started looking like people. Each one showed an initialled mark and their address, with their own menu for changing what they can do or taking them off the trip. An invitation nobody had accepted said so, and said how long it had been waiting.

Giving one person one thing became its own panel. A viewer can see the payments, or the notes, without being made an editor — and what has been handed out is a list anybody on the trip can read.

The reminders drew themselves on a line running from the earliest nudge to the day you leave. A reminder that had already come around was filled in, and each one said whether it actually went out.

Agents can read the planning playbook

The guidance that teaches an assistant how to plan a trip here — when to suggest something rather than just add it, what belongs on a poll option, how to leave a chain of steps behind — became readable by every assistant, not only the ones that fetch documents.

An assistant could also check a suggestion it had just left, and see the whole thing rather than a one-line summary of it.

Trips have settings, and they nudge you before you leave

A trip got a settings page, reached from the menu beside the Add button. Everyone on the trip could open it; what each person found inside depended on what they were allowed to change.

Trips began nudging as they got closer. Two weeks out, a banner on the trip page named what was still open. A week out, and again two days out, an email said the same. Nothing ever closed or decided itself, and a nudge with nothing to say was never sent — a reminder told a person, and the person still decided. Anyone could turn the emails off for a trip without turning them off for everybody else.

Editors could bring people in from that point. Before, only the person who made the trip could add anybody, which made them a bottleneck on their own trip. An editor could invite viewers; who else could edit stayed the owner's call.

Anyone but the owner could also leave a trip.

The map and appearance switches moved off the trip page and into settings.

Assorted fixes and polish throughout.

Plans can follow a to-do, not just a vote

A to-do could carry a suggestion of its own, and ticking one off could set the next step going. Ring the restaurant, tick it off, and the note recording what they said writes itself — if that is what whoever planned it asked for.

Before this, a plan of more than one step had to run through a vote, because a vote was the only thing the app knew how to wait on.

A plan replaces the suggestion it grew out of

A note listing four places to eat usually picked up a single suggestion: turn it into a poll. Asking for the rest — the poll, the winner on the evening, the table to book — used to fail, because the plan tried to sit next to that suggestion rather than replace it. It replaces it now, so one note carries one offer and the whole plan is behind it.

Assorted fixes and polish throughout.

Suggestions from an agent actually arrive

An agent could not leave a suggestion on a trip: every attempt was refused before it reached the plan. Suggestions now arrive as intended.

Assorted fixes and polish throughout.

Settle a question together

Trips gained polls. Ask the people on a trip where to eat on Friday, put the options up with their addresses and opening hours attached, and watch the favourite move as answers come in.

Two kinds of question. One vote each, when you want to know what people prefer. Or tick everything that works, when what you actually need is the one option nobody objects to — the poll then tells you which that is.

A poll sits on the day it belongs to and shows in that day's card, or on the whole trip when the question has no date. It stays open until somebody closes it. Nothing closes itself and there is no deadline: a trip is organised by people, and if you need an answer you can ask for one.

Voting became its own permission, so somebody can be given a say in where you eat without being given the run of the itinerary. A share link can now publish a poll and its result too, if you switch it on — it never shows who voted for what.

Assorted fixes and polish throughout.

Notes written for you keep their order

Notes added on your behalf all claimed the first place in the list, so they appeared among each other, and among the ones you had written, in no particular order. They keep the order they were written in from this point.

A plan that raised a reminder already on your list used to fail with a message meant for engineers. It leaves a suggestion instead.

Assorted fixes and polish throughout.

Suggestions can sit on the plan itself

Until now a suggestion could only hang off something written down — a note, a poll, a to-do. It could sit on the plan itself from this point: on the visit, the drive, the ferry. "Ring the guesthouse and confirm they hold the room" belongs on the guesthouse visit, and turns up for whoever opens that day.

Assorted fixes and polish throughout.

A plan can set a meal, time and place included

A plan that added a meal to a day could give it only a name. It could carry the time it is served, where it is, and the address from that point on — the same things the form has always taken.

Settling a vote onto a day that already had that meal used to fail with a message meant for engineers. It leaves a suggestion instead, and never quietly replaces what somebody else put there.

Assorted fixes and polish throughout.

Notes gained formatting and tappable addresses

Notes started rendering as rich text. Lists, bold, tables and links all worked, and a web address pasted into a note became a link you could actually follow instead of plain text sitting there.

Addresses became tappable too. Writing one as [Michels Stern](<geo:Bahnhofstraße 9, 97340 Marktbreit>) turned it into a link that opened in your own map app — Waze, Google Maps or Apple Maps, whichever you had chosen for the trip. Coordinates worked in place of a street address.

Nothing was guessed: an address only became a link when it was written as one, so a note could mention an address without it turning into something to tap.

Assorted fixes and polish throughout.

No more empty At glance

A trip page opened with an "At glance" heading over nothing until the trip had a flight or a hire car booked. That section is now hidden until there is something in it, and the sections below it renumber so the document still counts from one.

Assorted fixes and polish throughout.

Live updates stopped dropping out

An open trip reconnected to its live feed every few seconds, and reloaded everything each time it did. The connection now stays up on its own, so a change made by someone else arrives without the page quietly re-fetching the whole trip in the background.

Assorted fixes and polish throughout.

See changes as they happen

A trip you had open started keeping up with itself. When somebody else edited the same trip, or an assistant added a booking while you were looking at the page, the change appeared where before you had to reload to find it.

Edits stopped quietly overwriting each other, too. Saving a form that somebody had changed while you were filling it in used to undo their work without saying so. Now anything the two of you touched separately is simply kept, and on the rare occasion you both changed the very same thing, the app shows you both values and lets you pick.

Assorted fixes and polish throughout.

A drive became one thing on the day

A drive used to be two entries. You put two points on a map to get the line and the distance, then wrote a separate line on the timeline saying where you were going, typing both times yourself and copying the distance across. Nothing kept the two in step, and either could be edited without the other noticing.

A journey is one entry now. It has a start and an end, and once it has both, the road distance and the driving time are looked up and filled in for you. The arrival is worked out from the departure, so you type one time rather than two — and when the route turns out to be longer than you thought, the arrival moves with it.

Breaks are their own number. Say the day needs forty-five minutes of stops and the arrival accounts for it, while the plan still shows the real driving time underneath — four hours forty-five on the road, arriving at half past four. You can also fix the other end instead: "we have to be there by 16:00" sets the departure rather than the other way round.

The map follows the plan. Everything with a place on it appears, and every journey draws its line, so there's no separate list of points to keep up to date. Anything you'd rather not see on the map can be switched off on its own. Existing trips kept their routes — the old points became journeys, and where a day already described the drive, that entry is the one that gained the two ends rather than gaining a twin.

Leave the starting point out and it picks up wherever the day had got to, usually the previous night's stay.

A journey's two times are read where they happen, so a drive that crosses into another timezone arrives at the clock time you'll actually see when you get there.

Ferries and walks can be journeys too. They draw their line between the two ends, but as a dashed one, and without a distance — the road a car would take between two islands isn't the crossing.

An assistant planning a trip works the same way now: it adds a drive with both ends and is told back what the road actually costs, so it can decide the day needs a longer buffer instead of guessing at arrival times. It can also ask how far apart two places are before committing to anything.

Assorted fixes and polish throughout.

A guide for connecting an assistant

Letting an AI assistant help plan a trip got a page of its own, reached from the trips list. It gave the address to paste in, the single command to run, and the six permissions an assistant asks for — written as sentences rather than as technical scopes.

It was equally clear about the limits. An assistant could never do more than the person who connected it: a trip shared read-only stayed read-only through an assistant too. Deleting a trip and changing who a trip is shared with were left out on purpose, and removing anything reported exactly what it removed.

Everything you've booked, in one table

Bookings became a single table. Flights, hire cars and places to stay now sit together in the order they happen, and a filter narrows it to one kind when that's the question. Stays appear there for the first time — a three-night booking as one line rather than three.

Nothing is added from that section any more. The button under the trip's title already adds a flight, a car or a stay, and so does a day, so Bookings is somewhere to read what's booked rather than a third place to enter it.

What a trip still has to book or check moved out into its own section, and a shared link can now publish it separately from the bookings themselves. A link that was already sharing Bookings won't be sharing the to-do list until that box is ticked.

A price entered on an activity or a place to stay now shows up in Payments straight away instead of on the next visit.

Deleting something that cost money asks what should happen to the payment. A cancelled ferry whose ticket wasn't refunded is still part of what the trip cost, so the payment can stay on the trip on its own — or go with the thing it paid for. Clearing an amount asks the same question.

An assistant connected to Farheimr can now fill in an address, a price, a cancellation policy and whether a booking is confirmed. Before this it had nowhere to put any of them and would write them into the notes instead, which looked like it had understood and hadn't quite.

Assorted fixes and polish throughout.

Plan a trip by talking to an assistant

Trips could be planned through an AI assistant rather than by filling in forms. Connecting one asked for permission first, on a screen that spelled out in plain words what it would be able to do — read your trips, change what was planned, touch bookings, see or change costs, remove items — and each of those could be granted separately.

An assistant could create a trip, fill in its days, add activities, lodging, flights, car rentals and meals, keep the packing list and the ledger, and look up real places to pin things to. It could never do more than you could yourself: everything it tried was checked against your own permissions on that trip, so a shared trip you could only read stayed read-only through an assistant too.

Deleting a whole trip was left out on purpose, and so was changing who a trip is shared with. Both stayed in your hands. Removing a single item told you exactly what it removed, so putting it back took one sentence.

Assorted fixes and polish throughout.

A shared link shows the trip as it is now

Shared links had fallen behind the trip page. Flights were still listed under "At a glance" instead of Bookings, hire cars didn't appear at all, and every section arrived expanded — so a link you sent someone showed a different-looking document from the one you were looking at.

A shared trip is now built by the same code as the trip itself, so the two can't drift apart again. Sections arrive folded the same way, "At a glance" opens on its own when there's something in it, and Bookings reads the same on both.

Nothing changed about what a link publishes. Payments still can't be shared, references and seat numbers still stay out, and a link still shows only the sections you ticked — a couple of them just say so more honestly now: a link doesn't carry hire cars, so it no longer implies a trip has none.

Hire cars, one add button, and a quieter trip page

A hire car became something a trip can hold properly: the company, the car, when and where it's picked up and dropped off, and the booking reference. Cars are listed under Bookings alongside flights, and the first one collected appears at the top of the trip beside the flight stubs.

The button that adds anything to a day moved up to the trip as well. It sits under the trip's title now, offers flights and cars as well as everything a day can hold, and asks which day it's adding to when what you picked belongs to one — already filled in when you started from a day.

A trip page opens folded up. Every section starts closed except "At a glance", which opens on its own whenever there's something in it, so a long trip starts as a table of contents rather than several screens of scrolling.

"At a glance" is now purely something to read. The flight list moved down to Bookings, and the form that used to sit under the trip's title is gone — the panel is filled in from the flights and cars themselves, so it can't fall out of step with them.

Bookings reads as three lists now — flights, cars, and what's still to book — each with its own heading and add button, and a line saying so when there's nothing in it yet.

A flight number links to live tracking on the day it flies. Tapping it on the panel, or in the new flight details that open from a booking, opens FlightAware in a new tab. On any other day it's there but greyed out, and says when it opens — the times shown until then are the schedule as booked.

The trip page now ends with its small print: converted amounts are an indicative rate rather than a quote, and flight times aren't live.

Phases moved into the trip's Options menu, beside the export and the back-to-trips link.

Assorted fixes and polish throughout.

Say where an activity or a meal actually is

Activities and meals gained an address, the same one a booking has had: type it, or start typing and pick the place from the list to attach real coordinates. A museum visit could then be opened in maps straight from the timeline, a dinner from the day's meal slots, and both arrived in the calendar export with a location a phone could navigate to. Until then only a hotel and a day's stops could say where they were, so a trip planned by hand had pins for the nights and nothing for the days.

An address nobody's map knows — "the guesthouse past the bridge" — stayed a perfectly good answer. The words are what got saved; picking a match only added coordinates on top.

Address lookups started favouring wherever the trip already goes, so a search for a common name found the one nearby instead of one on the far side of the world, and a search that found nothing retried with just the names in it.

Assorted fixes and polish throughout.

A shared trip looks like the trip

Opening a shared link started showing the trip the way its planner sees it. The same cover and masthead, the same numbered sections you can fold away, the same contents panel down the side — and the same day cards, with sunrise and sunset, the meals, the map with the drive traced on it, the timeline, where you're staying and the notes for the day.

Nothing on it can be changed, and nothing that belongs to whoever shared it shows up: no way to export their trip, no way to get back to their other ones, no tasks of theirs.

Sections left out of a link stop leaving a hole where they were. A link that doesn't share payments numbers the sections it does share one, two, three.

Flights show up on a shared trip

A shared link showed an empty "At a glance" panel on trips that had flights on them. Both flights now appear at the top of a shared trip the way they do for whoever planned it — the arrival and the departure as boarding-pass stubs, with every leg listed underneath.

Seat numbers and booking references stay out of a shared link, as they always have. The flight number itself is shown, since it's the same one printed on any departure board.

The estimated driving distance also stopped disappearing from a shared trip that has no routes mapped yet.

Share a trip with a link

A trip could be published behind a link anyone can open, with no account and no sign-in. You chose what the link showed — the itinerary, the bookings, the packing list, the open questions — and could change your mind later without the link changing.

Payments never appeared on a shared trip, and neither did booking confirmation numbers. Notes stayed private unless you deliberately said otherwise.

Replacing the link gave a new URL and stopped the old one working the moment you did, so a link sent to the wrong person could be taken back.

What a hotel costs now shows up with everything else you're paying for

Recording what a stay or an activity costs started putting it straight into the trip's payments, alongside everything else — with whether it's paid and the date it's charged, and a mark showing which booking it came from. Before, that money sat on the booking where the payments table couldn't see it, and had to be typed in twice to appear in a total.

It's one figure in one place now, so changing it from either side changes it everywhere. Clearing it, or deleting the booking, takes it back out of the ledger.

Charges also started travelling with the booking they belong to when a trip is exported and imported somewhere else, instead of arriving as an anonymous line.

Add your flights to a trip

Flights became something a trip actually holds, instead of text typed into the panel at the top of the page. Each one takes a flight number, the two airports, the times, and the details you'd otherwise go hunting through your inbox for — booking reference, seat, what you're allowed to bring.

The two boarding-pass stubs at the top of a trip started filling themselves in from that list. The first flight of the trip became the one you arrive on and the last became the one you leave on, so a trip with a connection each way showed the flight you leave home on and the flight that brings you back, with everything in between still listed underneath. Booked the outbound and nothing else? It showed once, rather than pretending to be a return as well.

Typing a flight number was enough to fill in where it goes. AC908 became Toronto to Manchester on its own; the times were still yours to copy off the booking.

Times started being read at the airport they belong to. A flight leaving Montréal at six in the evening said six in the evening, not whatever that happened to be where the trip was going — which had been impossible to write down correctly before. Airline logos appeared on each flight, worked out from the flight number, and airport codes could be searched by city name.

Calendar subscriptions picked up every flight as its own event, with the real times.

Assorted fixes and polish throughout.

One button to fill in a day, one to manage it

Every day on a trip gained a single Add button covering everything a day can hold — an activity, a meal, somewhere to sleep, a note, something to chase, documents, or the day's own route. Picking one, filling it in and saving dropped you straight back at the list, so a whole day could be planned without reopening anything.

Beside it, an Edit button opened the day itself: everything already on it, in one place, each item with its own edit and delete, and the activities without a time movable up and down the timeline. Editing one of them happened inside the same window, with a way back to the day, instead of piling a second window on top of the first.

Days also started appearing as soon as a trip had dates, rather than only once something had been planned on them.

Assorted fixes and polish throughout.

A trip you can plan from scratch

Days gained the places you pass through. Search for a town, a viewpoint or a ferry terminal and it joins the day's route — which is what draws the map, works out how far you're driving and how long it takes, and decides where sunrise and sunset are measured from. Until now those places could only arrive with an imported trip, so anything planned by hand had no map and reported no driving at all, however much of it you'd written down.

Stops can be reordered along the route, and renamed for the day that uses them without renaming the place everywhere else.

Trips also gained the named stretches days can belong to, and the at-a-glance panel for the flights in and out and the hire car — both of which existed to be read but had no way to be filled in.

Stays that span more than one night

A hotel booked for three nights started showing on all three, marked with which night of the stay each day is, and again on the check-out morning with the time you leave. Until now it appeared only on the day you checked in, and every day after read as though nothing had been booked.

Somewhere to stay also gained an address. Start typing and it looks the place up, filling in the full address and remembering where it actually is — so the calendar export knows the location too. An address no map has heard of can still be typed in as-is.

Moving around stopped reloading everything

Going back and forth between your trips and a single trip used to re-fetch everything each time — the same unchanged plans, and the cover image along with them. Nothing had changed, but the app asked for all of it again anyway.

It now remembers what it already has. Returning to a trip you looked at a few minutes ago is immediate, and a trip's cover is fetched once rather than on every visit. Edits still appear the moment they are made.

Assorted fixes and polish throughout.

The app loads on the first try

Opening Farheimr after leaving it alone for a while could hang indefinitely, and often never loaded at all no matter how long you waited — reloading two or three times was sometimes the only thing that worked, and sometimes nothing did.

Nothing runs between visits, by design, so the first request of the day had to wake the server up. That wake-up had grown slow enough to time out before it ever finished. It was cut from over a minute to a fraction of a second, and the first page load is now indistinguishable from any other.

Assorted fixes and polish throughout.

Trips open instantly

Opening a trip from your list stopped waiting on anything. The list already knows everything a trip's page needs to start drawing, so it keeps it instead of asking again — and the page's own code is fetched as soon as your pointer reaches the card, before you have clicked it.

The day-by-day plan, which does still have to load, now holds its place while it does. The page lays out the right number of days from the start rather than appearing empty and then pushing itself around once they arrive.

Assorted fixes and polish throughout.

Set your trip's timezone

Trips gained a timezone field, on both the new-trip and edit-trip forms. It starts on the zone your browser reports, and searching for a city or an offset finds the rest.

Until now there was no way to say where a trip was, and every trip was read in Central European time. That was invisible rather than wrong-looking: an activity at 19:00 or a check-in at 15:00 would show the hour you typed, while "Day 3 of 12" and the day's sunrise and sunset quietly belonged to somewhere else. Trips that already existed keep the zone they had.

Sunrise and sunset times now follow the trip's own zone as well, and subscribed calendars carry their times in a form every calendar app reads the same way.

Assorted fixes and polish throughout.

Documents open from the trip page again

The documents dropdown on a day, in the trip view, started opening the files you uploaded to it.

It had been fetching documents by web address, from a time when a handful of booking PDFs were shipped with the app itself. Anything uploaded since went to private storage instead and was reached through a temporary link, which that dropdown never learned to ask for — so it listed your files and then failed to open them. The day view had always done this correctly; now both do.

Assorted fixes and polish throughout.

Trips say when they last changed

The line at the top of a trip used to read "Generated" followed by that day's date, which told you nothing except which day you happened to be reading it. It now says when the trip was last edited — "Updated: 2 hours ago" for a recent change, and a full date and time with the timezone once the change is older than a day. Times appear on your own clock, not the trip's, since an edit happens wherever the person making it is; hovering shows the exact instant either way.

Making that line honest meant fixing what sat behind it. A trip only counted as changed when it was renamed or restored from a file, so editing a note, an activity, a payment or a packing item left it looking untouched — a trip worked on for weeks could still claim it was last changed the day it was named. Every edit now counts, including ticking something off a packing list, and trips that already existed were updated to reflect their most recent change.

Assorted fixes and polish throughout.

PDF export retired

Exporting a trip as a PDF was removed. The button remains visible but no longer does anything, so it is obvious the feature went rather than appearing to have broken.

It had been a way to carry the whole itinerary on paper, and it was never the way most trips were actually taken on the road — the day view and the calendar subscription both cover that better, and the calendar keeps updating after a plan changes, which a printout never could.

Trips can still be exported in full as a .farheimr file, which is the format that preserves everything and can be imported again.

Assorted fixes and polish throughout.

Manage your passkeys

Passkeys became something you can manage rather than something set once at signup. The account menu gained a passkey list, so a new device could be added, and a passkey belonging to a phone or laptop you no longer have could be removed.

Previously a passkey could only be created while accepting an invitation, which meant losing the device that held it left no route back to fingerprint or face sign-in.

A front door

Farheimr got a public face. farheimr.com became a place you could read about the app rather than a redirect into it, with this changelog alongside it, and the app itself moved to app.farheimr.com.

The move signed everyone out once. Passkeys carried over — they were re-anchored to the domain rather than to one address within it, so they keep working through this change and any later one.

Plan a whole trip by hand

Trips could be built end to end without touching anything technical. Activities and meals joined lodging, notes, tasks, payments and documents as things you could add, edit and remove yourself.

Two details mattered more than the forms did:

  • A day became a fact and a time became optional. "Visit Geiranger, sometime Tuesday" was a thing you could write down, instead of being forced to invent an hour you did not mean.
  • Meals you had not planned started showing as gaps rather than as nothing at all, so the ones you forgot were visible before you left.

Times also started being read in the trip's own timezone rather than the one you were planning from — so a hotel booked from another continent no longer landed on the wrong day.

Assorted fixes and polish throughout.

Share a trip with the people on it

Trips stopped being a single person's document. You could invite the people you were travelling with and give them the run of the plan, or just a view of it — owners, editors and viewers, with private notes staying private.

Alongside it, trips became something you create yourself rather than something that had to be imported, each one arriving with a cover image of its own.

Accounts became real accounts, with passkeys for signing in without a password.

Take the itinerary with you

A trip stopped living only on a screen. You could print it as a proper itinerary, subscribe to it as a calendar so the days appeared alongside everything else in your life, and export the whole thing as a file you keep.

Days got their own pages, reachable by QR code from the printed version — so a paper itinerary could hand you back to the live one.