-
Notifications
You must be signed in to change notification settings - Fork 0
Guide Things To Know
Short, and worth reading once before you rely on this for real review data. Each of these is a real way to lose or corrupt work — none of them are hypothetical.
config section (config.schema, config.screening, config.reviewers, and a
few others) is rebuilt from scratch every time SaiLoR saves. Any key it doesn't specifically know
about gets thrown away in that rebuild — including one you typed in by hand five seconds earlier.
This is not a bug you can work around by being careful — it's how the file format works, and it applies even if you added the key through some other tool, not just by typing JSON yourself. If you want to record something SaiLoR doesn't have a field for, two places are actually safe:
-
The review protocol (research questions, search strings, databases, search date, notes) has a
real, dedicated home: the project editor's Review protocol section, saved as a top-level
protocolkey. See Setting up a project. -
Any other top-level key (not nested under
config) survives untouched.{"version": 1, "myLabNotes": "…", "config": {...}, "papers": [...]}keepsmyLabNotesforever, exactly as written, because top-level keys the app doesn't recognize are preserved verbatim — onlyconfig's own contents are rebuilt.
If you're not sure whether something you're adding is top-level or nested under config, put it at
the top level.
project.json file plus a sibling annotations/ folder (one file per paper per
reviewer, so different reviewers' or different papers' answers live in different files — see
Setting up a project for why). That split means two reviewers working on
different papers, or different reviewer slots of the same paper, no longer touch the same file at
all when saving. It does not give you file locking, though: if two people have the same file
open — including project.json itself, or the same reviewer's answers for the same paper — and both
save (over email, a shared drive, a synced folder), the second save wins completely; the first
person's changes are gone with no warning.
Two ways people actually handle this:
- Take turns on anything you might both touch at once. Whoever's turn it is has the folder; pass it along (email, shared drive, whatever) when you're done.
- Use git. Each person works on their own clone; SaiLoR's git support merges different reviewers' answers field by field instead of overwriting, and the file split above means far fewer of those merges even need a decision from you. See Git support.
pdf path is stored relative to project.json's own location, not as an
absolute path. This is deliberate — it's what lets you zip up the project and its pdfs/ folder and
hand the whole thing to someone else and have it just work. But it means:
-
Moving
project.jsonin Finder/Explorer, without using SaiLoR, breaks every PDF reference unless you move the PDFs along with it in exactly the same relative arrangement — and it also strands your annotations, which live in the siblingannotations/folder next toproject.json, not inside it. Always move the whole project folder together —project.json,annotations/, andpdfs/— neverproject.jsonon its own. -
Use Save as…, or the project editor's Change… button, to relocate a project instead — both
re-derive every PDF path for the new location automatically, and move
annotations/along with it.
annotations/<paper>/reviewer-1.json,
reviewer-2.json, …). If two different people — on two different clones of the same project — both
pick "Reviewer 1", their answers will merge into one chimeric tree the next time the project is pulled
together via git, with no warning, unless the project already records who holds each seat.
When you're using git, SaiLoR records your git identity (name/email) the first time you claim a seat, and warns you if you try to take a seat someone else already claimed. That protection only exists when git is available and the seat has actually been claimed once with it on — agree out of band (a message, a spreadsheet, whatever) who is Reviewer 1 and who is Reviewer 2 regardless. See Reviewer-seat identity.
(Screening's exclusion reasons are the one place this is handled automatically: renaming a reason that's already in use prompts SaiLoR to offer moving existing decisions to the new name. See Screening.)
An unticked checkbox is a real answer ("no"), not an absence of one — SaiLoR has no way to tell "deliberately unchecked" apart from "never looked at". That's why the schema editor doesn't offer a Required option on Yes/No fields at all: it would look like a setting that does something, and it never could. If you need a genuine third state ("not stated in the paper"), use a Text field with fixed options instead of a checkbox — see Setting up a project.
These pages are a mirror. They are maintained in
openwiki/ in the repository and published
here automatically. Editing a page here is fine — the change is committed back to that folder — but
the folder is the source of truth. See Operations → Wiki sync.
Repository · README · Issues · Releases · Annotation schema guide
SaiLoR is free software under the GNU General Public License v3.0.
- Things to know
- Getting started
- Screening
- Working with several reviewers
- Setting up a project
- Git support
Developer documentation
{ "version": 1, "config": { "schema": [ /* … */ ], "myNotes": "please don't put things here" // ← gone the next time anyone saves } }