Help
Hamler Village App · Version 2.6.5 · revision 29
Signing in, your password and challenge questions
Choose your name, type your password and click Sign in. The first time, you get a temporary password from the Clerk; the app then asks you to pick your own (at least 8 characters). To change it any time, click Change password at the bottom of the left menu: enter your current password, the new one and the new one again. Passwords need at least 8 characters with an uppercase letter, a lowercase letter, a number and a special character (for example Maple#2026). Every change is recorded in the audit history. After 3 wrong passwords in a row a warning pops up with Forgot Password and OK. A 4th wrong password locks the account for 1 hour (or until an admin unlocks it). A correct sign-in resets the count. Forgot it? Click Forgot password? on the sign-in page (or in the warning popup), choose your name, answer the challenge question it shows (one of your 3, picked at random and kept the same until the reset is finished) and pick a new password; this also clears failed attempts and a 1-hour lock. Two wrong answers lock the account until an administrator unlocks it and gives you a new temporary password. If you have no challenge questions, ask an admin to set a temporary password. The strong rule applies to the password you choose yourself; a temporary password from an admin can be simple. Click Sign out when you are done, especially on a shared computer. Challenge questions: at your first sign-in (or the next one, if you haven't set them) you pick 3 different questions from a list of 12 and type your own answer to each (answers are shown as you type and are never saved by the browser). Capitals and extra spaces don't matter, and the answers are stored scrambled so no one – not even an admin – can read it. To change them, open Change password, enter your current password, pick 3 questions and type new answers.
Using a phone (iPhone or Android)
The app works in Safari on iPhone and Chrome on Android. On a phone the menu is behind the ☰ button at the top left, home tiles stack, the dashboard shows each action as a card (ID, subject, status, assignee, due date) and ☰ Filters & sort opens the filters. Buttons are sized for fingers. While the app runs on the laptop, phones can't reach it; once it moves to the village server, a phone needs village network access (on-site Wi-Fi or whatever access the village provides).
Home
After you sign in you land on the Village of Hamler home screen. Click Action Register to open the register. Permits, Ordinances and Resolutions open those modules. Council Minutes & Agendas opens the meetings (agendas and minutes). Hamler Webpage is shown as Coming soon and can't be opened yet. The Help and Contacts buttons at the top open this page and the contact list. On Home the menu shows only Home, Contacts and Help (plus Users & roles for admins); the Action Register menu section (Dashboard, My actions, Requests, New action) appears once you are inside the register. ⌂ Home always brings you back; ← Back to Dashboard on an action returns to the register dashboard.
Ordinances and Resolutions
Each module lists its records with number, year, title, status and date passed. Records are sorted by year, newest first; click a column heading or use Sort by to sort by number, title, status or date passed. Search looks in the number, title, sponsor, notes, the admin's summary/keywords and the full text of attached PDFs, Word .docx and .txt files. Filter by Year and Status (Draft, Introduced, Pending signature, Passed, Failed, Tabled, Repealed). On a phone, tap ☰ Search, filter & sort.
Open a record to see its details, its attached files (each marked Completed or Raw Scans) and its history: who added, edited, uploaded or replaced files, and when. View opens a PDF, image or text file in the browser; Download saves it. ⬇ Save as PDF makes one PDF of the record (a summary page followed by its attached files) and 🖨 Print opens it ready to print. To save or print several at once, tick them in the list (or Select all) and click Save selected as PDF or Print selected: you get one combined PDF with a cover listing the records. Every page carries a "Generated <date time> ET by <you>" stamp. Scanned pages with no text layer can be searched by their words once an admin has used Read file and fill in (OCR) when adding them; for other scans admins add a summary or keywords. Word .doc files (the old format) can be downloaded but not searched or printed in the combined PDF. Everyone signed in can view; only admins can change anything.
Permits
Permits opens the permit index by year: the newest year first, and within a year the highest permit number first. Applications that never got a number show as Unnumbered (year) at the end of their year. Each year heading links to that year's handwritten log (the scanned page) and shows the log vs. forms cross-check. The 31 permits from the Permits book (Revision J, 2022–2026) were imported once by the system and show as uploaded by Imported by system.
Click a permit to see the template permit – the fields of the printed form (A: newer printing, B: older printing, V: Application for Conditional Use Variance) – with the applicant's and inspector's signatures, the plat image, the neighbors' consent for a variance, its open questions, items not legible, attached files (the completed page, its own raw scan pages, signature and plat images) and the activity log. Status is one of Pending, Approved, Denied, Appealed, Expired, Void / Superseded, Withdrawn or Unknown; granted permits are Approved and nothing expires automatically.
Search looks at the permit number, year, address, applicant, purpose, every field on the permit, notes, open questions and the text of the completed page (type unnumbered to find unnumbered applications). Everyone can view, search, answer open questions and save PDFs. Save as PDF on a permit gives the template permit with its questions, plat image and raw scan pages. Save register as PDF on the index gives the whole register laid out like the Permits book: cover, linked index by year, the permits, year logs, cross-check, open and answered questions, items not legible, plat images and the revision log (including changes made in the app). Tick permits and use Save selected as PDF for some of them; tick include raw scan pages to add the scans.
Admins only: + Add permit and ✎ Edit. New permit numbers are the two-digit year, a dash and a number from 100 up (for example 26-105); the app suggests the next free number for the year you type, and won't accept a number that is already used or doesn't match the year. For an application with no number use 2026-NN1. Files are optional; signatures and the plat image are PNG or JPG. Every add, edit and upload is in the activity log.
Council Minutes & Agendas (new in 2.6.0)
Open Council Minutes & Agendas on Home (its tile sits with the other module tiles). There is one record per council meeting: the meeting date (required), the type (Regular, Special, Work session, Committee, Public hearing or Other), a title or short description (filled in from the type if you leave it empty) and, once minutes are attached, the minutes status (Draft or Approved, with the date they were approved and the meeting where they were approved). Since 2.6.3 meetings have no Notes or Keywords boxes (notes and keywords saved earlier are kept and still found by search). Council meetings are usually the first Monday evening of the month.
Each meeting has two attach slots at the top of Add meeting and Edit: Agenda and Minutes, each with completed document(s) and raw scan(s). A meeting may have only an agenda, only minutes, or both. Read file and fill in reads the attached file (the PDF's text first, OCR for scans, at most 12 pages) and suggests the meeting date and type, says whether the file is an agenda or minutes (and warns if it is in the wrong slot), and types out the agenda and minutes (since 2.6.3 nothing is written into Notes). Since 2.6.1 the header decides: AGENDA in the title means an agenda, and minutes need minutes wording (Moved by, seconded, Motion carried, adjourned at). The type also comes from the header: “Village Council” on a first Monday is Regular, Special only from “Special meeting”, Committee only from a committee heading (a “Committee reports” item doesn't count). The title is built from the header, for example “Village Council regular meeting – agenda”. Fields you already typed are never overwritten. Nothing is saved until you click Add meeting / Save.
The list is grouped by year, newest meeting first. Search looks through the text of the agendas and minutes (including OCR text), titles, and notes and keywords saved before 2.6.3; filter by year, meeting type, minutes status, and Files (has an agenda, has minutes, both, agenda only, minutes only). 📚 Compile PDF builds one searchable PDF of the minutes for a range of years, like the master Meeting Minutes PDF: a cover page with only the date span (for example “May 2, 2024 thru October 5, 2026”), an index with page numbers, then the minutes in date order (completed minutes, or the raw scan if there is no completed copy; tick Approved minutes only to leave drafts out). Everyone signed in can view, search and compile; admins add, edit, replace files and archive, exactly as for Ordinances and Resolutions. Every view, download, search, edit and compile is in the module's Audit history.
Year index, search, open questions and zoning
Each module opens as an index by year: newest year first, then the records in that year by number, highest first – the same order as the printed Ordinances and Resolutions books. Search looks at the number, year, title, summary/keywords, notes, open questions and the full text of attached PDFs (and .docx/.txt files); matches are shown inside the year index with a short snippet of where the words were found. Tick Zoning only to show only records marked Zoning; it combines with search, year and status. A green Zoning badge marks those records.
Every record has an Open questions section (and Items not legible when something on the scan couldn't be read). ❓ Open questions in the module menu lists them all, by year. Save as PDF builds the document the same way as the printed books: cover, index by year with page numbers, each record (details page then its files), then Open Questions for Review and Items Not Legible. Tick PDF: zoning records only next to the PDF buttons to export only zoning records from your selection.
The 2026 ordinances (002, 003, 004) and resolutions (001, 002, 003, 004, 005, 006) were loaded once by the system with their finished PDFs and raw scans; their files show uploaded … by Imported by system. The import never runs twice and never changes a record someone entered by hand.
Activity log: every view, download, print, PDF export, search, add, edit, upload, replacement, archive/restore, open-question or zoning change and import is recorded with the person and the date and time (ET). Each record shows its own Activity log; admins see the module-wide 🕘 Audit history (filter by user, action and dates) and everything together under Help › Audit History. The log is append-only: entries can't be edited or deleted.
Contacts
Contacts lists village officials and staff with name, title, phone and email. Tap a phone number to call, or an email address to start a message. Search filters the list. Everyone signed in can view it. Contacts are separate from sign-in accounts; a contact can optionally be linked to a user.
The Action Register dashboard
The tiles count All active (Open + Past Due), Open, Past Due, Closed / Done and My open actions. Click a tile to list those actions. Everyone can see every action. Actions assigned to you or requested by you are highlighted; actions you can't edit are greyed out and open view only (no editing, updates or Done). Admins (the Mayor, the Clerk and the Council President) see every action normally – nothing is greyed – and can open and edit any of them.
Filters and sorting
Use Show to pick a group, Person to see one individual's actions (assigned to them or requested by them), and Search for words in the ID, subject, description or updates. Click any column heading to sort; click again to reverse. Non-admins can tick My actions only to hide everything not assigned to them or requested by them (admins use Person instead). Clear removes the filters.
Action detail and Back to Dashboard
Click a row to open the action. You see the full Description, the Latest Update and the complete dated update log. Grey fields are filled in automatically or are for admins only and can't be typed over. ← Back to Dashboard at the top returns you to the list with your filters as you left them.
Adding an update
If the action is assigned to you, type in Add a new update and click Save changes. It is added to the log with today's date and your name, and Last update changes to today. Older updates are never overwritten. You may also edit the Description. When the work is finished tick Done: a Done comment box appears and must be filled in. Saving adds the comment to the update log as "Done: …" with today's date and your name, sets the Completed date and Last update to today, and shows it as the latest update. The Mayor and the Clerk can update any action.
What the statuses mean
Open – being worked on. Past Due – still open and the requested completion date has passed; the app sets this automatically and changes it back to Open if the date is moved later or Done is ticked. Closed – finished or retired; only admins set it, and the app never changes it.
Requesting a new action
Open Requests, fill in the subject, description, suggested person, date and priority, and click Send to Brad Leonard. Brad Leonard approves or declines. You can follow its status (Pending, Approved, Declined) on the same page. An approved request becomes a numbered action on the register.
PDF reports
On the dashboard click ⬇ PDF. A window opens, already filled in from what you are looking at (statuses, person or My actions only, and sort order). Choose which statuses to include (Open, Past Due, Closed / Done), whose actions (admins: all people or one person; everyone else: all actions or my actions only), and whether to include descriptions and the full update history. Click Generate PDF. Excel export has been retired; the PDF is the export. Every PDF carries a "Generated date time ET by name" stamp.
Print Request Form
🖨 Print Request Form opens the paper Action Request Form (Form No. FORM-001) as a PDF for people who prefer to fill it in by hand – including residents. It matches the app: priorities High, Medium, Low, statuses Open, Closed, Past Due, Register IDs HA-YYYY-NNN, and Brad Leonard as the approver. After the form has been signed and accepted or denied, the hard copy is returned to the requestor.
Answering open questions
Each open question on a record page (and on the module's ❓ Open questions page) has an ✎ Answer button that anyone signed in can use. Type your answer (required) and click Send answer. It then shows as Proposed answer by <your name> on <date> with a Pending tag until an admin reviews it. Admins click ✓ Accept – the question moves to the record's Answered list, which shows the question, the answer, who answered and who accepted it, with dates – or ✗ Reject, which needs a reason; the question goes back to open (the reason is shown under it) so someone can answer again. Admins also + Add question, and use Edit / delete under any question. Admins see a red pending badge on the Home tile and a pending answers to review link on the list. Every answer, acceptance, rejection and question change is in the activity log, and Save as PDF includes both Open Questions (with pending answers) and Answered Questions.
The Edit button (admins only). On a record page, admins see a blue ✎ Edit button at the top right, next to Save as PDF and Print. Use it to change the number, title, year, status, dates, sponsor, notes, summary/keywords, the Zoning tick box and Items not legible, or to attach more files. Other users don't see this button. Open questions are not edited there – use the Open questions section on the record page itself.
Items not legible: proposing a reading
Permits, Ordinances, Resolutions and Council Minutes & Agendas list anything on a scan that couldn't be read in an Items not legible section (since 2.6.4 Read file and fill in on a scan fills it in automatically with low-confidence OCR words and their line numbers) on the record page (and on the module's ❓ Open questions page). It works like open questions: anyone signed in clicks ✎ Propose a reading, types what the item really says (the correction or reading) and sends it. It shows as Proposed reading by <name> on <date> with a Pending tag. Admins click ✓ Accept – the item moves to the record's Resolved list showing the original item, the correction, who proposed it and who accepted it, with dates – or ✗ Reject with a required reason, and the item is open again. Pending readings count in the admins' pending badge (Home tile, module list and Open questions page). Admins add, edit and delete items on the record page (+ Add item not legible), and can also add new ones, one per line, in the Edit form. Every step is in the activity log. Save as PDF lists unresolved items under Items Not Legible (with any pending reading) and resolved ones under Resolved Items with the correction; permit PDFs mark them RESOLVED. The Action Register has no items not legible.
Automatic sign-out when idle
Decision (Todd, Oct 17, 2026): 15 minutes for everyone; admins can still change it (5–120) in Settings.
To protect village records on shared computers, the app signs you out after minutes with no activity (typing, clicking, scrolling or tapping). One minute before, a window counts down with Stay signed in – click it to keep working – and Sign out now. The server checks the time as well, so a page left open in another tab or a sleeping laptop is also signed out; just sign in again and you go back to the page you were on. Activity in any tab of the app keeps you signed in. Both normal sign-outs and idle sign-outs are in the activity log. Admins set the time (5 to 120 minutes) on ⚙ Settings.
Signing out when you close the app
Your sign-in lasts only while the browser is open: when you fully close the browser you are signed out. Closing the last open app tab or window also signs you out (within about 20 seconds). Refreshing a page, moving between app pages or modules, opening a PDF, submitting a form, a slow page, or closing one tab while another app tab is still open does not sign you out (fixed in 2.5.2). The idle sign-out above still applies as a backup (for example on a phone where the browser stays in the background). Sign-outs on closing are in the activity log as "signed out – app closed".
Suggestion box and notifications
Two types: Suggestion and Problem report. You see only your own suggestions; admins see everyone's.
Click 💡 Suggestion box (Home or the menu) to report a problem or send a suggestion: pick the type, give it a short title and describe it. You can attach up to 3 screenshots (PNG or JPG, 10 MB each) – on Windows press Windows+Shift+S, select the area, then click in the screenshot box and press Ctrl+V, or choose saved files. The app records the page you came from and the app version. My suggestions lists what you sent, with its status (New, Reviewing, Planned, Done or Declined) and the admins' reply. 🔔 Notifications shows notices for you – for example when an admin replies to your suggestion – with a badge for unread ones.
Handling suggestions (admins)
Admins see a badge with the number of New suggestions on the Suggestion box button and get a notification for each one. The list shows everyone's suggestions with filters for status and type. Open one to see screenshots, set the status and write a reply; Declined needs a reply explaining why. The submitter gets a notification when the status or reply changes. Every submission, status change and reply is in the activity log.
Settings, Email settings and Email log (admins)
⚙ Settings sets the idle sign-out time (5 to 120 minutes, default 15) and shows whether email is ON or OFF, with links to Email settings and the Email log.
Email settings opens with a large banner: a green Email is ON or a gray Email is OFF, with a Turn email on or Turn email off button next to it. That button is the only on/off switch; saving the form never changes it. Below are the outgoing mail server settings (SMTP host, port, security STARTTLS / SSL / none, username, password, From address and name, optional Reply-to). The password is stored encrypted (with the key file data\mail.key) and is never shown again or written to any log; leave it blank to keep the saved one. The village uses Gmail: smtp.gmail.com, port 587, STARTTLS, the Gmail address as username and From address, and a Google app password (not the normal password).
Send test email sends one message to the address you type, even while email is OFF, so you can check the settings first. If it works while email is off, the page offers Turn email on now. If the test can't be sent, the message says why (for example "the SMTP host and From address are not filled in yet", or the error from the mail server) and what to do. Turning email on or off is recorded in Help › Audit History.
When email is ON, admins are emailed about new suggestions, and the person an action is assigned to is emailed when a new action is assigned, a request is approved, or an action is reassigned to them (also when you assign an action to yourself), and the person who made a request is emailed when it is approved or declined. When it is OFF, nothing is sent and each notice is listed as skipped. Each person's email address comes from their linked Contact and can be changed on Users & roles or by the person on Change password. Email log lists every email with its result (Sent, Skipped or Failed) and the reason.
Auto-fill from an uploaded file (admins)
On + Add ordinance or + Add resolution, attach the scan or PDF in Attach files at the top of the form (since 2.5.3) (as a Completed document or Raw scan) and click 📄 Read file and fill in. The app reads the file's own text first (exact, instant); for scanned pages with no text it runs OCR (the free Tesseract program, included in the app folder) on this computer. Nothing is sent over the internet and there is no AI.
- The form is filled with suggestions, highlighted in yellow, each showing the words it came from and whether it came from the text layer or from OCR – please check: number, year, title, date introduced (the 1st reading), date passed, status and a short summary. Reading dates, emergency or two-thirds wording, the vote, the mover and seconder, the typed names of the signers and related (older) ordinance numbers are written into Notes.
- Sponsor is never filled in by auto-fill (decision, Oct 17, 2026); type it yourself if needed. The mover and seconder, when found, are written in Notes.
- Anything unclear is listed as a proposed open question (for example "Passed date unclear: read as …"). Tick the ones to keep; you can change the wording. Only ticked questions are created.
- If the number already exists, a warning names the existing record. Nothing is saved until you click Add; Cancel throws the extraction and the attached files away.
- The text read from the file is saved with the file, so the words of a scan become searchable once you save.
Limits: handwriting is not reliable – handwritten numbers, dates and margin notes are flagged for checking, never trusted; signatures are never "read" (names come from the typed lines); faint, tilted or dark scans give poor text, and the app says so and leaves fields blank. Scans take a few seconds per page (up to 12 pages are read). Existing scans are not OCR'd (that is deferred until go-live preparation). Permits are not auto-filled yet (planned for 2.6.0; permits are mostly handwritten). If the OCR program is missing or fails, the app says "Text couldn't be read automatically – please type the details" and everything else works as before.
Scans (2.6.1): before OCR the app reads a scan at its full resolution (enlarging it to about 300 DPI when lower), evens out contrast, straightens a slightly crooked page and adds a white margin so letters at the edge are kept, then reads it three ways and keeps the clearest result. Everything stays on the server (no internet); at most 12 pages are read. Small misreadings such as a superscript “7th” read as “7%” are tidied up, and they no longer turn into proposed open questions – only unclear dates, times, years and record numbers do. The text read from a scan is stored with the file, so the words can be found with Search.
Typed agenda and minutes (since 2.6.2)
A meeting page shows the agenda typed out so it looks like the real Hamler agenda: the bold centred HAMLER VILLAGE COUNCIL AGENDA title, the date and time, the items in capitals with their bullets (○ hollow or ● filled, as on the paper), indented sub-items, and the Email additions to hamlermayor@gmail.com line at the bottom. Typed minutes appear the same way below it.
- View original scan (or View original file) opens the scan or finished file in a new tab, so you can always check the typed version against the paper.
- Printing: print the meeting page (or click Print agenda / Print minutes) and only the typed agenda and minutes print – no menu or buttons – on a clean page that resembles the original.
- Read file and fill in types the agenda (or minutes) from the file automatically, fixing common OCR slips (gmail.com, 2nd, dates).
- Admins correct it on the Edit page in the yellow Typed agenda box (since 2.6.3 there is no preview pane next to it: click Save and the formatted result shows on the meeting page and in Print). Rules: the lines up to the first blank line are the header (the first is the big title); then one item per line –
o ITEMhollow bullet,• ITEMor* ITEMfilled bullet; indent two spaces or start with-for a sub-item;A | B | Cputs items side by side (Pledge, Roll Call, Minutes); a blank line adds space; a line---starts the footer. - A typed agenda you corrected by hand is never replaced by Read file and fill in without asking: the new version is shown under the box with a Replace mine with this button.
- Older meetings that have a scan but no typed agenda show Build typed agenda from scan (admins). It reads the file (OCR for scans) and types it out; correct it afterwards on the Edit page.
- Search finds words in the typed agenda and minutes as well as in the scanned text.
- Compile PDF still uses the original files (the official record).
Adding a meeting (since 2.6.3)
Add meeting starts with only the Attach files box: the Agenda and Minutes slots, each with a completed document and a raw scan, and the Read file and fill in button. The rest of the page – meeting date, type, title and the Add meeting and Cancel buttons – appears once Read file and fill in has read the file.
- Use the Word file the clerk already has. Attach the clerk's Word (.docx or .doc) or PDF agenda or minutes as the completed document. Its own text is read directly – exactly as typed, no OCR, nothing flagged as not legible – and it is preferred over a scan when both are attached. Word bullets are kept in the typed agenda.
- Only paper? Attach a scan as the raw scan (at least 200 DPI); it is read by OCR. Words the OCR couldn't read clearly are listed automatically under Items not legible on the meeting page with their line number, for example Line 23: “Digitize” (OCR confidence 65%) in “o Digitize Ordinances”. Anyone can propose a reading; admins edit, accept or delete them there (or add more on the Edit page).
- Minutes status, Minutes approved on and Approved at meeting appear only when minutes are attached – never for an agenda on its own.
- The typed agenda and typed minutes are built from the file automatically when you click Add meeting; correct them later on the Edit page. Stray scan marks (a doubled bullet like “o , o”, a trailing “-”, “|” or “:”, a dangling “Co” after ADJOURNMENT) are cleaned up as a safety net; real text, dates and “1st reading” are never changed, and a typed agenda corrected by hand is never replaced.
- The meeting page title carries the date and type, for example Regular Meeting, Monday, January 5, 2026, with a coloured DRAFT (amber) or APPROVED (green) badge next to it. Then the Agenda and Minutes, each with View original scan (or file) and Print; Items not legible, open questions and files; Delete (archive) stays at the bottom. Change details on the Edit page.
What changed in 2.6.5
- Phone instead of Contact. In Users & roles the Contact field is now called Phone. Phone numbers on the user form and on the Contacts page format themselves as you type, like (419) 278-2866, and are formatted again when you save. Numbers already saved as plain 10-digit numbers were converted once; anything with an extension or other text is kept exactly as typed. Tap a number to call.
- Home in the menu is now a normal menu link (bold, with a small house icon) at the top of the menu.
- Permits on the Village Map. Every permit page has 📍 Show on map. Admins and editors (Edit any) pin the permit to its parcel: click the parcel and choose 📍 Pin … here, or search the address and choose 📍 Pin … here; drag the new pin to fine-tune it, then click Save pin. Open it again to move the pin, or click Remove pin. Every change is written to the permit's activity log. Everyone can see the pins.
- The map has a Permits layer (switch it off and on in the layer menu at the top right) with pins coloured by status – Pending, Approved, Denied, Appealed, Expired, Void / Superseded, Withdrawn, Unknown – and a legend. Click a pin for the permit number, address, purpose and status and a link to the permit. A parcel's popup lists the permits pinned to it. Parcel lines are still on by default and the county data is for reference only.
- Admins: 📍 Auto-pin from address on the map lists permits with an address but no pin. Suggest searches the address and puts a suggested pin on the map; nothing is saved until you check it and click Save pin.
What changed in 2.6.4
- Minutes badge. On a meeting page the coloured badge is about the minutes only: MINUTES: DRAFT (amber) or MINUTES: APPROVED (green), next to the title and on the Minutes section. A meeting with only an agenda has no badge.
- Items not legible filled in automatically for Ordinances, Resolutions and Permits. When Read file and fill in reads a scan, every scan line with words the OCR couldn't read clearly is added to the Items not legible box as one item with its line number and OCR confidence, for example Line 12: “Kar1” (OCR confidence 41%) in “o Kar1 and Jan's”. Anything already in the box is kept, and reading the file again or saving does not add the same item twice. A PDF with real text or a Word file gives no items. Check the list and delete what is fine before you click Add. Add permit now has a Read file and fill in button for this; it does not change the permit fields.
Village Map
Permits layer (2.6.5). Pinned permits show as coloured dots (colour = status, see the legend at the bottom right). Click one for the permit number, address, purpose and status, and Open permit. Clicking a parcel also lists the permits pinned to it. To pin or move a permit, open the permit and click 📍 Show on map (admins and editors).
Open Village Map from Home. It opens on the parcel map: the Ohio aerial photo of Hamler with the yellow Parcel lines (Henry County) turned on (since 2.6.0, for everyone; the map does not remember a previous choice, so it always opens this way). Zoom with + / −, the mouse wheel, or by pinching on a phone; drag to move. The layers button (top right of the map) switches between Ohio aerial 3-inch (2022) (the default: State of Ohio OSIP photos sharp enough to see driveways), Aerial (Esri World Imagery) and Streets (OpenStreetMap), and turns Road and place labels and Parcel lines (Henry County) on or off. Parcel lines show at zoom level 16 or closer – the level the map opens at; zoom out further and a hint says to zoom in. Click a parcel to see its parcel number, address, owner, legal description, area (acres), assessed value, total tax and last sale, with buttons Open in Street View (Google Street View in a new tab) and County record (opens that parcel's own page on the Henry County Auditor site, with its general information, land, buildings, sales, taxes, sketch and property record card). Parcel data is Henry County data for reference only – it is not a survey; check the county records for anything official. Address search results also have an Open in Street View button. Type an address in the search box (for example 140 Oak St) and click Search: the map zooms to it and drops a marker; if several places match, pick one from the list. Searches are limited to Hamler, OH 43524; you can type just part of the street (for example 410 cowen). If you see service is busy, the address service didn't answer even after the app retried; wait a few seconds and search again. No match means the service answered but found no such address in Hamler; check the number and street. ⌂ Village overview returns to the whole village. The map needs the internet. Map credits (Esri, OpenStreetMap) are shown at the bottom right as the providers require. Every search, parcel opened and Street View opened is recorded in the map's 🕘 Audit history (admins) and in Help › Audit History.
Coming soon
Home tiles marked Coming soon are planned: Hamler Webpage. Permits, Village Map, Auto-fill and (since 2.6.0) Council Minutes & Agendas are live (see above); since 2.6.5 permits can be pinned to their parcels on the map (see What changed in 2.6.5).
Copyright
Copyright © 2026 Village of Hamler, Ohio. All rights reserved. The notice appears at the bottom of every screen and every PDF the app makes.
Revision history
| Version | Revision | Date | Changes |
|---|---|---|---|
| 2.6.5 | 29 | 10/18/2026 | Users & roles: the Contact field is now Phone (cards, Add/Edit user, Help); the stored column is unchanged. Phone numbers format as you type, (419) 278-2866, on the user form and the Contacts page, and are formatted again when saved; existing numbers saved as exactly 10 digits (or 1 + 10 digits) were converted once, anything else (extensions, odd entries) is left as it was; tap-to-call links still work. Menu: Home is a normal menu link like Contacts and Help, in bold with a small white house icon, still first. Village Map: each permit has a Show on map button; admins and editors pin it to its parcel by clicking the parcel or searching the address (drag to fine-tune, Save pin, move or remove later), and the parcel number and position are saved and logged in the permit's activity log. The map has a switchable Permits layer with pins coloured by status and a legend; a pin shows the permit number, address, purpose and status with a link to the permit, and a parcel's popup lists its permits. Admins get Auto-pin from address, which only suggests a pin from the permit address and never saves without Save pin. Parcels stay on by default; county data is for reference only. Database schema v15 -> v16 (map_pins.parcel, method, updated_by, updated; automatic backup before the upgrade). |
| 2.6.4 | 28 | 10/17/2026 | Council Minutes & Agendas: the status badge is now only about the minutes. A meeting with only an agenda shows no badge; once minutes are attached the badge reads MINUTES: DRAFT (amber) or MINUTES: APPROVED (green), next to the page title and on the Minutes section. Ordinances, Resolutions and Permits: Read file and fill in on a scan now fills Items not legible automatically with the words the OCR couldn't read clearly, one item per scan line with the line number and OCR confidence, added to anything already in the box and never duplicated when the file is read again or saved twice; PDFs with real text and Word files give none. Add permit gets a Read file and fill in button that reads the completed permit or raw scan for this list (it does not change the permit fields; the text read is stored with the file so it can be searched). Help is updated. Database schema unchanged (v15). |
| 2.6.3 | 27 | 10/17/2026 | Council Minutes & Agendas: Add meeting now starts with only the Attach files box (Agenda and Minutes slots, each with a completed document and a raw scan) and Read file and fill in; the meeting date, type, title and the Add meeting / Cancel buttons appear after the file has been read. Attach the Word (.docx or .doc) or PDF file the clerk already has: its own text is read directly with no OCR and is preferred over a scan (Word bullets are kept); a scan is still read by OCR when only paper exists. Minutes status, approved on and approved at meeting appear only when minutes are involved. Meetings no longer have Notes or Keywords boxes and the reader no longer writes agenda items, attendance or motions into Notes (earlier notes and keywords stay in the database and in search; Ordinances, Resolutions and Permits are unchanged). The typed agenda and minutes are built from the file automatically on save and corrected on the Edit page in one yellow box (no preview pane). Low-confidence OCR words are listed automatically under Items not legible with their line numbers (none for digital text). Stray scan marks are cleaned up when typing an agenda (for example 'o , o Fiscal Officer' becomes 'o Fiscal Officer', 'BILLS -' becomes 'BILLS', 'ADJOURNMENT Co' becomes 'ADJOURNMENT'). The meeting page puts the date and type in its title (for example Regular Meeting, Monday, January 5, 2026) with a clearly coloured Draft / Approved badge, and drops the old details box. Help, the Update instructions and the User Manual (Revision 27) are updated. Database schema unchanged (v15). |
| 2.6.2 | 26 | 10/17/2026 | Council Minutes & Agendas: a meeting page now shows the agenda typed out so it looks like the real Hamler agenda (centred bold HAMLER VILLAGE COUNCIL AGENDA, the date and time, the bulleted items in capitals with their indented sub-items, and the Email additions footer), with View original scan buttons that open the scan or file. Typed minutes work the same way. Printing the meeting page (or Print agenda) gives a clean agenda. Read file and fill in builds the typed agenda/minutes from the file; admins correct it on the Edit page in a plain text box with a live preview, and a typed agenda corrected by hand is never replaced without asking. Older meetings with a scan get a Build typed agenda from scan button. Search also finds words in the typed text. Compile PDF still uses the original files. Database schema v15 (backup made automatically). |
| 2.6.1 | 25 | 10/17/2026 | Fix: Read file and fill in on a scanned agenda (tested with the real agenda of January 5, 2026). Scans are now cleaned up before OCR – read at their full resolution (enlarged to about 300 DPI when lower), contrast and threshold, straightened if slightly crooked, with a white margin so letters at the edge are not lost – and read three ways (Tesseract page modes 3, 4 and 6), keeping the clearest result; this also helps ordinance and resolution auto-fill. Council Minutes & Agendas reads the header first: AGENDA in the title means an agenda (minutes need minutes-only wording such as Moved by, seconded, Motion carried, adjourned at), and the wrong-slot warning only appears when the app is sure. Meeting type comes from the header only (Village Council on a first Monday means Regular; Special only from 'Special meeting'; Committee only from a committee heading, not a 'Committee reports' item), and the title is built from the header (for example 'Village Council regular meeting – agenda'). For agendas the order of business goes into Notes as a clean list with any ordinance or resolution numbers. Superscript ordinals read as % or quotes are fixed, and stray readings like '10%' no longer become proposed open questions. Help, the Update instructions and the User Manual (Revision 25) are updated. |
| 2.6.0 | 24 | 10/17/2026 | New module: Council Minutes & Agendas (a new tile on Home). The menu no longer has the Modules section added in 2.5.3: modules open from their Home tiles, and the gold Home button stays at the top of the menu. One record per council meeting with the meeting date, type (Regular, Special, Work session, Committee, Public hearing or Other), title, minutes status (Draft or Approved, with the approval date and the meeting where they were approved), notes and keywords. Each meeting has separate Agenda and Minutes attach slots, each with completed documents and raw scans, at the top of Add and Edit with Read file and fill in: it detects the meeting date and type, whether the file is an agenda or minutes, and for minutes adds the members present and absent, the motions (Moved by … seconded by …) and the adjournment time to Notes without overwriting anything you typed. The list is grouped by year, newest meeting first, with search across the documents' text and filters for year, meeting type, minutes status and whether an agenda or minutes is attached. Compile PDF builds one searchable Meeting Minutes PDF for a range of years: a cover page with the date span, an index with page numbers, then the minutes in date order. Same permissions, audit history, open questions, items not legible, archive and PDF/print as Ordinances and Resolutions. The Village Map now opens on the parcel map (Ohio aerial with the Henry County parcel lines on, zoom 16) for everyone. Database schema v14 (adds two columns; existing data unchanged). Help, the Update instructions and the User Manual (Revision 24, new chapter) are updated. |
| 2.5.3 | 23 | 10/17/2026 | Fix: after signing in, going Back (or opening a bookmarked or restored sign-in page) showed the sign-in card inside the signed-in layout. The sign-in page now sends you straight on to Home (or the page you asked for) when you are already signed in, and Forgot password does the same. App pages are no longer kept in the browser's back/forward cache, so Back always shows the current state. On Add and Edit ordinance, resolution and permit the Attach files section (with Read file and fill in for ordinances and resolutions) is now at the top of the form, so you attach first and auto-fill completes the fields below; Add / Save and Cancel stay at the bottom. The menu has a prominent gold Home button at the top and now has a Modules section (Action Register, Permits, Ordinances, Resolutions, Village Map) on every page. Signing in starts a fresh session that can never inherit a pending sign-out, and the sign-in page's own closing signal is ignored. The Sign-in lockouts notice (with Unlock) moved from the Action Register to the top of Users & roles, with a red badge in the menu for recent lockouts; when an account is locked, every active admin with an email address gets one email (name, time, number of failed attempts; never the password), following the Email ON/OFF switch and logged in the audit history. On New action and on the request form every field is now required (marked *): a save with a blank or spaces-only field is refused, the form reopens listing the missing fields and keeps what you typed; approving a request also needs a person and a completion date. Help, the Update instructions and the User Manual (Revision 23) are updated. |
| 2.5.2 | 22 | 10/17/2026 | Fix: opening a module (Ordinances, and possibly others) could sign you out. The new sign-out-when-the-app-closes check from 2.5.1 now never fires on normal use: any request from your sign-in within 20 seconds (was 8) cancels a pending sign-out, and the page you open is checked first, so a slow page (large lists or PDFs over the internet) can no longer sign itself out; every app page, including the print page, tells the server it is open as soon as it starts loading and again after 3, 8 and 15 seconds; moving to another app page, reloading, opening a PDF in the same tab or submitting a form no longer sends the closing signal at all. Closing the last app tab or the browser still signs you out. Help, the Update instructions and the User Manual (Revision 22) are updated. |
| 2.5.1 | 21 | 10/17/2026 | Users & roles is redesigned: instead of a cramped table, each user is a card showing name, role, type, contact, email and Admin, Edit any, Approver and Active as clear check-mark badges (plus challenge-question and lock status), with an Edit button. Edit and Add user open a full-width form where every field has room: set password with must change at sign-in, challenge questions with Clear, Unlock, Replace with for admins, Save and Delete; it works well on a phone. Admins: at least two active admins are required and there is no maximum (the old rule of exactly two and "You can't add a third admin" is gone); removing, deactivating, demoting or deleting an admin is blocked only if fewer than two active admins would be left, and Replace with is then required (otherwise optional). New user type IT / Technical Support. Signing out when the app is closed: the sign-in cookie now lasts only until the browser is closed, and closing the last open app tab or window signs you out within a few seconds (a refresh, moving between pages or another open app tab never signs you out); the 15-minute idle sign-out stays as the backup. The email footer no longer says "To respond, open the app" and no longer adds an app link; it keeps only the don't-reply notice (or the Reply-to address). Linux server: Windows/Linux file path fixes, HAMLER_BEHIND_PROXY setting for the HTTPS reverse proxy, Windows data import fix, and update-server.sh for one-command updates on the server with backup and automatic rollback. Database schema stays v13. Help, the Update instructions and the User Manual (Revision 21) are updated. |
| 2.5.0 | 20 | 10/17/2026 | Auto-fill from uploaded files for Add Ordinance and Add Resolution: attach the scan or PDF and click Read file and fill in. The app reads the PDF's own text layer first and, for scanned pages, runs Tesseract OCR on this computer (a portable copy with the English fast model is included in the app folder; no internet, no AI). Number, year, title, date introduced (1st reading), date passed and status are suggested and highlighted with the words they came from ("from text layer" or "OCR – please check"); reading dates, emergency or two-thirds wording, vote, mover and seconder, typed signer names and related ordinance numbers go into Notes; Sponsor is never filled in or hinted. Unclear items are listed as proposed open questions; only the ones you tick are created. Duplicate numbers are warned about; nothing is saved until you click Add, and Cancel discards everything. The text read from the file is stored with it, so scans become searchable. If Tesseract is missing the app says so and everything else works. OCR of existing scans is deferred until go-live preparation. Database schema v13 (records which files' text came from the text layer, OCR or a typed file, with the OCR confidence) with automatic backup. Email settings are clearer: a large green "Email is ON" or gray "Email is OFF" banner with Turn email on / Turn email off buttons replaces the small Send email checkbox; Send test email now sends even while email is off (and then offers Turn email on now), and says plainly why a test could not be sent and what to do; the outdated note that the sending account was undecided is gone (the village uses Gmail). Every app email now ends with a footer saying it was sent automatically and replies aren't monitored (or, if a Reply-to address is set, that replies go to that address, with the Reply-To header set), in both the plain-text and HTML parts. Help, README-INSTALL, the Update instructions and the User Manual (Revision 20) are updated. |
| 2.4.0 | 19 | 10/17/2026 | Items not legible now have the same resolve workflow as open questions in Permits, Ordinances and Resolutions (existing items moved to a list automatically; database schema v12 with automatic backup): any signed-in user proposes a reading or correction, shown as pending until an admin Accepts it (it moves to the record's Resolved list with the original, the correction, who proposed it, who accepted it and dates) or Rejects it with a required reason. Pending readings count in the admin pending badges; every step is in the activity log; PDFs show unresolved items and resolved items with their corrections. Idle auto sign-out: after 15 minutes of no activity (admins set 5 to 120 minutes on the new Settings page) a 1-minute warning with Stay signed in appears, then you are signed out; also enforced by the server; manual and idle sign-outs are logged. Suggestion box: anyone sends a suggestion or problem report with optional screenshots and sees their own items and status; admins get a badge, a notification and a list with statuses New, Reviewing, Planned, Done and Declined plus a reply (Declined needs a reply). Notifications page (bell). Email groundwork: admin-only Email settings (SMTP server, port, security, user name, encrypted password, from address, Send test) and Email log; users get an email address (filled from linked Contacts; editable on Users & roles and Change password). Email is OFF until the village chooses a sending account: notices for new suggestions (to admins) and new, approved or reassigned actions (to the assignee) are logged as "skipped: email not set up". The install folder and package are renamed Hamler Village App (HamlerVillageApp-Windows.zip, folder HamlerVillageApp); the Action Register module keeps its name. |
| 2.3.0 | 18 | 10/17/2026 | Permits module is live (the Permits tile opens it). One-time system import of all 31 permits from the Permits book (Hamler-Permits.pdf Revision J, 2022–2026), shown as "Imported by system": each permit's completed page, its own raw scan pages, 62 signature images and 29 plat images, the handwritten year logs and log-vs-forms cross-checks, and 22 open questions; database schema v11 with automatic backup; never duplicates and never changes a permit entered by hand. Index by year (newest year first; within a year highest number first; unnumbered applications such as "Unnumbered (2022)" at the end of their year). Permit pages show the template permit (form A, B or Conditional Use Variance) with signatures and plat image. Statuses: Pending, Approved, Denied, Appealed, Expired, Void / Superseded, Withdrawn, Unknown (granted permits are Approved; no automatic expiry). Search covers every field on the permit, notes, open questions and the text of the completed pages. Only admins add and edit permits; new permit numbers run YY-100 upward and the app suggests the next free number. Everyone can view, search, answer open questions and Save as PDF: one permit (template permit, questions, plat, raw scans) or the whole register laid out like the Permits book (cover, linked index, permits, year logs, cross-check, open and answered questions, items not legible, plat images, revision log including changes made in the app). Zoning checkbox, activity log and copyright on every page and PDF as in the other modules. |
| 2.2.3 | 17 | 10/16/2026 | Village Map: the County record button on a parcel now opens that parcel's own Henry County Auditor page (general information, land, buildings, sales, taxes, sketch and property record card) instead of the blank county search screen. Opening a county record is logged in the map Audit history. |
| 2.2.2 | 16 | 10/16/2026 | Village Map fixes: parcel lines now display (a parcel with a sale date before 1970 stopped the whole layer from loading on Windows). Open in Street View now opens the nearest Google Street View panorama instead of a black screen. |
| 2.2.1 | 15 | 10/16/2026 | Village Map address search is more reliable: if the OpenStreetMap address service drops the connection, times out or is busy, the app quietly tries again up to 3 times (after 0.5 s and 1.5 s) and never sends more than one request per second. A partly typed street (for example "410 cowen") is completed to the Hamler street ("410 Cowen Street") when the first try finds nothing. Messages now say clearly whether the service is busy (try again) or there is no match. Failed lookups are never cached. Village Map upgrades: new default base map "Ohio aerial 3-inch (2022)" (State of Ohio OSIP imagery, zoom to street level), Esri aerial now zooms closer, OpenStreetMap streets kept; new "Parcel lines (Henry County)" overlay (zoom 16+) – click a parcel for parcel number, address, owner, legal description, area, assessed value, total tax and last sale, with a County record link (county data for reference only, not a survey); "Open in Street View" button on address results and parcels (Google Street View in a new tab). Parcel clicks and Street View opens are logged in the map Audit history. |
| 2.2.0 | 14 | 10/16/2026 | Open questions in Ordinances and Resolutions are now a proper list (existing lines moved over automatically; schema v10 with backup). Any signed-in user can click Answer on a question (record page or module Open Questions page); the answer shows as "Proposed answer by <name> on <date>" (pending). Admins Accept it (it moves to the record's Answered list with question, answer, who answered, who accepted and dates) or Reject it with a required reason (the question is open again). Admins add, edit and delete questions on the record page; pending answers show as a badge on the Home tile, the module list and the Open Questions page. Every step is in the activity log. PDF export includes Open Questions (with pending answers) and Answered Questions. Help explains the admin-only Edit button at the top right of a record. Village Map is live: aerial (Esri World Imagery with labels) and street (OpenStreetMap) maps of Hamler with a layer switcher, zoom, Village overview button and address search limited to Hamler (OpenStreetMap Nominatim via the app, cached); works on phones; searches are logged in the map Audit history; ready for pinning permits and zoning records later. |
| 2.1.0 | 13 | 10/16/2026 | One-time system import of the 2026 Ordinances (002, 003, 004-2026) and Resolutions (001, 002, 003, 004, 005, 006-2026) with each finished PDF and its raw scans (Raw Scans folder), shown as uploaded by "Imported by system"; database schema v9 with automatic backup; never duplicates and never changes records entered by hand. Records get Open questions and Items not legible sections, plus a module-wide Open Questions page. Modules open as an index by year (newest first, then number highest first, like the printed books); search covers number, year, title, summary, open questions and the full text of attached PDFs, with matches shown in the year index. Zoning checkbox with badge, Zoning only filter and zoning-only PDF option. PDF export follows the printed book: cover, index by year, contents, open questions, items not legible. Running activity log of every view, download, print, PDF, search, add, edit, upload, replace, archive, open-question/zoning change and import, per record and per module (filter by user, action, dates); audit history is append-only. Exactly two admins: no third admin; an admin is removed or demoted only as a swap naming the replacement. 2 wrong challenge answers lock any account (admins too) until an admin unlocks it. Copyright notice on every screen and PDF. Home gets two more Coming soon tiles: Village Map (aerial map of Hamler with zoom and address search) and Hamler Webpage. |
| 2.0.0 | 12 | 10/16/2026 | Ordinances and Resolutions modules are live: list with sort, full-text search (PDF/.docx/.txt text plus admin summary/keywords) and year/status filters; record pages with attached files (view, download), history, Save as PDF and Print; multi-select combined PDF with cover and stamp. Admins add records with files (PDF, Word, JPG/PNG/TIFF, TXT; 50 MB per file; scans at least 200 DPI), edit, replace files (old versions kept) and archive/restore. Files stored under data\Ordinances and data\Resolutions (Raw Scans / Completed). Per-module audit history. |
| 1.9.0 | 11 | 10/16/2026 | Home screen is register-free: the Action Register menu section (Dashboard, My actions, Requests, New action) shows only inside the register; Home shows Contacts, Help and, for admins, Users & roles. Home gets Help and Contacts buttons; admins see a small locked-account badge there (full lockout alerts on the register dashboard). New Contacts module (name, title, phone, email, optional linked user) with tap-to-call and tap-to-email; admins add, edit and delete. |
| 1.8.0 | 10 | 10/16/2026 | New Village of Hamler home screen with Action Register, Permits, Ordinances, Resolutions and Council Minutes and Agenda tiles (the last four coming soon) and a Home link. "Originated By" renamed "Requested By". Approver sentence reads "<Name> approves or declines". Request form notes the signed hard copy is returned to the requestor. Import register removed. Two wrong challenge answers lock the account until an admin unlocks it with a new temporary password; 4 wrong passwords still give a 1-hour lock; alerts show the lock type. Phone-friendly layout for iPhone and Android (menu button, stacked tiles, action cards, large tap targets). |
| 1.7.0 | 9 | 10/16/2026 | Challenge answers are visible text fields the browser won't offer to save. One designated approver at most (setting a new one replaces the old); with none, admins approve; admins can always approve. Request text names the approver ("The <name> approves or declines"). Import makes the Mayor approver only if none is set. PDF button opens an options window (statuses, person or my actions, descriptions, update history), pre-filled from the dashboard. Help > Print Request Form (FORM-001) matching the app. Every PDF is stamped "Generated <date time> ET by <user>". |
| 1.6.0 | 8 | 10/16/2026 | Lockout reworked: warning popup after 3 failed attempts; 4th failure locks the account for 1 hour or until an admin unlocks it. Forgot Password: each user sets 3 different challenge questions at first sign-in (answers stored scrambled; changeable on Change password; admins can clear them); a reset asks one at random, kept fixed for that reset. 15-minute lock removed. Fresh installs also get Todd Harris (admin) and New User (employee) accounts with temporary password 43524; the Excel import matches Todd W Harris to Todd Harris. Everyone can view all actions: your own are highlighted, others greyed and view-only; new My actions only filter; PDF export includes all actions. |
| 1.5.0 | 7 | 10/16/2026 | Failed-login lockout with admin alerts and early unlock (replaced in 1.6.0). Temporary passwords (new users, or must-change ticked) can be any value; strong rule only for permanent passwords and your own change. Imported temporary passwords are the old PINs again. Users & roles keeps everything you typed and lists what to fix when it can't save; duplicate names are caught. |
| 1.4.0 | 6 | 10/16/2026 | Ticking Done requires a Done comment, added to the update log and setting Last Update; Excel export removed (PDF kept); stronger password rule; Audit History moved under Help (admins only). |
| 1.3.1 | 5 | 10/16/2026 | Admins can set any user's password, either temporary (must change at next sign-in) or permanent; minimum 8 characters everywhere; Change Password always available in the user menu. |
| 1.3.0 | 4 | 10/16/2026 | Help page; built-in Admin account on a fresh install; at least one active admin always required; safe updates (data folder kept, automatic backup and database upgrade); version shown on screen. |
| 1.2.0 | 3 | 10/16/2026 | Statuses are Open, Closed, Past Due (Past Due set automatically); Priority required; Status, Date Entered, Originated By and Subject editable by admins only. |
| 1.0.0 | 1 | 10/16/2026 | First version: sign-in, dashboard, action detail with update log, requests and approval, audit history, Excel/PDF export, Excel import. |