Files
webmaster 9d14652a57 hide [hidden] site-wide: one [hidden] { display:none !important } in style.css
A filtered-out directory card stayed visible. The card is targeted by an
id-based ready-state selector (`.js #directory[data-dir-state="ready"]
#dirGrid > .dev-card`, two ids), which outranked the old per-element patch
`.dev-card[hidden] { display:none }` — so `card.hidden = true` set the
attribute and every card stayed on screen while the count line correctly
read "Showing 1 of 4".

Fix: one rule, `[hidden] { display:none !important }`, early in /style.css.
A class- or id-based `display` can no longer beat the attribute, so this
cannot recur with the next class that sets `display`. The per-element
`[hidden]` patches are removed so a single mechanism governs:
 - odoo-community-developers: cards + filter row + pager + modal
   (load-bearing — each sets `display`); focus-sliders/noscript (redundant)
 - index/de/es `.hero-notice[hidden]`, odoo-black-friday `.ads-consent[hidden]`
   (redundant — those elements set no `display`)
Re-fingerprint local assets (style.css changed): /style.css?v 3332fbba93 ->
061517baef across 51 pages.

Measured in a real browser (local harness, stubbed webhook; no record created,
no probe write) — computed display + geometry, never the `hidden` property:
 - filtered to one card: the other three report display:none and height 0;
   the visible set (1) equals the count line ("Showing 1 of 4") — 1 == 1
 - HEAD (pre-fix) reproduces the defect: 3 cards hidden=true yet display:flex,
   height 599.38 each; 4 visible vs the count's 1
 - pager: display:none height 0 with one page; display:flex height 66.83 with
   12 cards (Page 1 of 2); page 2 hides page-1 cards (display:none)
 - modals closed: display:none height 0; load state: cards 0, pager/empty
   display:none, filter row visibility:hidden by design
 - 375 px: same result, no horizontal overflow; avatar ask-row top identical
   across a row (2053.97 / links 2086.91)
2026-11-03 22:34:39 +00:00

255 lines
10 KiB
HTML

<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>
Set Up Automated Backups in Under 2 Minutes | ODOO4projects
</title>
<meta
name="description"
content="Protect your Odoo data in moments. This speed-run walks you through enabling automated daily backups with one click."
/>
<link
rel="canonical"
href="https://odoo4projects.com/blog/posts/speed-run-backup.html"
/>
<meta
property="og:title"
content="Set Up Automated Backups in Under 2 Minutes"
/>
<meta
property="og:description"
content="Protect your Odoo data in moments. This speed-run walks you through enabling automated daily backups with one click."
/>
<meta property="og:type" content="article" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="icon" href="../../images/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css?v=061517baef" />
<style>
.container {
width: 80%;
max-width: 800px;
margin: 0 auto;
padding: 0 20px;
}
@media (max-width: 768px) {
.container {
width: 100%;
}
}
.blog-header {
padding: 2rem 0;
border-bottom: 1px solid var(--border);
}
.blog-header a {
color: var(--primary);
text-decoration: none;
font-size: 0.85rem;
}
.blog-header a:hover {
text-decoration: underline;
}
.post-title {
font-family: "Inter Tight", sans-serif;
font-size: clamp(1.5rem, 3vw, 2.2rem);
font-weight: 700;
margin: 1.5rem 0 0.5rem;
color: var(--dark);
}
.post-meta {
color: rgba(33, 37, 41, 0.5);
font-size: 0.85rem;
margin-bottom: 2rem;
}
.post-content h2 {
font-family: "Inter Tight", sans-serif;
font-size: 1.3rem;
margin-top: 2rem;
color: var(--dark);
}
.post-content p {
margin: 1rem 0;
color: rgba(33, 37, 41, 0.7);
line-height: 1.7;
}
.post-content ul,
.post-content ol {
padding-left: 1.5rem;
}
.post-content li {
margin: 0.5rem 0;
}
.post-content a {
color: var(--primary);
}
.post-content code {
background: var(--light);
color: var(--dark);
padding: 0.2rem 0.4rem;
border-radius: var(--radius);
font-size: 0.9em;
border: 1px solid var(--border);
}
.post-content pre {
background: var(--light);
color: var(--dark);
padding: 1rem;
border-radius: var(--radius);
overflow-x: auto;
border: 1px solid var(--border);
font-size: 0.9rem;
}
.pro-tip {
border-left: 3px solid var(--primary);
background: rgba(113, 75, 103, 0.04);
padding: 1rem 1.25rem;
margin: 1.5rem 0;
border-radius: 0 var(--radius) var(--radius) 0;
}
.pro-tip strong {
color: var(--primary);
}
.cta-box {
border: 1px solid var(--border);
background: #fff;
padding: 1.5rem;
margin: 2rem 0;
border-radius: var(--radius);
text-align: center;
}
.cta-box h3 {
margin: 0 0 0.5rem;
color: var(--dark);
}
.cta-box p {
margin: 0 0 1rem;
color: rgba(33, 37, 41, 0.7);
font-size: 0.9rem;
}
.post-footer {
padding: 2rem 0;
border-top: 1px solid var(--border);
margin-top: 2rem;
}
.post-footer a {
color: var(--primary);
text-decoration: none;
}
.post-footer a:hover {
text-decoration: underline;
}
</style>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Set Up Automated Backups in Under 2 Minutes",
"datePublished": "2026-06-10",
"url": "https://odoo4projects.com/blog/posts/speed-run-backup.html",
"author": {
"@type": "Organization",
"name": "ODOO4projects",
"url": "https://odoo4projects.com/"
},
"publisher": {
"@type": "Organization",
"name": "ODOO4projects",
"url": "https://odoo4projects.com/",
"logo": {
"@type": "ImageObject",
"url": "https://odoo4projects.com/images/logo.png"
}
}
}
</script>
<!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script>
<script>
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init()
</script>
</head>
<body>
<main>
<div class="container">
<div class="blog-header">
<a href="../../index.html#blog">&larr; Back to Blog</a>
</div>
<article>
<h1 class="post-title">
Set Up Automated Backups in Under 2 Minutes
</h1>
<div class="post-meta">June 10, 2026 &middot; Speed Run</div>
<div class="post-content">
<p>
Data loss is every business owner's nightmare. With
ODOO4projects, backups are already running before you
look — here's how to check them in under two minutes.
</p>
<h2>Step 1: Open Your Odoo</h2>
<p>
Log in to your Odoo instance — the same login you always
use. There is no separate hosting dashboard to open.
Backups run as a scheduled action inside Odoo, and you
manage them there.
</p>
<h2>Step 2: Check the Backup Job</h2>
<p>
Backups are already running for you. To see or adjust
the schedule, turn on Development Mode in Odoo and open
the scheduled action that runs the backup job. You can
review it, adjust it, or trigger it by hand.
</p>
<pre><code>Odoo &gt; Settings &gt; Development Mode (on)
Odoo &gt; Settings &gt; Technical &gt; Scheduled Actions &gt; backup job</code></pre>
<h2>Step 3: You're Done</h2>
<p>
That's it. Your data is backed up on the schedule, and
you can trigger a backup by hand any time from the same
screen.
</p>
<div class="pro-tip">
<strong>Pro Tip:</strong> Your <a href="../../index.html#pricing">plan</a> decides how many
backups you keep. Side Hustle keeps one, On the Rise and
Powerhouse keep four. When the slots are full the oldest
backup is overwritten and permanently deleted, so before
a major change, download a copy of the database you want
to keep.
</div>
<div class="cta-box">
<h3>Protect Your Business Data</h3>
<p>
Every paid plan includes automated backups — one
slot on Side Hustle, four on On the Rise and
Powerhouse. The free trial has none.
</p>
<a href="../../index.html#pricing" class="btn btn-primary"
>Choose a Plan</a
>
</div>
<p>
A backup is the safety net for a single change. When the change is bigger than one
module, a version upgrade or a migration, a staging environment is worth it. Read
<a href="../../odoo-staging-environment/">what a staging environment is, and why you probably do not need one</a>.
</p>
</div>
</article>
<div class="post-footer">
<a href="../../index.html#blog">&larr; Back to all posts</a>
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>