first step of the preferences management
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - prefs API:
7      . prefs_save (save to the server the new prefs)
8      . prefs_load (load prefs structure with a json)
9      . prefs_apply (from server, and after prefs_save if success)
10
11    - preferences (listen into preferences)
12      . update values
13      . database change
14
15    - preferences (with "modifiable S")
16      . Mod. S: new flag into database
17      . graph infrastructure
18      . new box to edit color
19
20   MAJOR |
21  -------+
22    - BUG: some connection to the named socket fails
23    - Not simultaneous more then one stream
24
25
26   MINOR |
27  -------+
28    WIP - try to be more antivirus-friendly
29    - multiple rows between games
30    - packetize and automatize php-ancillary and apache module
31    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
32
33
34   DONE |
35  ------+
36    DONE - temporarly server hung not reflected on user timeouts
37    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
38    DONE - page still opened after the server restart
39    DONE - log_legal address fix
40    DONE - manage too fast reload in xynt-streaming
41    DONE - add xhr as transport layer and manage different streams better
42    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
43    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
44    DONE - save/restore database
45    DONE - into the room local step remains -1
46    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
47    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
48           in the first tentative, the second works
49    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
50           problem was a call to a static parent method instead of the overrided child method,
51           substitute self:: with the dynamically get class::)
52    DONE - garbage management
53
54    DONE/FROZEN - problem with getpeer (HOSTADDR)
55
56    DONE - slow cards distribution
57    DONE - substr to mb_substr
58    DONE - parametrizations:
59           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
60           . parametrization of SITE_PREFIX(_LEN) define
61           . move the name of the named socket into the configuration file
62    DONE - manage and test cross forwarder between table and room
63    DONE - setcookie (for tables only and persist prefs)
64    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
65    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
66    DONE - unneeded garbage_time.expired access
67    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
68    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
69    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
70    DONE - configuration file management
71    DONE - app level keep-alive
72    DONE - index_wr other issues
73    DONE - from room to table
74    DONE - from table to room
75    DONE - chunked
76    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
77    DONE - partial write for normal page management
78    DONE - index_rd_ifra: last_clean issue
79    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
80    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
81    DONE - index_wr.php::chat
82    DONE - index_wr.php::exit
83    DONE - index_rd.php porting
84    DONE - generic var management from internet
85    DONE - index.php auth part
86    ABRT - index_wr.php::reload - reload is js-only function
87    ABRT - keepalive management - not interesting for our purposes
88
89  BRISK4 (mammuth)
90  ======
91
92  - STEP MANAGEMENT VERIFY
93  Slim Paragraph
94  DONE - move the garbage timeout on file
95  DONE - in index_rd load all data only when required
96  - briskin5 alignment
97    DONE . extern del garb_timeout
98    DONE . user_load parameters verify
99    DONE . Bin5::load_data and Bin5::save_data refactoring with
100           data split
101    . move many function into "Bin5 class"
102  - garbaging of .step files
103
104  DB: - initial usage
105      DONE - configurabilità file o db
106      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
107      DONE - travasatore file to pg
108        DONE - travaso punteggi
109        DONE - memorizzazione nuovi i punteggi nel db
110        DONE - gestione classifiche in SQL
111          DONE - produrle
112          DONE - mostrarle
113
114      STEP 1.1
115        DONE - points archiver
116
117      STEP 1.2
118        DONE - partial usability if database go down.
119
120      STEP 1.5
121      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
122
123      STEP 2
124      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
125      - modifica password   
126      - ripristino password 
127
128      STEP 3
129      - comunicazioni di aggiornamento (stato salvato sul server) 
130
131  DONE - var $G_base aggiunta per gestire include in include da path differenti
132
133  BRISK3 (trusty)
134  ======
135   DONE - donameter
136     DONE - G_donors
137     DONE (WOW!) - js object with infos
138     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
139            to prevent fast reload)
140     DONE - cookie per non assillare e visualizz.
141     DONE - graphical donameter
142     WIP content (in conf.)
143
144   DONE - numero di tavoli auth-only nel .brisk-install
145   - isolation
146     TEST - ricalcolo delle persone in piedi quando si cambia modalità
147     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
148     DONE - non leggere le chat di quelli non autenticati (in isolation)
149     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
150     DONE - treni non auth da nascondere 
151     DONE - verso gli altri ??: uguale a prima
152
153   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
154   coniglio
155   only auth strictly
156   placing limits to config file
157
158 Dunque, 
159
160 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
161
162 - cosa cambia tra le tre coppie di classifiche: 
163   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
164   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
165
166 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
167
168 Un esempio per chiarire:
169
170   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
171     -2, 1, 2, 1
172   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
173   
174   a parità di score tra utenti va più in alto chi ha giocato più partite.
175
176 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
177 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
178
179
180   
181
182
183
184
185  BUG
186  ---
187  
188   DONE - paste da demauroparavia
189   DONE - recupero partita per re-login con password
190   DONE - problema "|" nei nomi (manca enhance degli script lato server)
191   - problema col treno se mouse sopra mentre stringe (verif)
192   
193  MINOR
194  -----
195
196  NORMAL
197  ------
198
199   - win test
200   WIP - /listen 
201     DONE - skin della textarea
202     DONE - set cookie 
203     DONE - init client (read from cookie) - ALWAYS BY SERVER
204     DONE - init server
205     DONE - after cookie check auth-only when no-auth case
206     DONE - aggiungi info accanto a "Chat"
207   DONE - /mesgtoadm
208   DONE - img dei comandi
209
210   DONE - form per garantire utenti (accoda in un file nel formato corretto)
211   DONE -   process request
212   DONE -   show form
213   DONE -   close butt
214   DONE -   submit form
215   DONE -   process form js side 
216   DONE -   process form
217   DONE -   documentazione in help
218
219   DONE - user status
220
221   DONE - aggiornare help
222   DONE -   overflow management
223   DONE -   for status
224   -   for password
225
226   DONE - reload home
227   - notify for long pages
228
229   - buddy list
230   - silenziastolti vari (fino al buddy import)
231   - restrict challenge per IP
232   - restricted charset for login
233   - watchdog
234
235   - db (minimal)
236     - db admin page
237     - user db admin
238     - use db 
239     - admin db
240
241     - studiare un anti-dos
242   - login modify
243  DONE  - db (fake)
244  DONE  - display auth
245     - manage preferences 
246
247  minor
248  -----
249    - auth after login
250
251 ----- done ------
252
253  BUG
254  ---
255   DONE   righe troncate
256   DONE - questione "a monte" che:
257   DONE   - lascia fuori il bottone
258   DONE   - scrive &agrave e compagnia
259   DONE - refresh act_table when unauthorized
260   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
261
262  MINOR
263  -----
264   DONE - refactoring of the owner name (auth attr for owner name)
265   DONE   - room
266   DONE     - at chat input line 
267   DONE     - in the chat output line
268   DONE     - deauth management
269   DONE - table
270   DONE   - at chat input line
271   DONE   - in the chat output line
272   DONE   - for user area of other users
273   DONE   - deauth management
274   DONE - alart to one user
275
276
277  NORMAL
278  ------
279   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
280   DONE   - login: se auth      -  verifica solo gli expire per quel nick
281   DONE   -        se non auth  -  verifica gli expire per IP e sessione
282   DONE   - riscrivere messaggi
283
284   DONE - login 
285   DONE   - se pass:
286   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
287   DONE     - lo legge, ci hasha la password
288   DONE     - invia la pass al server hashata
289   DONE   - se non pass:
290   DONE     - check del login e return corretto
291   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
292   DONE     - rename ghost if logged
293   DONE     - onunload_cb e onbeforeunload_cb !!! 
294   DONE   - da change attrs a change class (input field)
295   DONE     - colore del bg per arrivare ad essere omogeneo
296   DONE     - cambiare path e file di config
297   DONE   - login with or without pass
298   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
299   DONE     - segnalare tavoli solo per auth
300   DONE     - rename restriction at auth table
301   DONE     - change nick (strcasecmp)
302   DONE   - refact js tables to handle flags
303   DONE - room javascript refactoring
304
305   DONE - work background
306   DONE - reserved tables
307
308
309  BRISK2 (spawn)
310  ======
311
312    
313    URGENT - tables spawn
314             DONE - link with photos
315             DONE - top banner in Etc file
316             DONE - spawn of a table
317             DONE - data to cookies (removed table_idx from xhr calls also)
318             DONE - set subst to shutdowner/shutdowned
319             DONE - return to index.php
320             DONE - game's token
321             DONE - recover of corrupted table data
322             DONE - closure of a table
323             DONE - flush of the table
324             DONE - security checks for right scope access
325             DONE - garbage collector management
326             DONE -    recursive garbage - howto ?
327             DONE - stat & subst in browser
328             DONE - laccwr setting and exit if all players are unactive for some time
329             DONE - the list of test case
330             DONE - shm dimension
331             DONE - remove unused parts
332             DONE - move images
333             DONE - optimizations
334             DONE - cambiare titolo al tavolo
335             DONE - shutdowning lock tables
336             DONE - topbanner
337             DONE - public announcements
338             DONE - 10 sec to exit from table
339
340             FAR - inheritances
341    
342    TRAIN  -  DONE - add again in reload   
343              DONE - wag_set refact
344              DONE - filtra char speciali per title
345              DONE - chatt_send refact 
346              DONE - elenco dei giocatori
347              DONE - documentazione online
348              DONE - timeout management     
349              LATER - border color a muzzo
350        
351    NORM   - testament
352    NORM   - public announcements
353    NORM   - 10 sec to exit from table
354    NORM   - moving label for tables click
355
356 ----------------- join -----------------
357    NORM   - map
358
359    NORM   - restart preload img
360    NORM   - tools dir with a main and some pages where check briscola tools.
361    NORM   - watchdog
362
363    NORM   - chat vecchie in reload (forse)
364
365  MIDDLE TODO
366  ===========
367
368    - user assistant (with button to enable disable)
369    - documentation
370
371
372  FAR TODO
373  ========
374    NORM - internationalization
375    NORM - img -> div + css
376    
377  WEB
378  ===
379
380    - link to stable/unstable
381
382 -------------------------------------------------------------------
383  DONE
384  ====
385
386    ABORTED - asta: highlight buttons (css hover) - change pointer when over
387    DONE - step proxy
388    DONE - special chars in js
389    DONE - ban temporaneo dai tavoli
390    DONE - flash player to play sound
391    DONEBUG - (aum. il timeout) - carte giocate che restano girate
392          Sembra non migliorare di molto la cosa, gestita la cache
393          correttamente, sono apposto.
394
395    DONE - one player reject a game, to less points (<= 2)
396    DONE - help page
397    DONE - test di download per la cache
398    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
399           Corretto il codice, occorre verificare se questo
400           ingenera qualche problema.
401    DONE - raddoppiato il numero di righe nella chat
402    DONE - corretto bug del /nick
403    DONE - carosello pubblicità altout
404    DONE - smammamorti
405    DONE - unload of the stream
406    DONE - standup centrati
407    DONE - current player - in info
408    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
409    DONE - welcome lines in the chats (room and table)
410    DONE - welcome lines in the chats (room and table)
411    DONE - nomi in primo piano se vai sul quadrato   
412    DONE - to pass explicit config file to INSTALL.sh
413    DONE - flag to create a config file
414    ABRT - bottoni => immagini
415    DONE - aggiungere bottone al login
416    DONE - nomi in primo piano se vai sul quadrato   
417    DONE - installer to set cookie path
418    DONE - change name
419    DONE - automatic and manual logout
420    DONE - cache problems solved via .htaccess
421    DONE - all players out of the auction
422    DONE - time to send cards
423    DONE - hide cards before sends at a new game
424    DONE - well recognization of the browser and O.S.
425    DONE - login consistency !!!!
426    DONE - functionalization of garbage
427    DONE - call garbage function into login
428    DONE - game
429    DONE - manage the reload from scratch of the table page
430    DONE - table reset
431    DONE - sendcard => card_send(idx, ....)
432    DONE - show table for game
433    DONE - points calculation
434    DONE - make-up of the chooser
435    DONE - where place the briscola on the table
436    DONE - users info
437    DONE - show current auction position
438    DONE - table with internal management of the transition between pages.
439    DONE - server side page abort management  
440    DONE - cookie problem with Ajax
441    DONE - spostare il tasto "esco"
442    DONE - to pass explicit config file to INSTALL.sh 
443    DONE - 8 tables
444    DONE - safety out management
445    DONE - info enhancement and related button (how win the last game and
446           with how much points ?)
447
448  WEB
449    DONE - homepage
450    DONE - screenshots
451
452 DOC
453    CHAPTERS
454       HTTP Streaming
455       Local serializer
456       Database on shmem
457       Page abort (reload on http streaming case)
458       Chat
459       Cookies management
460       CSS tricks
461
462 CHECK ON NEW SERVERS
463 .htaccess AllowOverwrite mode for Cache-Control directive
464
465
466
467
468 */
469